@ngx-formly/material 6.0.4 → 6.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/esm2020/checkbox/checkbox.module.mjs +4 -4
- package/esm2020/checkbox/checkbox.type.mjs +3 -3
- package/esm2020/datepicker/datepicker.module.mjs +4 -4
- package/esm2020/datepicker/datepicker.type.mjs +3 -3
- package/esm2020/form-field/field.type.mjs +24 -5
- package/esm2020/form-field/form-field.module.mjs +7 -6
- package/esm2020/form-field/form-field.wrapper.mjs +34 -16
- package/esm2020/input/input.module.mjs +4 -4
- package/esm2020/input/input.type.mjs +3 -3
- package/esm2020/lib/ui-material.module.mjs +4 -4
- package/esm2020/multicheckbox/multicheckbox.module.mjs +4 -4
- package/esm2020/multicheckbox/multicheckbox.type.mjs +6 -6
- package/esm2020/native-select/native-select.module.mjs +4 -4
- package/esm2020/native-select/native-select.type.mjs +6 -6
- package/esm2020/radio/radio.module.mjs +4 -4
- package/esm2020/radio/radio.type.mjs +6 -6
- package/esm2020/select/select.module.mjs +4 -4
- package/esm2020/select/select.type.mjs +20 -8
- package/esm2020/slider/public_api.mjs +7 -3
- package/esm2020/slider/slider-input.mjs +442 -0
- package/esm2020/slider/slider-interface.mjs +15 -0
- package/esm2020/slider/slider-mdc.type.mjs +94 -0
- package/esm2020/slider/slider.module.mjs +20 -8
- package/esm2020/slider/slider.type.mjs +17 -9
- package/esm2020/textarea/textarea.module.mjs +4 -4
- package/esm2020/textarea/textarea.type.mjs +3 -3
- package/esm2020/toggle/toggle.module.mjs +4 -4
- package/esm2020/toggle/toggle.type.mjs +3 -3
- package/fesm2015/ngx-formly-material-checkbox.mjs +7 -7
- package/fesm2015/ngx-formly-material-datepicker.mjs +7 -7
- package/fesm2015/ngx-formly-material-form-field.mjs +63 -25
- package/fesm2015/ngx-formly-material-form-field.mjs.map +1 -1
- package/fesm2015/ngx-formly-material-input.mjs +7 -7
- package/fesm2015/ngx-formly-material-multicheckbox.mjs +9 -9
- package/fesm2015/ngx-formly-material-multicheckbox.mjs.map +1 -1
- package/fesm2015/ngx-formly-material-native-select.mjs +9 -9
- package/fesm2015/ngx-formly-material-native-select.mjs.map +1 -1
- package/fesm2015/ngx-formly-material-radio.mjs +9 -9
- package/fesm2015/ngx-formly-material-radio.mjs.map +1 -1
- package/fesm2015/ngx-formly-material-select.mjs +23 -13
- package/fesm2015/ngx-formly-material-select.mjs.map +1 -1
- package/fesm2015/ngx-formly-material-slider.mjs +581 -20
- package/fesm2015/ngx-formly-material-slider.mjs.map +1 -1
- package/fesm2015/ngx-formly-material-textarea.mjs +7 -7
- package/fesm2015/ngx-formly-material-toggle.mjs +7 -7
- package/fesm2015/ngx-formly-material.mjs +4 -4
- package/fesm2020/ngx-formly-material-checkbox.mjs +7 -7
- package/fesm2020/ngx-formly-material-datepicker.mjs +7 -7
- package/fesm2020/ngx-formly-material-form-field.mjs +62 -24
- package/fesm2020/ngx-formly-material-form-field.mjs.map +1 -1
- package/fesm2020/ngx-formly-material-input.mjs +7 -7
- package/fesm2020/ngx-formly-material-multicheckbox.mjs +9 -9
- package/fesm2020/ngx-formly-material-multicheckbox.mjs.map +1 -1
- package/fesm2020/ngx-formly-material-native-select.mjs +9 -9
- package/fesm2020/ngx-formly-material-native-select.mjs.map +1 -1
- package/fesm2020/ngx-formly-material-radio.mjs +9 -9
- package/fesm2020/ngx-formly-material-radio.mjs.map +1 -1
- package/fesm2020/ngx-formly-material-select.mjs +23 -13
- package/fesm2020/ngx-formly-material-select.mjs.map +1 -1
- package/fesm2020/ngx-formly-material-slider.mjs +576 -20
- package/fesm2020/ngx-formly-material-slider.mjs.map +1 -1
- package/fesm2020/ngx-formly-material-textarea.mjs +7 -7
- package/fesm2020/ngx-formly-material-toggle.mjs +7 -7
- package/fesm2020/ngx-formly-material.mjs +4 -4
- package/form-field/field.type.d.ts +2 -0
- package/form-field/form-field.wrapper.d.ts +3 -0
- package/package.json +2 -2
- package/select/select.type.d.ts +1 -0
- package/slider/public_api.d.ts +4 -2
- package/slider/slider-input.d.ts +178 -0
- package/slider/slider-interface.d.ts +133 -0
- package/slider/slider-mdc.type.d.ts +10 -0
- package/slider/slider.module.d.ts +9 -6
- package/slider/slider.type.d.ts +5 -1
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
9
|
+
import { Directive, EventEmitter, forwardRef, Inject, Input, Output, } from '@angular/core';
|
|
10
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
11
|
+
import { MatSlider } from '@angular/material/slider';
|
|
12
|
+
import { Subject } from 'rxjs';
|
|
13
|
+
import { MAT_SLIDER_THUMB } from './slider-interface';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
/**
|
|
16
|
+
* Provider that allows the slider thumb to register as a ControlValueAccessor.
|
|
17
|
+
* @docs-private
|
|
18
|
+
*/
|
|
19
|
+
export const MAT_SLIDER_THUMB_VALUE_ACCESSOR = {
|
|
20
|
+
provide: NG_VALUE_ACCESSOR,
|
|
21
|
+
useExisting: forwardRef(() => MatSliderThumb),
|
|
22
|
+
multi: true,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Directive that adds slider-specific behaviors to an input element inside `<mat-slider>`.
|
|
26
|
+
* Up to two may be placed inside of a `<mat-slider>`.
|
|
27
|
+
*
|
|
28
|
+
* If one is used, the selector `matSliderThumb` must be used, and the outcome will be a normal
|
|
29
|
+
* slider. If two are used, the selectors `matSliderStartThumb` and `matSliderEndThumb` must be
|
|
30
|
+
* used, and the outcome will be a range slider with two slider thumbs.
|
|
31
|
+
*/
|
|
32
|
+
export class MatSliderThumb {
|
|
33
|
+
constructor(_ngZone, _elementRef, _cdr, _slider) {
|
|
34
|
+
this._ngZone = _ngZone;
|
|
35
|
+
this._elementRef = _elementRef;
|
|
36
|
+
this._cdr = _cdr;
|
|
37
|
+
this._slider = _slider;
|
|
38
|
+
/** Event emitted when the `value` is changed. */
|
|
39
|
+
this.valueChange = new EventEmitter();
|
|
40
|
+
/** Event emitted when the slider thumb starts being dragged. */
|
|
41
|
+
this.dragStart = new EventEmitter();
|
|
42
|
+
/** Event emitted when the slider thumb stops being dragged. */
|
|
43
|
+
this.dragEnd = new EventEmitter();
|
|
44
|
+
/**
|
|
45
|
+
* Indicates whether this thumb is the start or end thumb.
|
|
46
|
+
* @docs-private
|
|
47
|
+
*/
|
|
48
|
+
this.thumbPosition = 2 /* END */;
|
|
49
|
+
/** The radius of a native html slider's knob. */
|
|
50
|
+
this._knobRadius = 8;
|
|
51
|
+
/** Whether user's cursor is currently in a mouse down state on the input. */
|
|
52
|
+
this._isActive = false;
|
|
53
|
+
/** Whether the input is currently focused (either by tab or after clicking). */
|
|
54
|
+
this._isFocused = false;
|
|
55
|
+
/**
|
|
56
|
+
* Whether the initial value has been set.
|
|
57
|
+
* This exists because the initial value cannot be immediately set because the min and max
|
|
58
|
+
* must first be relayed from the parent MatSlider component, which can only happen later
|
|
59
|
+
* in the component lifecycle.
|
|
60
|
+
*/
|
|
61
|
+
this._hasSetInitialValue = false;
|
|
62
|
+
/** Emits when the component is destroyed. */
|
|
63
|
+
this._destroyed = new Subject();
|
|
64
|
+
/**
|
|
65
|
+
* Indicates whether UI updates should be skipped.
|
|
66
|
+
*
|
|
67
|
+
* This flag is used to avoid flickering
|
|
68
|
+
* when correcting values on pointer up/down.
|
|
69
|
+
*/
|
|
70
|
+
this._skipUIUpdate = false;
|
|
71
|
+
/** Callback called when the slider input value changes. */
|
|
72
|
+
this._onChangeFn = () => { };
|
|
73
|
+
/** Callback called when the slider input has been touched. */
|
|
74
|
+
this._onTouchedFn = () => { };
|
|
75
|
+
this._hostElement = _elementRef.nativeElement;
|
|
76
|
+
this._ngZone.runOutsideAngular(() => {
|
|
77
|
+
this._hostElement.addEventListener('pointerdown', this._onPointerDown.bind(this));
|
|
78
|
+
this._hostElement.addEventListener('pointermove', this._onPointerMove.bind(this));
|
|
79
|
+
this._hostElement.addEventListener('pointerup', this._onPointerUp.bind(this));
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
get value() {
|
|
83
|
+
return coerceNumberProperty(this._hostElement.value);
|
|
84
|
+
}
|
|
85
|
+
set value(v) {
|
|
86
|
+
const val = coerceNumberProperty(v).toString();
|
|
87
|
+
if (!this._hasSetInitialValue) {
|
|
88
|
+
this._initialValue = val;
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (this._isActive) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this._hostElement.value = val;
|
|
95
|
+
this._updateThumbUIByValue();
|
|
96
|
+
this._slider._onValueChange(this);
|
|
97
|
+
this._cdr.detectChanges();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The current translateX in px of the slider visual thumb.
|
|
101
|
+
* @docs-private
|
|
102
|
+
*/
|
|
103
|
+
get translateX() {
|
|
104
|
+
if (this._slider.min >= this._slider.max) {
|
|
105
|
+
this._translateX = 0;
|
|
106
|
+
return this._translateX;
|
|
107
|
+
}
|
|
108
|
+
if (this._translateX === undefined) {
|
|
109
|
+
this._translateX = this._calcTranslateXByValue();
|
|
110
|
+
}
|
|
111
|
+
return this._translateX;
|
|
112
|
+
}
|
|
113
|
+
set translateX(v) {
|
|
114
|
+
this._translateX = v;
|
|
115
|
+
}
|
|
116
|
+
/** @docs-private */
|
|
117
|
+
get min() {
|
|
118
|
+
return coerceNumberProperty(this._hostElement.min);
|
|
119
|
+
}
|
|
120
|
+
set min(v) {
|
|
121
|
+
this._hostElement.min = coerceNumberProperty(v).toString();
|
|
122
|
+
this._cdr.detectChanges();
|
|
123
|
+
}
|
|
124
|
+
/** @docs-private */
|
|
125
|
+
get max() {
|
|
126
|
+
return coerceNumberProperty(this._hostElement.max);
|
|
127
|
+
}
|
|
128
|
+
set max(v) {
|
|
129
|
+
this._hostElement.max = coerceNumberProperty(v).toString();
|
|
130
|
+
this._cdr.detectChanges();
|
|
131
|
+
}
|
|
132
|
+
get step() {
|
|
133
|
+
return coerceNumberProperty(this._hostElement.step);
|
|
134
|
+
}
|
|
135
|
+
set step(v) {
|
|
136
|
+
this._hostElement.step = coerceNumberProperty(v).toString();
|
|
137
|
+
this._cdr.detectChanges();
|
|
138
|
+
}
|
|
139
|
+
/** @docs-private */
|
|
140
|
+
get disabled() {
|
|
141
|
+
return coerceBooleanProperty(this._hostElement.disabled);
|
|
142
|
+
}
|
|
143
|
+
set disabled(v) {
|
|
144
|
+
this._hostElement.disabled = coerceBooleanProperty(v);
|
|
145
|
+
this._cdr.detectChanges();
|
|
146
|
+
if (this._slider.disabled !== this.disabled) {
|
|
147
|
+
this._slider.disabled = this.disabled;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/** The percentage of the slider that coincides with the value. */
|
|
151
|
+
get percentage() {
|
|
152
|
+
if (this._slider.min >= this._slider.max) {
|
|
153
|
+
return this._slider._isRtl ? 1 : 0;
|
|
154
|
+
}
|
|
155
|
+
return (this.value - this._slider.min) / (this._slider.max - this._slider.min);
|
|
156
|
+
}
|
|
157
|
+
/** @docs-private */
|
|
158
|
+
get fillPercentage() {
|
|
159
|
+
if (!this._slider._cachedWidth) {
|
|
160
|
+
return this._slider._isRtl ? 1 : 0;
|
|
161
|
+
}
|
|
162
|
+
if (this._translateX === 0) {
|
|
163
|
+
return 0;
|
|
164
|
+
}
|
|
165
|
+
return this.translateX / this._slider._cachedWidth;
|
|
166
|
+
}
|
|
167
|
+
/** Used to relay updates to _isFocused to the slider visual thumbs. */
|
|
168
|
+
_setIsFocused(v) {
|
|
169
|
+
this._isFocused = v;
|
|
170
|
+
}
|
|
171
|
+
ngOnDestroy() {
|
|
172
|
+
this._hostElement.removeEventListener('pointerdown', this._onPointerDown);
|
|
173
|
+
this._hostElement.removeEventListener('pointermove', this._onPointerMove);
|
|
174
|
+
this._hostElement.removeEventListener('pointerup', this._onPointerUp);
|
|
175
|
+
this._destroyed.next();
|
|
176
|
+
this._destroyed.complete();
|
|
177
|
+
this.dragStart.complete();
|
|
178
|
+
this.dragEnd.complete();
|
|
179
|
+
}
|
|
180
|
+
/** @docs-private */
|
|
181
|
+
initProps() {
|
|
182
|
+
this._updateWidthInactive();
|
|
183
|
+
// If this or the parent slider is disabled, just make everything disabled.
|
|
184
|
+
if (this.disabled !== this._slider.disabled) {
|
|
185
|
+
// The MatSlider setter for disabled will relay this and disable both inputs.
|
|
186
|
+
this._slider.disabled = true;
|
|
187
|
+
}
|
|
188
|
+
this.step = this._slider.step;
|
|
189
|
+
this.min = this._slider.min;
|
|
190
|
+
this.max = this._slider.max;
|
|
191
|
+
this._initValue();
|
|
192
|
+
}
|
|
193
|
+
/** @docs-private */
|
|
194
|
+
initUI() {
|
|
195
|
+
this._updateThumbUIByValue();
|
|
196
|
+
}
|
|
197
|
+
_initValue() {
|
|
198
|
+
this._hasSetInitialValue = true;
|
|
199
|
+
if (this._initialValue === undefined) {
|
|
200
|
+
this.value = this._getDefaultValue();
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
this._hostElement.value = this._initialValue;
|
|
204
|
+
this._updateThumbUIByValue();
|
|
205
|
+
this._slider._onValueChange(this);
|
|
206
|
+
this._cdr.detectChanges();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
_getDefaultValue() {
|
|
210
|
+
return this.min;
|
|
211
|
+
}
|
|
212
|
+
_onBlur() {
|
|
213
|
+
this._setIsFocused(false);
|
|
214
|
+
this._onTouchedFn();
|
|
215
|
+
}
|
|
216
|
+
_onFocus() {
|
|
217
|
+
this._setIsFocused(true);
|
|
218
|
+
}
|
|
219
|
+
_onChange() {
|
|
220
|
+
// only used to handle the edge case where user
|
|
221
|
+
// mousedown on the slider then uses arrow keys.
|
|
222
|
+
if (this._isActive) {
|
|
223
|
+
this._updateThumbUIByValue({ withAnimation: true });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
_onInput() {
|
|
227
|
+
this.valueChange.emit(this.value);
|
|
228
|
+
this._onChangeFn(this.value);
|
|
229
|
+
// handles arrowing and updating the value when
|
|
230
|
+
// a step is defined.
|
|
231
|
+
if (this._slider.step || !this._isActive) {
|
|
232
|
+
this._updateThumbUIByValue({ withAnimation: true });
|
|
233
|
+
}
|
|
234
|
+
this._slider._onValueChange(this);
|
|
235
|
+
}
|
|
236
|
+
_onNgControlValueChange() {
|
|
237
|
+
// only used to handle when the value change
|
|
238
|
+
// originates outside of the slider.
|
|
239
|
+
if (!this._isActive || !this._isFocused) {
|
|
240
|
+
this._slider._onValueChange(this);
|
|
241
|
+
this._updateThumbUIByValue();
|
|
242
|
+
}
|
|
243
|
+
this._slider.disabled = this._formControl.disabled;
|
|
244
|
+
}
|
|
245
|
+
_onPointerDown(event) {
|
|
246
|
+
if (this.disabled || event.button !== 0) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
this._isActive = true;
|
|
250
|
+
this._setIsFocused(true);
|
|
251
|
+
this._updateWidthActive();
|
|
252
|
+
this._slider._updateDimensions();
|
|
253
|
+
// Does nothing if a step is defined because we
|
|
254
|
+
// want the value to snap to the values on input.
|
|
255
|
+
if (!this._slider.step) {
|
|
256
|
+
this._updateThumbUIByPointerEvent(event, { withAnimation: true });
|
|
257
|
+
}
|
|
258
|
+
if (!this.disabled) {
|
|
259
|
+
this._handleValueCorrection(event);
|
|
260
|
+
this.dragStart.emit({ source: this, parent: this._slider, value: this.value });
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Corrects the value of the slider on pointer up/down.
|
|
265
|
+
*
|
|
266
|
+
* Called on pointer down and up because the value is set based
|
|
267
|
+
* on the inactive width instead of the active width.
|
|
268
|
+
*/
|
|
269
|
+
_handleValueCorrection(event) {
|
|
270
|
+
// Don't update the UI with the current value! The value on pointerdown
|
|
271
|
+
// and pointerup is calculated in the split second before the input(s)
|
|
272
|
+
// resize. See _updateWidthInactive() and _updateWidthActive() for more
|
|
273
|
+
// details.
|
|
274
|
+
this._skipUIUpdate = true;
|
|
275
|
+
// Note that this function gets triggered before the actual value of the
|
|
276
|
+
// slider is updated. This means if we were to set the value here, it
|
|
277
|
+
// would immediately be overwritten. Using setTimeout ensures the setting
|
|
278
|
+
// of the value happens after the value has been updated by the
|
|
279
|
+
// pointerdown event.
|
|
280
|
+
setTimeout(() => {
|
|
281
|
+
this._skipUIUpdate = false;
|
|
282
|
+
this._fixValue(event);
|
|
283
|
+
}, 0);
|
|
284
|
+
}
|
|
285
|
+
/** Corrects the value of the slider based on the pointer event's position. */
|
|
286
|
+
_fixValue(event) {
|
|
287
|
+
const xPos = event.clientX - this._slider._cachedLeft;
|
|
288
|
+
const width = this._slider._cachedWidth;
|
|
289
|
+
const step = this._slider.step === 0 ? 1 : this._slider.step;
|
|
290
|
+
const numSteps = Math.floor((this._slider.max - this._slider.min) / step);
|
|
291
|
+
const percentage = this._slider._isRtl ? 1 - xPos / width : xPos / width;
|
|
292
|
+
// To ensure the percentage is rounded to the necessary number of decimals.
|
|
293
|
+
const fixedPercentage = Math.round(percentage * numSteps) / numSteps;
|
|
294
|
+
const impreciseValue = fixedPercentage * (this._slider.max - this._slider.min) + this._slider.min;
|
|
295
|
+
const value = Math.round(impreciseValue / step) * step;
|
|
296
|
+
const prevValue = this.value;
|
|
297
|
+
if (value === prevValue) {
|
|
298
|
+
// Because we prevented UI updates, if it turns out that the race
|
|
299
|
+
// condition didn't happen and the value is already correct, we
|
|
300
|
+
// have to apply the ui updates now.
|
|
301
|
+
this._slider._onValueChange(this);
|
|
302
|
+
this._slider.step > 0
|
|
303
|
+
? this._updateThumbUIByValue()
|
|
304
|
+
: this._updateThumbUIByPointerEvent(event, { withAnimation: this._slider._hasAnimation });
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
this.value = value;
|
|
308
|
+
this.valueChange.emit(this.value);
|
|
309
|
+
this._onChangeFn(this.value);
|
|
310
|
+
this._slider._onValueChange(this);
|
|
311
|
+
this._slider.step > 0
|
|
312
|
+
? this._updateThumbUIByValue()
|
|
313
|
+
: this._updateThumbUIByPointerEvent(event, { withAnimation: this._slider._hasAnimation });
|
|
314
|
+
}
|
|
315
|
+
_onPointerMove(event) {
|
|
316
|
+
// Again, does nothing if a step is defined because
|
|
317
|
+
// we want the value to snap to the values on input.
|
|
318
|
+
if (!this._slider.step && this._isActive) {
|
|
319
|
+
this._updateThumbUIByPointerEvent(event);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
_onPointerUp() {
|
|
323
|
+
if (this._isActive) {
|
|
324
|
+
this._isActive = false;
|
|
325
|
+
this.dragEnd.emit({ source: this, parent: this._slider, value: this.value });
|
|
326
|
+
setTimeout(() => this._updateWidthInactive());
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
_clamp(v) {
|
|
330
|
+
return Math.max(Math.min(v, this._slider._cachedWidth), 0);
|
|
331
|
+
}
|
|
332
|
+
_calcTranslateXByValue() {
|
|
333
|
+
if (this._slider._isRtl) {
|
|
334
|
+
return (1 - this.percentage) * this._slider._cachedWidth;
|
|
335
|
+
}
|
|
336
|
+
return this.percentage * this._slider._cachedWidth;
|
|
337
|
+
}
|
|
338
|
+
_calcTranslateXByPointerEvent(event) {
|
|
339
|
+
return event.clientX - this._slider._cachedLeft;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Used to set the slider width to the correct
|
|
343
|
+
* dimensions while the user is dragging.
|
|
344
|
+
*/
|
|
345
|
+
_updateWidthActive() {
|
|
346
|
+
this._hostElement.style.padding = `0 ${this._slider._inputPadding}px`;
|
|
347
|
+
this._hostElement.style.width = `calc(100% + ${this._slider._inputPadding}px)`;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Sets the slider input to disproportionate dimensions to allow for touch
|
|
351
|
+
* events to be captured on touch devices.
|
|
352
|
+
*/
|
|
353
|
+
_updateWidthInactive() {
|
|
354
|
+
this._hostElement.style.padding = '0px';
|
|
355
|
+
this._hostElement.style.width = 'calc(100% + 48px)';
|
|
356
|
+
this._hostElement.style.left = '-24px';
|
|
357
|
+
}
|
|
358
|
+
_updateThumbUIByValue(options) {
|
|
359
|
+
this.translateX = this._clamp(this._calcTranslateXByValue());
|
|
360
|
+
this._updateThumbUI(options);
|
|
361
|
+
}
|
|
362
|
+
_updateThumbUIByPointerEvent(event, options) {
|
|
363
|
+
this.translateX = this._clamp(this._calcTranslateXByPointerEvent(event));
|
|
364
|
+
this._updateThumbUI(options);
|
|
365
|
+
}
|
|
366
|
+
_updateThumbUI(options) {
|
|
367
|
+
this._slider._setTransition(!!options?.withAnimation);
|
|
368
|
+
this._slider._onTranslateXChange(this);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Sets the input's value.
|
|
372
|
+
* @param value The new value of the input
|
|
373
|
+
* @docs-private
|
|
374
|
+
*/
|
|
375
|
+
writeValue(value) {
|
|
376
|
+
this.value = value;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Registers a callback to be invoked when the input's value changes from user input.
|
|
380
|
+
* @param fn The callback to register
|
|
381
|
+
* @docs-private
|
|
382
|
+
*/
|
|
383
|
+
registerOnChange(fn) {
|
|
384
|
+
this._onChangeFn = fn;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Registers a callback to be invoked when the input is blurred by the user.
|
|
388
|
+
* @param fn The callback to register
|
|
389
|
+
* @docs-private
|
|
390
|
+
*/
|
|
391
|
+
registerOnTouched(fn) {
|
|
392
|
+
this._onTouchedFn = fn;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Sets the disabled state of the slider.
|
|
396
|
+
* @param isDisabled The new disabled state
|
|
397
|
+
* @docs-private
|
|
398
|
+
*/
|
|
399
|
+
setDisabledState(isDisabled) {
|
|
400
|
+
this.disabled = isDisabled;
|
|
401
|
+
}
|
|
402
|
+
focus() {
|
|
403
|
+
this._hostElement.focus();
|
|
404
|
+
}
|
|
405
|
+
blur() {
|
|
406
|
+
this._hostElement.blur();
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
MatSliderThumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MatSliderThumb, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MatSlider }], target: i0.ɵɵFactoryTarget.Directive });
|
|
410
|
+
MatSliderThumb.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: MatSliderThumb, selector: "input[matSliderThumb]", inputs: { value: "value" }, outputs: { valueChange: "valueChange", dragStart: "dragStart", dragEnd: "dragEnd" }, host: { attributes: { "type": "range" }, listeners: { "change": "_onChange()", "input": "_onInput()", "blur": "_onBlur()", "focus": "_onFocus()" }, properties: { "attr.aria-valuetext": "_valuetext" }, classAttribute: "mdc-slider__input" }, providers: [MAT_SLIDER_THUMB_VALUE_ACCESSOR, { provide: MAT_SLIDER_THUMB, useExisting: MatSliderThumb }], exportAs: ["matSliderThumb"], ngImport: i0 });
|
|
411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MatSliderThumb, decorators: [{
|
|
412
|
+
type: Directive,
|
|
413
|
+
args: [{
|
|
414
|
+
// eslint-disable-next-line
|
|
415
|
+
selector: 'input[matSliderThumb]',
|
|
416
|
+
exportAs: 'matSliderThumb',
|
|
417
|
+
host: {
|
|
418
|
+
class: 'mdc-slider__input',
|
|
419
|
+
type: 'range',
|
|
420
|
+
'[attr.aria-valuetext]': '_valuetext',
|
|
421
|
+
'(change)': '_onChange()',
|
|
422
|
+
'(input)': '_onInput()',
|
|
423
|
+
// TODO(wagnermaciel): Consider using a global event listener instead.
|
|
424
|
+
// Reason: I have found a semi-consistent way to mouse up without triggering this event.
|
|
425
|
+
'(blur)': '_onBlur()',
|
|
426
|
+
'(focus)': '_onFocus()',
|
|
427
|
+
},
|
|
428
|
+
providers: [MAT_SLIDER_THUMB_VALUE_ACCESSOR, { provide: MAT_SLIDER_THUMB, useExisting: MatSliderThumb }],
|
|
429
|
+
}]
|
|
430
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
431
|
+
type: Inject,
|
|
432
|
+
args: [MatSlider]
|
|
433
|
+
}] }]; }, propDecorators: { value: [{
|
|
434
|
+
type: Input
|
|
435
|
+
}], valueChange: [{
|
|
436
|
+
type: Output
|
|
437
|
+
}], dragStart: [{
|
|
438
|
+
type: Output
|
|
439
|
+
}], dragEnd: [{
|
|
440
|
+
type: Output
|
|
441
|
+
}] } });
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3VpL21hdGVyaWFsL3NsaWRlci9zcmMvc2xpZGVyLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsb0JBQW9CLEVBQWUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQyxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBOEQsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFbEg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQVE7SUFDbEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUM3QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBa0JILE1BQU0sT0FBTyxjQUFjO0lBa0t6QixZQUNXLE9BQWUsRUFDZixXQUF5QyxFQUN6QyxJQUF1QixFQUNILE9BQW1CO1FBSHZDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBOEI7UUFDekMsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDSCxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBbkpsRCxpREFBaUQ7UUFDOUIsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVsRixnRUFBZ0U7UUFD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LE9BQU87d0JBQ2IsdUJBQXVCLEVBQUUsWUFBWTt3QkFDckMsVUFBVSxFQUFFLGFBQWE7d0JBQ3pCLFNBQVMsRUFBRSxZQUFZO3dCQUN2QixzRUFBc0U7d0JBQ3RFLHdGQUF3Rjt3QkFDeEYsUUFBUSxFQUFFLFdBQVc7d0JBQ3JCLFNBQVMsRUFBRSxZQUFZO3FCQUN4QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLGdCQUFnQixFQUFFLENBQUM7aUJBQ3pHOzswQkF1S0ksTUFBTTsyQkFBQyxTQUFTOzRDQXBLZixLQUFLO3NCQURSLEtBQUs7Z0JBbUJhLFdBQVc7c0JBQTdCLE1BQU07Z0JBR1ksU0FBUztzQkFBM0IsTUFBTTtnQkFHWSxPQUFPO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTbGlkZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgX01hdFRodW1iLCBNYXRTbGlkZXJEcmFnRXZlbnQsIF9NYXRTbGlkZXIsIF9NYXRTbGlkZXJUaHVtYiwgTUFUX1NMSURFUl9USFVNQiB9IGZyb20gJy4vc2xpZGVyLWludGVyZmFjZSc7XG5cbi8qKlxuICogUHJvdmlkZXIgdGhhdCBhbGxvd3MgdGhlIHNsaWRlciB0aHVtYiB0byByZWdpc3RlciBhcyBhIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgTUFUX1NMSURFUl9USFVNQl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF0U2xpZGVyVGh1bWIpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8qKlxuICogRGlyZWN0aXZlIHRoYXQgYWRkcyBzbGlkZXItc3BlY2lmaWMgYmVoYXZpb3JzIHRvIGFuIGlucHV0IGVsZW1lbnQgaW5zaWRlIGA8bWF0LXNsaWRlcj5gLlxuICogVXAgdG8gdHdvIG1heSBiZSBwbGFjZWQgaW5zaWRlIG9mIGEgYDxtYXQtc2xpZGVyPmAuXG4gKlxuICogSWYgb25lIGlzIHVzZWQsIHRoZSBzZWxlY3RvciBgbWF0U2xpZGVyVGh1bWJgIG11c3QgYmUgdXNlZCwgYW5kIHRoZSBvdXRjb21lIHdpbGwgYmUgYSBub3JtYWxcbiAqIHNsaWRlci4gSWYgdHdvIGFyZSB1c2VkLCB0aGUgc2VsZWN0b3JzIGBtYXRTbGlkZXJTdGFydFRodW1iYCBhbmQgYG1hdFNsaWRlckVuZFRodW1iYCBtdXN0IGJlXG4gKiB1c2VkLCBhbmQgdGhlIG91dGNvbWUgd2lsbCBiZSBhIHJhbmdlIHNsaWRlciB3aXRoIHR3byBzbGlkZXIgdGh1bWJzLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiAnaW5wdXRbbWF0U2xpZGVyVGh1bWJdJyxcbiAgZXhwb3J0QXM6ICdtYXRTbGlkZXJUaHVtYicsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ21kYy1zbGlkZXJfX2lucHV0JyxcbiAgICB0eXBlOiAncmFuZ2UnLFxuICAgICdbYXR0ci5hcmlhLXZhbHVldGV4dF0nOiAnX3ZhbHVldGV4dCcsXG4gICAgJyhjaGFuZ2UpJzogJ19vbkNoYW5nZSgpJyxcbiAgICAnKGlucHV0KSc6ICdfb25JbnB1dCgpJyxcbiAgICAvLyBUT0RPKHdhZ25lcm1hY2llbCk6IENvbnNpZGVyIHVzaW5nIGEgZ2xvYmFsIGV2ZW50IGxpc3RlbmVyIGluc3RlYWQuXG4gICAgLy8gUmVhc29uOiBJIGhhdmUgZm91bmQgYSBzZW1pLWNvbnNpc3RlbnQgd2F5IHRvIG1vdXNlIHVwIHdpdGhvdXQgdHJpZ2dlcmluZyB0aGlzIGV2ZW50LlxuICAgICcoYmx1ciknOiAnX29uQmx1cigpJyxcbiAgICAnKGZvY3VzKSc6ICdfb25Gb2N1cygpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbTUFUX1NMSURFUl9USFVNQl9WQUxVRV9BQ0NFU1NPUiwgeyBwcm92aWRlOiBNQVRfU0xJREVSX1RIVU1CLCB1c2VFeGlzdGluZzogTWF0U2xpZGVyVGh1bWIgfV0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdFNsaWRlclRodW1iIGltcGxlbWVudHMgX01hdFNsaWRlclRodW1iLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNvZXJjZU51bWJlclByb3BlcnR5KHRoaXMuX2hvc3RFbGVtZW50LnZhbHVlKTtcbiAgfVxuICBzZXQgdmFsdWUodjogTnVtYmVySW5wdXQpIHtcbiAgICBjb25zdCB2YWwgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2KS50b1N0cmluZygpO1xuICAgIGlmICghdGhpcy5faGFzU2V0SW5pdGlhbFZhbHVlKSB7XG4gICAgICB0aGlzLl9pbml0aWFsVmFsdWUgPSB2YWw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9ob3N0RWxlbWVudC52YWx1ZSA9IHZhbDtcbiAgICB0aGlzLl91cGRhdGVUaHVtYlVJQnlWYWx1ZSgpO1xuICAgIHRoaXMuX3NsaWRlci5fb25WYWx1ZUNoYW5nZSh0aGlzKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGB2YWx1ZWAgaXMgY2hhbmdlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNsaWRlciB0aHVtYiBzdGFydHMgYmVpbmcgZHJhZ2dlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRyYWdTdGFydDogRXZlbnRFbWl0dGVyPE1hdFNsaWRlckRyYWdFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1hdFNsaWRlckRyYWdFdmVudD4oKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzbGlkZXIgdGh1bWIgc3RvcHMgYmVpbmcgZHJhZ2dlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRyYWdFbmQ6IEV2ZW50RW1pdHRlcjxNYXRTbGlkZXJEcmFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNYXRTbGlkZXJEcmFnRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHRyYW5zbGF0ZVggaW4gcHggb2YgdGhlIHNsaWRlciB2aXN1YWwgdGh1bWIuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIGdldCB0cmFuc2xhdGVYKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3NsaWRlci5taW4gPj0gdGhpcy5fc2xpZGVyLm1heCkge1xuICAgICAgdGhpcy5fdHJhbnNsYXRlWCA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlWDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3RyYW5zbGF0ZVggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fdHJhbnNsYXRlWCA9IHRoaXMuX2NhbGNUcmFuc2xhdGVYQnlWYWx1ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlWDtcbiAgfVxuICBzZXQgdHJhbnNsYXRlWCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl90cmFuc2xhdGVYID0gdjtcbiAgfVxuICBwcml2YXRlIF90cmFuc2xhdGVYOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgdGh1bWIgaXMgdGhlIHN0YXJ0IG9yIGVuZCB0aHVtYi5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgdGh1bWJQb3NpdGlvbjogX01hdFRodW1iID0gX01hdFRodW1iLkVORDtcblxuICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNvZXJjZU51bWJlclByb3BlcnR5KHRoaXMuX2hvc3RFbGVtZW50Lm1pbik7XG4gIH1cbiAgc2V0IG1pbih2OiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX2hvc3RFbGVtZW50Lm1pbiA9IGNvZXJjZU51bWJlclByb3BlcnR5KHYpLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKiBAZG9jcy1wcml2YXRlICovXG4gIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY29lcmNlTnVtYmVyUHJvcGVydHkodGhpcy5faG9zdEVsZW1lbnQubWF4KTtcbiAgfVxuICBzZXQgbWF4KHY6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5faG9zdEVsZW1lbnQubWF4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodikudG9TdHJpbmcoKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY29lcmNlTnVtYmVyUHJvcGVydHkodGhpcy5faG9zdEVsZW1lbnQuc3RlcCk7XG4gIH1cbiAgc2V0IHN0ZXAodjogTnVtYmVySW5wdXQpIHtcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5zdGVwID0gY29lcmNlTnVtYmVyUHJvcGVydHkodikudG9TdHJpbmcoKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2VyY2VCb29sZWFuUHJvcGVydHkodGhpcy5faG9zdEVsZW1lbnQuZGlzYWJsZWQpO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2OiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKHRoaXMuX3NsaWRlci5kaXNhYmxlZCAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fc2xpZGVyLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHNsaWRlciB0aGF0IGNvaW5jaWRlcyB3aXRoIHRoZSB2YWx1ZS4gKi9cbiAgZ2V0IHBlcmNlbnRhZ2UoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc2xpZGVyLm1pbiA+PSB0aGlzLl9zbGlkZXIubWF4KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2xpZGVyLl9pc1J0bCA/IDEgOiAwO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMudmFsdWUgLSB0aGlzLl9zbGlkZXIubWluKSAvICh0aGlzLl9zbGlkZXIubWF4IC0gdGhpcy5fc2xpZGVyLm1pbik7XG4gIH1cblxuICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICBnZXQgZmlsbFBlcmNlbnRhZ2UoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuX3NsaWRlci5fY2FjaGVkV2lkdGgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zbGlkZXIuX2lzUnRsID8gMSA6IDA7XG4gICAgfVxuICAgIGlmICh0aGlzLl90cmFuc2xhdGVYID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlWCAvIHRoaXMuX3NsaWRlci5fY2FjaGVkV2lkdGg7XG4gIH1cblxuICAvKiogVGhlIGhvc3QgbmF0aXZlIEhUTUwgaW5wdXQgZWxlbWVudC4gKi9cbiAgX2hvc3RFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIC8qKiBUaGUgYXJpYS12YWx1ZXRleHQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCdzIHZhbHVlLiAqL1xuICBfdmFsdWV0ZXh0OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSByYWRpdXMgb2YgYSBuYXRpdmUgaHRtbCBzbGlkZXIncyBrbm9iLiAqL1xuICBfa25vYlJhZGl1czogbnVtYmVyID0gODtcblxuICAvKiogV2hldGhlciB1c2VyJ3MgY3Vyc29yIGlzIGN1cnJlbnRseSBpbiBhIG1vdXNlIGRvd24gc3RhdGUgb24gdGhlIGlucHV0LiAqL1xuICBfaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgY3VycmVudGx5IGZvY3VzZWQgKGVpdGhlciBieSB0YWIgb3IgYWZ0ZXIgY2xpY2tpbmcpLiAqL1xuICBfaXNGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFVzZWQgdG8gcmVsYXkgdXBkYXRlcyB0byBfaXNGb2N1c2VkIHRvIHRoZSBzbGlkZXIgdmlzdWFsIHRodW1icy4gKi9cbiAgcHJpdmF0ZSBfc2V0SXNGb2N1c2VkKHY6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9pc0ZvY3VzZWQgPSB2O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGluaXRpYWwgdmFsdWUgaGFzIGJlZW4gc2V0LlxuICAgKiBUaGlzIGV4aXN0cyBiZWNhdXNlIHRoZSBpbml0aWFsIHZhbHVlIGNhbm5vdCBiZSBpbW1lZGlhdGVseSBzZXQgYmVjYXVzZSB0aGUgbWluIGFuZCBtYXhcbiAgICogbXVzdCBmaXJzdCBiZSByZWxheWVkIGZyb20gdGhlIHBhcmVudCBNYXRTbGlkZXIgY29tcG9uZW50LCB3aGljaCBjYW4gb25seSBoYXBwZW4gbGF0ZXJcbiAgICogaW4gdGhlIGNvbXBvbmVudCBsaWZlY3ljbGUuXG4gICAqL1xuICBwcml2YXRlIF9oYXNTZXRJbml0aWFsVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVGhlIHN0b3JlZCBpbml0aWFsIHZhbHVlLiAqL1xuICBfaW5pdGlhbFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIERlZmluZWQgd2hlbiBhIHVzZXIgaXMgdXNpbmcgYSBmb3JtIGNvbnRyb2wgdG8gbWFuYWdlIHNsaWRlciB2YWx1ZSAmIHZhbGlkYXRpb24uICovXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sOiBGb3JtQ29udHJvbCB8IHVuZGVmaW5lZDtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBVSSB1cGRhdGVzIHNob3VsZCBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBUaGlzIGZsYWcgaXMgdXNlZCB0byBhdm9pZCBmbGlja2VyaW5nXG4gICAqIHdoZW4gY29ycmVjdGluZyB2YWx1ZXMgb24gcG9pbnRlciB1cC9kb3duLlxuICAgKi9cbiAgX3NraXBVSVVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBDYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgc2xpZGVyIGlucHV0IHZhbHVlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX29uQ2hhbmdlRm46ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgLyoqIENhbGxiYWNrIGNhbGxlZCB3aGVuIHRoZSBzbGlkZXIgaW5wdXQgaGFzIGJlZW4gdG91Y2hlZC4gKi9cbiAgcHJpdmF0ZSBfb25Ub3VjaGVkRm46ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChNYXRTbGlkZXIpIHByb3RlY3RlZCBfc2xpZGVyOiBfTWF0U2xpZGVyLFxuICApIHtcbiAgICB0aGlzLl9ob3N0RWxlbWVudCA9IF9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX2hvc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgdGhpcy5fb25Qb2ludGVyRG93bi5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuX2hvc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgdGhpcy5fb25Qb2ludGVyTW92ZS5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuX2hvc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX29uUG9pbnRlclVwLmJpbmQodGhpcykpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5faG9zdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCB0aGlzLl9vblBvaW50ZXJEb3duKTtcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIHRoaXMuX29uUG9pbnRlck1vdmUpO1xuICAgIHRoaXMuX2hvc3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX29uUG9pbnRlclVwKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZHJhZ1N0YXJ0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5kcmFnRW5kLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICBpbml0UHJvcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlV2lkdGhJbmFjdGl2ZSgpO1xuXG4gICAgLy8gSWYgdGhpcyBvciB0aGUgcGFyZW50IHNsaWRlciBpcyBkaXNhYmxlZCwganVzdCBtYWtlIGV2ZXJ5dGhpbmcgZGlzYWJsZWQuXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgIT09IHRoaXMuX3NsaWRlci5kaXNhYmxlZCkge1xuICAgICAgLy8gVGhlIE1hdFNsaWRlciBzZXR0ZXIgZm9yIGRpc2FibGVkIHdpbGwgcmVsYXkgdGhpcyBhbmQgZGlzYWJsZSBib3RoIGlucHV0cy5cbiAgICAgIHRoaXMuX3NsaWRlci5kaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwID0gdGhpcy5fc2xpZGVyLnN0ZXA7XG4gICAgdGhpcy5taW4gPSB0aGlzLl9zbGlkZXIubWluO1xuICAgIHRoaXMubWF4ID0gdGhpcy5fc2xpZGVyLm1heDtcbiAgICB0aGlzLl9pbml0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKiBAZG9jcy1wcml2YXRlICovXG4gIGluaXRVSSgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVUaHVtYlVJQnlWYWx1ZSgpO1xuICB9XG5cbiAgX2luaXRWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oYXNTZXRJbml0aWFsVmFsdWUgPSB0cnVlO1xuICAgIGlmICh0aGlzLl9pbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX2dldERlZmF1bHRWYWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ob3N0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2luaXRpYWxWYWx1ZTtcbiAgICAgIHRoaXMuX3VwZGF0ZVRodW1iVUlCeVZhbHVlKCk7XG4gICAgICB0aGlzLl9zbGlkZXIuX29uVmFsdWVDaGFuZ2UodGhpcyk7XG4gICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIF9nZXREZWZhdWx0VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5taW47XG4gIH1cblxuICBfb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldElzRm9jdXNlZChmYWxzZSk7XG4gICAgdGhpcy5fb25Ub3VjaGVkRm4oKTtcbiAgfVxuXG4gIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldElzRm9jdXNlZCh0cnVlKTtcbiAgfVxuXG4gIF9vbkNoYW5nZSgpOiB2b2lkIHtcbiAgICAvLyBvbmx5IHVzZWQgdG8gaGFuZGxlIHRoZSBlZGdlIGNhc2Ugd2hlcmUgdXNlclxuICAgIC8vIG1vdXNlZG93biBvbiB0aGUgc2xpZGVyIHRoZW4gdXNlcyBhcnJvdyBrZXlzLlxuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5fdXBkYXRlVGh1bWJVSUJ5VmFsdWUoeyB3aXRoQW5pbWF0aW9uOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9vbklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLl9vbkNoYW5nZUZuKHRoaXMudmFsdWUpO1xuICAgIC8vIGhhbmRsZXMgYXJyb3dpbmcgYW5kIHVwZGF0aW5nIHRoZSB2YWx1ZSB3aGVuXG4gICAgLy8gYSBzdGVwIGlzIGRlZmluZWQuXG4gICAgaWYgKHRoaXMuX3NsaWRlci5zdGVwIHx8ICF0aGlzLl9pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5fdXBkYXRlVGh1bWJVSUJ5VmFsdWUoeyB3aXRoQW5pbWF0aW9uOiB0cnVlIH0pO1xuICAgIH1cbiAgICB0aGlzLl9zbGlkZXIuX29uVmFsdWVDaGFuZ2UodGhpcyk7XG4gIH1cblxuICBfb25OZ0NvbnRyb2xWYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAvLyBvbmx5IHVzZWQgdG8gaGFuZGxlIHdoZW4gdGhlIHZhbHVlIGNoYW5nZVxuICAgIC8vIG9yaWdpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgc2xpZGVyLlxuICAgIGlmICghdGhpcy5faXNBY3RpdmUgfHwgIXRoaXMuX2lzRm9jdXNlZCkge1xuICAgICAgdGhpcy5fc2xpZGVyLl9vblZhbHVlQ2hhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5fdXBkYXRlVGh1bWJVSUJ5VmFsdWUoKTtcbiAgICB9XG4gICAgdGhpcy5fc2xpZGVyLmRpc2FibGVkID0gdGhpcy5fZm9ybUNvbnRyb2whLmRpc2FibGVkO1xuICB9XG5cbiAgX29uUG9pbnRlckRvd24oZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzQWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgdGhpcy5fdXBkYXRlV2lkdGhBY3RpdmUoKTtcbiAgICB0aGlzLl9zbGlkZXIuX3VwZGF0ZURpbWVuc2lvbnMoKTtcblxuICAgIC8vIERvZXMgbm90aGluZyBpZiBhIHN0ZXAgaXMgZGVmaW5lZCBiZWNhdXNlIHdlXG4gICAgLy8gd2FudCB0aGUgdmFsdWUgdG8gc25hcCB0byB0aGUgdmFsdWVzIG9uIGlucHV0LlxuICAgIGlmICghdGhpcy5fc2xpZGVyLnN0ZXApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVRodW1iVUlCeVBvaW50ZXJFdmVudChldmVudCwgeyB3aXRoQW5pbWF0aW9uOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5faGFuZGxlVmFsdWVDb3JyZWN0aW9uKGV2ZW50KTtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0LmVtaXQoeyBzb3VyY2U6IHRoaXMsIHBhcmVudDogdGhpcy5fc2xpZGVyLCB2YWx1ZTogdGhpcy52YWx1ZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29ycmVjdHMgdGhlIHZhbHVlIG9mIHRoZSBzbGlkZXIgb24gcG9pbnRlciB1cC9kb3duLlxuICAgKlxuICAgKiBDYWxsZWQgb24gcG9pbnRlciBkb3duIGFuZCB1cCBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBzZXQgYmFzZWRcbiAgICogb24gdGhlIGluYWN0aXZlIHdpZHRoIGluc3RlYWQgb2YgdGhlIGFjdGl2ZSB3aWR0aC5cbiAgICovXG4gIHByaXZhdGUgX2hhbmRsZVZhbHVlQ29ycmVjdGlvbihldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgLy8gRG9uJ3QgdXBkYXRlIHRoZSBVSSB3aXRoIHRoZSBjdXJyZW50IHZhbHVlISBUaGUgdmFsdWUgb24gcG9pbnRlcmRvd25cbiAgICAvLyBhbmQgcG9pbnRlcnVwIGlzIGNhbGN1bGF0ZWQgaW4gdGhlIHNwbGl0IHNlY29uZCBiZWZvcmUgdGhlIGlucHV0KHMpXG4gICAgLy8gcmVzaXplLiBTZWUgX3VwZGF0ZVdpZHRoSW5hY3RpdmUoKSBhbmQgX3VwZGF0ZVdpZHRoQWN0aXZlKCkgZm9yIG1vcmVcbiAgICAvLyBkZXRhaWxzLlxuICAgIHRoaXMuX3NraXBVSVVwZGF0ZSA9IHRydWU7XG5cbiAgICAvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBnZXRzIHRyaWdnZXJlZCBiZWZvcmUgdGhlIGFjdHVhbCB2YWx1ZSBvZiB0aGVcbiAgICAvLyBzbGlkZXIgaXMgdXBkYXRlZC4gVGhpcyBtZWFucyBpZiB3ZSB3ZXJlIHRvIHNldCB0aGUgdmFsdWUgaGVyZSwgaXRcbiAgICAvLyB3b3VsZCBpbW1lZGlhdGVseSBiZSBvdmVyd3JpdHRlbi4gVXNpbmcgc2V0VGltZW91dCBlbnN1cmVzIHRoZSBzZXR0aW5nXG4gICAgLy8gb2YgdGhlIHZhbHVlIGhhcHBlbnMgYWZ0ZXIgdGhlIHZhbHVlIGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlXG4gICAgLy8gcG9pbnRlcmRvd24gZXZlbnQuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9za2lwVUlVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2ZpeFZhbHVlKGV2ZW50KTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKiBDb3JyZWN0cyB0aGUgdmFsdWUgb2YgdGhlIHNsaWRlciBiYXNlZCBvbiB0aGUgcG9pbnRlciBldmVudCdzIHBvc2l0aW9uLiAqL1xuICBfZml4VmFsdWUoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHhQb3MgPSBldmVudC5jbGllbnRYIC0gdGhpcy5fc2xpZGVyLl9jYWNoZWRMZWZ0O1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5fc2xpZGVyLl9jYWNoZWRXaWR0aDtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5fc2xpZGVyLnN0ZXAgPT09IDAgPyAxIDogdGhpcy5fc2xpZGVyLnN0ZXA7XG4gICAgY29uc3QgbnVtU3RlcHMgPSBNYXRoLmZsb29yKCh0aGlzLl9zbGlkZXIubWF4IC0gdGhpcy5fc2xpZGVyLm1pbikgLyBzdGVwKTtcbiAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5fc2xpZGVyLl9pc1J0bCA/IDEgLSB4UG9zIC8gd2lkdGggOiB4UG9zIC8gd2lkdGg7XG5cbiAgICAvLyBUbyBlbnN1cmUgdGhlIHBlcmNlbnRhZ2UgaXMgcm91bmRlZCB0byB0aGUgbmVjZXNzYXJ5IG51bWJlciBvZiBkZWNpbWFscy5cbiAgICBjb25zdCBmaXhlZFBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKHBlcmNlbnRhZ2UgKiBudW1TdGVwcykgLyBudW1TdGVwcztcblxuICAgIGNvbnN0IGltcHJlY2lzZVZhbHVlID0gZml4ZWRQZXJjZW50YWdlICogKHRoaXMuX3NsaWRlci5tYXggLSB0aGlzLl9zbGlkZXIubWluKSArIHRoaXMuX3NsaWRlci5taW47XG4gICAgY29uc3QgdmFsdWUgPSBNYXRoLnJvdW5kKGltcHJlY2lzZVZhbHVlIC8gc3RlcCkgKiBzdGVwO1xuICAgIGNvbnN0IHByZXZWYWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICBpZiAodmFsdWUgPT09IHByZXZWYWx1ZSkge1xuICAgICAgLy8gQmVjYXVzZSB3ZSBwcmV2ZW50ZWQgVUkgdXBkYXRlcywgaWYgaXQgdHVybnMgb3V0IHRoYXQgdGhlIHJhY2VcbiAgICAgIC8vIGNvbmRpdGlvbiBkaWRuJ3QgaGFwcGVuIGFuZCB0aGUgdmFsdWUgaXMgYWxyZWFkeSBjb3JyZWN0LCB3ZVxuICAgICAgLy8gaGF2ZSB0byBhcHBseSB0aGUgdWkgdXBkYXRlcyBub3cuXG4gICAgICB0aGlzLl9zbGlkZXIuX29uVmFsdWVDaGFuZ2UodGhpcyk7XG4gICAgICB0aGlzLl9zbGlkZXIuc3RlcCA+IDBcbiAgICAgICAgPyB0aGlzLl91cGRhdGVUaHVtYlVJQnlWYWx1ZSgpXG4gICAgICAgIDogdGhpcy5fdXBkYXRlVGh1bWJVSUJ5UG9pbnRlckV2ZW50KGV2ZW50LCB7IHdpdGhBbmltYXRpb246IHRoaXMuX3NsaWRlci5faGFzQW5pbWF0aW9uIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5fb25DaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgICB0aGlzLl9zbGlkZXIuX29uVmFsdWVDaGFuZ2UodGhpcyk7XG4gICAgdGhpcy5fc2xpZGVyLnN0ZXAgPiAwXG4gICAgICA/IHRoaXMuX3VwZGF0ZVRodW1iVUlCeVZhbHVlKClcbiAgICAgIDogdGhpcy5fdXBkYXRlVGh1bWJVSUJ5UG9pbnRlckV2ZW50KGV2ZW50LCB7IHdpdGhBbmltYXRpb246IHRoaXMuX3NsaWRlci5faGFzQW5pbWF0aW9uIH0pO1xuICB9XG5cbiAgX29uUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIC8vIEFnYWluLCBkb2VzIG5vdGhpbmcgaWYgYSBzdGVwIGlzIGRlZmluZWQgYmVjYXVzZVxuICAgIC8vIHdlIHdhbnQgdGhlIHZhbHVlIHRvIHNuYXAgdG8gdGhlIHZhbHVlcyBvbiBpbnB1dC5cbiAgICBpZiAoIXRoaXMuX3NsaWRlci5zdGVwICYmIHRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaHVtYlVJQnlQb2ludGVyRXZlbnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIF9vblBvaW50ZXJVcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNBY3RpdmUpIHtcbiAgICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7XG4gICAgICB0aGlzLmRyYWdFbmQuZW1pdCh7IHNvdXJjZTogdGhpcywgcGFyZW50OiB0aGlzLl9zbGlkZXIsIHZhbHVlOiB0aGlzLnZhbHVlIH0pO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl91cGRhdGVXaWR0aEluYWN0aXZlKCkpO1xuICAgIH1cbiAgfVxuXG4gIF9jbGFtcCh2OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heChNYXRoLm1pbih2LCB0aGlzLl9zbGlkZXIuX2NhY2hlZFdpZHRoKSwgMCk7XG4gIH1cblxuICBfY2FsY1RyYW5zbGF0ZVhCeVZhbHVlKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3NsaWRlci5faXNSdGwpIHtcbiAgICAgIHJldHVybiAoMSAtIHRoaXMucGVyY2VudGFnZSkgKiB0aGlzLl9zbGlkZXIuX2NhY2hlZFdpZHRoO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wZXJjZW50YWdlICogdGhpcy5fc2xpZGVyLl9jYWNoZWRXaWR0aDtcbiAgfVxuXG4gIF9jYWxjVHJhbnNsYXRlWEJ5UG9pbnRlckV2ZW50KGV2ZW50OiBQb2ludGVyRXZlbnQpOiBudW1iZXIge1xuICAgIHJldHVybiBldmVudC5jbGllbnRYIC0gdGhpcy5fc2xpZGVyLl9jYWNoZWRMZWZ0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2V0IHRoZSBzbGlkZXIgd2lkdGggdG8gdGhlIGNvcnJlY3RcbiAgICogZGltZW5zaW9ucyB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy5cbiAgICovXG4gIF91cGRhdGVXaWR0aEFjdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5zdHlsZS5wYWRkaW5nID0gYDAgJHt0aGlzLl9zbGlkZXIuX2lucHV0UGFkZGluZ31weGA7XG4gICAgdGhpcy5faG9zdEVsZW1lbnQuc3R5bGUud2lkdGggPSBgY2FsYygxMDAlICsgJHt0aGlzLl9zbGlkZXIuX2lucHV0UGFkZGluZ31weClgO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNsaWRlciBpbnB1dCB0byBkaXNwcm9wb3J0aW9uYXRlIGRpbWVuc2lvbnMgdG8gYWxsb3cgZm9yIHRvdWNoXG4gICAqIGV2ZW50cyB0byBiZSBjYXB0dXJlZCBvbiB0b3VjaCBkZXZpY2VzLlxuICAgKi9cbiAgX3VwZGF0ZVdpZHRoSW5hY3RpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5faG9zdEVsZW1lbnQuc3R5bGUucGFkZGluZyA9ICcwcHgnO1xuICAgIHRoaXMuX2hvc3RFbGVtZW50LnN0eWxlLndpZHRoID0gJ2NhbGMoMTAwJSArIDQ4cHgpJztcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5zdHlsZS5sZWZ0ID0gJy0yNHB4JztcbiAgfVxuXG4gIF91cGRhdGVUaHVtYlVJQnlWYWx1ZShvcHRpb25zPzogeyB3aXRoQW5pbWF0aW9uOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVggPSB0aGlzLl9jbGFtcCh0aGlzLl9jYWxjVHJhbnNsYXRlWEJ5VmFsdWUoKSk7XG4gICAgdGhpcy5fdXBkYXRlVGh1bWJVSShvcHRpb25zKTtcbiAgfVxuXG4gIF91cGRhdGVUaHVtYlVJQnlQb2ludGVyRXZlbnQoZXZlbnQ6IFBvaW50ZXJFdmVudCwgb3B0aW9ucz86IHsgd2l0aEFuaW1hdGlvbjogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2xhdGVYID0gdGhpcy5fY2xhbXAodGhpcy5fY2FsY1RyYW5zbGF0ZVhCeVBvaW50ZXJFdmVudChldmVudCkpO1xuICAgIHRoaXMuX3VwZGF0ZVRodW1iVUkob3B0aW9ucyk7XG4gIH1cblxuICBfdXBkYXRlVGh1bWJVSShvcHRpb25zPzogeyB3aXRoQW5pbWF0aW9uOiBib29sZWFuIH0pIHtcbiAgICB0aGlzLl9zbGlkZXIuX3NldFRyYW5zaXRpb24oISFvcHRpb25zPy53aXRoQW5pbWF0aW9uKTtcbiAgICB0aGlzLl9zbGlkZXIuX29uVHJhbnNsYXRlWENoYW5nZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbnB1dCdzIHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgaW5wdXRcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiB0aGUgaW5wdXQncyB2YWx1ZSBjaGFuZ2VzIGZyb20gdXNlciBpbnB1dC5cbiAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayB0byByZWdpc3RlclxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZUZuID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBpbnB1dCBpcyBibHVycmVkIGJ5IHRoZSB1c2VyLlxuICAgKiBAcGFyYW0gZm4gVGhlIGNhbGxiYWNrIHRvIHJlZ2lzdGVyXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBzbGlkZXIuXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIFRoZSBuZXcgZGlzYWJsZWQgc3RhdGVcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgYmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5ibHVyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
import { InjectionToken } from '@angular/core';
|
|
9
|
+
/**
|
|
10
|
+
* Injection token that can be used to query for a `MatSliderThumb`.
|
|
11
|
+
* Used primarily to avoid circular imports.
|
|
12
|
+
* @docs-private
|
|
13
|
+
*/
|
|
14
|
+
export const MAT_SLIDER_THUMB = new InjectionToken('_MatSliderThumb');
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91aS9tYXRlcmlhbC9zbGlkZXIvc3JjL3NsaWRlci1pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVkvQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQUssaUJBQWlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmlwcGxlR2xvYmFsT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG4vKipcbiAqIFRodW1iIHR5cGVzOiByYW5nZSBzbGlkZXIgaGFzIHR3byB0aHVtYnMgKFNUQVJULCBFTkQpIHdoZXJlYXMgc2luZ2xlIHBvaW50XG4gKiBzbGlkZXIgb25seSBoYXMgb25lIHRodW1iIChFTkQpLlxuICovXG5leHBvcnQgY29uc3QgZW51bSBfTWF0VGh1bWIge1xuICBTVEFSVCA9IDEsXG4gIEVORCA9IDIsXG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcXVlcnkgZm9yIGEgYE1hdFNsaWRlclRodW1iYC5cbiAqIFVzZWQgcHJpbWFyaWx5IHRvIGF2b2lkIGNpcmN1bGFyIGltcG9ydHMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBNQVRfU0xJREVSX1RIVU1CID0gbmV3IEluamVjdGlvblRva2VuPHt9PignX01hdFNsaWRlclRodW1iJyk7XG5cbi8qKiBSZXByZXNlbnRzIGEgZHJhZyBldmVudCBlbWl0dGVkIGJ5IHRoZSBNYXRTbGlkZXIgY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRTbGlkZXJEcmFnRXZlbnQge1xuICAvKiogVGhlIE1hdFNsaWRlclRodW1iIHRoYXQgd2FzIGludGVyYWN0ZWQgd2l0aC4gKi9cbiAgc291cmNlOiBfTWF0U2xpZGVyVGh1bWI7XG5cbiAgLyoqIFRoZSBNYXRTbGlkZXIgdGhhdCB3YXMgaW50ZXJhY3RlZCB3aXRoLiAqL1xuICBwYXJlbnQ6IF9NYXRTbGlkZXI7XG5cbiAgLyoqIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzbGlkZXIuICovXG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgX01hdFNsaWRlciB7XG4gIC8qKiBHZXRzIHRoZSBzbGlkZXIgdGh1bWIgaW5wdXQgb2YgdGhlIGdpdmVuIHRodW1iIHBvc2l0aW9uLiAqL1xuICBfZ2V0SW5wdXQodGh1bWJQb3NpdGlvbjogX01hdFRodW1iKTogX01hdFNsaWRlclRodW1iIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBUaGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuICovXG4gIG1pbjogbnVtYmVyO1xuXG4gIC8qKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuICovXG4gIG1heDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgYW1vdW50IHRoYXQgc2xpZGVyIHZhbHVlcyBjYW4gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS4gKi9cbiAgc3RlcDogbnVtYmVyO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgaXMgYSByYW5nZSBzbGlkZXIuICovXG4gIF9pc1JhbmdlOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgaXMgcnRsLiAqL1xuICBfaXNSdGw6IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBzdG9yZWQgd2lkdGggb2YgdGhlIGhvc3QgZWxlbWVudCdzIGJvdW5kaW5nIGNsaWVudCByZWN0LiAqL1xuICBfY2FjaGVkV2lkdGg6IG51bWJlcjtcblxuICAvKiogVGhlIHN0b3JlZCB3aWR0aCBvZiB0aGUgaG9zdCBlbGVtZW50J3MgYm91bmRpbmcgY2xpZW50IHJlY3QuICovXG4gIF9jYWNoZWRMZWZ0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwYWRkaW5nIG9mIHRoZSBuYXRpdmUgc2xpZGVyIGlucHV0LiBUaGlzIGlzIGFkZGVkIGluIG9yZGVyIHRvIG1ha2UgdGhlIHJlZ2lvbiB3aGVyZSB0aGVcbiAgICogdGh1bWIgcmlwcGxlIGV4dGVuZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBzbGlkZXIgdHJhY2sgY2xpY2thYmxlLlxuICAgKi9cbiAgX2lucHV0UGFkZGluZzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgb2Zmc2V0IHJlcHJlc2VudHMgbGVmdCBtb3N0IHRyYW5zbGF0ZVggb2YgdGhlIHNsaWRlciBrbm9iLiBJbnZlcnNlbHksXG4gICAqIChzbGlkZXIgd2lkdGggLSBvZmZzZXQpID0gdGhlIHJpZ2h0IG1vc3QgdHJhbnNsYXRlWCBvZiB0aGUgc2xpZGVyIGtub2IuXG4gICAqXG4gICAqIE5vdGU6XG4gICAqICAgICogVGhlIG5hdGl2ZSBzbGlkZXIga25vYiBkaWZmZXJzIGZyb20gdGhlIHZpc3VhbCBzbGlkZXIuIEl0J3Mga25vYiBjYW5ub3Qgc2xpZGUgcGFzdFxuICAgKiAgICAgIHRoZSBlbmQgb2YgdGhlIHRyYWNrIEFUIEFMTC5cbiAgICogICAgKiBUaGUgdmlzdWFsIHNsaWRlciBrbm9iIENBTiBzbGlkZSBwYXN0IHRoZSBlbmQgb2YgdGhlIHRyYWNrIHNsaWdodGx5LiBJdCdzIGtub2IgY2FuIHNsaWRlXG4gICAqICAgICAgcGFzdCB0aGUgZW5kIG9mIHRoZSB0cmFjayBzdWNoIHRoYXQgaXQncyBjZW50ZXIgbGluZXMgdXAgd2l0aCB0aGUgZW5kIG9mIHRoZSB0cmFjay5cbiAgICovXG4gIF9pbnB1dE9mZnNldDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgcmFkaXVzIG9mIHRoZSB2aXN1YWwgc2xpZGVyJ3MgcmlwcGxlLiAqL1xuICBfcmlwcGxlUmFkaXVzOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiBmb3IgYG1hdFJpcHBsZWAgaW5zdGFuY2VzLiAqL1xuICByZWFkb25seSBfZ2xvYmFsUmlwcGxlT3B0aW9ucz86IFJpcHBsZUdsb2JhbE9wdGlvbnM7XG5cbiAgLyoqIFdoZXRoZXIgYW5pbWF0aW9ucyBoYXZlIGJlZW4gZGlzYWJsZWQuICovXG4gIF9ub29wQW5pbWF0aW9uczogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHNsaWRlciBzaG91bGQgdXNlIGFuaW1hdGlvbnMuICovXG4gIF9oYXNBbmltYXRpb246IGJvb2xlYW47XG5cbiAgLyoqIFRyaWdnZXJzIFVJIHVwZGF0ZXMgdGhhdCBhcmUgbmVlZGVkIGFmdGVyIGEgc2xpZGVyIGlucHV0IHZhbHVlIGhhcyBjaGFuZ2VkLiAqL1xuICBfb25WYWx1ZUNoYW5nZTogKHNvdXJjZTogX01hdFNsaWRlclRodW1iKSA9PiB2b2lkO1xuXG4gIC8qKiBUcmlnZ2VycyBVSSB1cGRhdGVzIHRoYXQgYXJlIG5lZWRlZCBhZnRlciB0aGUgc2xpZGVyIHRodW1iIHBvc2l0aW9uIGhhcyBjaGFuZ2VkLiAqL1xuICBfb25UcmFuc2xhdGVYQ2hhbmdlOiAoc291cmNlOiBfTWF0U2xpZGVyVGh1bWIpID0+IHZvaWQ7XG5cbiAgLyoqIFVwZGF0ZXMgdGhlIHN0b3JlZCBzbGlkZXIgZGltZW5zaW9ucyB1c2luZyB0aGUgY3VycmVudCBib3VuZGluZyBjbGllbnQgcmVjdC4gKi9cbiAgX3VwZGF0ZURpbWVuc2lvbnM6ICgpID0+IHZvaWQ7XG5cbiAgLyoqIFVzZWQgdG8gc2V0IHRoZSB0cmFuc2l0aW9uIGR1cmF0aW9uIGZvciB0aHVtYiBhbmQgdHJhY2sgYW5pbWF0aW9ucy4gKi9cbiAgX3NldFRyYW5zaXRpb246ICh3aXRoQW5pbWF0aW9uOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIF9NYXRTbGlkZXJUaHVtYiB7XG4gIC8qKiBUaGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuICovXG4gIG1pbjogbnVtYmVyO1xuXG4gIC8qKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuICovXG4gIG1heDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgYW1vdW50IHRoYXQgc2xpZGVyIHZhbHVlcyBjYW4gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS4gKi9cbiAgc3RlcDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzIHNsaWRlciBpbnB1dC4gKi9cbiAgdmFsdWU6IG51bWJlcjtcblxuICAvKiogVGhlIGN1cnJlbnQgdHJhbnNsYXRlWCBpbiBweCBvZiB0aGUgc2xpZGVyIHZpc3VhbCB0aHVtYi4gKi9cbiAgdHJhbnNsYXRlWDogbnVtYmVyO1xuXG4gIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHRodW1iIGlzIHRoZSBzdGFydCBvciBlbmQgdGh1bWIuICovXG4gIHRodW1iUG9zaXRpb246IF9NYXRUaHVtYjtcblxuICAvKiogU2ltaWxhciB0byBwZXJjZW50YWdlIGJ1dCBjYWxjdWFsdGVkIHVzaW5nIHRyYW5zbGF0ZVggcmVsYXRpdmUgdG8gdGhlIHRvdGFsIHRyYWNrIHdpZHRoLiAqL1xuICBmaWxsUGVyY2VudGFnZTogbnVtYmVyO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgaG9zdCBuYXRpdmUgSFRNTCBpbnB1dCBlbGVtZW50LiAqL1xuICBfaG9zdEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGN1cnJlbnRseSBmb2N1c2VkIChlaXRoZXIgYnkgdGFiIG9yIGFmdGVyIGNsaWNraW5nKS4gKi9cbiAgX2lzRm9jdXNlZDogYm9vbGVhbjtcblxuICAvKiogVGhlIGFyaWEtdmFsdWV0ZXh0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5wdXQncyB2YWx1ZS4gKi9cbiAgX3ZhbHVldGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBVSSB1cGRhdGVzIHNob3VsZCBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBUaGlzIGZsYWcgaXMgdXNlZCB0byBhdm9pZCBmbGlja2VyaW5nXG4gICAqIHdoZW4gY29ycmVjdGluZyB2YWx1ZXMgb24gcG9pbnRlciB1cC9kb3duLlxuICAgKi9cbiAgX3NraXBVSVVwZGF0ZTogYm9vbGVhbjtcblxuICAvKiogSGFuZGxlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgcHJvcGVydGllcyBmb3IgdGhlIHNsaWRlciBpbnB1dC4gKi9cbiAgaW5pdFByb3BzOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBIYW5kbGVzIFVJIGluaXRpYWxpemF0aW9uIGNvbnRyb2xsZWQgYnkgdGhpcyBzbGlkZXIgaW5wdXQuICovXG4gIGluaXRVSTogKCkgPT4gdm9pZDtcblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgdmlzdWFsIHRodW1iJ3MgdHJhbnNsYXRlWCBiYXNlZCBvbiB0aGUgc2xpZGVyIGlucHV0J3MgY3VycmVudCB2YWx1ZS4gKi9cbiAgX2NhbGNUcmFuc2xhdGVYQnlWYWx1ZTogKCkgPT4gbnVtYmVyO1xuXG4gIC8qKiBVcGRhdGVzIHRoZSB2aXN1YWwgdGh1bWIgYmFzZWQgb24gdGhlIHNsaWRlciBpbnB1dCdzIGN1cnJlbnQgdmFsdWUuICovXG4gIF91cGRhdGVUaHVtYlVJQnlWYWx1ZTogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgc2xpZGVyIGlucHV0IHRvIGRpc3Byb3BvcnRpb25hdGUgZGltZW5zaW9ucyB0byBhbGxvdyBmb3IgdG91Y2hcbiAgICogZXZlbnRzIHRvIGJlIGNhcHR1cmVkIG9uIHRvdWNoIGRldmljZXMuXG4gICAqL1xuICBfdXBkYXRlV2lkdGhJbmFjdGl2ZTogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVXNlZCB0byBzZXQgdGhlIHNsaWRlciB3aWR0aCB0byB0aGUgY29ycmVjdFxuICAgKiBkaW1lbnNpb25zIHdoaWxlIHRoZSB1c2VyIGlzIGRyYWdnaW5nLlxuICAgKi9cbiAgX3VwZGF0ZVdpZHRoQWN0aXZlOiAoKSA9PiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, ViewChild } from '@angular/core';
|
|
2
|
+
import { MatSlider } from '@angular/material/slider';
|
|
3
|
+
import { MAT_SLIDER_THUMB } from './slider-interface';
|
|
4
|
+
import { FormlyFieldSlider } from './slider.type';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/slider";
|
|
7
|
+
import * as i2 from "@ngx-formly/core";
|
|
8
|
+
import * as i3 from "./slider-input";
|
|
9
|
+
import * as i4 from "@angular/forms";
|
|
10
|
+
export class FormlyFieldMDCSlider extends FormlyFieldSlider {
|
|
11
|
+
set mdcSlider(slider) {
|
|
12
|
+
Object.defineProperty(slider, '_input', {
|
|
13
|
+
set: () => { },
|
|
14
|
+
get: () => this.sliderThumb,
|
|
15
|
+
});
|
|
16
|
+
const visualThumb = {
|
|
17
|
+
_hostElement: {
|
|
18
|
+
classList: {
|
|
19
|
+
add: () => { },
|
|
20
|
+
remove: () => { },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
// workarround for "ERROR TypeError: visualThumb is undefined" when `discrete` is set to `true`
|
|
25
|
+
slider._thumbs = { first: visualThumb, last: visualThumb };
|
|
26
|
+
}
|
|
27
|
+
onContainerClick(event) {
|
|
28
|
+
this.sliderThumb?._hostElement.focus();
|
|
29
|
+
super.onContainerClick(event);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
FormlyFieldMDCSlider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormlyFieldMDCSlider, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
+
FormlyFieldMDCSlider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FormlyFieldMDCSlider, selector: "formly-field-mat-slider", viewQueries: [{ propertyName: "sliderThumb", first: true, predicate: MAT_SLIDER_THUMB, descendants: true, static: true }, { propertyName: "mdcSlider", first: true, predicate: MatSlider, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
34
|
+
<mat-slider
|
|
35
|
+
[id]="id"
|
|
36
|
+
[style.width]="'100%'"
|
|
37
|
+
[formlyAttributes]="field"
|
|
38
|
+
[tabIndex]="props.tabindex"
|
|
39
|
+
[color]="props.color"
|
|
40
|
+
[displayWith]="displayWith"
|
|
41
|
+
[invert]="props.invert"
|
|
42
|
+
[max]="props.max"
|
|
43
|
+
[min]="props.min"
|
|
44
|
+
[step]="props.step"
|
|
45
|
+
[discrete]="props.thumbLabel || props.discrete"
|
|
46
|
+
[showTickMarks]="props.showTickMarks"
|
|
47
|
+
[step]="props.step"
|
|
48
|
+
[tickInterval]="props.tickInterval"
|
|
49
|
+
[valueText]="props.valueText"
|
|
50
|
+
[vertical]="props.vertical"
|
|
51
|
+
(input)="props.input && props.input(field, $event)"
|
|
52
|
+
(change)="props.change && props.change(field, $event)"
|
|
53
|
+
>
|
|
54
|
+
<input matSliderThumb [formControl]="formControl" [formlyAttributes]="field" />
|
|
55
|
+
</mat-slider>
|
|
56
|
+
`, isInline: true, components: [{ type: i1.MatSlider, selector: "mat-slider", inputs: ["disabled", "color", "tabIndex", "invert", "max", "min", "step", "thumbLabel", "tickInterval", "value", "displayWith", "valueText", "vertical"], outputs: ["change", "input", "valueChange"], exportAs: ["matSlider"] }], directives: [{ type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i3.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormlyFieldMDCSlider, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{
|
|
60
|
+
selector: 'formly-field-mat-slider',
|
|
61
|
+
template: `
|
|
62
|
+
<mat-slider
|
|
63
|
+
[id]="id"
|
|
64
|
+
[style.width]="'100%'"
|
|
65
|
+
[formlyAttributes]="field"
|
|
66
|
+
[tabIndex]="props.tabindex"
|
|
67
|
+
[color]="props.color"
|
|
68
|
+
[displayWith]="displayWith"
|
|
69
|
+
[invert]="props.invert"
|
|
70
|
+
[max]="props.max"
|
|
71
|
+
[min]="props.min"
|
|
72
|
+
[step]="props.step"
|
|
73
|
+
[discrete]="props.thumbLabel || props.discrete"
|
|
74
|
+
[showTickMarks]="props.showTickMarks"
|
|
75
|
+
[step]="props.step"
|
|
76
|
+
[tickInterval]="props.tickInterval"
|
|
77
|
+
[valueText]="props.valueText"
|
|
78
|
+
[vertical]="props.vertical"
|
|
79
|
+
(input)="props.input && props.input(field, $event)"
|
|
80
|
+
(change)="props.change && props.change(field, $event)"
|
|
81
|
+
>
|
|
82
|
+
<input matSliderThumb [formControl]="formControl" [formlyAttributes]="field" />
|
|
83
|
+
</mat-slider>
|
|
84
|
+
`,
|
|
85
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
86
|
+
}]
|
|
87
|
+
}], propDecorators: { sliderThumb: [{
|
|
88
|
+
type: ViewChild,
|
|
89
|
+
args: [MAT_SLIDER_THUMB, { static: true }]
|
|
90
|
+
}], mdcSlider: [{
|
|
91
|
+
type: ViewChild,
|
|
92
|
+
args: [MatSlider, { static: true }]
|
|
93
|
+
}] } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLW1kYy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3VpL21hdGVyaWFsL3NsaWRlci9zcmMvc2xpZGVyLW1kYy50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQStCLE1BQU0sb0JBQW9CLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUE4QmxELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxpQkFBaUI7SUFFekQsSUFBNEMsU0FBUyxDQUFDLE1BQWtCO1FBQ3RFLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtZQUN0QyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztZQUNiLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVztTQUM1QixDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRztZQUNsQixZQUFZLEVBQUU7Z0JBQ1osU0FBUyxFQUFFO29CQUNULEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO29CQUNiLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO2lCQUNqQjthQUNGO1NBQ0YsQ0FBQztRQUVGLCtGQUErRjtRQUM5RixNQUFjLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUVRLGdCQUFnQixDQUFDLEtBQWlCO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDOztrSEF4QlUsb0JBQW9CO3NHQUFwQixvQkFBb0IsNEdBQ3BCLGdCQUFnQiwwRkFDaEIsU0FBUyxxRkE1QlY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUOzRGQUdVLG9CQUFvQjtrQkE1QmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OEJBRWdELFdBQVc7c0JBQXpELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNELFNBQVM7c0JBQXBELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2xpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcbmltcG9ydCB7IE1BVF9TTElERVJfVEhVTUIsIF9NYXRTbGlkZXIsIF9NYXRTbGlkZXJUaHVtYiB9IGZyb20gJy4vc2xpZGVyLWludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZFNsaWRlciB9IGZyb20gJy4vc2xpZGVyLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktZmllbGQtbWF0LXNsaWRlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1zbGlkZXJcbiAgICAgIFtpZF09XCJpZFwiXG4gICAgICBbc3R5bGUud2lkdGhdPVwiJzEwMCUnXCJcbiAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgIFt0YWJJbmRleF09XCJwcm9wcy50YWJpbmRleFwiXG4gICAgICBbY29sb3JdPVwicHJvcHMuY29sb3JcIlxuICAgICAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlXaXRoXCJcbiAgICAgIFtpbnZlcnRdPVwicHJvcHMuaW52ZXJ0XCJcbiAgICAgIFttYXhdPVwicHJvcHMubWF4XCJcbiAgICAgIFttaW5dPVwicHJvcHMubWluXCJcbiAgICAgIFtzdGVwXT1cInByb3BzLnN0ZXBcIlxuICAgICAgW2Rpc2NyZXRlXT1cInByb3BzLnRodW1iTGFiZWwgfHwgcHJvcHMuZGlzY3JldGVcIlxuICAgICAgW3Nob3dUaWNrTWFya3NdPVwicHJvcHMuc2hvd1RpY2tNYXJrc1wiXG4gICAgICBbc3RlcF09XCJwcm9wcy5zdGVwXCJcbiAgICAgIFt0aWNrSW50ZXJ2YWxdPVwicHJvcHMudGlja0ludGVydmFsXCJcbiAgICAgIFt2YWx1ZVRleHRdPVwicHJvcHMudmFsdWVUZXh0XCJcbiAgICAgIFt2ZXJ0aWNhbF09XCJwcm9wcy52ZXJ0aWNhbFwiXG4gICAgICAoaW5wdXQpPVwicHJvcHMuaW5wdXQgJiYgcHJvcHMuaW5wdXQoZmllbGQsICRldmVudClcIlxuICAgICAgKGNoYW5nZSk9XCJwcm9wcy5jaGFuZ2UgJiYgcHJvcHMuY2hhbmdlKGZpZWxkLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aW5wdXQgbWF0U2xpZGVyVGh1bWIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIiAvPlxuICAgIDwvbWF0LXNsaWRlcj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkTURDU2xpZGVyIGV4dGVuZHMgRm9ybWx5RmllbGRTbGlkZXIge1xuICBAVmlld0NoaWxkKE1BVF9TTElERVJfVEhVTUIsIHsgc3RhdGljOiB0cnVlIH0pIHNsaWRlclRodW1iOiBfTWF0U2xpZGVyVGh1bWI7XG4gIEBWaWV3Q2hpbGQoTWF0U2xpZGVyLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZXQgbWRjU2xpZGVyKHNsaWRlcjogX01hdFNsaWRlcikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzbGlkZXIsICdfaW5wdXQnLCB7XG4gICAgICBzZXQ6ICgpID0+IHt9LFxuICAgICAgZ2V0OiAoKSA9PiB0aGlzLnNsaWRlclRodW1iLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdmlzdWFsVGh1bWIgPSB7XG4gICAgICBfaG9zdEVsZW1lbnQ6IHtcbiAgICAgICAgY2xhc3NMaXN0OiB7XG4gICAgICAgICAgYWRkOiAoKSA9PiB7fSxcbiAgICAgICAgICByZW1vdmU6ICgpID0+IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gd29ya2Fycm91bmQgZm9yIFwiRVJST1IgVHlwZUVycm9yOiB2aXN1YWxUaHVtYiBpcyB1bmRlZmluZWRcIiB3aGVuIGBkaXNjcmV0ZWAgaXMgc2V0IHRvIGB0cnVlYFxuICAgIChzbGlkZXIgYXMgYW55KS5fdGh1bWJzID0geyBmaXJzdDogdmlzdWFsVGh1bWIsIGxhc3Q6IHZpc3VhbFRodW1iIH07XG4gIH1cblxuICBvdmVycmlkZSBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zbGlkZXJUaHVtYj8uX2hvc3RFbGVtZW50LmZvY3VzKCk7XG4gICAgc3VwZXIub25Db250YWluZXJDbGljayhldmVudCk7XG4gIH1cbn1cbiJdfQ==
|