@cdx-ui/primitives 0.0.1-beta.170 → 0.0.1-beta.171
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/lib/commonjs/slider/SliderRail.js +35 -9
- package/lib/commonjs/slider/SliderRail.js.map +1 -1
- package/lib/commonjs/slider/SliderRoot.js +155 -97
- package/lib/commonjs/slider/SliderRoot.js.map +1 -1
- package/lib/commonjs/slider/SliderThumb.js +182 -68
- package/lib/commonjs/slider/SliderThumb.js.map +1 -1
- package/lib/commonjs/slider/context.js +4 -1
- package/lib/commonjs/slider/context.js.map +1 -1
- package/lib/commonjs/slider/index.js +36 -0
- package/lib/commonjs/slider/index.js.map +1 -1
- package/lib/commonjs/slider/useSliderPointer.js +1 -1
- package/lib/commonjs/slider/useSliderPointer.js.map +1 -1
- package/lib/commonjs/slider/utils.js +68 -0
- package/lib/commonjs/slider/utils.js.map +1 -1
- package/lib/module/slider/SliderRail.js +35 -9
- package/lib/module/slider/SliderRail.js.map +1 -1
- package/lib/module/slider/SliderRoot.js +157 -99
- package/lib/module/slider/SliderRoot.js.map +1 -1
- package/lib/module/slider/SliderThumb.js +185 -71
- package/lib/module/slider/SliderThumb.js.map +1 -1
- package/lib/module/slider/context.js +1 -0
- package/lib/module/slider/context.js.map +1 -1
- package/lib/module/slider/index.js +2 -2
- package/lib/module/slider/index.js.map +1 -1
- package/lib/module/slider/useSliderPointer.js +1 -1
- package/lib/module/slider/useSliderPointer.js.map +1 -1
- package/lib/module/slider/utils.js +63 -0
- package/lib/module/slider/utils.js.map +1 -1
- package/lib/typescript/slider/SliderRail.d.ts.map +1 -1
- package/lib/typescript/slider/SliderRoot.d.ts +2 -2
- package/lib/typescript/slider/SliderRoot.d.ts.map +1 -1
- package/lib/typescript/slider/SliderThumb.d.ts.map +1 -1
- package/lib/typescript/slider/context.d.ts +53 -9
- package/lib/typescript/slider/context.d.ts.map +1 -1
- package/lib/typescript/slider/index.d.ts +4 -4
- package/lib/typescript/slider/index.d.ts.map +1 -1
- package/lib/typescript/slider/types.d.ts +44 -8
- package/lib/typescript/slider/types.d.ts.map +1 -1
- package/lib/typescript/slider/utils.d.ts +8 -0
- package/lib/typescript/slider/utils.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/slider/SliderRail.tsx +56 -8
- package/src/slider/SliderRoot.tsx +255 -136
- package/src/slider/SliderThumb.tsx +240 -88
- package/src/slider/context.tsx +53 -9
- package/src/slider/index.ts +9 -2
- package/src/slider/types.ts +49 -8
- package/src/slider/useSliderPointer.ts +1 -1
- package/src/slider/utils.ts +76 -0
package/src/slider/utils.ts
CHANGED
|
@@ -88,6 +88,82 @@ export function formatSliderValue(value: number): string {
|
|
|
88
88
|
return Number.isInteger(value) ? String(value) : value.toFixed(1);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
export function arraysEqual(a: readonly number[], b: readonly number[]): boolean {
|
|
92
|
+
if (a.length !== b.length) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
return a.every((value, index) => value === b[index]);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function normalizeSliderValue(
|
|
99
|
+
input: number | readonly number[] | undefined,
|
|
100
|
+
min: number,
|
|
101
|
+
defaultScalar?: number,
|
|
102
|
+
): number[] {
|
|
103
|
+
if (input == null) {
|
|
104
|
+
return [defaultScalar ?? min];
|
|
105
|
+
}
|
|
106
|
+
if (Array.isArray(input)) {
|
|
107
|
+
return [...input];
|
|
108
|
+
}
|
|
109
|
+
return [input as number];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function denormalizeSliderValue(
|
|
113
|
+
values: readonly number[],
|
|
114
|
+
asArray: boolean,
|
|
115
|
+
): number | number[] {
|
|
116
|
+
return asArray ? [...values] : values[0];
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function getClosestValueIndex(values: readonly number[], target: number): number {
|
|
120
|
+
if (values.length === 0) {
|
|
121
|
+
return 0;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
let closestIndex = 0;
|
|
125
|
+
let closestDistance = Math.abs(values[0] - target);
|
|
126
|
+
|
|
127
|
+
for (let index = 1; index < values.length; index += 1) {
|
|
128
|
+
const distance = Math.abs(values[index] - target);
|
|
129
|
+
if (distance < closestDistance) {
|
|
130
|
+
closestDistance = distance;
|
|
131
|
+
closestIndex = index;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return closestIndex;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export function getFillExtent(
|
|
139
|
+
startPercent: number,
|
|
140
|
+
endPercent: number,
|
|
141
|
+
trackSize: number,
|
|
142
|
+
thumbSize: number,
|
|
143
|
+
): { offset: number; length: number } {
|
|
144
|
+
if (trackSize <= 0) {
|
|
145
|
+
return { offset: 0, length: 0 };
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const start = (clamp(startPercent, 0, 100) / 100) * trackSize;
|
|
149
|
+
const end = (clamp(endPercent, 0, 100) / 100) * trackSize;
|
|
150
|
+
const span = end - start;
|
|
151
|
+
|
|
152
|
+
if (span > 0) {
|
|
153
|
+
return { offset: start, length: span };
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (start <= 0) {
|
|
157
|
+
return { offset: 0, length: 0 };
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const halfThumb = Math.max(thumbSize, 0) / 2;
|
|
161
|
+
const offset = clamp(start - halfThumb, 0, trackSize);
|
|
162
|
+
const endUnderThumb = clamp(start + halfThumb, 0, trackSize);
|
|
163
|
+
|
|
164
|
+
return { offset, length: endUnderThumb - offset };
|
|
165
|
+
}
|
|
166
|
+
|
|
91
167
|
export function getMarkerStepValues(min: number, max: number, step: number): number[] {
|
|
92
168
|
if (step <= 0 || max <= min) {
|
|
93
169
|
return [];
|