@fluentui/react-slider 9.0.0-alpha.5 → 9.0.0-alpha.6
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/CHANGELOG.json +22 -1
- package/CHANGELOG.md +12 -2
- package/dist/react-slider.d.ts +1 -1
- package/lib/components/Slider/Slider.d.ts +1 -1
- package/lib/components/Slider/Slider.js.map +1 -1
- package/lib/components/Slider/index.d.ts +1 -1
- package/lib/components/Slider/index.js +1 -1
- package/lib/components/Slider/index.js.map +1 -1
- package/lib/components/Slider/useSliderState.d.ts +0 -1
- package/lib/components/Slider/useSliderState.js +15 -178
- package/lib/components/Slider/useSliderState.js.map +1 -1
- package/lib/components/Slider/useSliderStyles.js +1 -1
- package/lib/components/Slider/useSliderStyles.js.map +1 -1
- package/lib/utils/calculateSteps.d.ts +5 -0
- package/lib/utils/calculateSteps.js +27 -0
- package/lib/utils/calculateSteps.js.map +1 -0
- package/lib/utils/clamp.d.ts +8 -0
- package/lib/utils/clamp.js +11 -0
- package/lib/utils/clamp.js.map +1 -0
- package/lib/utils/getKeydownValue.d.ts +6 -0
- package/lib/utils/getKeydownValue.js +39 -0
- package/lib/utils/getKeydownValue.js.map +1 -0
- package/lib/utils/getMarkPercent.d.ts +7 -0
- package/lib/utils/getMarkPercent.js +23 -0
- package/lib/utils/getMarkPercent.js.map +1 -0
- package/lib/utils/getMarkValues.d.ts +4 -0
- package/lib/utils/getMarkValues.js +22 -0
- package/lib/utils/getMarkValues.js.map +1 -0
- package/lib/utils/getPercent.d.ts +8 -0
- package/lib/utils/getPercent.js +11 -0
- package/lib/utils/getPercent.js.map +1 -0
- package/lib/utils/getRTLSafeKey.d.ts +4 -0
- package/lib/utils/getRTLSafeKey.js +21 -0
- package/lib/utils/getRTLSafeKey.js.map +1 -0
- package/lib/utils/index.d.ts +9 -0
- package/lib/utils/index.js +10 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/on.d.ts +1 -0
- package/lib/utils/on.js +8 -0
- package/lib/utils/on.js.map +1 -0
- package/lib/utils/renderMarks.d.ts +7 -0
- package/lib/utils/renderMarks.js +25 -0
- package/lib/utils/renderMarks.js.map +1 -0
- package/lib-amd/components/Slider/Slider.d.ts +1 -1
- package/lib-amd/components/Slider/Slider.js.map +1 -1
- package/lib-amd/components/Slider/index.d.ts +1 -1
- package/lib-amd/components/Slider/index.js +1 -2
- package/lib-amd/components/Slider/index.js.map +1 -1
- package/lib-amd/components/Slider/useSliderState.d.ts +0 -1
- package/lib-amd/components/Slider/useSliderState.js +21 -159
- package/lib-amd/components/Slider/useSliderState.js.map +1 -1
- package/lib-amd/components/Slider/useSliderStyles.js +4 -4
- package/lib-amd/components/Slider/useSliderStyles.js.map +1 -1
- package/lib-amd/utils/calculateSteps.d.ts +5 -0
- package/lib-amd/utils/calculateSteps.js +30 -0
- package/lib-amd/utils/calculateSteps.js.map +1 -0
- package/lib-amd/utils/clamp.d.ts +8 -0
- package/lib-amd/utils/clamp.js +15 -0
- package/lib-amd/utils/clamp.js.map +1 -0
- package/lib-amd/utils/getKeydownValue.d.ts +6 -0
- package/lib-amd/utils/getKeydownValue.js +42 -0
- package/lib-amd/utils/getKeydownValue.js.map +1 -0
- package/lib-amd/utils/getMarkPercent.d.ts +7 -0
- package/lib-amd/utils/getMarkPercent.js +27 -0
- package/lib-amd/utils/getMarkPercent.js.map +1 -0
- package/lib-amd/utils/getMarkValues.d.ts +4 -0
- package/lib-amd/utils/getMarkValues.js +24 -0
- package/lib-amd/utils/getMarkValues.js.map +1 -0
- package/lib-amd/utils/getPercent.d.ts +8 -0
- package/lib-amd/utils/getPercent.js +17 -0
- package/lib-amd/utils/getPercent.js.map +1 -0
- package/lib-amd/utils/getRTLSafeKey.d.ts +4 -0
- package/lib-amd/utils/getRTLSafeKey.js +23 -0
- package/lib-amd/utils/getRTLSafeKey.js.map +1 -0
- package/lib-amd/utils/index.d.ts +9 -0
- package/lib-amd/utils/index.js +14 -0
- package/lib-amd/utils/index.js.map +1 -0
- package/lib-amd/utils/on.d.ts +1 -0
- package/lib-amd/utils/on.js +12 -0
- package/lib-amd/utils/on.js.map +1 -0
- package/lib-amd/utils/renderMarks.d.ts +7 -0
- package/lib-amd/utils/renderMarks.js +21 -0
- package/lib-amd/utils/renderMarks.js.map +1 -0
- package/lib-commonjs/components/Slider/Slider.d.ts +1 -1
- package/lib-commonjs/components/Slider/Slider.js.map +1 -1
- package/lib-commonjs/components/Slider/index.d.ts +1 -1
- package/lib-commonjs/components/Slider/index.js +1 -9
- package/lib-commonjs/components/Slider/index.js.map +1 -1
- package/lib-commonjs/components/Slider/useSliderState.d.ts +0 -1
- package/lib-commonjs/components/Slider/useSliderState.js +23 -187
- package/lib-commonjs/components/Slider/useSliderState.js.map +1 -1
- package/lib-commonjs/components/Slider/useSliderStyles.js +1 -1
- package/lib-commonjs/components/Slider/useSliderStyles.js.map +1 -1
- package/lib-commonjs/utils/calculateSteps.d.ts +5 -0
- package/lib-commonjs/utils/calculateSteps.js +37 -0
- package/lib-commonjs/utils/calculateSteps.js.map +1 -0
- package/lib-commonjs/utils/clamp.d.ts +8 -0
- package/lib-commonjs/utils/clamp.js +20 -0
- package/lib-commonjs/utils/clamp.js.map +1 -0
- package/lib-commonjs/utils/getKeydownValue.d.ts +6 -0
- package/lib-commonjs/utils/getKeydownValue.js +49 -0
- package/lib-commonjs/utils/getKeydownValue.js.map +1 -0
- package/lib-commonjs/utils/getMarkPercent.d.ts +7 -0
- package/lib-commonjs/utils/getMarkPercent.js +32 -0
- package/lib-commonjs/utils/getMarkPercent.js.map +1 -0
- package/lib-commonjs/utils/getMarkValues.d.ts +4 -0
- package/lib-commonjs/utils/getMarkValues.js +32 -0
- package/lib-commonjs/utils/getMarkValues.js.map +1 -0
- package/lib-commonjs/utils/getPercent.d.ts +8 -0
- package/lib-commonjs/utils/getPercent.js +20 -0
- package/lib-commonjs/utils/getPercent.js.map +1 -0
- package/lib-commonjs/utils/getRTLSafeKey.d.ts +4 -0
- package/lib-commonjs/utils/getRTLSafeKey.js +30 -0
- package/lib-commonjs/utils/getRTLSafeKey.js.map +1 -0
- package/lib-commonjs/utils/index.d.ts +9 -0
- package/lib-commonjs/utils/index.js +26 -0
- package/lib-commonjs/utils/index.js.map +1 -0
- package/lib-commonjs/utils/on.d.ts +1 -0
- package/lib-commonjs/utils/on.js +16 -0
- package/lib-commonjs/utils/on.js.map +1 -0
- package/lib-commonjs/utils/renderMarks.d.ts +7 -0
- package/lib-commonjs/utils/renderMarks.js +36 -0
- package/lib-commonjs/utils/renderMarks.js.map +1 -0
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/Slider/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["components/Slider/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,UAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,aAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './Slider';\nexport * from './Slider.types';\nexport * from './renderSlider';\nexport * from './useSlider';\nexport * from './useSliderState';\nexport * from './useSliderStyles';\n"],"sourceRoot":"../src/"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.useSliderState =
|
|
6
|
+
exports.useSliderState = void 0;
|
|
7
7
|
|
|
8
8
|
var tslib_1 = /*#__PURE__*/require("tslib");
|
|
9
9
|
|
|
@@ -13,67 +13,7 @@ var react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-conte
|
|
|
13
13
|
|
|
14
14
|
var react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
/**
|
|
18
|
-
* Validates that the `value` is a number and falls between the min and max.
|
|
19
|
-
*
|
|
20
|
-
* @param value - the value to be clamped
|
|
21
|
-
* @param min - the lowest valid value
|
|
22
|
-
* @param max - the highest valid value
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var clamp = function (value, min, max) {
|
|
27
|
-
return Math.max(min, Math.min(max, value || 0));
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Gets the current percent of specified value between a min and max
|
|
31
|
-
*
|
|
32
|
-
* @param value - the value to find the percent
|
|
33
|
-
* @param min - the lowest valid value
|
|
34
|
-
* @param max - the highest valid value
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
var getPercent = function (value, min, max) {
|
|
39
|
-
return max === min ? 0 : (value - min) / (max - min) * 100;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Finds and swaps a provided key for it's right to left format.
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
var getRTLSafeKey = function (key, dir) {
|
|
47
|
-
if (dir === 'rtl') {
|
|
48
|
-
switch (key) {
|
|
49
|
-
case 'ArrowLeft':
|
|
50
|
-
{
|
|
51
|
-
return 'ArrowRight';
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
case 'ArrowRight':
|
|
55
|
-
{
|
|
56
|
-
return 'ArrowLeft';
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return key;
|
|
62
|
-
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
var on = function (element, eventName, callback) {
|
|
66
|
-
element.addEventListener(eventName, callback);
|
|
67
|
-
return function () {
|
|
68
|
-
return element.removeEventListener(eventName, callback);
|
|
69
|
-
};
|
|
70
|
-
}; // The mark related classNames are needed since they are used in a JSX element that is dynamically generated.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
var markContainerClassName = 'ms-Slider-markItemContainer';
|
|
74
|
-
exports.markClassName = 'ms-Slider-mark';
|
|
75
|
-
var firstMarkClassName = 'ms-Slider-firstMark';
|
|
76
|
-
var lastMarkClassName = 'ms-Slider-lastMark';
|
|
16
|
+
var index_1 = /*#__PURE__*/require("../../utils/index");
|
|
77
17
|
|
|
78
18
|
var useSliderState = function (state) {
|
|
79
19
|
var _a, _b;
|
|
@@ -113,8 +53,8 @@ var useSliderState = function (state) {
|
|
|
113
53
|
setRenderedPosition = _o[1];
|
|
114
54
|
|
|
115
55
|
var _p = react_utilities_1.useControllableState({
|
|
116
|
-
state: value && clamp(value, min, max),
|
|
117
|
-
defaultState: clamp(defaultValue, min, max),
|
|
56
|
+
state: value && index_1.clamp(value, min, max),
|
|
57
|
+
defaultState: index_1.clamp(defaultValue, min, max),
|
|
118
58
|
initialState: 0
|
|
119
59
|
}),
|
|
120
60
|
currentValue = _p[0],
|
|
@@ -128,7 +68,7 @@ var useSliderState = function (state) {
|
|
|
128
68
|
*/
|
|
129
69
|
|
|
130
70
|
var updateValue = react_utilities_1.useEventCallback(function (incomingValue, ev) {
|
|
131
|
-
var clampedValue = clamp(incomingValue, min, max);
|
|
71
|
+
var clampedValue = index_1.clamp(incomingValue, min, max);
|
|
132
72
|
|
|
133
73
|
if (clampedValue !== min && clampedValue !== max) {
|
|
134
74
|
ev.stopPropagation();
|
|
@@ -148,45 +88,20 @@ var useSliderState = function (state) {
|
|
|
148
88
|
*/
|
|
149
89
|
|
|
150
90
|
var updatePosition = React.useCallback(function (incomingValue, ev) {
|
|
151
|
-
setRenderedPosition(clamp(incomingValue, min, max));
|
|
91
|
+
setRenderedPosition(index_1.clamp(incomingValue, min, max));
|
|
152
92
|
updateValue(incomingValue, ev);
|
|
153
93
|
}, [max, min, updateValue]);
|
|
154
|
-
/**
|
|
155
|
-
* Calculates the `step` position based off of a `Mouse` or `Touch` event.
|
|
156
|
-
*/
|
|
157
|
-
|
|
158
|
-
var calculateSteps = React.useCallback(function (ev) {
|
|
159
|
-
var _a;
|
|
160
|
-
|
|
161
|
-
var currentBounds = (_a = railRef === null || railRef === void 0 ? void 0 : railRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
162
|
-
var sliderSize = vertical ? currentBounds.height : currentBounds.width;
|
|
163
|
-
var position;
|
|
164
|
-
|
|
165
|
-
if (vertical) {
|
|
166
|
-
position = currentBounds.bottom;
|
|
167
|
-
} else if (dir === 'rtl') {
|
|
168
|
-
position = currentBounds.right;
|
|
169
|
-
} else {
|
|
170
|
-
position = currentBounds.left;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
var totalSteps = (max - min) / step;
|
|
174
|
-
var stepLength = sliderSize / totalSteps;
|
|
175
|
-
var thumbPosition = vertical ? ev.clientY : ev.clientX;
|
|
176
|
-
var distance = dir === 'rtl' || vertical ? position - thumbPosition : thumbPosition - position;
|
|
177
|
-
return distance / stepLength;
|
|
178
|
-
}, [dir, max, min, step, vertical]);
|
|
179
94
|
|
|
180
95
|
var onInputChange = function (ev) {
|
|
181
96
|
updatePosition(Number(ev.target.value), ev);
|
|
182
97
|
};
|
|
183
98
|
|
|
184
99
|
var onPointerMove = React.useCallback(function (ev) {
|
|
185
|
-
var position = min
|
|
100
|
+
var position = index_1.calculateSteps(ev, railRef, min, max, step, vertical, dir);
|
|
186
101
|
var currentStepPosition = Math.round(position / step) * step;
|
|
187
|
-
setRenderedPosition(
|
|
102
|
+
setRenderedPosition(position);
|
|
188
103
|
updateValue(currentStepPosition, ev);
|
|
189
|
-
}, [
|
|
104
|
+
}, [dir, max, min, step, updateValue, vertical]);
|
|
190
105
|
var onPointerUp = React.useCallback(function (ev) {
|
|
191
106
|
disposables.current.forEach(function (dispose) {
|
|
192
107
|
return dispose();
|
|
@@ -205,7 +120,7 @@ var useSliderState = function (state) {
|
|
|
205
120
|
(_a = target.setPointerCapture) === null || _a === void 0 ? void 0 : _a.call(target, pointerId);
|
|
206
121
|
hideStepAnimation();
|
|
207
122
|
onPointerDownCallback === null || onPointerDownCallback === void 0 ? void 0 : onPointerDownCallback(ev);
|
|
208
|
-
disposables.current.push(on(target, 'pointermove', onPointerMove), on(target, 'pointerup', onPointerUp), function () {
|
|
123
|
+
disposables.current.push(index_1.on(target, 'pointermove', onPointerMove), index_1.on(target, 'pointerup', onPointerUp), function () {
|
|
209
124
|
var _a;
|
|
210
125
|
|
|
211
126
|
(_a = target.releasePointerCapture) === null || _a === void 0 ? void 0 : _a.call(target, pointerId);
|
|
@@ -213,42 +128,12 @@ var useSliderState = function (state) {
|
|
|
213
128
|
onPointerMove(ev);
|
|
214
129
|
}, [hideStepAnimation, onPointerDownCallback, onPointerMove, onPointerUp]);
|
|
215
130
|
var onKeyDown = React.useCallback(function (ev) {
|
|
216
|
-
var normalizedKey = getRTLSafeKey(ev.key, dir);
|
|
217
131
|
hideStepAnimation();
|
|
218
132
|
onKeyDownCallback === null || onKeyDownCallback === void 0 ? void 0 : onKeyDownCallback(ev);
|
|
133
|
+
var incomingValue = index_1.getKeydownValue(ev, currentValue, min, max, dir, keyboardStep);
|
|
219
134
|
|
|
220
|
-
if (
|
|
221
|
-
|
|
222
|
-
updatePosition(currentValue - keyboardStep * 10, ev);
|
|
223
|
-
return;
|
|
224
|
-
} else if (normalizedKey === 'ArrowUp' || normalizedKey === 'ArrowRight') {
|
|
225
|
-
updatePosition(currentValue + keyboardStep * 10, ev);
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
} else if (normalizedKey === 'ArrowDown' || normalizedKey === 'ArrowLeft') {
|
|
229
|
-
updatePosition(currentValue - keyboardStep, ev);
|
|
230
|
-
return;
|
|
231
|
-
} else if (normalizedKey === 'ArrowUp' || normalizedKey === 'ArrowRight') {
|
|
232
|
-
updatePosition(currentValue + keyboardStep, ev);
|
|
233
|
-
return;
|
|
234
|
-
} else {
|
|
235
|
-
switch (normalizedKey) {
|
|
236
|
-
case 'PageDown':
|
|
237
|
-
updatePosition(currentValue - keyboardStep * 10, ev);
|
|
238
|
-
break;
|
|
239
|
-
|
|
240
|
-
case 'PageUp':
|
|
241
|
-
updatePosition(currentValue + keyboardStep * 10, ev);
|
|
242
|
-
break;
|
|
243
|
-
|
|
244
|
-
case 'Home':
|
|
245
|
-
updatePosition(min, ev);
|
|
246
|
-
break;
|
|
247
|
-
|
|
248
|
-
case 'End':
|
|
249
|
-
updatePosition(max, ev);
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
135
|
+
if (currentValue !== incomingValue) {
|
|
136
|
+
updatePosition(incomingValue, ev);
|
|
252
137
|
}
|
|
253
138
|
}, [currentValue, dir, hideStepAnimation, keyboardStep, max, min, onKeyDownCallback, updatePosition]);
|
|
254
139
|
|
|
@@ -272,45 +157,15 @@ var useSliderState = function (state) {
|
|
|
272
157
|
}); // TODO: Awaiting animation time from design spec.
|
|
273
158
|
|
|
274
159
|
var animationTime = '0.1s';
|
|
275
|
-
var valuePercent = getPercent(renderedPosition !== undefined ? renderedPosition : currentValue, min, max);
|
|
160
|
+
var valuePercent = index_1.getPercent(renderedPosition !== undefined ? renderedPosition : currentValue, min, max);
|
|
276
161
|
var originPercent = React.useMemo(function () {
|
|
277
|
-
return origin !== undefined ? getPercent(origin, min, max) : 0;
|
|
162
|
+
return origin !== undefined ? index_1.getPercent(origin, min, max) : 0;
|
|
278
163
|
}, [max, min, origin]);
|
|
279
164
|
var markValues = React.useMemo(function () {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (typeof marks === 'boolean' && marks === true) {
|
|
283
|
-
for (var i = 0; i < (max - min) / step + 1; i++) {
|
|
284
|
-
valueArray.push(getPercent(min + step * i, min, max));
|
|
285
|
-
}
|
|
286
|
-
} else if (Array.isArray(marks) && marks.length > 0) {
|
|
287
|
-
// 2. We receive an array with numbers: mark for every value in array.
|
|
288
|
-
return marks.map(function (marksItem) {
|
|
289
|
-
return getPercent(min + marksItem, min, max);
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
return valueArray;
|
|
165
|
+
return index_1.getMarkValue(marks, min, max, step);
|
|
294
166
|
}, [marks, max, min, step]);
|
|
295
|
-
/**
|
|
296
|
-
* Current percentage position for the marks.
|
|
297
|
-
*/
|
|
298
|
-
|
|
299
167
|
var markPercent = React.useMemo(function () {
|
|
300
|
-
|
|
301
|
-
var result = []; // For CSS grid to work the percents array must be remapped by the previous percent - the current percent
|
|
302
|
-
|
|
303
|
-
if (valueArray.length > 0) {
|
|
304
|
-
result.push(valueArray[0] + '% ');
|
|
305
|
-
var prevPercent = valueArray[0];
|
|
306
|
-
|
|
307
|
-
for (var i = 1; i < valueArray.length; i++) {
|
|
308
|
-
result.push(valueArray[i] - prevPercent + '% ');
|
|
309
|
-
prevPercent = valueArray[i];
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
return result;
|
|
168
|
+
return index_1.getMarkPercent(markValues);
|
|
314
169
|
}, [markValues]);
|
|
315
170
|
|
|
316
171
|
var thumbWrapperStyles = tslib_1.__assign({
|
|
@@ -321,29 +176,7 @@ var useSliderState = function (state) {
|
|
|
321
176
|
var trackStyles = tslib_1.__assign((_a = {}, _a[vertical ? 'top' : dir === 'rtl' ? 'right' : 'left'] = origin !== undefined ? Math.min(valuePercent, originPercent) + "%" : 0, _a[vertical ? 'height' : 'width'] = origin !== undefined ? Math.max(originPercent - valuePercent, valuePercent - originPercent) + "%" : valuePercent + "%", _a.borderRadius = getTrackBorderRadius(), // When a transition is applied with the origin, a visible animation plays when it goes below the min.
|
|
322
177
|
_a.transition = stepAnimation ? (vertical ? 'height' : 'width') + " ease-in-out " + animationTime + (origin !== undefined ? ', ' + vertical ? 'top' : dir === 'rtl' ? 'right' : 'left' + 'ease-in-out ' + animationTime : '') : 'none', _a), state.track.style);
|
|
323
178
|
|
|
324
|
-
var marksWrapperStyles = marks ? tslib_1.__assign((_b = {}, _b[vertical ? 'gridTemplateRows' : 'gridTemplateColumns'] = markPercent.join(''), _b), state.marksWrapper.style) : {};
|
|
325
|
-
/**
|
|
326
|
-
* Renders the marks
|
|
327
|
-
*/
|
|
328
|
-
|
|
329
|
-
var renderMarks = function () {
|
|
330
|
-
var marksPercent = markPercent;
|
|
331
|
-
var marksValue = markValues;
|
|
332
|
-
var marksChildren = [];
|
|
333
|
-
|
|
334
|
-
for (var i = 0; i < marksPercent.length; i++) {
|
|
335
|
-
marksChildren.push(React.createElement("div", {
|
|
336
|
-
className: markContainerClassName,
|
|
337
|
-
key: "markItemContainer-" + i
|
|
338
|
-
}, React.createElement("div", {
|
|
339
|
-
className: react_make_styles_1.mergeClasses(exports.markClassName, marksValue[i] === 0 && firstMarkClassName || marksValue[i] === 100 && lastMarkClassName || ''),
|
|
340
|
-
key: "mark-" + i
|
|
341
|
-
})));
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
return marksChildren;
|
|
345
|
-
}; // Root props
|
|
346
|
-
|
|
179
|
+
var marksWrapperStyles = marks ? tslib_1.__assign((_b = {}, _b[vertical ? 'gridTemplateRows' : 'gridTemplateColumns'] = markPercent.join(''), _b), state.marksWrapper.style) : {}; // Root props
|
|
347
180
|
|
|
348
181
|
if (!disabled) {
|
|
349
182
|
state.root.onPointerDown = onPointerDown;
|
|
@@ -353,8 +186,11 @@ var useSliderState = function (state) {
|
|
|
353
186
|
|
|
354
187
|
state.track.style = trackStyles; // Mark props
|
|
355
188
|
|
|
356
|
-
|
|
357
|
-
|
|
189
|
+
if (marks) {
|
|
190
|
+
state.marksWrapper.children = index_1.renderMarks(markValues);
|
|
191
|
+
state.marksWrapper.style = marksWrapperStyles;
|
|
192
|
+
} // Thumb Wrapper Props
|
|
193
|
+
|
|
358
194
|
|
|
359
195
|
state.thumbWrapper.style = thumbWrapperStyles; // Active Rail Props
|
|
360
196
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/Slider/useSliderState.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useFluent } from '@fluentui/react-shared-contexts';\nimport {\n useBoolean,\n useControllableState,\n useEventCallback,\n useUnmount,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { mergeClasses } from '@fluentui/react-make-styles';\nimport type { SliderState } from './Slider.types';\n\n/**\n * Validates that the `value` is a number and falls between the min and max.\n *\n * @param value - the value to be clamped\n * @param min - the lowest valid value\n * @param max - the highest valid value\n */\nconst clamp = (value: number, min: number, max: number): number => Math.max(min, Math.min(max, value || 0));\n\n/**\n * Gets the current percent of specified value between a min and max\n *\n * @param value - the value to find the percent\n * @param min - the lowest valid value\n * @param max - the highest valid value\n */\nconst getPercent = (value: number, min: number, max: number) => {\n return max === min ? 0 : ((value - min) / (max - min)) * 100;\n};\n\n/**\n * Finds and swaps a provided key for it's right to left format.\n */\nconst getRTLSafeKey = (key: string, dir: 'ltr' | 'rtl') => {\n if (dir === 'rtl') {\n switch (key) {\n case 'ArrowLeft': {\n return 'ArrowRight';\n }\n\n case 'ArrowRight': {\n return 'ArrowLeft';\n }\n }\n }\n\n return key;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst on = (element: Element, eventName: string, callback: (ev: any) => void) => {\n element.addEventListener(eventName, callback);\n return () => element.removeEventListener(eventName, callback);\n};\n\n// The mark related classNames are needed since they are used in a JSX element that is dynamically generated.\nconst markContainerClassName = 'ms-Slider-markItemContainer';\nexport const markClassName = 'ms-Slider-mark';\nconst firstMarkClassName = 'ms-Slider-firstMark';\nconst lastMarkClassName = 'ms-Slider-lastMark';\n\nexport const useSliderState = (state: SliderState) => {\n const {\n value,\n defaultValue = 0,\n min = 0,\n max = 100,\n step = 1,\n keyboardStep = state.step || 1,\n disabled = false,\n ariaValueText,\n onChange,\n marks,\n vertical = false,\n origin,\n } = state;\n const { onPointerDown: onPointerDownCallback, onKeyDown: onKeyDownCallback } = state.root;\n\n const { dir } = useFluent();\n\n const [stepAnimation, { setTrue: showStepAnimation, setFalse: hideStepAnimation }] = useBoolean(false);\n const [renderedPosition, setRenderedPosition] = React.useState<number | undefined>(value ? value : defaultValue);\n const [currentValue, setCurrentValue] = useControllableState({\n state: value && clamp(value, min, max),\n defaultState: clamp(defaultValue, min, max),\n initialState: 0,\n });\n\n const railRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const disposables = React.useRef<(() => void)[]>([]);\n\n /**\n * Updates the controlled `currentValue` to the new `incomingValue` and clamps it.\n */\n const updateValue = useEventCallback(\n (incomingValue: number, ev: React.PointerEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>): void => {\n const clampedValue = clamp(incomingValue, min, max);\n\n if (clampedValue !== min && clampedValue !== max) {\n ev.stopPropagation();\n if (ev.type === 'keydown') {\n ev.preventDefault();\n }\n }\n\n onChange?.(ev, { value: clampedValue });\n setCurrentValue(clampedValue);\n },\n );\n\n /**\n * Updates the controlled `currentValue` and `renderedPosition` of the Slider.\n */\n const updatePosition = React.useCallback(\n (incomingValue: number, ev) => {\n setRenderedPosition(clamp(incomingValue, min, max));\n updateValue(incomingValue, ev);\n },\n [max, min, updateValue],\n );\n\n /**\n * Calculates the `step` position based off of a `Mouse` or `Touch` event.\n */\n const calculateSteps = React.useCallback(\n (ev: React.PointerEvent<HTMLDivElement>): number => {\n const currentBounds = railRef?.current?.getBoundingClientRect();\n const sliderSize = vertical ? currentBounds!.height : currentBounds!.width;\n let position;\n\n if (vertical) {\n position = currentBounds!.bottom;\n } else if (dir === 'rtl') {\n position = currentBounds!.right;\n } else {\n position = currentBounds!.left;\n }\n\n const totalSteps = (max - min) / step;\n const stepLength = sliderSize / totalSteps;\n const thumbPosition = vertical ? ev.clientY : ev.clientX;\n const distance = dir === 'rtl' || vertical ? position - thumbPosition : thumbPosition - position;\n\n return distance / stepLength;\n },\n [dir, max, min, step, vertical],\n );\n\n const onInputChange = (ev: React.ChangeEvent<HTMLInputElement>) => {\n updatePosition(Number(ev.target.value), ev);\n };\n\n const onPointerMove = React.useCallback(\n (ev: React.PointerEvent<HTMLDivElement>): void => {\n const position = min + step * calculateSteps(ev);\n const currentStepPosition = Math.round(position / step) * step;\n\n setRenderedPosition(clamp(position, min, max));\n updateValue(currentStepPosition, ev);\n },\n [calculateSteps, max, min, step, updateValue],\n );\n\n const onPointerUp = React.useCallback(\n (ev: React.PointerEvent<HTMLDivElement>): void => {\n disposables.current.forEach(dispose => dispose());\n disposables.current = [];\n showStepAnimation();\n // When undefined, the position fallbacks to the currentValue state.\n setRenderedPosition(undefined);\n inputRef.current!.focus();\n },\n [showStepAnimation],\n );\n\n const onPointerDown = React.useCallback(\n (ev: React.PointerEvent<HTMLDivElement>): void => {\n const { pointerId } = ev;\n const target = ev.target as HTMLElement;\n\n target.setPointerCapture?.(pointerId);\n\n hideStepAnimation();\n onPointerDownCallback?.(ev);\n\n disposables.current.push(on(target, 'pointermove', onPointerMove), on(target, 'pointerup', onPointerUp), () => {\n target.releasePointerCapture?.(pointerId);\n });\n\n onPointerMove(ev);\n },\n [hideStepAnimation, onPointerDownCallback, onPointerMove, onPointerUp],\n );\n\n const onKeyDown = React.useCallback(\n (ev: React.KeyboardEvent<HTMLDivElement>): void => {\n const normalizedKey = getRTLSafeKey(ev.key, dir);\n hideStepAnimation();\n onKeyDownCallback?.(ev);\n\n if (ev.shiftKey) {\n if (normalizedKey === 'ArrowDown' || normalizedKey === 'ArrowLeft') {\n updatePosition(currentValue! - keyboardStep * 10, ev);\n return;\n } else if (normalizedKey === 'ArrowUp' || normalizedKey === 'ArrowRight') {\n updatePosition(currentValue! + keyboardStep * 10, ev);\n return;\n }\n } else if (normalizedKey === 'ArrowDown' || normalizedKey === 'ArrowLeft') {\n updatePosition(currentValue! - keyboardStep, ev);\n return;\n } else if (normalizedKey === 'ArrowUp' || normalizedKey === 'ArrowRight') {\n updatePosition(currentValue! + keyboardStep, ev);\n return;\n } else {\n switch (normalizedKey) {\n case 'PageDown':\n updatePosition(currentValue! - keyboardStep * 10, ev);\n break;\n case 'PageUp':\n updatePosition(currentValue! + keyboardStep * 10, ev);\n break;\n case 'Home':\n updatePosition(min, ev);\n break;\n case 'End':\n updatePosition(max, ev);\n break;\n }\n }\n },\n [currentValue, dir, hideStepAnimation, keyboardStep, max, min, onKeyDownCallback, updatePosition],\n );\n\n const getTrackBorderRadius = () => {\n if (origin !== undefined && origin !== (max || min)) {\n if (vertical) {\n return originPercent > valuePercent ? '99px 99px 0px 0px' : '0px 0px 99px 99px';\n } else {\n return (dir === 'rtl' ? valuePercent > originPercent : valuePercent < originPercent)\n ? '99px 0px 0px 99px'\n : '0px 99px 99px 0px';\n }\n }\n return '99px';\n };\n\n useUnmount(() => {\n disposables.current.forEach(dispose => dispose());\n disposables.current = [];\n });\n\n // TODO: Awaiting animation time from design spec.\n const animationTime = '0.1s';\n\n const valuePercent = getPercent(renderedPosition !== undefined ? renderedPosition : currentValue, min, max);\n\n const originPercent = React.useMemo(() => {\n return origin !== undefined ? getPercent(origin, min, max) : 0;\n }, [max, min, origin]);\n\n const markValues = React.useMemo((): number[] => {\n const valueArray: number[] = [];\n\n // 1. We receive a boolean: mark for every step.\n if (typeof marks === 'boolean' && marks === true) {\n for (let i = 0; i < (max - min) / step + 1; i++) {\n valueArray.push(getPercent(min + step * i, min, max));\n }\n } else if (Array.isArray(marks) && marks.length > 0) {\n // 2. We receive an array with numbers: mark for every value in array.\n return marks.map(marksItem => getPercent(min + marksItem, min, max));\n }\n\n return valueArray;\n }, [marks, max, min, step]);\n\n /**\n * Current percentage position for the marks.\n */\n const markPercent = React.useMemo((): string[] => {\n const valueArray: number[] = markValues;\n const result: string[] = [];\n\n // For CSS grid to work the percents array must be remapped by the previous percent - the current percent\n if (valueArray.length > 0) {\n result.push(valueArray[0] + '% ');\n let prevPercent = valueArray[0];\n for (let i = 1; i < valueArray.length; i++) {\n result.push(valueArray[i] - prevPercent + '% ');\n prevPercent = valueArray[i];\n }\n }\n\n return result;\n }, [markValues]);\n\n const thumbWrapperStyles = {\n transform: vertical\n ? `translateY(${valuePercent}%)`\n : `translateX(${dir === 'rtl' ? -valuePercent : valuePercent}%)`,\n transition: stepAnimation ? `transform ease-in-out ${animationTime}` : 'none',\n ...state.thumbWrapper.style,\n };\n\n const trackStyles = {\n [vertical ? 'top' : dir === 'rtl' ? 'right' : 'left']:\n origin !== undefined ? `${Math.min(valuePercent, originPercent)}%` : 0,\n [vertical ? 'height' : 'width']:\n origin !== undefined\n ? `${Math.max(originPercent - valuePercent, valuePercent - originPercent)}%`\n : `${valuePercent}%`,\n borderRadius: getTrackBorderRadius(),\n // When a transition is applied with the origin, a visible animation plays when it goes below the min.\n transition: stepAnimation\n ? `${vertical ? 'height' : 'width'} ease-in-out ${animationTime}${\n origin !== undefined\n ? ', ' + vertical\n ? 'top'\n : dir === 'rtl'\n ? 'right'\n : 'left' + 'ease-in-out ' + animationTime\n : ''\n }`\n : 'none',\n ...state.track.style,\n };\n\n const marksWrapperStyles = marks\n ? {\n [vertical ? 'gridTemplateRows' : 'gridTemplateColumns']: markPercent.join(''),\n ...state.marksWrapper.style,\n }\n : {};\n\n /**\n * Renders the marks\n */\n const renderMarks = () => {\n const marksPercent = markPercent;\n const marksValue = markValues;\n const marksChildren: JSX.Element[] = [];\n for (let i = 0; i < marksPercent.length; i++) {\n marksChildren.push(\n <div className={markContainerClassName} key={`markItemContainer-${i}`}>\n <div\n className={mergeClasses(\n markClassName,\n (marksValue[i] === 0 && firstMarkClassName) || (marksValue[i] === 100 && lastMarkClassName) || '',\n )}\n key={`mark-${i}`}\n />\n </div>,\n );\n }\n\n return marksChildren;\n };\n\n // Root props\n if (!disabled) {\n state.root.onPointerDown = onPointerDown;\n state.root.onKeyDown = onKeyDown;\n }\n\n // Track Props\n state.track.style = trackStyles;\n\n // Mark props\n state.marksWrapper.children = marks ? renderMarks() : undefined;\n state.marksWrapper.style = marksWrapperStyles;\n\n // Thumb Wrapper Props\n state.thumbWrapper.style = thumbWrapperStyles;\n\n // Active Rail Props\n state.activeRail.ref = railRef;\n\n // Input Props\n state.input.ref = useMergedRefs(state.input.ref, inputRef);\n state.input.value = currentValue;\n state.input.min = min;\n state.input.max = max;\n ariaValueText && (state.input['aria-valuetext'] = ariaValueText(currentValue!));\n state.input.disabled = disabled;\n state.input.step = step;\n state.input.onChange = onInputChange;\n\n return state;\n};\n"],"sourceRoot":"../src/"}
|
|
1
|
+
{"version":3,"sources":["components/Slider/useSliderState.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useFluent } from '@fluentui/react-shared-contexts';\nimport {\n useBoolean,\n useControllableState,\n useEventCallback,\n useUnmount,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport {\n calculateSteps,\n clamp,\n getKeydownValue,\n getMarkPercent,\n getMarkValue,\n getPercent,\n on,\n renderMarks,\n} from '../../utils/index';\nimport type { SliderState } from './Slider.types';\n\nexport const useSliderState = (state: SliderState) => {\n const {\n value,\n defaultValue = 0,\n min = 0,\n max = 100,\n step = 1,\n keyboardStep = state.step || 1,\n disabled = false,\n ariaValueText,\n onChange,\n marks,\n vertical = false,\n origin,\n } = state;\n const { onPointerDown: onPointerDownCallback, onKeyDown: onKeyDownCallback } = state.root;\n\n const { dir } = useFluent();\n\n const [stepAnimation, { setTrue: showStepAnimation, setFalse: hideStepAnimation }] = useBoolean(false);\n const [renderedPosition, setRenderedPosition] = React.useState<number | undefined>(value ? value : defaultValue);\n const [currentValue, setCurrentValue] = useControllableState({\n state: value && clamp(value, min, max),\n defaultState: clamp(defaultValue, min, max),\n initialState: 0,\n });\n\n const railRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const disposables = React.useRef<(() => void)[]>([]);\n\n /**\n * Updates the controlled `currentValue` to the new `incomingValue` and clamps it.\n */\n const updateValue = useEventCallback(\n (incomingValue: number, ev: React.PointerEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>): void => {\n const clampedValue = clamp(incomingValue, min, max);\n\n if (clampedValue !== min && clampedValue !== max) {\n ev.stopPropagation();\n if (ev.type === 'keydown') {\n ev.preventDefault();\n }\n }\n\n onChange?.(ev, { value: clampedValue });\n setCurrentValue(clampedValue);\n },\n );\n\n /**\n * Updates the controlled `currentValue` and `renderedPosition` of the Slider.\n */\n const updatePosition = React.useCallback(\n (incomingValue: number, ev) => {\n setRenderedPosition(clamp(incomingValue, min, max));\n updateValue(incomingValue, ev);\n },\n [max, min, updateValue],\n );\n\n const onInputChange = (ev: React.ChangeEvent<HTMLInputElement>) => {\n updatePosition(Number(ev.target.value), ev);\n };\n\n const onPointerMove = React.useCallback(\n (ev: React.PointerEvent<HTMLDivElement>): void => {\n const position = calculateSteps(ev, railRef, min, max, step, vertical, dir);\n const currentStepPosition = Math.round(position / step) * step;\n\n setRenderedPosition(position);\n updateValue(currentStepPosition, ev);\n },\n [dir, max, min, step, updateValue, vertical],\n );\n\n const onPointerUp = React.useCallback(\n (ev: React.PointerEvent<HTMLDivElement>): void => {\n disposables.current.forEach(dispose => dispose());\n disposables.current = [];\n showStepAnimation();\n // When undefined, the position fallbacks to the currentValue state.\n setRenderedPosition(undefined);\n inputRef.current!.focus();\n },\n [showStepAnimation],\n );\n\n const onPointerDown = React.useCallback(\n (ev: React.PointerEvent<HTMLDivElement>): void => {\n const { pointerId } = ev;\n const target = ev.target as HTMLElement;\n\n target.setPointerCapture?.(pointerId);\n\n hideStepAnimation();\n onPointerDownCallback?.(ev);\n\n disposables.current.push(on(target, 'pointermove', onPointerMove), on(target, 'pointerup', onPointerUp), () => {\n target.releasePointerCapture?.(pointerId);\n });\n\n onPointerMove(ev);\n },\n [hideStepAnimation, onPointerDownCallback, onPointerMove, onPointerUp],\n );\n\n const onKeyDown = React.useCallback(\n (ev: React.KeyboardEvent<HTMLDivElement>): void => {\n hideStepAnimation();\n onKeyDownCallback?.(ev);\n const incomingValue = getKeydownValue(ev, currentValue, min, max, dir, keyboardStep);\n\n if (currentValue !== incomingValue) {\n updatePosition(incomingValue, ev);\n }\n },\n [currentValue, dir, hideStepAnimation, keyboardStep, max, min, onKeyDownCallback, updatePosition],\n );\n\n const getTrackBorderRadius = () => {\n if (origin !== undefined && origin !== (max || min)) {\n if (vertical) {\n return originPercent > valuePercent ? '99px 99px 0px 0px' : '0px 0px 99px 99px';\n } else {\n return (dir === 'rtl' ? valuePercent > originPercent : valuePercent < originPercent)\n ? '99px 0px 0px 99px'\n : '0px 99px 99px 0px';\n }\n }\n return '99px';\n };\n\n useUnmount(() => {\n disposables.current.forEach(dispose => dispose());\n disposables.current = [];\n });\n\n // TODO: Awaiting animation time from design spec.\n const animationTime = '0.1s';\n\n const valuePercent = getPercent(renderedPosition !== undefined ? renderedPosition : currentValue, min, max);\n\n const originPercent = React.useMemo(() => {\n return origin !== undefined ? getPercent(origin, min, max) : 0;\n }, [max, min, origin]);\n\n const markValues = React.useMemo((): number[] => getMarkValue(marks, min, max, step), [marks, max, min, step]);\n\n const markPercent = React.useMemo((): string[] => getMarkPercent(markValues), [markValues]);\n\n const thumbWrapperStyles = {\n transform: vertical\n ? `translateY(${valuePercent}%)`\n : `translateX(${dir === 'rtl' ? -valuePercent : valuePercent}%)`,\n transition: stepAnimation ? `transform ease-in-out ${animationTime}` : 'none',\n ...state.thumbWrapper.style,\n };\n\n const trackStyles = {\n [vertical ? 'top' : dir === 'rtl' ? 'right' : 'left']:\n origin !== undefined ? `${Math.min(valuePercent, originPercent)}%` : 0,\n [vertical ? 'height' : 'width']:\n origin !== undefined\n ? `${Math.max(originPercent - valuePercent, valuePercent - originPercent)}%`\n : `${valuePercent}%`,\n borderRadius: getTrackBorderRadius(),\n // When a transition is applied with the origin, a visible animation plays when it goes below the min.\n transition: stepAnimation\n ? `${vertical ? 'height' : 'width'} ease-in-out ${animationTime}${\n origin !== undefined\n ? ', ' + vertical\n ? 'top'\n : dir === 'rtl'\n ? 'right'\n : 'left' + 'ease-in-out ' + animationTime\n : ''\n }`\n : 'none',\n ...state.track.style,\n };\n\n const marksWrapperStyles = marks\n ? {\n [vertical ? 'gridTemplateRows' : 'gridTemplateColumns']: markPercent.join(''),\n ...state.marksWrapper.style,\n }\n : {};\n\n // Root props\n if (!disabled) {\n state.root.onPointerDown = onPointerDown;\n state.root.onKeyDown = onKeyDown;\n }\n\n // Track Props\n state.track.style = trackStyles;\n\n // Mark props\n if (marks) {\n state.marksWrapper.children = renderMarks(markValues);\n state.marksWrapper.style = marksWrapperStyles;\n }\n\n // Thumb Wrapper Props\n state.thumbWrapper.style = thumbWrapperStyles;\n\n // Active Rail Props\n state.activeRail.ref = railRef;\n\n // Input Props\n state.input.ref = useMergedRefs(state.input.ref, inputRef);\n state.input.value = currentValue;\n state.input.min = min;\n state.input.max = max;\n ariaValueText && (state.input['aria-valuetext'] = ariaValueText(currentValue!));\n state.input.disabled = disabled;\n state.input.step = step;\n state.input.onChange = onInputChange;\n\n return state;\n};\n"],"sourceRoot":"../src/"}
|
|
@@ -9,7 +9,7 @@ var react_make_styles_1 = /*#__PURE__*/require("@fluentui/react-make-styles");
|
|
|
9
9
|
|
|
10
10
|
var react_tabster_1 = /*#__PURE__*/require("@fluentui/react-tabster");
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var renderMarks_1 = /*#__PURE__*/require("../../utils/renderMarks");
|
|
13
13
|
|
|
14
14
|
var thumbClassName = 'ms-Slider-thumb';
|
|
15
15
|
var trackClassName = 'ms-Slider-track';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components/Slider/useSliderStyles.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeStyles, mergeClasses } from '@fluentui/react-make-styles';\nimport { createFocusIndicatorStyleRule } from '@fluentui/react-tabster';\nimport type { SliderState } from './Slider.types';\nimport { markClassName } from './useSliderState';\n\nconst thumbClassName = 'ms-Slider-thumb';\nconst trackClassName = 'ms-Slider-track';\n\n/**\n * Styles for the root slot\n */\nconst useRootStyles = makeStyles({\n root: theme => ({\n position: 'relative',\n display: 'inline-flex',\n userSelect: 'none',\n touchAction: 'none',\n verticalAlign: 'bottom',\n }),\n\n small: {\n '--slider-thumb-size': '10px',\n '--slider-rail-size': '2px',\n '--slider-mark-size': '2px',\n },\n\n medium: {\n '--slider-thumb-size': '20px',\n '--slider-rail-size': '4px',\n '--slider-mark-size': '4px',\n },\n\n horizontal: theme => ({\n minWidth: '120px',\n minHeight: 'var(--slider-thumb-size)',\n flexDirection: 'column',\n }),\n\n vertical: theme => ({\n transform: 'scaleY(-1)',\n minWidth: 'var(--slider-thumb-size)',\n minHeight: '120px',\n flexDirection: 'row',\n }),\n\n enabled: theme => ({\n cursor: 'grab',\n ':hover': {\n '& .ms-Slider-thumb': {\n background: theme.alias.color.neutral.brandBackgroundHover,\n },\n '& .ms-Slider-track': {\n background: theme.alias.color.neutral.brandBackgroundHover,\n },\n },\n ':active': {\n cursor: 'grabbing',\n '& .ms-Slider-thumb': {\n background: theme.alias.color.neutral.brandBackgroundPressed,\n },\n '& .ms-Slider-track': {\n background: theme.alias.color.neutral.brandBackgroundPressed,\n },\n },\n }),\n\n disabled: theme => ({\n cursor: 'not-allowed',\n }),\n\n focusIndicator: createFocusIndicatorStyleRule(\n theme => ({\n ':after': {\n content: \"''\",\n position: 'absolute',\n top: '-6px',\n right: '-6px',\n bottom: '-6px',\n left: '-6px',\n boxSizing: 'border-box',\n border: `1px solid ${theme.alias.color.neutral.neutralForeground1}`,\n borderRadius: theme.global.borderRadius.medium,\n },\n }),\n { selector: 'focus-within' },\n ),\n});\n\n/**\n * Styles for the slider wrapper slot\n */\nconst useSliderWrapper = makeStyles({\n sliderWrapper: theme => ({\n position: 'absolute',\n overflow: 'hidden',\n }),\n\n horizontal: theme => ({\n left: '0px',\n right: '0px',\n top: '0px',\n minHeight: 'var(--slider-thumb-size)',\n }),\n\n vertical: theme => ({\n top: '0px',\n bottom: '0px',\n left: '0px',\n minWidth: 'var(--slider-thumb-size)',\n }),\n});\n\n/**\n * Styles for the rail slot\n */\nconst useRailStyles = makeStyles({\n rail: theme => ({\n position: 'absolute',\n borderRadius: theme.global.borderRadius.xLarge,\n boxSizing: 'border-box',\n pointerEvents: 'none',\n }),\n\n enabled: theme => ({\n background: theme.alias.color.neutral.neutralStrokeAccessible,\n }),\n\n disabled: theme => ({\n background: theme.alias.color.neutral.neutralBackgroundDisabled,\n }),\n\n horizontal: theme => ({\n height: 'var(--slider-rail-size)',\n top: '50%',\n left: 'calc(var(--slider-thumb-size) * .5)',\n right: 'calc(var(--slider-thumb-size) * .5)',\n transform: 'translateY(-50%)',\n }),\n\n vertical: theme => ({\n width: 'var(--slider-rail-size)',\n left: '50%',\n top: 'calc(var(--slider-thumb-size) * .5)',\n bottom: 'calc(var(--slider-thumb-size) * .5)',\n transform: 'translateX(-50%)',\n }),\n});\n\n/**\n * Styles for the trackWrapper slot\n */\nconst useTrackWrapperStyles = makeStyles({\n trackWrapper: theme => ({\n position: 'absolute',\n }),\n\n horizontal: theme => ({\n top: '50%',\n left: 'calc(var(--slider-thumb-size) * .5)',\n right: 'calc(var(--slider-thumb-size) * .5)',\n }),\n\n vertical: theme => ({\n left: '50%',\n top: 'calc(var(--slider-thumb-size) * .5)',\n bottom: 'calc(var(--slider-thumb-size) * .5)',\n }),\n});\n\n/**\n * Styles for the track slot\n */\nconst useTrackStyles = makeStyles({\n track: theme => ({\n position: 'absolute',\n borderRadius: theme.global.borderRadius.xLarge,\n }),\n\n horizontal: theme => ({\n height: 'var(--slider-rail-size)',\n top: '50%',\n transform: 'translateY(-50%)',\n minWidth: 'calc(var(--slider-thumb-size) / 4)',\n }),\n\n vertical: theme => ({\n width: 'var(--slider-rail-size)',\n left: '50%',\n transform: 'translateX(-50%)',\n minHeight: 'calc(var(--slider-thumb-size) / 4)',\n }),\n\n enabled: theme => ({\n background: theme.alias.color.neutral.brandBackground,\n }),\n\n disabled: theme => ({\n background: theme.alias.color.neutral.neutralForegroundDisabled,\n }),\n});\n\n/**\n * Styles for the mark slot\n */\nconst useMarksWrapperStyles = makeStyles({\n marksWrapper: theme => ({\n position: 'relative',\n display: 'grid',\n outline: 'none',\n zIndex: '1',\n whiteSpace: 'nowrap',\n [`& .${markClassName}`]: {\n background: theme.alias.color.neutral.neutralBackground1,\n },\n\n '& .ms-Slider-firstMark, .ms-Slider-lastMark': {\n opacity: '0',\n },\n }),\n\n horizontal: theme => ({\n marginTop: 'calc(var(--slider-rail-size) + var(--slider-mark-size))',\n marginLeft: 'calc(var(--slider-thumb-size) / 2)',\n marginRight: 'calc(var(--slider-thumb-size) / 2)',\n justifyItems: 'end',\n\n '& .ms-Slider-markItemContainer': {\n display: 'flex',\n flexDirection: 'column',\n transform: 'translateX(50%)',\n alignItems: 'center',\n },\n\n [`& .${markClassName}`]: {\n height: '4px',\n width: '1px',\n },\n }),\n\n vertical: theme => ({\n marginTop: 'calc(var(--slider-thumb-size) / 2)',\n marginBottom: 'calc(var(--slider-thumb-size) / 2)',\n marginLeft: 'calc(var(--slider-rail-size) + var(--slider-mark-size))',\n justifyItems: 'start',\n\n '& .ms-Slider-markItemContainer': {\n display: 'flex',\n flexDirection: 'row',\n transform: 'translateY(50%)',\n alignItems: 'center',\n maxWidth: '100%',\n maxHeight: '100%',\n },\n\n [`& .${markClassName}`]: {\n height: '1px',\n width: 'var(--slider-mark-size)',\n },\n }),\n});\n\n/**\n * Styles for the thumb slot\n */\nconst useThumbWrapperStyles = makeStyles({\n thumbWrapper: theme => ({\n position: 'absolute',\n outline: 'none',\n zIndex: '2',\n }),\n\n horizontal: theme => ({\n left: 'calc(var(--slider-thumb-size) / 2)',\n right: 'calc(var(--slider-thumb-size) / 2)',\n top: '50%',\n }),\n\n vertical: theme => ({\n top: 'calc(var(--slider-thumb-size) / 2)',\n bottom: 'calc(var(--slider-thumb-size) / 2)',\n left: '50%',\n }),\n});\n\n/**\n * Styles for the thumb slot\n */\nconst useThumbStyles = makeStyles({\n thumb: theme => ({\n position: 'absolute',\n width: 'var(--slider-thumb-size)',\n height: 'var(--slider-thumb-size)',\n top: '0px',\n left: '0px',\n bottom: '0px',\n right: '0px',\n outline: 'none',\n borderRadius: theme.global.borderRadius.circular,\n boxSizing: 'border-box',\n boxShadow: `0 0 0 calc(var(--slider-thumb-size) * .2) ${theme.alias.color.neutral.neutralBackground1} inset`,\n transform: 'translate(-50%, -50%)',\n\n ':before': {\n position: 'absolute',\n top: '0px',\n left: '0px',\n bottom: '0px',\n right: '0px',\n borderRadius: theme.global.borderRadius.circular,\n boxSizing: 'border-box',\n content: \"''\",\n border: `calc(var(--slider-thumb-size) * .05) solid ${theme.alias.color.neutral.neutralStroke1}`,\n },\n }),\n\n enabled: theme => ({\n background: theme.alias.color.neutral.brandBackground,\n }),\n\n disabled: theme => ({\n background: theme.alias.color.neutral.neutralForegroundDisabled,\n border: `calc(var(--slider-thumb-size) * .05) solid ${theme.alias.color.neutral.neutralBackgroundDisabled}`,\n }),\n\n horizontal: theme => ({\n top: '50%',\n }),\n});\n\n/**\n * Styles for the activeRail slot\n */\nconst useActiveRailStyles = makeStyles({\n activeRail: theme => ({\n position: 'absolute',\n }),\n\n horizontal: theme => ({\n left: 'calc(var(--slider-thumb-size) / 2)',\n right: 'calc(var(--slider-thumb-size) / 2)',\n }),\n\n vertical: theme => ({\n top: 'calc(var(--slider-thumb-size) / 2)',\n bottom: 'calc(var(--slider-thumb-size) / 2)',\n }),\n});\n\n/**\n * Styles for the Input slot\n */\nconst useInputStyles = makeStyles({\n input: {\n opacity: 0,\n position: 'absolute',\n padding: 0,\n margin: 0,\n width: '100%',\n height: '100%',\n touchAction: 'none',\n pointerEvents: 'none',\n },\n});\n\n/**\n * Apply styling to the Slider slots based on the state\n */\nexport const useSliderStyles = (state: SliderState): SliderState => {\n const rootStyles = useRootStyles();\n const sliderWrapperStyles = useSliderWrapper();\n const railStyles = useRailStyles();\n const trackWrapperStyles = useTrackWrapperStyles();\n const trackStyles = useTrackStyles();\n const marksWrapperStyles = useMarksWrapperStyles();\n const thumbWrapperStyles = useThumbWrapperStyles();\n const thumbStyles = useThumbStyles();\n const activeRailStyles = useActiveRailStyles();\n const inputStyles = useInputStyles();\n\n state.root.className = mergeClasses(\n rootStyles.root,\n rootStyles.focusIndicator,\n rootStyles[state.size!],\n state.vertical ? rootStyles.vertical : rootStyles.horizontal,\n state.disabled ? rootStyles.disabled : rootStyles.enabled,\n rootStyles.focusIndicator,\n state.root.className,\n );\n\n state.sliderWrapper.className = mergeClasses(\n sliderWrapperStyles.sliderWrapper,\n state.vertical ? sliderWrapperStyles.vertical : sliderWrapperStyles.horizontal,\n state.sliderWrapper.className,\n );\n\n state.rail.className = mergeClasses(\n railStyles.rail,\n state.vertical ? railStyles.vertical : railStyles.horizontal,\n state.disabled ? railStyles.disabled : railStyles.enabled,\n state.rail.className,\n );\n\n state.sliderWrapper.className = mergeClasses(\n sliderWrapperStyles.sliderWrapper,\n state.vertical ? sliderWrapperStyles.vertical : sliderWrapperStyles.horizontal,\n state.sliderWrapper.className,\n );\n\n state.trackWrapper.className = mergeClasses(\n trackWrapperStyles.trackWrapper,\n state.vertical ? trackWrapperStyles.vertical : trackWrapperStyles.horizontal,\n state.trackWrapper.className,\n );\n\n state.track.className = mergeClasses(\n trackClassName,\n trackStyles.track,\n state.vertical ? trackStyles.vertical : trackStyles.horizontal,\n state.disabled ? trackStyles.disabled : trackStyles.enabled,\n state.track.className,\n );\n\n state.marksWrapper.className = mergeClasses(\n marksWrapperStyles.marksWrapper,\n state.vertical ? marksWrapperStyles.vertical : marksWrapperStyles.horizontal,\n state.marksWrapper.className,\n );\n\n state.thumbWrapper.className = mergeClasses(\n thumbWrapperStyles.thumbWrapper,\n state.vertical ? thumbWrapperStyles.vertical : thumbWrapperStyles.horizontal,\n state.thumbWrapper.className,\n );\n\n state.thumb.className = mergeClasses(\n thumbClassName,\n thumbStyles.thumb,\n !state.vertical && thumbStyles.horizontal,\n state.disabled ? trackStyles.disabled : trackStyles.enabled,\n state.thumb.className,\n );\n\n state.activeRail.className = mergeClasses(\n activeRailStyles.activeRail,\n state.vertical ? activeRailStyles.vertical : activeRailStyles.horizontal,\n state.activeRail.className,\n );\n\n state.input.className = mergeClasses(inputStyles.input, state.input.className);\n\n return state;\n};\n"],"sourceRoot":"../src/"}
|
|
1
|
+
{"version":3,"sources":["components/Slider/useSliderStyles.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeStyles, mergeClasses } from '@fluentui/react-make-styles';\nimport { createFocusIndicatorStyleRule } from '@fluentui/react-tabster';\nimport type { SliderState } from './Slider.types';\nimport { markClassName } from '../../utils/renderMarks';\n\nconst thumbClassName = 'ms-Slider-thumb';\nconst trackClassName = 'ms-Slider-track';\n\n/**\n * Styles for the root slot\n */\nconst useRootStyles = makeStyles({\n root: theme => ({\n position: 'relative',\n display: 'inline-flex',\n userSelect: 'none',\n touchAction: 'none',\n verticalAlign: 'bottom',\n }),\n\n small: {\n '--slider-thumb-size': '10px',\n '--slider-rail-size': '2px',\n '--slider-mark-size': '2px',\n },\n\n medium: {\n '--slider-thumb-size': '20px',\n '--slider-rail-size': '4px',\n '--slider-mark-size': '4px',\n },\n\n horizontal: theme => ({\n minWidth: '120px',\n minHeight: 'var(--slider-thumb-size)',\n flexDirection: 'column',\n }),\n\n vertical: theme => ({\n transform: 'scaleY(-1)',\n minWidth: 'var(--slider-thumb-size)',\n minHeight: '120px',\n flexDirection: 'row',\n }),\n\n enabled: theme => ({\n cursor: 'grab',\n ':hover': {\n '& .ms-Slider-thumb': {\n background: theme.alias.color.neutral.brandBackgroundHover,\n },\n '& .ms-Slider-track': {\n background: theme.alias.color.neutral.brandBackgroundHover,\n },\n },\n ':active': {\n cursor: 'grabbing',\n '& .ms-Slider-thumb': {\n background: theme.alias.color.neutral.brandBackgroundPressed,\n },\n '& .ms-Slider-track': {\n background: theme.alias.color.neutral.brandBackgroundPressed,\n },\n },\n }),\n\n disabled: theme => ({\n cursor: 'not-allowed',\n }),\n\n focusIndicator: createFocusIndicatorStyleRule(\n theme => ({\n ':after': {\n content: \"''\",\n position: 'absolute',\n top: '-6px',\n right: '-6px',\n bottom: '-6px',\n left: '-6px',\n boxSizing: 'border-box',\n border: `1px solid ${theme.alias.color.neutral.neutralForeground1}`,\n borderRadius: theme.global.borderRadius.medium,\n },\n }),\n { selector: 'focus-within' },\n ),\n});\n\n/**\n * Styles for the slider wrapper slot\n */\nconst useSliderWrapper = makeStyles({\n sliderWrapper: theme => ({\n position: 'absolute',\n overflow: 'hidden',\n }),\n\n horizontal: theme => ({\n left: '0px',\n right: '0px',\n top: '0px',\n minHeight: 'var(--slider-thumb-size)',\n }),\n\n vertical: theme => ({\n top: '0px',\n bottom: '0px',\n left: '0px',\n minWidth: 'var(--slider-thumb-size)',\n }),\n});\n\n/**\n * Styles for the rail slot\n */\nconst useRailStyles = makeStyles({\n rail: theme => ({\n position: 'absolute',\n borderRadius: theme.global.borderRadius.xLarge,\n boxSizing: 'border-box',\n pointerEvents: 'none',\n }),\n\n enabled: theme => ({\n background: theme.alias.color.neutral.neutralStrokeAccessible,\n }),\n\n disabled: theme => ({\n background: theme.alias.color.neutral.neutralBackgroundDisabled,\n }),\n\n horizontal: theme => ({\n height: 'var(--slider-rail-size)',\n top: '50%',\n left: 'calc(var(--slider-thumb-size) * .5)',\n right: 'calc(var(--slider-thumb-size) * .5)',\n transform: 'translateY(-50%)',\n }),\n\n vertical: theme => ({\n width: 'var(--slider-rail-size)',\n left: '50%',\n top: 'calc(var(--slider-thumb-size) * .5)',\n bottom: 'calc(var(--slider-thumb-size) * .5)',\n transform: 'translateX(-50%)',\n }),\n});\n\n/**\n * Styles for the trackWrapper slot\n */\nconst useTrackWrapperStyles = makeStyles({\n trackWrapper: theme => ({\n position: 'absolute',\n }),\n\n horizontal: theme => ({\n top: '50%',\n left: 'calc(var(--slider-thumb-size) * .5)',\n right: 'calc(var(--slider-thumb-size) * .5)',\n }),\n\n vertical: theme => ({\n left: '50%',\n top: 'calc(var(--slider-thumb-size) * .5)',\n bottom: 'calc(var(--slider-thumb-size) * .5)',\n }),\n});\n\n/**\n * Styles for the track slot\n */\nconst useTrackStyles = makeStyles({\n track: theme => ({\n position: 'absolute',\n borderRadius: theme.global.borderRadius.xLarge,\n }),\n\n horizontal: theme => ({\n height: 'var(--slider-rail-size)',\n top: '50%',\n transform: 'translateY(-50%)',\n minWidth: 'calc(var(--slider-thumb-size) / 4)',\n }),\n\n vertical: theme => ({\n width: 'var(--slider-rail-size)',\n left: '50%',\n transform: 'translateX(-50%)',\n minHeight: 'calc(var(--slider-thumb-size) / 4)',\n }),\n\n enabled: theme => ({\n background: theme.alias.color.neutral.brandBackground,\n }),\n\n disabled: theme => ({\n background: theme.alias.color.neutral.neutralForegroundDisabled,\n }),\n});\n\n/**\n * Styles for the mark slot\n */\nconst useMarksWrapperStyles = makeStyles({\n marksWrapper: theme => ({\n position: 'relative',\n display: 'grid',\n outline: 'none',\n zIndex: '1',\n whiteSpace: 'nowrap',\n [`& .${markClassName}`]: {\n background: theme.alias.color.neutral.neutralBackground1,\n },\n\n '& .ms-Slider-firstMark, .ms-Slider-lastMark': {\n opacity: '0',\n },\n }),\n\n horizontal: theme => ({\n marginTop: 'calc(var(--slider-rail-size) + var(--slider-mark-size))',\n marginLeft: 'calc(var(--slider-thumb-size) / 2)',\n marginRight: 'calc(var(--slider-thumb-size) / 2)',\n justifyItems: 'end',\n\n '& .ms-Slider-markItemContainer': {\n display: 'flex',\n flexDirection: 'column',\n transform: 'translateX(50%)',\n alignItems: 'center',\n },\n\n [`& .${markClassName}`]: {\n height: '4px',\n width: '1px',\n },\n }),\n\n vertical: theme => ({\n marginTop: 'calc(var(--slider-thumb-size) / 2)',\n marginBottom: 'calc(var(--slider-thumb-size) / 2)',\n marginLeft: 'calc(var(--slider-rail-size) + var(--slider-mark-size))',\n justifyItems: 'start',\n\n '& .ms-Slider-markItemContainer': {\n display: 'flex',\n flexDirection: 'row',\n transform: 'translateY(50%)',\n alignItems: 'center',\n maxWidth: '100%',\n maxHeight: '100%',\n },\n\n [`& .${markClassName}`]: {\n height: '1px',\n width: 'var(--slider-mark-size)',\n },\n }),\n});\n\n/**\n * Styles for the thumb slot\n */\nconst useThumbWrapperStyles = makeStyles({\n thumbWrapper: theme => ({\n position: 'absolute',\n outline: 'none',\n zIndex: '2',\n }),\n\n horizontal: theme => ({\n left: 'calc(var(--slider-thumb-size) / 2)',\n right: 'calc(var(--slider-thumb-size) / 2)',\n top: '50%',\n }),\n\n vertical: theme => ({\n top: 'calc(var(--slider-thumb-size) / 2)',\n bottom: 'calc(var(--slider-thumb-size) / 2)',\n left: '50%',\n }),\n});\n\n/**\n * Styles for the thumb slot\n */\nconst useThumbStyles = makeStyles({\n thumb: theme => ({\n position: 'absolute',\n width: 'var(--slider-thumb-size)',\n height: 'var(--slider-thumb-size)',\n top: '0px',\n left: '0px',\n bottom: '0px',\n right: '0px',\n outline: 'none',\n borderRadius: theme.global.borderRadius.circular,\n boxSizing: 'border-box',\n boxShadow: `0 0 0 calc(var(--slider-thumb-size) * .2) ${theme.alias.color.neutral.neutralBackground1} inset`,\n transform: 'translate(-50%, -50%)',\n\n ':before': {\n position: 'absolute',\n top: '0px',\n left: '0px',\n bottom: '0px',\n right: '0px',\n borderRadius: theme.global.borderRadius.circular,\n boxSizing: 'border-box',\n content: \"''\",\n border: `calc(var(--slider-thumb-size) * .05) solid ${theme.alias.color.neutral.neutralStroke1}`,\n },\n }),\n\n enabled: theme => ({\n background: theme.alias.color.neutral.brandBackground,\n }),\n\n disabled: theme => ({\n background: theme.alias.color.neutral.neutralForegroundDisabled,\n border: `calc(var(--slider-thumb-size) * .05) solid ${theme.alias.color.neutral.neutralBackgroundDisabled}`,\n }),\n\n horizontal: theme => ({\n top: '50%',\n }),\n});\n\n/**\n * Styles for the activeRail slot\n */\nconst useActiveRailStyles = makeStyles({\n activeRail: theme => ({\n position: 'absolute',\n }),\n\n horizontal: theme => ({\n left: 'calc(var(--slider-thumb-size) / 2)',\n right: 'calc(var(--slider-thumb-size) / 2)',\n }),\n\n vertical: theme => ({\n top: 'calc(var(--slider-thumb-size) / 2)',\n bottom: 'calc(var(--slider-thumb-size) / 2)',\n }),\n});\n\n/**\n * Styles for the Input slot\n */\nconst useInputStyles = makeStyles({\n input: {\n opacity: 0,\n position: 'absolute',\n padding: 0,\n margin: 0,\n width: '100%',\n height: '100%',\n touchAction: 'none',\n pointerEvents: 'none',\n },\n});\n\n/**\n * Apply styling to the Slider slots based on the state\n */\nexport const useSliderStyles = (state: SliderState): SliderState => {\n const rootStyles = useRootStyles();\n const sliderWrapperStyles = useSliderWrapper();\n const railStyles = useRailStyles();\n const trackWrapperStyles = useTrackWrapperStyles();\n const trackStyles = useTrackStyles();\n const marksWrapperStyles = useMarksWrapperStyles();\n const thumbWrapperStyles = useThumbWrapperStyles();\n const thumbStyles = useThumbStyles();\n const activeRailStyles = useActiveRailStyles();\n const inputStyles = useInputStyles();\n\n state.root.className = mergeClasses(\n rootStyles.root,\n rootStyles.focusIndicator,\n rootStyles[state.size!],\n state.vertical ? rootStyles.vertical : rootStyles.horizontal,\n state.disabled ? rootStyles.disabled : rootStyles.enabled,\n rootStyles.focusIndicator,\n state.root.className,\n );\n\n state.sliderWrapper.className = mergeClasses(\n sliderWrapperStyles.sliderWrapper,\n state.vertical ? sliderWrapperStyles.vertical : sliderWrapperStyles.horizontal,\n state.sliderWrapper.className,\n );\n\n state.rail.className = mergeClasses(\n railStyles.rail,\n state.vertical ? railStyles.vertical : railStyles.horizontal,\n state.disabled ? railStyles.disabled : railStyles.enabled,\n state.rail.className,\n );\n\n state.sliderWrapper.className = mergeClasses(\n sliderWrapperStyles.sliderWrapper,\n state.vertical ? sliderWrapperStyles.vertical : sliderWrapperStyles.horizontal,\n state.sliderWrapper.className,\n );\n\n state.trackWrapper.className = mergeClasses(\n trackWrapperStyles.trackWrapper,\n state.vertical ? trackWrapperStyles.vertical : trackWrapperStyles.horizontal,\n state.trackWrapper.className,\n );\n\n state.track.className = mergeClasses(\n trackClassName,\n trackStyles.track,\n state.vertical ? trackStyles.vertical : trackStyles.horizontal,\n state.disabled ? trackStyles.disabled : trackStyles.enabled,\n state.track.className,\n );\n\n state.marksWrapper.className = mergeClasses(\n marksWrapperStyles.marksWrapper,\n state.vertical ? marksWrapperStyles.vertical : marksWrapperStyles.horizontal,\n state.marksWrapper.className,\n );\n\n state.thumbWrapper.className = mergeClasses(\n thumbWrapperStyles.thumbWrapper,\n state.vertical ? thumbWrapperStyles.vertical : thumbWrapperStyles.horizontal,\n state.thumbWrapper.className,\n );\n\n state.thumb.className = mergeClasses(\n thumbClassName,\n thumbStyles.thumb,\n !state.vertical && thumbStyles.horizontal,\n state.disabled ? trackStyles.disabled : trackStyles.enabled,\n state.thumb.className,\n );\n\n state.activeRail.className = mergeClasses(\n activeRailStyles.activeRail,\n state.vertical ? activeRailStyles.vertical : activeRailStyles.horizontal,\n state.activeRail.className,\n );\n\n state.input.className = mergeClasses(inputStyles.input, state.input.className);\n\n return state;\n};\n"],"sourceRoot":"../src/"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the `step` position based off of a `Mouse` or `Touch` event relative to the size of the rail.
|
|
4
|
+
*/
|
|
5
|
+
export declare const calculateSteps: (ev: React.PointerEvent<HTMLDivElement>, railRef: React.RefObject<HTMLDivElement>, min: number, max: number, step: number, vertical: boolean, dir: 'ltr' | 'rtl') => number;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.calculateSteps = void 0;
|
|
7
|
+
|
|
8
|
+
var clamp_1 = /*#__PURE__*/require("./clamp");
|
|
9
|
+
/**
|
|
10
|
+
* Calculates the `step` position based off of a `Mouse` or `Touch` event relative to the size of the rail.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
var calculateSteps = function (ev, railRef, min, max, step, vertical, dir) {
|
|
15
|
+
var _a;
|
|
16
|
+
|
|
17
|
+
var currentBounds = (_a = railRef === null || railRef === void 0 ? void 0 : railRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
18
|
+
var sliderSize = vertical ? currentBounds.height : currentBounds.width;
|
|
19
|
+
var position;
|
|
20
|
+
|
|
21
|
+
if (vertical) {
|
|
22
|
+
position = currentBounds.bottom;
|
|
23
|
+
} else if (dir === 'rtl') {
|
|
24
|
+
position = currentBounds.right;
|
|
25
|
+
} else {
|
|
26
|
+
position = currentBounds.left;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var totalSteps = (max - min) / step;
|
|
30
|
+
var stepLength = sliderSize / totalSteps;
|
|
31
|
+
var thumbPosition = vertical ? ev.clientY : ev.clientX;
|
|
32
|
+
var distance = dir === 'rtl' || vertical ? position - thumbPosition : thumbPosition - position;
|
|
33
|
+
return clamp_1.clamp(min + step * (distance / stepLength), min, max);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.calculateSteps = calculateSteps;
|
|
37
|
+
//# sourceMappingURL=calculateSteps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/calculateSteps.ts"],"names":[],"mappings":";;;;;;;AACA,IAAA,OAAA,gBAAA,OAAA,CAAA,SAAA,CAAA;AAEA;;AAEG;;;AACI,IAAM,cAAc,GAAG,UAC5B,EAD4B,EAE5B,OAF4B,EAG5B,GAH4B,EAI5B,GAJ4B,EAK5B,IAL4B,EAM5B,QAN4B,EAO5B,GAP4B,EAOV;;;AAElB,MAAM,aAAa,GAAA,CAAA,EAAA,GAAG,OAAO,KAAA,IAAP,IAAA,OAAO,KAAA,KAAA,CAAP,GAAO,KAAA,CAAP,GAAA,OAAO,CAAE,OAAZ,MAAmB,IAAnB,IAAmB,EAAA,KAAA,KAAA,CAAnB,GAAmB,KAAA,CAAnB,GAAmB,EAAA,CAAE,qBAAF,EAAtC;AACA,MAAM,UAAU,GAAG,QAAQ,GAAG,aAAc,CAAC,MAAlB,GAA2B,aAAc,CAAC,KAArE;AACA,MAAI,QAAJ;;AAEA,MAAI,QAAJ,EAAc;AACZ,IAAA,QAAQ,GAAG,aAAc,CAAC,MAA1B;AACD,GAFD,MAEO,IAAI,GAAG,KAAK,KAAZ,EAAmB;AACxB,IAAA,QAAQ,GAAG,aAAc,CAAC,KAA1B;AACD,GAFM,MAEA;AACL,IAAA,QAAQ,GAAG,aAAc,CAAC,IAA1B;AACD;;AAED,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,GAAP,IAAc,IAAjC;AACA,MAAM,UAAU,GAAG,UAAU,GAAG,UAAhC;AACA,MAAM,aAAa,GAAG,QAAQ,GAAG,EAAE,CAAC,OAAN,GAAgB,EAAE,CAAC,OAAjD;AACA,MAAM,QAAQ,GAAG,GAAG,KAAK,KAAR,IAAiB,QAAjB,GAA4B,QAAQ,GAAG,aAAvC,GAAuD,aAAa,GAAG,QAAxF;AAEA,SAAO,OAAA,CAAA,KAAA,CAAM,GAAG,GAAG,IAAI,IAAI,QAAQ,GAAG,UAAf,CAAhB,EAA4C,GAA5C,EAAiD,GAAjD,CAAP;AACD,CA3BM;;AAAM,OAAA,CAAA,cAAA,GAAc,cAAd","sourcesContent":["import * as React from 'react';\nimport { clamp } from './clamp';\n\n/**\n * Calculates the `step` position based off of a `Mouse` or `Touch` event relative to the size of the rail.\n */\nexport const calculateSteps = (\n ev: React.PointerEvent<HTMLDivElement>,\n railRef: React.RefObject<HTMLDivElement>,\n min: number,\n max: number,\n step: number,\n vertical: boolean,\n dir: 'ltr' | 'rtl',\n): number => {\n const currentBounds = railRef?.current?.getBoundingClientRect();\n const sliderSize = vertical ? currentBounds!.height : currentBounds!.width;\n let position;\n\n if (vertical) {\n position = currentBounds!.bottom;\n } else if (dir === 'rtl') {\n position = currentBounds!.right;\n } else {\n position = currentBounds!.left;\n }\n\n const totalSteps = (max - min) / step;\n const stepLength = sliderSize / totalSteps;\n const thumbPosition = vertical ? ev.clientY : ev.clientX;\n const distance = dir === 'rtl' || vertical ? position - thumbPosition : thumbPosition - position;\n\n return clamp(min + step * (distance / stepLength), min, max);\n};\n"],"sourceRoot":"../src/"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clamps `value` to a number between the min and max.
|
|
3
|
+
*
|
|
4
|
+
* @param value - the value to be clamped
|
|
5
|
+
* @param min - the lowest valid value
|
|
6
|
+
* @param max - the highest valid value
|
|
7
|
+
*/
|
|
8
|
+
export declare const clamp: (value: number, min: number, max: number) => number;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.clamp = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Clamps `value` to a number between the min and max.
|
|
9
|
+
*
|
|
10
|
+
* @param value - the value to be clamped
|
|
11
|
+
* @param min - the lowest valid value
|
|
12
|
+
* @param max - the highest valid value
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
var clamp = function (value, min, max) {
|
|
16
|
+
return Math.max(min, Math.min(max, value || 0));
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.clamp = clamp;
|
|
20
|
+
//# sourceMappingURL=clamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/clamp.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;AAMG;;AACI,IAAM,KAAK,GAAG,UAAC,KAAD,EAAgB,GAAhB,EAA6B,GAA7B,EAAwC;AAAa,SAAA,IAAI,CAAC,GAAL,CAAS,GAAT,EAAc,IAAI,CAAC,GAAL,CAAS,GAAT,EAAc,KAAK,IAAjC,CAAc,CAAd,CAAA;AAAwC,CAA3G;;AAAM,OAAA,CAAA,KAAA,GAAK,KAAL","sourcesContent":["/**\n * Clamps `value` to a number between the min and max.\n *\n * @param value - the value to be clamped\n * @param min - the lowest valid value\n * @param max - the highest valid value\n */\nexport const clamp = (value: number, min: number, max: number): number => Math.max(min, Math.min(max, value || 0));\n"],"sourceRoot":"../src/"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Determines the incoming value for the Slider based off of a keyboard event.
|
|
4
|
+
* It automatically flips the key direction if the dir parameter is rtl.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getKeydownValue: (ev: React.KeyboardEvent<HTMLDivElement>, currentValue: number, min: number, max: number, dir: 'ltr' | 'rtl', keyboardStep: number) => number;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getKeydownValue = void 0;
|
|
7
|
+
|
|
8
|
+
var getRTLSafeKey_1 = /*#__PURE__*/require("./getRTLSafeKey");
|
|
9
|
+
/**
|
|
10
|
+
* Determines the incoming value for the Slider based off of a keyboard event.
|
|
11
|
+
* It automatically flips the key direction if the dir parameter is rtl.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var getKeydownValue = function (ev, currentValue, min, max, dir, keyboardStep) {
|
|
16
|
+
var normalizedKey = getRTLSafeKey_1.getRTLSafeKey(ev.key, dir);
|
|
17
|
+
|
|
18
|
+
if (ev.shiftKey) {
|
|
19
|
+
if (normalizedKey === 'ArrowDown' || normalizedKey === 'ArrowLeft') {
|
|
20
|
+
return currentValue - keyboardStep * 10;
|
|
21
|
+
} else if (normalizedKey === 'ArrowUp' || normalizedKey === 'ArrowRight') {
|
|
22
|
+
return currentValue + keyboardStep * 10;
|
|
23
|
+
}
|
|
24
|
+
} else if (normalizedKey === 'ArrowDown' || normalizedKey === 'ArrowLeft') {
|
|
25
|
+
return currentValue - keyboardStep;
|
|
26
|
+
} else if (normalizedKey === 'ArrowUp' || normalizedKey === 'ArrowRight') {
|
|
27
|
+
return currentValue + keyboardStep;
|
|
28
|
+
} else {
|
|
29
|
+
switch (normalizedKey) {
|
|
30
|
+
case 'PageDown':
|
|
31
|
+
return currentValue - keyboardStep * 10;
|
|
32
|
+
break;
|
|
33
|
+
|
|
34
|
+
case 'PageUp':
|
|
35
|
+
return currentValue + keyboardStep * 10;
|
|
36
|
+
|
|
37
|
+
case 'Home':
|
|
38
|
+
return min;
|
|
39
|
+
|
|
40
|
+
case 'End':
|
|
41
|
+
return max;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return currentValue;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
exports.getKeydownValue = getKeydownValue;
|
|
49
|
+
//# sourceMappingURL=getKeydownValue.js.map
|