@tamagui/slider 2.7.7 → 3.0.0-beta.637.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/cjs/Slider.cjs +455 -512
  2. package/dist/cjs/Slider.native.cjs +469 -0
  3. package/dist/cjs/Slider.native.js +424 -498
  4. package/dist/cjs/Slider.native.js.map +1 -1
  5. package/dist/cjs/SliderImpl.cjs +111 -128
  6. package/dist/cjs/SliderImpl.native.cjs +154 -0
  7. package/dist/cjs/SliderImpl.native.js +127 -143
  8. package/dist/cjs/SliderImpl.native.js.map +1 -1
  9. package/dist/cjs/constants.cjs +59 -45
  10. package/dist/cjs/constants.native.cjs +79 -0
  11. package/dist/cjs/constants.native.js +59 -44
  12. package/dist/cjs/constants.native.js.map +1 -1
  13. package/dist/cjs/helpers.cjs +59 -60
  14. package/dist/cjs/helpers.native.cjs +99 -0
  15. package/dist/cjs/helpers.native.js +66 -68
  16. package/dist/cjs/helpers.native.js.map +1 -1
  17. package/dist/cjs/index.cjs +16 -17
  18. package/dist/cjs/index.native.cjs +33 -0
  19. package/dist/cjs/index.native.js +16 -16
  20. package/dist/cjs/index.native.js.map +1 -1
  21. package/dist/cjs/types.cjs +10 -11
  22. package/dist/cjs/types.native.cjs +19 -0
  23. package/dist/cjs/types.native.js +10 -10
  24. package/dist/cjs/types.native.js.map +1 -1
  25. package/dist/esm/Slider.mjs +427 -474
  26. package/dist/esm/Slider.mjs.map +1 -1
  27. package/dist/esm/Slider.native.js +396 -463
  28. package/dist/esm/Slider.native.js.map +1 -1
  29. package/dist/esm/SliderImpl.mjs +92 -102
  30. package/dist/esm/SliderImpl.mjs.map +1 -1
  31. package/dist/esm/SliderImpl.native.js +109 -119
  32. package/dist/esm/SliderImpl.native.js.map +1 -1
  33. package/dist/esm/constants.mjs +38 -21
  34. package/dist/esm/constants.mjs.map +1 -1
  35. package/dist/esm/constants.native.js +38 -21
  36. package/dist/esm/constants.native.js.map +1 -1
  37. package/dist/esm/helpers.mjs +37 -36
  38. package/dist/esm/helpers.mjs.map +1 -1
  39. package/dist/esm/helpers.native.js +44 -45
  40. package/dist/esm/helpers.native.js.map +1 -1
  41. package/dist/esm/index.js +4 -3
  42. package/dist/esm/index.mjs +4 -3
  43. package/dist/esm/index.native.js +4 -3
  44. package/dist/esm/types.mjs +0 -2
  45. package/dist/esm/types.native.js +0 -2
  46. package/dist/jsx/Slider.mjs +427 -474
  47. package/dist/jsx/Slider.mjs.map +1 -1
  48. package/dist/jsx/Slider.native.cjs +469 -0
  49. package/dist/jsx/Slider.native.js +424 -498
  50. package/dist/jsx/Slider.native.js.map +1 -1
  51. package/dist/jsx/SliderImpl.mjs +92 -102
  52. package/dist/jsx/SliderImpl.mjs.map +1 -1
  53. package/dist/jsx/SliderImpl.native.cjs +154 -0
  54. package/dist/jsx/SliderImpl.native.js +127 -143
  55. package/dist/jsx/SliderImpl.native.js.map +1 -1
  56. package/dist/jsx/constants.mjs +38 -21
  57. package/dist/jsx/constants.mjs.map +1 -1
  58. package/dist/jsx/constants.native.cjs +79 -0
  59. package/dist/jsx/constants.native.js +59 -44
  60. package/dist/jsx/constants.native.js.map +1 -1
  61. package/dist/jsx/helpers.mjs +37 -36
  62. package/dist/jsx/helpers.mjs.map +1 -1
  63. package/dist/jsx/helpers.native.cjs +99 -0
  64. package/dist/jsx/helpers.native.js +66 -68
  65. package/dist/jsx/helpers.native.js.map +1 -1
  66. package/dist/jsx/index.js +4 -3
  67. package/dist/jsx/index.mjs +4 -3
  68. package/dist/jsx/index.native.cjs +33 -0
  69. package/dist/jsx/index.native.js +16 -16
  70. package/dist/jsx/index.native.js.map +1 -1
  71. package/dist/jsx/types.mjs +0 -2
  72. package/dist/jsx/types.native.cjs +19 -0
  73. package/dist/jsx/types.native.js +10 -10
  74. package/dist/jsx/types.native.js.map +1 -1
  75. package/package.json +15 -14
  76. package/src/Slider.tsx +126 -171
  77. package/src/SliderImpl.tsx +3 -2
  78. package/src/constants.tsx +16 -6
  79. package/src/types.ts +6 -4
  80. package/types/Slider.d.ts +218 -200
  81. package/types/Slider.d.ts.map +1 -1
  82. package/types/SliderImpl.d.ts +16 -5
  83. package/types/SliderImpl.d.ts.map +1 -1
  84. package/types/constants.d.ts +10 -10
  85. package/types/constants.d.ts.map +1 -1
  86. package/types/helpers.d.ts.map +1 -1
  87. package/types/types.d.ts +6 -4
  88. package/types/types.d.ts.map +1 -1
  89. package/dist/esm/index.js.map +0 -1
  90. package/dist/esm/index.mjs.map +0 -1
  91. package/dist/esm/index.native.js.map +0 -1
  92. package/dist/esm/types.mjs.map +0 -1
  93. package/dist/esm/types.native.js.map +0 -1
  94. package/dist/jsx/index.js.map +0 -1
  95. package/dist/jsx/index.mjs.map +0 -1
  96. package/dist/jsx/types.mjs.map +0 -1
