motionary 0.0.0-stage → 6.2.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/CHANGELOG.md +803 -0
- package/LICENSE +21 -0
- package/README.md +218 -2
- package/README_ja.md +219 -0
- package/README_zh.md +219 -0
- package/bin/usa-codemod-5.mjs +79 -0
- package/bin/usa-codemod-6.mjs +146 -0
- package/dist/chunks/base-BaQV-2ha.cjs +436 -0
- package/dist/chunks/base-BaQV-2ha.cjs.map +1 -0
- package/dist/chunks/base-C_3cAoRz.js +404 -0
- package/dist/chunks/base-C_3cAoRz.js.map +1 -0
- package/dist/chunks/bind-B_CTL6Qn.js +22 -0
- package/dist/chunks/bind-B_CTL6Qn.js.map +1 -0
- package/dist/chunks/bind-Ui43-n2d.cjs +25 -0
- package/dist/chunks/bind-Ui43-n2d.cjs.map +1 -0
- package/dist/chunks/core-B5T0dhFH.cjs +920 -0
- package/dist/chunks/core-B5T0dhFH.cjs.map +1 -0
- package/dist/chunks/core-BGAyaY6L.cjs +265 -0
- package/dist/chunks/core-BGAyaY6L.cjs.map +1 -0
- package/dist/chunks/core-D7cVumUu.js +909 -0
- package/dist/chunks/core-D7cVumUu.js.map +1 -0
- package/dist/chunks/core-VEBw36QK.js +260 -0
- package/dist/chunks/core-VEBw36QK.js.map +1 -0
- package/dist/chunks/core-ps8uvYuN.js +181 -0
- package/dist/chunks/core-ps8uvYuN.js.map +1 -0
- package/dist/chunks/core-zq17EeCI.cjs +185 -0
- package/dist/chunks/core-zq17EeCI.cjs.map +1 -0
- package/dist/chunks/fx-Bs6IrV4Q.js +109 -0
- package/dist/chunks/fx-Bs6IrV4Q.js.map +1 -0
- package/dist/chunks/fx-lBGVtQO1.cjs +114 -0
- package/dist/chunks/fx-lBGVtQO1.cjs.map +1 -0
- package/dist/chunks/generative-D2YyhaeO.js +336 -0
- package/dist/chunks/generative-D2YyhaeO.js.map +1 -0
- package/dist/chunks/generative-DzIZq-_g.cjs +348 -0
- package/dist/chunks/generative-DzIZq-_g.cjs.map +1 -0
- package/dist/chunks/gpu-Bu7qwugO.js +380 -0
- package/dist/chunks/gpu-Bu7qwugO.js.map +1 -0
- package/dist/chunks/gpu-CenK2l6b.cjs +387 -0
- package/dist/chunks/gpu-CenK2l6b.cjs.map +1 -0
- package/dist/chunks/index-tags-DucKMQr_.js +26 -0
- package/dist/chunks/index-tags-DucKMQr_.js.map +1 -0
- package/dist/chunks/index-tags-wv0R_vkO.cjs +28 -0
- package/dist/chunks/index-tags-wv0R_vkO.cjs.map +1 -0
- package/dist/chunks/presets-BYBVJVeP.js +226 -0
- package/dist/chunks/presets-BYBVJVeP.js.map +1 -0
- package/dist/chunks/presets-CUHys3sK.cjs +233 -0
- package/dist/chunks/presets-CUHys3sK.cjs.map +1 -0
- package/dist/chunks/registry-CKNLQpwd.js +121 -0
- package/dist/chunks/registry-CKNLQpwd.js.map +1 -0
- package/dist/chunks/registry-DehBVRDV.cjs +131 -0
- package/dist/chunks/registry-DehBVRDV.cjs.map +1 -0
- package/dist/chunks/spring-CbvHfVtP.js +219 -0
- package/dist/chunks/spring-CbvHfVtP.js.map +1 -0
- package/dist/chunks/spring-Dgx187Vh.cjs +232 -0
- package/dist/chunks/spring-Dgx187Vh.cjs.map +1 -0
- package/dist/chunks/stagger-CCFyhzSw.cjs +86 -0
- package/dist/chunks/stagger-CCFyhzSw.cjs.map +1 -0
- package/dist/chunks/stagger-DtMKo2SK.js +84 -0
- package/dist/chunks/stagger-DtMKo2SK.js.map +1 -0
- package/dist/chunks/variants-BhjyddG8.cjs +39 -0
- package/dist/chunks/variants-BhjyddG8.cjs.map +1 -0
- package/dist/chunks/variants-DRlKVHvu.js +35 -0
- package/dist/chunks/variants-DRlKVHvu.js.map +1 -0
- package/dist/components/a11y.cjs +276 -0
- package/dist/components/a11y.cjs.map +1 -0
- package/dist/components/a11y.d.cts +131 -0
- package/dist/components/a11y.d.ts +131 -0
- package/dist/components/a11y.js +259 -0
- package/dist/components/a11y.js.map +1 -0
- package/dist/components/angular.cjs +76 -0
- package/dist/components/angular.cjs.map +1 -0
- package/dist/components/angular.d.cts +1734 -0
- package/dist/components/angular.d.ts +1734 -0
- package/dist/components/angular.js +70 -0
- package/dist/components/angular.js.map +1 -0
- package/dist/components/background.cjs +659 -0
- package/dist/components/background.cjs.map +1 -0
- package/dist/components/background.css +9 -0
- package/dist/components/background.d.cts +166 -0
- package/dist/components/background.d.ts +166 -0
- package/dist/components/background.js +647 -0
- package/dist/components/background.js.map +1 -0
- package/dist/components/bridge.cjs +154 -0
- package/dist/components/bridge.cjs.map +1 -0
- package/dist/components/bridge.d.cts +63 -0
- package/dist/components/bridge.d.ts +63 -0
- package/dist/components/bridge.js +147 -0
- package/dist/components/bridge.js.map +1 -0
- package/dist/components/cards.cjs +561 -0
- package/dist/components/cards.cjs.map +1 -0
- package/dist/components/cards.css +6 -0
- package/dist/components/cards.d.cts +115 -0
- package/dist/components/cards.d.ts +115 -0
- package/dist/components/cards.js +554 -0
- package/dist/components/cards.js.map +1 -0
- package/dist/components/click.cjs +877 -0
- package/dist/components/click.cjs.map +1 -0
- package/dist/components/click.css +9 -0
- package/dist/components/click.d.cts +218 -0
- package/dist/components/click.d.ts +218 -0
- package/dist/components/click.js +863 -0
- package/dist/components/click.js.map +1 -0
- package/dist/components/depth.cjs +250 -0
- package/dist/components/depth.cjs.map +1 -0
- package/dist/components/depth.css +3 -0
- package/dist/components/depth.d.cts +86 -0
- package/dist/components/depth.d.ts +86 -0
- package/dist/components/depth.js +242 -0
- package/dist/components/depth.js.map +1 -0
- package/dist/components/effects.cjs +2258 -0
- package/dist/components/effects.cjs.map +1 -0
- package/dist/components/effects.d.cts +545 -0
- package/dist/components/effects.d.ts +545 -0
- package/dist/components/effects.js +2200 -0
- package/dist/components/effects.js.map +1 -0
- package/dist/components/feedback.cjs +442 -0
- package/dist/components/feedback.cjs.map +1 -0
- package/dist/components/feedback.css +7 -0
- package/dist/components/feedback.d.cts +144 -0
- package/dist/components/feedback.d.ts +144 -0
- package/dist/components/feedback.js +433 -0
- package/dist/components/feedback.js.map +1 -0
- package/dist/components/fx-gpu.cjs +12 -0
- package/dist/components/fx-gpu.cjs.map +1 -0
- package/dist/components/fx-gpu.d.cts +63 -0
- package/dist/components/fx-gpu.d.ts +63 -0
- package/dist/components/fx-gpu.js +5 -0
- package/dist/components/fx-gpu.js.map +1 -0
- package/dist/components/fx.cjs +169 -0
- package/dist/components/fx.cjs.map +1 -0
- package/dist/components/fx.css +3 -0
- package/dist/components/fx.d.cts +114 -0
- package/dist/components/fx.d.ts +114 -0
- package/dist/components/fx.js +156 -0
- package/dist/components/fx.js.map +1 -0
- package/dist/components/fx2.cjs +25 -0
- package/dist/components/fx2.cjs.map +1 -0
- package/dist/components/fx2.d.cts +136 -0
- package/dist/components/fx2.d.ts +136 -0
- package/dist/components/fx2.js +17 -0
- package/dist/components/fx2.js.map +1 -0
- package/dist/components/gesture.cjs +209 -0
- package/dist/components/gesture.cjs.map +1 -0
- package/dist/components/gesture.css +3 -0
- package/dist/components/gesture.d.cts +134 -0
- package/dist/components/gesture.d.ts +134 -0
- package/dist/components/gesture.js +203 -0
- package/dist/components/gesture.js.map +1 -0
- package/dist/components/interaction.cjs +424 -0
- package/dist/components/interaction.cjs.map +1 -0
- package/dist/components/interaction.css +8 -0
- package/dist/components/interaction.d.cts +115 -0
- package/dist/components/interaction.d.ts +115 -0
- package/dist/components/interaction.js +416 -0
- package/dist/components/interaction.js.map +1 -0
- package/dist/components/jsx.cjs +3 -0
- package/dist/components/jsx.cjs.map +1 -0
- package/dist/components/jsx.d.cts +53 -0
- package/dist/components/jsx.d.ts +53 -0
- package/dist/components/jsx.js +2 -0
- package/dist/components/jsx.js.map +1 -0
- package/dist/components/layout.cjs +257 -0
- package/dist/components/layout.cjs.map +1 -0
- package/dist/components/layout.css +3 -0
- package/dist/components/layout.d.cts +99 -0
- package/dist/components/layout.d.ts +99 -0
- package/dist/components/layout.js +249 -0
- package/dist/components/layout.js.map +1 -0
- package/dist/components/lazy.cjs +92 -0
- package/dist/components/lazy.cjs.map +1 -0
- package/dist/components/lazy.d.cts +48 -0
- package/dist/components/lazy.d.ts +48 -0
- package/dist/components/lazy.js +87 -0
- package/dist/components/lazy.js.map +1 -0
- package/dist/components/lite.cjs +11095 -0
- package/dist/components/lite.cjs.map +1 -0
- package/dist/components/lite.d.cts +4 -0
- package/dist/components/lite.d.ts +4 -0
- package/dist/components/lite.js +10827 -0
- package/dist/components/lite.js.map +1 -0
- package/dist/components/packs.cjs +192 -0
- package/dist/components/packs.cjs.map +1 -0
- package/dist/components/packs.css +3 -0
- package/dist/components/packs.d.cts +72 -0
- package/dist/components/packs.d.ts +72 -0
- package/dist/components/packs.js +184 -0
- package/dist/components/packs.js.map +1 -0
- package/dist/components/page.cjs +824 -0
- package/dist/components/page.cjs.map +1 -0
- package/dist/components/page.css +11 -0
- package/dist/components/page.d.cts +249 -0
- package/dist/components/page.d.ts +249 -0
- package/dist/components/page.js +799 -0
- package/dist/components/page.js.map +1 -0
- package/dist/components/perf.cjs +120 -0
- package/dist/components/perf.cjs.map +1 -0
- package/dist/components/perf.d.cts +98 -0
- package/dist/components/perf.d.ts +98 -0
- package/dist/components/perf.js +110 -0
- package/dist/components/perf.js.map +1 -0
- package/dist/components/physics.cjs +448 -0
- package/dist/components/physics.cjs.map +1 -0
- package/dist/components/physics.css +5 -0
- package/dist/components/physics.d.cts +189 -0
- package/dist/components/physics.d.ts +189 -0
- package/dist/components/physics.js +430 -0
- package/dist/components/physics.js.map +1 -0
- package/dist/components/react.cjs +96 -0
- package/dist/components/react.cjs.map +1 -0
- package/dist/components/react.d.cts +18 -0
- package/dist/components/react.d.ts +18 -0
- package/dist/components/react.js +91 -0
- package/dist/components/react.js.map +1 -0
- package/dist/components/reveal.cjs +362 -0
- package/dist/components/reveal.cjs.map +1 -0
- package/dist/components/reveal.css +5 -0
- package/dist/components/reveal.d.cts +105 -0
- package/dist/components/reveal.d.ts +105 -0
- package/dist/components/reveal.js +353 -0
- package/dist/components/reveal.js.map +1 -0
- package/dist/components/solid.cjs +86 -0
- package/dist/components/solid.cjs.map +1 -0
- package/dist/components/solid.d.cts +1751 -0
- package/dist/components/solid.d.ts +1751 -0
- package/dist/components/solid.js +82 -0
- package/dist/components/solid.js.map +1 -0
- package/dist/components/svelte.cjs +68 -0
- package/dist/components/svelte.cjs.map +1 -0
- package/dist/components/svelte.d.cts +1733 -0
- package/dist/components/svelte.d.ts +1733 -0
- package/dist/components/svelte.js +64 -0
- package/dist/components/svelte.js.map +1 -0
- package/dist/components/svg.cjs +359 -0
- package/dist/components/svg.cjs.map +1 -0
- package/dist/components/svg.css +3 -0
- package/dist/components/svg.d.cts +113 -0
- package/dist/components/svg.d.ts +113 -0
- package/dist/components/svg.js +347 -0
- package/dist/components/svg.js.map +1 -0
- package/dist/components/text.cjs +968 -0
- package/dist/components/text.cjs.map +1 -0
- package/dist/components/text.css +8 -0
- package/dist/components/text.d.cts +342 -0
- package/dist/components/text.d.ts +342 -0
- package/dist/components/text.js +947 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/timeline.cjs +109 -0
- package/dist/components/timeline.cjs.map +1 -0
- package/dist/components/timeline.css +3 -0
- package/dist/components/timeline.d.cts +155 -0
- package/dist/components/timeline.d.ts +155 -0
- package/dist/components/timeline.js +103 -0
- package/dist/components/timeline.js.map +1 -0
- package/dist/components/tokens.cjs +226 -0
- package/dist/components/tokens.cjs.map +1 -0
- package/dist/components/tokens.d.cts +74 -0
- package/dist/components/tokens.d.ts +74 -0
- package/dist/components/tokens.js +211 -0
- package/dist/components/tokens.js.map +1 -0
- package/dist/components/transitions.cjs +430 -0
- package/dist/components/transitions.cjs.map +1 -0
- package/dist/components/transitions.css +5 -0
- package/dist/components/transitions.d.cts +126 -0
- package/dist/components/transitions.d.ts +126 -0
- package/dist/components/transitions.js +423 -0
- package/dist/components/transitions.js.map +1 -0
- package/dist/components/ui.cjs +1050 -0
- package/dist/components/ui.cjs.map +1 -0
- package/dist/components/ui.css +14 -0
- package/dist/components/ui.d.cts +224 -0
- package/dist/components/ui.d.ts +224 -0
- package/dist/components/ui.js +1034 -0
- package/dist/components/ui.js.map +1 -0
- package/dist/components/vue.cjs +67 -0
- package/dist/components/vue.cjs.map +1 -0
- package/dist/components/vue.d.cts +1722 -0
- package/dist/components/vue.d.ts +1722 -0
- package/dist/components/vue.js +64 -0
- package/dist/components/vue.js.map +1 -0
- package/dist/components/webgl.cjs +459 -0
- package/dist/components/webgl.cjs.map +1 -0
- package/dist/components/webgl.css +3 -0
- package/dist/components/webgl.d.cts +133 -0
- package/dist/components/webgl.d.ts +133 -0
- package/dist/components/webgl.js +442 -0
- package/dist/components/webgl.js.map +1 -0
- package/dist/components/widgets.cjs +591 -0
- package/dist/components/widgets.cjs.map +1 -0
- package/dist/components/widgets.d.cts +110 -0
- package/dist/components/widgets.d.ts +110 -0
- package/dist/components/widgets.js +581 -0
- package/dist/components/widgets.js.map +1 -0
- package/dist/components.cjs +351 -0
- package/dist/components.cjs.map +1 -0
- package/dist/components.css +75 -0
- package/dist/components.d.cts +2997 -0
- package/dist/components.d.ts +2997 -0
- package/dist/components.js +106 -0
- package/dist/components.js.map +1 -0
- package/dist/components.umd.js +23 -0
- package/dist/components.umd.js.map +1 -0
- package/dist/element.cjs +97 -0
- package/dist/element.cjs.map +1 -0
- package/dist/element.d.cts +215 -0
- package/dist/element.d.ts +215 -0
- package/dist/element.js +95 -0
- package/dist/element.js.map +1 -0
- package/dist/element.umd.js +2 -0
- package/dist/element.umd.js.map +1 -0
- package/dist/index.cjs +149 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +425 -0
- package/dist/index.d.ts +425 -0
- package/dist/index.js +131 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.js +15 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/presets/extended.cjs +243 -0
- package/dist/presets/extended.cjs.map +1 -0
- package/dist/presets/extended.d.cts +37 -0
- package/dist/presets/extended.d.ts +37 -0
- package/dist/presets/extended.js +239 -0
- package/dist/presets/extended.js.map +1 -0
- package/dist/presets-extended.umd.js +2 -0
- package/dist/presets-extended.umd.js.map +1 -0
- package/dist/react.cjs +68 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.cts +158 -0
- package/dist/react.d.ts +158 -0
- package/dist/react.js +65 -0
- package/dist/react.js.map +1 -0
- package/dist/solid.cjs +93 -0
- package/dist/solid.cjs.map +1 -0
- package/dist/solid.d.cts +249 -0
- package/dist/solid.d.ts +249 -0
- package/dist/solid.js +89 -0
- package/dist/solid.js.map +1 -0
- package/dist/svelte.cjs +66 -0
- package/dist/svelte.cjs.map +1 -0
- package/dist/svelte.d.cts +243 -0
- package/dist/svelte.d.ts +243 -0
- package/dist/svelte.js +63 -0
- package/dist/svelte.js.map +1 -0
- package/dist/vue.cjs +62 -0
- package/dist/vue.cjs.map +1 -0
- package/dist/vue.d.cts +158 -0
- package/dist/vue.d.ts +158 -0
- package/dist/vue.js +60 -0
- package/dist/vue.js.map +1 -0
- package/dist/widgets.umd.js +2 -0
- package/dist/widgets.umd.js.map +1 -0
- package/docs/API.md +147 -0
- package/docs/ROADMAP.md +14 -0
- package/docs/accessibility.md +60 -0
- package/docs/components.md +564 -0
- package/docs/deprecations.md +30 -0
- package/docs/frameworks-ssr.md +100 -0
- package/docs/hybrid-apps.md +145 -0
- package/docs/images/showcase-detail.png +0 -0
- package/docs/images/showcase-grid.png +0 -0
- package/docs/images/showcase-mobile.png +0 -0
- package/docs/migration-from-aos.md +67 -0
- package/docs/migration-from-gsap-scrolltrigger.md +80 -0
- package/docs/motion-tokens.css +31 -0
- package/docs/motion-tokens.md +46 -0
- package/docs/motion.tokens.json +132 -0
- package/docs/performance.md +24 -0
- package/docs/presets.md +310 -0
- package/docs/upgrading-3.md +21 -0
- package/docs/upgrading-4.md +65 -0
- package/docs/upgrading-5.md +31 -0
- package/docs/upgrading-6.md +32 -0
- package/docs/windows-apps.md +119 -0
- package/package.json +562 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf.js","sources":["../../src/components/perf/index.ts"],"sourcesContent":["/**\n * motionary/components/perf — performance toolkit (4.5).\n *\n * - One shared rAF scheduler for every component loop (`onFrame()`, `schedulerStats()`).\n * - Animation budget: `setAnimationBudget(n)` caps concurrent component\n * animations; extra ones land on their final frame.\n * - `autoDegrade()`: watches frame rate and animation count and steps motion\n * down (`low`, then a tighter budget) while the device struggles, restoring\n * it when frames recover.\n * - On-demand CSS: `loadCategoryStyles()` / `onDemandStyles()` — used by\n * `motionary/components/lite`, the build without inlined CSS.\n */\nimport {\n onFrame,\n schedulerStats,\n activeAnimations,\n setAnimationBudget,\n animationBudget,\n setStyleLoader,\n configureComponents,\n getMotionIntensity,\n type MotionIntensity,\n} from '../base';\nimport { COMPONENT_CATEGORIES, type ComponentCategory } from '../index-tags';\n\nexport { onFrame, schedulerStats, activeAnimations, setAnimationBudget, animationBudget };\n\nexport interface AutoDegradeOptions {\n /** Frame rate below which motion is degraded (default 45). */\n minFps?: number;\n /** Concurrent animations above which motion is degraded (default 40). */\n maxActive?: number;\n /** Sample window in ms (default 1000). */\n sample?: number;\n /** Bad samples in a row before degrading (default 2). */\n patience?: number;\n /** Good samples in a row before restoring (default 3). */\n recovery?: number;\n /** Called on every change. */\n onChange?: (state: DegradeState) => void;\n}\n\nexport interface DegradeState {\n degraded: boolean;\n fps: number;\n active: number;\n reason: '' | 'fps' | 'count';\n}\n\n/**\n * Watch frame rate and animation count; while the device struggles, set\n * motion intensity to `low` and cap concurrent animations at `maxActive / 2`,\n * then restore the previous settings once frames recover. Dispatches\n * `usa:degrade` on `document`. Returns a stop function (restores settings).\n */\nexport function autoDegrade(options: AutoDegradeOptions = {}): () => void {\n const { minFps = 45, maxActive = 40, sample = 1000, patience = 2, recovery = 3, onChange } = options;\n let frames = 0;\n let elapsed = 0;\n let bad = 0;\n let good = 0;\n let prev: { intensity: MotionIntensity; budget: number } | null = null;\n const state: DegradeState = { degraded: false, fps: 60, active: 0, reason: '' };\n const set = (degraded: boolean, reason: DegradeState['reason']) => {\n if (degraded === state.degraded) return;\n state.degraded = degraded;\n state.reason = reason;\n if (degraded) {\n prev = { intensity: getMotionIntensity(), budget: animationBudget() };\n configureComponents({ motionIntensity: 'low' });\n setAnimationBudget(Math.max(4, Math.floor(maxActive / 2)));\n } else if (prev) {\n configureComponents({ motionIntensity: prev.intensity });\n setAnimationBudget(prev.budget);\n prev = null;\n }\n onChange?.({ ...state });\n if (typeof document !== 'undefined') document.dispatchEvent(new CustomEvent('usa:degrade', { detail: { ...state } }));\n };\n const stop = onFrame((_t, dt) => {\n frames++;\n elapsed += Math.min(dt, 250);\n if (elapsed < sample) return;\n state.fps = Math.round((frames * 1000) / elapsed);\n state.active = activeAnimations();\n frames = 0;\n elapsed = 0;\n const reason = state.fps < minFps ? 'fps' : state.active > maxActive ? 'count' : '';\n if (reason) {\n good = 0;\n if (++bad >= patience) set(true, reason);\n } else {\n bad = 0;\n if (++good >= recovery) set(false, '');\n }\n });\n return () => {\n stop();\n set(false, '');\n };\n}\n\nconst TAG_CATEGORY: Record<string, ComponentCategory> = {};\nfor (const [cat, tags] of Object.entries(COMPONENT_CATEGORIES)) for (const t of tags) TAG_CATEGORY[t] = cat as ComponentCategory;\n/** The category of a default `<usa-*>` tag. */\nexport const categoryOf = (tag: string): ComponentCategory | undefined => TAG_CATEGORY[tag];\n\nconst loaded = new Set<string>();\n/**\n * Add `<link rel=\"stylesheet\" href=\"{base}components/{category}.css\">` once.\n * `base` is the URL of the package's `dist/` folder.\n */\nexport function loadCategoryStyles(category: ComponentCategory | 'all', base: string): HTMLLinkElement | null {\n if (typeof document === 'undefined' || loaded.has(category)) return null;\n loaded.add(category);\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = `${base.replace(/\\/?$/, '/')}${category === 'all' ? 'components.css' : `components/${category}.css`}`;\n link.setAttribute('data-usa-css', category);\n document.head.appendChild(link);\n return link;\n}\n\n/**\n * Load each category's CSS the first time one of its elements connects\n * (custom tags fall back to the full stylesheet). Returns an undo.\n */\nexport function onDemandStyles(base: string): () => void {\n setStyleLoader((tag) => loadCategoryStyles(categoryOf(tag) || 'all', base));\n return () => setStyleLoader(null);\n}\n\n/** Categories whose CSS has been requested so far. */\nexport const loadedStyles = (): string[] => Array.from(loaded);\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var base = require('../chunks/base-BaQV-2ha.cjs');
|
|
4
|
+
var spring = require('../chunks/spring-Dgx187Vh.cjs');
|
|
5
|
+
|
|
6
|
+
var css$2 = "usa-spring{display:inline-block;transform-origin:50% 70%}usa-spring[block]{display:block}usa-spring[effect=\"drop\"]{transform-origin:50% 100%}usa-spring[data-state=\"hidden\"]{opacity:0}usa-spring[trigger=\"click\"],usa-spring[trigger=\"hover\"]{cursor:pointer;-webkit-tap-highlight-color:transparent}";
|
|
7
|
+
|
|
8
|
+
const SPRING_EFFECTS = ['bounce-in', 'pop', 'drop', 'jelly', 'rubber-band'];
|
|
9
|
+
/** Entrance effects start hidden; attention effects (jelly, rubber-band) play on visible content. */
|
|
10
|
+
const ENTRANCE = new Set(['bounce-in', 'pop', 'drop']);
|
|
11
|
+
/** Keyframes of a spring effect (entrances use spring timing, attention effects fixed frames). */
|
|
12
|
+
function springEffectKeyframes(effect, reduced = false) {
|
|
13
|
+
if (reduced)
|
|
14
|
+
return ENTRANCE.has(effect) ? [{ opacity: 0 }, { opacity: 1 }] : [{ opacity: 1 }, { opacity: 1 }];
|
|
15
|
+
switch (effect) {
|
|
16
|
+
case 'pop':
|
|
17
|
+
return [{ opacity: 0, transform: 'scale(0.5)' }, { opacity: 1, transform: 'scale(1)' }];
|
|
18
|
+
case 'drop':
|
|
19
|
+
return [{ opacity: 0, transform: 'translate3d(0, -120%, 0)' }, { opacity: 1, transform: 'translate3d(0, 0, 0)' }];
|
|
20
|
+
case 'jelly':
|
|
21
|
+
return [
|
|
22
|
+
{ transform: 'scale3d(1, 1, 1)' },
|
|
23
|
+
{ transform: 'scale3d(1.25, 0.75, 1)', offset: 0.3 },
|
|
24
|
+
{ transform: 'scale3d(0.75, 1.25, 1)', offset: 0.4 },
|
|
25
|
+
{ transform: 'scale3d(1.15, 0.85, 1)', offset: 0.5 },
|
|
26
|
+
{ transform: 'scale3d(0.95, 1.05, 1)', offset: 0.65 },
|
|
27
|
+
{ transform: 'scale3d(1.05, 0.95, 1)', offset: 0.75 },
|
|
28
|
+
{ transform: 'scale3d(1, 1, 1)' },
|
|
29
|
+
];
|
|
30
|
+
case 'rubber-band':
|
|
31
|
+
return [
|
|
32
|
+
{ transform: 'scale3d(1, 1, 1)' },
|
|
33
|
+
{ transform: 'scale3d(1.3, 0.7, 1)', offset: 0.3 },
|
|
34
|
+
{ transform: 'scale3d(0.8, 1.2, 1)', offset: 0.45 },
|
|
35
|
+
{ transform: 'scale3d(1.1, 0.9, 1)', offset: 0.6 },
|
|
36
|
+
{ transform: 'scale3d(0.97, 1.03, 1)', offset: 0.8 },
|
|
37
|
+
{ transform: 'scale3d(1, 1, 1)' },
|
|
38
|
+
];
|
|
39
|
+
default:
|
|
40
|
+
return [{ opacity: 0, transform: 'scale(0.3)' }, { opacity: 1, transform: 'scale(1)' }];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const DEFAULT_PRESET = { 'bounce-in': 'bouncy', pop: 'wobbly', drop: 'bouncy' };
|
|
44
|
+
function defineSpring(tag = 'usa-spring') {
|
|
45
|
+
return base.defineElement(tag, (Base) => class UsaSpring extends Base {
|
|
46
|
+
constructor() {
|
|
47
|
+
super(...arguments);
|
|
48
|
+
this._anim = null;
|
|
49
|
+
}
|
|
50
|
+
static get observedAttributes() {
|
|
51
|
+
return ['effect', 'trigger', 'repeat'];
|
|
52
|
+
}
|
|
53
|
+
get effect() {
|
|
54
|
+
return this.str('effect', 'bounce-in');
|
|
55
|
+
}
|
|
56
|
+
set effect(v) {
|
|
57
|
+
this.setAttribute('effect', v);
|
|
58
|
+
}
|
|
59
|
+
config() {
|
|
60
|
+
if (this.hasAttribute('stiffness') || this.hasAttribute('damping') || this.hasAttribute('mass'))
|
|
61
|
+
return { stiffness: this.num('stiffness', 170), damping: this.num('damping', 26), mass: this.num('mass', 1) };
|
|
62
|
+
return this.str('preset', DEFAULT_PRESET[this.effect] || 'wobbly');
|
|
63
|
+
}
|
|
64
|
+
mount() {
|
|
65
|
+
const trigger = this.str('trigger', 'view');
|
|
66
|
+
const entrance = ENTRANCE.has(this.effect);
|
|
67
|
+
if (trigger === 'view') {
|
|
68
|
+
if (entrance)
|
|
69
|
+
this.setAttribute('data-state', 'hidden');
|
|
70
|
+
this.inView((visible) => {
|
|
71
|
+
if (visible)
|
|
72
|
+
this.play();
|
|
73
|
+
else if (this.flag('repeat') && entrance)
|
|
74
|
+
this.reset();
|
|
75
|
+
}, { threshold: 0.15 });
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
if (trigger === 'hover')
|
|
79
|
+
this.listen(this, 'pointerenter', () => this.play());
|
|
80
|
+
if (trigger === 'click') {
|
|
81
|
+
this.listen(this, 'click', () => this.play());
|
|
82
|
+
this.listen(this, 'keydown', (e) => (e.key === 'Enter' || e.key === ' ') && !e.repeat && this.play());
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
unmount() {
|
|
87
|
+
this._anim?.cancel();
|
|
88
|
+
this._anim = null;
|
|
89
|
+
}
|
|
90
|
+
reset() {
|
|
91
|
+
this._anim?.cancel();
|
|
92
|
+
this._anim = null;
|
|
93
|
+
if (ENTRANCE.has(this.effect))
|
|
94
|
+
this.setAttribute('data-state', 'hidden');
|
|
95
|
+
}
|
|
96
|
+
async play() {
|
|
97
|
+
const effect = this.effect;
|
|
98
|
+
const reduced = this.reduced;
|
|
99
|
+
this._anim?.cancel();
|
|
100
|
+
this.setAttribute('data-state', 'playing');
|
|
101
|
+
const frames = springEffectKeyframes(effect, reduced);
|
|
102
|
+
const timing = ENTRANCE.has(effect) && !reduced
|
|
103
|
+
? spring.springEasing(this.config())
|
|
104
|
+
: { duration: reduced ? 250 : this.num('duration', 900), easing: 'ease-out' };
|
|
105
|
+
const a = this.motion(this, frames, { ...timing, delay: this.num('delay', 0), fill: 'backwards' });
|
|
106
|
+
this._anim = a;
|
|
107
|
+
if (a) {
|
|
108
|
+
try {
|
|
109
|
+
await a.finished;
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (this._anim !== a)
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
this._anim = null;
|
|
118
|
+
this.setAttribute('data-state', 'done');
|
|
119
|
+
this.emit('complete', { effect });
|
|
120
|
+
}
|
|
121
|
+
}, { id: 'spring', text: css$2 });
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
var css$1 = "usa-draggable{display:inline-block;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;will-change:transform;-webkit-tap-highlight-color:transparent}usa-draggable[axis=\"x\"]{touch-action:pan-y}usa-draggable[axis=\"y\"]{touch-action:pan-x}usa-draggable[block]{display:block}usa-draggable[data-dragging]{cursor:grabbing}usa-draggable[disabled]{cursor:default}usa-draggable:focus-visible{outline:2px solid var(--usa-accent,#7c5cff);outline-offset:3px}";
|
|
125
|
+
|
|
126
|
+
const parseSnap = (s) => {
|
|
127
|
+
if (!s.trim())
|
|
128
|
+
return null;
|
|
129
|
+
const parts = s.split(',').map((p) => Number(p.trim())).filter((n) => Number.isFinite(n));
|
|
130
|
+
if (!parts.length)
|
|
131
|
+
return null;
|
|
132
|
+
return s.includes(',') ? parts : parts[0];
|
|
133
|
+
};
|
|
134
|
+
function defineDraggable(tag = 'usa-draggable') {
|
|
135
|
+
return base.defineElement(tag, (Base) => class UsaDraggable extends Base {
|
|
136
|
+
constructor() {
|
|
137
|
+
super(...arguments);
|
|
138
|
+
this._x = 0;
|
|
139
|
+
this._y = 0;
|
|
140
|
+
this._drag = null;
|
|
141
|
+
}
|
|
142
|
+
static get observedAttributes() {
|
|
143
|
+
return ['axis', 'disabled', 'preset'];
|
|
144
|
+
}
|
|
145
|
+
get x() {
|
|
146
|
+
return this._x;
|
|
147
|
+
}
|
|
148
|
+
get y() {
|
|
149
|
+
return this._y;
|
|
150
|
+
}
|
|
151
|
+
get dragging() {
|
|
152
|
+
return !!this._drag;
|
|
153
|
+
}
|
|
154
|
+
render() {
|
|
155
|
+
this.style.transform = `translate3d(${this._x}px, ${this._y}px, 0)`;
|
|
156
|
+
this.style.setProperty('--usa-drag-x', `${this._x}px`);
|
|
157
|
+
this.style.setProperty('--usa-drag-y', `${this._y}px`);
|
|
158
|
+
}
|
|
159
|
+
axis() {
|
|
160
|
+
return this.str('axis', 'both');
|
|
161
|
+
}
|
|
162
|
+
/** Bounds relative to the origin, from the parent box. */
|
|
163
|
+
limits() {
|
|
164
|
+
if (this.str('bounds') !== 'parent' || !this.parentElement)
|
|
165
|
+
return null;
|
|
166
|
+
const p = this.parentElement.getBoundingClientRect();
|
|
167
|
+
const r = this.getBoundingClientRect();
|
|
168
|
+
const ox = r.left - this._x;
|
|
169
|
+
const oy = r.top - this._y;
|
|
170
|
+
return { minX: p.left - ox, maxX: p.right - ox - r.width, minY: p.top - oy, maxY: p.bottom - oy - r.height };
|
|
171
|
+
}
|
|
172
|
+
mount() {
|
|
173
|
+
let settled = 0;
|
|
174
|
+
const rest = () => {
|
|
175
|
+
if (++settled >= 2) {
|
|
176
|
+
settled = 0;
|
|
177
|
+
this.removeAttribute('data-moving');
|
|
178
|
+
this.emit('settle', { x: this._x, y: this._y });
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
const spring$1 = this.str('preset', 'wobbly');
|
|
182
|
+
this._sx = spring.createSpring({ value: this._x, spring: spring$1, onUpdate: (v) => ((this._x = v), this.render()), onRest: rest });
|
|
183
|
+
this._sy = spring.createSpring({ value: this._y, spring: spring$1, onUpdate: (v) => ((this._y = v), this.render()), onRest: rest });
|
|
184
|
+
if (!this.hasAttribute('tabindex'))
|
|
185
|
+
this.tabIndex = 0;
|
|
186
|
+
this.setAttribute('aria-roledescription', 'draggable');
|
|
187
|
+
this.listen(this, 'pointerdown', (e) => this.start(e));
|
|
188
|
+
this.listen(this, 'pointermove', (e) => this.move(e));
|
|
189
|
+
this.listen(this, 'pointerup', (e) => this.end(e));
|
|
190
|
+
this.listen(this, 'pointercancel', (e) => this.end(e));
|
|
191
|
+
this.listen(this, 'keydown', (e) => this.key(e));
|
|
192
|
+
this.render();
|
|
193
|
+
}
|
|
194
|
+
unmount() {
|
|
195
|
+
this._sx?.stop();
|
|
196
|
+
this._sy?.stop();
|
|
197
|
+
this._drag = null;
|
|
198
|
+
}
|
|
199
|
+
start(e) {
|
|
200
|
+
if (this.flag('disabled') || (e.pointerType === 'mouse' && e.button !== 0))
|
|
201
|
+
return;
|
|
202
|
+
this._sx.stop();
|
|
203
|
+
this._sy.stop();
|
|
204
|
+
this._drag = { id: e.pointerId, px: e.clientX, py: e.clientY, ox: this._x, oy: this._y, samples: [[e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]] };
|
|
205
|
+
try {
|
|
206
|
+
this.setPointerCapture?.(e.pointerId);
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
/* synthetic events */
|
|
210
|
+
}
|
|
211
|
+
this.setAttribute('data-dragging', '');
|
|
212
|
+
this.emit('drag-start', { x: this._x, y: this._y });
|
|
213
|
+
}
|
|
214
|
+
move(e) {
|
|
215
|
+
const d = this._drag;
|
|
216
|
+
if (!d || e.pointerId !== d.id)
|
|
217
|
+
return;
|
|
218
|
+
const axis = this.axis();
|
|
219
|
+
let x = axis === 'y' ? d.ox : d.ox + e.clientX - d.px;
|
|
220
|
+
let y = axis === 'x' ? d.oy : d.oy + e.clientY - d.py;
|
|
221
|
+
const b = this.limits();
|
|
222
|
+
if (b) {
|
|
223
|
+
const band = (v, lo, hi, dim) => (v < lo ? lo + spring.rubberBand(v - lo, dim) : v > hi ? hi + spring.rubberBand(v - hi, dim) : v);
|
|
224
|
+
x = band(x, b.minX, b.maxX, 200);
|
|
225
|
+
y = band(y, b.minY, b.maxY, 200);
|
|
226
|
+
}
|
|
227
|
+
this._x = x;
|
|
228
|
+
this._y = y;
|
|
229
|
+
d.samples.push([e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]);
|
|
230
|
+
if (d.samples.length > 6)
|
|
231
|
+
d.samples.shift();
|
|
232
|
+
this.render();
|
|
233
|
+
this.emit('drag', { x, y });
|
|
234
|
+
}
|
|
235
|
+
velocity() {
|
|
236
|
+
const s = this._drag?.samples || [];
|
|
237
|
+
if (s.length < 2)
|
|
238
|
+
return [0, 0];
|
|
239
|
+
const a = s[0];
|
|
240
|
+
const b = s[s.length - 1];
|
|
241
|
+
const dt = (b[2] - a[2]) / 1000;
|
|
242
|
+
if (dt <= 0 || dt > 0.3)
|
|
243
|
+
return [0, 0];
|
|
244
|
+
return [(b[0] - a[0]) / dt, (b[1] - a[1]) / dt];
|
|
245
|
+
}
|
|
246
|
+
end(e) {
|
|
247
|
+
const d = this._drag;
|
|
248
|
+
if (!d || e.pointerId !== d.id)
|
|
249
|
+
return;
|
|
250
|
+
let [vx, vy] = this.velocity();
|
|
251
|
+
const axis = this.axis();
|
|
252
|
+
if (axis === 'y')
|
|
253
|
+
vx = 0;
|
|
254
|
+
if (axis === 'x')
|
|
255
|
+
vy = 0;
|
|
256
|
+
this._drag = null;
|
|
257
|
+
this.removeAttribute('data-dragging');
|
|
258
|
+
let tx = this._x;
|
|
259
|
+
let ty = this._y;
|
|
260
|
+
if (this.flag('spring-back')) {
|
|
261
|
+
tx = 0;
|
|
262
|
+
ty = 0;
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
if (this.flag('inertia') && !this.reduced) {
|
|
266
|
+
tx = spring.projectInertia(tx, vx);
|
|
267
|
+
ty = spring.projectInertia(ty, vy);
|
|
268
|
+
}
|
|
269
|
+
[tx, ty] = this.constrain(tx, ty);
|
|
270
|
+
}
|
|
271
|
+
this.emit('drag-end', { x: tx, y: ty, vx, vy });
|
|
272
|
+
this.go(tx, ty, vx, vy);
|
|
273
|
+
}
|
|
274
|
+
constrain(x, y) {
|
|
275
|
+
const snap = parseSnap(this.str('snap'));
|
|
276
|
+
let tx = spring.snapTo(x, snap);
|
|
277
|
+
let ty = spring.snapTo(y, snap);
|
|
278
|
+
const b = this.limits();
|
|
279
|
+
if (b) {
|
|
280
|
+
tx = base.clamp(tx, b.minX, Math.max(b.minX, b.maxX));
|
|
281
|
+
ty = base.clamp(ty, b.minY, Math.max(b.minY, b.maxY));
|
|
282
|
+
}
|
|
283
|
+
const axis = this.axis();
|
|
284
|
+
return [axis === 'y' ? 0 : tx, axis === 'x' ? 0 : ty];
|
|
285
|
+
}
|
|
286
|
+
go(x, y, vx = 0, vy = 0) {
|
|
287
|
+
this.setAttribute('data-moving', '');
|
|
288
|
+
this._sx.set(x, vx);
|
|
289
|
+
this._sy.set(y, vy);
|
|
290
|
+
}
|
|
291
|
+
key(e) {
|
|
292
|
+
if (this.flag('disabled'))
|
|
293
|
+
return;
|
|
294
|
+
const step = this.num('step', 16);
|
|
295
|
+
const snap = parseSnap(this.str('snap'));
|
|
296
|
+
const s = typeof snap === 'number' ? snap : step;
|
|
297
|
+
const map = { ArrowLeft: [-s, 0], ArrowRight: [s, 0], ArrowUp: [0, -s], ArrowDown: [0, s] };
|
|
298
|
+
if (e.key === 'Home' || e.key === 'Escape') {
|
|
299
|
+
e.preventDefault();
|
|
300
|
+
this.reset();
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const m = map[e.key];
|
|
304
|
+
if (!m)
|
|
305
|
+
return;
|
|
306
|
+
e.preventDefault();
|
|
307
|
+
const [tx, ty] = this.flag('spring-back') ? [this._sx.target + m[0], this._sy.target + m[1]] : this.constrain(this._sx.target + m[0], this._sy.target + m[1]);
|
|
308
|
+
this.go(tx, ty);
|
|
309
|
+
}
|
|
310
|
+
moveTo(x, y, animate = true) {
|
|
311
|
+
if (!animate) {
|
|
312
|
+
this._sx.jump(x);
|
|
313
|
+
this._sy.jump(y);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
this.go(x, y);
|
|
317
|
+
}
|
|
318
|
+
reset() {
|
|
319
|
+
this.go(0, 0);
|
|
320
|
+
}
|
|
321
|
+
}, { id: 'draggable', text: css$1 });
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
var css = "usa-overscroll{display:block;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}usa-overscroll[axis=\"x\"]{overflow-y:hidden}usa-overscroll>*{transform:translate3d(0,var(--usa-overscroll,0px),0)}usa-overscroll[axis=\"x\"]>*{transform:translate3d(var(--usa-overscroll,0px),0,0)}usa-overscroll[data-stretched]>*{will-change:transform}";
|
|
325
|
+
|
|
326
|
+
function defineOverscroll(tag = 'usa-overscroll') {
|
|
327
|
+
return base.defineElement(tag, (Base) => class UsaOverscroll extends Base {
|
|
328
|
+
constructor() {
|
|
329
|
+
super(...arguments);
|
|
330
|
+
this._off = 0;
|
|
331
|
+
}
|
|
332
|
+
static get observedAttributes() {
|
|
333
|
+
return ['axis', 'disabled'];
|
|
334
|
+
}
|
|
335
|
+
get offset() {
|
|
336
|
+
return this._off;
|
|
337
|
+
}
|
|
338
|
+
set(v) {
|
|
339
|
+
this._off = v;
|
|
340
|
+
this.style.setProperty('--usa-overscroll', `${v}px`);
|
|
341
|
+
this.toggleAttribute('data-stretched', Math.abs(v) > 0.5);
|
|
342
|
+
}
|
|
343
|
+
edge(delta) {
|
|
344
|
+
const x = this.str('axis', 'y') === 'x';
|
|
345
|
+
const pos = x ? this.scrollLeft : this.scrollTop;
|
|
346
|
+
const max = (x ? this.scrollWidth - this.clientWidth : this.scrollHeight - this.clientHeight) - 1;
|
|
347
|
+
return (delta < 0 && pos <= 0) || (delta > 0 && pos >= max);
|
|
348
|
+
}
|
|
349
|
+
stretch(raw) {
|
|
350
|
+
const max = this.num('max', 120);
|
|
351
|
+
this.set(Math.max(-max, Math.min(max, spring.rubberBand(raw, max * 2.5))));
|
|
352
|
+
}
|
|
353
|
+
mount() {
|
|
354
|
+
this._spring = spring.createSpring({ spring: this.str('preset', 'default'), onUpdate: (v) => this.set(v) });
|
|
355
|
+
const x = this.str('axis', 'y') === 'x';
|
|
356
|
+
const off = () => this.flag('disabled') || this.reduced;
|
|
357
|
+
// Wheel / trackpad: accumulate past the edge, spring back when it stops.
|
|
358
|
+
let pull = 0;
|
|
359
|
+
let timer;
|
|
360
|
+
this.listen(this, 'wheel', (e) => {
|
|
361
|
+
const d = x ? e.deltaX || e.deltaY : e.deltaY;
|
|
362
|
+
if (off() || !d || !this.edge(d))
|
|
363
|
+
return;
|
|
364
|
+
this._spring.stop();
|
|
365
|
+
pull -= d;
|
|
366
|
+
this.stretch(pull);
|
|
367
|
+
clearTimeout(timer);
|
|
368
|
+
timer = setTimeout(() => {
|
|
369
|
+
pull = 0;
|
|
370
|
+
this._spring.jump(this._off);
|
|
371
|
+
this._spring.set(0);
|
|
372
|
+
}, 140);
|
|
373
|
+
}, { passive: true });
|
|
374
|
+
this.onCleanup(() => clearTimeout(timer));
|
|
375
|
+
// Touch: rubber-band while the finger pulls past the edge.
|
|
376
|
+
let start = 0;
|
|
377
|
+
let active = false;
|
|
378
|
+
this.listen(this, 'touchstart', (e) => {
|
|
379
|
+
if (off())
|
|
380
|
+
return;
|
|
381
|
+
const t = e.touches[0];
|
|
382
|
+
start = x ? t.clientX : t.clientY;
|
|
383
|
+
active = false;
|
|
384
|
+
this._spring.stop();
|
|
385
|
+
}, { passive: true });
|
|
386
|
+
this.listen(this, 'touchmove', (e) => {
|
|
387
|
+
if (off())
|
|
388
|
+
return;
|
|
389
|
+
const t = e.touches[0];
|
|
390
|
+
const dist = (x ? t.clientX : t.clientY) - start;
|
|
391
|
+
if (!active && dist !== 0 && this.edge(-dist))
|
|
392
|
+
active = true;
|
|
393
|
+
if (!active)
|
|
394
|
+
return;
|
|
395
|
+
if (e.cancelable)
|
|
396
|
+
e.preventDefault();
|
|
397
|
+
this.stretch(dist);
|
|
398
|
+
}, { passive: false });
|
|
399
|
+
const release = () => {
|
|
400
|
+
if (!active)
|
|
401
|
+
return;
|
|
402
|
+
active = false;
|
|
403
|
+
this._spring.jump(this._off);
|
|
404
|
+
this._spring.set(0);
|
|
405
|
+
};
|
|
406
|
+
this.listen(this, 'touchend', release);
|
|
407
|
+
this.listen(this, 'touchcancel', release);
|
|
408
|
+
}
|
|
409
|
+
unmount() {
|
|
410
|
+
this._spring?.stop();
|
|
411
|
+
this.set(0);
|
|
412
|
+
}
|
|
413
|
+
}, { id: 'overscroll', text: css });
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* motionary/components/physics — spring & bounce physics (v2.3).
|
|
418
|
+
* `<usa-spring>` (bounce-in, pop, drop, jelly, rubber-band), `<usa-draggable>`
|
|
419
|
+
* (spring-back, inertia, snap) and `<usa-overscroll>` (elastic edges), plus
|
|
420
|
+
* the spring core: `spring()`, `springEasing()`, `createSpring()`,
|
|
421
|
+
* `SPRING_PRESETS`, `projectInertia()`, `snapTo()`, `rubberBand()`.
|
|
422
|
+
*/
|
|
423
|
+
/** Register every component of this category under its default tag. */
|
|
424
|
+
function definePhysicsComponents() {
|
|
425
|
+
defineSpring();
|
|
426
|
+
defineDraggable();
|
|
427
|
+
defineOverscroll();
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
exports.SPRING_PRESETS = spring.SPRING_PRESETS;
|
|
431
|
+
exports.createSpring = spring.createSpring;
|
|
432
|
+
exports.linearEasing = spring.linearEasing;
|
|
433
|
+
exports.projectInertia = spring.projectInertia;
|
|
434
|
+
exports.resolveSpring = spring.resolveSpring;
|
|
435
|
+
exports.rubberBand = spring.rubberBand;
|
|
436
|
+
exports.snapTo = spring.snapTo;
|
|
437
|
+
exports.spring = spring.spring;
|
|
438
|
+
exports.springEasing = spring.springEasing;
|
|
439
|
+
exports.springSamples = spring.springSamples;
|
|
440
|
+
exports.stepSpring = spring.stepSpring;
|
|
441
|
+
exports.supportsLinearEasing = spring.supportsLinearEasing;
|
|
442
|
+
exports.SPRING_EFFECTS = SPRING_EFFECTS;
|
|
443
|
+
exports.defineDraggable = defineDraggable;
|
|
444
|
+
exports.defineOverscroll = defineOverscroll;
|
|
445
|
+
exports.definePhysicsComponents = definePhysicsComponents;
|
|
446
|
+
exports.defineSpring = defineSpring;
|
|
447
|
+
exports.springEffectKeyframes = springEffectKeyframes;
|
|
448
|
+
//# sourceMappingURL=physics.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics.cjs","sources":["../../src/components/physics/spring-effect.ts","../../src/components/physics/draggable.ts","../../src/components/physics/overscroll.ts","../../src/components/physics/index.ts"],"sourcesContent":["import { defineElement, type UsaElement } from '../base';\nimport { springEasing, type SpringInput } from './spring';\nimport css from './spring-effect.css?raw';\n\nexport const SPRING_EFFECTS = ['bounce-in', 'pop', 'drop', 'jelly', 'rubber-band'] as const;\nexport type SpringEffect = (typeof SPRING_EFFECTS)[number];\n\n/** Entrance effects start hidden; attention effects (jelly, rubber-band) play on visible content. */\nconst ENTRANCE = new Set<string>(['bounce-in', 'pop', 'drop']);\n\n/** Keyframes of a spring effect (entrances use spring timing, attention effects fixed frames). */\nexport function springEffectKeyframes(effect: string, reduced = false): Keyframe[] {\n if (reduced) return ENTRANCE.has(effect) ? [{ opacity: 0 }, { opacity: 1 }] : [{ opacity: 1 }, { opacity: 1 }];\n switch (effect) {\n case 'pop':\n return [{ opacity: 0, transform: 'scale(0.5)' }, { opacity: 1, transform: 'scale(1)' }];\n case 'drop':\n return [{ opacity: 0, transform: 'translate3d(0, -120%, 0)' }, { opacity: 1, transform: 'translate3d(0, 0, 0)' }];\n case 'jelly':\n return [\n { transform: 'scale3d(1, 1, 1)' },\n { transform: 'scale3d(1.25, 0.75, 1)', offset: 0.3 },\n { transform: 'scale3d(0.75, 1.25, 1)', offset: 0.4 },\n { transform: 'scale3d(1.15, 0.85, 1)', offset: 0.5 },\n { transform: 'scale3d(0.95, 1.05, 1)', offset: 0.65 },\n { transform: 'scale3d(1.05, 0.95, 1)', offset: 0.75 },\n { transform: 'scale3d(1, 1, 1)' },\n ];\n case 'rubber-band':\n return [\n { transform: 'scale3d(1, 1, 1)' },\n { transform: 'scale3d(1.3, 0.7, 1)', offset: 0.3 },\n { transform: 'scale3d(0.8, 1.2, 1)', offset: 0.45 },\n { transform: 'scale3d(1.1, 0.9, 1)', offset: 0.6 },\n { transform: 'scale3d(0.97, 1.03, 1)', offset: 0.8 },\n { transform: 'scale3d(1, 1, 1)' },\n ];\n default:\n return [{ opacity: 0, transform: 'scale(0.3)' }, { opacity: 1, transform: 'scale(1)' }];\n }\n}\n\nconst DEFAULT_PRESET: Record<string, string> = { 'bounce-in': 'bouncy', pop: 'wobbly', drop: 'bouncy' };\n\n/**\n * `<usa-spring>` — spring / bounce effects on its content.\n *\n * Attributes: `effect` (`bounce-in` default, `pop`, `drop`, `jelly`,\n * `rubber-band`), `trigger` (`view` default, `hover`, `click`, `manual`),\n * `preset` (`gentle`, `wobbly`, `stiff`, `bouncy`, …) or `stiffness` /\n * `damping` / `mass`, `delay` (ms), `duration` (ms, attention effects; 900),\n * `repeat` (replay every time it re-enters the view), `block`.\n * Events: `usa:complete`. Reduced motion: entrances fade, attention effects do nothing.\n */\nexport interface UsaSpringElement extends UsaElement {\n effect: string;\n play(): Promise<void>;\n reset(): void;\n}\n\nexport function defineSpring(tag = 'usa-spring'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaSpring extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'trigger', 'repeat'];\n }\n\n private _anim: Animation | null = null;\n\n get effect(): string {\n return this.str('effect', 'bounce-in');\n }\n set effect(v: string) {\n this.setAttribute('effect', v);\n }\n\n private config(): SpringInput {\n if (this.hasAttribute('stiffness') || this.hasAttribute('damping') || this.hasAttribute('mass'))\n return { stiffness: this.num('stiffness', 170), damping: this.num('damping', 26), mass: this.num('mass', 1) };\n return this.str('preset', DEFAULT_PRESET[this.effect] || 'wobbly');\n }\n\n mount(): void {\n const trigger = this.str('trigger', 'view');\n const entrance = ENTRANCE.has(this.effect);\n if (trigger === 'view') {\n if (entrance) this.setAttribute('data-state', 'hidden');\n this.inView((visible) => {\n if (visible) this.play();\n else if (this.flag('repeat') && entrance) this.reset();\n }, { threshold: 0.15 });\n } else {\n if (trigger === 'hover') this.listen(this, 'pointerenter', () => this.play());\n if (trigger === 'click') {\n this.listen(this, 'click', () => this.play());\n this.listen(this, 'keydown', (e: KeyboardEvent) => (e.key === 'Enter' || e.key === ' ') && !e.repeat && this.play());\n }\n }\n }\n\n unmount(): void {\n this._anim?.cancel();\n this._anim = null;\n }\n\n reset(): void {\n this._anim?.cancel();\n this._anim = null;\n if (ENTRANCE.has(this.effect)) this.setAttribute('data-state', 'hidden');\n }\n\n async play(): Promise<void> {\n const effect = this.effect;\n const reduced = this.reduced;\n this._anim?.cancel();\n this.setAttribute('data-state', 'playing');\n const frames = springEffectKeyframes(effect, reduced);\n const timing: KeyframeAnimationOptions = ENTRANCE.has(effect) && !reduced\n ? springEasing(this.config())\n : { duration: reduced ? 250 : this.num('duration', 900), easing: 'ease-out' };\n const a = this.motion(this, frames, { ...timing, delay: this.num('delay', 0), fill: 'backwards' });\n this._anim = a;\n if (a) {\n try {\n await a.finished;\n } catch {\n return;\n }\n if (this._anim !== a) return;\n }\n this._anim = null;\n this.setAttribute('data-state', 'done');\n this.emit('complete', { effect });\n }\n },\n { id: 'spring', text: css }\n );\n}\n","import { defineElement, clamp, type UsaElement } from '../base';\nimport { createSpring, projectInertia, snapTo, rubberBand, type SpringValue } from './spring';\nimport css from './draggable.css?raw';\n\n/**\n * `<usa-draggable>` — drag its content with the pointer (mouse, touch, pen)\n * or the arrow keys; physics on release.\n *\n * Attributes: `axis` (`both` default, `x`, `y`), `spring-back` (return to\n * the origin with a spring), `inertia` (keep gliding after a flick),\n * `snap` (grid size like `80`, or points like `0,120,240`), `bounds`\n * (`parent` = stay inside the parent box, rubber-banding past its edges),\n * `preset` (spring, default `wobbly`), `step` (arrow-key step, px, 16),\n * `disabled`. Methods: `moveTo(x, y, animate?)`, `reset()`. Events:\n * `usa:drag-start`, `usa:drag-end` (`{ x, y, vx, vy }`), `usa:settle`.\n * Reduced motion: positions change instantly (no spring or inertia).\n */\nexport interface UsaDraggableElement extends UsaElement {\n readonly x: number;\n readonly y: number;\n readonly dragging: boolean;\n moveTo(x: number, y: number, animate?: boolean): void;\n reset(): void;\n}\n\nconst parseSnap = (s: string): number | number[] | null => {\n if (!s.trim()) return null;\n const parts = s.split(',').map((p) => Number(p.trim())).filter((n) => Number.isFinite(n));\n if (!parts.length) return null;\n return s.includes(',') ? parts : parts[0];\n};\n\nexport function defineDraggable(tag = 'usa-draggable'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDraggable extends Base {\n static get observedAttributes(): string[] {\n return ['axis', 'disabled', 'preset'];\n }\n\n private _x = 0;\n private _y = 0;\n private _sx!: SpringValue;\n private _sy!: SpringValue;\n private _drag: { id: number; px: number; py: number; ox: number; oy: number; samples: [number, number, number][] } | null = null;\n\n get x(): number {\n return this._x;\n }\n get y(): number {\n return this._y;\n }\n get dragging(): boolean {\n return !!this._drag;\n }\n\n private render(): void {\n this.style.transform = `translate3d(${this._x}px, ${this._y}px, 0)`;\n this.style.setProperty('--usa-drag-x', `${this._x}px`);\n this.style.setProperty('--usa-drag-y', `${this._y}px`);\n }\n\n private axis(): string {\n return this.str('axis', 'both');\n }\n\n /** Bounds relative to the origin, from the parent box. */\n private limits(): { minX: number; maxX: number; minY: number; maxY: number } | null {\n if (this.str('bounds') !== 'parent' || !this.parentElement) return null;\n const p = this.parentElement.getBoundingClientRect();\n const r = this.getBoundingClientRect();\n const ox = r.left - this._x;\n const oy = r.top - this._y;\n return { minX: p.left - ox, maxX: p.right - ox - r.width, minY: p.top - oy, maxY: p.bottom - oy - r.height };\n }\n\n mount(): void {\n let settled = 0;\n const rest = () => {\n if (++settled >= 2) {\n settled = 0;\n this.removeAttribute('data-moving');\n this.emit('settle', { x: this._x, y: this._y });\n }\n };\n const spring = this.str('preset', 'wobbly');\n this._sx = createSpring({ value: this._x, spring, onUpdate: (v) => ((this._x = v), this.render()), onRest: rest });\n this._sy = createSpring({ value: this._y, spring, onUpdate: (v) => ((this._y = v), this.render()), onRest: rest });\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('aria-roledescription', 'draggable');\n this.listen(this, 'pointerdown', (e: PointerEvent) => this.start(e));\n this.listen(this, 'pointermove', (e: PointerEvent) => this.move(e));\n this.listen(this, 'pointerup', (e: PointerEvent) => this.end(e));\n this.listen(this, 'pointercancel', (e: PointerEvent) => this.end(e));\n this.listen(this, 'keydown', (e: KeyboardEvent) => this.key(e));\n this.render();\n }\n\n unmount(): void {\n this._sx?.stop();\n this._sy?.stop();\n this._drag = null;\n }\n\n private start(e: PointerEvent): void {\n if (this.flag('disabled') || (e.pointerType === 'mouse' && e.button !== 0)) return;\n this._sx.stop();\n this._sy.stop();\n this._drag = { id: e.pointerId, px: e.clientX, py: e.clientY, ox: this._x, oy: this._y, samples: [[e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]] };\n try {\n this.setPointerCapture?.(e.pointerId);\n } catch {\n /* synthetic events */\n }\n this.setAttribute('data-dragging', '');\n this.emit('drag-start', { x: this._x, y: this._y });\n }\n\n private move(e: PointerEvent): void {\n const d = this._drag;\n if (!d || e.pointerId !== d.id) return;\n const axis = this.axis();\n let x = axis === 'y' ? d.ox : d.ox + e.clientX - d.px;\n let y = axis === 'x' ? d.oy : d.oy + e.clientY - d.py;\n const b = this.limits();\n if (b) {\n const band = (v: number, lo: number, hi: number, dim: number) => (v < lo ? lo + rubberBand(v - lo, dim) : v > hi ? hi + rubberBand(v - hi, dim) : v);\n x = band(x, b.minX, b.maxX, 200);\n y = band(y, b.minY, b.maxY, 200);\n }\n this._x = x;\n this._y = y;\n d.samples.push([e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]);\n if (d.samples.length > 6) d.samples.shift();\n this.render();\n this.emit('drag', { x, y });\n }\n\n private velocity(): [number, number] {\n const s = this._drag?.samples || [];\n if (s.length < 2) return [0, 0];\n const a = s[0];\n const b = s[s.length - 1];\n const dt = (b[2] - a[2]) / 1000;\n if (dt <= 0 || dt > 0.3) return [0, 0];\n return [(b[0] - a[0]) / dt, (b[1] - a[1]) / dt];\n }\n\n private end(e: PointerEvent): void {\n const d = this._drag;\n if (!d || e.pointerId !== d.id) return;\n let [vx, vy] = this.velocity();\n const axis = this.axis();\n if (axis === 'y') vx = 0;\n if (axis === 'x') vy = 0;\n this._drag = null;\n this.removeAttribute('data-dragging');\n let tx = this._x;\n let ty = this._y;\n if (this.flag('spring-back')) {\n tx = 0;\n ty = 0;\n } else {\n if (this.flag('inertia') && !this.reduced) {\n tx = projectInertia(tx, vx);\n ty = projectInertia(ty, vy);\n }\n [tx, ty] = this.constrain(tx, ty);\n }\n this.emit('drag-end', { x: tx, y: ty, vx, vy });\n this.go(tx, ty, vx, vy);\n }\n\n private constrain(x: number, y: number): [number, number] {\n const snap = parseSnap(this.str('snap'));\n let tx = snapTo(x, snap);\n let ty = snapTo(y, snap);\n const b = this.limits();\n if (b) {\n tx = clamp(tx, b.minX, Math.max(b.minX, b.maxX));\n ty = clamp(ty, b.minY, Math.max(b.minY, b.maxY));\n }\n const axis = this.axis();\n return [axis === 'y' ? 0 : tx, axis === 'x' ? 0 : ty];\n }\n\n private go(x: number, y: number, vx = 0, vy = 0): void {\n this.setAttribute('data-moving', '');\n this._sx.set(x, vx);\n this._sy.set(y, vy);\n }\n\n private key(e: KeyboardEvent): void {\n if (this.flag('disabled')) return;\n const step = this.num('step', 16);\n const snap = parseSnap(this.str('snap'));\n const s = typeof snap === 'number' ? snap : step;\n const map: Record<string, [number, number]> = { ArrowLeft: [-s, 0], ArrowRight: [s, 0], ArrowUp: [0, -s], ArrowDown: [0, s] };\n if (e.key === 'Home' || e.key === 'Escape') {\n e.preventDefault();\n this.reset();\n return;\n }\n const m = map[e.key];\n if (!m) return;\n e.preventDefault();\n const [tx, ty] = this.flag('spring-back') ? [this._sx.target + m[0], this._sy.target + m[1]] : this.constrain(this._sx.target + m[0], this._sy.target + m[1]);\n this.go(tx, ty);\n }\n\n moveTo(x: number, y: number, animate = true): void {\n if (!animate) {\n this._sx.jump(x);\n this._sy.jump(y);\n return;\n }\n this.go(x, y);\n }\n\n reset(): void {\n this.go(0, 0);\n }\n },\n { id: 'draggable', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, rubberBand, type SpringValue } from './spring';\nimport css from './overscroll.css?raw';\n\n/**\n * `<usa-overscroll>` — an elastic scroll container: pulling past the top or\n * bottom (touch, trackpad or wheel) stretches the content with iOS-style\n * rubber-band resistance and it springs back on release.\n *\n * Attributes: `axis` (`y` default, `x`), `max` (largest stretch in px, 120),\n * `preset` (spring, default `default`), `disabled`. CSS variable\n * `--usa-overscroll` holds the current offset. Reduced motion: no stretch\n * (a plain scroll container with `overscroll-behavior: contain`).\n */\nexport interface UsaOverscrollElement extends UsaElement {\n /** Current stretch in px (negative = pulled past the end). */\n readonly offset: number;\n}\n\nexport function defineOverscroll(tag = 'usa-overscroll'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaOverscroll extends Base {\n static get observedAttributes(): string[] {\n return ['axis', 'disabled'];\n }\n\n private _off = 0;\n private _spring!: SpringValue;\n\n get offset(): number {\n return this._off;\n }\n\n private set(v: number): void {\n this._off = v;\n this.style.setProperty('--usa-overscroll', `${v}px`);\n this.toggleAttribute('data-stretched', Math.abs(v) > 0.5);\n }\n\n private edge(delta: number): boolean {\n const x = this.str('axis', 'y') === 'x';\n const pos = x ? this.scrollLeft : this.scrollTop;\n const max = (x ? this.scrollWidth - this.clientWidth : this.scrollHeight - this.clientHeight) - 1;\n return (delta < 0 && pos <= 0) || (delta > 0 && pos >= max);\n }\n\n private stretch(raw: number): void {\n const max = this.num('max', 120);\n this.set(Math.max(-max, Math.min(max, rubberBand(raw, max * 2.5))));\n }\n\n mount(): void {\n this._spring = createSpring({ spring: this.str('preset', 'default'), onUpdate: (v) => this.set(v) });\n const x = this.str('axis', 'y') === 'x';\n const off = () => this.flag('disabled') || this.reduced;\n // Wheel / trackpad: accumulate past the edge, spring back when it stops.\n let pull = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n this.listen(this, 'wheel', (e: WheelEvent) => {\n const d = x ? e.deltaX || e.deltaY : e.deltaY;\n if (off() || !d || !this.edge(d)) return;\n this._spring.stop();\n pull -= d;\n this.stretch(pull);\n clearTimeout(timer);\n timer = setTimeout(() => {\n pull = 0;\n this._spring.jump(this._off);\n this._spring.set(0);\n }, 140);\n }, { passive: true });\n this.onCleanup(() => clearTimeout(timer));\n // Touch: rubber-band while the finger pulls past the edge.\n let start = 0;\n let active = false;\n this.listen(this, 'touchstart', (e: TouchEvent) => {\n if (off()) return;\n const t = e.touches[0];\n start = x ? t.clientX : t.clientY;\n active = false;\n this._spring.stop();\n }, { passive: true });\n this.listen(this, 'touchmove', (e: TouchEvent) => {\n if (off()) return;\n const t = e.touches[0];\n const dist = (x ? t.clientX : t.clientY) - start;\n if (!active && dist !== 0 && this.edge(-dist)) active = true;\n if (!active) return;\n if (e.cancelable) e.preventDefault();\n this.stretch(dist);\n }, { passive: false });\n const release = () => {\n if (!active) return;\n active = false;\n this._spring.jump(this._off);\n this._spring.set(0);\n };\n this.listen(this, 'touchend', release);\n this.listen(this, 'touchcancel', release);\n }\n\n unmount(): void {\n this._spring?.stop();\n this.set(0);\n }\n },\n { id: 'overscroll', text: css }\n );\n}\n","/**\n * motionary/components/physics — spring & bounce physics (v2.3).\n * `<usa-spring>` (bounce-in, pop, drop, jelly, rubber-band), `<usa-draggable>`\n * (spring-back, inertia, snap) and `<usa-overscroll>` (elastic edges), plus\n * the spring core: `spring()`, `springEasing()`, `createSpring()`,\n * `SPRING_PRESETS`, `projectInertia()`, `snapTo()`, `rubberBand()`.\n */\nimport { defineSpring, type UsaSpringElement } from './spring-effect';\nimport { defineDraggable, type UsaDraggableElement } from './draggable';\nimport { defineOverscroll, type UsaOverscrollElement } from './overscroll';\n\nexport { defineSpring, defineDraggable, defineOverscroll };\nexport { SPRING_EFFECTS, springEffectKeyframes } from './spring-effect';\nexport type { SpringEffect } from './spring-effect';\nexport {\n SPRING_PRESETS,\n resolveSpring,\n stepSpring,\n springSamples,\n springEasing,\n linearEasing,\n supportsLinearEasing,\n spring,\n createSpring,\n projectInertia,\n snapTo,\n rubberBand,\n} from './spring';\nexport type { SpringConfig, SpringPreset, SpringInput, SpringValue, SpringValueOptions } from './spring';\nexport type { UsaSpringElement, UsaDraggableElement, UsaOverscrollElement };\n\n/** Register every component of this category under its default tag. */\nexport function definePhysicsComponents(): void {\n defineSpring();\n defineDraggable();\n defineOverscroll();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-spring': UsaSpringElement;\n 'usa-draggable': UsaDraggableElement;\n 'usa-overscroll': UsaOverscrollElement;\n }\n}\n"],"names":["defineElement","springEasing","css","spring","createSpring","rubberBand","projectInertia","snapTo","clamp"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/* motionary/components/physics */
|
|
2
|
+
.usa-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
|
|
3
|
+
usa-draggable{display:inline-block;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;will-change:transform;-webkit-tap-highlight-color:transparent}usa-draggable[axis="x"]{touch-action:pan-y}usa-draggable[axis="y"]{touch-action:pan-x}usa-draggable[block]{display:block}usa-draggable[data-dragging]{cursor:grabbing}usa-draggable[disabled]{cursor:default}usa-draggable:focus-visible{outline:2px solid var(--usa-accent,#7c5cff);outline-offset:3px}
|
|
4
|
+
usa-overscroll{display:block;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}usa-overscroll[axis="x"]{overflow-y:hidden}usa-overscroll>*{transform:translate3d(0,var(--usa-overscroll,0px),0)}usa-overscroll[axis="x"]>*{transform:translate3d(var(--usa-overscroll,0px),0,0)}usa-overscroll[data-stretched]>*{will-change:transform}
|
|
5
|
+
usa-spring{display:inline-block;transform-origin:50% 70%}usa-spring[block]{display:block}usa-spring[effect="drop"]{transform-origin:50% 100%}usa-spring[data-state="hidden"]{opacity:0}usa-spring[trigger="click"],usa-spring[trigger="hover"]{cursor:pointer;-webkit-tap-highlight-color:transparent}
|