@cdx-ui/primitives 0.0.1-beta.114 → 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.
- package/README.md +32 -30
- package/lib/commonjs/index.js +35 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/overlay/useAnchorPosition.js +60 -11
- package/lib/commonjs/overlay/useAnchorPosition.js.map +1 -1
- package/lib/commonjs/slider/SliderRail.js +131 -0
- package/lib/commonjs/slider/SliderRail.js.map +1 -0
- package/lib/commonjs/slider/SliderRoot.js +186 -0
- package/lib/commonjs/slider/SliderRoot.js.map +1 -0
- package/lib/commonjs/slider/SliderThumb.js +228 -0
- package/lib/commonjs/slider/SliderThumb.js.map +1 -0
- package/lib/commonjs/slider/context.js +11 -0
- package/lib/commonjs/slider/context.js.map +1 -0
- package/lib/commonjs/slider/index.js +65 -0
- package/lib/commonjs/slider/index.js.map +1 -0
- package/lib/commonjs/slider/types.js +6 -0
- package/lib/commonjs/slider/types.js.map +1 -0
- package/lib/commonjs/slider/useSliderPointer.js +116 -0
- package/lib/commonjs/slider/useSliderPointer.js.map +1 -0
- package/lib/commonjs/slider/utils.js +155 -0
- package/lib/commonjs/slider/utils.js.map +1 -0
- package/lib/commonjs/utils/assignRef.js +16 -0
- package/lib/commonjs/utils/assignRef.js.map +1 -0
- package/lib/commonjs/utils/createPortal.js +3 -1
- package/lib/commonjs/utils/createPortal.js.map +1 -1
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/overlay/useAnchorPosition.js +60 -11
- package/lib/module/overlay/useAnchorPosition.js.map +1 -1
- package/lib/module/slider/SliderRail.js +127 -0
- package/lib/module/slider/SliderRail.js.map +1 -0
- package/lib/module/slider/SliderRoot.js +182 -0
- package/lib/module/slider/SliderRoot.js.map +1 -0
- package/lib/module/slider/SliderThumb.js +224 -0
- package/lib/module/slider/SliderThumb.js.map +1 -0
- package/lib/module/slider/context.js +5 -0
- package/lib/module/slider/context.js.map +1 -0
- package/lib/module/slider/index.js +8 -0
- package/lib/module/slider/index.js.map +1 -0
- package/lib/module/slider/types.js +4 -0
- package/lib/module/slider/types.js.map +1 -0
- package/lib/module/slider/useSliderPointer.js +110 -0
- package/lib/module/slider/useSliderPointer.js.map +1 -0
- package/lib/module/slider/utils.js +138 -0
- package/lib/module/slider/utils.js.map +1 -0
- package/lib/module/utils/assignRef.js +12 -0
- package/lib/module/utils/assignRef.js.map +1 -0
- package/lib/module/utils/createPortal.js +3 -1
- package/lib/module/utils/createPortal.js.map +1 -1
- package/lib/typescript/index.d.ts +4 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/overlay/useAnchorPosition.d.ts +7 -1
- package/lib/typescript/overlay/useAnchorPosition.d.ts.map +1 -1
- package/lib/typescript/slider/SliderRail.d.ts +6 -0
- package/lib/typescript/slider/SliderRail.d.ts.map +1 -0
- package/lib/typescript/slider/SliderRoot.d.ts +7 -0
- package/lib/typescript/slider/SliderRoot.d.ts.map +1 -0
- package/lib/typescript/slider/SliderThumb.d.ts +6 -0
- package/lib/typescript/slider/SliderThumb.d.ts.map +1 -0
- package/lib/typescript/slider/context.d.ts +37 -0
- package/lib/typescript/slider/context.d.ts.map +1 -0
- package/lib/typescript/slider/index.d.ts +8 -0
- package/lib/typescript/slider/index.d.ts.map +1 -0
- package/lib/typescript/slider/types.d.ts +37 -0
- package/lib/typescript/slider/types.d.ts.map +1 -0
- package/lib/typescript/slider/useSliderPointer.d.ts +23 -0
- package/lib/typescript/slider/useSliderPointer.d.ts.map +1 -0
- package/lib/typescript/slider/utils.d.ts +23 -0
- package/lib/typescript/slider/utils.d.ts.map +1 -0
- package/lib/typescript/utils/assignRef.d.ts +3 -0
- package/lib/typescript/utils/assignRef.d.ts.map +1 -0
- package/lib/typescript/utils/createPortal.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +4 -0
- package/src/overlay/useAnchorPosition.ts +79 -11
- package/src/slider/SliderRail.tsx +143 -0
- package/src/slider/SliderRoot.tsx +266 -0
- package/src/slider/SliderThumb.tsx +268 -0
- package/src/slider/context.tsx +38 -0
- package/src/slider/index.ts +19 -0
- package/src/slider/types.ts +44 -0
- package/src/slider/useSliderPointer.ts +157 -0
- package/src/slider/utils.ts +181 -0
- package/src/utils/assignRef.ts +11 -0
- package/src/utils/createPortal.ts +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_utils","getPointerCoords","nativeEvent","Platform","OS","clientX","clientY","x","y","pageX","pageY","getRatioFromPagePoint","trackLayout","orientation","thumbSize","pointerCoordToRatio","width","pointerCoordToVerticalRatio","height","useWebSliderDrag","isDisabled","setIsDragging","setValueFromRatio","draggingRef","useRef","lastRatioRef","dragContextRef","cleanupRef","useEffect","current","endDrag","useCallback","startDrag","anchorRatio","trackLayoutOverride","window","layout","trackSize","travel","getThumbTravel","startPointer","startRatio","clamp","onMove","event","preventDefault","pointer","delta","deltaAlongTrack","nextRatio","onUp","removeEventListener","addEventListener"],"sourceRoot":"../../../src","sources":["slider/useSliderPointer.ts"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AAEO,SAASG,gBAAgBA,CAACC,WAKhC,EAA4B;EAC3B,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAIF,WAAW,CAACG,OAAO,IAAI,IAAI,IAAIH,WAAW,CAACI,OAAO,IAAI,IAAI,EAAE;IACvF,OAAO;MAAEC,CAAC,EAAEL,WAAW,CAACG,OAAO;MAAEG,CAAC,EAAEN,WAAW,CAACI;IAAQ,CAAC;EAC3D;EAEA,OAAO;IACLC,CAAC,EAAEL,WAAW,CAACO,KAAK,IAAI,CAAC;IACzBD,CAAC,EAAEN,WAAW,CAACQ,KAAK,IAAI;EAC1B,CAAC;AACH;AAEO,SAASC,qBAAqBA,CACnCF,KAAa,EACbC,KAAa,EACbE,WAAqC,EACrCC,WAA8B,EAC9BC,SAAiB,EACT;EACR,IAAI,CAACF,WAAW,EAAE;IAChB,OAAO,CAAC;EACV;EAEA,IAAIC,WAAW,KAAK,YAAY,EAAE;IAChC,OAAO,IAAAE,0BAAmB,EAACN,KAAK,EAAEG,WAAW,CAACL,CAAC,EAAEK,WAAW,CAACI,KAAK,EAAEF,SAAS,CAAC;EAChF;EAEA,OAAO,IAAAG,kCAA2B,EAACP,KAAK,EAAEE,WAAW,CAACJ,CAAC,EAAEI,WAAW,CAACM,MAAM,EAAEJ,SAAS,CAAC;AACzF;AAQO,SAASK,gBAAgBA,CAAC;EAC/BC,UAAU;EACVC,aAAa;EACbC,iBAAiB;EACjBV,WAAW;EACXC,WAAW;EACXC;AAQF,CAAC,EAAE;EACD,MAAMS,WAAW,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EACjC,MAAMC,YAAY,GAAG,IAAAD,aAAM,EAAC,CAAC,CAAC;EAC9B,MAAME,cAAc,GAAG,IAAAF,aAAM,EAAwB,IAAI,CAAC;EAC1D,MAAMG,UAAU,GAAG,IAAAH,aAAM,EAAsB,IAAI,CAAC;EAEpD,IAAAI,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACXD,UAAU,CAACE,OAAO,GAAG,CAAC;MACtBF,UAAU,CAACE,OAAO,GAAG,IAAI;IAC3B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,OAAO,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAChC,IAAI,CAACR,WAAW,CAACM,OAAO,EAAE;MACxB;IACF;IACAN,WAAW,CAACM,OAAO,GAAG,KAAK;IAC3BH,cAAc,CAACG,OAAO,GAAG,IAAI;IAC7BR,aAAa,CAAC,KAAK,CAAC;IACpBC,iBAAiB,CAACG,YAAY,CAACI,OAAO,EAAE,IAAI,CAAC;EAC/C,CAAC,EAAE,CAACR,aAAa,EAAEC,iBAAiB,CAAC,CAAC;EAEtC,MAAMU,SAAS,GAAG,IAAAD,kBAAW,EAC3B,CACEtB,KAAa,EACbC,KAAa,EACbuB,WAAoB,EACpBC,mBAAuC,KACpC;IACH,IAAId,UAAU,IAAIjB,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAO+B,MAAM,KAAK,WAAW,EAAE;MACxE;IACF;IAEA,MAAMC,MAAM,GAAGF,mBAAmB,IAAItB,WAAW;IACjD,IAAI,CAACwB,MAAM,EAAE;MACX;IACF;IAEA,MAAMC,SAAS,GAAGxB,WAAW,KAAK,YAAY,GAAGuB,MAAM,CAACpB,KAAK,GAAGoB,MAAM,CAAClB,MAAM;IAC7E,MAAMoB,MAAM,GAAG,IAAAC,qBAAc,EAACF,SAAS,EAAEvB,SAAS,CAAC;IACnD,IAAIwB,MAAM,IAAI,CAAC,EAAE;MACf;IACF;IAEA,MAAME,YAAY,GAAG3B,WAAW,KAAK,YAAY,GAAGJ,KAAK,GAAGC,KAAK;IACjE,MAAM+B,UAAU,GACdR,WAAW,IAAI,IAAI,GACf,IAAAS,YAAK,EAACT,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,GACxBtB,qBAAqB,CAACF,KAAK,EAAEC,KAAK,EAAE0B,MAAM,EAAEvB,WAAW,EAAEC,SAAS,CAAC;IAEzEW,YAAY,CAACI,OAAO,GAAGY,UAAU;IACjClB,WAAW,CAACM,OAAO,GAAG,IAAI;IAC1BH,cAAc,CAACG,OAAO,GAAG;MAAEW,YAAY;MAAEC,UAAU;MAAEH;IAAO,CAAC;IAC7DjB,aAAa,CAAC,IAAI,CAAC;IACnBC,iBAAiB,CAACmB,UAAU,CAAC;IAE7B,MAAME,MAAM,GAAIC,KAAmB,IAAK;MACtC,IAAI,CAACrB,WAAW,CAACM,OAAO,IAAI,CAACH,cAAc,CAACG,OAAO,EAAE;QACnD;MACF;MACAe,KAAK,CAACC,cAAc,CAAC,CAAC;MACtB,MAAMC,OAAO,GAAGjC,WAAW,KAAK,YAAY,GAAG+B,KAAK,CAACvC,OAAO,GAAGuC,KAAK,CAACtC,OAAO;MAC5E,MAAMyC,KAAK,GAAGD,OAAO,GAAGpB,cAAc,CAACG,OAAO,CAACW,YAAY;MAC3D,MAAMQ,eAAe,GAAGnC,WAAW,KAAK,YAAY,GAAGkC,KAAK,GAAG,CAACA,KAAK;MACrE,MAAME,SAAS,GAAG,IAAAP,YAAK,EACrBhB,cAAc,CAACG,OAAO,CAACY,UAAU,GAAGO,eAAe,GAAGtB,cAAc,CAACG,OAAO,CAACS,MAAM,EACnF,CAAC,EACD,CACF,CAAC;MACDb,YAAY,CAACI,OAAO,GAAGoB,SAAS;MAChC3B,iBAAiB,CAAC2B,SAAS,CAAC;IAC9B,CAAC;IAED,MAAMC,IAAI,GAAGA,CAAA,KAAM;MACjBvB,UAAU,CAACE,OAAO,GAAG,IAAI;MACzBM,MAAM,CAACgB,mBAAmB,CAAC,aAAa,EAAER,MAAM,CAAC;MACjDR,MAAM,CAACgB,mBAAmB,CAAC,WAAW,EAAED,IAAI,CAAC;MAC7Cf,MAAM,CAACgB,mBAAmB,CAAC,eAAe,EAAED,IAAI,CAAC;MACjDpB,OAAO,CAAC,CAAC;IACX,CAAC;IAEDK,MAAM,CAACiB,gBAAgB,CAAC,aAAa,EAAET,MAAM,CAAC;IAC9CR,MAAM,CAACiB,gBAAgB,CAAC,WAAW,EAAEF,IAAI,CAAC;IAC1Cf,MAAM,CAACiB,gBAAgB,CAAC,eAAe,EAAEF,IAAI,CAAC;IAE9CvB,UAAU,CAACE,OAAO,GAAG,MAAM;MACzBM,MAAM,CAACgB,mBAAmB,CAAC,aAAa,EAAER,MAAM,CAAC;MACjDR,MAAM,CAACgB,mBAAmB,CAAC,WAAW,EAAED,IAAI,CAAC;MAC7Cf,MAAM,CAACgB,mBAAmB,CAAC,eAAe,EAAED,IAAI,CAAC;IACnD,CAAC;EACH,CAAC,EACD,CAACpB,OAAO,EAAEV,UAAU,EAAEP,WAAW,EAAEQ,aAAa,EAAEC,iBAAiB,EAAER,SAAS,EAAEF,WAAW,CAC7F,CAAC;EAED,OAAO;IAAEoB;EAAU,CAAC;AACtB","ignoreList":[]}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SLIDER_MARKER_SIZE = void 0;
|
|
7
|
+
exports.clamp = clamp;
|
|
8
|
+
exports.formatSliderValue = formatSliderValue;
|
|
9
|
+
exports.getMarkerPositionStyle = getMarkerPositionStyle;
|
|
10
|
+
exports.getMarkerStepValues = getMarkerStepValues;
|
|
11
|
+
exports.getThumbTravel = getThumbTravel;
|
|
12
|
+
exports.percentToFillExtent = percentToFillExtent;
|
|
13
|
+
exports.percentToMarkerCenterOffset = percentToMarkerCenterOffset;
|
|
14
|
+
exports.percentToThumbOffset = percentToThumbOffset;
|
|
15
|
+
exports.percentToValue = percentToValue;
|
|
16
|
+
exports.pointerCoordToRatio = pointerCoordToRatio;
|
|
17
|
+
exports.pointerCoordToVerticalRatio = pointerCoordToVerticalRatio;
|
|
18
|
+
exports.snapToStep = snapToStep;
|
|
19
|
+
exports.valueToPercent = valueToPercent;
|
|
20
|
+
function toPercentDimension(percent) {
|
|
21
|
+
return `${String(percent)}%`;
|
|
22
|
+
}
|
|
23
|
+
const SLIDER_MARKER_SIZE = exports.SLIDER_MARKER_SIZE = 3;
|
|
24
|
+
function clamp(value, min, max) {
|
|
25
|
+
return Math.min(max, Math.max(min, value));
|
|
26
|
+
}
|
|
27
|
+
function getThumbTravel(trackSize, _thumbSize) {
|
|
28
|
+
return Math.max(trackSize, 0);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Thumb leading-edge offset along the track axis (center-based). */
|
|
32
|
+
function percentToThumbOffset(percent, trackSize, thumbSize) {
|
|
33
|
+
if (trackSize <= 0) return 0;
|
|
34
|
+
return clamp(percent, 0, 100) / 100 * trackSize - thumbSize / 2;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Filled track extent to the thumb center. */
|
|
38
|
+
function percentToFillExtent(percent, trackSize, _thumbSize) {
|
|
39
|
+
if (trackSize <= 0) return 0;
|
|
40
|
+
return clamp(percent, 0, 100) / 100 * trackSize;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Map a pointer coordinate on the track axis to a 0–1 ratio. */
|
|
44
|
+
function pointerCoordToRatio(pointerCoord, trackStart, trackSize, _thumbSize) {
|
|
45
|
+
if (trackSize <= 0) {
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
return clamp((pointerCoord - trackStart) / trackSize, 0, 1);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Vertical slider: bottom = min (0), top = max (1). */
|
|
52
|
+
function pointerCoordToVerticalRatio(pointerCoord, trackStart, trackSize, _thumbSize) {
|
|
53
|
+
if (trackSize <= 0) {
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
return clamp((trackStart + trackSize - pointerCoord) / trackSize, 0, 1);
|
|
57
|
+
}
|
|
58
|
+
function snapToStep(value, min, max, step) {
|
|
59
|
+
if (step <= 0) {
|
|
60
|
+
return clamp(value, min, max);
|
|
61
|
+
}
|
|
62
|
+
const stepped = min + Math.round((value - min) / step) * step;
|
|
63
|
+
return clamp(stepped, min, max);
|
|
64
|
+
}
|
|
65
|
+
function valueToPercent(value, min, max) {
|
|
66
|
+
if (max <= min) {
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
return (clamp(value, min, max) - min) / (max - min) * 100;
|
|
70
|
+
}
|
|
71
|
+
function percentToValue(percent, min, max, step) {
|
|
72
|
+
const ratio = clamp(percent, 0, 100) / 100;
|
|
73
|
+
return snapToStep(min + ratio * (max - min), min, max, step);
|
|
74
|
+
}
|
|
75
|
+
function formatSliderValue(value) {
|
|
76
|
+
return Number.isInteger(value) ? String(value) : value.toFixed(1);
|
|
77
|
+
}
|
|
78
|
+
function getMarkerStepValues(min, max, step) {
|
|
79
|
+
if (step <= 0 || max <= min) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
const decimals = getDecimalPlaces(step);
|
|
83
|
+
const stepCount = Math.floor((max - min) / step);
|
|
84
|
+
const values = Array.from({
|
|
85
|
+
length: stepCount + 1
|
|
86
|
+
}, (_, index) => roundTo(min + index * step, decimals));
|
|
87
|
+
if (values[values.length - 1] < max) {
|
|
88
|
+
values.push(max);
|
|
89
|
+
}
|
|
90
|
+
return values;
|
|
91
|
+
}
|
|
92
|
+
function getDecimalPlaces(n) {
|
|
93
|
+
const str = String(n);
|
|
94
|
+
const dotIndex = str.indexOf('.');
|
|
95
|
+
return dotIndex === -1 ? 0 : str.length - dotIndex - 1;
|
|
96
|
+
}
|
|
97
|
+
function roundTo(value, decimals) {
|
|
98
|
+
const factor = 10 ** decimals;
|
|
99
|
+
return Math.round(value * factor) / factor;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** Marker leading-edge offset (center-aligned to the thumb coordinate system). */
|
|
103
|
+
function percentToMarkerCenterOffset(percent, trackSize, markerSize = SLIDER_MARKER_SIZE) {
|
|
104
|
+
if (trackSize <= 0) return 0;
|
|
105
|
+
return clamp(percent, 0, 100) / 100 * trackSize - markerSize / 2;
|
|
106
|
+
}
|
|
107
|
+
function getMarkerPositionStyle(percent, orientation, trackLayout, _thumbSize, markerSize = SLIDER_MARKER_SIZE) {
|
|
108
|
+
const trackSize = trackLayout == null ? 0 : orientation === 'horizontal' ? trackLayout.width : trackLayout.height;
|
|
109
|
+
if (trackSize > 0) {
|
|
110
|
+
const offset = percentToMarkerCenterOffset(percent, trackSize, markerSize);
|
|
111
|
+
if (orientation === 'vertical') {
|
|
112
|
+
return {
|
|
113
|
+
position: 'absolute',
|
|
114
|
+
left: '50%',
|
|
115
|
+
bottom: offset,
|
|
116
|
+
width: markerSize,
|
|
117
|
+
height: markerSize,
|
|
118
|
+
marginLeft: -markerSize / 2
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
position: 'absolute',
|
|
123
|
+
top: '50%',
|
|
124
|
+
left: offset,
|
|
125
|
+
width: markerSize,
|
|
126
|
+
height: markerSize,
|
|
127
|
+
marginTop: -markerSize / 2
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
if (orientation === 'vertical') {
|
|
131
|
+
return {
|
|
132
|
+
position: 'absolute',
|
|
133
|
+
left: '50%',
|
|
134
|
+
bottom: toPercentDimension(percent),
|
|
135
|
+
width: markerSize,
|
|
136
|
+
height: markerSize,
|
|
137
|
+
marginLeft: -markerSize / 2,
|
|
138
|
+
transform: [{
|
|
139
|
+
translateY: markerSize / 2
|
|
140
|
+
}]
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
position: 'absolute',
|
|
145
|
+
top: '50%',
|
|
146
|
+
left: toPercentDimension(percent),
|
|
147
|
+
width: markerSize,
|
|
148
|
+
height: markerSize,
|
|
149
|
+
marginTop: -markerSize / 2,
|
|
150
|
+
transform: [{
|
|
151
|
+
translateX: -markerSize / 2
|
|
152
|
+
}]
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toPercentDimension","percent","String","SLIDER_MARKER_SIZE","exports","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":";;;;;;;;;;;;;;;;;;;AAMA,SAASA,kBAAkBA,CAACC,OAAe,EAAiB;EAC1D,OAAO,GAAGC,MAAM,CAACD,OAAO,CAAC,GAAG;AAC9B;AAEO,MAAME,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,CAAC;AAE5B,SAASE,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EACrE,OAAOC,IAAI,CAACF,GAAG,CAACC,GAAG,EAAEC,IAAI,CAACD,GAAG,CAACD,GAAG,EAAED,KAAK,CAAC,CAAC;AAC5C;AAEO,SAASI,cAAcA,CAACC,SAAiB,EAAEC,UAAkB,EAAU;EAC5E,OAAOH,IAAI,CAACD,GAAG,CAACG,SAAS,EAAE,CAAC,CAAC;AAC/B;;AAEA;AACO,SAASE,oBAAoBA,CAClCZ,OAAe,EACfU,SAAiB,EACjBG,SAAiB,EACT;EACR,IAAIH,SAAS,IAAI,CAAC,EAAE,OAAO,CAAC;EAC5B,OAAQN,KAAK,CAACJ,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAIU,SAAS,GAAGG,SAAS,GAAG,CAAC;AACnE;;AAEA;AACO,SAASC,mBAAmBA,CACjCd,OAAe,EACfU,SAAiB,EACjBC,UAAkB,EACV;EACR,IAAID,SAAS,IAAI,CAAC,EAAE,OAAO,CAAC;EAC5B,OAAQN,KAAK,CAACJ,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAIU,SAAS;AACnD;;AAEA;AACO,SAASK,mBAAmBA,CACjCC,YAAoB,EACpBC,UAAkB,EAClBP,SAAiB,EACjBC,UAAkB,EACV;EACR,IAAID,SAAS,IAAI,CAAC,EAAE;IAClB,OAAO,CAAC;EACV;EACA,OAAON,KAAK,CAAC,CAACY,YAAY,GAAGC,UAAU,IAAIP,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7D;;AAEA;AACO,SAASQ,2BAA2BA,CACzCF,YAAoB,EACpBC,UAAkB,EAClBP,SAAiB,EACjBC,UAAkB,EACV;EACR,IAAID,SAAS,IAAI,CAAC,EAAE;IAClB,OAAO,CAAC;EACV;EACA,OAAON,KAAK,CAAC,CAACa,UAAU,GAAGP,SAAS,GAAGM,YAAY,IAAIN,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE;AAEO,SAASS,UAAUA,CAACd,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAEa,IAAY,EAAU;EACxF,IAAIA,IAAI,IAAI,CAAC,EAAE;IACb,OAAOhB,KAAK,CAACC,KAAK,EAAEC,GAAG,EAAEC,GAAG,CAAC;EAC/B;EACA,MAAMc,OAAO,GAAGf,GAAG,GAAGE,IAAI,CAACc,KAAK,CAAC,CAACjB,KAAK,GAAGC,GAAG,IAAIc,IAAI,CAAC,GAAGA,IAAI;EAC7D,OAAOhB,KAAK,CAACiB,OAAO,EAAEf,GAAG,EAAEC,GAAG,CAAC;AACjC;AAEO,SAASgB,cAAcA,CAAClB,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EAC9E,IAAIA,GAAG,IAAID,GAAG,EAAE;IACd,OAAO,CAAC;EACV;EACA,OAAQ,CAACF,KAAK,CAACC,KAAK,EAAEC,GAAG,EAAEC,GAAG,CAAC,GAAGD,GAAG,KAAKC,GAAG,GAAGD,GAAG,CAAC,GAAI,GAAG;AAC7D;AAEO,SAASkB,cAAcA,CAACxB,OAAe,EAAEM,GAAW,EAAEC,GAAW,EAAEa,IAAY,EAAU;EAC9F,MAAMK,KAAK,GAAGrB,KAAK,CAACJ,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;EAC1C,OAAOmB,UAAU,CAACb,GAAG,GAAGmB,KAAK,IAAIlB,GAAG,GAAGD,GAAG,CAAC,EAAEA,GAAG,EAAEC,GAAG,EAAEa,IAAI,CAAC;AAC9D;AAEO,SAASM,iBAAiBA,CAACrB,KAAa,EAAU;EACvD,OAAOsB,MAAM,CAACC,SAAS,CAACvB,KAAK,CAAC,GAAGJ,MAAM,CAACI,KAAK,CAAC,GAAGA,KAAK,CAACwB,OAAO,CAAC,CAAC,CAAC;AACnE;AAEO,SAASC,mBAAmBA,CAACxB,GAAW,EAAEC,GAAW,EAAEa,IAAY,EAAY;EACpF,IAAIA,IAAI,IAAI,CAAC,IAAIb,GAAG,IAAID,GAAG,EAAE;IAC3B,OAAO,EAAE;EACX;EAEA,MAAMyB,QAAQ,GAAGC,gBAAgB,CAACZ,IAAI,CAAC;EACvC,MAAMa,SAAS,GAAGzB,IAAI,CAAC0B,KAAK,CAAC,CAAC3B,GAAG,GAAGD,GAAG,IAAIc,IAAI,CAAC;EAChD,MAAMe,MAAM,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAEL,SAAS,GAAG;EAAE,CAAC,EAAE,CAACM,CAAC,EAAEC,KAAK,KAC5DC,OAAO,CAACnC,GAAG,GAAGkC,KAAK,GAAGpB,IAAI,EAAEW,QAAQ,CACtC,CAAC;EACD,IAAII,MAAM,CAACA,MAAM,CAACG,MAAM,GAAG,CAAC,CAAC,GAAG/B,GAAG,EAAE;IACnC4B,MAAM,CAACO,IAAI,CAACnC,GAAG,CAAC;EAClB;EACA,OAAO4B,MAAM;AACf;AAEA,SAASH,gBAAgBA,CAACW,CAAS,EAAU;EAC3C,MAAMC,GAAG,GAAG3C,MAAM,CAAC0C,CAAC,CAAC;EACrB,MAAME,QAAQ,GAAGD,GAAG,CAACE,OAAO,CAAC,GAAG,CAAC;EACjC,OAAOD,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,GAAGD,GAAG,CAACN,MAAM,GAAGO,QAAQ,GAAG,CAAC;AACxD;AAEA,SAASJ,OAAOA,CAACpC,KAAa,EAAE0B,QAAgB,EAAU;EACxD,MAAMgB,MAAM,GAAG,EAAE,IAAIhB,QAAQ;EAC7B,OAAOvB,IAAI,CAACc,KAAK,CAACjB,KAAK,GAAG0C,MAAM,CAAC,GAAGA,MAAM;AAC5C;;AAEA;AACO,SAASC,2BAA2BA,CACzChD,OAAe,EACfU,SAAiB,EACjBuC,UAAU,GAAG/C,kBAAkB,EACvB;EACR,IAAIQ,SAAS,IAAI,CAAC,EAAE,OAAO,CAAC;EAC5B,OAAQN,KAAK,CAACJ,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAIU,SAAS,GAAGuC,UAAU,GAAG,CAAC;AACpE;AAEO,SAASC,sBAAsBA,CACpClD,OAAe,EACfmD,WAA8B,EAC9BC,WAAqC,EACrCzC,UAAkB,EAClBsC,UAAU,GAAG/C,kBAAkB,EACpB;EACX,MAAMQ,SAAS,GACb0C,WAAW,IAAI,IAAI,GAAG,CAAC,GAAGD,WAAW,KAAK,YAAY,GAAGC,WAAW,CAACC,KAAK,GAAGD,WAAW,CAACE,MAAM;EAEjG,IAAI5C,SAAS,GAAG,CAAC,EAAE;IACjB,MAAM6C,MAAM,GAAGP,2BAA2B,CAAChD,OAAO,EAAEU,SAAS,EAAEuC,UAAU,CAAC;IAC1E,IAAIE,WAAW,KAAK,UAAU,EAAE;MAC9B,OAAO;QACLK,QAAQ,EAAE,UAAU;QACpBC,IAAI,EAAE,KAAK;QACXC,MAAM,EAAEH,MAAM;QACdF,KAAK,EAAEJ,UAAU;QACjBK,MAAM,EAAEL,UAAU;QAClBU,UAAU,EAAE,CAACV,UAAU,GAAG;MAC5B,CAAC;IACH;IACA,OAAO;MACLO,QAAQ,EAAE,UAAU;MACpBI,GAAG,EAAE,KAAK;MACVH,IAAI,EAAEF,MAAM;MACZF,KAAK,EAAEJ,UAAU;MACjBK,MAAM,EAAEL,UAAU;MAClBY,SAAS,EAAE,CAACZ,UAAU,GAAG;IAC3B,CAAC;EACH;EAEA,IAAIE,WAAW,KAAK,UAAU,EAAE;IAC9B,OAAO;MACLK,QAAQ,EAAE,UAAU;MACpBC,IAAI,EAAE,KAAK;MACXC,MAAM,EAAE3D,kBAAkB,CAACC,OAAO,CAAC;MACnCqD,KAAK,EAAEJ,UAAU;MACjBK,MAAM,EAAEL,UAAU;MAClBU,UAAU,EAAE,CAACV,UAAU,GAAG,CAAC;MAC3Ba,SAAS,EAAE,CAAC;QAAEC,UAAU,EAAEd,UAAU,GAAG;MAAE,CAAC;IAC5C,CAAC;EACH;EAEA,OAAO;IACLO,QAAQ,EAAE,UAAU;IACpBI,GAAG,EAAE,KAAK;IACVH,IAAI,EAAE1D,kBAAkB,CAACC,OAAO,CAAC;IACjCqD,KAAK,EAAEJ,UAAU;IACjBK,MAAM,EAAEL,UAAU;IAClBY,SAAS,EAAE,CAACZ,UAAU,GAAG,CAAC;IAC1Ba,SAAS,EAAE,CAAC;MAAEE,UAAU,EAAE,CAACf,UAAU,GAAG;IAAE,CAAC;EAC7C,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.assignRef = assignRef;
|
|
7
|
+
function assignRef(ref, value) {
|
|
8
|
+
if (typeof ref === 'function') {
|
|
9
|
+
ref(value);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (ref) {
|
|
13
|
+
ref.current = value;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=assignRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["assignRef","ref","value","current"],"sourceRoot":"../../../src","sources":["utils/assignRef.ts"],"mappings":";;;;;;AAEO,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":[]}
|
|
@@ -12,8 +12,10 @@ var _reactNative = require("react-native");
|
|
|
12
12
|
* `react-dom`, which would cause a build error on native platforms.
|
|
13
13
|
*/
|
|
14
14
|
const createPortalFn = exports.createPortalFn = (() => {
|
|
15
|
-
if (_reactNative.Platform.OS !== 'web') return undefined;
|
|
16
15
|
try {
|
|
16
|
+
if (_reactNative.Platform.OS !== 'web') {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
17
19
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
18
20
|
return require('react-dom').createPortal;
|
|
19
21
|
} catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","createPortalFn","exports","Platform","OS","undefined","createPortal"],"sourceRoot":"../../../src","sources":["utils/createPortal.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAA0C,GAAAC,OAAA,CAAAD,cAAA,GAAG,CAAC,MAAM;EAC/D,IAAIE,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAOC,SAAS;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","createPortalFn","exports","Platform","OS","undefined","createPortal"],"sourceRoot":"../../../src","sources":["utils/createPortal.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAA0C,GAAAC,OAAA,CAAAD,cAAA,GAAG,CAAC,MAAM;EAC/D,IAAI;IACF,IAAIE,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACzB,OAAOC,SAAS;IAClB;IACA;IACA,OAAQL,OAAO,CAAC,WAAW,CAAC,CAAsCM,YAAY;EAChF,CAAC,CAAC,MAAM;IACN,OAAOD,SAAS;EAClB;AACF,CAAC,EAAE,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -13,6 +13,7 @@ export * from './otp-input';
|
|
|
13
13
|
export * from './link';
|
|
14
14
|
export * from './list-item';
|
|
15
15
|
export { OverlayInsetsProvider } from './overlay';
|
|
16
|
+
export { useAnchorPosition } from './overlay';
|
|
16
17
|
export * from './select';
|
|
17
18
|
export * from './switch';
|
|
18
19
|
export * from './tile';
|
|
@@ -20,8 +21,11 @@ export * from './toast';
|
|
|
20
21
|
export * from './portal';
|
|
21
22
|
export * from './progress-bar';
|
|
22
23
|
export * from './radio';
|
|
24
|
+
export * from './slider';
|
|
23
25
|
export { FormControlContext, useFormControlContext } from '@cdx-ui/utils';
|
|
24
26
|
export { dataAttributes, mergeDataAttributes } from './utils/dataAttributes';
|
|
25
27
|
export { domDataAttributes, mergeDomDataAttributes } from './utils/domDataAttributes';
|
|
28
|
+
export { assignRef } from './utils/assignRef';
|
|
29
|
+
export { createPortalFn } from './utils/createPortal';
|
|
26
30
|
export { Slot } from './slot';
|
|
27
31
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OverlayInsetsProvider","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;
|
|
1
|
+
{"version":3,"names":["OverlayInsetsProvider","useAnchorPosition","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","assignRef","createPortalFn","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,SAASC,iBAAiB,QAA2B,WAAW;AAChE,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,UAAU;AAExB,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,wBAAwB;AAC5E,SACEC,iBAAiB,EACjBC,sBAAsB,QAEjB,2BAA2B;AAClC,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,IAAI,QAAQ,QAAQ","ignoreList":[]}
|
|
@@ -12,29 +12,60 @@ function measureWeb(element) {
|
|
|
12
12
|
height: rect.height
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
function setLayoutIfChanged(setLayout, next) {
|
|
16
|
+
setLayout(prev => {
|
|
17
|
+
if (prev?.x === next.x && prev.y === next.y && prev.width === next.width && prev.height === next.height) {
|
|
18
|
+
return prev;
|
|
19
|
+
}
|
|
20
|
+
return next;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
16
23
|
/**
|
|
17
24
|
* Measures an anchor element's position and size, re-measuring on scroll/resize
|
|
18
25
|
* (web) so a positioned overlay can track its anchor across layout changes.
|
|
19
26
|
*
|
|
20
27
|
* Returns `null` until the first measurement completes.
|
|
21
28
|
*/
|
|
22
|
-
export function useAnchorPosition(anchorRef, open) {
|
|
29
|
+
export function useAnchorPosition(anchorRef, open, options) {
|
|
30
|
+
const {
|
|
31
|
+
remeasureKey,
|
|
32
|
+
trackWhileOpen = false
|
|
33
|
+
} = options ?? {};
|
|
23
34
|
const [layout, setLayout] = useState(null);
|
|
35
|
+
const measureAnchor = () => {
|
|
36
|
+
const anchor = anchorRef.current;
|
|
37
|
+
if (!anchor) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (Platform.OS === 'web') {
|
|
41
|
+
setLayoutIfChanged(setLayout, measureWeb(anchor));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
anchor.measureInWindow((x, y, width, height) => {
|
|
45
|
+
setLayoutIfChanged(setLayout, {
|
|
46
|
+
x,
|
|
47
|
+
y,
|
|
48
|
+
width,
|
|
49
|
+
height
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
};
|
|
24
53
|
useIsomorphicLayoutEffect(() => {
|
|
25
54
|
if (!open) {
|
|
26
55
|
setLayout(null);
|
|
27
56
|
return;
|
|
28
57
|
}
|
|
29
|
-
const anchor = anchorRef.current;
|
|
30
|
-
if (!anchor) return;
|
|
31
58
|
let cancelled = false;
|
|
32
59
|
if (Platform.OS === 'web') {
|
|
33
|
-
|
|
60
|
+
measureAnchor();
|
|
34
61
|
} else {
|
|
62
|
+
const anchor = anchorRef.current;
|
|
63
|
+
if (!anchor) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
35
66
|
anchor.measureInWindow((x, y, width, height) => {
|
|
36
67
|
if (!cancelled) {
|
|
37
|
-
setLayout
|
|
68
|
+
setLayoutIfChanged(setLayout, {
|
|
38
69
|
x,
|
|
39
70
|
y,
|
|
40
71
|
width,
|
|
@@ -46,19 +77,37 @@ export function useAnchorPosition(anchorRef, open) {
|
|
|
46
77
|
return () => {
|
|
47
78
|
cancelled = true;
|
|
48
79
|
};
|
|
49
|
-
}, [open, anchorRef]);
|
|
80
|
+
}, [open, anchorRef, remeasureKey]);
|
|
50
81
|
useEffect(() => {
|
|
51
|
-
if (!open ||
|
|
82
|
+
if (!open || !trackWhileOpen) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
let frameId = 0;
|
|
86
|
+
const tick = () => {
|
|
87
|
+
measureAnchor();
|
|
88
|
+
frameId = requestAnimationFrame(tick);
|
|
89
|
+
};
|
|
90
|
+
frameId = requestAnimationFrame(tick);
|
|
91
|
+
return () => {
|
|
92
|
+
cancelAnimationFrame(frameId);
|
|
93
|
+
};
|
|
94
|
+
}, [open, anchorRef, remeasureKey, trackWhileOpen]);
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
if (!open || Platform.OS !== 'web' || trackWhileOpen) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
52
99
|
const anchor = anchorRef.current;
|
|
53
|
-
if (!anchor)
|
|
54
|
-
|
|
100
|
+
if (!anchor) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const update = () => setLayoutIfChanged(setLayout, measureWeb(anchor));
|
|
55
104
|
window.addEventListener('scroll', update, true);
|
|
56
105
|
window.addEventListener('resize', update);
|
|
57
106
|
return () => {
|
|
58
107
|
window.removeEventListener('scroll', update, true);
|
|
59
108
|
window.removeEventListener('resize', update);
|
|
60
109
|
};
|
|
61
|
-
}, [open, anchorRef]);
|
|
110
|
+
}, [open, anchorRef, remeasureKey, trackWhileOpen]);
|
|
62
111
|
return layout;
|
|
63
112
|
}
|
|
64
113
|
//# sourceMappingURL=useAnchorPosition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useLayoutEffect","useState","Platform","useIsomorphicLayoutEffect","OS","measureWeb","element","rect","getBoundingClientRect","x","left","y","top","width","height","useAnchorPosition","anchorRef","open","layout","
|
|
1
|
+
{"version":3,"names":["useEffect","useLayoutEffect","useState","Platform","useIsomorphicLayoutEffect","OS","measureWeb","element","rect","getBoundingClientRect","x","left","y","top","width","height","setLayoutIfChanged","setLayout","next","prev","useAnchorPosition","anchorRef","open","options","remeasureKey","trackWhileOpen","layout","measureAnchor","anchor","current","measureInWindow","cancelled","frameId","tick","requestAnimationFrame","cancelAnimationFrame","update","window","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useAnchorPosition.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useRef } from 'react';
|
|
4
|
+
import { Platform, Pressable, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { Slot } from '../slot';
|
|
6
|
+
import { assignRef } from '../utils/assignRef';
|
|
7
|
+
import { dataAttributes } from '../utils/dataAttributes';
|
|
8
|
+
import { useSliderContext } from './context';
|
|
9
|
+
import { getPointerCoords, getRatioFromPagePoint, useWebSliderDrag } from './useSliderPointer';
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
export const SliderRail = /*#__PURE__*/forwardRef(({
|
|
12
|
+
asChild,
|
|
13
|
+
style,
|
|
14
|
+
onLayout,
|
|
15
|
+
children,
|
|
16
|
+
...props
|
|
17
|
+
}, ref) => {
|
|
18
|
+
const {
|
|
19
|
+
orientation,
|
|
20
|
+
isDisabled,
|
|
21
|
+
isDragging,
|
|
22
|
+
trackLayout,
|
|
23
|
+
thumbSize,
|
|
24
|
+
setValueFromRatio,
|
|
25
|
+
setTrackLayout,
|
|
26
|
+
setIsDragging
|
|
27
|
+
} = useSliderContext();
|
|
28
|
+
const railRef = useRef(null);
|
|
29
|
+
const measureRail = useCallback(() => {
|
|
30
|
+
const node = railRef.current;
|
|
31
|
+
if (!node?.measureInWindow) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
node.measureInWindow((x, y, width, height) => {
|
|
35
|
+
setTrackLayout({
|
|
36
|
+
x,
|
|
37
|
+
y,
|
|
38
|
+
width,
|
|
39
|
+
height
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}, [setTrackLayout]);
|
|
43
|
+
const handleLayout = useCallback(event => {
|
|
44
|
+
measureRail();
|
|
45
|
+
onLayout?.(event);
|
|
46
|
+
}, [measureRail, onLayout]);
|
|
47
|
+
const {
|
|
48
|
+
startDrag
|
|
49
|
+
} = useWebSliderDrag({
|
|
50
|
+
isDisabled,
|
|
51
|
+
setIsDragging,
|
|
52
|
+
setValueFromRatio,
|
|
53
|
+
trackLayout,
|
|
54
|
+
orientation,
|
|
55
|
+
thumbSize
|
|
56
|
+
});
|
|
57
|
+
const updateFromEvent = useCallback(event => {
|
|
58
|
+
if (isDisabled) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const {
|
|
62
|
+
x,
|
|
63
|
+
y
|
|
64
|
+
} = getPointerCoords(event.nativeEvent);
|
|
65
|
+
setValueFromRatio(getRatioFromPagePoint(x, y, trackLayout, orientation, thumbSize), true);
|
|
66
|
+
}, [isDisabled, orientation, setValueFromRatio, thumbSize, trackLayout]);
|
|
67
|
+
const handlePress = useCallback(event => {
|
|
68
|
+
updateFromEvent(event);
|
|
69
|
+
}, [updateFromEvent]);
|
|
70
|
+
const handlePointerDown = useCallback(event => {
|
|
71
|
+
if (Platform.OS !== 'web' || isDisabled) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
const node = railRef.current;
|
|
76
|
+
if (!node) return;
|
|
77
|
+
const rect = node.getBoundingClientRect();
|
|
78
|
+
const freshLayout = {
|
|
79
|
+
x: rect.left,
|
|
80
|
+
y: rect.top,
|
|
81
|
+
width: rect.width,
|
|
82
|
+
height: rect.height
|
|
83
|
+
};
|
|
84
|
+
setTrackLayout(freshLayout);
|
|
85
|
+
const {
|
|
86
|
+
x,
|
|
87
|
+
y
|
|
88
|
+
} = getPointerCoords(event.nativeEvent);
|
|
89
|
+
startDrag(x, y, undefined, freshLayout);
|
|
90
|
+
}, [isDisabled, setTrackLayout, startDrag]);
|
|
91
|
+
const Comp = asChild ? Slot : View;
|
|
92
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
93
|
+
accessibilityRole: "none",
|
|
94
|
+
accessible: false,
|
|
95
|
+
disabled: isDisabled,
|
|
96
|
+
onPress: Platform.OS === 'web' ? undefined : handlePress,
|
|
97
|
+
onPointerDown: Platform.OS === 'web' ? handlePointerDown : undefined,
|
|
98
|
+
accessibilityElementsHidden: true,
|
|
99
|
+
importantForAccessibility: "no-hide-descendants",
|
|
100
|
+
"aria-hidden": true,
|
|
101
|
+
tabIndex: -1,
|
|
102
|
+
style: styles.railHitArea,
|
|
103
|
+
children: /*#__PURE__*/_jsx(Comp, {
|
|
104
|
+
ref: node => {
|
|
105
|
+
railRef.current = node;
|
|
106
|
+
assignRef(ref, node);
|
|
107
|
+
},
|
|
108
|
+
...props,
|
|
109
|
+
onLayout: handleLayout,
|
|
110
|
+
style: style,
|
|
111
|
+
...dataAttributes({
|
|
112
|
+
slot: 'slider-rail',
|
|
113
|
+
dragging: isDragging
|
|
114
|
+
}),
|
|
115
|
+
children: children
|
|
116
|
+
})
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
SliderRail.displayName = 'SliderRail';
|
|
120
|
+
const styles = StyleSheet.create({
|
|
121
|
+
railHitArea: {
|
|
122
|
+
...StyleSheet.absoluteFillObject,
|
|
123
|
+
justifyContent: 'center',
|
|
124
|
+
alignItems: 'center'
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=SliderRail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useRef","Platform","Pressable","StyleSheet","View","Slot","assignRef","dataAttributes","useSliderContext","getPointerCoords","getRatioFromPagePoint","useWebSliderDrag","jsx","_jsx","SliderRail","asChild","style","onLayout","children","props","ref","orientation","isDisabled","isDragging","trackLayout","thumbSize","setValueFromRatio","setTrackLayout","setIsDragging","railRef","measureRail","node","current","measureInWindow","x","y","width","height","handleLayout","event","startDrag","updateFromEvent","nativeEvent","handlePress","handlePointerDown","OS","preventDefault","rect","getBoundingClientRect","freshLayout","left","top","undefined","Comp","accessibilityRole","accessible","disabled","onPress","onPointerDown","accessibilityElementsHidden","importantForAccessibility","tabIndex","styles","railHitArea","slot","dragging","displayName","create","absoluteFillObject","justifyContent","alignItems"],"sourceRoot":"../../../src","sources":["slider/SliderRail.tsx"],"mappings":"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","ignoreList":[]}
|