@chenzy-design/core 0.3.1 → 0.4.0
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/dist/ai-chat-dialogue.d.ts +300 -0
- package/dist/ai-chat-dialogue.d.ts.map +1 -0
- package/dist/ai-chat-dialogue.js +699 -0
- package/dist/ai-chat-dialogue.js.map +1 -0
- package/dist/ai-chat-dialogue.test.d.ts +2 -0
- package/dist/ai-chat-dialogue.test.d.ts.map +1 -0
- package/dist/ai-chat-dialogue.test.js +338 -0
- package/dist/ai-chat-dialogue.test.js.map +1 -0
- package/dist/ai-chat-input.d.ts +191 -0
- package/dist/ai-chat-input.d.ts.map +1 -0
- package/dist/ai-chat-input.js +274 -0
- package/dist/ai-chat-input.js.map +1 -0
- package/dist/ai-chat-input.test.d.ts +2 -0
- package/dist/ai-chat-input.test.d.ts.map +1 -0
- package/dist/ai-chat-input.test.js +339 -0
- package/dist/ai-chat-input.test.js.map +1 -0
- package/dist/audio-player.d.ts +154 -0
- package/dist/audio-player.d.ts.map +1 -0
- package/dist/audio-player.js +254 -0
- package/dist/audio-player.js.map +1 -0
- package/dist/audio-player.test.d.ts +2 -0
- package/dist/audio-player.test.d.ts.map +1 -0
- package/dist/audio-player.test.js +275 -0
- package/dist/audio-player.test.js.map +1 -0
- package/dist/back-top.d.ts +4 -1
- package/dist/back-top.d.ts.map +1 -1
- package/dist/back-top.js +5 -2
- package/dist/back-top.js.map +1 -1
- package/dist/back-top.test.js +3 -2
- package/dist/back-top.test.js.map +1 -1
- package/dist/calendar.d.ts +132 -44
- package/dist/calendar.d.ts.map +1 -1
- package/dist/calendar.js +413 -70
- package/dist/calendar.js.map +1 -1
- package/dist/calendar.test.js +160 -76
- package/dist/calendar.test.js.map +1 -1
- package/dist/chat.d.ts +172 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +210 -0
- package/dist/chat.js.map +1 -0
- package/dist/chat.test.d.ts +2 -0
- package/dist/chat.test.d.ts.map +1 -0
- package/dist/chat.test.js +181 -0
- package/dist/chat.test.js.map +1 -0
- package/dist/code-highlight.d.ts +30 -0
- package/dist/code-highlight.d.ts.map +1 -0
- package/dist/code-highlight.js +37 -0
- package/dist/code-highlight.js.map +1 -0
- package/dist/code-highlight.test.d.ts +2 -0
- package/dist/code-highlight.test.d.ts.map +1 -0
- package/dist/code-highlight.test.js +36 -0
- package/dist/code-highlight.test.js.map +1 -0
- package/dist/collapsible.d.ts +41 -0
- package/dist/collapsible.d.ts.map +1 -0
- package/dist/collapsible.js +33 -0
- package/dist/collapsible.js.map +1 -0
- package/dist/collapsible.test.d.ts +2 -0
- package/dist/collapsible.test.d.ts.map +1 -0
- package/dist/collapsible.test.js +57 -0
- package/dist/collapsible.test.js.map +1 -0
- package/dist/color-value.d.ts +60 -0
- package/dist/color-value.d.ts.map +1 -0
- package/dist/color-value.js +165 -0
- package/dist/color-value.js.map +1 -0
- package/dist/color-value.test.d.ts +2 -0
- package/dist/color-value.test.d.ts.map +1 -0
- package/dist/color-value.test.js +104 -0
- package/dist/color-value.test.js.map +1 -0
- package/dist/config-provider.d.ts +76 -37
- package/dist/config-provider.d.ts.map +1 -1
- package/dist/config-provider.js +107 -32
- package/dist/config-provider.js.map +1 -1
- package/dist/config-provider.test.js +123 -60
- package/dist/config-provider.test.js.map +1 -1
- package/dist/cropper.d.ts +164 -0
- package/dist/cropper.d.ts.map +1 -0
- package/dist/cropper.js +841 -0
- package/dist/cropper.js.map +1 -0
- package/dist/cropper.test.d.ts +2 -0
- package/dist/cropper.test.d.ts.map +1 -0
- package/dist/cropper.test.js +259 -0
- package/dist/cropper.test.js.map +1 -0
- package/dist/drag-move.d.ts +119 -0
- package/dist/drag-move.d.ts.map +1 -0
- package/dist/drag-move.js +237 -0
- package/dist/drag-move.js.map +1 -0
- package/dist/drag-move.test.d.ts +2 -0
- package/dist/drag-move.test.d.ts.map +1 -0
- package/dist/drag-move.test.js +304 -0
- package/dist/drag-move.test.js.map +1 -0
- package/dist/editable.d.ts +24 -4
- package/dist/editable.d.ts.map +1 -1
- package/dist/editable.js +18 -0
- package/dist/editable.js.map +1 -1
- package/dist/editable.test.js +55 -2
- package/dist/editable.test.js.map +1 -1
- package/dist/ellipsis.d.ts +13 -0
- package/dist/ellipsis.d.ts.map +1 -1
- package/dist/ellipsis.js +36 -0
- package/dist/ellipsis.js.map +1 -1
- package/dist/ellipsis.test.js +37 -1
- package/dist/ellipsis.test.js.map +1 -1
- package/dist/form-path.d.ts +19 -0
- package/dist/form-path.d.ts.map +1 -0
- package/dist/form-path.js +97 -0
- package/dist/form-path.js.map +1 -0
- package/dist/form-path.test.d.ts +2 -0
- package/dist/form-path.test.d.ts.map +1 -0
- package/dist/form-path.test.js +57 -0
- package/dist/form-path.test.js.map +1 -0
- package/dist/form-validate.d.ts +13 -0
- package/dist/form-validate.d.ts.map +1 -0
- package/dist/form-validate.js +204 -0
- package/dist/form-validate.js.map +1 -0
- package/dist/form.d.ts +91 -18
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +170 -115
- package/dist/form.js.map +1 -1
- package/dist/form.test.js +349 -76
- package/dist/form.test.js.map +1 -1
- package/dist/highlight.d.ts +42 -32
- package/dist/highlight.d.ts.map +1 -1
- package/dist/highlight.js +67 -41
- package/dist/highlight.js.map +1 -1
- package/dist/highlight.test.js +73 -32
- package/dist/highlight.test.js.map +1 -1
- package/dist/hotkeys.d.ts +151 -0
- package/dist/hotkeys.d.ts.map +1 -0
- package/dist/hotkeys.js +188 -0
- package/dist/hotkeys.js.map +1 -0
- package/dist/hotkeys.test.d.ts +2 -0
- package/dist/hotkeys.test.d.ts.map +1 -0
- package/dist/hotkeys.test.js +170 -0
- package/dist/hotkeys.test.js.map +1 -0
- package/dist/index.d.ts +33 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -13
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +34 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +54 -0
- package/dist/input.js.map +1 -0
- package/dist/input.test.d.ts +2 -0
- package/dist/input.test.d.ts.map +1 -0
- package/dist/input.test.js +56 -0
- package/dist/input.test.js.map +1 -0
- package/dist/markdown-render.d.ts +49 -0
- package/dist/markdown-render.d.ts.map +1 -0
- package/dist/markdown-render.js +61 -0
- package/dist/markdown-render.js.map +1 -0
- package/dist/markdown-render.test.d.ts +2 -0
- package/dist/markdown-render.test.d.ts.map +1 -0
- package/dist/markdown-render.test.js +106 -0
- package/dist/markdown-render.test.js.map +1 -0
- package/dist/notification.d.ts +40 -31
- package/dist/notification.d.ts.map +1 -1
- package/dist/notification.js +86 -70
- package/dist/notification.js.map +1 -1
- package/dist/notification.test.js +62 -39
- package/dist/notification.test.js.map +1 -1
- package/dist/numeral.d.ts +32 -0
- package/dist/numeral.d.ts.map +1 -0
- package/dist/numeral.js +67 -0
- package/dist/numeral.js.map +1 -0
- package/dist/numeral.test.d.ts +2 -0
- package/dist/numeral.test.d.ts.map +1 -0
- package/dist/numeral.test.js +59 -0
- package/dist/numeral.test.js.map +1 -0
- package/dist/overflow-list.d.ts +9 -40
- package/dist/overflow-list.d.ts.map +1 -1
- package/dist/overflow-list.js +9 -70
- package/dist/overflow-list.js.map +1 -1
- package/dist/overflow-list.test.js +1 -122
- package/dist/overflow-list.test.js.map +1 -1
- package/dist/pagination.d.ts +17 -0
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +48 -0
- package/dist/pagination.js.map +1 -1
- package/dist/pagination.test.js +40 -1
- package/dist/pagination.test.js.map +1 -1
- package/dist/pincode.d.ts +79 -0
- package/dist/pincode.d.ts.map +1 -0
- package/dist/pincode.js +119 -0
- package/dist/pincode.js.map +1 -0
- package/dist/pincode.test.d.ts +2 -0
- package/dist/pincode.test.d.ts.map +1 -0
- package/dist/pincode.test.js +151 -0
- package/dist/pincode.test.js.map +1 -0
- package/dist/progress.d.ts +32 -30
- package/dist/progress.d.ts.map +1 -1
- package/dist/progress.js +257 -64
- package/dist/progress.js.map +1 -1
- package/dist/progress.test.js +50 -47
- package/dist/progress.test.js.map +1 -1
- package/dist/resizable.d.ts +200 -0
- package/dist/resizable.d.ts.map +1 -0
- package/dist/resizable.js +329 -0
- package/dist/resizable.js.map +1 -0
- package/dist/resizable.test.d.ts +2 -0
- package/dist/resizable.test.d.ts.map +1 -0
- package/dist/resizable.test.js +302 -0
- package/dist/resizable.test.js.map +1 -0
- package/dist/scroll-list.d.ts +69 -62
- package/dist/scroll-list.d.ts.map +1 -1
- package/dist/scroll-list.js +103 -144
- package/dist/scroll-list.js.map +1 -1
- package/dist/scroll-list.test.js +100 -110
- package/dist/scroll-list.test.js.map +1 -1
- package/dist/sidebar.d.ts +46 -0
- package/dist/sidebar.d.ts.map +1 -0
- package/dist/sidebar.js +65 -0
- package/dist/sidebar.js.map +1 -0
- package/dist/sidebar.test.d.ts +2 -0
- package/dist/sidebar.test.d.ts.map +1 -0
- package/dist/sidebar.test.js +88 -0
- package/dist/sidebar.test.js.map +1 -0
- package/dist/spin.d.ts +5 -5
- package/dist/spin.d.ts.map +1 -1
- package/dist/spin.js +13 -39
- package/dist/spin.js.map +1 -1
- package/dist/spin.test.js +2 -26
- package/dist/spin.test.js.map +1 -1
- package/dist/toast.d.ts +33 -30
- package/dist/toast.d.ts.map +1 -1
- package/dist/toast.js +77 -72
- package/dist/toast.js.map +1 -1
- package/dist/toast.test.js +63 -37
- package/dist/toast.test.js.map +1 -1
- package/dist/tree.d.ts +22 -5
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +61 -9
- package/dist/tree.js.map +1 -1
- package/dist/tree.test.js +72 -1
- package/dist/tree.test.js.map +1 -1
- package/dist/user-guide.d.ts +73 -0
- package/dist/user-guide.d.ts.map +1 -0
- package/dist/user-guide.js +95 -0
- package/dist/user-guide.js.map +1 -0
- package/dist/user-guide.test.d.ts +2 -0
- package/dist/user-guide.test.d.ts.map +1 -0
- package/dist/user-guide.test.js +109 -0
- package/dist/user-guide.test.js.map +1 -0
- package/dist/video-player.d.ts +196 -0
- package/dist/video-player.d.ts.map +1 -0
- package/dist/video-player.js +461 -0
- package/dist/video-player.js.map +1 -0
- package/dist/video-player.test.d.ts +2 -0
- package/dist/video-player.test.d.ts.map +1 -0
- package/dist/video-player.test.js +435 -0
- package/dist/video-player.test.js.map +1 -0
- package/package.json +17 -1
- package/dist/banner.d.ts +0 -19
- package/dist/banner.d.ts.map +0 -1
- package/dist/banner.js +0 -20
- package/dist/banner.js.map +0 -1
- package/dist/banner.test.d.ts +0 -2
- package/dist/banner.test.d.ts.map +0 -1
- package/dist/banner.test.js +0 -29
- package/dist/banner.test.js.map +0 -1
- package/dist/breakpoints.d.ts +0 -30
- package/dist/breakpoints.d.ts.map +0 -1
- package/dist/breakpoints.js +0 -45
- package/dist/breakpoints.js.map +0 -1
- package/dist/breakpoints.test.d.ts +0 -2
- package/dist/breakpoints.test.d.ts.map +0 -1
- package/dist/breakpoints.test.js +0 -46
- package/dist/breakpoints.test.js.map +0 -1
- package/dist/lottie-icon.d.ts +0 -88
- package/dist/lottie-icon.d.ts.map +0 -1
- package/dist/lottie-icon.js +0 -84
- package/dist/lottie-icon.js.map +0 -1
- package/dist/lottie-icon.test.d.ts +0 -2
- package/dist/lottie-icon.test.d.ts.map +0 -1
- package/dist/lottie-icon.test.js +0 -88
- package/dist/lottie-icon.test.js.map +0 -1
- package/dist/sider.d.ts +0 -26
- package/dist/sider.d.ts.map +0 -1
- package/dist/sider.js +0 -55
- package/dist/sider.js.map +0 -1
- package/dist/sider.test.d.ts +0 -2
- package/dist/sider.test.d.ts.map +0 -1
- package/dist/sider.test.js +0 -29
- package/dist/sider.test.js.map +0 -1
package/dist/breakpoints.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* breakpoints — framework-agnostic responsive breakpoint resolution.
|
|
3
|
-
* Six-tier scale aligned with Semi Design / Ant Design. Pure functions over a
|
|
4
|
-
* viewport width; no DOM, no matchMedia (the render layer owns the listener).
|
|
5
|
-
* See specs/components/basic/Grid.spec.md (responsive).
|
|
6
|
-
*/
|
|
7
|
-
/** ordered from smallest to largest; min-width (px) for each tier. */
|
|
8
|
-
export declare const BREAKPOINTS: {
|
|
9
|
-
readonly xs: 0;
|
|
10
|
-
readonly sm: 576;
|
|
11
|
-
readonly md: 768;
|
|
12
|
-
readonly lg: 992;
|
|
13
|
-
readonly xl: 1200;
|
|
14
|
-
readonly xxl: 1600;
|
|
15
|
-
};
|
|
16
|
-
export type Breakpoint = keyof typeof BREAKPOINTS;
|
|
17
|
-
/** smallest → largest, the降级查找顺序的反向基准 */
|
|
18
|
-
export declare const BREAKPOINT_ORDER: Breakpoint[];
|
|
19
|
-
/** the active breakpoint for a viewport width (largest tier whose min-width ≤ width). */
|
|
20
|
-
export declare function resolveActiveBreakpoint(width: number): Breakpoint;
|
|
21
|
-
/**
|
|
22
|
-
* Resolve a per-breakpoint map to the value that applies at `active`, cascading
|
|
23
|
-
* down: if `active` has no value, fall back to the nearest smaller tier that
|
|
24
|
-
* does (mobile-first). Returns `fallback` if none match.
|
|
25
|
-
*
|
|
26
|
-
* resolveResponsiveValue({ xs: 24, md: 12 }, 'lg') // → 12 (md cascades up to lg)
|
|
27
|
-
* resolveResponsiveValue({ md: 12 }, 'sm') // → fallback (no sm/xs)
|
|
28
|
-
*/
|
|
29
|
-
export declare function resolveResponsiveValue<T>(byBreakpoint: Partial<Record<Breakpoint, T>>, active: Breakpoint, fallback: T): T;
|
|
30
|
-
//# sourceMappingURL=breakpoints.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breakpoints.d.ts","sourceRoot":"","sources":["../src/breakpoints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sEAAsE;AACtE,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC;AAElD,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,EAAE,UAAU,EAA0C,CAAC;AAEpF,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAMjE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAC5C,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,CAAC,GACV,CAAC,CAQH"}
|
package/dist/breakpoints.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* breakpoints — framework-agnostic responsive breakpoint resolution.
|
|
3
|
-
* Six-tier scale aligned with Semi Design / Ant Design. Pure functions over a
|
|
4
|
-
* viewport width; no DOM, no matchMedia (the render layer owns the listener).
|
|
5
|
-
* See specs/components/basic/Grid.spec.md (responsive).
|
|
6
|
-
*/
|
|
7
|
-
/** ordered from smallest to largest; min-width (px) for each tier. */
|
|
8
|
-
export const BREAKPOINTS = {
|
|
9
|
-
xs: 0,
|
|
10
|
-
sm: 576,
|
|
11
|
-
md: 768,
|
|
12
|
-
lg: 992,
|
|
13
|
-
xl: 1200,
|
|
14
|
-
xxl: 1600,
|
|
15
|
-
};
|
|
16
|
-
/** smallest → largest, the降级查找顺序的反向基准 */
|
|
17
|
-
export const BREAKPOINT_ORDER = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];
|
|
18
|
-
/** the active breakpoint for a viewport width (largest tier whose min-width ≤ width). */
|
|
19
|
-
export function resolveActiveBreakpoint(width) {
|
|
20
|
-
let active = 'xs';
|
|
21
|
-
for (const bp of BREAKPOINT_ORDER) {
|
|
22
|
-
if (width >= BREAKPOINTS[bp])
|
|
23
|
-
active = bp;
|
|
24
|
-
}
|
|
25
|
-
return active;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Resolve a per-breakpoint map to the value that applies at `active`, cascading
|
|
29
|
-
* down: if `active` has no value, fall back to the nearest smaller tier that
|
|
30
|
-
* does (mobile-first). Returns `fallback` if none match.
|
|
31
|
-
*
|
|
32
|
-
* resolveResponsiveValue({ xs: 24, md: 12 }, 'lg') // → 12 (md cascades up to lg)
|
|
33
|
-
* resolveResponsiveValue({ md: 12 }, 'sm') // → fallback (no sm/xs)
|
|
34
|
-
*/
|
|
35
|
-
export function resolveResponsiveValue(byBreakpoint, active, fallback) {
|
|
36
|
-
const activeIndex = BREAKPOINT_ORDER.indexOf(active);
|
|
37
|
-
for (let i = activeIndex; i >= 0; i -= 1) {
|
|
38
|
-
const bp = BREAKPOINT_ORDER[i];
|
|
39
|
-
const value = byBreakpoint[bp];
|
|
40
|
-
if (value !== undefined)
|
|
41
|
-
return value;
|
|
42
|
-
}
|
|
43
|
-
return fallback;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=breakpoints.js.map
|
package/dist/breakpoints.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breakpoints.js","sourceRoot":"","sources":["../src/breakpoints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,IAAI;CACD,CAAC;AAIX,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEpF,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,IAAI,MAAM,GAAe,IAAI,CAAC;IAC9B,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC;YAAE,MAAM,GAAG,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAA4C,EAC5C,MAAkB,EAClB,QAAW;IAEX,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAE,CAAC;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breakpoints.test.d.ts","sourceRoot":"","sources":["../src/breakpoints.test.ts"],"names":[],"mappings":""}
|
package/dist/breakpoints.test.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { BREAKPOINTS, resolveActiveBreakpoint, resolveResponsiveValue, } from './breakpoints.js';
|
|
3
|
-
describe('resolveActiveBreakpoint', () => {
|
|
4
|
-
it('returns xs below the sm threshold', () => {
|
|
5
|
-
expect(resolveActiveBreakpoint(0)).toBe('xs');
|
|
6
|
-
expect(resolveActiveBreakpoint(575)).toBe('xs');
|
|
7
|
-
});
|
|
8
|
-
it('returns the exact tier at its min-width boundary', () => {
|
|
9
|
-
expect(resolveActiveBreakpoint(BREAKPOINTS.sm)).toBe('sm');
|
|
10
|
-
expect(resolveActiveBreakpoint(BREAKPOINTS.md)).toBe('md');
|
|
11
|
-
expect(resolveActiveBreakpoint(BREAKPOINTS.lg)).toBe('lg');
|
|
12
|
-
expect(resolveActiveBreakpoint(BREAKPOINTS.xl)).toBe('xl');
|
|
13
|
-
expect(resolveActiveBreakpoint(BREAKPOINTS.xxl)).toBe('xxl');
|
|
14
|
-
});
|
|
15
|
-
it('returns the largest tier whose min-width is ≤ width', () => {
|
|
16
|
-
expect(resolveActiveBreakpoint(700)).toBe('sm'); // 576 ≤ 700 < 768
|
|
17
|
-
expect(resolveActiveBreakpoint(1000)).toBe('lg'); // 992 ≤ 1000 < 1200
|
|
18
|
-
expect(resolveActiveBreakpoint(5000)).toBe('xxl');
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
describe('resolveResponsiveValue', () => {
|
|
22
|
-
it('returns the exact value when the active tier is set', () => {
|
|
23
|
-
expect(resolveResponsiveValue({ xs: 24, md: 12 }, 'md', 0)).toBe(12);
|
|
24
|
-
});
|
|
25
|
-
it('cascades up from the nearest smaller tier (mobile-first)', () => {
|
|
26
|
-
// lg unset → falls back to md
|
|
27
|
-
expect(resolveResponsiveValue({ xs: 24, md: 12 }, 'lg', 0)).toBe(12);
|
|
28
|
-
// xxl unset → cascades all the way to xs
|
|
29
|
-
expect(resolveResponsiveValue({ xs: 24 }, 'xxl', 0)).toBe(24);
|
|
30
|
-
});
|
|
31
|
-
it('does NOT cascade down from a larger tier', () => {
|
|
32
|
-
// only md set, active is sm → no smaller value → fallback
|
|
33
|
-
expect(resolveResponsiveValue({ md: 12 }, 'sm', 99)).toBe(99);
|
|
34
|
-
});
|
|
35
|
-
it('returns the fallback when the map is empty', () => {
|
|
36
|
-
expect(resolveResponsiveValue({}, 'lg', 8)).toBe(8);
|
|
37
|
-
});
|
|
38
|
-
it('treats 0 as a present value (not missing)', () => {
|
|
39
|
-
expect(resolveResponsiveValue({ xs: 0, lg: 6 }, 'sm', 99)).toBe(0);
|
|
40
|
-
});
|
|
41
|
-
it('works with object values (span/offset config)', () => {
|
|
42
|
-
const cfg = { xs: { span: 24 }, lg: { span: 8, offset: 2 } };
|
|
43
|
-
expect(resolveResponsiveValue(cfg, 'xl', { span: 24 })).toEqual({ span: 8, offset: 2 });
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=breakpoints.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breakpoints.test.js","sourceRoot":"","sources":["../src/breakpoints.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lottie-icon.d.ts
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* createLottieIcon helpers — framework-agnostic Lottie icon logic.
|
|
3
|
-
* Pure decision functions (reduced-motion resolution, size mapping, autoplay
|
|
4
|
-
* gating) plus a player-adapter interface so the library never hard-depends on
|
|
5
|
-
* lottie-web — consumers inject any player. The svelte layer owns the mount
|
|
6
|
-
* node + adapter lifecycle. See specs/components/other/LottieIcon.spec.md §3
|
|
7
|
-
* (dependency-injected adapter; src fetch / visible / segments deferred).
|
|
8
|
-
*/
|
|
9
|
-
export type LottieTrigger = 'auto' | 'hover' | 'manual';
|
|
10
|
-
export type LottieSize = 'small' | 'default' | 'large';
|
|
11
|
-
/**
|
|
12
|
-
* Render backend the injected player should use. Mirrors lottie-web's
|
|
13
|
-
* `renderer` option ('svg' | 'canvas' | 'html'). Optional everywhere so legacy
|
|
14
|
-
* factories that ignore it keep their default ('svg') behaviour.
|
|
15
|
-
*/
|
|
16
|
-
export type LottieRenderer = 'svg' | 'canvas' | 'html';
|
|
17
|
-
/**
|
|
18
|
-
* Frame segment to play: a `[start, end]` frame pair, or a named marker string
|
|
19
|
-
* resolved against the animation data's `markers`. See `resolveSegments`.
|
|
20
|
-
*/
|
|
21
|
-
export type LottieSegments = [number, number] | string;
|
|
22
|
-
/** Minimal player adapter the host injects (e.g. wrapping lottie-web). */
|
|
23
|
-
export interface LottiePlayerAdapter {
|
|
24
|
-
play(): void;
|
|
25
|
-
pause(): void;
|
|
26
|
-
stop(): void;
|
|
27
|
-
/** jump to a specific frame and hold (used for reduced-motion static frame) */
|
|
28
|
-
goToFrame?(frame: number): void;
|
|
29
|
-
/**
|
|
30
|
-
* Play a resolved `[start, end]` frame segment. Optional: when the injected
|
|
31
|
-
* player lacks it, the host falls back to `play()`. The svelte layer always
|
|
32
|
-
* passes a numeric pair (named markers resolved via `resolveSegments`).
|
|
33
|
-
*/
|
|
34
|
-
playSegments?(segments: [number, number]): void;
|
|
35
|
-
destroy(): void;
|
|
36
|
-
}
|
|
37
|
-
/** Factory the host passes: builds an adapter for the given container + data. */
|
|
38
|
-
export type LottiePlayerFactory = (config: {
|
|
39
|
-
container: HTMLElement;
|
|
40
|
-
data: unknown;
|
|
41
|
-
loop: boolean | number;
|
|
42
|
-
autoplay: boolean;
|
|
43
|
-
speed: number;
|
|
44
|
-
/** Resolved initial `[start, end]` frame segment, when `segments` is set. */
|
|
45
|
-
segment?: [number, number];
|
|
46
|
-
/**
|
|
47
|
-
* Render backend ('svg' | 'canvas' | 'html'), forwarded to e.g. lottie-web's
|
|
48
|
-
* `renderer` option. Optional & backward-compatible: omitted when the host's
|
|
49
|
-
* `canvas`/`renderer` prop is unset, so legacy factories default to 'svg'.
|
|
50
|
-
*/
|
|
51
|
-
renderer?: LottieRenderer;
|
|
52
|
-
}) => LottiePlayerAdapter;
|
|
53
|
-
/**
|
|
54
|
-
* Resolve the host `canvas` / `renderer` prop into a concrete renderer backend
|
|
55
|
-
* for the factory (pure). `renderer` (explicit string) wins; otherwise
|
|
56
|
-
* `canvas === true` → 'canvas'. Returns `undefined` when neither is set so the
|
|
57
|
-
* host omits `renderer` entirely and legacy factories keep their 'svg' default.
|
|
58
|
-
*/
|
|
59
|
-
export declare function resolveRenderer(canvas: boolean | undefined, renderer: LottieRenderer | undefined): LottieRenderer | undefined;
|
|
60
|
-
/**
|
|
61
|
-
* Resolve a `segments` prop into a concrete `[start, end]` frame pair.
|
|
62
|
-
* - `[start, end]` numeric pair → returned as-is.
|
|
63
|
-
* - marker name string → looked up in the data's `markers` (`cm` name,
|
|
64
|
-
* `tm` start time, `dr` duration); resolves to `[tm, tm + dr]`.
|
|
65
|
-
* Returns `null` when unresolvable (no markers / name not found / bad input)
|
|
66
|
-
* so the host can fall back to playing the whole animation.
|
|
67
|
-
*/
|
|
68
|
-
export declare function resolveSegments(segments: LottieSegments | undefined, data: unknown): [number, number] | null;
|
|
69
|
-
/**
|
|
70
|
-
* Is `src` a usable animation source URL (non-empty string). Pure guard used
|
|
71
|
-
* by the host to decide whether to kick off a fetch.
|
|
72
|
-
*/
|
|
73
|
-
export declare function isLottieSrc(src: unknown): src is string;
|
|
74
|
-
/** Map a size token (or raw px number) to a pixel value. */
|
|
75
|
-
export declare function resolveSize(size: LottieSize | number): number;
|
|
76
|
-
/**
|
|
77
|
-
* Resolve whether animation should run: an explicit `reducedMotion` prop wins;
|
|
78
|
-
* otherwise follow the system `prefers-reduced-motion`. Returns true when
|
|
79
|
-
* animation is ALLOWED (i.e. NOT reduced).
|
|
80
|
-
*/
|
|
81
|
-
export declare function resolveAnimated(reducedMotionProp: boolean | undefined, systemReduced: boolean): boolean;
|
|
82
|
-
/**
|
|
83
|
-
* Should the icon start playing on mount, given trigger + autoplay + whether
|
|
84
|
-
* animation is allowed (reduced-motion). Only `auto` honors autoplay; hover &
|
|
85
|
-
* manual never autoplay.
|
|
86
|
-
*/
|
|
87
|
-
export declare function shouldAutoplay(trigger: LottieTrigger, autoplay: boolean, animated: boolean): boolean;
|
|
88
|
-
//# sourceMappingURL=lottie-icon.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lottie-icon.d.ts","sourceRoot":"","sources":["../src/lottie-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AAEvD,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,+EAA+E;IAC/E,SAAS,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,iFAAiF;AACjF,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE;IACzC,SAAS,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,KAAK,mBAAmB,CAAC;AAE1B;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,QAAQ,EAAE,cAAc,GAAG,SAAS,GACnC,cAAc,GAAG,SAAS,CAI5B;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,IAAI,EAAE,OAAO,GACZ,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiBzB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAEvD;AAID,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,iBAAiB,EAAE,OAAO,GAAG,SAAS,EACtC,aAAa,EAAE,OAAO,GACrB,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAGT"}
|
package/dist/lottie-icon.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* createLottieIcon helpers — framework-agnostic Lottie icon logic.
|
|
3
|
-
* Pure decision functions (reduced-motion resolution, size mapping, autoplay
|
|
4
|
-
* gating) plus a player-adapter interface so the library never hard-depends on
|
|
5
|
-
* lottie-web — consumers inject any player. The svelte layer owns the mount
|
|
6
|
-
* node + adapter lifecycle. See specs/components/other/LottieIcon.spec.md §3
|
|
7
|
-
* (dependency-injected adapter; src fetch / visible / segments deferred).
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Resolve the host `canvas` / `renderer` prop into a concrete renderer backend
|
|
11
|
-
* for the factory (pure). `renderer` (explicit string) wins; otherwise
|
|
12
|
-
* `canvas === true` → 'canvas'. Returns `undefined` when neither is set so the
|
|
13
|
-
* host omits `renderer` entirely and legacy factories keep their 'svg' default.
|
|
14
|
-
*/
|
|
15
|
-
export function resolveRenderer(canvas, renderer) {
|
|
16
|
-
if (renderer != null)
|
|
17
|
-
return renderer;
|
|
18
|
-
if (canvas === true)
|
|
19
|
-
return 'canvas';
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Resolve a `segments` prop into a concrete `[start, end]` frame pair.
|
|
24
|
-
* - `[start, end]` numeric pair → returned as-is.
|
|
25
|
-
* - marker name string → looked up in the data's `markers` (`cm` name,
|
|
26
|
-
* `tm` start time, `dr` duration); resolves to `[tm, tm + dr]`.
|
|
27
|
-
* Returns `null` when unresolvable (no markers / name not found / bad input)
|
|
28
|
-
* so the host can fall back to playing the whole animation.
|
|
29
|
-
*/
|
|
30
|
-
export function resolveSegments(segments, data) {
|
|
31
|
-
if (segments == null)
|
|
32
|
-
return null;
|
|
33
|
-
if (Array.isArray(segments)) {
|
|
34
|
-
const [start, end] = segments;
|
|
35
|
-
if (typeof start === 'number' && typeof end === 'number' && Number.isFinite(start) && Number.isFinite(end)) {
|
|
36
|
-
return [start, end];
|
|
37
|
-
}
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
if (typeof segments !== 'string')
|
|
41
|
-
return null;
|
|
42
|
-
const markers = data?.markers;
|
|
43
|
-
if (!Array.isArray(markers))
|
|
44
|
-
return null;
|
|
45
|
-
const marker = markers.find((m) => m && m.cm === segments);
|
|
46
|
-
if (!marker || typeof marker.tm !== 'number')
|
|
47
|
-
return null;
|
|
48
|
-
const start = marker.tm;
|
|
49
|
-
const end = start + (typeof marker.dr === 'number' ? marker.dr : 0);
|
|
50
|
-
return [start, end];
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Is `src` a usable animation source URL (non-empty string). Pure guard used
|
|
54
|
-
* by the host to decide whether to kick off a fetch.
|
|
55
|
-
*/
|
|
56
|
-
export function isLottieSrc(src) {
|
|
57
|
-
return typeof src === 'string' && src.trim().length > 0;
|
|
58
|
-
}
|
|
59
|
-
const SIZE_PX = { small: 16, default: 20, large: 24 };
|
|
60
|
-
/** Map a size token (or raw px number) to a pixel value. */
|
|
61
|
-
export function resolveSize(size) {
|
|
62
|
-
return typeof size === 'number' ? size : SIZE_PX[size];
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Resolve whether animation should run: an explicit `reducedMotion` prop wins;
|
|
66
|
-
* otherwise follow the system `prefers-reduced-motion`. Returns true when
|
|
67
|
-
* animation is ALLOWED (i.e. NOT reduced).
|
|
68
|
-
*/
|
|
69
|
-
export function resolveAnimated(reducedMotionProp, systemReduced) {
|
|
70
|
-
if (reducedMotionProp !== undefined)
|
|
71
|
-
return !reducedMotionProp;
|
|
72
|
-
return !systemReduced;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Should the icon start playing on mount, given trigger + autoplay + whether
|
|
76
|
-
* animation is allowed (reduced-motion). Only `auto` honors autoplay; hover &
|
|
77
|
-
* manual never autoplay.
|
|
78
|
-
*/
|
|
79
|
-
export function shouldAutoplay(trigger, autoplay, animated) {
|
|
80
|
-
if (!animated)
|
|
81
|
-
return false;
|
|
82
|
-
return trigger === 'auto' && autoplay;
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=lottie-icon.js.map
|
package/dist/lottie-icon.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lottie-icon.js","sourceRoot":"","sources":["../src/lottie-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmDH;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA2B,EAC3B,QAAoC;IAEpC,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACtC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAoC,EACpC,IAAa;IAEb,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3G,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAI,IAAwD,EAAE,OAAO,CAAC;IACnF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,OAAO,GAA+B,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAElF,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CAAC,IAAyB;IACnD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,iBAAsC,EACtC,aAAsB;IAEtB,IAAI,iBAAiB,KAAK,SAAS;QAAE,OAAO,CAAC,iBAAiB,CAAC;IAC/D,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAsB,EACtB,QAAiB,EACjB,QAAiB;IAEjB,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,OAAO,OAAO,KAAK,MAAM,IAAI,QAAQ,CAAC;AACxC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lottie-icon.test.d.ts","sourceRoot":"","sources":["../src/lottie-icon.test.ts"],"names":[],"mappings":""}
|
package/dist/lottie-icon.test.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { resolveSize, resolveAnimated, shouldAutoplay, resolveSegments, isLottieSrc, resolveRenderer, } from './lottie-icon.js';
|
|
3
|
-
describe('resolveSize', () => {
|
|
4
|
-
it('maps size tokens to px', () => {
|
|
5
|
-
expect(resolveSize('small')).toBe(16);
|
|
6
|
-
expect(resolveSize('default')).toBe(20);
|
|
7
|
-
expect(resolveSize('large')).toBe(24);
|
|
8
|
-
});
|
|
9
|
-
it('passes through raw numbers', () => {
|
|
10
|
-
expect(resolveSize(48)).toBe(48);
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
describe('resolveAnimated', () => {
|
|
14
|
-
it('explicit reducedMotion prop wins over system', () => {
|
|
15
|
-
expect(resolveAnimated(true, false)).toBe(false); // forced reduce → not animated
|
|
16
|
-
expect(resolveAnimated(false, true)).toBe(true); // forced motion → animated despite system
|
|
17
|
-
});
|
|
18
|
-
it('follows system when prop is undefined', () => {
|
|
19
|
-
expect(resolveAnimated(undefined, false)).toBe(true); // system not reduced → animated
|
|
20
|
-
expect(resolveAnimated(undefined, true)).toBe(false); // system reduced → not animated
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe('shouldAutoplay', () => {
|
|
24
|
-
it('auto + autoplay + animated → true', () => {
|
|
25
|
-
expect(shouldAutoplay('auto', true, true)).toBe(true);
|
|
26
|
-
});
|
|
27
|
-
it('not animated (reduced-motion) → never autoplay', () => {
|
|
28
|
-
expect(shouldAutoplay('auto', true, false)).toBe(false);
|
|
29
|
-
});
|
|
30
|
-
it('autoplay=false → no autoplay', () => {
|
|
31
|
-
expect(shouldAutoplay('auto', false, true)).toBe(false);
|
|
32
|
-
});
|
|
33
|
-
it('hover/manual triggers never autoplay', () => {
|
|
34
|
-
expect(shouldAutoplay('hover', true, true)).toBe(false);
|
|
35
|
-
expect(shouldAutoplay('manual', true, true)).toBe(false);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
describe('resolveSegments', () => {
|
|
39
|
-
it('passes through a numeric frame pair', () => {
|
|
40
|
-
expect(resolveSegments([10, 60], null)).toEqual([10, 60]);
|
|
41
|
-
});
|
|
42
|
-
it('returns null for undefined / invalid pairs', () => {
|
|
43
|
-
expect(resolveSegments(undefined, null)).toBeNull();
|
|
44
|
-
// @ts-expect-error invalid tuple
|
|
45
|
-
expect(resolveSegments(['a', 'b'], null)).toBeNull();
|
|
46
|
-
expect(resolveSegments([NaN, 5], null)).toBeNull();
|
|
47
|
-
});
|
|
48
|
-
it('resolves a named marker against data.markers (tm + dr)', () => {
|
|
49
|
-
const data = { markers: [{ cm: 'hover', tm: 30, dr: 20 }, { cm: 'idle', tm: 0, dr: 30 }] };
|
|
50
|
-
expect(resolveSegments('hover', data)).toEqual([30, 50]);
|
|
51
|
-
expect(resolveSegments('idle', data)).toEqual([0, 30]);
|
|
52
|
-
});
|
|
53
|
-
it('returns null when marker missing or no markers', () => {
|
|
54
|
-
expect(resolveSegments('nope', { markers: [{ cm: 'x', tm: 1, dr: 1 }] })).toBeNull();
|
|
55
|
-
expect(resolveSegments('x', {})).toBeNull();
|
|
56
|
-
expect(resolveSegments('x', null)).toBeNull();
|
|
57
|
-
});
|
|
58
|
-
it('treats marker without dr as a zero-length point', () => {
|
|
59
|
-
expect(resolveSegments('p', { markers: [{ cm: 'p', tm: 12 }] })).toEqual([12, 12]);
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
describe('isLottieSrc', () => {
|
|
63
|
-
it('true for non-empty strings', () => {
|
|
64
|
-
expect(isLottieSrc('https://x/a.json')).toBe(true);
|
|
65
|
-
expect(isLottieSrc(' /local.json ')).toBe(true);
|
|
66
|
-
});
|
|
67
|
-
it('false for empty / non-string', () => {
|
|
68
|
-
expect(isLottieSrc('')).toBe(false);
|
|
69
|
-
expect(isLottieSrc(' ')).toBe(false);
|
|
70
|
-
expect(isLottieSrc(undefined)).toBe(false);
|
|
71
|
-
expect(isLottieSrc({})).toBe(false);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe('resolveRenderer', () => {
|
|
75
|
-
it('explicit renderer wins over canvas', () => {
|
|
76
|
-
expect(resolveRenderer(true, 'html')).toBe('html');
|
|
77
|
-
expect(resolveRenderer(false, 'svg')).toBe('svg');
|
|
78
|
-
expect(resolveRenderer(undefined, 'canvas')).toBe('canvas');
|
|
79
|
-
});
|
|
80
|
-
it('canvas=true maps to canvas when no explicit renderer', () => {
|
|
81
|
-
expect(resolveRenderer(true, undefined)).toBe('canvas');
|
|
82
|
-
});
|
|
83
|
-
it('undefined (omitted) for default svg / backward compat', () => {
|
|
84
|
-
expect(resolveRenderer(false, undefined)).toBeUndefined();
|
|
85
|
-
expect(resolveRenderer(undefined, undefined)).toBeUndefined();
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
//# sourceMappingURL=lottie-icon.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lottie-icon.test.js","sourceRoot":"","sources":["../src/lottie-icon.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,+BAA+B;QACjF,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0CAA0C;IAC7F,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC;QACtF,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAgC;IACxF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpD,iCAAiC;QACjC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3F,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrF,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/sider.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { type Breakpoint } from './breakpoints.js';
|
|
2
|
-
export type SiderTrigger = 'click' | 'breakpoint';
|
|
3
|
-
export type { Breakpoint };
|
|
4
|
-
export interface SiderOptions {
|
|
5
|
-
/** controlled collapsed value; when provided, internal state is not mutated */
|
|
6
|
-
collapsed?: boolean;
|
|
7
|
-
defaultCollapsed?: boolean;
|
|
8
|
-
/** auto-collapse below this breakpoint */
|
|
9
|
-
breakpoint?: Breakpoint;
|
|
10
|
-
onChange?: (collapsed: boolean, trigger: SiderTrigger) => void;
|
|
11
|
-
onBreakpoint?: (matched: boolean, breakpoint: Breakpoint) => void;
|
|
12
|
-
}
|
|
13
|
-
export interface SiderApi {
|
|
14
|
-
/** stable id for aria-controls */
|
|
15
|
-
readonly id: string;
|
|
16
|
-
/** current collapsed state */
|
|
17
|
-
getCollapsed(): boolean;
|
|
18
|
-
/** subscribe to collapsed changes; returns unsubscribe */
|
|
19
|
-
subscribe(listener: (collapsed: boolean) => void): () => void;
|
|
20
|
-
toggle(): void;
|
|
21
|
-
setCollapsed(value: boolean, trigger?: SiderTrigger): void;
|
|
22
|
-
/** start matchMedia breakpoint watching (call on mount). no-op without breakpoint. */
|
|
23
|
-
watchBreakpoint(): () => void;
|
|
24
|
-
}
|
|
25
|
-
export declare function createSider(options?: SiderOptions): SiderApi;
|
|
26
|
-
//# sourceMappingURL=sider.d.ts.map
|
package/dist/sider.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sider.d.ts","sourceRoot":"","sources":["../src/sider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,YAAY,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,IAAI,OAAO,CAAC;IACxB,0DAA0D;IAC1D,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC9D,MAAM,IAAI,IAAI,CAAC;IACf,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3D,sFAAsF;IACtF,eAAe,IAAI,MAAM,IAAI,CAAC;CAC/B;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,YAAiB,GAAG,QAAQ,CAsDhE"}
|
package/dist/sider.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* createSider — framework-agnostic collapse state machine for Layout.Sider.
|
|
3
|
-
* Handles controlled/uncontrolled collapse + optional breakpoint matchMedia.
|
|
4
|
-
* No DOM rendering, no framework deps. See specs/components/basic/Layout.spec.md.
|
|
5
|
-
*/
|
|
6
|
-
import { useId } from './id.js';
|
|
7
|
-
import { BREAKPOINTS } from './breakpoints.js';
|
|
8
|
-
export function createSider(options = {}) {
|
|
9
|
-
const { collapsed: controlled, defaultCollapsed = false, breakpoint, onChange, onBreakpoint, } = options;
|
|
10
|
-
const isControlled = controlled !== undefined;
|
|
11
|
-
let internal = isControlled ? controlled : defaultCollapsed;
|
|
12
|
-
const listeners = new Set();
|
|
13
|
-
function current() {
|
|
14
|
-
return isControlled ? controlled : internal;
|
|
15
|
-
}
|
|
16
|
-
function emit() {
|
|
17
|
-
for (const l of listeners)
|
|
18
|
-
l(current());
|
|
19
|
-
}
|
|
20
|
-
function setCollapsed(value, trigger = 'click') {
|
|
21
|
-
if (!isControlled) {
|
|
22
|
-
if (internal === value)
|
|
23
|
-
return;
|
|
24
|
-
internal = value;
|
|
25
|
-
emit();
|
|
26
|
-
}
|
|
27
|
-
onChange?.(value, trigger);
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
id: useId('cd-sider'),
|
|
31
|
-
getCollapsed: current,
|
|
32
|
-
subscribe(listener) {
|
|
33
|
-
listeners.add(listener);
|
|
34
|
-
return () => listeners.delete(listener);
|
|
35
|
-
},
|
|
36
|
-
toggle() {
|
|
37
|
-
setCollapsed(!current(), 'click');
|
|
38
|
-
},
|
|
39
|
-
setCollapsed,
|
|
40
|
-
watchBreakpoint() {
|
|
41
|
-
if (!breakpoint || typeof window === 'undefined' || !window.matchMedia) {
|
|
42
|
-
return () => { };
|
|
43
|
-
}
|
|
44
|
-
const mql = window.matchMedia(`(max-width: ${BREAKPOINTS[breakpoint] - 0.02}px)`);
|
|
45
|
-
const handle = (e) => {
|
|
46
|
-
onBreakpoint?.(e.matches, breakpoint);
|
|
47
|
-
setCollapsed(e.matches, 'breakpoint');
|
|
48
|
-
};
|
|
49
|
-
handle(mql);
|
|
50
|
-
mql.addEventListener('change', handle);
|
|
51
|
-
return () => mql.removeEventListener('change', handle);
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=sider.js.map
|
package/dist/sider.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sider.js","sourceRoot":"","sources":["../src/sider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AA4BhE,MAAM,UAAU,WAAW,CAAC,UAAwB,EAAE;IACpD,MAAM,EACJ,SAAS,EAAE,UAAU,EACrB,gBAAgB,GAAG,KAAK,EACxB,UAAU,EACV,QAAQ,EACR,YAAY,GACb,GAAG,OAAO,CAAC;IAEZ,MAAM,YAAY,GAAG,UAAU,KAAK,SAAS,CAAC;IAC9C,IAAI,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAE1D,SAAS,OAAO;QACd,OAAO,YAAY,CAAC,CAAC,CAAE,UAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3D,CAAC;IACD,SAAS,IAAI;QACX,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,YAAY,CAAC,KAAc,EAAE,UAAwB,OAAO;QACnE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,QAAQ,KAAK,KAAK;gBAAE,OAAO;YAC/B,QAAQ,GAAG,KAAK,CAAC;YACjB,IAAI,EAAE,CAAC;QACT,CAAC;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC;QACrB,YAAY,EAAE,OAAO;QACrB,SAAS,CAAC,QAAQ;YAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM;YACJ,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,YAAY;QACZ,eAAe;YACb,IAAI,CAAC,UAAU,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACvE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;YAClF,MAAM,MAAM,GAAG,CAAC,CAAuC,EAAQ,EAAE;gBAC/D,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACtC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACxC,CAAC,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,CAAC;YACZ,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/sider.test.d.ts
DELETED
package/dist/sider.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sider.test.d.ts","sourceRoot":"","sources":["../src/sider.test.ts"],"names":[],"mappings":""}
|
package/dist/sider.test.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
-
import { createSider } from './sider.js';
|
|
3
|
-
describe('createSider', () => {
|
|
4
|
-
it('uncontrolled: toggles and notifies subscribers', () => {
|
|
5
|
-
const s = createSider({ defaultCollapsed: false });
|
|
6
|
-
const seen = [];
|
|
7
|
-
s.subscribe((c) => seen.push(c));
|
|
8
|
-
expect(s.getCollapsed()).toBe(false);
|
|
9
|
-
s.toggle();
|
|
10
|
-
expect(s.getCollapsed()).toBe(true);
|
|
11
|
-
expect(seen).toEqual([true]);
|
|
12
|
-
});
|
|
13
|
-
it('controlled: does not mutate internal, still fires onChange', () => {
|
|
14
|
-
const onChange = vi.fn();
|
|
15
|
-
const s = createSider({ collapsed: false, onChange });
|
|
16
|
-
s.toggle();
|
|
17
|
-
expect(s.getCollapsed()).toBe(false); // unchanged (controlled)
|
|
18
|
-
expect(onChange).toHaveBeenCalledWith(true, 'click');
|
|
19
|
-
});
|
|
20
|
-
it('exposes a stable id for aria-controls', () => {
|
|
21
|
-
const s = createSider();
|
|
22
|
-
expect(s.id).toMatch(/^cd-sider-/);
|
|
23
|
-
});
|
|
24
|
-
it('watchBreakpoint is a no-op without a breakpoint', () => {
|
|
25
|
-
const s = createSider();
|
|
26
|
-
expect(typeof s.watchBreakpoint()).toBe('function');
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=sider.test.js.map
|
package/dist/sider.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sider.test.js","sourceRoot":"","sources":["../src/sider.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|