@cdx-ui/primitives 0.0.1-beta.115 → 0.0.1-beta.116

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 (84) hide show
  1. package/lib/commonjs/index.js +35 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/overlay/useAnchorPosition.js +60 -11
  4. package/lib/commonjs/overlay/useAnchorPosition.js.map +1 -1
  5. package/lib/commonjs/slider/SliderRail.js +131 -0
  6. package/lib/commonjs/slider/SliderRail.js.map +1 -0
  7. package/lib/commonjs/slider/SliderRoot.js +186 -0
  8. package/lib/commonjs/slider/SliderRoot.js.map +1 -0
  9. package/lib/commonjs/slider/SliderThumb.js +228 -0
  10. package/lib/commonjs/slider/SliderThumb.js.map +1 -0
  11. package/lib/commonjs/slider/context.js +11 -0
  12. package/lib/commonjs/slider/context.js.map +1 -0
  13. package/lib/commonjs/slider/index.js +65 -0
  14. package/lib/commonjs/slider/index.js.map +1 -0
  15. package/lib/commonjs/slider/types.js +6 -0
  16. package/lib/commonjs/slider/types.js.map +1 -0
  17. package/lib/commonjs/slider/useSliderPointer.js +116 -0
  18. package/lib/commonjs/slider/useSliderPointer.js.map +1 -0
  19. package/lib/commonjs/slider/utils.js +155 -0
  20. package/lib/commonjs/slider/utils.js.map +1 -0
  21. package/lib/commonjs/utils/assignRef.js +16 -0
  22. package/lib/commonjs/utils/assignRef.js.map +1 -0
  23. package/lib/commonjs/utils/createPortal.js +3 -1
  24. package/lib/commonjs/utils/createPortal.js.map +1 -1
  25. package/lib/module/index.js +4 -0
  26. package/lib/module/index.js.map +1 -1
  27. package/lib/module/overlay/useAnchorPosition.js +60 -11
  28. package/lib/module/overlay/useAnchorPosition.js.map +1 -1
  29. package/lib/module/slider/SliderRail.js +127 -0
  30. package/lib/module/slider/SliderRail.js.map +1 -0
  31. package/lib/module/slider/SliderRoot.js +182 -0
  32. package/lib/module/slider/SliderRoot.js.map +1 -0
  33. package/lib/module/slider/SliderThumb.js +224 -0
  34. package/lib/module/slider/SliderThumb.js.map +1 -0
  35. package/lib/module/slider/context.js +5 -0
  36. package/lib/module/slider/context.js.map +1 -0
  37. package/lib/module/slider/index.js +8 -0
  38. package/lib/module/slider/index.js.map +1 -0
  39. package/lib/module/slider/types.js +4 -0
  40. package/lib/module/slider/types.js.map +1 -0
  41. package/lib/module/slider/useSliderPointer.js +110 -0
  42. package/lib/module/slider/useSliderPointer.js.map +1 -0
  43. package/lib/module/slider/utils.js +138 -0
  44. package/lib/module/slider/utils.js.map +1 -0
  45. package/lib/module/utils/assignRef.js +12 -0
  46. package/lib/module/utils/assignRef.js.map +1 -0
  47. package/lib/module/utils/createPortal.js +3 -1
  48. package/lib/module/utils/createPortal.js.map +1 -1
  49. package/lib/typescript/index.d.ts +4 -0
  50. package/lib/typescript/index.d.ts.map +1 -1
  51. package/lib/typescript/overlay/useAnchorPosition.d.ts +7 -1
  52. package/lib/typescript/overlay/useAnchorPosition.d.ts.map +1 -1
  53. package/lib/typescript/slider/SliderRail.d.ts +6 -0
  54. package/lib/typescript/slider/SliderRail.d.ts.map +1 -0
  55. package/lib/typescript/slider/SliderRoot.d.ts +7 -0
  56. package/lib/typescript/slider/SliderRoot.d.ts.map +1 -0
  57. package/lib/typescript/slider/SliderThumb.d.ts +6 -0
  58. package/lib/typescript/slider/SliderThumb.d.ts.map +1 -0
  59. package/lib/typescript/slider/context.d.ts +37 -0
  60. package/lib/typescript/slider/context.d.ts.map +1 -0
  61. package/lib/typescript/slider/index.d.ts +8 -0
  62. package/lib/typescript/slider/index.d.ts.map +1 -0
  63. package/lib/typescript/slider/types.d.ts +37 -0
  64. package/lib/typescript/slider/types.d.ts.map +1 -0
  65. package/lib/typescript/slider/useSliderPointer.d.ts +23 -0
  66. package/lib/typescript/slider/useSliderPointer.d.ts.map +1 -0
  67. package/lib/typescript/slider/utils.d.ts +23 -0
  68. package/lib/typescript/slider/utils.d.ts.map +1 -0
  69. package/lib/typescript/utils/assignRef.d.ts +3 -0
  70. package/lib/typescript/utils/assignRef.d.ts.map +1 -0
  71. package/lib/typescript/utils/createPortal.d.ts.map +1 -1
  72. package/package.json +2 -2
  73. package/src/index.ts +4 -0
  74. package/src/overlay/useAnchorPosition.ts +79 -11
  75. package/src/slider/SliderRail.tsx +143 -0
  76. package/src/slider/SliderRoot.tsx +266 -0
  77. package/src/slider/SliderThumb.tsx +268 -0
  78. package/src/slider/context.tsx +38 -0
  79. package/src/slider/index.ts +19 -0
  80. package/src/slider/types.ts +44 -0
  81. package/src/slider/useSliderPointer.ts +157 -0
  82. package/src/slider/utils.ts +181 -0
  83. package/src/utils/assignRef.ts +11 -0
  84. package/src/utils/createPortal.ts +3 -1
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useCallback, useMemo, useRef } from 'react';
4
+ import { PanResponder, Platform, Pressable, View } from 'react-native';
5
+ import { composeEventHandlers } from '@cdx-ui/utils';
6
+ import { useFocus, useFocusRing } from '@react-native-aria/focus';
7
+ import { useHover, usePress } from '@react-native-aria/interactions';
8
+ import { Slot } from '../slot';
9
+ import { assignRef } from '../utils/assignRef';
10
+ import { dataAttributes } from '../utils/dataAttributes';
11
+ import { useSliderContext } from './context';
12
+ import { getPointerCoords, useWebSliderDrag } from './useSliderPointer';
13
+ import { clamp, getThumbTravel, percentToThumbOffset } from './utils';
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ export const SliderThumb = /*#__PURE__*/forwardRef(({
16
+ asChild,
17
+ style,
18
+ onLayout,
19
+ onHoverIn,
20
+ onHoverOut,
21
+ onFocus,
22
+ onBlur,
23
+ onPressIn,
24
+ onPressOut,
25
+ children,
26
+ ...props
27
+ }, ref) => {
28
+ const {
29
+ percent,
30
+ orientation,
31
+ isDisabled,
32
+ isDragging,
33
+ trackLayout,
34
+ thumbSize,
35
+ setValueFromRatio,
36
+ setIsDragging,
37
+ setIsHovered,
38
+ setIsFocused,
39
+ setThumbSize,
40
+ thumbRef
41
+ } = useSliderContext();
42
+ const percentRef = useRef(percent);
43
+ percentRef.current = percent;
44
+ const dragStartRatio = useRef(0);
45
+ const lastRatioRef = useRef(percent / 100);
46
+
47
+ // The native PanResponder is created once (stable across renders) so an
48
+ // in-flight gesture is never handed a fresh internal `gestureState`
49
+ // mid-drag. In controlled mode `setValueFromRatio`/`trackLayout` change
50
+ // identity on every value update, so the handlers read the current values
51
+ // through refs instead of closing over them (which would force the
52
+ // `useMemo` to re-create the responder on every move and reset `dx`).
53
+ const orientationRef = useRef(orientation);
54
+ orientationRef.current = orientation;
55
+ const trackLayoutRef = useRef(trackLayout);
56
+ trackLayoutRef.current = trackLayout;
57
+ const thumbSizeRef = useRef(thumbSize);
58
+ thumbSizeRef.current = thumbSize;
59
+ const isDisabledRef = useRef(isDisabled);
60
+ isDisabledRef.current = isDisabled;
61
+ const setValueFromRatioRef = useRef(setValueFromRatio);
62
+ setValueFromRatioRef.current = setValueFromRatio;
63
+ const setIsDraggingRef = useRef(setIsDragging);
64
+ setIsDraggingRef.current = setIsDragging;
65
+ const {
66
+ hoverProps,
67
+ isHovered
68
+ } = useHover();
69
+ const {
70
+ focusProps,
71
+ isFocused
72
+ } = useFocus();
73
+ const {
74
+ isFocusVisible,
75
+ focusProps: focusRingProps
76
+ } = useFocusRing();
77
+ const {
78
+ pressProps: pressableProps,
79
+ isPressed
80
+ } = usePress({
81
+ isDisabled
82
+ });
83
+ const {
84
+ startDrag
85
+ } = useWebSliderDrag({
86
+ isDisabled,
87
+ setIsDragging,
88
+ setValueFromRatio,
89
+ trackLayout,
90
+ orientation,
91
+ thumbSize
92
+ });
93
+ const panResponder = useMemo(() => PanResponder.create({
94
+ onStartShouldSetPanResponder: () => !isDisabledRef.current,
95
+ onMoveShouldSetPanResponder: () => !isDisabledRef.current,
96
+ onPanResponderGrant: () => {
97
+ if (isDisabledRef.current) {
98
+ return;
99
+ }
100
+ setIsDraggingRef.current(true);
101
+ dragStartRatio.current = percentRef.current / 100;
102
+ lastRatioRef.current = dragStartRatio.current;
103
+ },
104
+ onPanResponderMove: (_event, gestureState) => {
105
+ const layout = trackLayoutRef.current;
106
+ if (!layout) {
107
+ return;
108
+ }
109
+ const isHorizontal = orientationRef.current === 'horizontal';
110
+ const trackSize = isHorizontal ? layout.width : layout.height;
111
+ const travel = getThumbTravel(trackSize, thumbSizeRef.current);
112
+ if (travel <= 0) {
113
+ return;
114
+ }
115
+ const delta = isHorizontal ? gestureState.dx : -gestureState.dy;
116
+ const nextRatio = clamp(dragStartRatio.current + delta / travel, 0, 1);
117
+ lastRatioRef.current = nextRatio;
118
+ setValueFromRatioRef.current(nextRatio);
119
+ },
120
+ onPanResponderRelease: () => {
121
+ setIsDraggingRef.current(false);
122
+ setValueFromRatioRef.current(lastRatioRef.current, true);
123
+ },
124
+ onPanResponderTerminate: () => {
125
+ setIsDraggingRef.current(false);
126
+ setValueFromRatioRef.current(lastRatioRef.current, true);
127
+ }
128
+ }), []);
129
+ const thumbStyle = useMemo(() => {
130
+ const trackSize = trackLayout == null ? 0 : orientation === 'horizontal' ? trackLayout.width : trackLayout.height;
131
+ const offset = percentToThumbOffset(percent, trackSize, thumbSize);
132
+ if (orientation === 'vertical') {
133
+ return {
134
+ position: 'absolute',
135
+ left: '50%',
136
+ bottom: offset,
137
+ marginLeft: -thumbSize / 2,
138
+ zIndex: 2
139
+ };
140
+ }
141
+ return {
142
+ position: 'absolute',
143
+ top: '50%',
144
+ left: offset,
145
+ transform: [{
146
+ translateY: -thumbSize / 2
147
+ }],
148
+ zIndex: 2
149
+ };
150
+ }, [orientation, percent, thumbSize, trackLayout]);
151
+ const handleLayout = useCallback(event => {
152
+ const {
153
+ width,
154
+ height
155
+ } = event.nativeEvent.layout;
156
+ const measured = orientation === 'horizontal' ? width : height;
157
+ if (measured > 0) {
158
+ setThumbSize(measured);
159
+ }
160
+ if (onLayout) {
161
+ onLayout(event);
162
+ }
163
+ }, [onLayout, orientation, setThumbSize]);
164
+ const handlePointerDown = useCallback(event => {
165
+ if (Platform.OS !== 'web' || isDisabled) {
166
+ return;
167
+ }
168
+ event.preventDefault();
169
+ event.stopPropagation();
170
+ const {
171
+ x,
172
+ y
173
+ } = getPointerCoords(event.nativeEvent);
174
+ startDrag(x, y, percentRef.current / 100);
175
+ }, [isDisabled, startDrag]);
176
+ const isWeb = Platform.OS === 'web';
177
+
178
+ // Native drag is driven by PanResponder. Its `panHandlers` set the same
179
+ // responder props (`onResponderGrant/Move/Release`, etc.) that RN's
180
+ // `Pressable`/`Pressability` also set internally — and `Pressable` spreads
181
+ // its own handlers last, silently clobbering ours. So on native the thumb
182
+ // must be a plain `View` that carries `panHandlers` directly. Web keeps
183
+ // `Pressable` for its pointer-event, hover, and focus-ring behavior.
184
+ const Comp = asChild ? Slot : isWeb ? Pressable : View;
185
+ const setThumbRef = useCallback(node => {
186
+ thumbRef.current = node;
187
+ assignRef(ref, node);
188
+ }, [ref, thumbRef]);
189
+ const webInteractionProps = {
190
+ onPointerDown: handlePointerDown,
191
+ onHoverIn: composeEventHandlers(onHoverIn, composeEventHandlers(hoverProps.onHoverIn, () => setIsHovered(true))),
192
+ onHoverOut: composeEventHandlers(onHoverOut, composeEventHandlers(hoverProps.onHoverOut, () => setIsHovered(false))),
193
+ onPressIn: composeEventHandlers(onPressIn, pressableProps.onPressIn),
194
+ onPressOut: composeEventHandlers(onPressOut, pressableProps.onPressOut),
195
+ disabled: isDisabled,
196
+ tabIndex: -1
197
+ };
198
+ return /*#__PURE__*/_jsx(Comp, {
199
+ ref: setThumbRef,
200
+ ...props,
201
+ ...(isWeb ? webInteractionProps : panResponder.panHandlers),
202
+ onLayout: handleLayout,
203
+ onFocus: composeEventHandlers(composeEventHandlers(onFocus, focusProps.onFocus), composeEventHandlers(focusRingProps.onFocus, () => setIsFocused(true))),
204
+ onBlur: composeEventHandlers(composeEventHandlers(onBlur, focusProps.onBlur), composeEventHandlers(focusRingProps.onBlur, () => setIsFocused(false))),
205
+ style: [thumbStyle, style],
206
+ accessibilityRole: "none",
207
+ importantForAccessibility: "no",
208
+ ...dataAttributes({
209
+ slot: 'slider-thumb',
210
+ hover: isHovered,
211
+ focus: isFocused,
212
+ focusVisible: isFocusVisible,
213
+ // On native there is no `Pressable`, so `usePress` never fires; the
214
+ // drag state stands in for "active" so the thumb still scales while
215
+ // the user is dragging (see `data-[active=true]:scale-105`).
216
+ active: isPressed || isDragging,
217
+ dragging: isDragging,
218
+ disabled: isDisabled
219
+ }),
220
+ children: children
221
+ });
222
+ });
223
+ SliderThumb.displayName = 'SliderThumb';
224
+ //# sourceMappingURL=SliderThumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","useMemo","useRef","PanResponder","Platform","Pressable","View","composeEventHandlers","useFocus","useFocusRing","useHover","usePress","Slot","assignRef","dataAttributes","useSliderContext","getPointerCoords","useWebSliderDrag","clamp","getThumbTravel","percentToThumbOffset","jsx","_jsx","SliderThumb","asChild","style","onLayout","onHoverIn","onHoverOut","onFocus","onBlur","onPressIn","onPressOut","children","props","ref","percent","orientation","isDisabled","isDragging","trackLayout","thumbSize","setValueFromRatio","setIsDragging","setIsHovered","setIsFocused","setThumbSize","thumbRef","percentRef","current","dragStartRatio","lastRatioRef","orientationRef","trackLayoutRef","thumbSizeRef","isDisabledRef","setValueFromRatioRef","setIsDraggingRef","hoverProps","isHovered","focusProps","isFocused","isFocusVisible","focusRingProps","pressProps","pressableProps","isPressed","startDrag","panResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","_event","gestureState","layout","isHorizontal","trackSize","width","height","travel","delta","dx","dy","nextRatio","onPanResponderRelease","onPanResponderTerminate","thumbStyle","offset","position","left","bottom","marginLeft","zIndex","top","transform","translateY","handleLayout","event","nativeEvent","measured","handlePointerDown","OS","preventDefault","stopPropagation","x","y","isWeb","Comp","setThumbRef","node","webInteractionProps","onPointerDown","disabled","tabIndex","panHandlers","accessibilityRole","importantForAccessibility","slot","hover","focus","focusVisible","active","dragging","displayName"],"sourceRoot":"../../../src","sources":["slider/SliderThumb.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAA2B,OAAO;AACnF,SACEC,YAAY,EACZC,QAAQ,EACRC,SAAS,EACTC,IAAI,QAKC,cAAc;AACrB,SAASC,oBAAoB,QAAQ,eAAe;AACpD,SAASC,QAAQ,EAAEC,YAAY,QAAQ,0BAA0B;AACjE,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,iCAAiC;AACpE,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,gBAAgB,QAAQ,WAAW;AAE5C,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,oBAAoB;AACvE,SAASC,KAAK,EAAEC,cAAc,EAAEC,oBAAoB,QAAQ,SAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAItE,OAAO,MAAMC,WAAW,gBAAGxB,UAAU,CACnC,CACE;EACEyB,OAAO;EACPC,KAAK;EACLC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,OAAO;EACPC,MAAM;EACNC,SAAS;EACTC,UAAU;EACVC,QAAQ;EACR,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM;IACJC,OAAO;IACPC,WAAW;IACXC,UAAU;IACVC,UAAU;IACVC,WAAW;IACXC,SAAS;IACTC,iBAAiB;IACjBC,aAAa;IACbC,YAAY;IACZC,YAAY;IACZC,YAAY;IACZC;EACF,CAAC,GAAGhC,gBAAgB,CAAC,CAAC;EAEtB,MAAMiC,UAAU,GAAG9C,MAAM,CAACkC,OAAO,CAAC;EAClCY,UAAU,CAACC,OAAO,GAAGb,OAAO;EAE5B,MAAMc,cAAc,GAAGhD,MAAM,CAAC,CAAC,CAAC;EAChC,MAAMiD,YAAY,GAAGjD,MAAM,CAACkC,OAAO,GAAG,GAAG,CAAC;;EAE1C;EACA;EACA;EACA;EACA;EACA;EACA,MAAMgB,cAAc,GAAGlD,MAAM,CAACmC,WAAW,CAAC;EAC1Ce,cAAc,CAACH,OAAO,GAAGZ,WAAW;EACpC,MAAMgB,cAAc,GAAGnD,MAAM,CAACsC,WAAW,CAAC;EAC1Ca,cAAc,CAACJ,OAAO,GAAGT,WAAW;EACpC,MAAMc,YAAY,GAAGpD,MAAM,CAACuC,SAAS,CAAC;EACtCa,YAAY,CAACL,OAAO,GAAGR,SAAS;EAChC,MAAMc,aAAa,GAAGrD,MAAM,CAACoC,UAAU,CAAC;EACxCiB,aAAa,CAACN,OAAO,GAAGX,UAAU;EAClC,MAAMkB,oBAAoB,GAAGtD,MAAM,CAACwC,iBAAiB,CAAC;EACtDc,oBAAoB,CAACP,OAAO,GAAGP,iBAAiB;EAChD,MAAMe,gBAAgB,GAAGvD,MAAM,CAACyC,aAAa,CAAC;EAC9Cc,gBAAgB,CAACR,OAAO,GAAGN,aAAa;EAExC,MAAM;IAAEe,UAAU;IAAEC;EAAU,CAAC,GAAGjD,QAAQ,CAAC,CAAC;EAC5C,MAAM;IAAEkD,UAAU;IAAEC;EAAU,CAAC,GAAGrD,QAAQ,CAAC,CAAC;EAC5C,MAAM;IAAEsD,cAAc;IAAEF,UAAU,EAAEG;EAAe,CAAC,GAAGtD,YAAY,CAAC,CAGnE;EACD,MAAM;IAAEuD,UAAU,EAAEC,cAAc;IAAEC;EAAU,CAAC,GAAGvD,QAAQ,CAAC;IAAE2B;EAAW,CAAC,CAGxE;EAED,MAAM;IAAE6B;EAAU,CAAC,GAAGlD,gBAAgB,CAAC;IACrCqB,UAAU;IACVK,aAAa;IACbD,iBAAiB;IACjBF,WAAW;IACXH,WAAW;IACXI;EACF,CAAC,CAAC;EAEF,MAAM2B,YAAY,GAAGnE,OAAO,CAC1B,MACEE,YAAY,CAACkE,MAAM,CAAC;IAClBC,4BAA4B,EAAEA,CAAA,KAAM,CAACf,aAAa,CAACN,OAAO;IAC1DsB,2BAA2B,EAAEA,CAAA,KAAM,CAAChB,aAAa,CAACN,OAAO;IACzDuB,mBAAmB,EAAEA,CAAA,KAAM;MACzB,IAAIjB,aAAa,CAACN,OAAO,EAAE;QACzB;MACF;MACAQ,gBAAgB,CAACR,OAAO,CAAC,IAAI,CAAC;MAC9BC,cAAc,CAACD,OAAO,GAAGD,UAAU,CAACC,OAAO,GAAG,GAAG;MACjDE,YAAY,CAACF,OAAO,GAAGC,cAAc,CAACD,OAAO;IAC/C,CAAC;IACDwB,kBAAkB,EAAEA,CAACC,MAAM,EAAEC,YAAY,KAAK;MAC5C,MAAMC,MAAM,GAAGvB,cAAc,CAACJ,OAAO;MACrC,IAAI,CAAC2B,MAAM,EAAE;QACX;MACF;MACA,MAAMC,YAAY,GAAGzB,cAAc,CAACH,OAAO,KAAK,YAAY;MAC5D,MAAM6B,SAAS,GAAGD,YAAY,GAAGD,MAAM,CAACG,KAAK,GAAGH,MAAM,CAACI,MAAM;MAC7D,MAAMC,MAAM,GAAG9D,cAAc,CAAC2D,SAAS,EAAExB,YAAY,CAACL,OAAO,CAAC;MAC9D,IAAIgC,MAAM,IAAI,CAAC,EAAE;QACf;MACF;MACA,MAAMC,KAAK,GAAGL,YAAY,GAAGF,YAAY,CAACQ,EAAE,GAAG,CAACR,YAAY,CAACS,EAAE;MAC/D,MAAMC,SAAS,GAAGnE,KAAK,CAACgC,cAAc,CAACD,OAAO,GAAGiC,KAAK,GAAGD,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;MACtE9B,YAAY,CAACF,OAAO,GAAGoC,SAAS;MAChC7B,oBAAoB,CAACP,OAAO,CAACoC,SAAS,CAAC;IACzC,CAAC;IACDC,qBAAqB,EAAEA,CAAA,KAAM;MAC3B7B,gBAAgB,CAACR,OAAO,CAAC,KAAK,CAAC;MAC/BO,oBAAoB,CAACP,OAAO,CAACE,YAAY,CAACF,OAAO,EAAE,IAAI,CAAC;IAC1D,CAAC;IACDsC,uBAAuB,EAAEA,CAAA,KAAM;MAC7B9B,gBAAgB,CAACR,OAAO,CAAC,KAAK,CAAC;MAC/BO,oBAAoB,CAACP,OAAO,CAACE,YAAY,CAACF,OAAO,EAAE,IAAI,CAAC;IAC1D;EACF,CAAC,CAAC,EACJ,EACF,CAAC;EAED,MAAMuC,UAAU,GAAGvF,OAAO,CAAC,MAAiB;IAC1C,MAAM6E,SAAS,GACbtC,WAAW,IAAI,IAAI,GACf,CAAC,GACDH,WAAW,KAAK,YAAY,GAC1BG,WAAW,CAACuC,KAAK,GACjBvC,WAAW,CAACwC,MAAM;IAC1B,MAAMS,MAAM,GAAGrE,oBAAoB,CAACgB,OAAO,EAAE0C,SAAS,EAAErC,SAAS,CAAC;IAElE,IAAIJ,WAAW,KAAK,UAAU,EAAE;MAC9B,OAAO;QACLqD,QAAQ,EAAE,UAAU;QACpBC,IAAI,EAAE,KAAK;QACXC,MAAM,EAAEH,MAAM;QACdI,UAAU,EAAE,CAACpD,SAAS,GAAG,CAAC;QAC1BqD,MAAM,EAAE;MACV,CAAC;IACH;IAEA,OAAO;MACLJ,QAAQ,EAAE,UAAU;MACpBK,GAAG,EAAE,KAAK;MACVJ,IAAI,EAAEF,MAAM;MACZO,SAAS,EAAE,CAAC;QAAEC,UAAU,EAAE,CAACxD,SAAS,GAAG;MAAE,CAAC,CAAC;MAC3CqD,MAAM,EAAE;IACV,CAAC;EACH,CAAC,EAAE,CAACzD,WAAW,EAAED,OAAO,EAAEK,SAAS,EAAED,WAAW,CAAC,CAAC;EAElD,MAAM0D,YAAY,GAAGlG,WAAW,CAC7BmG,KAAwB,IAAK;IAC5B,MAAM;MAAEpB,KAAK;MAAEC;IAAO,CAAC,GAAGmB,KAAK,CAACC,WAAW,CAACxB,MAAM;IAClD,MAAMyB,QAAQ,GAAGhE,WAAW,KAAK,YAAY,GAAG0C,KAAK,GAAGC,MAAM;IAC9D,IAAIqB,QAAQ,GAAG,CAAC,EAAE;MAChBvD,YAAY,CAACuD,QAAQ,CAAC;IACxB;IACA,IAAI3E,QAAQ,EAAE;MACZA,QAAQ,CAACyE,KAAK,CAAC;IACjB;EACF,CAAC,EACD,CAACzE,QAAQ,EAAEW,WAAW,EAAES,YAAY,CACtC,CAAC;EAED,MAAMwD,iBAAiB,GAAGtG,WAAW,CAClCmG,KAA4B,IAAK;IAChC,IAAI/F,QAAQ,CAACmG,EAAE,KAAK,KAAK,IAAIjE,UAAU,EAAE;MACvC;IACF;IACA6D,KAAK,CAACK,cAAc,CAAC,CAAC;IACtBL,KAAK,CAACM,eAAe,CAAC,CAAC;IACvB,MAAM;MAAEC,CAAC;MAAEC;IAAE,CAAC,GAAG3F,gBAAgB,CAACmF,KAAK,CAACC,WAAW,CAAC;IACpDjC,SAAS,CAACuC,CAAC,EAAEC,CAAC,EAAE3D,UAAU,CAACC,OAAO,GAAG,GAAG,CAAC;EAC3C,CAAC,EACD,CAACX,UAAU,EAAE6B,SAAS,CACxB,CAAC;EAED,MAAMyC,KAAK,GAAGxG,QAAQ,CAACmG,EAAE,KAAK,KAAK;;EAEnC;EACA;EACA;EACA;EACA;EACA;EACA,MAAMM,IAAI,GAAGrF,OAAO,GAAGZ,IAAI,GAAGgG,KAAK,GAAGvG,SAAS,GAAGC,IAAI;EAEtD,MAAMwG,WAAW,GAAG9G,WAAW,CAC5B+G,IAA2C,IAAK;IAC/ChE,QAAQ,CAACE,OAAO,GAAG8D,IAAI;IACvBlG,SAAS,CAACsB,GAAG,EAAE4E,IAAI,CAAC;EACtB,CAAC,EACD,CAAC5E,GAAG,EAAEY,QAAQ,CAChB,CAAC;EAED,MAAMiE,mBAAmC,GAAG;IAC1CC,aAAa,EAAEX,iBAA+D;IAC9E3E,SAAS,EAAEpB,oBAAoB,CAC7BoB,SAAS,EACTpB,oBAAoB,CAACmD,UAAU,CAAC/B,SAAS,EAAE,MAAMiB,YAAY,CAAC,IAAI,CAAC,CACrE,CAAC;IACDhB,UAAU,EAAErB,oBAAoB,CAC9BqB,UAAU,EACVrB,oBAAoB,CAACmD,UAAU,CAAC9B,UAAU,EAAE,MAAMgB,YAAY,CAAC,KAAK,CAAC,CACvE,CAAC;IACDb,SAAS,EAAExB,oBAAoB,CAACwB,SAAS,EAAEkC,cAAc,CAAClC,SAAS,CAAC;IACpEC,UAAU,EAAEzB,oBAAoB,CAACyB,UAAU,EAAEiC,cAAc,CAACjC,UAAU,CAAC;IACvEkF,QAAQ,EAAE5E,UAAU;IACpB6E,QAAQ,EAAE,CAAC;EACb,CAAC;EAED,oBACE7F,IAAA,CAACuF,IAAI;IACH1E,GAAG,EAAE2E,WAAY;IAAA,GACZ5E,KAAK;IAAA,IACL0E,KAAK,GAAGI,mBAAmB,GAAG5C,YAAY,CAACgD,WAAW;IAC3D1F,QAAQ,EAAEwE,YAAa;IACvBrE,OAAO,EAAEtB,oBAAoB,CAC3BA,oBAAoB,CAACsB,OAAO,EAAqC+B,UAAU,CAAC/B,OAAO,CAAC,EACpFtB,oBAAoB,CAACwD,cAAc,CAAClC,OAAO,EAAE,MAAMgB,YAAY,CAAC,IAAI,CAAC,CACvE,CAAE;IACFf,MAAM,EAAEvB,oBAAoB,CAC1BA,oBAAoB,CAACuB,MAAM,EAAqC8B,UAAU,CAAC9B,MAAM,CAAC,EAClFvB,oBAAoB,CAACwD,cAAc,CAACjC,MAAM,EAAE,MAAMe,YAAY,CAAC,KAAK,CAAC,CACvE,CAAE;IACFpB,KAAK,EAAE,CAAC+D,UAAU,EAAE/D,KAAK,CAAE;IAC3B4F,iBAAiB,EAAC,MAAM;IACxBC,yBAAyB,EAAC,IAAI;IAAA,GAC1BxG,cAAc,CAAC;MACjByG,IAAI,EAAE,cAAc;MACpBC,KAAK,EAAE7D,SAAS;MAChB8D,KAAK,EAAE5D,SAAS;MAChB6D,YAAY,EAAE5D,cAAc;MAC5B;MACA;MACA;MACA6D,MAAM,EAAEzD,SAAS,IAAI3B,UAAU;MAC/BqF,QAAQ,EAAErF,UAAU;MACpB2E,QAAQ,EAAE5E;IACZ,CAAC,CAAC;IAAAL,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC;AAEDV,WAAW,CAACsG,WAAW,GAAG,aAAa","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { createContext } from '@cdx-ui/utils';
4
+ export const [SliderProvider, useSliderContext] = createContext('SliderContext');
5
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","SliderProvider","useSliderContext"],"sourceRoot":"../../../src","sources":["slider/context.tsx"],"mappings":";;AAEA,SAASA,aAAa,QAAQ,eAAe;AAkC7C,OAAO,MAAM,CAACC,cAAc,EAAEC,gBAAgB,CAAC,GAC7CF,aAAa,CAAqB,eAAe,CAAC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ export { useSliderContext } from './context';
4
+ export { SliderRoot } from './SliderRoot';
5
+ export { SliderRail } from './SliderRail';
6
+ export { SliderThumb } from './SliderThumb';
7
+ export { getMarkerPositionStyle, getMarkerStepValues, percentToFillExtent, SLIDER_MARKER_SIZE, valueToPercent } from './utils';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useSliderContext","SliderRoot","SliderRail","SliderThumb","getMarkerPositionStyle","getMarkerStepValues","percentToFillExtent","SLIDER_MARKER_SIZE","valueToPercent"],"sourceRoot":"../../../src","sources":["slider/index.ts"],"mappings":";;AAQA,SAASA,gBAAgB,QAAQ,WAAW;AAC5C,SAASC,UAAU,QAA8B,cAAc;AAC/D,SAASC,UAAU,QAA8B,cAAc;AAC/D,SAASC,WAAW,QAA+B,eAAe;AAClE,SACEC,sBAAsB,EACtBC,mBAAmB,EACnBC,mBAAmB,EACnBC,kBAAkB,EAClBC,cAAc,QACT,SAAS","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["slider/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef } from 'react';
4
+ import { Platform } from 'react-native';
5
+ import { clamp, getThumbTravel, pointerCoordToRatio, pointerCoordToVerticalRatio } from './utils';
6
+ export function getPointerCoords(nativeEvent) {
7
+ if (Platform.OS === 'web' && nativeEvent.clientX != null && nativeEvent.clientY != null) {
8
+ return {
9
+ x: nativeEvent.clientX,
10
+ y: nativeEvent.clientY
11
+ };
12
+ }
13
+ return {
14
+ x: nativeEvent.pageX ?? 0,
15
+ y: nativeEvent.pageY ?? 0
16
+ };
17
+ }
18
+ export function getRatioFromPagePoint(pageX, pageY, trackLayout, orientation, thumbSize) {
19
+ if (!trackLayout) {
20
+ return 0;
21
+ }
22
+ if (orientation === 'horizontal') {
23
+ return pointerCoordToRatio(pageX, trackLayout.x, trackLayout.width, thumbSize);
24
+ }
25
+ return pointerCoordToVerticalRatio(pageY, trackLayout.y, trackLayout.height, thumbSize);
26
+ }
27
+ export function useWebSliderDrag({
28
+ isDisabled,
29
+ setIsDragging,
30
+ setValueFromRatio,
31
+ trackLayout,
32
+ orientation,
33
+ thumbSize
34
+ }) {
35
+ const draggingRef = useRef(false);
36
+ const lastRatioRef = useRef(0);
37
+ const dragContextRef = useRef(null);
38
+ const cleanupRef = useRef(null);
39
+ useEffect(() => {
40
+ return () => {
41
+ cleanupRef.current?.();
42
+ cleanupRef.current = null;
43
+ };
44
+ }, []);
45
+ const endDrag = useCallback(() => {
46
+ if (!draggingRef.current) {
47
+ return;
48
+ }
49
+ draggingRef.current = false;
50
+ dragContextRef.current = null;
51
+ setIsDragging(false);
52
+ setValueFromRatio(lastRatioRef.current, true);
53
+ }, [setIsDragging, setValueFromRatio]);
54
+ const startDrag = useCallback((pageX, pageY, anchorRatio, trackLayoutOverride) => {
55
+ if (isDisabled || Platform.OS !== 'web' || typeof window === 'undefined') {
56
+ return;
57
+ }
58
+ const layout = trackLayoutOverride ?? trackLayout;
59
+ if (!layout) {
60
+ return;
61
+ }
62
+ const trackSize = orientation === 'horizontal' ? layout.width : layout.height;
63
+ const travel = getThumbTravel(trackSize, thumbSize);
64
+ if (travel <= 0) {
65
+ return;
66
+ }
67
+ const startPointer = orientation === 'horizontal' ? pageX : pageY;
68
+ const startRatio = anchorRatio != null ? clamp(anchorRatio, 0, 1) : getRatioFromPagePoint(pageX, pageY, layout, orientation, thumbSize);
69
+ lastRatioRef.current = startRatio;
70
+ draggingRef.current = true;
71
+ dragContextRef.current = {
72
+ startPointer,
73
+ startRatio,
74
+ travel
75
+ };
76
+ setIsDragging(true);
77
+ setValueFromRatio(startRatio);
78
+ const onMove = event => {
79
+ if (!draggingRef.current || !dragContextRef.current) {
80
+ return;
81
+ }
82
+ event.preventDefault();
83
+ const pointer = orientation === 'horizontal' ? event.clientX : event.clientY;
84
+ const delta = pointer - dragContextRef.current.startPointer;
85
+ const deltaAlongTrack = orientation === 'horizontal' ? delta : -delta;
86
+ const nextRatio = clamp(dragContextRef.current.startRatio + deltaAlongTrack / dragContextRef.current.travel, 0, 1);
87
+ lastRatioRef.current = nextRatio;
88
+ setValueFromRatio(nextRatio);
89
+ };
90
+ const onUp = () => {
91
+ cleanupRef.current = null;
92
+ window.removeEventListener('pointermove', onMove);
93
+ window.removeEventListener('pointerup', onUp);
94
+ window.removeEventListener('pointercancel', onUp);
95
+ endDrag();
96
+ };
97
+ window.addEventListener('pointermove', onMove);
98
+ window.addEventListener('pointerup', onUp);
99
+ window.addEventListener('pointercancel', onUp);
100
+ cleanupRef.current = () => {
101
+ window.removeEventListener('pointermove', onMove);
102
+ window.removeEventListener('pointerup', onUp);
103
+ window.removeEventListener('pointercancel', onUp);
104
+ };
105
+ }, [endDrag, isDisabled, orientation, setIsDragging, setValueFromRatio, thumbSize, trackLayout]);
106
+ return {
107
+ startDrag
108
+ };
109
+ }
110
+ //# sourceMappingURL=useSliderPointer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","Platform","clamp","getThumbTravel","pointerCoordToRatio","pointerCoordToVerticalRatio","getPointerCoords","nativeEvent","OS","clientX","clientY","x","y","pageX","pageY","getRatioFromPagePoint","trackLayout","orientation","thumbSize","width","height","useWebSliderDrag","isDisabled","setIsDragging","setValueFromRatio","draggingRef","lastRatioRef","dragContextRef","cleanupRef","current","endDrag","startDrag","anchorRatio","trackLayoutOverride","window","layout","trackSize","travel","startPointer","startRatio","onMove","event","preventDefault","pointer","delta","deltaAlongTrack","nextRatio","onUp","removeEventListener","addEventListener"],"sourceRoot":"../../../src","sources":["slider/useSliderPointer.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ function toPercentDimension(percent) {
4
+ return `${String(percent)}%`;
5
+ }
6
+ export const SLIDER_MARKER_SIZE = 3;
7
+ export function clamp(value, min, max) {
8
+ return Math.min(max, Math.max(min, value));
9
+ }
10
+ export function getThumbTravel(trackSize, _thumbSize) {
11
+ return Math.max(trackSize, 0);
12
+ }
13
+
14
+ /** Thumb leading-edge offset along the track axis (center-based). */
15
+ export function percentToThumbOffset(percent, trackSize, thumbSize) {
16
+ if (trackSize <= 0) return 0;
17
+ return clamp(percent, 0, 100) / 100 * trackSize - thumbSize / 2;
18
+ }
19
+
20
+ /** Filled track extent to the thumb center. */
21
+ export function percentToFillExtent(percent, trackSize, _thumbSize) {
22
+ if (trackSize <= 0) return 0;
23
+ return clamp(percent, 0, 100) / 100 * trackSize;
24
+ }
25
+
26
+ /** Map a pointer coordinate on the track axis to a 0–1 ratio. */
27
+ export function pointerCoordToRatio(pointerCoord, trackStart, trackSize, _thumbSize) {
28
+ if (trackSize <= 0) {
29
+ return 0;
30
+ }
31
+ return clamp((pointerCoord - trackStart) / trackSize, 0, 1);
32
+ }
33
+
34
+ /** Vertical slider: bottom = min (0), top = max (1). */
35
+ export function pointerCoordToVerticalRatio(pointerCoord, trackStart, trackSize, _thumbSize) {
36
+ if (trackSize <= 0) {
37
+ return 0;
38
+ }
39
+ return clamp((trackStart + trackSize - pointerCoord) / trackSize, 0, 1);
40
+ }
41
+ export function snapToStep(value, min, max, step) {
42
+ if (step <= 0) {
43
+ return clamp(value, min, max);
44
+ }
45
+ const stepped = min + Math.round((value - min) / step) * step;
46
+ return clamp(stepped, min, max);
47
+ }
48
+ export function valueToPercent(value, min, max) {
49
+ if (max <= min) {
50
+ return 0;
51
+ }
52
+ return (clamp(value, min, max) - min) / (max - min) * 100;
53
+ }
54
+ export function percentToValue(percent, min, max, step) {
55
+ const ratio = clamp(percent, 0, 100) / 100;
56
+ return snapToStep(min + ratio * (max - min), min, max, step);
57
+ }
58
+ export function formatSliderValue(value) {
59
+ return Number.isInteger(value) ? String(value) : value.toFixed(1);
60
+ }
61
+ export function getMarkerStepValues(min, max, step) {
62
+ if (step <= 0 || max <= min) {
63
+ return [];
64
+ }
65
+ const decimals = getDecimalPlaces(step);
66
+ const stepCount = Math.floor((max - min) / step);
67
+ const values = Array.from({
68
+ length: stepCount + 1
69
+ }, (_, index) => roundTo(min + index * step, decimals));
70
+ if (values[values.length - 1] < max) {
71
+ values.push(max);
72
+ }
73
+ return values;
74
+ }
75
+ function getDecimalPlaces(n) {
76
+ const str = String(n);
77
+ const dotIndex = str.indexOf('.');
78
+ return dotIndex === -1 ? 0 : str.length - dotIndex - 1;
79
+ }
80
+ function roundTo(value, decimals) {
81
+ const factor = 10 ** decimals;
82
+ return Math.round(value * factor) / factor;
83
+ }
84
+
85
+ /** Marker leading-edge offset (center-aligned to the thumb coordinate system). */
86
+ export function percentToMarkerCenterOffset(percent, trackSize, markerSize = SLIDER_MARKER_SIZE) {
87
+ if (trackSize <= 0) return 0;
88
+ return clamp(percent, 0, 100) / 100 * trackSize - markerSize / 2;
89
+ }
90
+ export function getMarkerPositionStyle(percent, orientation, trackLayout, _thumbSize, markerSize = SLIDER_MARKER_SIZE) {
91
+ const trackSize = trackLayout == null ? 0 : orientation === 'horizontal' ? trackLayout.width : trackLayout.height;
92
+ if (trackSize > 0) {
93
+ const offset = percentToMarkerCenterOffset(percent, trackSize, markerSize);
94
+ if (orientation === 'vertical') {
95
+ return {
96
+ position: 'absolute',
97
+ left: '50%',
98
+ bottom: offset,
99
+ width: markerSize,
100
+ height: markerSize,
101
+ marginLeft: -markerSize / 2
102
+ };
103
+ }
104
+ return {
105
+ position: 'absolute',
106
+ top: '50%',
107
+ left: offset,
108
+ width: markerSize,
109
+ height: markerSize,
110
+ marginTop: -markerSize / 2
111
+ };
112
+ }
113
+ if (orientation === 'vertical') {
114
+ return {
115
+ position: 'absolute',
116
+ left: '50%',
117
+ bottom: toPercentDimension(percent),
118
+ width: markerSize,
119
+ height: markerSize,
120
+ marginLeft: -markerSize / 2,
121
+ transform: [{
122
+ translateY: markerSize / 2
123
+ }]
124
+ };
125
+ }
126
+ return {
127
+ position: 'absolute',
128
+ top: '50%',
129
+ left: toPercentDimension(percent),
130
+ width: markerSize,
131
+ height: markerSize,
132
+ marginTop: -markerSize / 2,
133
+ transform: [{
134
+ translateX: -markerSize / 2
135
+ }]
136
+ };
137
+ }
138
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["toPercentDimension","percent","String","SLIDER_MARKER_SIZE","clamp","value","min","max","Math","getThumbTravel","trackSize","_thumbSize","percentToThumbOffset","thumbSize","percentToFillExtent","pointerCoordToRatio","pointerCoord","trackStart","pointerCoordToVerticalRatio","snapToStep","step","stepped","round","valueToPercent","percentToValue","ratio","formatSliderValue","Number","isInteger","toFixed","getMarkerStepValues","decimals","getDecimalPlaces","stepCount","floor","values","Array","from","length","_","index","roundTo","push","n","str","dotIndex","indexOf","factor","percentToMarkerCenterOffset","markerSize","getMarkerPositionStyle","orientation","trackLayout","width","height","offset","position","left","bottom","marginLeft","top","marginTop","transform","translateY","translateX"],"sourceRoot":"../../../src","sources":["slider/utils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ export function assignRef(ref, value) {
4
+ if (typeof ref === 'function') {
5
+ ref(value);
6
+ return;
7
+ }
8
+ if (ref) {
9
+ ref.current = value;
10
+ }
11
+ }
12
+ //# sourceMappingURL=assignRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assignRef","ref","value","current"],"sourceRoot":"../../../src","sources":["utils/assignRef.ts"],"mappings":";;AAEA,OAAO,SAASA,SAASA,CAAIC,GAAoB,EAAEC,KAAe,EAAE;EAClE,IAAI,OAAOD,GAAG,KAAK,UAAU,EAAE;IAC7BA,GAAG,CAACC,KAAK,CAAC;IACV;EACF;EACA,IAAID,GAAG,EAAE;IACPA,GAAG,CAACE,OAAO,GAAGD,KAAK;EACrB;AACF","ignoreList":[]}
@@ -8,8 +8,10 @@ import { Platform } from 'react-native';
8
8
  * `react-dom`, which would cause a build error on native platforms.
