@cdx-ui/primitives 0.0.1-beta.170 → 0.0.1-beta.172
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/accordion/Accordion.js +59 -0
- package/lib/commonjs/accordion/Accordion.js.map +1 -0
- package/lib/commonjs/accordion/AccordionItem.js +68 -0
- package/lib/commonjs/accordion/AccordionItem.js.map +1 -0
- package/lib/commonjs/accordion/AccordionPanel.js +71 -0
- package/lib/commonjs/accordion/AccordionPanel.js.map +1 -0
- package/lib/commonjs/accordion/AccordionTrigger.js +122 -0
- package/lib/commonjs/accordion/AccordionTrigger.js.map +1 -0
- package/lib/commonjs/accordion/context.js +26 -0
- package/lib/commonjs/accordion/context.js.map +1 -0
- package/lib/commonjs/accordion/index.js +59 -0
- package/lib/commonjs/accordion/index.js.map +1 -0
- package/lib/commonjs/accordion/types.js +6 -0
- package/lib/commonjs/accordion/types.js.map +1 -0
- package/lib/commonjs/accordion/utils.js +24 -0
- package/lib/commonjs/accordion/utils.js.map +1 -0
- package/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- 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/accordion/Accordion.js +55 -0
- package/lib/module/accordion/Accordion.js.map +1 -0
- package/lib/module/accordion/AccordionItem.js +64 -0
- package/lib/module/accordion/AccordionItem.js.map +1 -0
- package/lib/module/accordion/AccordionPanel.js +67 -0
- package/lib/module/accordion/AccordionPanel.js.map +1 -0
- package/lib/module/accordion/AccordionTrigger.js +118 -0
- package/lib/module/accordion/AccordionTrigger.js.map +1 -0
- package/lib/module/accordion/context.js +20 -0
- package/lib/module/accordion/context.js.map +1 -0
- package/lib/module/accordion/index.js +8 -0
- package/lib/module/accordion/index.js.map +1 -0
- package/lib/module/accordion/types.js +4 -0
- package/lib/module/accordion/types.js.map +1 -0
- package/lib/module/accordion/utils.js +19 -0
- package/lib/module/accordion/utils.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.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/accordion/Accordion.d.ts +8 -0
- package/lib/typescript/accordion/Accordion.d.ts.map +1 -0
- package/lib/typescript/accordion/AccordionItem.d.ts +8 -0
- package/lib/typescript/accordion/AccordionItem.d.ts.map +1 -0
- package/lib/typescript/accordion/AccordionPanel.d.ts +7 -0
- package/lib/typescript/accordion/AccordionPanel.d.ts.map +1 -0
- package/lib/typescript/accordion/AccordionTrigger.d.ts +6 -0
- package/lib/typescript/accordion/AccordionTrigger.d.ts.map +1 -0
- package/lib/typescript/accordion/context.d.ts +6 -0
- package/lib/typescript/accordion/context.d.ts.map +1 -0
- package/lib/typescript/accordion/index.d.ts +7 -0
- package/lib/typescript/accordion/index.d.ts.map +1 -0
- package/lib/typescript/accordion/types.d.ts +50 -0
- package/lib/typescript/accordion/types.d.ts.map +1 -0
- package/lib/typescript/accordion/utils.d.ts +4 -0
- package/lib/typescript/accordion/utils.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.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 +5 -3
- package/src/accordion/Accordion.tsx +72 -0
- package/src/accordion/AccordionItem.tsx +70 -0
- package/src/accordion/AccordionPanel.tsx +72 -0
- package/src/accordion/AccordionTrigger.tsx +120 -0
- package/src/accordion/context.tsx +22 -0
- package/src/accordion/index.ts +21 -0
- package/src/accordion/types.ts +56 -0
- package/src/accordion/utils.ts +22 -0
- package/src/index.ts +1 -0
- 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 [];
|