@buoy-gg/shared-ui 7.0.36 → 7.0.38
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 +33 -26
- package/floating.d.ts +1 -0
- package/floating.js +2 -0
- package/lib/commonjs/JsModal.js +16 -1
- package/lib/commonjs/JsModal.web.js +16 -1
- package/lib/commonjs/dataViewer/CyberpunkInput.js +6 -1
- package/lib/commonjs/dataViewer/LiveExplorer.js +28 -16
- package/lib/commonjs/hooks/safe-area-impl.js +1 -1
- package/lib/commonjs/icons/ReactQueryIcon.js +9 -161
- package/lib/commonjs/icons/SentryBugIcon.js +9 -171
- package/lib/commonjs/index.js +57 -6
- package/lib/commonjs/license/AccountSetup.js +56 -0
- package/lib/commonjs/license/AccountSetup.web.js +81 -0
- package/lib/commonjs/license/FeatureGate.js +10 -43
- package/lib/commonjs/license/FreeAccountPrompt.js +35 -12
- package/lib/commonjs/license/index.js +0 -6
- package/lib/commonjs/license/licenseModule.js +56 -36
- package/lib/commonjs/license/tierLimits.js +12 -63
- package/lib/commonjs/storage/devToolsStorageKeys.js +8 -1
- package/lib/commonjs/stores/BaseEventStore.js +21 -5
- package/lib/commonjs/stores/createToolStore.js +21 -3
- package/lib/commonjs/stores/floatingToolStore.js +71 -0
- package/lib/commonjs/stores/floatingToolStore.test.js +112 -0
- package/lib/commonjs/sync/toolActionRegistry.js +85 -2
- package/lib/commonjs/ui/backgrounds/README.md +52 -0
- package/lib/commonjs/ui/backgrounds/ToolBackground.js +4 -2
- package/lib/commonjs/ui/backgrounds/index.js +8 -1
- package/lib/commonjs/ui/backgrounds/registry.js +8 -0
- package/lib/commonjs/ui/backgrounds/variants/wormhole/motion.js +48 -0
- package/lib/commonjs/ui/backgrounds/variants/wormhole/textures.js +3 -0
- package/lib/commonjs/ui/backgrounds/variants/wormhole.js +133 -0
- package/lib/commonjs/ui/components/ClipboardHintBanner.js +5 -6
- package/lib/commonjs/ui/components/CompactRow.js +94 -74
- package/lib/commonjs/ui/components/DraggableHeader.js +16 -1
- package/lib/commonjs/ui/components/HeaderSearchButton.js +17 -4
- package/lib/commonjs/ui/floating/FloatingTool.js +1010 -0
- package/lib/commonjs/ui/floating/FloatingTool.web.js +591 -0
- package/lib/commonjs/ui/floating/FloatingToolHost.js +32 -0
- package/lib/commonjs/ui/floating/FloatingToolHost.web.js +28 -0
- package/lib/commonjs/ui/floating/index.js +105 -0
- package/lib/commonjs/ui/floating/index.web.js +105 -0
- package/lib/commonjs/ui/floating/onboardingConstants.js +70 -0
- package/lib/commonjs/ui/floating/onboardingConstants.web.js +34 -0
- package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +3 -1
- package/lib/commonjs/ui/index.js +118 -2
- package/lib/commonjs/ui/night/nightTheme.js +10 -0
- package/lib/commonjs/ui/night/primitives.js +22 -5
- package/lib/commonjs/ui/otto/OttoSceneView.js +69 -0
- package/lib/commonjs/ui/otto/index.js +22 -0
- package/lib/commonjs/ui/otto/ottoEngine.js +10 -7
- package/lib/commonjs/ui/otto/ottoScenes.js +949 -0
- package/lib/commonjs/utils/minimalSuperJSON.js +13 -3
- package/lib/module/JsModal.js +16 -1
- package/lib/module/JsModal.web.js +16 -1
- package/lib/module/dataViewer/CyberpunkInput.js +6 -1
- package/lib/module/dataViewer/LiveExplorer.js +28 -16
- package/lib/module/hooks/safe-area-impl.js +1 -1
- package/lib/module/icons/ReactQueryIcon.js +9 -161
- package/lib/module/icons/SentryBugIcon.js +9 -171
- package/lib/module/index.js +4 -1
- package/lib/module/license/AccountSetup.js +52 -0
- package/lib/module/license/AccountSetup.web.js +77 -0
- package/lib/module/license/FeatureGate.js +10 -43
- package/lib/module/license/FreeAccountPrompt.js +35 -12
- package/lib/module/license/index.js +1 -1
- package/lib/module/license/licenseModule.js +50 -35
- package/lib/module/license/tierLimits.js +13 -63
- package/lib/module/storage/devToolsStorageKeys.js +8 -1
- package/lib/module/stores/BaseEventStore.js +21 -5
- package/lib/module/stores/createToolStore.js +21 -3
- package/lib/module/stores/floatingToolStore.js +61 -0
- package/lib/module/stores/floatingToolStore.test.js +111 -0
- package/lib/module/sync/toolActionRegistry.js +84 -2
- package/lib/module/ui/backgrounds/README.md +52 -0
- package/lib/module/ui/backgrounds/ToolBackground.js +4 -2
- package/lib/module/ui/backgrounds/index.js +2 -1
- package/lib/module/ui/backgrounds/registry.js +8 -0
- package/lib/module/ui/backgrounds/variants/wormhole/motion.js +44 -0
- package/lib/module/ui/backgrounds/variants/wormhole/textures.js +3 -0
- package/lib/module/ui/backgrounds/variants/wormhole.js +129 -0
- package/lib/module/ui/components/ClipboardHintBanner.js +5 -6
- package/lib/module/ui/components/CompactRow.js +94 -74
- package/lib/module/ui/components/DraggableHeader.js +16 -1
- package/lib/module/ui/components/HeaderSearchButton.js +17 -4
- package/lib/module/ui/floating/FloatingTool.js +1003 -0
- package/lib/module/ui/floating/FloatingTool.web.js +590 -0
- package/lib/module/ui/floating/FloatingToolHost.js +29 -0
- package/lib/module/ui/floating/FloatingToolHost.web.js +25 -0
- package/lib/module/ui/floating/index.js +6 -0
- package/lib/module/ui/floating/index.web.js +6 -0
- package/lib/module/ui/floating/onboardingConstants.js +64 -0
- package/lib/module/ui/floating/onboardingConstants.web.js +27 -0
- package/lib/module/ui/gameUI/constants/gameUIColors.js +3 -1
- package/lib/module/ui/index.js +5 -1
- package/lib/module/ui/night/nightTheme.js +10 -0
- package/lib/module/ui/night/primitives.js +22 -5
- package/lib/module/ui/otto/OttoSceneView.js +64 -0
- package/lib/module/ui/otto/index.js +3 -1
- package/lib/module/ui/otto/ottoEngine.js +10 -7
- package/lib/module/ui/otto/ottoScenes.js +942 -0
- package/lib/module/utils/minimalSuperJSON.js +13 -3
- package/lib/typescript/commonjs/JsModal.d.ts +43 -2
- package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/JsModal.web.d.ts +5 -2
- package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/LiveExplorer.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts +1 -2
- package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts.map +1 -1
- package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts +1 -2
- package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +4 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/AccountSetup.d.ts +4 -0
- package/lib/typescript/commonjs/license/AccountSetup.d.ts.map +1 -0
- package/lib/typescript/commonjs/license/AccountSetup.web.d.ts +2 -0
- package/lib/typescript/commonjs/license/AccountSetup.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/license/FeatureGate.d.ts +3 -19
- package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts +8 -11
- package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/index.d.ts +1 -1
- package/lib/typescript/commonjs/license/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/licenseModule.d.ts +18 -31
- package/lib/typescript/commonjs/license/licenseModule.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/tierLimits.d.ts +9 -52
- package/lib/typescript/commonjs/license/tierLimits.d.ts.map +1 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +6 -0
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/BaseEventStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/createToolStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/floatingToolStore.d.ts +27 -0
- package/lib/typescript/commonjs/stores/floatingToolStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/stores/floatingToolStore.test.d.ts +2 -0
- package/lib/typescript/commonjs/stores/floatingToolStore.test.d.ts.map +1 -0
- package/lib/typescript/commonjs/sync/toolActionRegistry.d.ts +4 -32
- package/lib/typescript/commonjs/sync/toolActionRegistry.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/backgrounds/ToolBackground.d.ts +7 -1
- package/lib/typescript/commonjs/ui/backgrounds/ToolBackground.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/backgrounds/index.d.ts +2 -1
- package/lib/typescript/commonjs/ui/backgrounds/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/backgrounds/types.d.ts +11 -1
- package/lib/typescript/commonjs/ui/backgrounds/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/motion.d.ts +24 -0
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/motion.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/textures.d.ts +13 -0
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/textures.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole.d.ts +3 -0
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/CompactRow.d.ts +8 -1
- package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts +4 -1
- package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts +7 -1
- package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/floating/FloatingTool.d.ts +79 -0
- package/lib/typescript/commonjs/ui/floating/FloatingTool.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts +64 -0
- package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/floating/FloatingToolHost.d.ts +3 -0
- package/lib/typescript/commonjs/ui/floating/FloatingToolHost.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/floating/FloatingToolHost.web.d.ts +3 -0
- package/lib/typescript/commonjs/ui/floating/FloatingToolHost.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/floating/index.d.ts +7 -0
- package/lib/typescript/commonjs/ui/floating/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/floating/index.web.d.ts +7 -0
- package/lib/typescript/commonjs/ui/floating/index.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/floating/onboardingConstants.d.ts +30 -0
- package/lib/typescript/commonjs/ui/floating/onboardingConstants.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/floating/onboardingConstants.web.d.ts +13 -0
- package/lib/typescript/commonjs/ui/floating/onboardingConstants.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +2 -0
- package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +6 -0
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/night/nightTheme.d.ts +10 -0
- package/lib/typescript/commonjs/ui/night/nightTheme.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/night/primitives.d.ts +10 -3
- package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/otto/OttoSceneView.d.ts +30 -0
- package/lib/typescript/commonjs/ui/otto/OttoSceneView.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/otto/index.d.ts +2 -0
- package/lib/typescript/commonjs/ui/otto/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts +1 -1
- package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/otto/ottoScenes.d.ts +75 -0
- package/lib/typescript/commonjs/ui/otto/ottoScenes.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/minimalSuperJSON.d.ts.map +1 -1
- package/lib/typescript/module/JsModal.d.ts +43 -2
- package/lib/typescript/module/JsModal.d.ts.map +1 -1
- package/lib/typescript/module/JsModal.web.d.ts +5 -2
- package/lib/typescript/module/JsModal.web.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/LiveExplorer.d.ts.map +1 -1
- package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/module/icons/ReactQueryIcon.d.ts +1 -2
- package/lib/typescript/module/icons/ReactQueryIcon.d.ts.map +1 -1
- package/lib/typescript/module/icons/SentryBugIcon.d.ts +1 -2
- package/lib/typescript/module/icons/SentryBugIcon.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +4 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/license/AccountSetup.d.ts +4 -0
- package/lib/typescript/module/license/AccountSetup.d.ts.map +1 -0
- package/lib/typescript/module/license/AccountSetup.web.d.ts +2 -0
- package/lib/typescript/module/license/AccountSetup.web.d.ts.map +1 -0
- package/lib/typescript/module/license/FeatureGate.d.ts +3 -19
- package/lib/typescript/module/license/FeatureGate.d.ts.map +1 -1
- package/lib/typescript/module/license/FreeAccountPrompt.d.ts +8 -11
- package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
- package/lib/typescript/module/license/index.d.ts +1 -1
- package/lib/typescript/module/license/index.d.ts.map +1 -1
- package/lib/typescript/module/license/licenseModule.d.ts +18 -31
- package/lib/typescript/module/license/licenseModule.d.ts.map +1 -1
- package/lib/typescript/module/license/tierLimits.d.ts +9 -52
- package/lib/typescript/module/license/tierLimits.d.ts.map +1 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +6 -0
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -1
- package/lib/typescript/module/stores/BaseEventStore.d.ts.map +1 -1
- package/lib/typescript/module/stores/createToolStore.d.ts.map +1 -1
- package/lib/typescript/module/stores/floatingToolStore.d.ts +27 -0
- package/lib/typescript/module/stores/floatingToolStore.d.ts.map +1 -0
- package/lib/typescript/module/stores/floatingToolStore.test.d.ts +2 -0
- package/lib/typescript/module/stores/floatingToolStore.test.d.ts.map +1 -0
- package/lib/typescript/module/sync/toolActionRegistry.d.ts +4 -32
- package/lib/typescript/module/sync/toolActionRegistry.d.ts.map +1 -1
- package/lib/typescript/module/ui/backgrounds/ToolBackground.d.ts +7 -1
- package/lib/typescript/module/ui/backgrounds/ToolBackground.d.ts.map +1 -1
- package/lib/typescript/module/ui/backgrounds/index.d.ts +2 -1
- package/lib/typescript/module/ui/backgrounds/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/backgrounds/registry.d.ts.map +1 -1
- package/lib/typescript/module/ui/backgrounds/types.d.ts +11 -1
- package/lib/typescript/module/ui/backgrounds/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/backgrounds/variants/wormhole/motion.d.ts +24 -0
- package/lib/typescript/module/ui/backgrounds/variants/wormhole/motion.d.ts.map +1 -0
- package/lib/typescript/module/ui/backgrounds/variants/wormhole/textures.d.ts +13 -0
- package/lib/typescript/module/ui/backgrounds/variants/wormhole/textures.d.ts.map +1 -0
- package/lib/typescript/module/ui/backgrounds/variants/wormhole.d.ts +3 -0
- package/lib/typescript/module/ui/backgrounds/variants/wormhole.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/CompactRow.d.ts +8 -1
- package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/DraggableHeader.d.ts +4 -1
- package/lib/typescript/module/ui/components/DraggableHeader.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts +7 -1
- package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/floating/FloatingTool.d.ts +79 -0
- package/lib/typescript/module/ui/floating/FloatingTool.d.ts.map +1 -0
- package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts +64 -0
- package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts.map +1 -0
- package/lib/typescript/module/ui/floating/FloatingToolHost.d.ts +3 -0
- package/lib/typescript/module/ui/floating/FloatingToolHost.d.ts.map +1 -0
- package/lib/typescript/module/ui/floating/FloatingToolHost.web.d.ts +3 -0
- package/lib/typescript/module/ui/floating/FloatingToolHost.web.d.ts.map +1 -0
- package/lib/typescript/module/ui/floating/index.d.ts +7 -0
- package/lib/typescript/module/ui/floating/index.d.ts.map +1 -0
- package/lib/typescript/module/ui/floating/index.web.d.ts +7 -0
- package/lib/typescript/module/ui/floating/index.web.d.ts.map +1 -0
- package/lib/typescript/module/ui/floating/onboardingConstants.d.ts +30 -0
- package/lib/typescript/module/ui/floating/onboardingConstants.d.ts.map +1 -0
- package/lib/typescript/module/ui/floating/onboardingConstants.web.d.ts +13 -0
- package/lib/typescript/module/ui/floating/onboardingConstants.web.d.ts.map +1 -0
- package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +2 -0
- package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +6 -0
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/night/nightTheme.d.ts +10 -0
- package/lib/typescript/module/ui/night/nightTheme.d.ts.map +1 -1
- package/lib/typescript/module/ui/night/primitives.d.ts +10 -3
- package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -1
- package/lib/typescript/module/ui/otto/OttoSceneView.d.ts +30 -0
- package/lib/typescript/module/ui/otto/OttoSceneView.d.ts.map +1 -0
- package/lib/typescript/module/ui/otto/index.d.ts +2 -0
- package/lib/typescript/module/ui/otto/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/otto/ottoEngine.d.ts +1 -1
- package/lib/typescript/module/ui/otto/ottoEngine.d.ts.map +1 -1
- package/lib/typescript/module/ui/otto/ottoScenes.d.ts +75 -0
- package/lib/typescript/module/ui/otto/ottoScenes.d.ts.map +1 -0
- package/lib/typescript/module/utils/minimalSuperJSON.d.ts.map +1 -1
- package/package.json +25 -5
- package/scripts/generate-wormhole-textures.cjs +261 -0
- package/scripts/test-wormhole-motion.cjs +59 -0
|
@@ -195,3 +195,55 @@ switcher shows both, which is the point — it's a review tool, not decoration.
|
|
|
195
195
|
Alpha calibration: every preset runs a 0.4–0.55 vignette, and anything fainter
|
|
196
196
|
than ~0.2 alpha disappears under it — hairline strokes in particular need ~0.2
|
|
197
197
|
alpha or a second pixel of height to register at all.
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
## Wormhole mobile preview
|
|
201
|
+
|
|
202
|
+
Wormhole is the eighth registry entry (including Off). Select it under the
|
|
203
|
+
Buoy dial's Settings → Background; the existing store persists that choice.
|
|
204
|
+
The example app also exposes `/bg-bench?v=wormhole` and
|
|
205
|
+
`/bg-bench?v=wormhole-still` for comparison under identical tool content.
|
|
206
|
+
|
|
207
|
+
The moving scene is a zoom, and a zoom only loops invisibly when the picture
|
|
208
|
+
is self-similar under the handoff. Two copies of one opaque cloud sheet scale
|
|
209
|
+
toward the viewer one period apart (×√6 in scale, +21° in rotation) and
|
|
210
|
+
crossfade with balanced source-over opacities; each forward pass takes six
|
|
211
|
+
seconds (two periods) at constant proportional expansion, and four passes fit
|
|
212
|
+
inside one 24-second camera-bank cycle. The sheet is built by
|
|
213
|
+
`scripts/generate-wormhole-textures.cjs` by tiling one annulus of the real
|
|
214
|
+
shader frame in log-polar space with exactly that (×√6, +21°) symmetry, so the
|
|
215
|
+
two copies are the same picture wherever they overlap and neither the
|
|
216
|
+
crossfade nor a layer's reset can be seen. The destination is cut from the
|
|
217
|
+
same frame with a feathered alpha and drawn as a static layer above the
|
|
218
|
+
sheets — the far end of a tunnel does not zoom. One native Animated loop
|
|
219
|
+
drives the scene. It approximates the flight: the tunnel geometry is baked into
|
|
220
|
+
the textures, not ray-marched on the device. There is no Skia, Reanimated,
|
|
221
|
+
WebView, new native dependency, or per-frame JS callback.
|
|
222
|
+
|
|
223
|
+
TRAP (the "badly looping GIF" we shipped first): a feathered ring texture is
|
|
224
|
+
NOT self-similar, so a copy born at 0.42× painted a shrunken tunnel — its own
|
|
225
|
+
copper rim included — over the destination every 3 s, then pushed it outward.
|
|
226
|
+
Fade tuning cannot hide that; only a sheet that matches itself under the
|
|
227
|
+
handoff transform can. `WORMHOLE_PERIOD` / `WORMHOLE_TWIST` in `motion.ts` are
|
|
228
|
+
that transform: change either and regenerate the sheet (the generator checks
|
|
229
|
+
the pixels against the symmetry and refuses a sheet that does not match).
|
|
230
|
+
|
|
231
|
+
While moving, the 1440×1440 sheet (JPEG) and the 384×384 eye (PNG) contribute
|
|
232
|
+
about 337 KiB of source data and roughly 8.5 MiB of decoded pixels; the still
|
|
233
|
+
(640×640 JPEG, 57 KiB, 1.6 MiB decoded) is mounted only when the scene does
|
|
234
|
+
not move. Instances can reuse the same image source objects. Reduced motion
|
|
235
|
+
shows the still texture; the existing animation primitive pauses on AppState
|
|
236
|
+
changes and stops on unmount. Geometry is window-sized and cropped by each tool
|
|
237
|
+
surface. Actual device performance remains to be measured in the benchmark
|
|
238
|
+
screen.
|
|
239
|
+
|
|
240
|
+
The desktop menu keeps one Wormhole entry and its existing live WebGL renderer.
|
|
241
|
+
The mobile texture preview does not replace the desktop shader.
|
|
242
|
+
|
|
243
|
+
Texture source: `node scripts/generate-wormhole-textures.cjs` (from
|
|
244
|
+
`packages/shared`) ports the website's dark shader to the CPU, renders it at
|
|
245
|
+
u_t=4 with the destination centred and no copy scrim or vignette, tiles the
|
|
246
|
+
sheet, cuts the eye, and rewrites `textures.ts`. It keeps the embedded still
|
|
247
|
+
unless `--still scene.jpg` supplies a fresh centered 640px WebGL capture; JPEG
|
|
248
|
+
encoding shells out to macOS `sips`. Both packages and Metro can consume the
|
|
249
|
+
module without an asset-loader plugin.
|
|
@@ -37,7 +37,8 @@ const bucket = n => Math.max(0, Math.ceil(n / 8) * 8);
|
|
|
37
37
|
const ToolBackground = exports.ToolBackground = /*#__PURE__*/(0, _react.memo)(function ToolBackground({
|
|
38
38
|
id,
|
|
39
39
|
motion,
|
|
40
|
-
opacity = 1
|
|
40
|
+
opacity = 1,
|
|
41
|
+
focus
|
|
41
42
|
}) {
|
|
42
43
|
const shared = (0, _backgroundStore.useToolBackground)();
|
|
43
44
|
const [size, setSize] = (0, _react.useState)({
|
|
@@ -68,7 +69,8 @@ const ToolBackground = exports.ToolBackground = /*#__PURE__*/(0, _react.memo)(fu
|
|
|
68
69
|
children: Variant && ready ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Variant, {
|
|
69
70
|
width: size.width,
|
|
70
71
|
height: size.height,
|
|
71
|
-
animated: animated
|
|
72
|
+
animated: animated,
|
|
73
|
+
focus: focus
|
|
72
74
|
}) : null
|
|
73
75
|
});
|
|
74
76
|
});
|
|
@@ -75,6 +75,12 @@ Object.defineProperty(exports, "ToolBackground", {
|
|
|
75
75
|
return _ToolBackground.ToolBackground;
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
|
+
Object.defineProperty(exports, "Wormhole", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return _wormhole.Wormhole;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
78
84
|
Object.defineProperty(exports, "backgroundStore", {
|
|
79
85
|
enumerable: true,
|
|
80
86
|
get: function () {
|
|
@@ -157,4 +163,5 @@ var _deepField = require("./variants/deepField.js");
|
|
|
157
163
|
var _moonlight = require("./variants/moonlight.js");
|
|
158
164
|
var _daylight = require("./variants/daylight.js");
|
|
159
165
|
var _liveSky = require("./variants/liveSky.js");
|
|
160
|
-
var _skyClock = require("./skyClock.js");
|
|
166
|
+
var _skyClock = require("./skyClock.js");
|
|
167
|
+
var _wormhole = require("./variants/wormhole.js");
|
|
@@ -8,6 +8,7 @@ exports.getPreset = getPreset;
|
|
|
8
8
|
exports.presetAt = presetAt;
|
|
9
9
|
exports.presetIndex = presetIndex;
|
|
10
10
|
var _deepField = require("./variants/deepField.js");
|
|
11
|
+
var _wormhole = require("./variants/wormhole.js");
|
|
11
12
|
var _hyperspace = require("./variants/hyperspace.js");
|
|
12
13
|
var _liveSky = require("./variants/liveSky.js");
|
|
13
14
|
var _underwater = require("./variants/underwater.js");
|
|
@@ -72,6 +73,13 @@ const BACKGROUND_PRESETS = exports.BACKGROUND_PRESETS = [{
|
|
|
72
73
|
nodes: 15,
|
|
73
74
|
views: 250,
|
|
74
75
|
Component: _underwater.Jellyfish
|
|
76
|
+
}, {
|
|
77
|
+
id: "wormhole",
|
|
78
|
+
label: "Wormhole",
|
|
79
|
+
blurb: "Cobalt clouds and copper light — a native flight through the tunnel",
|
|
80
|
+
nodes: 1,
|
|
81
|
+
views: 7,
|
|
82
|
+
Component: _wormhole.Wormhole
|
|
75
83
|
}];
|
|
76
84
|
|
|
77
85
|
// Ships OFF: a backdrop is an opt-in, so first load is plain black and the
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.WORMHOLE_TWIST = exports.WORMHOLE_SHELLS = exports.WORMHOLE_PERIOD = exports.WORMHOLE_PASSES = exports.WORMHOLE_INPUT = exports.WORMHOLE_CYCLE_MS = exports.WORMHOLE_CAMERA_ROTATION = void 0;
|
|
7
|
+
/** One slow camera cycle containing four faster forward passes.
|
|
8
|
+
* Keyframes run on Animated's native driver; this math runs only at import.
|
|
9
|
+
*
|
|
10
|
+
* The sheet texture is self-similar: scaled by WORMHOLE_PERIOD and rotated by
|
|
11
|
+
* WORMHOLE_TWIST it is the same picture (scripts/generate-wormhole-textures.cjs
|
|
12
|
+
* builds it that way and checks it). The two shells sit exactly one period
|
|
13
|
+
* apart, so at every instant they show identical pixels and the crossfade
|
|
14
|
+
* between them — and each shell's reset — cannot be seen. Change either
|
|
15
|
+
* constant and regenerate the textures; the sheet must be rebuilt to match.
|
|
16
|
+
*/
|
|
17
|
+
const WORMHOLE_CYCLE_MS = exports.WORMHOLE_CYCLE_MS = 24000;
|
|
18
|
+
const WORMHOLE_PASSES = exports.WORMHOLE_PASSES = 4;
|
|
19
|
+
/** Scale ratio between the two shells; one pass covers two periods (×6). */
|
|
20
|
+
const WORMHOLE_PERIOD = exports.WORMHOLE_PERIOD = Math.sqrt(6);
|
|
21
|
+
/** Degrees the picture turns per period — its spiral symmetry. */
|
|
22
|
+
const WORMHOLE_TWIST = exports.WORMHOLE_TWIST = 21;
|
|
23
|
+
const STEPS_PER_PASS = 64;
|
|
24
|
+
const WORMHOLE_INPUT = exports.WORMHOLE_INPUT = Array.from({
|
|
25
|
+
length: STEPS_PER_PASS * WORMHOLE_PASSES + 1
|
|
26
|
+
}, (_, i) => i / (STEPS_PER_PASS * WORMHOLE_PASSES));
|
|
27
|
+
const smooth = (from, to, value) => {
|
|
28
|
+
const t = Math.max(0, Math.min(1, (value - from) / (to - from)));
|
|
29
|
+
return t * t * (3 - 2 * t);
|
|
30
|
+
};
|
|
31
|
+
const PHASES = [0, 0.5].map(offset => WORMHOLE_INPUT.map(t => (t * WORMHOLE_PASSES + offset) % 1));
|
|
32
|
+
// Broad overlapping windows, with a completely invisible interval around wraps.
|
|
33
|
+
const WEIGHTS = PHASES.map(phase => phase.map(t => Math.sin(Math.PI * t) ** 2 * smooth(0.02, 0.12, t) * (1 - smooth(0.88, 0.98, t))));
|
|
34
|
+
const WORMHOLE_SHELLS = exports.WORMHOLE_SHELLS = PHASES.map((phase, layer) => ({
|
|
35
|
+
// Constant proportional expansion keeps the forward speed steady. The
|
|
36
|
+
// sheet covers the whole plane from scale 1, so a shell never shows an edge.
|
|
37
|
+
scale: phase.map(t => Math.pow(WORMHOLE_PERIOD, 2 * t)),
|
|
38
|
+
// Normalize layer transmission across the overlapping fades.
|
|
39
|
+
opacity: phase.map((_, i) => {
|
|
40
|
+
const total = WEIGHTS.reduce((sum, weights) => sum + weights[i], 0);
|
|
41
|
+
return 1 - Math.pow(0.08, WEIGHTS[layer][i] / total);
|
|
42
|
+
}),
|
|
43
|
+
// One twist per period, centred so the shells sit ±θ/2 around the camera.
|
|
44
|
+
rotate: phase.map(t => `${(2 * t - 1) * WORMHOLE_TWIST}deg`)
|
|
45
|
+
}));
|
|
46
|
+
// Zero velocity at the turnarounds and the loop boundary, rather than the
|
|
47
|
+
// sharp reversal from a three-keyframe triangle-wave camera bank.
|
|
48
|
+
const WORMHOLE_CAMERA_ROTATION = exports.WORMHOLE_CAMERA_ROTATION = WORMHOLE_INPUT.map(t => `${-5 * Math.cos(t * Math.PI * 2)}deg`);
|