@buoy-gg/shared-ui 7.0.35 → 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/icons/index.js +7 -0
- package/lib/commonjs/index.js +105 -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/keyedArrays.js +209 -0
- package/lib/commonjs/sync/toolActionRegistry.js +85 -2
- package/lib/commonjs/sync/toolAttention.test.js +51 -0
- package/lib/commonjs/sync/toolUiBridge.js +58 -0
- package/lib/commonjs/sync/typedEdit.js +228 -0
- package/lib/commonjs/sync/valuePath.js +337 -0
- package/lib/commonjs/sync/valueShape.js +161 -0
- 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/ExpandablePopover.js +38 -6
- 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/icons/index.js +3 -1
- package/lib/module/index.js +8 -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/keyedArrays.js +204 -0
- package/lib/module/sync/toolActionRegistry.js +84 -2
- package/lib/module/sync/toolAttention.test.js +50 -0
- package/lib/module/sync/toolUiBridge.js +55 -0
- package/lib/module/sync/typedEdit.js +220 -0
- package/lib/module/sync/valuePath.js +330 -0
- package/lib/module/sync/valueShape.js +153 -0
- 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/ExpandablePopover.js +38 -6
- 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/icons/index.d.ts +1 -1
- package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +8 -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/keyedArrays.d.ts +35 -0
- package/lib/typescript/commonjs/sync/keyedArrays.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/sync/toolAttention.test.d.ts +2 -0
- package/lib/typescript/commonjs/sync/toolAttention.test.d.ts.map +1 -0
- package/lib/typescript/commonjs/sync/toolUiBridge.d.ts +25 -0
- package/lib/typescript/commonjs/sync/toolUiBridge.d.ts.map +1 -1
- package/lib/typescript/commonjs/sync/typedEdit.d.ts +70 -0
- package/lib/typescript/commonjs/sync/typedEdit.d.ts.map +1 -0
- package/lib/typescript/commonjs/sync/valuePath.d.ts +52 -0
- package/lib/typescript/commonjs/sync/valuePath.d.ts.map +1 -0
- package/lib/typescript/commonjs/sync/valueShape.d.ts +77 -0
- package/lib/typescript/commonjs/sync/valueShape.d.ts.map +1 -0
- 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/ExpandablePopover.d.ts +14 -1
- package/lib/typescript/commonjs/ui/components/ExpandablePopover.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/icons/index.d.ts +1 -1
- package/lib/typescript/module/icons/index.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +8 -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/keyedArrays.d.ts +35 -0
- package/lib/typescript/module/sync/keyedArrays.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/sync/toolAttention.test.d.ts +2 -0
- package/lib/typescript/module/sync/toolAttention.test.d.ts.map +1 -0
- package/lib/typescript/module/sync/toolUiBridge.d.ts +25 -0
- package/lib/typescript/module/sync/toolUiBridge.d.ts.map +1 -1
- package/lib/typescript/module/sync/typedEdit.d.ts +70 -0
- package/lib/typescript/module/sync/typedEdit.d.ts.map +1 -0
- package/lib/typescript/module/sync/valuePath.d.ts +52 -0
- package/lib/typescript/module/sync/valuePath.d.ts.map +1 -0
- package/lib/typescript/module/sync/valueShape.d.ts +77 -0
- package/lib/typescript/module/sync/valueShape.d.ts.map +1 -0
- 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/ExpandablePopover.d.ts +14 -1
- package/lib/typescript/module/ui/components/ExpandablePopover.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
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A compact type sketch of a runtime value — one implementation, shared by every
|
|
5
|
+
* adapter that hands data to a model.
|
|
6
|
+
*
|
|
7
|
+
* WHY. A model cannot write a well-formed item into a list it has never seen the
|
|
8
|
+
* shape of, and we were not showing it. Measured on `cart/bag-still-zustand`: the
|
|
9
|
+
* rendered prompt is 83,000 characters and the words `lineId`, `itemId`,
|
|
10
|
+
* `sizeId`, `addonIds` and `unitPrice` appear in it ZERO times. Every model
|
|
11
|
+
* "failing" that case invented a line shape because inventing was the only move
|
|
12
|
+
* available. The zustand typed-edit guard would have caught the invention — but
|
|
13
|
+
* only on a list that already holds an item, since it builds its template from
|
|
14
|
+
* `list[0]`. On an EMPTY list there is no template, the guard has nothing to
|
|
15
|
+
* compare against, and the invented shape is written silently.
|
|
16
|
+
*
|
|
17
|
+
* So the sketch has two jobs, and the second is the one that pays:
|
|
18
|
+
*
|
|
19
|
+
* 1. Say what the items in a list look like, so an addition can match.
|
|
20
|
+
* 2. Say when NOTHING knows — an empty list's item shape is not merely
|
|
21
|
+
* unread, it is unknowable from runtime state, and the honest answer is to
|
|
22
|
+
* admit that rather than let a guess through unremarked.
|
|
23
|
+
*
|
|
24
|
+
* It is deliberately tiny. A sketch of a 120-line bag is the same size as a
|
|
25
|
+
* sketch of a 2-line one, so unlike the data it survives the engine's 24,000-
|
|
26
|
+
* character result cap — which is the whole point, because the cases where the
|
|
27
|
+
* model most needs the shape are exactly the ones where the data got cut off.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
const isPlainObject = v => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
31
|
+
|
|
32
|
+
/** Beyond this the sketch stops being cheaper to read than the data. */
|
|
33
|
+
const MAX_DEPTH = 3;
|
|
34
|
+
const MAX_KEYS = 24;
|
|
35
|
+
/**
|
|
36
|
+
* Hard caps on `listShapes`. MAX_DEPTH bounds how DEEP it goes; nothing bounded
|
|
37
|
+
* how WIDE it went, and it walks every entry of every object at each permitted
|
|
38
|
+
* level. A store holding a few hundred keyed records therefore produced a
|
|
39
|
+
* "compact" sketch larger than the data it was standing in for — in a value
|
|
40
|
+
* that rides in every prompt. Depth is not a size budget.
|
|
41
|
+
*/
|
|
42
|
+
const MAX_LIST_PATHS = 40;
|
|
43
|
+
const MAX_ENTRIES_VISITED = 600;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* `{lineId: string, qty: number, addonIds: string[]}` — a one-line type for a
|
|
47
|
+
* value, built from the value itself.
|
|
48
|
+
*
|
|
49
|
+
* An array is described by its FIRST item, because a list whose items disagree
|
|
50
|
+
* is a list nothing can safely add to and the guard will say so anyway. An empty
|
|
51
|
+
* array is `unknown[]`, which is the true answer and the one that matters: it
|
|
52
|
+
* tells a reader that adding to this list is unchecked.
|
|
53
|
+
*/
|
|
54
|
+
export function shapeOf(value, depth = 0) {
|
|
55
|
+
if (value === null) return "null";
|
|
56
|
+
if (Array.isArray(value)) {
|
|
57
|
+
if (!value.length) return "unknown[]";
|
|
58
|
+
if (depth >= MAX_DEPTH) return "…[]";
|
|
59
|
+
const inner = shapeOf(value[0], depth + 1);
|
|
60
|
+
return inner.includes(" ") || inner.endsWith("]") ? `(${inner})[]` : `${inner}[]`;
|
|
61
|
+
}
|
|
62
|
+
if (isPlainObject(value)) {
|
|
63
|
+
if (depth >= MAX_DEPTH) return "{…}";
|
|
64
|
+
const keys = Object.keys(value);
|
|
65
|
+
const shown = keys.slice(0, MAX_KEYS);
|
|
66
|
+
const body = shown.map(k => `${k}: ${shapeOf(value[k], depth + 1)}`).join(", ");
|
|
67
|
+
const more = keys.length > shown.length ? `, +${keys.length - shown.length} more` : "";
|
|
68
|
+
return `{${body}${more}}`;
|
|
69
|
+
}
|
|
70
|
+
const t = typeof value;
|
|
71
|
+
return t === "undefined" ? "undefined" : t === "function" ? "function" : t;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Every list inside a value, with the shape of what goes in it.
|
|
75
|
+
*
|
|
76
|
+
* This is what a caller needs before adding to a list, and it is the part that
|
|
77
|
+
* cannot be recovered from a truncated read of the data itself.
|
|
78
|
+
*
|
|
79
|
+
* A list with `item: undefined` is the warning case: it is empty, so its item
|
|
80
|
+
* shape exists nowhere in the running app — not in the store, not in the
|
|
81
|
+
* persisted copy, not in this sketch. Anything added to it goes in unchecked.
|
|
82
|
+
*/
|
|
83
|
+
export function listShapes(value, path = "", out = [], depth = 0, budget = {
|
|
84
|
+
visited: 0
|
|
85
|
+
}) {
|
|
86
|
+
if (depth > MAX_DEPTH) return out;
|
|
87
|
+
// Two independent stops: enough lists described, or enough of the value
|
|
88
|
+
// walked. The second is what a wide-but-shallow store hits.
|
|
89
|
+
if (out.length >= MAX_LIST_PATHS || budget.visited >= MAX_ENTRIES_VISITED) return out;
|
|
90
|
+
if (Array.isArray(value)) {
|
|
91
|
+
const first = value[0];
|
|
92
|
+
out.push({
|
|
93
|
+
path: path || "(root)",
|
|
94
|
+
length: value.length,
|
|
95
|
+
...(value.length ? {
|
|
96
|
+
item: shapeOf(first)
|
|
97
|
+
} : {})
|
|
98
|
+
});
|
|
99
|
+
// One level into the items, so `lines[].addonIds` is reachable too.
|
|
100
|
+
if (value.length && isPlainObject(first)) {
|
|
101
|
+
for (const [k, v] of Object.entries(first)) {
|
|
102
|
+
if (++budget.visited >= MAX_ENTRIES_VISITED) break;
|
|
103
|
+
listShapes(v, path ? `${path}[].${k}` : `[].${k}`, out, depth + 1, budget);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
if (isPlainObject(value)) {
|
|
109
|
+
for (const [k, v] of Object.entries(value)) {
|
|
110
|
+
if (++budget.visited >= MAX_ENTRIES_VISITED) break;
|
|
111
|
+
listShapes(v, path ? `${path}.${k}` : k, out, depth + 1, budget);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** True when a sketch stopped early, so a caller can say so rather than imply completeness. */
|
|
118
|
+
export function shapesWereTruncated(value) {
|
|
119
|
+
const budget = {
|
|
120
|
+
visited: 0
|
|
121
|
+
};
|
|
122
|
+
const out = listShapes(value, "", [], 0, budget);
|
|
123
|
+
return out.length >= MAX_LIST_PATHS || budget.visited >= MAX_ENTRIES_VISITED;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* The lists in a value that a caller could add to WITHOUT any way to know the
|
|
128
|
+
* item shape. Empty by definition on a healthy value; non-empty means a write
|
|
129
|
+
* into one of these paths cannot be checked by anything.
|
|
130
|
+
*/
|
|
131
|
+
export function unshapedLists(value) {
|
|
132
|
+
return listShapes(value).filter(l => l.item === undefined).map(l => l.path);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* The sketch an adapter attaches to a read: the value's own type, plus the item
|
|
137
|
+
* type of every list in it.
|
|
138
|
+
*
|
|
139
|
+
* Returns undefined when there is nothing worth saying (a scalar, or an object
|
|
140
|
+
* holding no lists) so adapters can spread it and add no noise.
|
|
141
|
+
*/
|
|
142
|
+
export function shapeSummary(value) {
|
|
143
|
+
if (value === undefined) return undefined;
|
|
144
|
+
const lists = listShapes(value);
|
|
145
|
+
const shape = shapeOf(value);
|
|
146
|
+
if (!lists.length && !isPlainObject(value) && !Array.isArray(value)) return undefined;
|
|
147
|
+
return lists.length ? {
|
|
148
|
+
shape,
|
|
149
|
+
lists
|
|
150
|
+
} : {
|
|
151
|
+
shape
|
|
152
|
+
};
|
|
153
|
+
}
|
|
@@ -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.
|
|
@@ -33,7 +33,8 @@ const bucket = n => Math.max(0, Math.ceil(n / 8) * 8);
|
|
|
33
33
|
export const ToolBackground = /*#__PURE__*/memo(function ToolBackground({
|
|
34
34
|
id,
|
|
35
35
|
motion,
|
|
36
|
-
opacity = 1
|
|
36
|
+
opacity = 1,
|
|
37
|
+
focus
|
|
37
38
|
}) {
|
|
38
39
|
const shared = useToolBackground();
|
|
39
40
|
const [size, setSize] = useState({
|
|
@@ -64,7 +65,8 @@ export const ToolBackground = /*#__PURE__*/memo(function ToolBackground({
|
|
|
64
65
|
children: Variant && ready ? /*#__PURE__*/_jsx(Variant, {
|
|
65
66
|
width: size.width,
|
|
66
67
|
height: size.height,
|
|
67
|
-
animated: animated
|
|
68
|
+
animated: animated,
|
|
69
|
+
focus: focus
|
|
68
70
|
}) : null
|
|
69
71
|
});
|
|
70
72
|
});
|
|
@@ -15,4 +15,5 @@ export { DeepFieldTunable } from "./variants/deepField.js";
|
|
|
15
15
|
export { MoonlightTunable } from "./variants/moonlight.js";
|
|
16
16
|
export { DaylightTunable } from "./variants/daylight.js";
|
|
17
17
|
export { LiveSkyTunable } from "./variants/liveSky.js";
|
|
18
|
-
export { getSkyScrub, setSkyScrub, useSkyScrub } from "./skyClock.js";
|
|
18
|
+
export { getSkyScrub, setSkyScrub, useSkyScrub } from "./skyClock.js";
|
|
19
|
+
export { Wormhole } from "./variants/wormhole.js";
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { DeepField } from "./variants/deepField.js";
|
|
14
|
+
import { Wormhole } from "./variants/wormhole.js";
|
|
14
15
|
import { Hyperspace } from "./variants/hyperspace.js";
|
|
15
16
|
import { LiveSky } from "./variants/liveSky.js";
|
|
16
17
|
import { Abyss, Bubbles, Jellyfish } from "./variants/underwater.js";
|
|
@@ -65,6 +66,13 @@ export const BACKGROUND_PRESETS = [{
|
|
|
65
66
|
nodes: 15,
|
|
66
67
|
views: 250,
|
|
67
68
|
Component: Jellyfish
|
|
69
|
+
}, {
|
|
70
|
+
id: "wormhole",
|
|
71
|
+
label: "Wormhole",
|
|
72
|
+
blurb: "Cobalt clouds and copper light — a native flight through the tunnel",
|
|
73
|
+
nodes: 1,
|
|
74
|
+
views: 7,
|
|
75
|
+
Component: Wormhole
|
|
68
76
|
}];
|
|
69
77
|
|
|
70
78
|
// Ships OFF: a backdrop is an opt-in, so first load is plain black and the
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** One slow camera cycle containing four faster forward passes.
|
|
4
|
+
* Keyframes run on Animated's native driver; this math runs only at import.
|
|
5
|
+
*
|
|
6
|
+
* The sheet texture is self-similar: scaled by WORMHOLE_PERIOD and rotated by
|
|
7
|
+
* WORMHOLE_TWIST it is the same picture (scripts/generate-wormhole-textures.cjs
|
|
8
|
+
* builds it that way and checks it). The two shells sit exactly one period
|
|
9
|
+
* apart, so at every instant they show identical pixels and the crossfade
|
|
10
|
+
* between them — and each shell's reset — cannot be seen. Change either
|
|
11
|
+
* constant and regenerate the textures; the sheet must be rebuilt to match.
|
|
12
|
+
*/
|
|
13
|
+
export const WORMHOLE_CYCLE_MS = 24000;
|
|
14
|
+
export const WORMHOLE_PASSES = 4;
|
|
15
|
+
/** Scale ratio between the two shells; one pass covers two periods (×6). */
|
|
16
|
+
export const WORMHOLE_PERIOD = Math.sqrt(6);
|
|
17
|
+
/** Degrees the picture turns per period — its spiral symmetry. */
|
|
18
|
+
export const WORMHOLE_TWIST = 21;
|
|
19
|
+
const STEPS_PER_PASS = 64;
|
|
20
|
+
export const WORMHOLE_INPUT = Array.from({
|
|
21
|
+
length: STEPS_PER_PASS * WORMHOLE_PASSES + 1
|
|
22
|
+
}, (_, i) => i / (STEPS_PER_PASS * WORMHOLE_PASSES));
|
|
23
|
+
const smooth = (from, to, value) => {
|
|
24
|
+
const t = Math.max(0, Math.min(1, (value - from) / (to - from)));
|
|
25
|
+
return t * t * (3 - 2 * t);
|
|
26
|
+
};
|
|
27
|
+
const PHASES = [0, 0.5].map(offset => WORMHOLE_INPUT.map(t => (t * WORMHOLE_PASSES + offset) % 1));
|
|
28
|
+
// Broad overlapping windows, with a completely invisible interval around wraps.
|
|
29
|
+
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))));
|
|
30
|
+
export const WORMHOLE_SHELLS = PHASES.map((phase, layer) => ({
|
|
31
|
+
// Constant proportional expansion keeps the forward speed steady. The
|
|
32
|
+
// sheet covers the whole plane from scale 1, so a shell never shows an edge.
|
|
33
|
+
scale: phase.map(t => Math.pow(WORMHOLE_PERIOD, 2 * t)),
|
|
34
|
+
// Normalize layer transmission across the overlapping fades.
|
|
35
|
+
opacity: phase.map((_, i) => {
|
|
36
|
+
const total = WEIGHTS.reduce((sum, weights) => sum + weights[i], 0);
|
|
37
|
+
return 1 - Math.pow(0.08, WEIGHTS[layer][i] / total);
|
|
38
|
+
}),
|
|
39
|
+
// One twist per period, centred so the shells sit ±θ/2 around the camera.
|
|
40
|
+
rotate: phase.map(t => `${(2 * t - 1) * WORMHOLE_TWIST}deg`)
|
|
41
|
+
}));
|
|
42
|
+
// Zero velocity at the turnarounds and the loop boundary, rather than the
|
|
43
|
+
// sharp reversal from a three-keyframe triangle-wave camera bank.
|
|
44
|
+
export const WORMHOLE_CAMERA_ROTATION = WORMHOLE_INPUT.map(t => `${-5 * Math.cos(t * Math.PI * 2)}deg`);
|