@yewdiel21/motion-kit 0.15.0 → 0.17.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 +25 -0
- package/dist/auto/index.d.ts +8 -3
- package/dist/auto/index.js +13 -3
- package/dist/auto/index.js.map +1 -1
- package/dist/{chunk-A6QQCF6V.js → chunk-7IQTMF7Y.js} +1542 -54
- package/dist/chunk-7IQTMF7Y.js.map +1 -0
- package/dist/{chunk-6IRJYXJU.js → chunk-BZLMCHUD.js} +2 -2
- package/dist/{chunk-JXRS3OEA.js → chunk-VJFPTLAK.js} +29 -7
- package/dist/chunk-VJFPTLAK.js.map +1 -0
- package/dist/css/components/chart.css +7 -0
- package/dist/css/components/drilldown-menu.css +130 -0
- package/dist/css/components/heatmap-chart.css +7 -0
- package/dist/css/components/pie-chart.css +7 -0
- package/dist/css/components/radar-chart.css +7 -0
- package/dist/css/components/radial-chart.css +16 -2
- package/dist/css/components/sankey-chart.css +7 -0
- package/dist/css/components/scroll-island.css +3 -0
- package/dist/css/components/signature-pad.css +104 -0
- package/dist/css/components/voice-message-bubble.css +50 -0
- package/dist/css/components/waveform-player.css +36 -0
- package/dist/css/components/wheel-picker.css +17 -0
- package/dist/elements/index.d.ts +90 -4
- package/dist/elements/index.js +290 -8
- package/dist/elements/index.js.map +1 -1
- package/dist/{reveal-BfyKKsw4.d.ts → engine-Bn6hC87X.d.ts} +206 -1
- package/dist/index.css +324 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +48 -10
- package/dist/react/index.js +240 -10
- package/dist/react/index.js.map +1 -1
- package/dist/{reduced-6X_bns60.d.ts → reduced-YS6TZjpa.d.ts} +1 -1
- package/dist/{store-CA2Qcun_.d.ts → store-CZ6vdtIE.d.ts} +5 -1
- package/package.json +110 -110
- package/registry.json +64 -0
- package/src/auto/auto-init.ts +308 -293
- package/src/components/add-to-cart/README.md +49 -34
- package/src/components/add-to-cart/react.tsx +4 -0
- package/src/components/chart/README.md +49 -34
- package/src/components/chart/chart.css +7 -0
- package/src/components/chart/element.ts +2 -1
- package/src/components/chart/engine.ts +105 -13
- package/src/components/chart/react.tsx +2 -2
- package/src/components/drilldown-menu/README.md +163 -0
- package/src/components/drilldown-menu/drilldown-menu.css +129 -0
- package/src/components/drilldown-menu/element.ts +59 -0
- package/src/components/drilldown-menu/engine.ts +338 -0
- package/src/components/drilldown-menu/react.tsx +76 -0
- package/src/components/radial-chart/README.md +10 -0
- package/src/components/radial-chart/element.ts +2 -2
- package/src/components/radial-chart/engine.ts +33 -6
- package/src/components/radial-chart/radial-chart.css +9 -2
- package/src/components/radial-chart/react.tsx +2 -2
- package/src/components/scroll-island/README.md +44 -34
- package/src/components/scroll-island/element.ts +1 -1
- package/src/components/scroll-island/engine.ts +25 -3
- package/src/components/scroll-island/react.tsx +3 -3
- package/src/components/scroll-island/scroll-island.css +3 -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 +437 -0
- package/src/components/signature-pad/react.tsx +56 -0
- package/src/components/signature-pad/signature-pad.css +103 -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 +68 -0
- package/src/components/voice-message-bubble/react.tsx +27 -0
- package/src/components/voice-message-bubble/voice-message-bubble.css +12 -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 +261 -0
- package/src/components/waveform-player/react.tsx +27 -0
- package/src/components/waveform-player/waveform-player.css +35 -0
- package/src/components/wheel-picker/README.md +33 -0
- package/src/components/wheel-picker/element.ts +18 -0
- package/src/components/wheel-picker/engine.ts +210 -0
- package/src/components/wheel-picker/react.tsx +32 -0
- package/src/components/wheel-picker/wheel-picker.css +16 -0
- package/src/elements/index.ts +273 -258
- package/src/index.ts +295 -290
- package/src/react/index.ts +176 -171
- package/dist/chunk-A6QQCF6V.js.map +0 -1
- package/dist/chunk-JXRS3OEA.js.map +0 -1
- /package/dist/{chunk-6IRJYXJU.js.map → chunk-BZLMCHUD.js.map} +0 -0
package/README.md
CHANGED
|
@@ -4,6 +4,27 @@ Motion toolkit for vanilla JavaScript, Astro and React/Next.js. GSAP recipes, ac
|
|
|
4
4
|
|
|
5
5
|
[Live playground](https://motion-kit-playground.vercel.app) — vanilla and React examples for every component.
|
|
6
6
|
|
|
7
|
+
## New in 0.17.0
|
|
8
|
+
|
|
9
|
+
Five reusable components with vanilla factories, React wrappers, custom elements, individual stylesheets and live examples:
|
|
10
|
+
|
|
11
|
+
| Component | Behavior |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| [Signature Pad](https://motion-kit-playground.vercel.app/signature-pad/) | Mouse, pen and touch input; undo/redo; normalized stroke data; transparent SVG/PNG export. |
|
|
14
|
+
| [Waveform Player](https://motion-kit-playground.vercel.app/waveform-player/) | Real audio playback, seek, playback speed and loading/error states. Supply your own waveform peaks. |
|
|
15
|
+
| [Voice Message Bubble](https://motion-kit-playground.vercel.app/voice-message-bubble/) | Incoming/outgoing audio messages with author, timestamp and delivery status. |
|
|
16
|
+
| [Drilldown Menu](https://motion-kit-playground.vercel.app/drilldown-menu/) | Nested actions, animated level changes, breadcrumbs and keyboard navigation. |
|
|
17
|
+
| [Wheel Picker](https://motion-kit-playground.vercel.app/wheel-picker/) | Native touch scrolling, mouse drag, keyboard selection, disabled options and form values. |
|
|
18
|
+
|
|
19
|
+
The components follow the active theme and respect reduced motion. No new runtime dependencies. Audio demos use an original synthesized test sound; the player does not request microphone access or analyze audio automatically.
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import { WheelPicker } from '@yewdiel21/motion-kit/react';
|
|
23
|
+
import '@yewdiel21/motion-kit/css';
|
|
24
|
+
|
|
25
|
+
<WheelPicker items={['15 min', '25 min', '50 min']} name="duration" />
|
|
26
|
+
```
|
|
27
|
+
|
|
7
28
|
## Install
|
|
8
29
|
|
|
9
30
|
```sh
|
|
@@ -172,3 +193,7 @@ import { PillButton, Toolbar, VoiceDots, Chart, PieChart } from '@yewdiel21/moti
|
|
|
172
193
|
```
|
|
173
194
|
|
|
174
195
|
Los cambios de 0.15 también incluyen `select`, `add-to-cart` y `scroll-island`, que ya estaban implementados antes de esta continuación.
|
|
196
|
+
|
|
197
|
+
## New in 0.16.0
|
|
198
|
+
|
|
199
|
+
Pill bars, capacity tracks, spotlight/gradient fills, stacked capsules and smooth range curves extend Chart. RadialChart gains segmented gauges and percentage centers. AddToCart and ScrollIsland now have complete, interactive Vanilla/React playground demos; ScrollIsland also supports a persistent rail and AddToCart synchronizes controlled counts.
|
package/dist/auto/index.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import { c as createJoinedCta, a as createImageZoom, b as createFontCycle, d as createThumbnailNav, e as createActionButton, f as createFilmHero, g as createEditorialReveal, h as createDrawer, i as createWeightHover, j as createSticker, k as createScrollDock, l as createLocalClock, m as createSpringCards, C as CurvedCarouselInstance, n as createPile, o as createWords, p as createFlow, q as createPop, r as createFitText, s as createStretchFooter, t as createRadialMenu, u as createTabs, v as createCounter, w as createReveal, x as createReflow, y as createSlotText, z as createSortable, A as createMaskText, B as createCascade, D as createTextRoll, E as createLetters, F as createParallax, G as createDepthGrid, H as createFrameZoom, I as createContrast, J as createMarquee, K as createCardDock, L as createSnapStrip, M as createFillText, T as TicketMenuOptions, N as TicketMenuInstance, O as createInfiniteReel, P as createRepelBento, Q as createRotator, R as createDragRuler, S as createDockPill } from '../reduced-
|
|
2
|
-
export { U as MK_HEAD_SCRIPT } from '../reduced-
|
|
3
|
-
import { c as
|
|
1
|
+
import { c as createJoinedCta, a as createImageZoom, b as createFontCycle, d as createThumbnailNav, e as createActionButton, f as createFilmHero, g as createEditorialReveal, h as createDrawer, i as createWeightHover, j as createSticker, k as createScrollDock, l as createLocalClock, m as createSpringCards, C as CurvedCarouselInstance, n as createPile, o as createWords, p as createFlow, q as createPop, r as createFitText, s as createStretchFooter, t as createRadialMenu, u as createTabs, v as createCounter, w as createReveal, x as createReflow, y as createSlotText, z as createSortable, A as createMaskText, B as createCascade, D as createTextRoll, E as createLetters, F as createParallax, G as createDepthGrid, H as createFrameZoom, I as createContrast, J as createMarquee, K as createCardDock, L as createSnapStrip, M as createFillText, T as TicketMenuOptions, N as TicketMenuInstance, O as createInfiniteReel, P as createRepelBento, Q as createRotator, R as createDragRuler, S as createDockPill } from '../reduced-YS6TZjpa.js';
|
|
2
|
+
export { U as MK_HEAD_SCRIPT } from '../reduced-YS6TZjpa.js';
|
|
3
|
+
import { c as createWheelPicker, a as createDrilldownMenu, b as createVoiceMessageBubble, d as createWaveformPlayer, e as createSignaturePad, f as createStudioDock, g as createTrailer, h as createQuantity, i as createPagination, j as createHoverCard, k as createInputOtp, l as createCalendar, m as createSlotPicker, n as createCreditCard, o as createCommandSearch, p as createHoldConfirm, q as createImagePreview, r as createNotificationBell, s as createPasswordStrength, t as createScratchCard, u as createStarRating, v as createAttachment, w as createSkeleton, x as createQuestionnaire, y as createCodeBlock, z as createContextMenu, A as createLinkPreview, B as createProgress, C as createRangeSlider, D as createChart, E as createColorSlider, F as createColorArea, G as createColorField, H as createColorPicker, I as createTimeField, J as createRangeCalendar, K as createDateRangePicker, L as createTooltip, M as createPopover, N as createLoadingButton, O as createBreadcrumb, P as createEmptyState, Q as createStatCard, R as createChartTooltip, S as createMultiSelect, T as createTagInput, U as createDateTimePicker, V as createFilterBuilder, W as createTimeline, X as createActivityFeed, Y as createTreeView, Z as createFileExplorer, _ as createJsonViewer, $ as createVirtualList, a0 as createResizablePanel, a1 as createSplitView, a2 as createDataTable, a3 as createEditableTable, a4 as createRichTextEditor, a5 as createSelect, a6 as createAddToCart, a7 as createScrollIsland } from '../engine-Bn6hC87X.js';
|
|
4
4
|
import { c as createLikeButton, a as createSwipeActions } from '../engine-QECQnGz1.js';
|
|
5
5
|
import { I as Instance } from '../types-BkS_raL8.js';
|
|
6
6
|
import 'gsap/SplitText';
|
|
7
7
|
|
|
8
8
|
declare const factories: {
|
|
9
|
+
'wheel-picker': typeof createWheelPicker;
|
|
10
|
+
'drilldown-menu': typeof createDrilldownMenu;
|
|
11
|
+
'voice-message-bubble': typeof createVoiceMessageBubble;
|
|
12
|
+
'waveform-player': typeof createWaveformPlayer;
|
|
13
|
+
'signature-pad': typeof createSignaturePad;
|
|
9
14
|
'joined-cta': typeof createJoinedCta;
|
|
10
15
|
'image-zoom': typeof createImageZoom;
|
|
11
16
|
'font-cycle': typeof createFontCycle;
|
package/dist/auto/index.js
CHANGED
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
createTicketMenu,
|
|
45
45
|
createWeightHover,
|
|
46
46
|
createWords
|
|
47
|
-
} from "../chunk-
|
|
47
|
+
} from "../chunk-BZLMCHUD.js";
|
|
48
48
|
import {
|
|
49
49
|
ScrollTrigger,
|
|
50
50
|
createActivityFeed,
|
|
@@ -66,6 +66,7 @@ import {
|
|
|
66
66
|
createDateRangePicker,
|
|
67
67
|
createDateTimePicker,
|
|
68
68
|
createDrawer,
|
|
69
|
+
createDrilldownMenu,
|
|
69
70
|
createEditableTable,
|
|
70
71
|
createEmptyState,
|
|
71
72
|
createFileExplorer,
|
|
@@ -93,6 +94,7 @@ import {
|
|
|
93
94
|
createScratchCard,
|
|
94
95
|
createScrollIsland,
|
|
95
96
|
createSelect,
|
|
97
|
+
createSignaturePad,
|
|
96
98
|
createSkeleton,
|
|
97
99
|
createSlotPicker,
|
|
98
100
|
createSplitView,
|
|
@@ -106,8 +108,11 @@ import {
|
|
|
106
108
|
createTooltip,
|
|
107
109
|
createTrailer,
|
|
108
110
|
createTreeView,
|
|
109
|
-
createVirtualList
|
|
110
|
-
|
|
111
|
+
createVirtualList,
|
|
112
|
+
createVoiceMessageBubble,
|
|
113
|
+
createWaveformPlayer,
|
|
114
|
+
createWheelPicker
|
|
115
|
+
} from "../chunk-7IQTMF7Y.js";
|
|
111
116
|
import "../chunk-34EZ7DF4.js";
|
|
112
117
|
import {
|
|
113
118
|
MK_HEAD_SCRIPT
|
|
@@ -181,6 +186,11 @@ function parseOptions(el) {
|
|
|
181
186
|
|
|
182
187
|
// src/auto/auto-init.ts
|
|
183
188
|
var factories = {
|
|
189
|
+
"wheel-picker": createWheelPicker,
|
|
190
|
+
"drilldown-menu": createDrilldownMenu,
|
|
191
|
+
"voice-message-bubble": createVoiceMessageBubble,
|
|
192
|
+
"waveform-player": createWaveformPlayer,
|
|
193
|
+
"signature-pad": createSignaturePad,
|
|
184
194
|
"joined-cta": createJoinedCta,
|
|
185
195
|
"image-zoom": createImageZoom,
|
|
186
196
|
"font-cycle": createFontCycle,
|
package/dist/auto/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/auto/parse-options.ts","../../src/auto/auto-init.ts"],"sourcesContent":["/** Attributes the recipes write themselves or use for children; never options. */\nconst RESERVED = new Set([\n '',\n 'ready',\n 'inview',\n 'carousel',\n 'open',\n 'card',\n 'slide',\n 'toggle',\n 'item',\n 'phantom',\n 'footerTitle',\n 'tab',\n 'indicator',\n 'chevron',\n 'text',\n 'role',\n 'motion',\n 'veil',\n 'swatch',\n 'part',\n 'sorting',\n 'sortableGroup',\n 'sortableLocked',\n 'cascade',\n 'on',\n 'tone',\n 'cursorZone',\n 'hidden',\n 'pressed',\n 'parallaxTarget',\n 'spread',\n 'expanded',\n 'settled',\n 'mode',\n 'active',\n 'islandToggle',\n 'islandPanel',\n 'islandItem',\n 'islandClose',\n 'reelTrack',\n 'reelCopy',\n 'dragging',\n 'dockItem',\n]);\n\nconst coerce = (value: string): unknown => {\n if (value === '' || value === 'true') return true;\n if (value === 'false') return false;\n if (/^-?\\d*\\.?\\d+$/.test(value)) return Number(value);\n return value;\n};\n\n/**\n * `data-mk-<option>` attributes → options object.\n * `data-mk-throw-boost=\"2.5\"` → `{ throwBoost: 2.5 }`, `data-mk-trigger=\"load\"` → `{ trigger: 'load' }`.\n */\nexport function parseOptions(el: HTMLElement): Record<string, unknown> {\n const options: Record<string, unknown> = {};\n for (const [key, raw] of Object.entries(el.dataset)) {\n if (!key.startsWith('mk') || key.length === 2) continue;\n const name = key.charAt(2).toLowerCase() + key.slice(3);\n if (RESERVED.has(name)) continue;\n options[name] = coerce(raw ?? '');\n }\n return options;\n}\n","import { createQuantity } from '../components/quantity/engine';\nimport { createPagination } from '../components/pagination/engine';\nimport { createHoverCard } from '../components/hover-card/engine';\nimport { createInputOtp } from '../components/input-otp/engine';\nimport { createJoinedCta } from '../recipes/joined-cta/create-joined-cta';\nimport { createImageZoom } from '../recipes/image-zoom/create-image-zoom';\nimport { createFontCycle } from '../recipes/font-cycle/create-font-cycle';\nimport { createThumbnailNav } from '../recipes/thumbnail-nav/create-thumbnail-nav';\nimport { createActionButton } from '../recipes/action-button/create-action-button';\nimport { createFilmHero } from '../recipes/film-hero/create-film-hero';\nimport { createEditorialReveal } from '../recipes/editorial-reveal/create-editorial-reveal';\nimport { createStudioDock } from '../components/studio-dock/engine';\nimport { createCalendar } from '../components/calendar/engine';\nimport { createSlotPicker } from '../components/slot-picker/engine';\nimport { createWeightHover } from '../recipes/weight-hover/create-weight-hover';\nimport { createSticker } from '../recipes/sticker/create-sticker';\nimport { createScrollDock } from '../recipes/scroll-dock/create-scroll-dock';\nimport { createLocalClock } from '../recipes/local-clock/create-local-clock';\nimport { createTrailer } from '../components/trailer/engine';\nimport { createCreditCard } from '../components/credit-card/engine';\nimport { createCommandSearch } from '../components/command-search/engine';\nimport { createHoldConfirm } from '../components/hold-confirm/engine';\nimport { createImagePreview } from '../components/image-preview/engine';\nimport { createLikeButton } from '../components/like-button/engine';\nimport { createNotificationBell } from '../components/notification-bell/engine';\nimport { createPasswordStrength } from '../components/password-strength/engine';\nimport { createScratchCard } from '../components/scratch-card/engine';\nimport { createStarRating } from '../components/star-rating/engine';\nimport { createSwipeActions } from '../components/swipe-actions/engine';\nimport { createAttachment } from '../components/attachment/engine';\nimport { createSkeleton } from '../components/skeleton/engine';\nimport { createQuestionnaire } from '../components/questionnaire/engine';\nimport { createCodeBlock } from '../components/code-block/engine';\nimport { createContextMenu } from '../components/context-menu/engine';\nimport { createDrawer } from '../components/drawer/engine';\nimport { createLinkPreview } from '../components/link-preview/engine';\nimport { createProgress } from '../components/progress/engine';\nimport { createRangeSlider } from '../components/range-slider/engine';\nimport { createChart } from '../components/chart/engine';\nimport { createColorSlider } from '../components/color-slider/engine';\nimport { createColorArea } from '../components/color-area/engine';\nimport { createColorField } from '../components/color-field/engine';\nimport { createColorPicker } from '../components/color-picker/engine';\nimport { createTimeField } from '../components/time-field/engine';\nimport { createRangeCalendar } from '../components/range-calendar/engine';\nimport { createDateRangePicker } from '../components/date-range-picker/engine';\nimport { createTooltip } from '../components/tooltip/engine';\nimport { createPopover } from '../components/popover/engine';\nimport { createLoadingButton } from '../components/loading-button/engine';\nimport { createBreadcrumb } from '../components/breadcrumb/engine';\nimport { createEmptyState } from '../components/empty-state/engine';\nimport { createStatCard } from '../components/stat-card/engine';\nimport { createChartTooltip } from '../components/chart-tooltip/engine';\nimport { createMultiSelect } from '../components/multi-select/engine';\nimport { createTagInput } from '../components/tag-input/engine';\nimport { createDateTimePicker } from '../components/date-time-picker/engine';\nimport { createFilterBuilder } from '../components/filter-builder/engine';\nimport { createTimeline } from '../components/timeline/engine';\nimport { createActivityFeed } from '../components/activity-feed/engine';\nimport { createTreeView } from '../components/tree-view/engine';\nimport { createFileExplorer } from '../components/file-explorer/engine';\nimport { createJsonViewer } from '../components/json-viewer/engine';\nimport { createVirtualList } from '../components/virtual-list/engine';\nimport { createResizablePanel } from '../components/resizable-panel/engine';\nimport { createSplitView } from '../components/split-view/engine';\nimport { createDataTable } from '../components/data-table/engine';\nimport { createEditableTable } from '../components/editable-table/engine';\nimport { createRichTextEditor } from '../components/rich-text-editor/engine';\nimport { createSelect } from '../components/select/engine';\nimport { createAddToCart } from '../components/add-to-cart/engine';\nimport { createScrollIsland } from '../components/scroll-island/engine';\nimport { ScrollTrigger } from '../core/gsap';\nimport { warnOnce, type Instance } from '../core/types';\nimport { createSpringCards } from '../recipes/spring-cards/create-spring-cards';\nimport { createCurvedCarousel } from '../recipes/curved-carousel/create-curved-carousel';\nimport { createPile } from '../recipes/pile/create-pile';\nimport { createWords } from '../recipes/words/create-words';\nimport { createFlow } from '../recipes/flow/create-flow';\nimport { createPop } from '../recipes/pop/create-pop';\nimport { createFitText } from '../recipes/fit-text/create-fit-text';\nimport { createStretchFooter } from '../recipes/stretch-footer/create-stretch-footer';\nimport { createRadialMenu } from '../recipes/radial-menu/create-radial-menu';\nimport { createTabs } from '../recipes/tabs/create-tabs';\nimport { createCounter } from '../recipes/counter/create-counter';\nimport { createDetails } from '../recipes/details/create-details';\nimport { createReveal } from '../recipes/reveal/create-reveal';\nimport { createReflow } from '../recipes/reflow/create-reflow';\nimport { createSlotText } from '../recipes/slot-text/create-slot-text';\nimport { createSortable } from '../recipes/sortable/create-sortable';\nimport { createMaskText } from '../recipes/mask-text/create-mask-text';\nimport { createCascade } from '../recipes/cascade/create-cascade';\nimport { createTextRoll } from '../recipes/text-roll/create-text-roll';\nimport { createLetters } from '../recipes/letters/create-letters';\nimport { createParallax } from '../recipes/parallax/create-parallax';\nimport { createDepthGrid } from '../recipes/depth-grid/create-depth-grid';\nimport { createFrameZoom } from '../recipes/frame-zoom/create-frame-zoom';\nimport { createContrast } from '../recipes/contrast/create-contrast';\nimport { createMarquee } from '../recipes/marquee/create-marquee';\nimport { createCardDock } from '../recipes/card-dock/create-card-dock';\nimport { createSnapStrip } from '../recipes/snap-strip/create-snap-strip';\nimport { createFillText } from '../recipes/fill-text/create-fill-text';\nimport { parseOptions } from './parse-options';\nimport { createTicketMenu } from '../recipes/ticket-menu/create-ticket-menu';\nimport { createInfiniteReel } from '../recipes/infinite-reel/create-infinite-reel';\nimport { createRepelBento } from '../recipes/repel-bento/create-repel-bento';\nimport { createRotator } from '../recipes/rotator/create-rotator';\nimport { createDragRuler } from '../recipes/drag-ruler/create-drag-ruler';\nimport { createDockPill } from '../recipes/dock-pill/create-dock-pill';\n\ntype Factory = (el: HTMLElement, options: Record<string, unknown>) => Instance;\n\nconst factories = {\n 'joined-cta': createJoinedCta,\n 'image-zoom': createImageZoom,\n 'font-cycle': createFontCycle,\n 'thumbnail-nav': createThumbnailNav,\n 'action-button': createActionButton,\n 'film-hero': createFilmHero,\n 'editorial-reveal': createEditorialReveal,\n 'studio-dock': createStudioDock,\n 'trailer': createTrailer,\n 'quantity': createQuantity,\n 'pagination': createPagination,\n 'hover-card': createHoverCard,\n 'input-otp': createInputOtp,\n 'calendar': createCalendar,\n 'slot-picker': createSlotPicker,\n 'credit-card': createCreditCard,\n 'command-search': createCommandSearch,\n 'hold-confirm': createHoldConfirm,\n 'image-preview': createImagePreview,\n 'like-button': createLikeButton,\n 'notification-bell': createNotificationBell,\n 'password-strength': createPasswordStrength,\n 'scratch-card': createScratchCard,\n 'star-rating': createStarRating,\n 'swipe-actions': createSwipeActions,\n 'attachment': createAttachment,\n 'skeleton': createSkeleton,\n 'questionnaire': createQuestionnaire,\n 'code-block': createCodeBlock,\n 'context-menu': createContextMenu,\n 'drawer': createDrawer,\n 'link-preview': createLinkPreview,\n 'progress': createProgress,\n 'range-slider': createRangeSlider,\n 'chart': createChart,\n 'color-slider': createColorSlider,\n 'color-area': createColorArea,\n 'color-field': createColorField,\n 'color-picker': createColorPicker,\n 'time-field': createTimeField,\n 'range-calendar': createRangeCalendar,\n 'date-range-picker': createDateRangePicker,\n 'tooltip': createTooltip,\n 'popover': createPopover,\n 'loading-button': createLoadingButton,\n 'breadcrumb': createBreadcrumb,\n 'empty-state': createEmptyState,\n 'stat-card': createStatCard,\n 'chart-tooltip': createChartTooltip,\n 'multi-select': createMultiSelect,\n 'tag-input': createTagInput,\n 'date-time-picker': createDateTimePicker,\n 'filter-builder': createFilterBuilder,\n 'timeline': createTimeline,\n 'activity-feed': createActivityFeed,\n 'tree-view': createTreeView,\n 'file-explorer': createFileExplorer,\n 'json-viewer': createJsonViewer,\n 'virtual-list': createVirtualList,\n 'resizable-panel': createResizablePanel,\n 'split-view': createSplitView,\n 'data-table': createDataTable,\n 'editable-table': createEditableTable,\n 'rich-text-editor': createRichTextEditor,\n 'select': createSelect,\n 'add-to-cart': createAddToCart,\n 'scroll-island': createScrollIsland,\n 'weight-hover': createWeightHover,\n 'sticker': createSticker,\n 'scroll-dock': createScrollDock,\n 'local-clock': createLocalClock,\n 'spring-cards': createSpringCards,\n 'curved-carousel': (el, options) =>\n createCurvedCarousel(el, {\n ...options,\n onSelect: (index, slide) => el.dispatchEvent(new CustomEvent('mk:select', { detail: { index, slide }, bubbles: true })),\n }),\n pile: createPile,\n words: createWords,\n flow: createFlow,\n pop: createPop,\n 'fit-text': createFitText,\n 'stretch-footer': createStretchFooter,\n 'radial-menu': createRadialMenu,\n tabs: createTabs,\n counter: createCounter,\n details: (el) => createDetails(el),\n reveal: createReveal,\n reflow: createReflow,\n 'slot-text': createSlotText,\n sortable: createSortable,\n 'mask-text': createMaskText,\n cascade: createCascade,\n 'text-roll': createTextRoll,\n letters: createLetters,\n parallax: createParallax,\n 'depth-grid': createDepthGrid,\n 'frame-zoom': createFrameZoom,\n contrast: createContrast,\n marquee: createMarquee,\n 'card-dock': createCardDock,\n 'snap-strip': createSnapStrip,\n 'fill-text': createFillText,\n 'ticket-menu': createTicketMenu,\n 'infinite-reel': createInfiniteReel,\n 'repel-bento': createRepelBento,\n 'rotator': createRotator,\n 'drag-ruler': createDragRuler,\n 'dock-pill': createDockPill,\n} satisfies Record<string, Factory>;\n\nexport type RecipeName = keyof typeof factories;\nexport const recipeNames = Object.keys(factories) as RecipeName[];\n\n/** Measured text: wait for web fonts, fit before splitting into words. */\nconst AFTER_FONTS: RecipeName[] = ['fit-text', 'words', 'slot-text'];\n\nconst instances = new WeakMap<HTMLElement, Map<RecipeName, Instance>>();\n\nexport interface AutoInitOptions {\n /** Only start these recipes. */\n only?: RecipeName[];\n}\n\n/**\n * Start every `[data-mk]` recipe inside `root` (an element may list several:\n * `data-mk=\"fit-text words\"`). Options come from `data-mk-*` attributes.\n * Returns a function that destroys what this call created. Safe to call again:\n * elements that already run a recipe are skipped.\n */\nexport function autoInit(root: ParentNode = document, { only }: AutoInitOptions = {}): () => void {\n if (typeof window === 'undefined') return () => {};\n const created: Array<[HTMLElement, RecipeName, Instance]> = [];\n let cancelled = false;\n\n const elements = [...root.querySelectorAll<HTMLElement>('[data-mk]')];\n if (root instanceof HTMLElement && root.matches('[data-mk]')) elements.unshift(root);\n\n const start = (el: HTMLElement, name: RecipeName) => {\n if (cancelled) return;\n const running = instances.get(el) ?? new Map<RecipeName, Instance>();\n if (running.has(name)) return;\n const instance = (factories[name] as Factory)(el, parseOptions(el));\n running.set(name, instance);\n instances.set(el, running);\n created.push([el, name, instance]);\n };\n\n const now: Array<[HTMLElement, RecipeName]> = [];\n const later: Array<[HTMLElement, RecipeName]> = [];\n for (const el of elements) {\n for (const raw of (el.dataset.mk ?? '').split(/\\s+/).filter(Boolean)) {\n if (!(raw in factories)) {\n warnOnce(`autoInit: unknown recipe \"${raw}\" (known: ${recipeNames.join(', ')})`);\n continue;\n }\n const name = raw as RecipeName;\n if (only && !only.includes(name)) continue;\n (AFTER_FONTS.includes(name) ? later : now).push([el, name]);\n }\n }\n\n now.forEach(([el, name]) => start(el, name));\n if (later.length) {\n later.sort((a, b) => AFTER_FONTS.indexOf(a[1]) - AFTER_FONTS.indexOf(b[1]));\n const fonts = document.fonts?.ready ?? Promise.resolve();\n void Promise.race([fonts, new Promise((resolve) => setTimeout(resolve, 1500))]).then(() => {\n later.forEach(([el, name]) => start(el, name));\n if (!cancelled) ScrollTrigger.refresh();\n });\n }\n\n return () => {\n cancelled = true;\n for (const [el, name, instance] of created.reverse()) {\n instance.destroy();\n instances.get(el)?.delete(name);\n }\n created.length = 0;\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/auto/parse-options.ts","../../src/auto/auto-init.ts"],"sourcesContent":["/** Attributes the recipes write themselves or use for children; never options. */\nconst RESERVED = new Set([\n '',\n 'ready',\n 'inview',\n 'carousel',\n 'open',\n 'card',\n 'slide',\n 'toggle',\n 'item',\n 'phantom',\n 'footerTitle',\n 'tab',\n 'indicator',\n 'chevron',\n 'text',\n 'role',\n 'motion',\n 'veil',\n 'swatch',\n 'part',\n 'sorting',\n 'sortableGroup',\n 'sortableLocked',\n 'cascade',\n 'on',\n 'tone',\n 'cursorZone',\n 'hidden',\n 'pressed',\n 'parallaxTarget',\n 'spread',\n 'expanded',\n 'settled',\n 'mode',\n 'active',\n 'islandToggle',\n 'islandPanel',\n 'islandItem',\n 'islandClose',\n 'reelTrack',\n 'reelCopy',\n 'dragging',\n 'dockItem',\n]);\n\nconst coerce = (value: string): unknown => {\n if (value === '' || value === 'true') return true;\n if (value === 'false') return false;\n if (/^-?\\d*\\.?\\d+$/.test(value)) return Number(value);\n return value;\n};\n\n/**\n * `data-mk-<option>` attributes → options object.\n * `data-mk-throw-boost=\"2.5\"` → `{ throwBoost: 2.5 }`, `data-mk-trigger=\"load\"` → `{ trigger: 'load' }`.\n */\nexport function parseOptions(el: HTMLElement): Record<string, unknown> {\n const options: Record<string, unknown> = {};\n for (const [key, raw] of Object.entries(el.dataset)) {\n if (!key.startsWith('mk') || key.length === 2) continue;\n const name = key.charAt(2).toLowerCase() + key.slice(3);\n if (RESERVED.has(name)) continue;\n options[name] = coerce(raw ?? '');\n }\n return options;\n}\n","import { createQuantity } from '../components/quantity/engine';\r\nimport { createPagination } from '../components/pagination/engine';\r\nimport { createHoverCard } from '../components/hover-card/engine';\r\nimport { createInputOtp } from '../components/input-otp/engine';\r\nimport { createJoinedCta } from '../recipes/joined-cta/create-joined-cta';\r\nimport { createImageZoom } from '../recipes/image-zoom/create-image-zoom';\r\nimport { createFontCycle } from '../recipes/font-cycle/create-font-cycle';\r\nimport { createThumbnailNav } from '../recipes/thumbnail-nav/create-thumbnail-nav';\r\nimport { createActionButton } from '../recipes/action-button/create-action-button';\r\nimport { createFilmHero } from '../recipes/film-hero/create-film-hero';\r\nimport { createEditorialReveal } from '../recipes/editorial-reveal/create-editorial-reveal';\r\nimport { createStudioDock } from '../components/studio-dock/engine';\r\nimport { createCalendar } from '../components/calendar/engine';\r\nimport { createSlotPicker } from '../components/slot-picker/engine';\r\nimport { createWeightHover } from '../recipes/weight-hover/create-weight-hover';\r\nimport { createSticker } from '../recipes/sticker/create-sticker';\r\nimport { createScrollDock } from '../recipes/scroll-dock/create-scroll-dock';\r\nimport { createLocalClock } from '../recipes/local-clock/create-local-clock';\r\nimport { createTrailer } from '../components/trailer/engine';\r\nimport { createCreditCard } from '../components/credit-card/engine';\r\nimport { createCommandSearch } from '../components/command-search/engine';\r\nimport { createHoldConfirm } from '../components/hold-confirm/engine';\r\nimport { createImagePreview } from '../components/image-preview/engine';\r\nimport { createLikeButton } from '../components/like-button/engine';\r\nimport { createNotificationBell } from '../components/notification-bell/engine';\r\nimport { createPasswordStrength } from '../components/password-strength/engine';\r\nimport { createScratchCard } from '../components/scratch-card/engine';\r\nimport { createStarRating } from '../components/star-rating/engine';\r\nimport { createSwipeActions } from '../components/swipe-actions/engine';\r\nimport { createAttachment } from '../components/attachment/engine';\r\nimport { createSkeleton } from '../components/skeleton/engine';\r\nimport { createQuestionnaire } from '../components/questionnaire/engine';\r\nimport { createCodeBlock } from '../components/code-block/engine';\r\nimport { createContextMenu } from '../components/context-menu/engine';\r\nimport { createDrawer } from '../components/drawer/engine';\r\nimport { createLinkPreview } from '../components/link-preview/engine';\r\nimport { createProgress } from '../components/progress/engine';\r\nimport { createRangeSlider } from '../components/range-slider/engine';\r\nimport { createChart } from '../components/chart/engine';\r\nimport { createColorSlider } from '../components/color-slider/engine';\r\nimport { createColorArea } from '../components/color-area/engine';\r\nimport { createColorField } from '../components/color-field/engine';\r\nimport { createColorPicker } from '../components/color-picker/engine';\r\nimport { createTimeField } from '../components/time-field/engine';\r\nimport { createRangeCalendar } from '../components/range-calendar/engine';\r\nimport { createDateRangePicker } from '../components/date-range-picker/engine';\r\nimport { createTooltip } from '../components/tooltip/engine';\r\nimport { createPopover } from '../components/popover/engine';\r\nimport { createLoadingButton } from '../components/loading-button/engine';\r\nimport { createBreadcrumb } from '../components/breadcrumb/engine';\r\nimport { createEmptyState } from '../components/empty-state/engine';\r\nimport { createStatCard } from '../components/stat-card/engine';\r\nimport { createChartTooltip } from '../components/chart-tooltip/engine';\r\nimport { createMultiSelect } from '../components/multi-select/engine';\r\nimport { createTagInput } from '../components/tag-input/engine';\r\nimport { createDateTimePicker } from '../components/date-time-picker/engine';\r\nimport { createFilterBuilder } from '../components/filter-builder/engine';\r\nimport { createTimeline } from '../components/timeline/engine';\r\nimport { createActivityFeed } from '../components/activity-feed/engine';\r\nimport { createTreeView } from '../components/tree-view/engine';\r\nimport { createFileExplorer } from '../components/file-explorer/engine';\r\nimport { createJsonViewer } from '../components/json-viewer/engine';\r\nimport { createVirtualList } from '../components/virtual-list/engine';\r\nimport { createResizablePanel } from '../components/resizable-panel/engine';\r\nimport { createSplitView } from '../components/split-view/engine';\r\nimport { createDataTable } from '../components/data-table/engine';\r\nimport { createEditableTable } from '../components/editable-table/engine';\r\nimport { createRichTextEditor } from '../components/rich-text-editor/engine';\r\nimport { createSelect } from '../components/select/engine';\r\nimport { createAddToCart } from '../components/add-to-cart/engine';\r\nimport { createScrollIsland } from '../components/scroll-island/engine';\r\nimport { ScrollTrigger } from '../core/gsap';\r\nimport { warnOnce, type Instance } from '../core/types';\r\nimport { createSpringCards } from '../recipes/spring-cards/create-spring-cards';\r\nimport { createCurvedCarousel } from '../recipes/curved-carousel/create-curved-carousel';\r\nimport { createPile } from '../recipes/pile/create-pile';\r\nimport { createWords } from '../recipes/words/create-words';\r\nimport { createFlow } from '../recipes/flow/create-flow';\r\nimport { createPop } from '../recipes/pop/create-pop';\r\nimport { createFitText } from '../recipes/fit-text/create-fit-text';\r\nimport { createStretchFooter } from '../recipes/stretch-footer/create-stretch-footer';\r\nimport { createRadialMenu } from '../recipes/radial-menu/create-radial-menu';\r\nimport { createTabs } from '../recipes/tabs/create-tabs';\r\nimport { createCounter } from '../recipes/counter/create-counter';\r\nimport { createDetails } from '../recipes/details/create-details';\r\nimport { createReveal } from '../recipes/reveal/create-reveal';\r\nimport { createReflow } from '../recipes/reflow/create-reflow';\r\nimport { createSlotText } from '../recipes/slot-text/create-slot-text';\r\nimport { createSortable } from '../recipes/sortable/create-sortable';\r\nimport { createMaskText } from '../recipes/mask-text/create-mask-text';\r\nimport { createCascade } from '../recipes/cascade/create-cascade';\r\nimport { createTextRoll } from '../recipes/text-roll/create-text-roll';\r\nimport { createLetters } from '../recipes/letters/create-letters';\r\nimport { createParallax } from '../recipes/parallax/create-parallax';\r\nimport { createDepthGrid } from '../recipes/depth-grid/create-depth-grid';\r\nimport { createFrameZoom } from '../recipes/frame-zoom/create-frame-zoom';\r\nimport { createContrast } from '../recipes/contrast/create-contrast';\r\nimport { createMarquee } from '../recipes/marquee/create-marquee';\r\nimport { createCardDock } from '../recipes/card-dock/create-card-dock';\r\nimport { createSnapStrip } from '../recipes/snap-strip/create-snap-strip';\r\nimport { createFillText } from '../recipes/fill-text/create-fill-text';\r\nimport { parseOptions } from './parse-options';\r\nimport { createTicketMenu } from '../recipes/ticket-menu/create-ticket-menu';\r\nimport { createInfiniteReel } from '../recipes/infinite-reel/create-infinite-reel';\r\nimport { createRepelBento } from '../recipes/repel-bento/create-repel-bento';\r\nimport { createRotator } from '../recipes/rotator/create-rotator';\r\nimport { createDragRuler } from '../recipes/drag-ruler/create-drag-ruler';\r\nimport { createDockPill } from '../recipes/dock-pill/create-dock-pill';\r\n\r\nimport { createSignaturePad } from '../components/signature-pad/engine';\r\n\r\nimport { createWaveformPlayer } from '../components/waveform-player/engine';\r\n\r\nimport { createVoiceMessageBubble } from '../components/voice-message-bubble/engine';\r\n\r\nimport { createDrilldownMenu } from '../components/drilldown-menu/engine';\r\n\r\nimport { createWheelPicker } from '../components/wheel-picker/engine';\r\n\r\ntype Factory = (el: HTMLElement, options: Record<string, unknown>) => Instance;\r\n\r\nconst factories = {\r\n 'wheel-picker': createWheelPicker,\r\n 'drilldown-menu': createDrilldownMenu,\r\n 'voice-message-bubble': createVoiceMessageBubble,\r\n 'waveform-player': createWaveformPlayer,\r\n 'signature-pad': createSignaturePad,\r\n 'joined-cta': createJoinedCta,\r\n 'image-zoom': createImageZoom,\r\n 'font-cycle': createFontCycle,\r\n 'thumbnail-nav': createThumbnailNav,\r\n 'action-button': createActionButton,\r\n 'film-hero': createFilmHero,\r\n 'editorial-reveal': createEditorialReveal,\r\n 'studio-dock': createStudioDock,\r\n 'trailer': createTrailer,\r\n 'quantity': createQuantity,\r\n 'pagination': createPagination,\r\n 'hover-card': createHoverCard,\r\n 'input-otp': createInputOtp,\r\n 'calendar': createCalendar,\r\n 'slot-picker': createSlotPicker,\r\n 'credit-card': createCreditCard,\r\n 'command-search': createCommandSearch,\r\n 'hold-confirm': createHoldConfirm,\r\n 'image-preview': createImagePreview,\r\n 'like-button': createLikeButton,\r\n 'notification-bell': createNotificationBell,\r\n 'password-strength': createPasswordStrength,\r\n 'scratch-card': createScratchCard,\r\n 'star-rating': createStarRating,\r\n 'swipe-actions': createSwipeActions,\r\n 'attachment': createAttachment,\r\n 'skeleton': createSkeleton,\r\n 'questionnaire': createQuestionnaire,\r\n 'code-block': createCodeBlock,\r\n 'context-menu': createContextMenu,\r\n 'drawer': createDrawer,\r\n 'link-preview': createLinkPreview,\r\n 'progress': createProgress,\r\n 'range-slider': createRangeSlider,\r\n 'chart': createChart,\r\n 'color-slider': createColorSlider,\r\n 'color-area': createColorArea,\r\n 'color-field': createColorField,\r\n 'color-picker': createColorPicker,\r\n 'time-field': createTimeField,\r\n 'range-calendar': createRangeCalendar,\r\n 'date-range-picker': createDateRangePicker,\r\n 'tooltip': createTooltip,\r\n 'popover': createPopover,\r\n 'loading-button': createLoadingButton,\r\n 'breadcrumb': createBreadcrumb,\r\n 'empty-state': createEmptyState,\r\n 'stat-card': createStatCard,\r\n 'chart-tooltip': createChartTooltip,\r\n 'multi-select': createMultiSelect,\r\n 'tag-input': createTagInput,\r\n 'date-time-picker': createDateTimePicker,\r\n 'filter-builder': createFilterBuilder,\r\n 'timeline': createTimeline,\r\n 'activity-feed': createActivityFeed,\r\n 'tree-view': createTreeView,\r\n 'file-explorer': createFileExplorer,\r\n 'json-viewer': createJsonViewer,\r\n 'virtual-list': createVirtualList,\r\n 'resizable-panel': createResizablePanel,\r\n 'split-view': createSplitView,\r\n 'data-table': createDataTable,\r\n 'editable-table': createEditableTable,\r\n 'rich-text-editor': createRichTextEditor,\r\n 'select': createSelect,\r\n 'add-to-cart': createAddToCart,\r\n 'scroll-island': createScrollIsland,\r\n 'weight-hover': createWeightHover,\r\n 'sticker': createSticker,\r\n 'scroll-dock': createScrollDock,\r\n 'local-clock': createLocalClock,\r\n 'spring-cards': createSpringCards,\r\n 'curved-carousel': (el, options) =>\r\n createCurvedCarousel(el, {\r\n ...options,\r\n onSelect: (index, slide) => el.dispatchEvent(new CustomEvent('mk:select', { detail: { index, slide }, bubbles: true })),\r\n }),\r\n pile: createPile,\r\n words: createWords,\r\n flow: createFlow,\r\n pop: createPop,\r\n 'fit-text': createFitText,\r\n 'stretch-footer': createStretchFooter,\r\n 'radial-menu': createRadialMenu,\r\n tabs: createTabs,\r\n counter: createCounter,\r\n details: (el) => createDetails(el),\r\n reveal: createReveal,\r\n reflow: createReflow,\r\n 'slot-text': createSlotText,\r\n sortable: createSortable,\r\n 'mask-text': createMaskText,\r\n cascade: createCascade,\r\n 'text-roll': createTextRoll,\r\n letters: createLetters,\r\n parallax: createParallax,\r\n 'depth-grid': createDepthGrid,\r\n 'frame-zoom': createFrameZoom,\r\n contrast: createContrast,\r\n marquee: createMarquee,\r\n 'card-dock': createCardDock,\r\n 'snap-strip': createSnapStrip,\r\n 'fill-text': createFillText,\r\n 'ticket-menu': createTicketMenu,\r\n 'infinite-reel': createInfiniteReel,\r\n 'repel-bento': createRepelBento,\r\n 'rotator': createRotator,\r\n 'drag-ruler': createDragRuler,\r\n 'dock-pill': createDockPill,\r\n} satisfies Record<string, Factory>;\r\n\r\nexport type RecipeName = keyof typeof factories;\r\nexport const recipeNames = Object.keys(factories) as RecipeName[];\r\n\r\n/** Measured text: wait for web fonts, fit before splitting into words. */\r\nconst AFTER_FONTS: RecipeName[] = ['fit-text', 'words', 'slot-text'];\r\n\r\nconst instances = new WeakMap<HTMLElement, Map<RecipeName, Instance>>();\r\n\r\nexport interface AutoInitOptions {\r\n /** Only start these recipes. */\r\n only?: RecipeName[];\r\n}\r\n\r\n/**\r\n * Start every `[data-mk]` recipe inside `root` (an element may list several:\r\n * `data-mk=\"fit-text words\"`). Options come from `data-mk-*` attributes.\r\n * Returns a function that destroys what this call created. Safe to call again:\r\n * elements that already run a recipe are skipped.\r\n */\r\nexport function autoInit(root: ParentNode = document, { only }: AutoInitOptions = {}): () => void {\r\n if (typeof window === 'undefined') return () => {};\r\n const created: Array<[HTMLElement, RecipeName, Instance]> = [];\r\n let cancelled = false;\r\n\r\n const elements = [...root.querySelectorAll<HTMLElement>('[data-mk]')];\r\n if (root instanceof HTMLElement && root.matches('[data-mk]')) elements.unshift(root);\r\n\r\n const start = (el: HTMLElement, name: RecipeName) => {\r\n if (cancelled) return;\r\n const running = instances.get(el) ?? new Map<RecipeName, Instance>();\r\n if (running.has(name)) return;\r\n const instance = (factories[name] as Factory)(el, parseOptions(el));\r\n running.set(name, instance);\r\n instances.set(el, running);\r\n created.push([el, name, instance]);\r\n };\r\n\r\n const now: Array<[HTMLElement, RecipeName]> = [];\r\n const later: Array<[HTMLElement, RecipeName]> = [];\r\n for (const el of elements) {\r\n for (const raw of (el.dataset.mk ?? '').split(/\\s+/).filter(Boolean)) {\r\n if (!(raw in factories)) {\r\n warnOnce(`autoInit: unknown recipe \"${raw}\" (known: ${recipeNames.join(', ')})`);\r\n continue;\r\n }\r\n const name = raw as RecipeName;\r\n if (only && !only.includes(name)) continue;\r\n (AFTER_FONTS.includes(name) ? later : now).push([el, name]);\r\n }\r\n }\r\n\r\n now.forEach(([el, name]) => start(el, name));\r\n if (later.length) {\r\n later.sort((a, b) => AFTER_FONTS.indexOf(a[1]) - AFTER_FONTS.indexOf(b[1]));\r\n const fonts = document.fonts?.ready ?? Promise.resolve();\r\n void Promise.race([fonts, new Promise((resolve) => setTimeout(resolve, 1500))]).then(() => {\r\n later.forEach(([el, name]) => start(el, name));\r\n if (!cancelled) ScrollTrigger.refresh();\r\n });\r\n }\r\n\r\n return () => {\r\n cancelled = true;\r\n for (const [el, name, instance] of created.reverse()) {\r\n instance.destroy();\r\n instances.get(el)?.delete(name);\r\n }\r\n created.length = 0;\r\n };\r\n}\r\n"],"mappings":"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","names":[]}
|