@tamagui/slider 2.7.7 → 3.0.0-beta.1093.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 (115) hide show
  1. package/dist/cjs/Slider.cjs +442 -511
  2. package/dist/cjs/Slider.native.cjs +462 -0
  3. package/dist/cjs/Slider.native.js +416 -497
  4. package/dist/cjs/Slider.native.js.map +1 -1
  5. package/dist/cjs/SliderImpl.cjs +101 -129
  6. package/dist/cjs/SliderImpl.native.cjs +128 -0
  7. package/dist/cjs/SliderImpl.native.js +104 -146
  8. package/dist/cjs/SliderImpl.native.js.map +1 -1
  9. package/dist/cjs/SliderResponder.cjs +51 -0
  10. package/dist/cjs/SliderResponder.native.cjs +52 -0
  11. package/dist/cjs/SliderResponder.native.js +54 -0
  12. package/dist/cjs/SliderResponder.native.js.map +1 -0
  13. package/dist/cjs/constants.cjs +58 -45
  14. package/dist/cjs/constants.native.cjs +78 -0
  15. package/dist/cjs/constants.native.js +58 -44
  16. package/dist/cjs/constants.native.js.map +1 -1
  17. package/dist/cjs/helpers.cjs +58 -60
  18. package/dist/cjs/helpers.native.cjs +98 -0
  19. package/dist/cjs/helpers.native.js +65 -68
  20. package/dist/cjs/helpers.native.js.map +1 -1
  21. package/dist/cjs/index.cjs +15 -17
  22. package/dist/cjs/index.native.cjs +32 -0
  23. package/dist/cjs/index.native.js +15 -16
  24. package/dist/cjs/index.native.js.map +1 -1
  25. package/dist/cjs/types.cjs +9 -11
  26. package/dist/cjs/types.native.cjs +18 -0
  27. package/dist/cjs/types.native.js +9 -10
  28. package/dist/cjs/types.native.js.map +1 -1
  29. package/dist/esm/Slider.mjs +415 -474
  30. package/dist/esm/Slider.mjs.map +1 -1
  31. package/dist/esm/Slider.native.js +389 -463
  32. package/dist/esm/Slider.native.js.map +1 -1
  33. package/dist/esm/SliderImpl.mjs +84 -104
  34. package/dist/esm/SliderImpl.mjs.map +1 -1
  35. package/dist/esm/SliderImpl.native.js +88 -123
  36. package/dist/esm/SliderImpl.native.js.map +1 -1
  37. package/dist/esm/SliderResponder.mjs +26 -0
  38. package/dist/esm/SliderResponder.mjs.map +1 -0
  39. package/dist/esm/SliderResponder.native.js +31 -0
  40. package/dist/esm/SliderResponder.native.js.map +1 -0
  41. package/dist/esm/constants.mjs +38 -21
  42. package/dist/esm/constants.mjs.map +1 -1
  43. package/dist/esm/constants.native.js +38 -21
  44. package/dist/esm/constants.native.js.map +1 -1
  45. package/dist/esm/helpers.mjs +37 -36
  46. package/dist/esm/helpers.mjs.map +1 -1
  47. package/dist/esm/helpers.native.js +44 -45
  48. package/dist/esm/helpers.native.js.map +1 -1
  49. package/dist/esm/index.js +4 -3
  50. package/dist/esm/index.mjs +4 -3
  51. package/dist/esm/index.native.js +4 -3
  52. package/dist/esm/types.mjs +0 -2
  53. package/dist/esm/types.native.js +0 -2
  54. package/dist/jsx/Slider.mjs +415 -474
  55. package/dist/jsx/Slider.mjs.map +1 -1
  56. package/dist/jsx/Slider.native.cjs +462 -0
  57. package/dist/jsx/Slider.native.js +416 -497
  58. package/dist/jsx/Slider.native.js.map +1 -1
  59. package/dist/jsx/SliderImpl.mjs +84 -104
  60. package/dist/jsx/SliderImpl.mjs.map +1 -1
  61. package/dist/jsx/SliderImpl.native.cjs +128 -0
  62. package/dist/jsx/SliderImpl.native.js +104 -146
  63. package/dist/jsx/SliderImpl.native.js.map +1 -1
  64. package/dist/jsx/SliderResponder.mjs +26 -0
  65. package/dist/jsx/SliderResponder.mjs.map +1 -0
  66. package/dist/jsx/SliderResponder.native.cjs +52 -0
  67. package/dist/jsx/SliderResponder.native.js +54 -0
  68. package/dist/jsx/SliderResponder.native.js.map +1 -0
  69. package/dist/jsx/constants.mjs +38 -21
  70. package/dist/jsx/constants.mjs.map +1 -1
  71. package/dist/jsx/constants.native.cjs +78 -0
  72. package/dist/jsx/constants.native.js +58 -44
  73. package/dist/jsx/constants.native.js.map +1 -1
  74. package/dist/jsx/helpers.mjs +37 -36
  75. package/dist/jsx/helpers.mjs.map +1 -1
  76. package/dist/jsx/helpers.native.cjs +98 -0
  77. package/dist/jsx/helpers.native.js +65 -68
  78. package/dist/jsx/helpers.native.js.map +1 -1
  79. package/dist/jsx/index.js +4 -3
  80. package/dist/jsx/index.mjs +4 -3
  81. package/dist/jsx/index.native.cjs +32 -0
  82. package/dist/jsx/index.native.js +15 -16
  83. package/dist/jsx/index.native.js.map +1 -1
  84. package/dist/jsx/types.mjs +0 -2
  85. package/dist/jsx/types.native.cjs +18 -0
  86. package/dist/jsx/types.native.js +9 -10
  87. package/dist/jsx/types.native.js.map +1 -1
  88. package/package.json +19 -15
  89. package/src/Slider.tsx +168 -189
  90. package/src/SliderImpl.tsx +25 -32
  91. package/src/SliderResponder.native.tsx +25 -0
  92. package/src/SliderResponder.tsx +37 -0
  93. package/src/constants.tsx +16 -6
  94. package/src/types.ts +13 -4
  95. package/types/Slider.d.ts +229 -212
  96. package/types/Slider.d.ts.map +1 -1
  97. package/types/SliderImpl.d.ts +3 -6
  98. package/types/SliderImpl.d.ts.map +1 -1
  99. package/types/SliderResponder.d.ts +10 -0
  100. package/types/SliderResponder.d.ts.map +1 -0
  101. package/types/SliderResponder.native.d.ts +3 -0
  102. package/types/SliderResponder.native.d.ts.map +1 -0
  103. package/types/constants.d.ts +10 -10
  104. package/types/constants.d.ts.map +1 -1
  105. package/types/helpers.d.ts.map +1 -1
  106. package/types/types.d.ts +12 -4
  107. package/types/types.d.ts.map +1 -1
  108. package/dist/esm/index.js.map +0 -1
  109. package/dist/esm/index.mjs.map +0 -1
  110. package/dist/esm/index.native.js.map +0 -1
  111. package/dist/esm/types.mjs.map +0 -1
  112. package/dist/esm/types.native.js.map +0 -1
  113. package/dist/jsx/index.js.map +0 -1
  114. package/dist/jsx/index.mjs.map +0 -1
  115. package/dist/jsx/types.mjs.map +0 -1