@@ -0,0 +1,469 @@
1
+ "use strict";
2
+
3
+
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = (target, all) => {
11
+ for (var name in all) __defProp(target, name, {
12
+ get: all[name],
13
+ enumerable: true
14
+ });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
19
+ get: () => from[key],
20
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
21
+ });
22
+ }
23
+ return to;
24
+ };
25
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: true
28
+ }) : target, mod));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var Slider_exports = {};
31
+ __export(Slider_exports, {
32
+ Range: () => Range,
33
+ Slider: () => Slider,
34
+ SliderActive: () => SliderActive,
35
+ SliderActiveFrame: () => SliderActiveFrame,
36
+ SliderThumb: () => SliderThumb,
37
+ SliderThumbFrame: () => SliderThumbFrame,
38
+ SliderTrack: () => SliderTrack,
39
+ SliderTrackFrame: () => SliderTrackFrame,
40
+ Thumb: () => Thumb,
41
+ Track: () => Track
42
+ });
43
+ module.exports = __toCommonJS(Slider_exports);
44
+ var import_jsx_runtime = require("react/jsx-runtime");
45
+ var import_compose_refs = require("@tamagui/compose-refs");
46
+ var import_constants = require("@tamagui/constants");
47
+ var import_core = require("@tamagui/core");
48
+ var import_helpers = require("@tamagui/helpers");
49
+ var import_stacks = require("@tamagui/stacks");
50
+ var import_use_controllable_state = require("@tamagui/use-controllable-state");
51
+ var import_use_direction = require("@tamagui/use-direction");
52
+ var React = __toESM(require("react"), 1);
53
+ var import_constants2 = require("./constants.native.js");
54
+ var import_helpers2 = require("./helpers.native.js");
55
+ var import_SliderImpl = require("./SliderImpl.native.js");
56
+ var SliderHorizontal = (0, import_core.createRefComponent)(function(props, forwardedRef) {
57
+ var { min, max, dir, onSlideStart, onSlideMove, onStepKeyDown, onSlideEnd, ...sliderProps } = props;
58
+ var direction = (0, import_use_direction.useDirection)(dir);
59
+ var isDirectionLTR = direction === "ltr";
60
+ var sliderRef = React.useRef(null);
61
+ var [state, setState_] = React.useState(function() {
62
+ return {
63
+ size: 0,
64
+ offset: 0
65
+ };
66
+ });
67
+ var setState = (0, import_core.useCreateShallowSetState)(setState_);
68
+ function getValueFromPointer(pointerPosition) {
69
+ var input = [0, state.size];
70
+ var output = isDirectionLTR ? [min, max] : [max, min];
71
+ return (0, import_helpers2.linearScale)(input, output)(pointerPosition);
72
+ }
73
+ var measure = function() {
74
+ var _sliderRef_current;
75
+ (_sliderRef_current = sliderRef.current) === null || _sliderRef_current === void 0 || _sliderRef_current.measure(function(_x, _y, width, _height, pageX, _pageY) {
76
+ setState({
77
+ size: width,
78
+ offset: pageX
79
+ });
80
+ });
81
+ };
82
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_constants2.SliderOrientationProvider, {
83
+ scope: props.__scopeSlider,
84
+ startEdge: isDirectionLTR ? "left" : "right",
85
+ endEdge: isDirectionLTR ? "right" : "left",
86
+ direction: isDirectionLTR ? 1 : -1,
87
+ sizeProp: "width",
88
+ size: state.size,
89
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SliderImpl.SliderImpl, {
90
+ ref: (0, import_compose_refs.composeRefs)(forwardedRef, sliderRef),
91
+ dir: direction,
92
+ ...sliderProps,
93
+ orientation: "horizontal",
94
+ onLayout: measure,
95
+ onSlideStart: function(event, target) {
96
+ var value = getValueFromPointer(event.nativeEvent.locationX);
97
+ if (value) onSlideStart === null || onSlideStart === void 0 || onSlideStart(value, target, event);
98
+ },
99
+ onSlideMove: function(event) {
100
+ var value = getValueFromPointer(event.nativeEvent.pageX - state.offset);
101
+ if (value) onSlideMove === null || onSlideMove === void 0 || onSlideMove(value, event);
102
+ },
103
+ onSlideEnd: function(event) {
104
+ var value = getValueFromPointer(event.nativeEvent.pageX - state.offset);
105
+ if (value) onSlideEnd === null || onSlideEnd === void 0 || onSlideEnd(event, value);
106
+ },
107
+ onStepKeyDown: function(event) {
108
+ var isBackKey = import_constants2.BACK_KEYS[direction].includes(event.key);
109
+ onStepKeyDown === null || onStepKeyDown === void 0 || onStepKeyDown({
110
+ event,
111
+ direction: isBackKey ? -1 : 1
112
+ });
113
+ }
114
+ })
115
+ });
116
+ });
117
+ var SliderVertical = (0, import_core.createRefComponent)(function(props, forwardedRef) {
118
+ var { min, max, onSlideStart, onSlideMove, onStepKeyDown, onSlideEnd, ...sliderProps } = props;
119
+ var [state, setState_] = React.useState(function() {
120
+ return {
121
+ size: 0,
122
+ offset: 0
123
+ };
124
+ });
125
+ var setState = (0, import_core.useCreateShallowSetState)(setState_);
126
+ var sliderRef = React.useRef(null);
127
+ var configuration = (0, import_core.useConfiguration)();
128
+ var insets = import_constants.isIos && configuration.insets ? configuration.insets : {
129
+ top: 0,
130
+ bottom: 0
131
+ };
132
+ function getValueFromPointer(pointerPosition) {
133
+ var input = [0, state.size];
134
+ var output = [max, min];
135
+ return (0, import_helpers2.linearScale)(input, output)(pointerPosition);
136
+ }
137
+ var measure = function() {
138
+ var _sliderRef_current;
139
+ (_sliderRef_current = sliderRef.current) === null || _sliderRef_current === void 0 || _sliderRef_current.measure(function(_x, _y, _width, height, _pageX, pageY) {
140
+ setState({
141
+ size: height,
142
+ offset: pageY + (import_constants.isIos ? insets.top : 0)
143
+ });
144
+ });
145
+ };
146
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_constants2.SliderOrientationProvider, {
147
+ scope: props.__scopeSlider,
148
+ startEdge: "bottom",
149
+ endEdge: "top",
150
+ sizeProp: "height",
151
+ size: state.size,
152
+ direction: 1,
153
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SliderImpl.SliderImpl, {
154
+ ref: (0, import_compose_refs.composeRefs)(forwardedRef, sliderRef),
155
+ ...sliderProps,
156
+ orientation: "vertical",
157
+ onLayout: measure,
158
+ onSlideStart: function(event, target) {
159
+ var value = getValueFromPointer(event.nativeEvent.locationY);
160
+ if (value) onSlideStart === null || onSlideStart === void 0 || onSlideStart(value, target, event);
161
+ },
162
+ onSlideMove: function(event) {
163
+ var value = getValueFromPointer(event.nativeEvent.pageY - state.offset);
164
+ if (value) onSlideMove === null || onSlideMove === void 0 || onSlideMove(value, event);
165
+ },
166
+ onSlideEnd: function(event) {
167
+ var value = getValueFromPointer(event.nativeEvent.pageY - state.offset);
168
+ onSlideEnd === null || onSlideEnd === void 0 || onSlideEnd(event, value);
169
+ },
170
+ onStepKeyDown: function(event) {
171
+ var isBackKey = import_constants2.BACK_KEYS.ltr.includes(event.key);
172
+ onStepKeyDown === null || onStepKeyDown === void 0 || onStepKeyDown({
173
+ event,
174
+ direction: isBackKey ? -1 : 1
175
+ });
176
+ }
177
+ })
178
+ });
179
+ });
180
+ var SliderTrackFrame = (0, import_core.styled)(import_SliderImpl.SliderFrame, {
181
+ displayName: "Slider",
182
+ height: "100%",
183
+ width: "100%",
184
+ position: "relative",
185
+ overflow: "hidden"
186
+ });
187
+ var SliderTrack = (0, import_core.createStyledHOC)(SliderTrackFrame, function SliderTrack2(props, forwardedRef) {
188
+ var { __scopeSlider, ...trackProps } = props;
189
+ var context = (0, import_constants2.useSliderContext)(__scopeSlider);
190
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SliderTrackFrame, {
191
+ "data-disabled": context.disabled ? "" : void 0,
192
+ "data-orientation": context.orientation,
193
+ orientation: context.orientation,
194
+ size: context.size,
195
+ ...trackProps,
196
+ ref: forwardedRef
197
+ });
198
+ });
199
+ var SliderActiveFrame = (0, import_core.styled)(import_SliderImpl.SliderFrame, {
200
+ displayName: "SliderActive",
201
+ position: "absolute",
202
+ pointerEvents: "box-none"
203
+ });
204
+ var SliderActive = (0, import_core.createStyledHOC)(SliderActiveFrame, function SliderActive2(props, forwardedRef) {
205
+ var { __scopeSlider, ...rangeProps } = props;
206
+ var context = (0, import_constants2.useSliderContext)(__scopeSlider);
207
+ var orientation = (0, import_constants2.useSliderOrientationContext)(__scopeSlider);
208
+ var ref = React.useRef(null);
209
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, ref);
210
+ var valuesCount = context.values.length;
211
+ var percentages = context.values.map(function(value) {
212
+ return (0, import_helpers2.convertValueToPercentage)(value, context.min, context.max);
213
+ });
214
+ var offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;
215
+ var offsetEnd = 100 - Math.max(...percentages);
216
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SliderActiveFrame, {
217
+ orientation: context.orientation,
218
+ "data-orientation": context.orientation,
219
+ "data-disabled": context.disabled ? "" : void 0,
220
+ size: context.size,
221
+ animateOnly: [
222
+ "left",
223
+ "top",
224
+ "right",
225
+ "bottom"
226
+ ],
227
+ ...rangeProps,
228
+ ref: composedRefs,
229
+ [orientation.startEdge]: `${offsetStart}%`,
230
+ [orientation.endEdge]: `${offsetEnd}%`,
231
+ ...orientation.sizeProp === "width" ? { height: "100%" } : {
232
+ left: 0,
233
+ right: 0
234
+ }
235
+ });
236
+ });
237
+ var getThumbSize = function(val) {
238
+ var tokens = (0, import_core.getTokens)();
239
+ var sizeToken = (0, import_core.resolveSizeToken)(val !== null && val !== void 0 ? val : true, "size");
240
+ var resolved = typeof sizeToken === "number" ? sizeToken : tokens.size[sizeToken];
241
+ var size = typeof val === "number" ? val : (0, import_core.getVariableValue)(resolved) * .86;
242
+ return {
243
+ width: size,
244
+ height: size,
245
+ minWidth: size,
246
+ minHeight: size
247
+ };
248
+ };
249
+ var SliderThumbFrame = (0, import_core.styled)(import_stacks.YStack, {
250
+ displayName: "SliderThumb",
251
+ position: "absolute",
252
+ variants: {
253
+ size: {
254
+ number: getThumbSize,
255
+ Size: getThumbSize
256
+ },
257
+ circular: { true: {
258
+ borderRadius: 1e5,
259
+ padding: 0
260
+ } },
261
+ elevate: { true: {
262
+ shadowColor: "shadow-color",
263
+ shadowRadius: 4,
264
+ shadowOffset: {
265
+ width: 0,
266
+ height: 2
267
+ }
268
+ } }
269
+ }
270
+ });
271
+ var SliderThumb = (0, import_core.createStyledHOC)(SliderThumbFrame, function SliderThumb2(props, forwardedRef) {
272
+ var { __scopeSlider, index = 0, circular, size: sizeProp, ...thumbProps } = props;
273
+ var context = (0, import_constants2.useSliderContext)(__scopeSlider);
274
+ var orientation = (0, import_constants2.useSliderOrientationContext)(__scopeSlider);
275
+ var [thumb, setThumb] = React.useState(null);
276
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, setThumb);
277
+ var value = context.values[index];
278
+ var percent = value === void 0 ? 0 : (0, import_helpers2.convertValueToPercentage)(value, context.min, context.max);
279
+ var label = (0, import_helpers2.getLabel)(index, context.values.length);
280
+ var _ref;
281
+ var sizeIn = (_ref = sizeProp !== null && sizeProp !== void 0 ? sizeProp : context.size) !== null && _ref !== void 0 ? _ref : true;
282
+ var [size, setSize] = React.useState(function() {
283
+ return (0, import_core.getVariableValue)(getThumbSize(sizeIn).width);
284
+ });
285
+ var thumbInBoundsOffset = size ? (0, import_helpers2.getThumbInBoundsOffset)(size, percent, orientation.direction) : 0;
286
+ React.useEffect(function() {
287
+ if (thumb) {
288
+ context.thumbs.set(thumb, index);
289
+ return function() {
290
+ context.thumbs.delete(thumb);
291
+ };
292
+ }
293
+ }, [
294
+ thumb,
295
+ context.thumbs,
296
+ index
297
+ ]);
298
+ var positionalStyles = context.orientation === "horizontal" ? {
299
+ x: (thumbInBoundsOffset - size / 2) * orientation.direction,
300
+ y: -size / 2,
301
+ top: "50%",
302
+ ...size === 0 && {
303
+ top: "auto",
304
+ bottom: "auto"
305
+ }
306
+ } : {
307
+ x: -size / 2,
308
+ y: size / 2,
309
+ left: "50%",
310
+ ...size === 0 && {
311
+ left: "auto",
312
+ right: "auto"
313
+ }
314
+ };
315
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SliderThumbFrame, {
316
+ ref: composedRefs,
317
+ role: "slider",
318
+ "aria-label": props["aria-label"] || label,
319
+ "aria-valuemin": context.min,
320
+ "aria-valuenow": value,
321
+ "aria-valuemax": context.max,
322
+ "aria-orientation": context.orientation,
323
+ "data-orientation": context.orientation,
324
+ "data-disabled": context.disabled ? "" : void 0,
325
+ tabIndex: context.disabled ? void 0 : 0,
326
+ animateOnly: [
327
+ "transform",
328
+ "left",
329
+ "top",
330
+ "right",
331
+ "bottom"
332
+ ],
333
+ ...positionalStyles,
334
+ [orientation.startEdge]: `${percent}%`,
335
+ size: sizeIn,
336
+ circular,
337
+ ...thumbProps,
338
+ onLayout: function(e) {
339
+ setSize(e.nativeEvent.layout[orientation.sizeProp]);
340
+ },
341
+ onFocus: (0, import_helpers.composeEventHandlers)(props.onFocus, function() {
342
+ context.valueIndexToChangeRef.current = index;
343
+ })
344
+ });
345
+ }, { staticConfig: { memo: true } });
346
+ var SliderComponent = (0, import_core.createRefComponent)(function(props, forwardedRef) {
347
+ var { name, min = 0, max = 100, step = 1, orientation = "horizontal", disabled = false, minStepsBetweenThumbs = 0, defaultValue = [min], value, onValueChange = function() {}, size: sizeProp, onSlideEnd, onSlideMove, onSlideStart, ...sliderProps } = props;
348
+ var sliderRef = React.useRef(null);
349
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(sliderRef, forwardedRef);
350
+ var thumbRefs = React.useRef(/* @__PURE__ */ new Map());
351
+ var valueIndexToChangeRef = React.useRef(0);
352
+ var isHorizontal = orientation === "horizontal";
353
+ var [values = [], setValues] = (0, import_use_controllable_state.useControllableState)({
354
+ prop: value,
355
+ defaultProp: defaultValue,
356
+ transition: true,
357
+ onChange: function(value2) {
358
+ updateThumbFocus(valueIndexToChangeRef.current);
359
+ onValueChange(value2);
360
+ }
361
+ });
362
+ if (import_constants.isWeb) React.useEffect(function() {
363
+ var node = sliderRef.current;
364
+ if (!node) return;
365
+ var preventDefault = function(e) {
366
+ e.preventDefault();
367
+ };
368
+ node.addEventListener("touchstart", preventDefault);
369
+ return function() {
370
+ node.removeEventListener("touchstart", preventDefault);
371
+ };
372
+ }, []);
373
+ function updateThumbFocus(focusIndex) {
374
+ if (!import_constants.isWeb) return;
375
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
376
+ try {
377
+ for (var _iterator = thumbRefs.current.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
378
+ var [node, index] = _step.value;
379
+ if (index === focusIndex) {
380
+ node.focus();
381
+ return;
382
+ }
383
+ }
384
+ } catch (err) {
385
+ _didIteratorError = true;
386
+ _iteratorError = err;
387
+ } finally {
388
+ try {
389
+ if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
390
+ } finally {
391
+ if (_didIteratorError) throw _iteratorError;
392
+ }
393
+ }
394
+ }
395
+ function handleSlideMove(value2, event) {
396
+ updateValues(value2, valueIndexToChangeRef.current);
397
+ onSlideMove === null || onSlideMove === void 0 || onSlideMove(event, value2);
398
+ }
399
+ function updateValues(value2, atIndex) {
400
+ var decimalCount = (0, import_helpers2.getDecimalCount)(step);
401
+ var snapToStep = (0, import_helpers2.roundValue)(Math.round((value2 - min) / step) * step + min, decimalCount);
402
+ var nextValue = (0, import_helpers.clamp)(snapToStep, [min, max]);
403
+ setValues(function() {
404
+ var prevValues = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
405
+ var nextValues = (0, import_helpers2.getNextSortedValues)(prevValues, nextValue, atIndex);
406
+ if ((0, import_helpers2.hasMinStepsBetweenValues)(nextValues, minStepsBetweenThumbs * step)) {
407
+ valueIndexToChangeRef.current = nextValues.indexOf(nextValue);
408
+ return String(nextValues) === String(prevValues) ? prevValues : nextValues;
409
+ }
410
+ return prevValues;
411
+ });
412
+ }
413
+ var SliderOriented = isHorizontal ? SliderHorizontal : SliderVertical;
414
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_constants2.SliderProvider, {
415
+ scope: props.__scopeSlider,
416
+ disabled,
417
+ min,
418
+ max,
419
+ valueIndexToChangeRef,
420
+ thumbs: thumbRefs.current,
421
+ values,
422
+ orientation,
423
+ size: sizeProp,
424
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SliderOriented, {
425
+ "aria-disabled": disabled,
426
+ "data-disabled": disabled ? "" : void 0,
427
+ ...sliderProps,
428
+ ref: composedRefs,
429
+ min,
430
+ max,
431
+ onSlideEnd,
432
+ onSlideStart: disabled ? void 0 : function(value2, target, event) {
433
+ if (target !== "thumb") updateValues(value2, (0, import_helpers2.getClosestValueIndex)(values, value2));
434
+ onSlideStart === null || onSlideStart === void 0 || onSlideStart(event, value2, target);
435
+ },
436
+ onSlideMove: disabled ? void 0 : handleSlideMove,
437
+ onHomeKeyDown: function() {
438
+ return !disabled && updateValues(min, 0);
439
+ },
440
+ onEndKeyDown: function() {
441
+ return !disabled && updateValues(max, values.length - 1);
442
+ },
443
+ onStepKeyDown: function(param) {
444
+ var { event, direction: stepDirection } = param;
445
+ if (!disabled) {
446
+ var multiplier = import_constants2.PAGE_KEYS.includes(event.key) || event.shiftKey && import_constants2.ARROW_KEYS.includes(event.key) ? 10 : 1;
447
+ var atIndex = valueIndexToChangeRef.current;
448
+ var value2 = values[atIndex];
449
+ updateValues(value2 + step * multiplier * stepDirection, atIndex);
450
+ }
451
+ }
452
+ }), import_constants.isWeb && name && values.map(function(value2, index) {
453
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
454
+ type: "hidden",
455
+ name,
456
+ value: value2
457
+ }, index);
458
+ })]
459
+ });
460
+ });
461
+ var Slider = (0, import_helpers.withStaticProperties)(SliderComponent, {
462
+ Track: SliderTrack,
463
+ TrackActive: SliderActive,
464
+ Thumb: SliderThumb
465
+ });
466
+ Slider.displayName = import_constants2.SLIDER_NAME;
467
+ var Track = SliderTrack;
468
+ var Range = SliderActive;
469
+ var Thumb = SliderThumb;