use-scroll-animate 4.6.0 → 4.8.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +1 -1
  3. package/README_ja.md +1 -1
  4. package/README_zh.md +1 -1
  5. package/dist/chunks/{index-tags-BQh_uGqH.cjs → index-tags-CIRY2KnU.cjs} +2 -2
  6. package/dist/chunks/{index-tags-BQh_uGqH.cjs.map → index-tags-CIRY2KnU.cjs.map} +1 -1
  7. package/dist/chunks/{index-tags-43Xtd01A.js → index-tags-Dh8nwXqw.js} +2 -2
  8. package/dist/chunks/{index-tags-43Xtd01A.js.map → index-tags-Dh8nwXqw.js.map} +1 -1
  9. package/dist/components/a11y.cjs +1 -1
  10. package/dist/components/a11y.d.cts +1 -1
  11. package/dist/components/a11y.d.ts +1 -1
  12. package/dist/components/a11y.js +1 -1
  13. package/dist/components/angular.cjs +2 -1
  14. package/dist/components/angular.cjs.map +1 -1
  15. package/dist/components/angular.d.cts +2 -1
  16. package/dist/components/angular.d.ts +2 -1
  17. package/dist/components/angular.js +2 -1
  18. package/dist/components/angular.js.map +1 -1
  19. package/dist/components/bridge.cjs +154 -0
  20. package/dist/components/bridge.cjs.map +1 -0
  21. package/dist/components/bridge.d.cts +63 -0
  22. package/dist/components/bridge.d.ts +63 -0
  23. package/dist/components/bridge.js +147 -0
  24. package/dist/components/bridge.js.map +1 -0
  25. package/dist/components/jsx.d.cts +1 -1
  26. package/dist/components/jsx.d.ts +1 -1
  27. package/dist/components/lazy.cjs +1 -1
  28. package/dist/components/lazy.d.cts +1 -1
  29. package/dist/components/lazy.d.ts +1 -1
  30. package/dist/components/lazy.js +1 -1
  31. package/dist/components/lite.cjs +333 -10
  32. package/dist/components/lite.cjs.map +1 -1
  33. package/dist/components/lite.js +320 -11
  34. package/dist/components/lite.js.map +1 -1
  35. package/dist/components/perf.cjs +1 -1
  36. package/dist/components/perf.d.cts +1 -1
  37. package/dist/components/perf.d.ts +1 -1
  38. package/dist/components/perf.js +1 -1
  39. package/dist/components/react.cjs +1 -1
  40. package/dist/components/react.js +1 -1
  41. package/dist/components/solid.cjs +2 -1
  42. package/dist/components/solid.cjs.map +1 -1
  43. package/dist/components/solid.d.cts +2 -1
  44. package/dist/components/solid.d.ts +2 -1
  45. package/dist/components/solid.js +2 -1
  46. package/dist/components/solid.js.map +1 -1
  47. package/dist/components/svelte.cjs +2 -1
  48. package/dist/components/svelte.cjs.map +1 -1
  49. package/dist/components/svelte.d.cts +2 -1
  50. package/dist/components/svelte.d.ts +2 -1
  51. package/dist/components/svelte.js +2 -1
  52. package/dist/components/svelte.js.map +1 -1
  53. package/dist/components/vue.cjs +2 -1
  54. package/dist/components/vue.cjs.map +1 -1
  55. package/dist/components/vue.d.cts +2 -1
  56. package/dist/components/vue.d.ts +2 -1
  57. package/dist/components/vue.js +2 -1
  58. package/dist/components/vue.js.map +1 -1
  59. package/dist/components/webgl.cjs +184 -10
  60. package/dist/components/webgl.cjs.map +1 -1
  61. package/dist/components/webgl.css +1 -1
  62. package/dist/components/webgl.d.cts +59 -5
  63. package/dist/components/webgl.d.ts +59 -5
  64. package/dist/components/webgl.js +178 -12
  65. package/dist/components/webgl.js.map +1 -1
  66. package/dist/components.cjs +16 -1
  67. package/dist/components.cjs.map +1 -1
  68. package/dist/components.css +1 -1
  69. package/dist/components.d.cts +119 -6
  70. package/dist/components.d.ts +119 -6
  71. package/dist/components.js +3 -2
  72. package/dist/components.js.map +1 -1
  73. package/dist/components.umd.js +3 -2
  74. package/dist/components.umd.js.map +1 -1
  75. package/docs/ROADMAP.md +2 -2
  76. package/docs/components.md +7 -0
  77. package/docs/hybrid-apps.md +15 -0
  78. package/package.json +11 -1
package/docs/ROADMAP.md CHANGED
@@ -8,7 +8,7 @@
8
8
  - ✅ **v4.4** — 无障碍增强:每个组件提供“静态替代”与 `aria-live` 规范,新增运动敏感度分级与自动化 a11y 回归测试。
9
9
  - ✅ **v4.5** — 性能与体积:按需加载 CSS、共享 rAF 调度器、动画数量自动降级,组件整体 gzip 目标 ≤ 70KB。
10
10
  - ✅ **v4.6** — 实验室 2.0:时间线可视化编辑(关键帧轨道)、保存 / 分享预设,并可导出为 `<usa-timeline>` 标记。
11
- - **v4.7** — 原生壳集成:WinUI 3、.NET MAUI、Flutter 的官方桥接示例包,支持系统“减少动态效果”与主题自动同步。
12
- - **v4.8** — 3D 与 WebGL 扩展:基于 `glQuad()` 的粒子 / 后处理小型预设库,统一 WebGL 回退与电量 / 帧率自适应。
11
+ - ✅ **v4.7** — 原生壳集成:WinUI 3、.NET MAUI、Flutter 的官方桥接示例包,支持系统“减少动态效果”与主题自动同步。
12
+ - ✅ **v4.8** — 3D 与 WebGL 扩展:基于 `glQuad()` 的粒子 / 后处理小型预设库,统一 WebGL 回退与电量 / 帧率自适应。
13
13
  - **v4.9** — 5.0 预备:标记计划移除或重命名的 API 并输出一次性弃用警告,发布 `upgrading-5.md` 与自动迁移脚本(codemod)。
