@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.
Files changed (124) hide show
  1. package/CHANGELOG.json +22 -1
  2. package/CHANGELOG.md +12 -2
  3. package/dist/react-slider.d.ts +1 -1
  4. package/lib/components/Slider/Slider.d.ts +1 -1
  5. package/lib/components/Slider/Slider.js.map +1 -1
  6. package/lib/components/Slider/index.d.ts +1 -1
  7. package/lib/components/Slider/index.js +1 -1
  8. package/lib/components/Slider/index.js.map +1 -1
  9. package/lib/components/Slider/useSliderState.d.ts +0 -1
  10. package/lib/components/Slider/useSliderState.js +15 -178
  11. package/lib/components/Slider/useSliderState.js.map +1 -1
  12. package/lib/components/Slider/useSliderStyles.js +1 -1
  13. package/lib/components/Slider/useSliderStyles.js.map +1 -1
  14. package/lib/utils/calculateSteps.d.ts +5 -0
  15. package/lib/utils/calculateSteps.js +27 -0
  16. package/lib/utils/calculateSteps.js.map +1 -0
  17. package/lib/utils/clamp.d.ts +8 -0
  18. package/lib/utils/clamp.js +11 -0
  19. package/lib/utils/clamp.js.map +1 -0
  20. package/lib/utils/getKeydownValue.d.ts +6 -0
  21. package/lib/utils/getKeydownValue.js +39 -0
  22. package/lib/utils/getKeydownValue.js.map +1 -0
  23. package/lib/utils/getMarkPercent.d.ts +7 -0
  24. package/lib/utils/getMarkPercent.js +23 -0
  25. package/lib/utils/getMarkPercent.js.map +1 -0
  26. package/lib/utils/getMarkValues.d.ts +4 -0
  27. package/lib/utils/getMarkValues.js +22 -0
  28. package/lib/utils/getMarkValues.js.map +1 -0
  29. package/lib/utils/getPercent.d.ts +8 -0
  30. package/lib/utils/getPercent.js +11 -0
  31. package/lib/utils/getPercent.js.map +1 -0
  32. package/lib/utils/getRTLSafeKey.d.ts +4 -0
  33. package/lib/utils/getRTLSafeKey.js +21 -0
  34. package/lib/utils/getRTLSafeKey.js.map +1 -0
  35. package/lib/utils/index.d.ts +9 -0
  36. package/lib/utils/index.js +10 -0
  37. package/lib/utils/index.js.map +1 -0
  38. package/lib/utils/on.d.ts +1 -0
  39. package/lib/utils/on.js +8 -0
  40. package/lib/utils/on.js.map +1 -0
  41. package/lib/utils/renderMarks.d.ts +7 -0
  42. package/lib/utils/renderMarks.js +25 -0
  43. package/lib/utils/renderMarks.js.map +1 -0
  44. package/lib-amd/components/Slider/Slider.d.ts +1 -1
  45. package/lib-amd/components/Slider/Slider.js.map +1 -1
  46. package/lib-amd/components/Slider/index.d.ts +1 -1
  47. package/lib-amd/components/Slider/index.js +1 -2
  48. package/lib-amd/components/Slider/index.js.map +1 -1
  49. package/lib-amd/components/Slider/useSliderState.d.ts +0 -1
  50. package/lib-amd/components/Slider/useSliderState.js +21 -159
  51. package/lib-amd/components/Slider/useSliderState.js.map +1 -1
  52. package/lib-amd/components/Slider/useSliderStyles.js +4 -4
  53. package/lib-amd/components/Slider/useSliderStyles.js.map +1 -1
  54. package/lib-amd/utils/calculateSteps.d.ts +5 -0
  55. package/lib-amd/utils/calculateSteps.js +30 -0
  56. package/lib-amd/utils/calculateSteps.js.map +1 -0
  57. package/lib-amd/utils/clamp.d.ts +8 -0
  58. package/lib-amd/utils/clamp.js +15 -0
  59. package/lib-amd/utils/clamp.js.map +1 -0
  60. package/lib-amd/utils/getKeydownValue.d.ts +6 -0
  61. package/lib-amd/utils/getKeydownValue.js +42 -0
  62. package/lib-amd/utils/getKeydownValue.js.map +1 -0
  63. package/lib-amd/utils/getMarkPercent.d.ts +7 -0
  64. package/lib-amd/utils/getMarkPercent.js +27 -0
  65. package/lib-amd/utils/getMarkPercent.js.map +1 -0
  66. package/lib-amd/utils/getMarkValues.d.ts +4 -0
  67. package/lib-amd/utils/getMarkValues.js +24 -0
  68. package/lib-amd/utils/getMarkValues.js.map +1 -0
  69. package/lib-amd/utils/getPercent.d.ts +8 -0
  70. package/lib-amd/utils/getPercent.js +17 -0
  71. package/lib-amd/utils/getPercent.js.map +1 -0
  72. package/lib-amd/utils/getRTLSafeKey.d.ts +4 -0
  73. package/lib-amd/utils/getRTLSafeKey.js +23 -0
  74. package/lib-amd/utils/getRTLSafeKey.js.map +1 -0
  75. package/lib-amd/utils/index.d.ts +9 -0
  76. package/lib-amd/utils/index.js +14 -0
  77. package/lib-amd/utils/index.js.map +1 -0
  78. package/lib-amd/utils/on.d.ts +1 -0
  79. package/lib-amd/utils/on.js +12 -0
  80. package/lib-amd/utils/on.js.map +1 -0
  81. package/lib-amd/utils/renderMarks.d.ts +7 -0
  82. package/lib-amd/utils/renderMarks.js +21 -0
  83. package/lib-amd/utils/renderMarks.js.map +1 -0
  84. package/lib-commonjs/components/Slider/Slider.d.ts +1 -1
  85. package/lib-commonjs/components/Slider/Slider.js.map +1 -1
  86. package/lib-commonjs/components/Slider/index.d.ts +1 -1
  87. package/lib-commonjs/components/Slider/index.js +1 -9
  88. package/lib-commonjs/components/Slider/index.js.map +1 -1
  89. package/lib-commonjs/components/Slider/useSliderState.d.ts +0 -1
  90. package/lib-commonjs/components/Slider/useSliderState.js +23 -187
  91. package/lib-commonjs/components/Slider/useSliderState.js.map +1 -1
  92. package/lib-commonjs/components/Slider/useSliderStyles.js +1 -1
  93. package/lib-commonjs/components/Slider/useSliderStyles.js.map +1 -1
  94. package/lib-commonjs/utils/calculateSteps.d.ts +5 -0
  95. package/lib-commonjs/utils/calculateSteps.js +37 -0
  96. package/lib-commonjs/utils/calculateSteps.js.map +1 -0
  97. package/lib-commonjs/utils/clamp.d.ts +8 -0
  98. package/lib-commonjs/utils/clamp.js +20 -0
  99. package/lib-commonjs/utils/clamp.js.map +1 -0
  100. package/lib-commonjs/utils/getKeydownValue.d.ts +6 -0
  101. package/lib-commonjs/utils/getKeydownValue.js +49 -0
  102. package/lib-commonjs/utils/getKeydownValue.js.map +1 -0
  103. package/lib-commonjs/utils/getMarkPercent.d.ts +7 -0
  104. package/lib-commonjs/utils/getMarkPercent.js +32 -0
  105. package/lib-commonjs/utils/getMarkPercent.js.map +1 -0
  106. package/lib-commonjs/utils/getMarkValues.d.ts +4 -0
  107. package/lib-commonjs/utils/getMarkValues.js +32 -0
  108. package/lib-commonjs/utils/getMarkValues.js.map +1 -0
  109. package/lib-commonjs/utils/getPercent.d.ts +8 -0
  110. package/lib-commonjs/utils/getPercent.js +20 -0
  111. package/lib-commonjs/utils/getPercent.js.map +1 -0
  112. package/lib-commonjs/utils/getRTLSafeKey.d.ts +4 -0
  113. package/lib-commonjs/utils/getRTLSafeKey.js +30 -0
  114. package/lib-commonjs/utils/getRTLSafeKey.js.map +1 -0
  115. package/lib-commonjs/utils/index.d.ts +9 -0
  116. package/lib-commonjs/utils/index.js +26 -0
  117. package/lib-commonjs/utils/index.js.map +1 -0
  118. package/lib-commonjs/utils/on.d.ts +1 -0
  119. package/lib-commonjs/utils/on.js +16 -0
  120. package/lib-commonjs/utils/on.js.map +1 -0
  121. package/lib-commonjs/utils/renderMarks.d.ts +7 -0
  122. package/lib-commonjs/utils/renderMarks.js +36 -0
  123. package/lib-commonjs/utils/renderMarks.js.map +1 -0
  124. package/package.json +8 -8