@@ -0,0 +1,462 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
25
+ value: mod,
26
+ enumerable: true
27
+ }) : target, mod));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var Slider_exports = {};
30
+ __export(Slider_exports, {
31
+ Range: () => Range,
32
+ Slider: () => Slider,
33
+ SliderActive: () => SliderActive,
34
+ SliderActiveFrame: () => SliderActiveFrame,
35
+ SliderThumb: () => SliderThumb,
36
+ SliderThumbFrame: () => SliderThumbFrame,
37
+ SliderTrack: () => SliderTrack,
38
+ SliderTrackFrame: () => SliderTrackFrame,
39
+ Thumb: () => Thumb,
40
+ Track: () => Track
41
+ });
42
+ module.exports = __toCommonJS(Slider_exports);
43
+ var import_jsx_runtime = require("react/jsx-runtime");
44
+ var import_compose_refs = require("@tamagui/compose-refs");
45
+ var import_constants = require("@tamagui/constants");
46
+ var import_core = require("@tamagui/core");
47
+ var import_helpers = require("@tamagui/helpers");
48
+ var import_stacks = require("@tamagui/stacks");
49
+ var import_use_controllable_state = require("@tamagui/use-controllable-state");
50
+ var import_use_direction = require("@tamagui/use-direction");
51
+ var React = __toESM(require("react"), 1);
52
+ var import_constants2 = require("./constants.native.js");
53
+ var import_helpers2 = require("./helpers.native.js");
54
+ var import_SliderImpl = require("./SliderImpl.native.js");
55
+ var getTrackPosition = function(event, offset, orientation) {
56
+ var { locationX, locationY, pageX, pageY } = event.nativeEvent;
57
+ if (import_constants.isWeb) return orientation === "horizontal" ? locationX : locationY;
58
+ return (orientation === "horizontal" ? pageX : pageY) - offset;
59
+ };
60
+ var SliderHorizontal = (0, import_core.createRefComponent)(function(props, forwardedRef) {
61
+ var { min, max, dir, onSlideStart, onSlideMove, onStepKeyDown, onSlideEnd, ...sliderProps } = props;
62
+ var direction = (0, import_use_direction.useDirection)(dir);
63
+ var isDirectionLTR = direction === "ltr";
64
+ var sliderRef = React.useRef(null);
65
+ var [state, setState_] = React.useState(function() {
66
+ return {
67
+ size: 0,
68
+ offset: 0
69
+ };
70
+ });
71
+ var setState = (0, import_core.useCreateShallowSetState)(setState_);
72
+ function getValueFromPointer(pointerPosition) {
73
+ var input = [0, state.size];
74
+ var output = isDirectionLTR ? [min, max] : [max, min];
75
+ return (0, import_helpers2.linearScale)(input, output)(pointerPosition);
76
+ }
77
+ var measure = function() {
78
+ var _sliderRef_current;
79
+ (_sliderRef_current = sliderRef.current) === null || _sliderRef_current === void 0 || _sliderRef_current.measure(function(_x, _y, width, _height, pageX, _pageY) {
80
+ setState({
81
+ size: width,
82
+ offset: pageX
83
+ });
84
+ });
85
+ };
86
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_constants2.SliderOrientationProvider, {
87
+ scope: props.__scopeSlider,
88
+ startEdge: isDirectionLTR ? "left" : "right",
89
+ endEdge: isDirectionLTR ? "right" : "left",
90
+ direction: isDirectionLTR ? 1 : -1,
91
+ sizeProp: "width",
92
+ size: state.size,
93
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SliderImpl.SliderImpl, {
94
+ ref: (0, import_compose_refs.composeRefs)(forwardedRef, sliderRef),
95
+ dir: direction,
96
+ ...sliderProps,
97
+ orientation: "horizontal",
98
+ onLayout: measure,
99
+ onSlideStart: function(event, target) {
100
+ var value = getValueFromPointer(event.nativeEvent.locationX);
101
+ if (value) onSlideStart === null || onSlideStart === void 0 || onSlideStart(value, target, event);
102
+ },
103
+ onSlideMove: function(event) {
104
+ var value = getValueFromPointer(getTrackPosition(event, state.offset, "horizontal"));
105
+ if (value) onSlideMove === null || onSlideMove === void 0 || onSlideMove(value, event);
106
+ },
107
+ onSlideEnd: function(event) {
108
+ var value = getValueFromPointer(getTrackPosition(event, state.offset, "horizontal"));
109
+ if (value) onSlideEnd === null || onSlideEnd === void 0 || onSlideEnd(event, value);
110
+ },
111
+ onStepKeyDown: function(event) {
112
+ var isBackKey = import_constants2.BACK_KEYS[direction].includes(event.key);
113
+ onStepKeyDown === null || onStepKeyDown === void 0 || onStepKeyDown({
114
+ event,
115
+ direction: isBackKey ? -1 : 1
116
+ });
117
+ }
118
+ })
119
+ });
120
+ });
121
+ var SliderVertical = (0, import_core.createRefComponent)(function(props, forwardedRef) {
122
+ var { min, max, onSlideStart, onSlideMove, onStepKeyDown, onSlideEnd, ...sliderProps } = props;
123
+ var [state, setState_] = React.useState(function() {
124
+ return {
125
+ size: 0,
126
+ offset: 0
127
+ };
128
+ });
129
+ var setState = (0, import_core.useCreateShallowSetState)(setState_);
130
+ var sliderRef = React.useRef(null);
131
+ var configuration = (0, import_core.useConfiguration)();
132
+ var insets = import_constants.isIos && configuration.insets ? configuration.insets : {
133
+ top: 0,
134
+ bottom: 0
135
+ };
136
+ function getValueFromPointer(pointerPosition) {
137
+ var input = [0, state.size];
138
+ var output = [max, min];
139
+ return (0, import_helpers2.linearScale)(input, output)(pointerPosition);
140
+ }
141
+ var measure = function() {
142
+ var _sliderRef_current;
143
+ (_sliderRef_current = sliderRef.current) === null || _sliderRef_current === void 0 || _sliderRef_current.measure(function(_x, _y, _width, height, _pageX, pageY) {
144
+ setState({
145
+ size: height,
146
+ offset: pageY + (import_constants.isIos ? insets.top : 0)
147
+ });
148
+ });
149
+ };
150
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_constants2.SliderOrientationProvider, {
151
+ scope: props.__scopeSlider,
152
+ startEdge: "bottom",
153
+ endEdge: "top",
154
+ sizeProp: "height",
155
+ size: state.size,
156
+ direction: 1,
157
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SliderImpl.SliderImpl, {
158
+ ref: (0, import_compose_refs.composeRefs)(forwardedRef, sliderRef),
159
+ ...sliderProps,
160
+ orientation: "vertical",
161
+ onLayout: measure,
162
+ onSlideStart: function(event, target) {
163
+ var value = getValueFromPointer(event.nativeEvent.locationY);
164
+ if (value) onSlideStart === null || onSlideStart === void 0 || onSlideStart(value, target, event);
165
+ },
166
+ onSlideMove: function(event) {
167
+ var value = getValueFromPointer(getTrackPosition(event, state.offset, "vertical"));
168
+ if (value) onSlideMove === null || onSlideMove === void 0 || onSlideMove(value, event);
169
+ },
170
+ onSlideEnd: function(event) {
171
+ var value = getValueFromPointer(getTrackPosition(event, state.offset, "vertical"));
172
+ onSlideEnd === null || onSlideEnd === void 0 || onSlideEnd(event, value);
173
+ },
174
+ onStepKeyDown: function(event) {
175
+ var isBackKey = import_constants2.BACK_KEYS.ltr.includes(event.key);
176
+ onStepKeyDown === null || onStepKeyDown === void 0 || onStepKeyDown({
177
+ event,
178
+ direction: isBackKey ? -1 : 1
179
+ });
180
+ }
181
+ })
182
+ });
183
+ });
184
+ var SliderTrackFrame = (0, import_core.styled)(import_SliderImpl.SliderFrame, {
185
+ displayName: "Slider",
186
+ height: "100%",
187
+ width: "100%",
188
+ position: "relative",
189
+ overflow: "hidden"
190
+ });
191
+ var SliderTrack = (0, import_core.createStyledHOC)(SliderTrackFrame, function SliderTrack2(props, forwardedRef) {
192
+ var { __scopeSlider, ...trackProps } = props;
193
+ var context = (0, import_constants2.useSliderContext)(__scopeSlider);
194
+ var _context_size;
195
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SliderTrackFrame, {
196
+ "data-disabled": context.disabled ? "" : void 0,
197
+ "data-orientation": context.orientation,
198
+ orientation: context.orientation,
199
+ size: (_context_size = context.size) !== null && _context_size !== void 0 ? _context_size : void 0,
200
+ ...trackProps,
201
+ ref: forwardedRef
202
+ });
203
+ });
204
+ var SliderActiveFrame = (0, import_core.styled)(import_SliderImpl.SliderFrame, {
205
+ displayName: "SliderActive",
206
+ position: "absolute",
207
+ pointerEvents: "box-none"
208
+ });
209
+ var SliderActive = (0, import_core.createStyledHOC)(SliderActiveFrame, function SliderActive2(props, forwardedRef) {
210
+ var { __scopeSlider, ...rangeProps } = props;
211
+ var context = (0, import_constants2.useSliderContext)(__scopeSlider);
212
+ var orientation = (0, import_constants2.useSliderOrientationContext)(__scopeSlider);
213
+ var ref = React.useRef(null);
214
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, ref);
215
+ var valuesCount = context.values.length;
216
+ var percentages = context.values.map(function(value) {
217
+ return (0, import_helpers2.convertValueToPercentage)(value, context.min, context.max);
218
+ });
219
+ var offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;
220
+ var offsetEnd = 100 - Math.max(...percentages);
221
+ var _context_size;
222
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SliderActiveFrame, {
223
+ orientation: context.orientation,
224
+ "data-orientation": context.orientation,
225
+ "data-disabled": context.disabled ? "" : void 0,
226
+ size: (_context_size = context.size) !== null && _context_size !== void 0 ? _context_size : void 0,
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 thumbSize = function(val, env) {
238
+ if (typeof val === "number") return val;
239
+ var { text } = (0, import_core.resolveSize)(val, env);
240
+ var _text_lineHeight;
241
+ return (0, import_core.getVariableValue)((_text_lineHeight = text.lineHeight) !== null && _text_lineHeight !== void 0 ? _text_lineHeight : text.fontSize);
242
+ };
243
+ var getThumbSize = import_core.styled.dynamic(function(val, env) {
244
+ var size = thumbSize(val, env);
245
+ return {
246
+ width: size,
247
+ height: size,
248
+ minWidth: size,
249
+ minHeight: size
250
+ };
251
+ });
252
+ var SliderThumbFrame = (0, import_core.styled)(import_stacks.YStack, {
253
+ displayName: "SliderThumb",
254
+ position: "absolute",
255
+ variants: {
256
+ size: getThumbSize,
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 thumbSize(sizeIn);
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
+ ...positionalStyles,
327
+ [orientation.startEdge]: `${percent}%`,
328
+ size: sizeIn,
329
+ circular,
330
+ ...thumbProps,
331
+ onLayout: function(e) {
332
+ setSize(e.nativeEvent.layout[orientation.sizeProp]);
333
+ },
334
+ onFocus: (0, import_helpers.composeEventHandlers)(props.onFocus, function() {
335
+ context.valueIndexToChangeRef.current = index;
336
+ })
337
+ });
338
+ }, { staticConfig: { memo: true } });
339
+ var SliderComponent = (0, import_core.createRefComponent)(function(props, forwardedRef) {
340
+ 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;
341
+ var sliderRef = React.useRef(null);
342
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(sliderRef, forwardedRef);
343
+ var thumbRefs = React.useRef(/* @__PURE__ */ new Map());
344
+ var valueIndexToChangeRef = React.useRef(0);
345
+ var isHorizontal = orientation === "horizontal";
346
+ var [values = [], setValues] = (0, import_use_controllable_state.useControllableState)({
347
+ prop: value,
348
+ defaultProp: defaultValue,
349
+ transition: true,
350
+ onChange: function(value2) {
351
+ updateThumbFocus(valueIndexToChangeRef.current);
352
+ onValueChange(value2);
353
+ }
354
+ });
355
+ if (import_constants.isWeb) React.useEffect(function() {
356
+ var node = sliderRef.current;
357
+ if (!node) return;
358
+ var preventDefault = function(e) {
359
+ e.preventDefault();
360
+ };
361
+ node.addEventListener("touchstart", preventDefault);
362
+ return function() {
363
+ node.removeEventListener("touchstart", preventDefault);
364
+ };
365
+ }, []);
366
+ function updateThumbFocus(focusIndex) {
367
+ if (!import_constants.isWeb) return;
368
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
369
+ try {
370
+ for (var _iterator = thumbRefs.current.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
371
+ var [node, index] = _step.value;
372
+ if (index === focusIndex) {
373
+ node.focus();
374
+ return;
375
+ }
376
+ }
377
+ } catch (err) {
378
+ _didIteratorError = true;
379
+ _iteratorError = err;
380
+ } finally {
381
+ try {
382
+ if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
383
+ } finally {
384
+ if (_didIteratorError) throw _iteratorError;
385
+ }
386
+ }
387
+ }
388
+ function handleSlideMove(value2, event) {
389
+ updateValues(value2, valueIndexToChangeRef.current);
390
+ onSlideMove === null || onSlideMove === void 0 || onSlideMove(event, value2);
391
+ }
392
+ function updateValues(value2, atIndex) {
393
+ var decimalCount = (0, import_helpers2.getDecimalCount)(step);
394
+ var snapToStep = (0, import_helpers2.roundValue)(Math.round((value2 - min) / step) * step + min, decimalCount);
395
+ var nextValue = (0, import_helpers.clamp)(snapToStep, [min, max]);
396
+ setValues(function() {
397
+ var prevValues = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
398
+ var nextValues = (0, import_helpers2.getNextSortedValues)(prevValues, nextValue, atIndex);
399
+ if ((0, import_helpers2.hasMinStepsBetweenValues)(nextValues, minStepsBetweenThumbs * step)) {
400
+ valueIndexToChangeRef.current = nextValues.indexOf(nextValue);
401
+ return String(nextValues) === String(prevValues) ? prevValues : nextValues;
402
+ }
403
+ return prevValues;
404
+ });
405
+ }
406
+ var SliderOriented = isHorizontal ? SliderHorizontal : SliderVertical;
407
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_constants2.SliderProvider, {
408
+ scope: props.__scopeSlider,
409
+ disabled,
410
+ min,
411
+ max,
412
+ valueIndexToChangeRef,
413
+ thumbs: thumbRefs.current,
414
+ values,
415
+ orientation,
416
+ size: sizeProp,
417
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SliderOriented, {
418
+ "aria-disabled": disabled,
419
+ "data-disabled": disabled ? "" : void 0,
420
+ ...sliderProps,
421
+ ref: composedRefs,
422
+ min,
423
+ max,
424
+ onSlideEnd,
425
+ onSlideStart: disabled ? void 0 : function(value2, target, event) {
426
+ if (target !== "thumb") updateValues(value2, (0, import_helpers2.getClosestValueIndex)(values, value2));
427
+ onSlideStart === null || onSlideStart === void 0 || onSlideStart(event, value2, target);
428
+ },
429
+ onSlideMove: disabled ? void 0 : handleSlideMove,
430
+ onHomeKeyDown: function() {
431
+ return !disabled && updateValues(min, 0);
432
+ },
433
+ onEndKeyDown: function() {
434
+ return !disabled && updateValues(max, values.length - 1);
435
+ },
436
+ onStepKeyDown: function(param) {
437
+ var { event, direction: stepDirection } = param;
438
+ if (!disabled) {
439
+ var multiplier = import_constants2.PAGE_KEYS.includes(event.key) || event.shiftKey && import_constants2.ARROW_KEYS.includes(event.key) ? 10 : 1;
440
+ var atIndex = valueIndexToChangeRef.current;
441
+ var value2 = values[atIndex];
442
+ updateValues(value2 + step * multiplier * stepDirection, atIndex);
443
+ }
444
+ }
445
+ }), import_constants.isWeb && name && values.map(function(value2, index) {
446
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
447
+ type: "hidden",
448
+ name,
449
+ value: value2
450
+ }, index);
451
+ })]
452
+ });
453
+ });
454
+ var Slider = (0, import_helpers.withStaticProperties)(SliderComponent, {
455
+ Track: SliderTrack,
456
+ TrackActive: SliderActive,
457
+ Thumb: SliderThumb
458
+ });
459
+ Slider.displayName = import_constants2.SLIDER_NAME;
460
+ var Track = SliderTrack;
461
+ var Range = SliderActive;
462
+ var Thumb = SliderThumb;