9
9
  */
10
10
  export const createPortalFn = (() => {
11
- if (Platform.OS !== 'web') return undefined;
12
11
  try {
12
+ if (Platform.OS !== 'web') {
13
+ return undefined;
14
+ }
13
15
  // eslint-disable-next-line @typescript-eslint/no-require-imports
14
16
  return require('react-dom').createPortal;
15
17
  } catch {
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","createPortalFn","OS","undefined","require","createPortal"],"sourceRoot":"../../../src","sources":["utils/createPortal.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AAIvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAA0C,GAAG,CAAC,MAAM;EAC/D,IAAID,QAAQ,CAACE,EAAE,KAAK,KAAK,EAAE,OAAOC,SAAS;EAC3C,IAAI;IACF;IACA,OAAQC,OAAO,CAAC,WAAW,CAAC,CAAsCC,YAAY;EAChF,CAAC,CAAC,MAAM;IACN,OAAOF,SAAS;EAClB;AACF,CAAC,EAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Platform","createPortalFn","OS","undefined","require","createPortal"],"sourceRoot":"../../../src","sources":["utils/createPortal.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AAIvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAA0C,GAAG,CAAC,MAAM;EAC/D,IAAI;IACF,IAAID,QAAQ,CAACE,EAAE,KAAK,KAAK,EAAE;MACzB,OAAOC,SAAS;IAClB;IACA;IACA,OAAQC,OAAO,CAAC,WAAW,CAAC,CAAsCC,YAAY;EAChF,CAAC,CAAC,MAAM;IACN,OAAOF,SAAS;EAClB;AACF,CAAC,EAAE,CAAC","ignoreList":[]}
@@ -11,6 +11,7 @@ export * from './otp-input';
11
11
  export * from './link';
12
12
  export * from './list-item';
13
13
  export { type EdgeInsets, OverlayInsetsProvider } from './overlay';
14
+ export { useAnchorPosition, type AnchorLayout } from './overlay';
14
15
  export * from './select';
15
16
  export * from './switch';
16
17
  export * from './tile';
@@ -18,9 +19,12 @@ export * from './toast';
18
19
  export * from './portal';
19
20
  export * from './progress-bar';
20
21
  export * from './radio';
22
+ export * from './slider';
21
23
  export type { InteractionState } from './types';
22
24
  export { FormControlContext, useFormControlContext } from '@cdx-ui/utils';
23
25
  export { dataAttributes, mergeDataAttributes } from './utils/dataAttributes';
24
26
  export { domDataAttributes, mergeDomDataAttributes, type DomDataAttributeValue, } from './utils/domDataAttributes';
27
+ export { assignRef } from './utils/assignRef';
28
+ export { createPortalFn } from './utils/createPortal';
25
29
  export { Slot } from './slot';
26
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACjE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
@@ -5,11 +5,17 @@ export interface AnchorLayout {
5
5
  width: number;
6
6
  height: number;
7
7
  }
8
+ export interface UseAnchorPositionOptions {
9
+ /** Re-run layout measurement when this value changes (e.g. slider value percent). */
10
+ remeasureKey?: unknown;
11
+ /** Poll anchor position each animation frame while open (for anchors that move). */
12
+ trackWhileOpen?: boolean;
13
+ }
8
14
  /**
9
15
  * Measures an anchor element's position and size, re-measuring on scroll/resize
10
16
  * (web) so a positioned overlay can track its anchor across layout changes.
11
17
  *
12
18
  * Returns `null` until the first measurement completes.
13
19
  */
14
- export declare function useAnchorPosition(anchorRef: RefObject<any>, open: boolean): AnchorLayout | null;
20
+ export declare function useAnchorPosition(anchorRef: RefObject<any>, open: boolean, options?: UseAnchorPositionOptions): AnchorLayout | null;
15
21
  //# sourceMappingURL=useAnchorPosition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAnchorPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/useAnchorPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CA+C/F"}
1
+ {"version":3,"file":"useAnchorPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/useAnchorPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EACzB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,wBAAwB,GACjC,YAAY,GAAG,IAAI,CAuFrB"}
@@ -0,0 +1,6 @@
1
+ import { View } from 'react-native';
2
+ import type { InterfaceSliderRailProps } from './types';
3
+ export interface SliderRailProps extends InterfaceSliderRailProps {
4
+ }
5
+ export declare const SliderRail: import("react").ForwardRefExoticComponent<SliderRailProps & import("react").RefAttributes<View>>;
6
+ //# sourceMappingURL=SliderRail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliderRail.d.ts","sourceRoot":"","sources":["../../../src/slider/SliderRail.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,IAAI,EAIL,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGxD,MAAM,WAAW,eAAgB,SAAQ,wBAAwB;CAAG;AAEpE,eAAO,MAAM,UAAU,kGAiHtB,CAAC"}