@@ -1 +1 @@
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,IAAA,gBAAA,gBAAA,OAAA,CAAA,kBAAA,CAAA;;AAAS,MAAA,CAAA,cAAA,CAAA,OAAA,EAAA,gBAAA,EAAA;AAAA,EAAA,UAAA,EAAA,IAAA;AAAA,EAAA,GAAA,EAAA,YAAA;AAAA,WAAA,gBAAA,CAAA,cAAA;AAAc;AAAd,CAAA;;AACT,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 { useSliderState } from './useSliderState';\nexport * from './useSliderStyles';\n"],"sourceRoot":"../src/"}
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/"}
@@ -1,3 +1,2 @@
1
1
  import type { SliderState } from './Slider.types';
2
- export declare const markClassName = "ms-Slider-mark";
3
2
  export declare const useSliderState: (state: SliderState) => SliderState;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useSliderState = exports.markClassName = void 0;
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 react_make_styles_1 = /*#__PURE__*/require("@fluentui/react-make-styles");
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 + step * calculateSteps(ev);
100
+ var position = index_1.calculateSteps(ev, railRef, min, max, step, vertical, dir);
186
101
  var currentStepPosition = Math.round(position / step) * step;
187
- setRenderedPosition(clamp(position, min, max));
102
+ setRenderedPosition(position);
188
103
  updateValue(currentStepPosition, ev);