14
14
  - **v5.0** — 下一代主版本:仅支持现代浏览器(原生 View Transitions / Scroll Timeline 基线),移除 4.9 弃用的 API,统一的插件式效果注册机制。
@@ -315,6 +315,13 @@ Hybrid / desktop hosts (MAUI, Flutter WebView, Electron, Tauri): [hybrid-apps.md
315
315
 
316
316
  **Deprecated in 3.9, removed in 4.0.0:** `sequence()`, `connectedAnimation()`, `<usa-flip-list>` — see [upgrading-4.md](./upgrading-4.md).
317
317
 
318
+ ### v4.8 GPU particles, post-processing & adaptive quality (`components/webgl`)
319
+
320
+ - **Particle presets** for `<usa-shader preset="…">`: `snow`, `fireflies`, `stars` (warp starfield), `bokeh`, `rain` — procedural in the fragment shader, no buffers or per-particle JS.
321
+ - **`<usa-post-fx>`** (`definePostFx()`), e.g. `<usa-post-fx effects="vignette grain" intensity="0.6"><img …></usa-post-fx>` — chained passes `vignette` · `grain` · `chromatic` · `scanlines` · `crt` · `bloom` · `pixelate` · `duotone` · `glitch`; `postFxShader(list)` builds the same shader for your own `glQuad()`.
322
+ - **Unified fallback** — without WebGL every preset shows a still CSS rendering (`GL_FALLBACKS`, `glFallbackCss()`); post-fx images get an approximate CSS filter.
323
+ - **Adaptive quality** — every GL element measures its frame rate: after two slow seconds (< 40 fps) the drawing buffer drops to 50 % then 35 % resolution and climbs back after five good seconds; on battery saver (Battery Status API ≤ 20 % and not charging, or Save-Data) it renders at ≤ 30 fps and ≤ 60 % resolution. `quality="high"` opts out; `data-quality` shows the current scale. `glGovernor()` / `watchPowerSaver()` for your own loops; `glQuad().render({ extra })` sets any float uniform, `resize(scale)` scales the buffer.
324
+
318
325
  ## Frameworks
319
326
 
320
327
  Custom elements work in every framework. Register once (e.g. in your entry file), then use the tags.
@@ -119,6 +119,21 @@ document.querySelector('usa-toggle').addEventListener('usa:change', (e) => invok
119
119
 
120
120
  Tauri uses WebView2 on Windows, WKWebView on macOS / iOS and WebKitGTK on Linux. WebKitGTK may disable WebGL on some drivers: WebGL components then set `data-fallback="webgl"` and show their CSS fallback.
121
121
 
122
+ ## Native shell bridge (4.7)
123
+
124
+ `use-scroll-animate/components/bridge` keeps the page in sync with the host app's **system settings** — reduce motion, light / dark / high-contrast theme, accent color — on WinUI 3 / WPF (WebView2), .NET MAUI and Flutter:
125
+
126
+ ```js
127
+ import { connectNativeShell } from 'use-scroll-animate/components/bridge';
128
+ const { host } = connectNativeShell(); // 'webview2' | 'maui' | 'flutter' | 'electron' | 'tauri' | 'browser'
129
+ ```
130
+
131
+ Protocol (JSON): the page sends `{"type":"usa:ready","version":1}` and `{"type":"usa:request-settings"}`; the host answers (and re-sends on every system change) with `{"type":"usa:settings","reducedMotion":true,"theme":"dark","accent":"#0078d4","sensitivity":"gentle"}` — via `PostWebMessageAsJson` (WebView2), `window.postMessage`, or by running `window.usaNative.apply({...})`. Incoming values are validated (unknown fields and non-color accents are dropped); settings only affect presentation.
132
+
133
+ Complete samples: [examples/native](../examples/native/) — `winui3/MainWindow.xaml.cs` (`UISettings.AnimationsEnabled`, accent, high contrast), `maui/MainPage.xaml.cs` (Android animator scale, iOS Reduce Motion, Windows `UISettings`, `RequestedThemeChanged`), `flutter/lib/main.dart` (`MediaQuery.disableAnimations`, brightness, high contrast via a `UsaBridge` JavaScriptChannel).
134
+
135
+ Helpers: `detectNativeHost()`, `postToNative(msg)`, `parseNativeSettings(data)`, `applyNativeSettings(settings)`; event `usa:native-settings` on `document`.
136
+
122
137
  ## Framework wrappers
123
138
 
124
139
  | Framework | Entry | What it gives you |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "use-scroll-animate",
3
- "version": "4.6.0",
3
+ "version": "4.8.0",
4
4
  "description": "A lightweight, high-performance, dependency-free scroll animation library and animated UI components (Web Components) for the web and Windows web-view apps.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -358,6 +358,16 @@
358
358
  "default": "./dist/components/perf.cjs"
359
359
  }
360
360
  },
361
+ "./components/bridge": {
362
+ "import": {
363
+ "types": "./dist/components/bridge.d.ts",
364
+ "default": "./dist/components/bridge.js"
365
+ },
366
+ "require": {
367
+ "types": "./dist/components/bridge.d.cts",
368
+ "default": "./dist/components/bridge.cjs"
369
+ }
370
+ },
361
371
  "./components/lite": {
362
372
  "import": {
363
373
  "types": "./dist/components/lite.d.ts",