@yewdiel21/motion-kit 0.16.0 → 0.18.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/README.md +44 -0
- package/dist/auto/index.d.ts +23 -3
- package/dist/auto/index.js +43 -3
- package/dist/auto/index.js.map +1 -1
- package/dist/{chunk-RBEKR5UZ.js → chunk-AWDEKDEJ.js} +2 -2
- package/dist/{chunk-NFZIX3IA.js → chunk-EDMXWUW3.js} +2 -2
- package/dist/{chunk-SDQ776LG.js → chunk-Q7IW4FV3.js} +3941 -43
- package/dist/chunk-Q7IW4FV3.js.map +1 -0
- package/dist/css/components/badge-button.css +16 -0
- package/dist/css/components/bento-grid.css +13 -0
- package/dist/css/components/drilldown-menu.css +134 -0
- package/dist/css/components/equalizer-slider.css +26 -0
- package/dist/css/components/handwriting-text.css +15 -0
- package/dist/css/components/magnetize-button.css +18 -0
- package/dist/css/components/morphing-page-dots.css +13 -0
- package/dist/css/components/not-found.css +22 -0
- package/dist/css/components/notification-stack.css +42 -0
- package/dist/css/components/particle-button.css +14 -0
- package/dist/css/components/radio-group.css +29 -0
- package/dist/css/components/rating-scale.css +23 -0
- package/dist/css/components/scroll-preview-dock.css +18 -0
- package/dist/css/components/select.css +16 -0
- package/dist/css/components/signature-pad.css +131 -0
- package/dist/css/components/stepper.css +36 -0
- package/dist/css/components/sticky-header.css +10 -0
- package/dist/css/components/temperature-slider.css +29 -0
- package/dist/css/components/voice-message-bubble.css +67 -0
- package/dist/css/components/waveform-player.css +51 -0
- package/dist/css/components/wheel-picker.css +18 -0
- package/dist/css/tokens.css +4 -0
- package/dist/elements/index.d.ts +292 -4
- package/dist/elements/index.js +856 -4
- package/dist/elements/index.js.map +1 -1
- package/dist/{reveal-DRpNO4KP.d.ts → engine-t8d7brjn.d.ts} +534 -1
- package/dist/index.css +713 -0
- package/dist/index.d.ts +23 -23
- package/dist/index.js +43 -3
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +151 -7
- package/dist/react/index.js +893 -3
- package/dist/react/index.js.map +1 -1
- package/dist/{reduced-DQwVXQYb.d.ts → reduced-dPsZYqtI.d.ts} +1 -1
- package/dist/{store-Da3zSh8Z.d.ts → store-6hZNKiee.d.ts} +1 -1
- package/package.json +110 -110
- package/registry.json +244 -0
- package/src/auto/auto-init.ts +339 -293
- package/src/components/badge-button/README.md +28 -0
- package/src/components/badge-button/badge-button.css +15 -0
- package/src/components/badge-button/element.ts +16 -0
- package/src/components/badge-button/engine.ts +85 -0
- package/src/components/badge-button/react.tsx +31 -0
- package/src/components/bento-grid/README.md +26 -0
- package/src/components/bento-grid/bento-grid.css +12 -0
- package/src/components/bento-grid/element.ts +22 -0
- package/src/components/bento-grid/engine.ts +153 -0
- package/src/components/bento-grid/react.tsx +25 -0
- package/src/components/drilldown-menu/README.md +163 -0
- package/src/components/drilldown-menu/drilldown-menu.css +133 -0
- package/src/components/drilldown-menu/element.ts +59 -0
- package/src/components/drilldown-menu/engine.ts +378 -0
- package/src/components/drilldown-menu/react.tsx +76 -0
- package/src/components/equalizer-slider/README.md +43 -0
- package/src/components/equalizer-slider/element.ts +41 -0
- package/src/components/equalizer-slider/engine.ts +32 -0
- package/src/components/equalizer-slider/equalizer-slider.css +26 -0
- package/src/components/equalizer-slider/react.tsx +60 -0
- package/src/components/equalizer-slider/shared.ts +161 -0
- package/src/components/handwriting-text/README.md +29 -0
- package/src/components/handwriting-text/element.ts +14 -0
- package/src/components/handwriting-text/engine.ts +108 -0
- package/src/components/handwriting-text/glyphs.ts +71 -0
- package/src/components/handwriting-text/handwriting-text.css +14 -0
- package/src/components/handwriting-text/react.tsx +23 -0
- package/src/components/magnetize-button/README.md +26 -0
- package/src/components/magnetize-button/element.ts +13 -0
- package/src/components/magnetize-button/engine.ts +84 -0
- package/src/components/magnetize-button/magnetize-button.css +17 -0
- package/src/components/magnetize-button/react.tsx +22 -0
- package/src/components/morphing-page-dots/README.md +28 -0
- package/src/components/morphing-page-dots/element.ts +16 -0
- package/src/components/morphing-page-dots/engine.ts +89 -0
- package/src/components/morphing-page-dots/morphing-page-dots.css +12 -0
- package/src/components/morphing-page-dots/react.tsx +32 -0
- package/src/components/not-found/README.md +26 -0
- package/src/components/not-found/element.ts +15 -0
- package/src/components/not-found/engine.ts +57 -0
- package/src/components/not-found/not-found.css +21 -0
- package/src/components/not-found/react.tsx +23 -0
- package/src/components/notification-stack/README.md +24 -0
- package/src/components/notification-stack/element.ts +26 -0
- package/src/components/notification-stack/engine.ts +329 -0
- package/src/components/notification-stack/notification-stack.css +41 -0
- package/src/components/notification-stack/react.tsx +28 -0
- package/src/components/particle-button/README.md +26 -0
- package/src/components/particle-button/element.ts +13 -0
- package/src/components/particle-button/engine.ts +52 -0
- package/src/components/particle-button/particle-button.css +13 -0
- package/src/components/particle-button/react.tsx +22 -0
- package/src/components/radio-group/README.md +43 -0
- package/src/components/radio-group/element.ts +41 -0
- package/src/components/radio-group/engine.ts +11 -0
- package/src/components/radio-group/radio-group.css +28 -0
- package/src/components/radio-group/react.tsx +60 -0
- package/src/components/radio-group/shared.ts +118 -0
- package/src/components/rating-scale/README.md +43 -0
- package/src/components/rating-scale/element.ts +41 -0
- package/src/components/rating-scale/engine.ts +63 -0
- package/src/components/rating-scale/rating-scale.css +22 -0
- package/src/components/rating-scale/react.tsx +60 -0
- package/src/components/scroll-preview-dock/README.md +24 -0
- package/src/components/scroll-preview-dock/element.ts +20 -0
- package/src/components/scroll-preview-dock/engine.ts +228 -0
- package/src/components/scroll-preview-dock/react.tsx +26 -0
- package/src/components/scroll-preview-dock/scroll-preview-dock.css +17 -0
- package/src/components/select/README.md +23 -9
- package/src/components/select/select.css +16 -0
- package/src/components/signature-pad/README.md +97 -0
- package/src/components/signature-pad/element.ts +57 -0
- package/src/components/signature-pad/engine.ts +550 -0
- package/src/components/signature-pad/react.tsx +56 -0
- package/src/components/signature-pad/signature-pad.css +130 -0
- package/src/components/stepper/README.md +46 -0
- package/src/components/stepper/element.ts +42 -0
- package/src/components/stepper/engine.ts +103 -0
- package/src/components/stepper/react.tsx +60 -0
- package/src/components/stepper/stepper.css +35 -0
- package/src/components/sticky-header/README.md +30 -0
- package/src/components/sticky-header/element.ts +19 -0
- package/src/components/sticky-header/engine.ts +95 -0
- package/src/components/sticky-header/react.tsx +25 -0
- package/src/components/sticky-header/sticky-header.css +9 -0
- package/src/components/temperature-slider/README.md +42 -0
- package/src/components/temperature-slider/element.ts +53 -0
- package/src/components/temperature-slider/engine.ts +44 -0
- package/src/components/temperature-slider/react.tsx +66 -0
- package/src/components/temperature-slider/temperature-slider.css +29 -0
- package/src/components/voice-message-bubble/README.md +31 -0
- package/src/components/voice-message-bubble/element.ts +20 -0
- package/src/components/voice-message-bubble/engine.ts +79 -0
- package/src/components/voice-message-bubble/react.tsx +27 -0
- package/src/components/voice-message-bubble/voice-message-bubble.css +14 -0
- package/src/components/waveform-player/README.md +30 -0
- package/src/components/waveform-player/element.ts +21 -0
- package/src/components/waveform-player/engine.ts +344 -0
- package/src/components/waveform-player/react.tsx +27 -0
- package/src/components/waveform-player/waveform-player.css +50 -0
- package/src/components/wheel-picker/README.md +35 -0
- package/src/components/wheel-picker/element.ts +25 -0
- package/src/components/wheel-picker/engine.ts +239 -0
- package/src/components/wheel-picker/react.tsx +32 -0
- package/src/components/wheel-picker/wheel-picker.css +17 -0
- package/src/css/tokens.css +4 -0
- package/src/elements/index.ts +318 -258
- package/src/index.ts +21 -0
- package/src/react/index.ts +192 -171
- package/dist/chunk-SDQ776LG.js.map +0 -1
- /package/dist/{chunk-RBEKR5UZ.js.map → chunk-AWDEKDEJ.js.map} +0 -0
- /package/dist/{chunk-NFZIX3IA.js.map → chunk-EDMXWUW3.js.map} +0 -0
package/dist/react/index.js
CHANGED
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
pileLayers,
|
|
56
56
|
pileStyle,
|
|
57
57
|
reflowLayout
|
|
58
|
-
} from "../chunk-
|
|
58
|
+
} from "../chunk-EDMXWUW3.js";
|
|
59
59
|
import {
|
|
60
60
|
ICON_PATHS,
|
|
61
61
|
NAV_STYLES,
|
|
@@ -84,12 +84,14 @@ import {
|
|
|
84
84
|
revealShell,
|
|
85
85
|
toNavStyle,
|
|
86
86
|
toast
|
|
87
|
-
} from "../chunk-
|
|
87
|
+
} from "../chunk-AWDEKDEJ.js";
|
|
88
88
|
import {
|
|
89
89
|
confetti,
|
|
90
90
|
createActivityFeed,
|
|
91
91
|
createAddToCart,
|
|
92
92
|
createAttachment,
|
|
93
|
+
createBadgeButton,
|
|
94
|
+
createBentoGrid,
|
|
93
95
|
createBreadcrumb,
|
|
94
96
|
createCalendar,
|
|
95
97
|
createChart,
|
|
@@ -108,10 +110,13 @@ import {
|
|
|
108
110
|
createDateTimePicker,
|
|
109
111
|
createDialog,
|
|
110
112
|
createDrawer,
|
|
113
|
+
createDrilldownMenu,
|
|
111
114
|
createEditableTable,
|
|
112
115
|
createEmptyState,
|
|
116
|
+
createEqualizerSlider,
|
|
113
117
|
createFileExplorer,
|
|
114
118
|
createFilterBuilder,
|
|
119
|
+
createHandwritingText,
|
|
115
120
|
createHoldConfirm,
|
|
116
121
|
createHoverCard,
|
|
117
122
|
createImagePreview,
|
|
@@ -119,37 +124,52 @@ import {
|
|
|
119
124
|
createJsonViewer,
|
|
120
125
|
createLikeButton,
|
|
121
126
|
createLoadingButton,
|
|
127
|
+
createMagnetizeButton,
|
|
122
128
|
createMenu,
|
|
129
|
+
createMorphingPageDots,
|
|
123
130
|
createMultiSelect,
|
|
131
|
+
createNotFound,
|
|
124
132
|
createNotificationBell,
|
|
133
|
+
createNotificationStack,
|
|
125
134
|
createPagination,
|
|
135
|
+
createParticleButton,
|
|
126
136
|
createPasswordStrength,
|
|
127
137
|
createPopover,
|
|
128
138
|
createProgress,
|
|
129
139
|
createQuantity,
|
|
130
140
|
createQuestionnaire,
|
|
141
|
+
createRadioGroup,
|
|
131
142
|
createRangeCalendar,
|
|
132
143
|
createRangeSlider,
|
|
144
|
+
createRatingScale,
|
|
133
145
|
createResizablePanel,
|
|
134
146
|
createRichTextEditor,
|
|
135
147
|
createScratchCard,
|
|
136
148
|
createScrollIsland,
|
|
149
|
+
createScrollPreviewDock,
|
|
137
150
|
createSelect,
|
|
151
|
+
createSignaturePad,
|
|
138
152
|
createSkeleton,
|
|
139
153
|
createSlotPicker,
|
|
140
154
|
createSplitView,
|
|
141
155
|
createStarRating,
|
|
142
156
|
createStatCard,
|
|
157
|
+
createStepper,
|
|
143
158
|
createSteps,
|
|
159
|
+
createStickyHeader,
|
|
144
160
|
createStudioDock,
|
|
145
161
|
createSwipeActions,
|
|
146
162
|
createTagInput,
|
|
163
|
+
createTemperatureSlider,
|
|
147
164
|
createTimeField,
|
|
148
165
|
createTimeline,
|
|
149
166
|
createTooltip,
|
|
150
167
|
createTrailer,
|
|
151
168
|
createTreeView,
|
|
152
169
|
createVirtualList,
|
|
170
|
+
createVoiceMessageBubble,
|
|
171
|
+
createWaveformPlayer,
|
|
172
|
+
createWheelPicker,
|
|
153
173
|
dateTimeKey,
|
|
154
174
|
flowLines,
|
|
155
175
|
languageFamily,
|
|
@@ -165,7 +185,7 @@ import {
|
|
|
165
185
|
tokenLines,
|
|
166
186
|
tokenize,
|
|
167
187
|
tweenNumber
|
|
168
|
-
} from "../chunk-
|
|
188
|
+
} from "../chunk-Q7IW4FV3.js";
|
|
169
189
|
import {
|
|
170
190
|
DEFAULT_THEME,
|
|
171
191
|
MK_THEME_HEAD_SCRIPT,
|
|
@@ -3491,12 +3511,864 @@ function OrbitMenu({ items, label = "Men\xFA", radius, start, closeOnSelect, onT
|
|
|
3491
3511
|
items.map((item) => /* @__PURE__ */ jsx84("button", { type: "button", "data-mk-orbit-item": "", "data-mk-value": item.value, "aria-label": item.label, children: item.icon }, item.value))
|
|
3492
3512
|
] });
|
|
3493
3513
|
}
|
|
3514
|
+
|
|
3515
|
+
// src/components/signature-pad/react.tsx
|
|
3516
|
+
import { useReducer, useRef as useRef79 } from "react";
|
|
3517
|
+
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
3518
|
+
function SignaturePad({ value, defaultValue, label, hint, placeholder, color, width, disabled, readOnly, toolbar, name, historyLimit, onChange, instanceRef, className, ...props }) {
|
|
3519
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...rootProps } = props;
|
|
3520
|
+
const ref = useRef79(null);
|
|
3521
|
+
const instance = useRef79(null);
|
|
3522
|
+
const edited = useRef79(value ?? defaultValue);
|
|
3523
|
+
const current = useLatest(value);
|
|
3524
|
+
const change = useLatest(onChange);
|
|
3525
|
+
const [, refresh] = useReducer((revision) => revision + 1, 0);
|
|
3526
|
+
useIsomorphicLayoutEffect(() => {
|
|
3527
|
+
const created = createSignaturePad(ref.current, {
|
|
3528
|
+
data: current.current ?? edited.current,
|
|
3529
|
+
label,
|
|
3530
|
+
hint,
|
|
3531
|
+
placeholder,
|
|
3532
|
+
color,
|
|
3533
|
+
width,
|
|
3534
|
+
disabled,
|
|
3535
|
+
readOnly,
|
|
3536
|
+
toolbar,
|
|
3537
|
+
name,
|
|
3538
|
+
historyLimit,
|
|
3539
|
+
onChange: (data, detail) => {
|
|
3540
|
+
edited.current = data;
|
|
3541
|
+
change.current?.(data, detail);
|
|
3542
|
+
if (current.current !== void 0) refresh();
|
|
3543
|
+
}
|
|
3544
|
+
});
|
|
3545
|
+
instance.current = created;
|
|
3546
|
+
return () => {
|
|
3547
|
+
edited.current = created.exportData();
|
|
3548
|
+
created.destroy();
|
|
3549
|
+
instance.current = null;
|
|
3550
|
+
};
|
|
3551
|
+
}, [label, hint, placeholder, color, width, toolbar, name, historyLimit]);
|
|
3552
|
+
useIsomorphicLayoutEffect(() => {
|
|
3553
|
+
const created = instance.current;
|
|
3554
|
+
if (!created) return;
|
|
3555
|
+
created.setDisabled(Boolean(disabled));
|
|
3556
|
+
created.setReadOnly(Boolean(readOnly));
|
|
3557
|
+
}, [disabled, readOnly]);
|
|
3558
|
+
useIsomorphicLayoutEffect(() => {
|
|
3559
|
+
if (value !== void 0) instance.current?.importData(value, false);
|
|
3560
|
+
});
|
|
3561
|
+
useIsomorphicLayoutEffect(() => {
|
|
3562
|
+
if (instanceRef) instanceRef.current = instance.current;
|
|
3563
|
+
return () => {
|
|
3564
|
+
if (instanceRef) instanceRef.current = null;
|
|
3565
|
+
};
|
|
3566
|
+
}, [instanceRef, label, hint, placeholder, color, width, toolbar, name, historyLimit]);
|
|
3567
|
+
return /* @__PURE__ */ jsx85("div", { ...rootProps, ref, className: ["mk-signature-pad", className].filter(Boolean).join(" ") });
|
|
3568
|
+
}
|
|
3569
|
+
|
|
3570
|
+
// src/components/waveform-player/react.tsx
|
|
3571
|
+
import { useRef as useRef80 } from "react";
|
|
3572
|
+
import { jsx as jsx86 } from "react/jsx-runtime";
|
|
3573
|
+
function WaveformPlayer({ src, peaks, label, disabled, playbackRates, onStateChange, onTimeUpdate, onPlay, onPause, onEnded, onError, instanceRef, className, ...props }) {
|
|
3574
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...rootProps } = props;
|
|
3575
|
+
const root = useRef80(null);
|
|
3576
|
+
const instance = useRef80(null);
|
|
3577
|
+
useIsomorphicLayoutEffect(() => {
|
|
3578
|
+
const created = createWaveformPlayer(root.current);
|
|
3579
|
+
instance.current = created;
|
|
3580
|
+
return () => {
|
|
3581
|
+
created.destroy();
|
|
3582
|
+
instance.current = null;
|
|
3583
|
+
};
|
|
3584
|
+
}, []);
|
|
3585
|
+
useIsomorphicLayoutEffect(() => {
|
|
3586
|
+
instance.current?.update({ src, peaks, label, disabled, playbackRates, onStateChange, onTimeUpdate, onPlay, onPause, onEnded, onError });
|
|
3587
|
+
});
|
|
3588
|
+
useIsomorphicLayoutEffect(() => {
|
|
3589
|
+
if (instanceRef) instanceRef.current = instance.current;
|
|
3590
|
+
return () => {
|
|
3591
|
+
if (instanceRef) instanceRef.current = null;
|
|
3592
|
+
};
|
|
3593
|
+
}, [instanceRef]);
|
|
3594
|
+
return /* @__PURE__ */ jsx86("div", { ...rootProps, ref: root, className: ["mk-waveform-player", className].filter(Boolean).join(" ") });
|
|
3595
|
+
}
|
|
3596
|
+
|
|
3597
|
+
// src/components/voice-message-bubble/react.tsx
|
|
3598
|
+
import { useRef as useRef81 } from "react";
|
|
3599
|
+
import { jsx as jsx87 } from "react/jsx-runtime";
|
|
3600
|
+
function VoiceMessageBubble({ src, peaks, label, disabled, playbackRates, onStateChange, onTimeUpdate, onPlay, onPause, onEnded, onError, direction, author, timestamp, dateTime, status, instanceRef, className, ...props }) {
|
|
3601
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...rootProps } = props;
|
|
3602
|
+
const root = useRef81(null);
|
|
3603
|
+
const instance = useRef81(null);
|
|
3604
|
+
useIsomorphicLayoutEffect(() => {
|
|
3605
|
+
const created = createVoiceMessageBubble(root.current);
|
|
3606
|
+
instance.current = created;
|
|
3607
|
+
return () => {
|
|
3608
|
+
created.destroy();
|
|
3609
|
+
instance.current = null;
|
|
3610
|
+
};
|
|
3611
|
+
}, []);
|
|
3612
|
+
useIsomorphicLayoutEffect(() => {
|
|
3613
|
+
instance.current?.update({ src, peaks, label, disabled, playbackRates, onStateChange, onTimeUpdate, onPlay, onPause, onEnded, onError, direction, author, timestamp, dateTime, status });
|
|
3614
|
+
});
|
|
3615
|
+
useIsomorphicLayoutEffect(() => {
|
|
3616
|
+
if (instanceRef) instanceRef.current = instance.current;
|
|
3617
|
+
return () => {
|
|
3618
|
+
if (instanceRef) instanceRef.current = null;
|
|
3619
|
+
};
|
|
3620
|
+
}, [instanceRef]);
|
|
3621
|
+
return /* @__PURE__ */ jsx87("div", { ...rootProps, ref: root, className: ["mk-voice-message-bubble", className].filter(Boolean).join(" ") });
|
|
3622
|
+
}
|
|
3623
|
+
|
|
3624
|
+
// src/components/drilldown-menu/react.tsx
|
|
3625
|
+
import { forwardRef as forwardRef12, useImperativeHandle as useImperativeHandle12, useReducer as useReducer2, useRef as useRef82 } from "react";
|
|
3626
|
+
import { jsx as jsx88 } from "react/jsx-runtime";
|
|
3627
|
+
var DrilldownMenu = forwardRef12(function DrilldownMenu2({ items, path, defaultPath, label, backLabel, emptyText, onSelect, onPathChange, className, ...props }, handle) {
|
|
3628
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...rootProps } = props;
|
|
3629
|
+
const ref = useRef82(null);
|
|
3630
|
+
const instance = useRef82(null);
|
|
3631
|
+
const select = useLatest(onSelect);
|
|
3632
|
+
const changed = useLatest(onPathChange);
|
|
3633
|
+
const controlled = useLatest(path);
|
|
3634
|
+
const [, refresh] = useReducer2((value) => value + 1, 0);
|
|
3635
|
+
useImperativeHandle12(handle, () => ({
|
|
3636
|
+
open: (id) => instance.current?.open(id) ?? false,
|
|
3637
|
+
back: () => instance.current?.back() ?? false,
|
|
3638
|
+
root: () => instance.current?.root(),
|
|
3639
|
+
reset: () => instance.current?.reset(),
|
|
3640
|
+
setPath: (next, notify) => {
|
|
3641
|
+
instance.current?.setPath(next, notify);
|
|
3642
|
+
if (controlled.current !== void 0) refresh();
|
|
3643
|
+
},
|
|
3644
|
+
focusItem: (id) => instance.current?.focusItem(id)
|
|
3645
|
+
}), []);
|
|
3646
|
+
const itemsKey = JSON.stringify(items);
|
|
3647
|
+
useIsomorphicLayoutEffect(() => {
|
|
3648
|
+
const created = createDrilldownMenu(ref.current, {
|
|
3649
|
+
items,
|
|
3650
|
+
path: path ?? defaultPath,
|
|
3651
|
+
label,
|
|
3652
|
+
backLabel,
|
|
3653
|
+
emptyText,
|
|
3654
|
+
onSelect: (item, selectedPath) => select.current?.(item, selectedPath),
|
|
3655
|
+
onPathChange: (next) => {
|
|
3656
|
+
changed.current?.(next);
|
|
3657
|
+
if (controlled.current !== void 0) refresh();
|
|
3658
|
+
}
|
|
3659
|
+
});
|
|
3660
|
+
instance.current = created;
|
|
3661
|
+
return () => {
|
|
3662
|
+
created.destroy();
|
|
3663
|
+
instance.current = null;
|
|
3664
|
+
};
|
|
3665
|
+
}, []);
|
|
3666
|
+
useIsomorphicLayoutEffect(() => {
|
|
3667
|
+
instance.current?.update({ items, label, backLabel, emptyText, ...path !== void 0 ? { path } : {} });
|
|
3668
|
+
}, [itemsKey, label, backLabel, emptyText]);
|
|
3669
|
+
useIsomorphicLayoutEffect(() => {
|
|
3670
|
+
if (path !== void 0) instance.current?.setPath(path);
|
|
3671
|
+
});
|
|
3672
|
+
return /* @__PURE__ */ jsx88("div", { ...rootProps, ref, className: ["mk-drilldown-menu", className].filter(Boolean).join(" ") });
|
|
3673
|
+
});
|
|
3674
|
+
|
|
3675
|
+
// src/components/wheel-picker/react.tsx
|
|
3676
|
+
import { useReducer as useReducer3, useRef as useRef83 } from "react";
|
|
3677
|
+
import { jsx as jsx89 } from "react/jsx-runtime";
|
|
3678
|
+
function WheelPicker({ items, value, defaultValue, name, label, disabled, visibleItems, itemHeight, onInput, onChange, instanceRef, className, ...props }) {
|
|
3679
|
+
const ref = useRef83(null), instance = useRef83(null);
|
|
3680
|
+
const changed = useLatest(onChange), input = useLatest(onInput), latestItems = useLatest(items);
|
|
3681
|
+
const controlled = useLatest(value);
|
|
3682
|
+
const [, refresh] = useReducer3((revision) => revision + 1, 0);
|
|
3683
|
+
const last = useRef83(value ?? defaultValue);
|
|
3684
|
+
useIsomorphicLayoutEffect(() => {
|
|
3685
|
+
const created = createWheelPicker(ref.current, {
|
|
3686
|
+
items: latestItems.current,
|
|
3687
|
+
value: value ?? last.current,
|
|
3688
|
+
name,
|
|
3689
|
+
label,
|
|
3690
|
+
disabled,
|
|
3691
|
+
visibleItems,
|
|
3692
|
+
itemHeight,
|
|
3693
|
+
onInput: (next) => {
|
|
3694
|
+
last.current = next;
|
|
3695
|
+
input.current?.(next);
|
|
3696
|
+
},
|
|
3697
|
+
onChange: (next) => {
|
|
3698
|
+
last.current = next;
|
|
3699
|
+
changed.current?.(next);
|
|
3700
|
+
if (controlled.current !== void 0) refresh();
|
|
3701
|
+
}
|
|
3702
|
+
});
|
|
3703
|
+
instance.current = created;
|
|
3704
|
+
return () => {
|
|
3705
|
+
last.current = created.value;
|
|
3706
|
+
created.destroy();
|
|
3707
|
+
instance.current = null;
|
|
3708
|
+
};
|
|
3709
|
+
}, [name, label, disabled, visibleItems, itemHeight]);
|
|
3710
|
+
const key = JSON.stringify(items ?? []);
|
|
3711
|
+
useIsomorphicLayoutEffect(() => {
|
|
3712
|
+
instance.current?.setItems(items ?? []);
|
|
3713
|
+
}, [key]);
|
|
3714
|
+
useIsomorphicLayoutEffect(() => {
|
|
3715
|
+
if (value !== void 0) instance.current?.setValue(value);
|
|
3716
|
+
});
|
|
3717
|
+
useIsomorphicLayoutEffect(() => {
|
|
3718
|
+
if (instanceRef) instanceRef.current = instance.current;
|
|
3719
|
+
return () => {
|
|
3720
|
+
if (instanceRef) instanceRef.current = null;
|
|
3721
|
+
};
|
|
3722
|
+
}, [instanceRef, name, label, disabled, visibleItems, itemHeight]);
|
|
3723
|
+
const domProps = { ...props };
|
|
3724
|
+
delete domProps.children;
|
|
3725
|
+
delete domProps.dangerouslySetInnerHTML;
|
|
3726
|
+
return /* @__PURE__ */ jsx89("div", { ...domProps, ref, className: ["mk-wheel-picker", className].filter(Boolean).join(" ") });
|
|
3727
|
+
}
|
|
3728
|
+
|
|
3729
|
+
// src/components/stepper/react.tsx
|
|
3730
|
+
import { useRef as useRef84 } from "react";
|
|
3731
|
+
import { jsx as jsx90 } from "react/jsx-runtime";
|
|
3732
|
+
function Stepper({ value, defaultValue, items, label, name, variant, linear, disabled, onChange, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
|
|
3733
|
+
const root = useRef84(null);
|
|
3734
|
+
const engine = useRef84(null);
|
|
3735
|
+
const latestValue = useLatest(value);
|
|
3736
|
+
const change = useLatest(onChange);
|
|
3737
|
+
const baseline = useRef84(value !== void 0 ? value : defaultValue);
|
|
3738
|
+
const current = useRef84(baseline.current);
|
|
3739
|
+
const reconcile = () => queueMicrotask(() => {
|
|
3740
|
+
if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
|
|
3741
|
+
});
|
|
3742
|
+
useIsomorphicLayoutEffect(() => {
|
|
3743
|
+
const created = createStepper(root.current, {
|
|
3744
|
+
items,
|
|
3745
|
+
label,
|
|
3746
|
+
name,
|
|
3747
|
+
variant,
|
|
3748
|
+
linear,
|
|
3749
|
+
disabled,
|
|
3750
|
+
value: latestValue.current !== void 0 ? latestValue.current : current.current,
|
|
3751
|
+
defaultValue: baseline.current,
|
|
3752
|
+
onChange: (next) => {
|
|
3753
|
+
change.current?.(next);
|
|
3754
|
+
reconcile();
|
|
3755
|
+
}
|
|
3756
|
+
});
|
|
3757
|
+
engine.current = created;
|
|
3758
|
+
const form = root.current?.closest("form");
|
|
3759
|
+
const pending = /* @__PURE__ */ new Set();
|
|
3760
|
+
const reset = (event) => {
|
|
3761
|
+
const timer = setTimeout(() => {
|
|
3762
|
+
pending.delete(timer);
|
|
3763
|
+
if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
|
|
3764
|
+
}, 0);
|
|
3765
|
+
pending.add(timer);
|
|
3766
|
+
};
|
|
3767
|
+
form?.addEventListener("reset", reset);
|
|
3768
|
+
return () => {
|
|
3769
|
+
form?.removeEventListener("reset", reset);
|
|
3770
|
+
pending.forEach((timer) => clearTimeout(timer));
|
|
3771
|
+
current.current = created.value;
|
|
3772
|
+
created.destroy();
|
|
3773
|
+
engine.current = null;
|
|
3774
|
+
};
|
|
3775
|
+
}, [items, label, name, variant, linear, disabled]);
|
|
3776
|
+
useIsomorphicLayoutEffect(() => {
|
|
3777
|
+
if (value !== void 0) engine.current?.setValue(value, false);
|
|
3778
|
+
});
|
|
3779
|
+
useIsomorphicLayoutEffect(() => {
|
|
3780
|
+
if (!instanceRef) return;
|
|
3781
|
+
instanceRef.current = engine.current;
|
|
3782
|
+
return () => {
|
|
3783
|
+
instanceRef.current = null;
|
|
3784
|
+
};
|
|
3785
|
+
}, [instanceRef, items, label, name, variant, linear, disabled]);
|
|
3786
|
+
return /* @__PURE__ */ jsx90("div", { ...props, ref: root, className: ["mk-stepper", className].filter(Boolean).join(" ") });
|
|
3787
|
+
}
|
|
3788
|
+
|
|
3789
|
+
// src/components/radio-group/react.tsx
|
|
3790
|
+
import { useRef as useRef85 } from "react";
|
|
3791
|
+
import { jsx as jsx91 } from "react/jsx-runtime";
|
|
3792
|
+
function RadioGroup({ value, defaultValue, items, name, label, disabled, required, error, variant, onChange, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
|
|
3793
|
+
const root = useRef85(null);
|
|
3794
|
+
const engine = useRef85(null);
|
|
3795
|
+
const latestValue = useLatest(value);
|
|
3796
|
+
const change = useLatest(onChange);
|
|
3797
|
+
const baseline = useRef85(value !== void 0 ? value : defaultValue);
|
|
3798
|
+
const current = useRef85(baseline.current);
|
|
3799
|
+
const reconcile = () => queueMicrotask(() => {
|
|
3800
|
+
if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
|
|
3801
|
+
});
|
|
3802
|
+
useIsomorphicLayoutEffect(() => {
|
|
3803
|
+
const created = createRadioGroup(root.current, {
|
|
3804
|
+
items,
|
|
3805
|
+
name,
|
|
3806
|
+
label,
|
|
3807
|
+
disabled,
|
|
3808
|
+
required,
|
|
3809
|
+
error,
|
|
3810
|
+
variant,
|
|
3811
|
+
value: latestValue.current !== void 0 ? latestValue.current : current.current,
|
|
3812
|
+
defaultValue: baseline.current,
|
|
3813
|
+
onChange: (next) => {
|
|
3814
|
+
change.current?.(next);
|
|
3815
|
+
reconcile();
|
|
3816
|
+
}
|
|
3817
|
+
});
|
|
3818
|
+
engine.current = created;
|
|
3819
|
+
const form = root.current?.closest("form");
|
|
3820
|
+
const pending = /* @__PURE__ */ new Set();
|
|
3821
|
+
const reset = (event) => {
|
|
3822
|
+
const timer = setTimeout(() => {
|
|
3823
|
+
pending.delete(timer);
|
|
3824
|
+
if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
|
|
3825
|
+
}, 0);
|
|
3826
|
+
pending.add(timer);
|
|
3827
|
+
};
|
|
3828
|
+
form?.addEventListener("reset", reset);
|
|
3829
|
+
return () => {
|
|
3830
|
+
form?.removeEventListener("reset", reset);
|
|
3831
|
+
pending.forEach((timer) => clearTimeout(timer));
|
|
3832
|
+
current.current = created.value;
|
|
3833
|
+
created.destroy();
|
|
3834
|
+
engine.current = null;
|
|
3835
|
+
};
|
|
3836
|
+
}, [items, name, label, disabled, required, error, variant]);
|
|
3837
|
+
useIsomorphicLayoutEffect(() => {
|
|
3838
|
+
if (value !== void 0) engine.current?.setValue(value, false);
|
|
3839
|
+
});
|
|
3840
|
+
useIsomorphicLayoutEffect(() => {
|
|
3841
|
+
if (!instanceRef) return;
|
|
3842
|
+
instanceRef.current = engine.current;
|
|
3843
|
+
return () => {
|
|
3844
|
+
instanceRef.current = null;
|
|
3845
|
+
};
|
|
3846
|
+
}, [instanceRef, items, name, label, disabled, required, error, variant]);
|
|
3847
|
+
return /* @__PURE__ */ jsx91("div", { ...props, ref: root, className: ["mk-radio-group", className].filter(Boolean).join(" ") });
|
|
3848
|
+
}
|
|
3849
|
+
|
|
3850
|
+
// src/components/equalizer-slider/react.tsx
|
|
3851
|
+
import { useRef as useRef86 } from "react";
|
|
3852
|
+
import { jsx as jsx92 } from "react/jsx-runtime";
|
|
3853
|
+
function EqualizerSlider({ value, defaultValue, min, max, step, label, name, disabled, error, formatValue, waveform, bars, onChange, onInput, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
|
|
3854
|
+
const root = useRef86(null);
|
|
3855
|
+
const engine = useRef86(null);
|
|
3856
|
+
const latestValue = useLatest(value);
|
|
3857
|
+
const change = useLatest(onChange);
|
|
3858
|
+
const input = useLatest(onInput);
|
|
3859
|
+
const baseline = useRef86(value !== void 0 ? value : defaultValue);
|
|
3860
|
+
const current = useRef86(baseline.current);
|
|
3861
|
+
const reconcile = () => queueMicrotask(() => {
|
|
3862
|
+
if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
|
|
3863
|
+
});
|
|
3864
|
+
useIsomorphicLayoutEffect(() => {
|
|
3865
|
+
const created = createEqualizerSlider(root.current, {
|
|
3866
|
+
min,
|
|
3867
|
+
max,
|
|
3868
|
+
step,
|
|
3869
|
+
label,
|
|
3870
|
+
name,
|
|
3871
|
+
disabled,
|
|
3872
|
+
error,
|
|
3873
|
+
formatValue,
|
|
3874
|
+
waveform,
|
|
3875
|
+
bars,
|
|
3876
|
+
value: latestValue.current !== void 0 ? latestValue.current : current.current,
|
|
3877
|
+
defaultValue: baseline.current,
|
|
3878
|
+
onChange: (next) => {
|
|
3879
|
+
change.current?.(next);
|
|
3880
|
+
reconcile();
|
|
3881
|
+
},
|
|
3882
|
+
onInput: (next) => {
|
|
3883
|
+
input.current?.(next);
|
|
3884
|
+
if (input.current || !change.current) reconcile();
|
|
3885
|
+
}
|
|
3886
|
+
});
|
|
3887
|
+
engine.current = created;
|
|
3888
|
+
const form = root.current?.closest("form");
|
|
3889
|
+
const pending = /* @__PURE__ */ new Set();
|
|
3890
|
+
const reset = (event) => {
|
|
3891
|
+
const timer = setTimeout(() => {
|
|
3892
|
+
pending.delete(timer);
|
|
3893
|
+
if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
|
|
3894
|
+
}, 0);
|
|
3895
|
+
pending.add(timer);
|
|
3896
|
+
};
|
|
3897
|
+
form?.addEventListener("reset", reset);
|
|
3898
|
+
return () => {
|
|
3899
|
+
form?.removeEventListener("reset", reset);
|
|
3900
|
+
pending.forEach((timer) => clearTimeout(timer));
|
|
3901
|
+
current.current = created.value;
|
|
3902
|
+
created.destroy();
|
|
3903
|
+
engine.current = null;
|
|
3904
|
+
};
|
|
3905
|
+
}, [min, max, step, label, name, disabled, error, formatValue, waveform, bars]);
|
|
3906
|
+
useIsomorphicLayoutEffect(() => {
|
|
3907
|
+
if (value !== void 0) engine.current?.setValue(value, false);
|
|
3908
|
+
});
|
|
3909
|
+
useIsomorphicLayoutEffect(() => {
|
|
3910
|
+
if (!instanceRef) return;
|
|
3911
|
+
instanceRef.current = engine.current;
|
|
3912
|
+
return () => {
|
|
3913
|
+
instanceRef.current = null;
|
|
3914
|
+
};
|
|
3915
|
+
}, [instanceRef, min, max, step, label, name, disabled, error, formatValue, waveform, bars]);
|
|
3916
|
+
return /* @__PURE__ */ jsx92("div", { ...props, ref: root, className: ["mk-equalizer-slider", className].filter(Boolean).join(" ") });
|
|
3917
|
+
}
|
|
3918
|
+
|
|
3919
|
+
// src/components/temperature-slider/react.tsx
|
|
3920
|
+
import { useRef as useRef87 } from "react";
|
|
3921
|
+
import { jsx as jsx93 } from "react/jsx-runtime";
|
|
3922
|
+
function TemperatureSlider({ value, defaultValue, min, max, step, label, name, disabled, error, formatValue, unit, onChange, onInput, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
|
|
3923
|
+
const root = useRef87(null);
|
|
3924
|
+
const engine = useRef87(null);
|
|
3925
|
+
const latestValue = useLatest(value);
|
|
3926
|
+
const change = useLatest(onChange);
|
|
3927
|
+
const input = useLatest(onInput);
|
|
3928
|
+
const baseline = useRef87(value !== void 0 ? value : defaultValue);
|
|
3929
|
+
const current = useRef87(baseline.current);
|
|
3930
|
+
const reconcile = () => queueMicrotask(() => {
|
|
3931
|
+
if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
|
|
3932
|
+
});
|
|
3933
|
+
useIsomorphicLayoutEffect(() => {
|
|
3934
|
+
const created = createTemperatureSlider(root.current, {
|
|
3935
|
+
min,
|
|
3936
|
+
max,
|
|
3937
|
+
step,
|
|
3938
|
+
label,
|
|
3939
|
+
name,
|
|
3940
|
+
disabled,
|
|
3941
|
+
error,
|
|
3942
|
+
formatValue,
|
|
3943
|
+
unit,
|
|
3944
|
+
value: latestValue.current !== void 0 ? latestValue.current : current.current,
|
|
3945
|
+
defaultValue: baseline.current,
|
|
3946
|
+
onChange: (next) => {
|
|
3947
|
+
change.current?.(next);
|
|
3948
|
+
reconcile();
|
|
3949
|
+
},
|
|
3950
|
+
onInput: (next) => {
|
|
3951
|
+
input.current?.(next);
|
|
3952
|
+
if (input.current || !change.current) reconcile();
|
|
3953
|
+
}
|
|
3954
|
+
});
|
|
3955
|
+
engine.current = created;
|
|
3956
|
+
const form = root.current?.closest("form");
|
|
3957
|
+
const pending = /* @__PURE__ */ new Set();
|
|
3958
|
+
const reset = (event) => {
|
|
3959
|
+
const timer = setTimeout(() => {
|
|
3960
|
+
pending.delete(timer);
|
|
3961
|
+
if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
|
|
3962
|
+
}, 0);
|
|
3963
|
+
pending.add(timer);
|
|
3964
|
+
};
|
|
3965
|
+
form?.addEventListener("reset", reset);
|
|
3966
|
+
return () => {
|
|
3967
|
+
form?.removeEventListener("reset", reset);
|
|
3968
|
+
pending.forEach((timer) => clearTimeout(timer));
|
|
3969
|
+
current.current = created.value;
|
|
3970
|
+
created.destroy();
|
|
3971
|
+
engine.current = null;
|
|
3972
|
+
};
|
|
3973
|
+
}, [min, max, step, label, name, disabled, error, formatValue]);
|
|
3974
|
+
useIsomorphicLayoutEffect(() => {
|
|
3975
|
+
const next = unit === "F" ? "F" : "C";
|
|
3976
|
+
if (engine.current && engine.current.unit !== next) engine.current.setUnit(next, { min, max, step });
|
|
3977
|
+
}, [unit]);
|
|
3978
|
+
useIsomorphicLayoutEffect(() => {
|
|
3979
|
+
if (value !== void 0) engine.current?.setValue(value, false);
|
|
3980
|
+
});
|
|
3981
|
+
useIsomorphicLayoutEffect(() => {
|
|
3982
|
+
if (!instanceRef) return;
|
|
3983
|
+
instanceRef.current = engine.current;
|
|
3984
|
+
return () => {
|
|
3985
|
+
instanceRef.current = null;
|
|
3986
|
+
};
|
|
3987
|
+
}, [instanceRef, min, max, step, label, name, disabled, error, formatValue]);
|
|
3988
|
+
return /* @__PURE__ */ jsx93("div", { ...props, ref: root, className: ["mk-temperature-slider", className].filter(Boolean).join(" ") });
|
|
3989
|
+
}
|
|
3990
|
+
|
|
3991
|
+
// src/components/rating-scale/react.tsx
|
|
3992
|
+
import { useRef as useRef88 } from "react";
|
|
3993
|
+
import { jsx as jsx94 } from "react/jsx-runtime";
|
|
3994
|
+
function RatingScale({ value, defaultValue, min, max, variant, labels, label, name, disabled, required, error, onChange, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
|
|
3995
|
+
const root = useRef88(null);
|
|
3996
|
+
const engine = useRef88(null);
|
|
3997
|
+
const latestValue = useLatest(value);
|
|
3998
|
+
const change = useLatest(onChange);
|
|
3999
|
+
const baseline = useRef88(value !== void 0 ? value : defaultValue);
|
|
4000
|
+
const current = useRef88(baseline.current);
|
|
4001
|
+
const reconcile = () => queueMicrotask(() => {
|
|
4002
|
+
if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
|
|
4003
|
+
});
|
|
4004
|
+
useIsomorphicLayoutEffect(() => {
|
|
4005
|
+
const created = createRatingScale(root.current, {
|
|
4006
|
+
min,
|
|
4007
|
+
max,
|
|
4008
|
+
variant,
|
|
4009
|
+
labels,
|
|
4010
|
+
label,
|
|
4011
|
+
name,
|
|
4012
|
+
disabled,
|
|
4013
|
+
required,
|
|
4014
|
+
error,
|
|
4015
|
+
value: latestValue.current !== void 0 ? latestValue.current : current.current,
|
|
4016
|
+
defaultValue: baseline.current,
|
|
4017
|
+
onChange: (next) => {
|
|
4018
|
+
change.current?.(next);
|
|
4019
|
+
reconcile();
|
|
4020
|
+
}
|
|
4021
|
+
});
|
|
4022
|
+
engine.current = created;
|
|
4023
|
+
const form = root.current?.closest("form");
|
|
4024
|
+
const pending = /* @__PURE__ */ new Set();
|
|
4025
|
+
const reset = (event) => {
|
|
4026
|
+
const timer = setTimeout(() => {
|
|
4027
|
+
pending.delete(timer);
|
|
4028
|
+
if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
|
|
4029
|
+
}, 0);
|
|
4030
|
+
pending.add(timer);
|
|
4031
|
+
};
|
|
4032
|
+
form?.addEventListener("reset", reset);
|
|
4033
|
+
return () => {
|
|
4034
|
+
form?.removeEventListener("reset", reset);
|
|
4035
|
+
pending.forEach((timer) => clearTimeout(timer));
|
|
4036
|
+
current.current = created.value;
|
|
4037
|
+
created.destroy();
|
|
4038
|
+
engine.current = null;
|
|
4039
|
+
};
|
|
4040
|
+
}, [min, max, variant, labels, label, name, disabled, required, error]);
|
|
4041
|
+
useIsomorphicLayoutEffect(() => {
|
|
4042
|
+
if (value !== void 0) engine.current?.setValue(value, false);
|
|
4043
|
+
});
|
|
4044
|
+
useIsomorphicLayoutEffect(() => {
|
|
4045
|
+
if (!instanceRef) return;
|
|
4046
|
+
instanceRef.current = engine.current;
|
|
4047
|
+
return () => {
|
|
4048
|
+
instanceRef.current = null;
|
|
4049
|
+
};
|
|
4050
|
+
}, [instanceRef, min, max, variant, labels, label, name, disabled, required, error]);
|
|
4051
|
+
return /* @__PURE__ */ jsx94("div", { ...props, ref: root, className: ["mk-rating-scale", className].filter(Boolean).join(" ") });
|
|
4052
|
+
}
|
|
4053
|
+
|
|
4054
|
+
// src/components/notification-stack/react.tsx
|
|
4055
|
+
import { useRef as useRef89 } from "react";
|
|
4056
|
+
import { jsx as jsx95 } from "react/jsx-runtime";
|
|
4057
|
+
function NotificationStack({ items, expanded, direction, duration, disabled, label, labels, onDismiss, onAction, onExpandedChange, instanceRef, className, children, dangerouslySetInnerHTML: _html, ...props }) {
|
|
4058
|
+
const root = useRef89(null);
|
|
4059
|
+
const instance = useRef89(null);
|
|
4060
|
+
const onDismissRef = useLatest(onDismiss);
|
|
4061
|
+
const onActionRef = useLatest(onAction);
|
|
4062
|
+
const onExpandedChangeRef = useLatest(onExpandedChange);
|
|
4063
|
+
useIsomorphicLayoutEffect(() => {
|
|
4064
|
+
const created = createNotificationStack(root.current, { items, expanded, direction, duration, disabled, label, labels, onDismiss: (...args) => onDismissRef.current?.(...args), onAction: (...args) => onActionRef.current?.(...args), onExpandedChange: (...args) => onExpandedChangeRef.current?.(...args) });
|
|
4065
|
+
instance.current = created;
|
|
4066
|
+
return () => {
|
|
4067
|
+
created.destroy();
|
|
4068
|
+
instance.current = null;
|
|
4069
|
+
};
|
|
4070
|
+
}, []);
|
|
4071
|
+
useIsomorphicLayoutEffect(() => {
|
|
4072
|
+
instance.current?.setOptions({ items, expanded, direction, duration, disabled, label, labels });
|
|
4073
|
+
}, [items, expanded, direction, duration, disabled, label, labels]);
|
|
4074
|
+
useIsomorphicLayoutEffect(() => {
|
|
4075
|
+
if (instanceRef) instanceRef.current = instance.current;
|
|
4076
|
+
return () => {
|
|
4077
|
+
if (instanceRef) instanceRef.current = null;
|
|
4078
|
+
};
|
|
4079
|
+
}, [instanceRef]);
|
|
4080
|
+
return /* @__PURE__ */ jsx95("div", { ...props, ref: root, className: ["mk-notification-stack", className].filter(Boolean).join(" ") });
|
|
4081
|
+
}
|
|
4082
|
+
|
|
4083
|
+
// src/components/bento-grid/react.tsx
|
|
4084
|
+
import { useRef as useRef90 } from "react";
|
|
4085
|
+
import { jsx as jsx96 } from "react/jsx-runtime";
|
|
4086
|
+
function BentoGrid({ columns, gap, filter, duration, onChange, instanceRef, className, children, ...props }) {
|
|
4087
|
+
const root = useRef90(null);
|
|
4088
|
+
const instance = useRef90(null);
|
|
4089
|
+
const onChangeRef = useLatest(onChange);
|
|
4090
|
+
useIsomorphicLayoutEffect(() => {
|
|
4091
|
+
const created = createBentoGrid(root.current, { columns, gap, filter, duration, onChange: (...args) => onChangeRef.current?.(...args) });
|
|
4092
|
+
instance.current = created;
|
|
4093
|
+
return () => {
|
|
4094
|
+
created.destroy();
|
|
4095
|
+
instance.current = null;
|
|
4096
|
+
};
|
|
4097
|
+
}, []);
|
|
4098
|
+
useIsomorphicLayoutEffect(() => {
|
|
4099
|
+
instance.current?.setOptions({ columns, gap, filter, duration });
|
|
4100
|
+
}, [columns, gap, filter, duration]);
|
|
4101
|
+
useIsomorphicLayoutEffect(() => {
|
|
4102
|
+
if (instanceRef) instanceRef.current = instance.current;
|
|
4103
|
+
return () => {
|
|
4104
|
+
if (instanceRef) instanceRef.current = null;
|
|
4105
|
+
};
|
|
4106
|
+
}, [instanceRef]);
|
|
4107
|
+
return /* @__PURE__ */ jsx96("div", { ...props, ref: root, className: ["mk-bento-grid", className].filter(Boolean).join(" "), children });
|
|
4108
|
+
}
|
|
4109
|
+
|
|
4110
|
+
// src/components/scroll-preview-dock/react.tsx
|
|
4111
|
+
import { useRef as useRef91 } from "react";
|
|
4112
|
+
import { jsx as jsx97 } from "react/jsx-runtime";
|
|
4113
|
+
function ScrollPreviewDock({ items, scroller, offset, label, disabled, onChange, instanceRef, className, children, dangerouslySetInnerHTML: _html, ...props }) {
|
|
4114
|
+
const root = useRef91(null);
|
|
4115
|
+
const instance = useRef91(null);
|
|
4116
|
+
const onChangeRef = useLatest(onChange);
|
|
4117
|
+
useIsomorphicLayoutEffect(() => {
|
|
4118
|
+
const created = createScrollPreviewDock(root.current, { items, scroller, offset, label, disabled, onChange: (...args) => onChangeRef.current?.(...args) });
|
|
4119
|
+
instance.current = created;
|
|
4120
|
+
return () => {
|
|
4121
|
+
created.destroy();
|
|
4122
|
+
instance.current = null;
|
|
4123
|
+
};
|
|
4124
|
+
}, []);
|
|
4125
|
+
useIsomorphicLayoutEffect(() => {
|
|
4126
|
+
instance.current?.setOptions({ items, scroller, offset, label, disabled });
|
|
4127
|
+
}, [items, scroller, offset, label, disabled]);
|
|
4128
|
+
useIsomorphicLayoutEffect(() => {
|
|
4129
|
+
if (instanceRef) instanceRef.current = instance.current;
|
|
4130
|
+
return () => {
|
|
4131
|
+
if (instanceRef) instanceRef.current = null;
|
|
4132
|
+
};
|
|
4133
|
+
}, [instanceRef]);
|
|
4134
|
+
return /* @__PURE__ */ jsx97("div", { ...props, ref: root, className: ["mk-scroll-preview-dock", className].filter(Boolean).join(" ") });
|
|
4135
|
+
}
|
|
4136
|
+
|
|
4137
|
+
// src/components/sticky-header/react.tsx
|
|
4138
|
+
import { useRef as useRef92 } from "react";
|
|
4139
|
+
import { jsx as jsx98 } from "react/jsx-runtime";
|
|
4140
|
+
function StickyHeader({ scroller, expandedHeight, compactHeight, threshold, range, top, disabled, onChange, instanceRef, className, children, ...props }) {
|
|
4141
|
+
const root = useRef92(null);
|
|
4142
|
+
const instance = useRef92(null);
|
|
4143
|
+
const onChangeRef = useLatest(onChange);
|
|
4144
|
+
useIsomorphicLayoutEffect(() => {
|
|
4145
|
+
const created = createStickyHeader(root.current, { scroller, expandedHeight, compactHeight, threshold, range, top, disabled, onChange: (...args) => onChangeRef.current?.(...args) });
|
|
4146
|
+
instance.current = created;
|
|
4147
|
+
return () => {
|
|
4148
|
+
created.destroy();
|
|
4149
|
+
instance.current = null;
|
|
4150
|
+
};
|
|
4151
|
+
}, []);
|
|
4152
|
+
useIsomorphicLayoutEffect(() => {
|
|
4153
|
+
instance.current?.setOptions({ scroller, expandedHeight, compactHeight, threshold, range, top, disabled });
|
|
4154
|
+
}, [scroller, expandedHeight, compactHeight, threshold, range, top, disabled]);
|
|
4155
|
+
useIsomorphicLayoutEffect(() => {
|
|
4156
|
+
if (instanceRef) instanceRef.current = instance.current;
|
|
4157
|
+
return () => {
|
|
4158
|
+
if (instanceRef) instanceRef.current = null;
|
|
4159
|
+
};
|
|
4160
|
+
}, [instanceRef]);
|
|
4161
|
+
return /* @__PURE__ */ jsx98("div", { ...props, ref: root, className: ["mk-sticky-header", className].filter(Boolean).join(" "), children: /* @__PURE__ */ jsx98("div", { "data-mk-sticky-surface": "", className: "mk-sticky-header__surface", children }) });
|
|
4162
|
+
}
|
|
4163
|
+
|
|
4164
|
+
// src/components/handwriting-text/react.tsx
|
|
4165
|
+
import { useRef as useRef93 } from "react";
|
|
4166
|
+
import { jsx as jsx99 } from "react/jsx-runtime";
|
|
4167
|
+
function HandwritingText({ text = "make it move.", duration, autoplay, onComplete, instanceRef, className, ...props }) {
|
|
4168
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
|
|
4169
|
+
const root = useRef93(null);
|
|
4170
|
+
const instance = useRef93(null);
|
|
4171
|
+
const latest = useLatest({ text, onComplete });
|
|
4172
|
+
useIsomorphicLayoutEffect(() => {
|
|
4173
|
+
const created = createHandwritingText(root.current, { text: latest.current.text, duration, autoplay, onComplete: () => latest.current.onComplete?.() });
|
|
4174
|
+
instance.current = created;
|
|
4175
|
+
return () => {
|
|
4176
|
+
created.destroy();
|
|
4177
|
+
instance.current = null;
|
|
4178
|
+
};
|
|
4179
|
+
}, [duration, autoplay]);
|
|
4180
|
+
useIsomorphicLayoutEffect(() => {
|
|
4181
|
+
instance.current?.setText(text, autoplay !== false);
|
|
4182
|
+
}, [text, autoplay]);
|
|
4183
|
+
useIsomorphicLayoutEffect(() => {
|
|
4184
|
+
if (typeof instanceRef === "function") instanceRef(instance.current);
|
|
4185
|
+
else if (instanceRef) instanceRef.current = instance.current;
|
|
4186
|
+
return () => {
|
|
4187
|
+
if (typeof instanceRef === "function") instanceRef(null);
|
|
4188
|
+
else if (instanceRef) instanceRef.current = null;
|
|
4189
|
+
};
|
|
4190
|
+
}, [instanceRef, duration, autoplay]);
|
|
4191
|
+
return /* @__PURE__ */ jsx99("span", { ...safe, ref: root, role: "img", "aria-label": text, className: ["mk-handwriting-text", className].filter(Boolean).join(" ") });
|
|
4192
|
+
}
|
|
4193
|
+
|
|
4194
|
+
// src/components/particle-button/react.tsx
|
|
4195
|
+
import { useRef as useRef94 } from "react";
|
|
4196
|
+
import { jsx as jsx100 } from "react/jsx-runtime";
|
|
4197
|
+
function ParticleButton({ label = "Celebrar", count, distance, onAction, instanceRef, type = "button", className, ...props }) {
|
|
4198
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
|
|
4199
|
+
const root = useRef94(null);
|
|
4200
|
+
const instance = useRef94(null);
|
|
4201
|
+
const action = useLatest(onAction);
|
|
4202
|
+
useIsomorphicLayoutEffect(() => {
|
|
4203
|
+
const created = createParticleButton(root.current, { label, count, distance, onAction: () => action.current?.() });
|
|
4204
|
+
instance.current = created;
|
|
4205
|
+
return () => {
|
|
4206
|
+
created.destroy();
|
|
4207
|
+
instance.current = null;
|
|
4208
|
+
};
|
|
4209
|
+
}, [label, count, distance]);
|
|
4210
|
+
useIsomorphicLayoutEffect(() => {
|
|
4211
|
+
if (typeof instanceRef === "function") instanceRef(instance.current);
|
|
4212
|
+
else if (instanceRef) instanceRef.current = instance.current;
|
|
4213
|
+
return () => {
|
|
4214
|
+
if (typeof instanceRef === "function") instanceRef(null);
|
|
4215
|
+
else if (instanceRef) instanceRef.current = null;
|
|
4216
|
+
};
|
|
4217
|
+
}, [instanceRef, label, count, distance]);
|
|
4218
|
+
return /* @__PURE__ */ jsx100("button", { ...safe, type, ref: root, className: ["mk-particle-button", className].filter(Boolean).join(" ") });
|
|
4219
|
+
}
|
|
4220
|
+
|
|
4221
|
+
// src/components/magnetize-button/react.tsx
|
|
4222
|
+
import { useRef as useRef95 } from "react";
|
|
4223
|
+
import { jsx as jsx101 } from "react/jsx-runtime";
|
|
4224
|
+
function MagnetizeButton({ label = "Reunir ideas", count, reach, onAction, instanceRef, type = "button", className, ...props }) {
|
|
4225
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
|
|
4226
|
+
const root = useRef95(null);
|
|
4227
|
+
const instance = useRef95(null);
|
|
4228
|
+
const action = useLatest(onAction);
|
|
4229
|
+
useIsomorphicLayoutEffect(() => {
|
|
4230
|
+
const created = createMagnetizeButton(root.current, { label, count, reach, onAction: () => action.current?.() });
|
|
4231
|
+
instance.current = created;
|
|
4232
|
+
return () => {
|
|
4233
|
+
created.destroy();
|
|
4234
|
+
instance.current = null;
|
|
4235
|
+
};
|
|
4236
|
+
}, [label, count, reach]);
|
|
4237
|
+
useIsomorphicLayoutEffect(() => {
|
|
4238
|
+
if (typeof instanceRef === "function") instanceRef(instance.current);
|
|
4239
|
+
else if (instanceRef) instanceRef.current = instance.current;
|
|
4240
|
+
return () => {
|
|
4241
|
+
if (typeof instanceRef === "function") instanceRef(null);
|
|
4242
|
+
else if (instanceRef) instanceRef.current = null;
|
|
4243
|
+
};
|
|
4244
|
+
}, [instanceRef, label, count, reach]);
|
|
4245
|
+
return /* @__PURE__ */ jsx101("button", { ...safe, type, ref: root, className: ["mk-magnetize-button", className].filter(Boolean).join(" ") });
|
|
4246
|
+
}
|
|
4247
|
+
|
|
4248
|
+
// src/components/badge-button/react.tsx
|
|
4249
|
+
import { useRef as useRef96 } from "react";
|
|
4250
|
+
import { jsx as jsx102 } from "react/jsx-runtime";
|
|
4251
|
+
function BadgeButton({ label = "Guardar", count, defaultCount = 0, step, hideZero, max, onChange, instanceRef, type = "button", className, ...props }) {
|
|
4252
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
|
|
4253
|
+
const root = useRef96(null);
|
|
4254
|
+
const instance = useRef96(null);
|
|
4255
|
+
const current = useLatest({ count, onChange });
|
|
4256
|
+
const retained = useRef96(defaultCount);
|
|
4257
|
+
useIsomorphicLayoutEffect(() => {
|
|
4258
|
+
let created;
|
|
4259
|
+
created = createBadgeButton(root.current, {
|
|
4260
|
+
label,
|
|
4261
|
+
count: current.current.count ?? retained.current,
|
|
4262
|
+
step,
|
|
4263
|
+
hideZero,
|
|
4264
|
+
max,
|
|
4265
|
+
onChange: (next) => {
|
|
4266
|
+
current.current.onChange?.(next);
|
|
4267
|
+
if (current.current.count !== void 0) created.setCount(current.current.count);
|
|
4268
|
+
}
|
|
4269
|
+
});
|
|
4270
|
+
instance.current = created;
|
|
4271
|
+
return () => {
|
|
4272
|
+
retained.current = created.count;
|
|
4273
|
+
created.destroy();
|
|
4274
|
+
instance.current = null;
|
|
4275
|
+
};
|
|
4276
|
+
}, [label, step, hideZero, max]);
|
|
4277
|
+
useIsomorphicLayoutEffect(() => {
|
|
4278
|
+
if (count !== void 0) instance.current?.setCount(count);
|
|
4279
|
+
}, [count]);
|
|
4280
|
+
useIsomorphicLayoutEffect(() => {
|
|
4281
|
+
if (typeof instanceRef === "function") instanceRef(instance.current);
|
|
4282
|
+
else if (instanceRef) instanceRef.current = instance.current;
|
|
4283
|
+
return () => {
|
|
4284
|
+
if (typeof instanceRef === "function") instanceRef(null);
|
|
4285
|
+
else if (instanceRef) instanceRef.current = null;
|
|
4286
|
+
};
|
|
4287
|
+
}, [instanceRef, label, step, hideZero, max]);
|
|
4288
|
+
return /* @__PURE__ */ jsx102("button", { ...safe, type, ref: root, className: ["mk-badge-button", className].filter(Boolean).join(" ") });
|
|
4289
|
+
}
|
|
4290
|
+
|
|
4291
|
+
// src/components/morphing-page-dots/react.tsx
|
|
4292
|
+
import { useRef as useRef97 } from "react";
|
|
4293
|
+
import { jsx as jsx103 } from "react/jsx-runtime";
|
|
4294
|
+
function MorphingPageDots({ count, value, defaultValue = 0, label, labels, pageIds, disabled, onChange, instanceRef, className, ...props }) {
|
|
4295
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
|
|
4296
|
+
const root = useRef97(null);
|
|
4297
|
+
const instance = useRef97(null);
|
|
4298
|
+
const current = useLatest({ value, onChange });
|
|
4299
|
+
const retained = useRef97(defaultValue);
|
|
4300
|
+
const labelsKey = JSON.stringify(labels);
|
|
4301
|
+
const pagesKey = JSON.stringify(pageIds);
|
|
4302
|
+
useIsomorphicLayoutEffect(() => {
|
|
4303
|
+
let created;
|
|
4304
|
+
created = createMorphingPageDots(root.current, {
|
|
4305
|
+
count,
|
|
4306
|
+
value: current.current.value ?? retained.current,
|
|
4307
|
+
label,
|
|
4308
|
+
labels,
|
|
4309
|
+
pageIds,
|
|
4310
|
+
disabled,
|
|
4311
|
+
onChange: (next) => {
|
|
4312
|
+
current.current.onChange?.(next);
|
|
4313
|
+
if (current.current.value !== void 0) created.setValue(current.current.value);
|
|
4314
|
+
}
|
|
4315
|
+
});
|
|
4316
|
+
instance.current = created;
|
|
4317
|
+
return () => {
|
|
4318
|
+
retained.current = created.value;
|
|
4319
|
+
created.destroy();
|
|
4320
|
+
instance.current = null;
|
|
4321
|
+
};
|
|
4322
|
+
}, [count, label, labelsKey, pagesKey, disabled]);
|
|
4323
|
+
useIsomorphicLayoutEffect(() => {
|
|
4324
|
+
if (value !== void 0) instance.current?.setValue(value);
|
|
4325
|
+
}, [value]);
|
|
4326
|
+
useIsomorphicLayoutEffect(() => {
|
|
4327
|
+
if (typeof instanceRef === "function") instanceRef(instance.current);
|
|
4328
|
+
else if (instanceRef) instanceRef.current = instance.current;
|
|
4329
|
+
return () => {
|
|
4330
|
+
if (typeof instanceRef === "function") instanceRef(null);
|
|
4331
|
+
else if (instanceRef) instanceRef.current = null;
|
|
4332
|
+
};
|
|
4333
|
+
}, [instanceRef, count, label, labelsKey, pagesKey, disabled]);
|
|
4334
|
+
return /* @__PURE__ */ jsx103("div", { ...safe, ref: root, className: ["mk-morphing-page-dots", className].filter(Boolean).join(" ") });
|
|
4335
|
+
}
|
|
4336
|
+
|
|
4337
|
+
// src/components/not-found/react.tsx
|
|
4338
|
+
import { useRef as useRef98 } from "react";
|
|
4339
|
+
import { jsx as jsx104 } from "react/jsx-runtime";
|
|
4340
|
+
function NotFound({ brand, title, description, homeHref, homeLabel, backLabel, showBack, onBack, instanceRef, className, ...props }) {
|
|
4341
|
+
const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
|
|
4342
|
+
const root = useRef98(null);
|
|
4343
|
+
const instance = useRef98(null);
|
|
4344
|
+
const current = useLatest(onBack);
|
|
4345
|
+
const hasBack = Boolean(onBack);
|
|
4346
|
+
useIsomorphicLayoutEffect(() => {
|
|
4347
|
+
const created = createNotFound(root.current, { brand, title, description, homeHref, homeLabel, backLabel, showBack, onBack: hasBack ? () => current.current?.() : void 0 });
|
|
4348
|
+
instance.current = created;
|
|
4349
|
+
return () => {
|
|
4350
|
+
created.destroy();
|
|
4351
|
+
instance.current = null;
|
|
4352
|
+
};
|
|
4353
|
+
}, [brand, title, description, homeHref, homeLabel, backLabel, showBack, hasBack]);
|
|
4354
|
+
useIsomorphicLayoutEffect(() => {
|
|
4355
|
+
if (typeof instanceRef === "function") instanceRef(instance.current);
|
|
4356
|
+
else if (instanceRef) instanceRef.current = instance.current;
|
|
4357
|
+
return () => {
|
|
4358
|
+
if (typeof instanceRef === "function") instanceRef(null);
|
|
4359
|
+
else if (instanceRef) instanceRef.current = null;
|
|
4360
|
+
};
|
|
4361
|
+
}, [instanceRef, brand, title, description, homeHref, homeLabel, backLabel, showBack, hasBack]);
|
|
4362
|
+
return /* @__PURE__ */ jsx104("div", { ...safe, ref: root, className: ["mk-not-found", className].filter(Boolean).join(" ") });
|
|
4363
|
+
}
|
|
3494
4364
|
export {
|
|
3495
4365
|
ANIMATIONS,
|
|
3496
4366
|
ActivityFeed,
|
|
3497
4367
|
AddToCart,
|
|
3498
4368
|
AnimatedNumber,
|
|
3499
4369
|
Attachment,
|
|
4370
|
+
BadgeButton,
|
|
4371
|
+
BentoGrid,
|
|
3500
4372
|
BidirectionalSlider,
|
|
3501
4373
|
Breadcrumb,
|
|
3502
4374
|
Calendar,
|
|
@@ -3518,12 +4390,15 @@ export {
|
|
|
3518
4390
|
DateTimePicker,
|
|
3519
4391
|
Dialog,
|
|
3520
4392
|
Drawer,
|
|
4393
|
+
DrilldownMenu,
|
|
3521
4394
|
EditableTable,
|
|
3522
4395
|
EmptyState,
|
|
4396
|
+
EqualizerSlider,
|
|
3523
4397
|
FileExplorer,
|
|
3524
4398
|
FilterBuilder,
|
|
3525
4399
|
FlipGroup,
|
|
3526
4400
|
Frost,
|
|
4401
|
+
HandwritingText,
|
|
3527
4402
|
HeatmapChart,
|
|
3528
4403
|
HoldConfirm,
|
|
3529
4404
|
HoverCard,
|
|
@@ -3537,15 +4412,20 @@ export {
|
|
|
3537
4412
|
LoadingButton,
|
|
3538
4413
|
MK_HEAD_SCRIPT,
|
|
3539
4414
|
MK_THEME_HEAD_SCRIPT,
|
|
4415
|
+
MagnetizeButton,
|
|
3540
4416
|
Menu,
|
|
3541
4417
|
MkIcon,
|
|
4418
|
+
MorphingPageDots,
|
|
3542
4419
|
MultiSelect,
|
|
3543
4420
|
NAV_STYLES,
|
|
3544
4421
|
NAV_STYLE_ALIASES,
|
|
3545
4422
|
Nav,
|
|
4423
|
+
NotFound,
|
|
3546
4424
|
NotificationBell,
|
|
4425
|
+
NotificationStack,
|
|
3547
4426
|
OrbitMenu,
|
|
3548
4427
|
Pagination,
|
|
4428
|
+
ParticleButton,
|
|
3549
4429
|
PasswordStrength,
|
|
3550
4430
|
PieChart,
|
|
3551
4431
|
PillButton,
|
|
@@ -3555,24 +4435,31 @@ export {
|
|
|
3555
4435
|
Questionnaire,
|
|
3556
4436
|
RadarChart,
|
|
3557
4437
|
RadialChart,
|
|
4438
|
+
RadioGroup,
|
|
3558
4439
|
RangeCalendar,
|
|
3559
4440
|
RangeSlider,
|
|
4441
|
+
RatingScale,
|
|
3560
4442
|
ResizablePanel,
|
|
3561
4443
|
RichTextEditor,
|
|
3562
4444
|
SankeyChart,
|
|
3563
4445
|
ScratchCard,
|
|
3564
4446
|
ScrollIsland,
|
|
4447
|
+
ScrollPreviewDock,
|
|
3565
4448
|
Select,
|
|
4449
|
+
SignaturePad,
|
|
3566
4450
|
Skeleton,
|
|
3567
4451
|
SlotPicker,
|
|
3568
4452
|
SlotText,
|
|
3569
4453
|
SplitView,
|
|
3570
4454
|
StarRating,
|
|
3571
4455
|
StatCard,
|
|
4456
|
+
Stepper,
|
|
3572
4457
|
Steps,
|
|
4458
|
+
StickyHeader,
|
|
3573
4459
|
StudioDock,
|
|
3574
4460
|
SwipeActions,
|
|
3575
4461
|
TagInput,
|
|
4462
|
+
TemperatureSlider,
|
|
3576
4463
|
ThemePicker,
|
|
3577
4464
|
ThemeProvider,
|
|
3578
4465
|
TimeField,
|
|
@@ -3584,6 +4471,9 @@ export {
|
|
|
3584
4471
|
TreeView,
|
|
3585
4472
|
VirtualList,
|
|
3586
4473
|
VoiceDots,
|
|
4474
|
+
VoiceMessageBubble,
|
|
4475
|
+
WaveformPlayer,
|
|
4476
|
+
WheelPicker,
|
|
3587
4477
|
animate,
|
|
3588
4478
|
clearToasts,
|
|
3589
4479
|
confetti,
|