189
- }, [calculateSteps, max, min, step, updateValue]);
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 (ev.shiftKey) {
221
- if (normalizedKey === 'ArrowDown' || normalizedKey === 'ArrowLeft') {
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
- var valueArray = []; // 1. We receive a boolean: mark for every step.
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
- var valueArray = markValues;
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
- state.marksWrapper.children = marks ? renderMarks() : undefined;
357
- state.marksWrapper.style = marksWrapperStyles; // Thumb Wrapper Props
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":";;;;;;;;;AAAA,IAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,IAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;;AACA,IAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AAOA,IAAA,mBAAA,gBAAA,OAAA,CAAA,6BAAA,CAAA;AAGA;;;;;;AAMG;;;AACH,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;AAEA;;;;;;AAMG;;;AACH,IAAM,UAAU,GAAG,UAAC,KAAD,EAAgB,GAAhB,EAA6B,GAA7B,EAAwC;AACzD,SAAO,GAAG,KAAK,GAAR,GAAc,CAAd,GAAmB,CAAC,KAAK,GAAG,GAAT,KAAiB,GAAG,GAAG,GAAvB,CAAD,GAAgC,GAAzD;AACD,CAFD;AAIA;;AAEG;;;AACH,IAAM,aAAa,GAAG,UAAC,GAAD,EAAc,GAAd,EAAgC;AACpD,MAAI,GAAG,KAAK,KAAZ,EAAmB;AACjB,YAAQ,GAAR;AACE,WAAK,WAAL;AAAkB;AAChB,iBAAO,YAAP;AACD;;AAED,WAAK,YAAL;AAAmB;AACjB,iBAAO,WAAP;AACD;AAPH;AASD;;AAED,SAAO,GAAP;AACD,CAdD,C,CAgBA;;;AACA,IAAM,EAAE,GAAG,UAAC,OAAD,EAAmB,SAAnB,EAAsC,QAAtC,EAAiE;AAC1E,EAAA,OAAO,CAAC,gBAAR,CAAyB,SAAzB,EAAoC,QAApC;AACA,SAAO,YAAA;AAAM,WAAA,OAAO,CAAC,mBAAR,CAA4B,SAA5B,EAAA,QAAA,CAAA;AAAgD,GAA7D;AACD,CAHD,C,CAKA;;;AACA,IAAM,sBAAsB,GAAG,6BAA/B;AACa,OAAA,CAAA,aAAA,GAAgB,gBAAhB;AACb,IAAM,kBAAkB,GAAG,qBAA3B;AACA,IAAM,iBAAiB,GAAG,oBAA1B;;AAEO,IAAM,cAAc,GAAG,UAAC,KAAD,EAAmB;;;AAE7C,MAAA,KAAK,GAYH,KAAK,CAZF,KAAL;AAAA,MACA,EAAA,GAWE,KAAK,CAXS,YADhB;AAAA,MACA,YAAY,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAH,GAAI,EADhB;AAAA,MAEA,EAAA,GAUE,KAAK,CAVA,GAFP;AAAA,MAEA,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAH,GAAI,EAFP;AAAA,MAGA,EAAA,GASE,KAAK,CATE,GAHT;AAAA,MAGA,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,GAAH,GAAM,EAHT;AAAA,MAIA,EAAA,GAQE,KAAK,CARC,IAJR;AAAA,MAIA,IAAI,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAH,GAAI,EAJR;AAAA,MAKA,EAAA,GAOE,KAAK,CAPuB,YAL9B;AAAA,MAKA,YAAY,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAK,CAAC,IAAN,IAAc,CAAjB,GAAkB,EAL9B;AAAA,MAMA,EAAA,GAME,KAAK,CANS,QANhB;AAAA,MAMA,QAAQ,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAH,GAAQ,EANhB;AAAA,MAOA,aAAa,GAKX,KAAK,CALM,aAPb;AAAA,MAQA,QAAQ,GAIN,KAAK,CAJC,QARR;AAAA,MASA,KAAK,GAGH,KAAK,CAHF,KATL;AAAA,MAUA,EAAA,GAEE,KAAK,CAFS,QAVhB;AAAA,MAUA,QAAQ,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAH,GAAQ,EAVhB;AAAA,MAWA,MAAM,GACJ,KAAK,CADD,MAXN;AAaI,MAAA,EAAA,GAAyE,KAAK,CAAC,IAA/E;AAAA,MAAiB,qBAAqB,GAAA,EAAA,CAAA,aAAtC;AAAA,MAAmD,iBAAiB,GAAA,EAAA,CAAA,SAApE;AAEE,MAAA,GAAG,GAAK,uBAAA,CAAA,SAAA,GAAL,GAAH;;AAEF,MAAA,EAAA,GAA+E,iBAAA,CAAA,UAAA,CAAW,KAAX,CAA/E;AAAA,MAAC,aAAa,GAAA,EAAA,CAAA,CAAA,CAAd;AAAA,MAAgB,EAAA,GAAA,EAAA,CAAA,CAAA,CAAhB;AAAA,MAA2B,iBAAiB,GAAA,EAAA,CAAA,OAA5C;AAAA,MAAwD,iBAAiB,GAAA,EAAA,CAAA,QAAzE;;AACA,MAAA,EAAA,GAA0C,KAAK,CAAC,QAAN,CAAmC,KAAK,GAAG,KAAH,GAAW,YAAnD,CAA1C;AAAA,MAAC,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAjB;AAAA,MAAmB,mBAAmB,GAAA,EAAA,CAAA,CAAA,CAAtC;;AACA,MAAA,EAAA,GAAkC,iBAAA,CAAA,oBAAA,CAAqB;AAC3D,IAAA,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,KAAD,EAAQ,GAAR,EAAa,GAAb,CADsC;AAE3D,IAAA,YAAY,EAAE,KAAK,CAAC,YAAD,EAAe,GAAf,EAAoB,GAApB,CAFwC;AAG3D,IAAA,YAAY,EAAE;AAH6C,GAArB,CAAlC;AAAA,MAAC,YAAY,GAAA,EAAA,CAAA,CAAA,CAAb;AAAA,MAAe,eAAe,GAAA,EAAA,CAAA,CAAA,CAA9B;;AAMN,MAAM,OAAO,GAAG,KAAK,CAAC,MAAN,CAA6B,IAA7B,CAAhB;AACA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAN,CAA+B,IAA/B,CAAjB;AACA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAN,CAA6B,EAA7B,CAApB;AAEA;;AAEG;;AACH,MAAM,WAAW,GAAG,iBAAA,CAAA,gBAAA,CAClB,UAAC,aAAD,EAAwB,EAAxB,EAAoG;AAClG,QAAM,YAAY,GAAG,KAAK,CAAC,aAAD,EAAgB,GAAhB,EAAqB,GAArB,CAA1B;;AAEA,QAAI,YAAY,KAAK,GAAjB,IAAwB,YAAY,KAAK,GAA7C,EAAkD;AAChD,MAAA,EAAE,CAAC,eAAH;;AACA,UAAI,EAAE,CAAC,IAAH,KAAY,SAAhB,EAA2B;AACzB,QAAA,EAAE,CAAC,cAAH;AACD;AACF;;AAED,IAAA,QAAQ,KAAA,IAAR,IAAA,QAAQ,KAAA,KAAA,CAAR,GAAQ,KAAA,CAAR,GAAA,QAAQ,CAAG,EAAH,EAAO;AAAE,MAAA,KAAK,EAAE;AAAT,KAAP,CAAR;AACA,IAAA,eAAe,CAAC,YAAD,CAAf;AACD,GAbiB,CAApB;AAgBA;;AAEG;;AACH,MAAM,cAAc,GAAG,KAAK,CAAC,WAAN,CACrB,UAAC,aAAD,EAAwB,EAAxB,EAA0B;AACxB,IAAA,mBAAmB,CAAC,KAAK,CAAC,aAAD,EAAgB,GAAhB,EAAqB,GAArB,CAAN,CAAnB;AACA,IAAA,WAAW,CAAC,aAAD,EAAgB,EAAhB,CAAX;AACD,GAJoB,EAKrB,CAAC,GAAD,EAAM,GAAN,EAAW,WAAX,CALqB,CAAvB;AAQA;;AAEG;;AACH,MAAM,cAAc,GAAG,KAAK,CAAC,WAAN,CACrB,UAAC,EAAD,EAAuC;;;AACrC,QAAM,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,QAAM,UAAU,GAAG,QAAQ,GAAG,aAAc,CAAC,MAAlB,GAA2B,aAAc,CAAC,KAArE;AACA,QAAI,QAAJ;;AAEA,QAAI,QAAJ,EAAc;AACZ,MAAA,QAAQ,GAAG,aAAc,CAAC,MAA1B;AACD,KAFD,MAEO,IAAI,GAAG,KAAK,KAAZ,EAAmB;AACxB,MAAA,QAAQ,GAAG,aAAc,CAAC,KAA1B;AACD,KAFM,MAEA;AACL,MAAA,QAAQ,GAAG,aAAc,CAAC,IAA1B;AACD;;AAED,QAAM,UAAU,GAAG,CAAC,GAAG,GAAG,GAAP,IAAc,IAAjC;AACA,QAAM,UAAU,GAAG,UAAU,GAAG,UAAhC;AACA,QAAM,aAAa,GAAG,QAAQ,GAAG,EAAE,CAAC,OAAN,GAAgB,EAAE,CAAC,OAAjD;AACA,QAAM,QAAQ,GAAG,GAAG,KAAK,KAAR,IAAiB,QAAjB,GAA4B,QAAQ,GAAG,aAAvC,GAAuD,aAAa,GAAG,QAAxF;AAEA,WAAO,QAAQ,GAAG,UAAlB;AACD,GApBoB,EAqBrB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,IAAhB,EAAsB,QAAtB,CArBqB,CAAvB;;AAwBA,MAAM,aAAa,GAAG,UAAC,EAAD,EAAwC;AAC5D,IAAA,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,MAAH,CAAU,KAAX,CAAP,EAA0B,EAA1B,CAAd;AACD,GAFD;;AAIA,MAAM,aAAa,GAAG,KAAK,CAAC,WAAN,CACpB,UAAC,EAAD,EAAuC;AACrC,QAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,cAAc,CAAC,EAAD,CAA5C;AACA,QAAM,mBAAmB,GAAG,IAAI,CAAC,KAAL,CAAW,QAAQ,GAAG,IAAtB,IAA8B,IAA1D;AAEA,IAAA,mBAAmB,CAAC,KAAK,CAAC,QAAD,EAAW,GAAX,EAAgB,GAAhB,CAAN,CAAnB;AACA,IAAA,WAAW,CAAC,mBAAD,EAAsB,EAAtB,CAAX;AACD,GAPmB,EAQpB,CAAC,cAAD,EAAiB,GAAjB,EAAsB,GAAtB,EAA2B,IAA3B,EAAiC,WAAjC,CARoB,CAAtB;AAWA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAN,CAClB,UAAC,EAAD,EAAuC;AACrC,IAAA,WAAW,CAAC,OAAZ,CAAoB,OAApB,CAA4B,UAAA,OAAA,EAAO;AAAI,aAAA,OAAA,EAAA;AAAS,KAAhD;AACA,IAAA,WAAW,CAAC,OAAZ,GAAsB,EAAtB;AACA,IAAA,iBAAiB,GAHoB,CAIrC;;AACA,IAAA,mBAAmB,CAAC,SAAD,CAAnB;AACA,IAAA,QAAQ,CAAC,OAAT,CAAkB,KAAlB;AACD,GARiB,EASlB,CAAC,iBAAD,CATkB,CAApB;AAYA,MAAM,aAAa,GAAG,KAAK,CAAC,WAAN,CACpB,UAAC,EAAD,EAAuC;;;AAC7B,QAAA,SAAS,GAAK,EAAE,CAAP,SAAT;AACR,QAAM,MAAM,GAAG,EAAE,CAAC,MAAlB;AAEA,KAAA,EAAA,GAAA,MAAM,CAAC,iBAAP,MAAwB,IAAxB,IAAwB,EAAA,KAAA,KAAA,CAAxB,GAAwB,KAAA,CAAxB,GAAwB,EAAA,CAAA,IAAA,CAAxB,MAAwB,EAAG,SAAH,CAAxB;AAEA,IAAA,iBAAiB;AACjB,IAAA,qBAAqB,KAAA,IAArB,IAAA,qBAAqB,KAAA,KAAA,CAArB,GAAqB,KAAA,CAArB,GAAA,qBAAqB,CAAG,EAAH,CAArB;AAEA,IAAA,WAAW,CAAC,OAAZ,CAAoB,IAApB,CAAyB,EAAE,CAAC,MAAD,EAAS,aAAT,EAAwB,aAAxB,CAA3B,EAAmE,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,WAAtB,CAArE,EAAyG,YAAA;;;AACvG,OAAA,EAAA,GAAA,MAAM,CAAC,qBAAP,MAA4B,IAA5B,IAA4B,EAAA,KAAA,KAAA,CAA5B,GAA4B,KAAA,CAA5B,GAA4B,EAAA,CAAA,IAAA,CAA5B,MAA4B,EAAG,SAAH,CAA5B;AACD,KAFD;AAIA,IAAA,aAAa,CAAC,EAAD,CAAb;AACD,GAfmB,EAgBpB,CAAC,iBAAD,EAAoB,qBAApB,EAA2C,aAA3C,EAA0D,WAA1D,CAhBoB,CAAtB;AAmBA,MAAM,SAAS,GAAG,KAAK,CAAC,WAAN,CAChB,UAAC,EAAD,EAAwC;AACtC,QAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,GAAJ,EAAS,GAAT,CAAnC;AACA,IAAA,iBAAiB;AACjB,IAAA,iBAAiB,KAAA,IAAjB,IAAA,iBAAiB,KAAA,KAAA,CAAjB,GAAiB,KAAA,CAAjB,GAAA,iBAAiB,CAAG,EAAH,CAAjB;;AAEA,QAAI,EAAE,CAAC,QAAP,EAAiB;AACf,UAAI,aAAa,KAAK,WAAlB,IAAiC,aAAa,KAAK,WAAvD,EAAoE;AAClE,QAAA,cAAc,CAAC,YAAa,GAAG,YAAY,GAAG,EAAhC,EAAoC,EAApC,CAAd;AACA;AACD,OAHD,MAGO,IAAI,aAAa,KAAK,SAAlB,IAA+B,aAAa,KAAK,YAArD,EAAmE;AACxE,QAAA,cAAc,CAAC,YAAa,GAAG,YAAY,GAAG,EAAhC,EAAoC,EAApC,CAAd;AACA;AACD;AACF,KARD,MAQO,IAAI,aAAa,KAAK,WAAlB,IAAiC,aAAa,KAAK,WAAvD,EAAoE;AACzE,MAAA,cAAc,CAAC,YAAa,GAAG,YAAjB,EAA+B,EAA/B,CAAd;AACA;AACD,KAHM,MAGA,IAAI,aAAa,KAAK,SAAlB,IAA+B,aAAa,KAAK,YAArD,EAAmE;AACxE,MAAA,cAAc,CAAC,YAAa,GAAG,YAAjB,EAA+B,EAA/B,CAAd;AACA;AACD,KAHM,MAGA;AACL,cAAQ,aAAR;AACE,aAAK,UAAL;AACE,UAAA,cAAc,CAAC,YAAa,GAAG,YAAY,GAAG,EAAhC,EAAoC,EAApC,CAAd;AACA;;AACF,aAAK,QAAL;AACE,UAAA,cAAc,CAAC,YAAa,GAAG,YAAY,GAAG,EAAhC,EAAoC,EAApC,CAAd;AACA;;AACF,aAAK,MAAL;AACE,UAAA,cAAc,CAAC,GAAD,EAAM,EAAN,CAAd;AACA;;AACF,aAAK,KAAL;AACE,UAAA,cAAc,CAAC,GAAD,EAAM,EAAN,CAAd;AACA;AAZJ;AAcD;AACF,GApCe,EAqChB,CAAC,YAAD,EAAe,GAAf,EAAoB,iBAApB,EAAuC,YAAvC,EAAqD,GAArD,EAA0D,GAA1D,EAA+D,iBAA/D,EAAkF,cAAlF,CArCgB,CAAlB;;AAwCA,MAAM,oBAAoB,GAAG,YAAA;AAC3B,QAAI,MAAM,KAAK,SAAX,IAAwB,MAAM,MAAM,GAAG,IAAI,GAAb,CAAlC,EAAqD;AACnD,UAAI,QAAJ,EAAc;AACZ,eAAO,aAAa,GAAG,YAAhB,GAA+B,mBAA/B,GAAqD,mBAA5D;AACD,OAFD,MAEO;AACL,eAAO,CAAC,GAAG,KAAK,KAAR,GAAgB,YAAY,GAAG,aAA/B,GAA+C,YAAY,GAAG,aAA/D,IACH,mBADG,GAEH,mBAFJ;AAGD;AACF;;AACD,WAAO,MAAP;AACD,GAXD;;AAaA,EAAA,iBAAA,CAAA,UAAA,CAAW,YAAA;AACT,IAAA,WAAW,CAAC,OAAZ,CAAoB,OAApB,CAA4B,UAAA,OAAA,EAAO;AAAI,aAAA,OAAA,EAAA;AAAS,KAAhD;AACA,IAAA,WAAW,CAAC,OAAZ,GAAsB,EAAtB;AACD,GAHD,EA3L+C,CAgM/C;;AACA,MAAM,aAAa,GAAG,MAAtB;AAEA,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,KAAK,SAArB,GAAiC,gBAAjC,GAAoD,YAArD,EAAmE,GAAnE,EAAwE,GAAxE,CAA/B;AAEA,MAAM,aAAa,GAAG,KAAK,CAAC,OAAN,CAAc,YAAA;AAClC,WAAO,MAAM,KAAK,SAAX,GAAuB,UAAU,CAAC,MAAD,EAAS,GAAT,EAAc,GAAd,CAAjC,GAAsD,CAA7D;AACD,GAFqB,EAEnB,CAAC,GAAD,EAAM,GAAN,EAAW,MAAX,CAFmB,CAAtB;AAIA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAN,CAAc,YAAA;AAC/B,QAAM,UAAU,GAAa,EAA7B,CAD+B,CAG/B;;AACA,QAAI,OAAO,KAAP,KAAiB,SAAjB,IAA8B,KAAK,KAAK,IAA5C,EAAkD;AAChD,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAP,IAAc,IAAd,GAAqB,CAAzC,EAA4C,CAAC,EAA7C,EAAiD;AAC/C,QAAA,UAAU,CAAC,IAAX,CAAgB,UAAU,CAAC,GAAG,GAAG,IAAI,GAAG,CAAd,EAAiB,GAAjB,EAAsB,GAAtB,CAA1B;AACD;AACF,KAJD,MAIO,IAAI,KAAK,CAAC,OAAN,CAAc,KAAd,KAAwB,KAAK,CAAC,MAAN,GAAe,CAA3C,EAA8C;AACnD;AACA,aAAO,KAAK,CAAC,GAAN,CAAU,UAAA,SAAA,EAAS;AAAI,eAAA,UAAU,CAAC,GAAG,GAAG,SAAP,EAAkB,GAAlB,EAAV,GAAU,CAAV;AAAqC,OAA5D,CAAP;AACD;;AAED,WAAO,UAAP;AACD,GAdkB,EAchB,CAAC,KAAD,EAAQ,GAAR,EAAa,GAAb,EAAkB,IAAlB,CAdgB,CAAnB;AAgBA;;AAEG;;AACH,MAAM,WAAW,GAAG,KAAK,CAAC,OAAN,CAAc,YAAA;AAChC,QAAM,UAAU,GAAa,UAA7B;AACA,QAAM,MAAM,GAAa,EAAzB,CAFgC,CAIhC;;AACA,QAAI,UAAU,CAAC,MAAX,GAAoB,CAAxB,EAA2B;AACzB,MAAA,MAAM,CAAC,IAAP,CAAY,UAAU,CAAC,CAAD,CAAV,GAAgB,IAA5B;AACA,UAAI,WAAW,GAAG,UAAU,CAAC,CAAD,CAA5B;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,UAAU,CAAC,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AAC1C,QAAA,MAAM,CAAC,IAAP,CAAY,UAAU,CAAC,CAAD,CAAV,GAAgB,WAAhB,GAA8B,IAA1C;AACA,QAAA,WAAW,GAAG,UAAU,CAAC,CAAD,CAAxB;AACD;AACF;;AAED,WAAO,MAAP;AACD,GAfmB,EAejB,CAAC,UAAD,CAfiB,CAApB;;AAiBA,MAAM,kBAAkB,GAAA,OAAA,CAAA,QAAA,CAAA;AACtB,IAAA,SAAS,EAAE,QAAQ,GACf,gBAAc,YAAd,GAA0B,IADX,GAEf,iBAAc,GAAG,KAAK,KAAR,GAAgB,CAAC,YAAjB,GAAgC,YAA9C,IAA0D,IAHxC;AAItB,IAAA,UAAU,EAAE,aAAa,GAAG,2BAAyB,aAA5B,GAA8C;AAJjD,GAAA,EAKnB,KAAK,CAAC,YAAN,CAAmB,KALA,CAAxB;;AAQA,MAAM,WAAW,GAAA,OAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CACd,QAAQ,GAAG,KAAH,GAAW,GAAG,KAAK,KAAR,GAAgB,OAAhB,GAA0B,MAD/B,CAAA,GAEb,MAAM,KAAK,SAAX,GAA0B,IAAI,CAAC,GAAL,CAAS,YAAT,EAAuB,aAAvB,IAAqC,GAA/D,GAAqE,CAFxD,EAEyD,EAAA,CACvE,QAAQ,GAAG,QAAH,GAAc,OADiD,CAAA,GAEtE,MAAM,KAAK,SAAX,GACO,IAAI,CAAC,GAAL,CAAS,aAAa,GAAG,YAAzB,EAAuC,YAAY,GAAG,aAAtD,IAAoE,GAD3E,GAEO,YAAY,GAAA,GANN,EAOf,EAAA,CAAA,YAAA,GAAc,oBAAoB,EAPnB,EAQf;AACA,EAAA,EAAA,CAAA,UAAA,GAAY,aAAa,GACrB,CAAG,QAAQ,GAAG,QAAH,GAAc,OAAzB,IAAgC,eAAhC,GAAgD,aAAhD,IACE,MAAM,KAAK,SAAX,GACI,OAAO,QAAP,GACE,KADF,GAEE,GAAG,KAAK,KAAR,GACA,OADA,GAEA,SAAS,cAAT,GAA0B,aALhC,GAMI,EAPN,CADqB,GAUrB,MAnBW,EAmBL,EAnBK,GAoBZ,KAAK,CAAC,KAAN,CAAY,KApBA,CAAjB;;AAuBA,MAAM,kBAAkB,GAAG,KAAK,GAC7B,OAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CACI,QAAQ,GAAG,kBAAH,GAAwB,qBADpC,CAAA,GAC4D,WAAW,CAAC,IAAZ,CAAiB,EAAjB,CAD5D,EACgF,EADhF,GAEM,KAAK,CAAC,YAAN,CAAmB,KAFzB,CAD6B,GAK5B,EALJ;AAOA;;AAEG;;AACH,MAAM,WAAW,GAAG,YAAA;AAClB,QAAM,YAAY,GAAG,WAArB;AACA,QAAM,UAAU,GAAG,UAAnB;AACA,QAAM,aAAa,GAAkB,EAArC;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,YAAY,CAAC,MAAjC,EAAyC,CAAC,EAA1C,EAA8C;AAC5C,MAAA,aAAa,CAAC,IAAd,CACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,QAAA,SAAS,EAAE,sBAAhB;AAAwC,QAAA,GAAG,EAAE,uBAAqB;AAAlE,OAAA,EACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AACE,QAAA,SAAS,EAAE,mBAAA,CAAA,YAAA,CACT,OAAA,CAAA,aADS,EAER,UAAU,CAAC,CAAD,CAAV,KAAkB,CAAlB,IAAuB,kBAAxB,IAAgD,UAAU,CAAC,CAAD,CAAV,KAAkB,GAAlB,IAAyB,iBAAzE,IAA+F,EAFtF,CADb;AAKE,QAAA,GAAG,EAAE,UAAQ;AALf,OAAA,CADF,CADF;AAWD;;AAED,WAAO,aAAP;AACD,GAnBD,CAtR+C,CA2S/C;;;AACA,MAAI,CAAC,QAAL,EAAe;AACb,IAAA,KAAK,CAAC,IAAN,CAAW,aAAX,GAA2B,aAA3B;AACA,IAAA,KAAK,CAAC,IAAN,CAAW,SAAX,GAAuB,SAAvB;AACD,GA/S8C,CAiT/C;;;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,KAAZ,GAAoB,WAApB,CAlT+C,CAoT/C;;AACA,EAAA,KAAK,CAAC,YAAN,CAAmB,QAAnB,GAA8B,KAAK,GAAG,WAAW,EAAd,GAAmB,SAAtD;AACA,EAAA,KAAK,CAAC,YAAN,CAAmB,KAAnB,GAA2B,kBAA3B,CAtT+C,CAwT/C;;AACA,EAAA,KAAK,CAAC,YAAN,CAAmB,KAAnB,GAA2B,kBAA3B,CAzT+C,CA2T/C;;AACA,EAAA,KAAK,CAAC,UAAN,CAAiB,GAAjB,GAAuB,OAAvB,CA5T+C,CA8T/C;;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,GAAkB,iBAAA,CAAA,aAAA,CAAc,KAAK,CAAC,KAAN,CAAY,GAA1B,EAA+B,QAA/B,CAAlB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,KAAZ,GAAoB,YAApB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,GAAkB,GAAlB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,GAAkB,GAAlB;AACA,EAAA,aAAa,KAAK,KAAK,CAAC,KAAN,CAAY,gBAAZ,IAAgC,aAAa,CAAC,YAAD,CAAlD,CAAb;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,QAAZ,GAAuB,QAAvB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,IAAZ,GAAmB,IAAnB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,QAAZ,GAAuB,aAAvB;AAEA,SAAO,KAAP;AACD,CAzUM;;AAAM,OAAA,CAAA,cAAA,GAAc,cAAd","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":";;;;;;;;;AAAA,IAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,IAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;;AACA,IAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AAOA,IAAA,OAAA,gBAAA,OAAA,CAAA,mBAAA,CAAA;;AAYO,IAAM,cAAc,GAAG,UAAC,KAAD,EAAmB;;;AAE7C,MAAA,KAAK,GAYH,KAAK,CAZF,KAAL;AAAA,MACA,EAAA,GAWE,KAAK,CAXS,YADhB;AAAA,MACA,YAAY,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAH,GAAI,EADhB;AAAA,MAEA,EAAA,GAUE,KAAK,CAVA,GAFP;AAAA,MAEA,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAH,GAAI,EAFP;AAAA,MAGA,EAAA,GASE,KAAK,CATE,GAHT;AAAA,MAGA,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,GAAH,GAAM,EAHT;AAAA,MAIA,EAAA,GAQE,KAAK,CARC,IAJR;AAAA,MAIA,IAAI,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,CAAH,GAAI,EAJR;AAAA,MAKA,EAAA,GAOE,KAAK,CAPuB,YAL9B;AAAA,MAKA,YAAY,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAK,CAAC,IAAN,IAAc,CAAjB,GAAkB,EAL9B;AAAA,MAMA,EAAA,GAME,KAAK,CANS,QANhB;AAAA,MAMA,QAAQ,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAH,GAAQ,EANhB;AAAA,MAOA,aAAa,GAKX,KAAK,CALM,aAPb;AAAA,MAQA,QAAQ,GAIN,KAAK,CAJC,QARR;AAAA,MASA,KAAK,GAGH,KAAK,CAHF,KATL;AAAA,MAUA,EAAA,GAEE,KAAK,CAFS,QAVhB;AAAA,MAUA,QAAQ,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAH,GAAQ,EAVhB;AAAA,MAWA,MAAM,GACJ,KAAK,CADD,MAXN;AAaI,MAAA,EAAA,GAAyE,KAAK,CAAC,IAA/E;AAAA,MAAiB,qBAAqB,GAAA,EAAA,CAAA,aAAtC;AAAA,MAAmD,iBAAiB,GAAA,EAAA,CAAA,SAApE;AAEE,MAAA,GAAG,GAAK,uBAAA,CAAA,SAAA,GAAL,GAAH;;AAEF,MAAA,EAAA,GAA+E,iBAAA,CAAA,UAAA,CAAW,KAAX,CAA/E;AAAA,MAAC,aAAa,GAAA,EAAA,CAAA,CAAA,CAAd;AAAA,MAAgB,EAAA,GAAA,EAAA,CAAA,CAAA,CAAhB;AAAA,MAA2B,iBAAiB,GAAA,EAAA,CAAA,OAA5C;AAAA,MAAwD,iBAAiB,GAAA,EAAA,CAAA,QAAzE;;AACA,MAAA,EAAA,GAA0C,KAAK,CAAC,QAAN,CAAmC,KAAK,GAAG,KAAH,GAAW,YAAnD,CAA1C;AAAA,MAAC,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAjB;AAAA,MAAmB,mBAAmB,GAAA,EAAA,CAAA,CAAA,CAAtC;;AACA,MAAA,EAAA,GAAkC,iBAAA,CAAA,oBAAA,CAAqB;AAC3D,IAAA,KAAK,EAAE,KAAK,IAAI,OAAA,CAAA,KAAA,CAAM,KAAN,EAAa,GAAb,EAAkB,GAAlB,CAD2C;AAE3D,IAAA,YAAY,EAAE,OAAA,CAAA,KAAA,CAAM,YAAN,EAAoB,GAApB,EAAyB,GAAzB,CAF6C;AAG3D,IAAA,YAAY,EAAE;AAH6C,GAArB,CAAlC;AAAA,MAAC,YAAY,GAAA,EAAA,CAAA,CAAA,CAAb;AAAA,MAAe,eAAe,GAAA,EAAA,CAAA,CAAA,CAA9B;;AAMN,MAAM,OAAO,GAAG,KAAK,CAAC,MAAN,CAA6B,IAA7B,CAAhB;AACA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAN,CAA+B,IAA/B,CAAjB;AACA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAN,CAA6B,EAA7B,CAApB;AAEA;;AAEG;;AACH,MAAM,WAAW,GAAG,iBAAA,CAAA,gBAAA,CAClB,UAAC,aAAD,EAAwB,EAAxB,EAAoG;AAClG,QAAM,YAAY,GAAG,OAAA,CAAA,KAAA,CAAM,aAAN,EAAqB,GAArB,EAA0B,GAA1B,CAArB;;AAEA,QAAI,YAAY,KAAK,GAAjB,IAAwB,YAAY,KAAK,GAA7C,EAAkD;AAChD,MAAA,EAAE,CAAC,eAAH;;AACA,UAAI,EAAE,CAAC,IAAH,KAAY,SAAhB,EAA2B;AACzB,QAAA,EAAE,CAAC,cAAH;AACD;AACF;;AAED,IAAA,QAAQ,KAAA,IAAR,IAAA,QAAQ,KAAA,KAAA,CAAR,GAAQ,KAAA,CAAR,GAAA,QAAQ,CAAG,EAAH,EAAO;AAAE,MAAA,KAAK,EAAE;AAAT,KAAP,CAAR;AACA,IAAA,eAAe,CAAC,YAAD,CAAf;AACD,GAbiB,CAApB;AAgBA;;AAEG;;AACH,MAAM,cAAc,GAAG,KAAK,CAAC,WAAN,CACrB,UAAC,aAAD,EAAwB,EAAxB,EAA0B;AACxB,IAAA,mBAAmB,CAAC,OAAA,CAAA,KAAA,CAAM,aAAN,EAAqB,GAArB,EAA0B,GAA1B,CAAD,CAAnB;AACA,IAAA,WAAW,CAAC,aAAD,EAAgB,EAAhB,CAAX;AACD,GAJoB,EAKrB,CAAC,GAAD,EAAM,GAAN,EAAW,WAAX,CALqB,CAAvB;;AAQA,MAAM,aAAa,GAAG,UAAC,EAAD,EAAwC;AAC5D,IAAA,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,MAAH,CAAU,KAAX,CAAP,EAA0B,EAA1B,CAAd;AACD,GAFD;;AAIA,MAAM,aAAa,GAAG,KAAK,CAAC,WAAN,CACpB,UAAC,EAAD,EAAuC;AACrC,QAAM,QAAQ,GAAG,OAAA,CAAA,cAAA,CAAe,EAAf,EAAmB,OAAnB,EAA4B,GAA5B,EAAiC,GAAjC,EAAsC,IAAtC,EAA4C,QAA5C,EAAsD,GAAtD,CAAjB;AACA,QAAM,mBAAmB,GAAG,IAAI,CAAC,KAAL,CAAW,QAAQ,GAAG,IAAtB,IAA8B,IAA1D;AAEA,IAAA,mBAAmB,CAAC,QAAD,CAAnB;AACA,IAAA,WAAW,CAAC,mBAAD,EAAsB,EAAtB,CAAX;AACD,GAPmB,EAQpB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,IAAhB,EAAsB,WAAtB,EAAmC,QAAnC,CARoB,CAAtB;AAWA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAN,CAClB,UAAC,EAAD,EAAuC;AACrC,IAAA,WAAW,CAAC,OAAZ,CAAoB,OAApB,CAA4B,UAAA,OAAA,EAAO;AAAI,aAAA,OAAA,EAAA;AAAS,KAAhD;AACA,IAAA,WAAW,CAAC,OAAZ,GAAsB,EAAtB;AACA,IAAA,iBAAiB,GAHoB,CAIrC;;AACA,IAAA,mBAAmB,CAAC,SAAD,CAAnB;AACA,IAAA,QAAQ,CAAC,OAAT,CAAkB,KAAlB;AACD,GARiB,EASlB,CAAC,iBAAD,CATkB,CAApB;AAYA,MAAM,aAAa,GAAG,KAAK,CAAC,WAAN,CACpB,UAAC,EAAD,EAAuC;;;AAC7B,QAAA,SAAS,GAAK,EAAE,CAAP,SAAT;AACR,QAAM,MAAM,GAAG,EAAE,CAAC,MAAlB;AAEA,KAAA,EAAA,GAAA,MAAM,CAAC,iBAAP,MAAwB,IAAxB,IAAwB,EAAA,KAAA,KAAA,CAAxB,GAAwB,KAAA,CAAxB,GAAwB,EAAA,CAAA,IAAA,CAAxB,MAAwB,EAAG,SAAH,CAAxB;AAEA,IAAA,iBAAiB;AACjB,IAAA,qBAAqB,KAAA,IAArB,IAAA,qBAAqB,KAAA,KAAA,CAArB,GAAqB,KAAA,CAArB,GAAA,qBAAqB,CAAG,EAAH,CAArB;AAEA,IAAA,WAAW,CAAC,OAAZ,CAAoB,IAApB,CAAyB,OAAA,CAAA,EAAA,CAAG,MAAH,EAAW,aAAX,EAA0B,aAA1B,CAAzB,EAAmE,OAAA,CAAA,EAAA,CAAG,MAAH,EAAW,WAAX,EAAwB,WAAxB,CAAnE,EAAyG,YAAA;;;AACvG,OAAA,EAAA,GAAA,MAAM,CAAC,qBAAP,MAA4B,IAA5B,IAA4B,EAAA,KAAA,KAAA,CAA5B,GAA4B,KAAA,CAA5B,GAA4B,EAAA,CAAA,IAAA,CAA5B,MAA4B,EAAG,SAAH,CAA5B;AACD,KAFD;AAIA,IAAA,aAAa,CAAC,EAAD,CAAb;AACD,GAfmB,EAgBpB,CAAC,iBAAD,EAAoB,qBAApB,EAA2C,aAA3C,EAA0D,WAA1D,CAhBoB,CAAtB;AAmBA,MAAM,SAAS,GAAG,KAAK,CAAC,WAAN,CAChB,UAAC,EAAD,EAAwC;AACtC,IAAA,iBAAiB;AACjB,IAAA,iBAAiB,KAAA,IAAjB,IAAA,iBAAiB,KAAA,KAAA,CAAjB,GAAiB,KAAA,CAAjB,GAAA,iBAAiB,CAAG,EAAH,CAAjB;AACA,QAAM,aAAa,GAAG,OAAA,CAAA,eAAA,CAAgB,EAAhB,EAAoB,YAApB,EAAkC,GAAlC,EAAuC,GAAvC,EAA4C,GAA5C,EAAiD,YAAjD,CAAtB;;AAEA,QAAI,YAAY,KAAK,aAArB,EAAoC;AAClC,MAAA,cAAc,CAAC,aAAD,EAAgB,EAAhB,CAAd;AACD;AACF,GATe,EAUhB,CAAC,YAAD,EAAe,GAAf,EAAoB,iBAApB,EAAuC,YAAvC,EAAqD,GAArD,EAA0D,GAA1D,EAA+D,iBAA/D,EAAkF,cAAlF,CAVgB,CAAlB;;AAaA,MAAM,oBAAoB,GAAG,YAAA;AAC3B,QAAI,MAAM,KAAK,SAAX,IAAwB,MAAM,MAAM,GAAG,IAAI,GAAb,CAAlC,EAAqD;AACnD,UAAI,QAAJ,EAAc;AACZ,eAAO,aAAa,GAAG,YAAhB,GAA+B,mBAA/B,GAAqD,mBAA5D;AACD,OAFD,MAEO;AACL,eAAO,CAAC,GAAG,KAAK,KAAR,GAAgB,YAAY,GAAG,aAA/B,GAA+C,YAAY,GAAG,aAA/D,IACH,mBADG,GAEH,mBAFJ;AAGD;AACF;;AACD,WAAO,MAAP;AACD,GAXD;;AAaA,EAAA,iBAAA,CAAA,UAAA,CAAW,YAAA;AACT,IAAA,WAAW,CAAC,OAAZ,CAAoB,OAApB,CAA4B,UAAA,OAAA,EAAO;AAAI,aAAA,OAAA,EAAA;AAAS,KAAhD;AACA,IAAA,WAAW,CAAC,OAAZ,GAAsB,EAAtB;AACD,GAHD,EArI+C,CA0I/C;;AACA,MAAM,aAAa,GAAG,MAAtB;AAEA,MAAM,YAAY,GAAG,OAAA,CAAA,UAAA,CAAW,gBAAgB,KAAK,SAArB,GAAiC,gBAAjC,GAAoD,YAA/D,EAA6E,GAA7E,EAAkF,GAAlF,CAArB;AAEA,MAAM,aAAa,GAAG,KAAK,CAAC,OAAN,CAAc,YAAA;AAClC,WAAO,MAAM,KAAK,SAAX,GAAuB,OAAA,CAAA,UAAA,CAAW,MAAX,EAAmB,GAAnB,EAAwB,GAAxB,CAAvB,GAAsD,CAA7D;AACD,GAFqB,EAEnB,CAAC,GAAD,EAAM,GAAN,EAAW,MAAX,CAFmB,CAAtB;AAIA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAN,CAAc,YAAA;AAAgB,WAAA,OAAA,CAAA,YAAA,CAAa,KAAb,EAAoB,GAApB,EAAyB,GAAzB,EAAA,IAAA,CAAA;AAAmC,GAAjE,EAAmE,CAAC,KAAD,EAAQ,GAAR,EAAa,GAAb,EAAkB,IAAlB,CAAnE,CAAnB;AAEA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAN,CAAc,YAAA;AAAgB,WAAA,OAAA,CAAA,cAAA,CAAA,UAAA,CAAA;AAA0B,GAAxD,EAA0D,CAAC,UAAD,CAA1D,CAApB;;AAEA,MAAM,kBAAkB,GAAA,OAAA,CAAA,QAAA,CAAA;AACtB,IAAA,SAAS,EAAE,QAAQ,GACf,gBAAc,YAAd,GAA0B,IADX,GAEf,iBAAc,GAAG,KAAK,KAAR,GAAgB,CAAC,YAAjB,GAAgC,YAA9C,IAA0D,IAHxC;AAItB,IAAA,UAAU,EAAE,aAAa,GAAG,2BAAyB,aAA5B,GAA8C;AAJjD,GAAA,EAKnB,KAAK,CAAC,YAAN,CAAmB,KALA,CAAxB;;AAQA,MAAM,WAAW,GAAA,OAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CACd,QAAQ,GAAG,KAAH,GAAW,GAAG,KAAK,KAAR,GAAgB,OAAhB,GAA0B,MAD/B,CAAA,GAEb,MAAM,KAAK,SAAX,GAA0B,IAAI,CAAC,GAAL,CAAS,YAAT,EAAuB,aAAvB,IAAqC,GAA/D,GAAqE,CAFxD,EAEyD,EAAA,CACvE,QAAQ,GAAG,QAAH,GAAc,OADiD,CAAA,GAEtE,MAAM,KAAK,SAAX,GACO,IAAI,CAAC,GAAL,CAAS,aAAa,GAAG,YAAzB,EAAuC,YAAY,GAAG,aAAtD,IAAoE,GAD3E,GAEO,YAAY,GAAA,GANN,EAOf,EAAA,CAAA,YAAA,GAAc,oBAAoB,EAPnB,EAQf;AACA,EAAA,EAAA,CAAA,UAAA,GAAY,aAAa,GACrB,CAAG,QAAQ,GAAG,QAAH,GAAc,OAAzB,IAAgC,eAAhC,GAAgD,aAAhD,IACE,MAAM,KAAK,SAAX,GACI,OAAO,QAAP,GACE,KADF,GAEE,GAAG,KAAK,KAAR,GACA,OADA,GAEA,SAAS,cAAT,GAA0B,aALhC,GAMI,EAPN,CADqB,GAUrB,MAnBW,EAmBL,EAnBK,GAoBZ,KAAK,CAAC,KAAN,CAAY,KApBA,CAAjB;;AAuBA,MAAM,kBAAkB,GAAG,KAAK,GAC7B,OAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CACI,QAAQ,GAAG,kBAAH,GAAwB,qBADpC,CAAA,GAC4D,WAAW,CAAC,IAAZ,CAAiB,EAAjB,CAD5D,EACgF,EADhF,GAEM,KAAK,CAAC,YAAN,CAAmB,KAFzB,CAD6B,GAK5B,EALJ,CAtL+C,CA6L/C;;AACA,MAAI,CAAC,QAAL,EAAe;AACb,IAAA,KAAK,CAAC,IAAN,CAAW,aAAX,GAA2B,aAA3B;AACA,IAAA,KAAK,CAAC,IAAN,CAAW,SAAX,GAAuB,SAAvB;AACD,GAjM8C,CAmM/C;;;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,KAAZ,GAAoB,WAApB,CApM+C,CAsM/C;;AACA,MAAI,KAAJ,EAAW;AACT,IAAA,KAAK,CAAC,YAAN,CAAmB,QAAnB,GAA8B,OAAA,CAAA,WAAA,CAAY,UAAZ,CAA9B;AACA,IAAA,KAAK,CAAC,YAAN,CAAmB,KAAnB,GAA2B,kBAA3B;AACD,GA1M8C,CA4M/C;;;AACA,EAAA,KAAK,CAAC,YAAN,CAAmB,KAAnB,GAA2B,kBAA3B,CA7M+C,CA+M/C;;AACA,EAAA,KAAK,CAAC,UAAN,CAAiB,GAAjB,GAAuB,OAAvB,CAhN+C,CAkN/C;;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,GAAkB,iBAAA,CAAA,aAAA,CAAc,KAAK,CAAC,KAAN,CAAY,GAA1B,EAA+B,QAA/B,CAAlB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,KAAZ,GAAoB,YAApB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,GAAkB,GAAlB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,GAAkB,GAAlB;AACA,EAAA,aAAa,KAAK,KAAK,CAAC,KAAN,CAAY,gBAAZ,IAAgC,aAAa,CAAC,YAAD,CAAlD,CAAb;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,QAAZ,GAAuB,QAAvB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,IAAZ,GAAmB,IAAnB;AACA,EAAA,KAAK,CAAC,KAAN,CAAY,QAAZ,GAAuB,aAAvB;AAEA,SAAO,KAAP;AACD,CA7NM;;AAAM,OAAA,CAAA,cAAA,GAAc,cAAd","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 useSliderState_1 = /*#__PURE__*/require("./useSliderState");
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