@glassly/engine 0.1.0-dev.99 → 0.2.9-beta.448
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 +28 -0
- package/build/engine.d.ts +32 -10
- package/build/engine.d.ts.map +1 -1
- package/build/engine.js +24 -16
- package/build/engine.js.map +1 -1
- package/build/facades/dev.d.ts +9 -0
- package/build/facades/dev.d.ts.map +1 -1
- package/build/facades/dev.js +9 -0
- package/build/facades/dev.js.map +1 -1
- package/build/facades/display.d.ts +10 -3
- package/build/facades/display.d.ts.map +1 -1
- package/build/facades/display.js +22 -8
- package/build/facades/display.js.map +1 -1
- package/build/facades/displayMirror.d.ts +11 -0
- package/build/facades/displayMirror.d.ts.map +1 -1
- package/build/facades/displayMirror.js +22 -0
- package/build/facades/displayMirror.js.map +1 -1
- package/build/facades/glasses.d.ts +31 -1
- package/build/facades/glasses.d.ts.map +1 -1
- package/build/facades/glasses.js +51 -0
- package/build/facades/glasses.js.map +1 -1
- package/build/facades/memory.d.ts +0 -6
- package/build/facades/memory.d.ts.map +1 -1
- package/build/facades/memory.js +1 -9
- package/build/facades/memory.js.map +1 -1
- package/build/facades/miniapps.d.ts +3 -1
- package/build/facades/miniapps.d.ts.map +1 -1
- package/build/facades/miniapps.js +3 -1
- package/build/facades/miniapps.js.map +1 -1
- package/build/facades/pairing.d.ts.map +1 -1
- package/build/facades/pairing.js +5 -4
- package/build/facades/pairing.js.map +1 -1
- package/build/facades/permissions.d.ts +2 -0
- package/build/facades/permissions.d.ts.map +1 -1
- package/build/facades/permissions.js +48 -0
- package/build/facades/permissions.js.map +1 -1
- package/build/facades/phoneNotifications.d.ts +20 -9
- package/build/facades/phoneNotifications.d.ts.map +1 -1
- package/build/facades/phoneNotifications.js +33 -26
- package/build/facades/phoneNotifications.js.map +1 -1
- package/build/facades/settings.d.ts.map +1 -1
- package/build/facades/settings.js +1 -2
- package/build/facades/settings.js.map +1 -1
- package/build/generated/releaseMetadata.js +4 -4
- package/build/generated/releaseMetadata.js.map +1 -1
- package/build/index.d.ts +6 -4
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5 -4
- package/build/index.js.map +1 -1
- package/build/react/MentraLiveOtaFlow.js +2 -2
- package/build/react/MentraLiveOtaFlow.js.map +1 -1
- package/build/react/useMentraLiveOta.d.ts.map +1 -1
- package/build/react/useMentraLiveOta.js +8 -7
- package/build/react/useMentraLiveOta.js.map +1 -1
- package/build/runtime/config.d.ts +1 -1
- package/build/runtime/config.d.ts.map +1 -1
- package/build/runtime/config.js.map +1 -1
- package/build/services/AppRegistry.d.ts +4 -1
- package/build/services/AppRegistry.d.ts.map +1 -1
- package/build/services/AppRegistry.js +21 -1
- package/build/services/AppRegistry.js.map +1 -1
- package/build/services/BlobStore.d.ts +2 -2
- package/build/services/BlobStore.js +3 -3
- package/build/services/BlobStore.js.map +1 -1
- package/build/services/CloudClientService.d.ts +7 -3
- package/build/services/CloudClientService.d.ts.map +1 -1
- package/build/services/CloudClientService.js +34 -9
- package/build/services/CloudClientService.js.map +1 -1
- package/build/services/DevServerBridge.d.ts +1 -18
- package/build/services/DevServerBridge.d.ts.map +1 -1
- package/build/services/DevServerBridge.js +9 -8
- package/build/services/DevServerBridge.js.map +1 -1
- package/build/services/DeviceEventRouter.d.ts.map +1 -1
- package/build/services/DeviceEventRouter.js +58 -71
- package/build/services/DeviceEventRouter.js.map +1 -1
- package/build/services/DisplayDiagnostics.d.ts +5 -0
- package/build/services/DisplayDiagnostics.d.ts.map +1 -0
- package/build/services/DisplayDiagnostics.js +105 -0
- package/build/services/DisplayDiagnostics.js.map +1 -0
- package/build/services/DisplayProcessor.d.ts +6 -7
- package/build/services/DisplayProcessor.d.ts.map +1 -1
- package/build/services/DisplayProcessor.js +17 -45
- package/build/services/DisplayProcessor.js.map +1 -1
- package/build/services/GestureDotsService.d.ts +10 -4
- package/build/services/GestureDotsService.d.ts.map +1 -1
- package/build/services/GestureDotsService.js +70 -16
- package/build/services/GestureDotsService.js.map +1 -1
- package/build/services/GlassesKeyboardInput.d.ts +77 -0
- package/build/services/GlassesKeyboardInput.d.ts.map +1 -0
- package/build/services/GlassesKeyboardInput.js +261 -0
- package/build/services/GlassesKeyboardInput.js.map +1 -0
- package/build/services/GlassesSensorService.d.ts +47 -0
- package/build/services/GlassesSensorService.d.ts.map +1 -0
- package/build/services/GlassesSensorService.js +242 -0
- package/build/services/GlassesSensorService.js.map +1 -0
- package/build/services/GlassesTouchInput.d.ts +14 -0
- package/build/services/GlassesTouchInput.d.ts.map +1 -0
- package/build/services/GlassesTouchInput.js +107 -0
- package/build/services/GlassesTouchInput.js.map +1 -0
- package/build/services/HeadingService.d.ts +0 -6
- package/build/services/HeadingService.d.ts.map +1 -1
- package/build/services/HeadingService.js +0 -27
- package/build/services/HeadingService.js.map +1 -1
- package/build/services/HotspotShutdown.d.ts.map +1 -1
- package/build/services/HotspotShutdown.js +2 -1
- package/build/services/HotspotShutdown.js.map +1 -1
- package/build/services/JSCrashloopReportService.js +2 -2
- package/build/services/JSCrashloopReportService.js.map +1 -1
- package/build/services/JSRouter.d.ts +6 -4
- package/build/services/JSRouter.d.ts.map +1 -1
- package/build/services/JSRouter.js +15 -13
- package/build/services/JSRouter.js.map +1 -1
- package/build/services/LocalDisplayManager.d.ts +35 -7
- package/build/services/LocalDisplayManager.d.ts.map +1 -1
- package/build/services/LocalDisplayManager.js +105 -27
- package/build/services/LocalDisplayManager.js.map +1 -1
- package/build/services/LocalMiniappDataMigration.d.ts +1 -1
- package/build/services/LocalMiniappDataMigration.js +1 -1
- package/build/services/LocalMiniappDataMigration.js.map +1 -1
- package/build/services/LocalMiniappRuntime.d.ts +64 -11
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
- package/build/services/LocalMiniappRuntime.js +441 -35
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- package/build/services/LocalSttFallbackCoordinator.d.ts +3 -0
- package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -1
- package/build/services/LocalSttFallbackCoordinator.js +27 -8
- package/build/services/LocalSttFallbackCoordinator.js.map +1 -1
- package/build/services/MemoryStore.d.ts +8 -33
- package/build/services/MemoryStore.d.ts.map +1 -1
- package/build/services/MemoryStore.js +30 -56
- package/build/services/MemoryStore.js.map +1 -1
- package/build/services/MiniappEngine.d.ts +3 -3
- package/build/services/MiniappEngine.js +7 -7
- package/build/services/MiniappEngine.js.map +1 -1
- package/build/services/MiniappLauncher.d.ts +8 -0
- package/build/services/MiniappLauncher.d.ts.map +1 -1
- package/build/services/MiniappLauncher.js +19 -1
- package/build/services/MiniappLauncher.js.map +1 -1
- package/build/services/MirrorService.d.ts +24 -0
- package/build/services/MirrorService.d.ts.map +1 -0
- package/build/services/MirrorService.js +132 -0
- package/build/services/MirrorService.js.map +1 -0
- package/build/services/NativeNavigationService.d.ts +2 -3
- package/build/services/NativeNavigationService.d.ts.map +1 -1
- package/build/services/NativeNavigationService.js +24 -21
- package/build/services/NativeNavigationService.js.map +1 -1
- package/build/services/NavigationHandlers.d.ts.map +1 -1
- package/build/services/NavigationHandlers.js +10 -5
- package/build/services/NavigationHandlers.js.map +1 -1
- package/build/services/OtaInstallCoordinator.d.ts.map +1 -1
- package/build/services/OtaInstallCoordinator.js +24 -23
- package/build/services/OtaInstallCoordinator.js.map +1 -1
- package/build/services/PairedGlassesLatch.d.ts +7 -0
- package/build/services/PairedGlassesLatch.d.ts.map +1 -0
- package/build/services/PairedGlassesLatch.js +38 -0
- package/build/services/PairedGlassesLatch.js.map +1 -0
- package/build/services/PhoneActivity.d.ts +23 -0
- package/build/services/PhoneActivity.d.ts.map +1 -0
- package/build/services/PhoneActivity.js +111 -0
- package/build/services/PhoneActivity.js.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -1
- package/build/services/PhoneCameraFovCoordinator.js +4 -3
- package/build/services/PhoneCameraFovCoordinator.js.map +1 -1
- package/build/services/PhoneNotificationsSync.d.ts +40 -6
- package/build/services/PhoneNotificationsSync.d.ts.map +1 -1
- package/build/services/PhoneNotificationsSync.js +160 -84
- package/build/services/PhoneNotificationsSync.js.map +1 -1
- package/build/services/PhonePhotoCoordinator.d.ts.map +1 -1
- package/build/services/PhonePhotoCoordinator.js +6 -5
- package/build/services/PhonePhotoCoordinator.js.map +1 -1
- package/build/services/PhoneStreamCoordinator.d.ts.map +1 -1
- package/build/services/PhoneStreamCoordinator.js +8 -7
- package/build/services/PhoneStreamCoordinator.js.map +1 -1
- package/build/services/STTModelManager.d.ts +3 -0
- package/build/services/STTModelManager.d.ts.map +1 -1
- package/build/services/STTModelManager.js +15 -1
- package/build/services/STTModelManager.js.map +1 -1
- package/build/services/SceneRenderer.d.ts +43 -2
- package/build/services/SceneRenderer.d.ts.map +1 -1
- package/build/services/SceneRenderer.js +123 -8
- package/build/services/SceneRenderer.js.map +1 -1
- package/build/services/StreamLifecycleController.d.ts.map +1 -1
- package/build/services/StreamLifecycleController.js +6 -14
- package/build/services/StreamLifecycleController.js.map +1 -1
- package/build/services/TTSModelManager.js +1 -1
- package/build/services/TTSModelManager.js.map +1 -1
- package/build/services/UIRouter.d.ts +2 -2
- package/build/services/UIRouter.js +5 -5
- package/build/services/UIRouter.js.map +1 -1
- package/build/services/asg/galleryPathMigration.js +1 -1
- package/build/services/asg/galleryPathMigration.js.map +1 -1
- package/build/services/asg/gallerySyncService.js +2 -2
- package/build/services/asg/gallerySyncService.js.map +1 -1
- package/build/services/asg/localStorageService.d.ts.map +1 -1
- package/build/services/asg/localStorageService.js +3 -3
- package/build/services/asg/localStorageService.js.map +1 -1
- package/build/services/debug/DashboardOpenTrace.d.ts +32 -0
- package/build/services/debug/DashboardOpenTrace.d.ts.map +1 -0
- package/build/services/debug/DashboardOpenTrace.js +128 -0
- package/build/services/debug/DashboardOpenTrace.js.map +1 -0
- package/build/services/debug/dashboardOpenTimeline.d.ts +77 -0
- package/build/services/debug/dashboardOpenTimeline.d.ts.map +1 -0
- package/build/services/debug/dashboardOpenTimeline.js +195 -0
- package/build/services/debug/dashboardOpenTimeline.js.map +1 -0
- package/build/services/effectiveCapabilities.d.ts.map +1 -1
- package/build/services/effectiveCapabilities.js +25 -13
- package/build/services/effectiveCapabilities.js.map +1 -1
- package/build/services/gestureClaims.d.ts +34 -15
- package/build/services/gestureClaims.d.ts.map +1 -1
- package/build/services/gestureClaims.js +42 -21
- package/build/services/gestureClaims.js.map +1 -1
- package/build/services/manifestFields.d.ts +9 -0
- package/build/services/manifestFields.d.ts.map +1 -0
- package/build/services/manifestFields.js +26 -0
- package/build/services/manifestFields.js.map +1 -0
- package/build/services/memoryStoreInstance.d.ts +0 -10
- package/build/services/memoryStoreInstance.d.ts.map +1 -1
- package/build/services/memoryStoreInstance.js +2 -31
- package/build/services/memoryStoreInstance.js.map +1 -1
- package/build/services/mirrorSnapshot.d.ts +16 -0
- package/build/services/mirrorSnapshot.d.ts.map +1 -0
- package/build/services/mirrorSnapshot.js +102 -0
- package/build/services/mirrorSnapshot.js.map +1 -0
- package/build/services/nativeNavigationGate.d.ts +8 -0
- package/build/services/nativeNavigationGate.d.ts.map +1 -0
- package/build/services/nativeNavigationGate.js +12 -0
- package/build/services/nativeNavigationGate.js.map +1 -0
- package/build/services/notificationAppCatalog.d.ts +7 -0
- package/build/services/notificationAppCatalog.d.ts.map +1 -0
- package/build/services/notificationAppCatalog.js +16 -0
- package/build/services/notificationAppCatalog.js.map +1 -0
- package/build/services/notifications/notificationPolicy.d.ts +55 -0
- package/build/services/notifications/notificationPolicy.d.ts.map +1 -0
- package/build/services/notifications/notificationPolicy.js +41 -0
- package/build/services/notifications/notificationPolicy.js.map +1 -0
- package/build/services/pages/OverlayPages.d.ts +26 -0
- package/build/services/pages/OverlayPages.d.ts.map +1 -0
- package/build/services/pages/OverlayPages.js +80 -0
- package/build/services/pages/OverlayPages.js.map +1 -0
- package/build/services/pages/PageHost.d.ts +32 -0
- package/build/services/pages/PageHost.d.ts.map +1 -0
- package/build/services/pages/PageHost.js +99 -0
- package/build/services/pages/PageHost.js.map +1 -0
- package/build/services/pages/overlayApps.d.ts +25 -0
- package/build/services/pages/overlayApps.d.ts.map +1 -0
- package/build/services/pages/overlayApps.js +66 -0
- package/build/services/pages/overlayApps.js.map +1 -0
- package/build/services/pages/pageEligibility.d.ts +9 -0
- package/build/services/pages/pageEligibility.d.ts.map +1 -0
- package/build/services/pages/pageEligibility.js +27 -0
- package/build/services/pages/pageEligibility.js.map +1 -0
- package/build/services/settingsBridge.d.ts +58 -0
- package/build/services/settingsBridge.d.ts.map +1 -0
- package/build/services/settingsBridge.js +90 -0
- package/build/services/settingsBridge.js.map +1 -0
- package/build/services/speakerProfileStoreInstance.js +1 -1
- package/build/services/speakerProfileStoreInstance.js.map +1 -1
- package/build/services/uiShim.d.ts +1 -1
- package/build/services/uiShim.js +4 -4
- package/build/services/uiShim.js.map +1 -1
- package/build/stores/appVisibility.d.ts +28 -0
- package/build/stores/appVisibility.d.ts.map +1 -1
- package/build/stores/appVisibility.js +34 -0
- package/build/stores/appVisibility.js.map +1 -1
- package/build/stores/apps.d.ts +13 -0
- package/build/stores/apps.d.ts.map +1 -1
- package/build/stores/apps.js +66 -12
- package/build/stores/apps.js.map +1 -1
- package/build/stores/bluetoothSettingKeys.js +1 -1
- package/build/stores/bluetoothSettingKeys.js.map +1 -1
- package/build/stores/display.d.ts +3 -3
- package/build/stores/display.d.ts.map +1 -1
- package/build/stores/display.js +16 -4
- package/build/stores/display.js.map +1 -1
- package/build/stores/glasses.d.ts.map +1 -1
- package/build/stores/glasses.js +14 -1
- package/build/stores/glasses.js.map +1 -1
- package/build/stores/settings.d.ts +1 -0
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +170 -44
- package/build/stores/settings.js.map +1 -1
- package/build/types/applet.d.ts +14 -1
- package/build/types/applet.d.ts.map +1 -1
- package/build/types/applet.js.map +1 -1
- package/build/types/capabilities/even-realities-g2.d.ts.map +1 -1
- package/build/types/capabilities/even-realities-g2.js +5 -0
- package/build/types/capabilities/even-realities-g2.js.map +1 -1
- package/build/types/capabilities/simulated-glasses.d.ts +1 -1
- package/build/types/capabilities/simulated-glasses.d.ts.map +1 -1
- package/build/types/capabilities/simulated-glasses.js +7 -4
- package/build/types/capabilities/simulated-glasses.js.map +1 -1
- package/build/types/hardware.d.ts +20 -1
- package/build/types/hardware.d.ts.map +1 -1
- package/build/types/hardware.js +2 -0
- package/build/types/hardware.js.map +1 -1
- package/build/types/index.d.ts +1 -0
- package/build/types/index.d.ts.map +1 -1
- package/build/types/index.js +1 -0
- package/build/types/index.js.map +1 -1
- package/build/utils/debouncedPatch.d.ts +3 -1
- package/build/utils/debouncedPatch.d.ts.map +1 -1
- package/build/utils/debouncedPatch.js +6 -3
- package/build/utils/debouncedPatch.js.map +1 -1
- package/build/utils/devMiniappLaunch.d.ts.map +1 -1
- package/build/utils/devMiniappLaunch.js +4 -3
- package/build/utils/devMiniappLaunch.js.map +1 -1
- package/build/utils/display/measurer/TextMeasurer.d.ts +2 -159
- package/build/utils/display/measurer/TextMeasurer.d.ts.map +1 -1
- package/build/utils/display/measurer/TextMeasurer.js +2 -272
- package/build/utils/display/measurer/TextMeasurer.js.map +1 -1
- package/build/utils/display/measurer/script-detection.d.ts +1 -52
- package/build/utils/display/measurer/script-detection.d.ts.map +1 -1
- package/build/utils/display/measurer/script-detection.js +2 -183
- package/build/utils/display/measurer/script-detection.js.map +1 -1
- package/build/utils/display/pixelArt.d.ts +3 -0
- package/build/utils/display/pixelArt.d.ts.map +1 -0
- package/build/utils/display/pixelArt.js +3 -0
- package/build/utils/display/pixelArt.js.map +1 -0
- package/build/utils/display/profiles/g1.d.ts +1 -32
- package/build/utils/display/profiles/g1.d.ts.map +1 -1
- package/build/utils/display/profiles/g1.js +2 -212
- package/build/utils/display/profiles/g1.js.map +1 -1
- package/build/utils/display/profiles/g2.d.ts +1 -12
- package/build/utils/display/profiles/g2.d.ts.map +1 -1
- package/build/utils/display/profiles/g2.js +2 -33
- package/build/utils/display/profiles/g2.js.map +1 -1
- package/build/utils/display/profiles/nex.d.ts +1 -9
- package/build/utils/display/profiles/nex.d.ts.map +1 -1
- package/build/utils/display/profiles/nex.js +2 -149
- package/build/utils/display/profiles/nex.js.map +1 -1
- package/build/utils/display/profiles/types.d.ts +1 -102
- package/build/utils/display/profiles/types.d.ts.map +1 -1
- package/build/utils/display/profiles/types.js.map +1 -1
- package/build/utils/display/profiles/z100.d.ts +1 -32
- package/build/utils/display/profiles/z100.d.ts.map +1 -1
- package/build/utils/display/profiles/z100.js +2 -181
- package/build/utils/display/profiles/z100.js.map +1 -1
- package/build/utils/display/scene/degrade.d.ts.map +1 -1
- package/build/utils/display/scene/degrade.js +4 -1
- package/build/utils/display/scene/degrade.js.map +1 -1
- package/build/utils/display/scene/differ.d.ts +13 -1
- package/build/utils/display/scene/differ.d.ts.map +1 -1
- package/build/utils/display/scene/differ.js +22 -0
- package/build/utils/display/scene/differ.js.map +1 -1
- package/build/utils/display/scene/index.d.ts +1 -1
- package/build/utils/display/scene/index.d.ts.map +1 -1
- package/build/utils/display/scene/index.js.map +1 -1
- package/build/utils/display/scene/process.d.ts.map +1 -1
- package/build/utils/display/scene/process.js +183 -11
- package/build/utils/display/scene/process.js.map +1 -1
- package/build/utils/display/scene/store.d.ts +1 -1
- package/build/utils/display/scene/store.d.ts.map +1 -1
- package/build/utils/display/scene/store.js +0 -0
- package/build/utils/display/scene/store.js.map +1 -1
- package/build/utils/display/scene/svgPath.d.ts +9 -0
- package/build/utils/display/scene/svgPath.d.ts.map +1 -0
- package/build/utils/display/scene/svgPath.js +167 -0
- package/build/utils/display/scene/svgPath.js.map +1 -0
- package/build/utils/display/scene/types.d.ts +2 -142
- package/build/utils/display/scene/types.d.ts.map +1 -1
- package/build/utils/display/scene/types.js +0 -0
- package/build/utils/display/scene/types.js.map +1 -1
- package/build/utils/display/wrapper/TextWrapper.d.ts +1 -101
- package/build/utils/display/wrapper/TextWrapper.d.ts.map +1 -1
- package/build/utils/display/wrapper/TextWrapper.js +2 -470
- package/build/utils/display/wrapper/TextWrapper.js.map +1 -1
- package/build/utils/display/wrapper/types.d.ts +2 -74
- package/build/utils/display/wrapper/types.d.ts.map +1 -1
- package/build/utils/display/wrapper/types.js +2 -10
- package/build/utils/display/wrapper/types.js.map +1 -1
- package/build/utils/hardware/hardware.js +1 -1
- package/build/utils/hardware/hardware.js.map +1 -1
- package/build/utils/timers/timers.d.ts.map +1 -1
- package/build/utils/timers/timers.js +26 -4
- package/build/utils/timers/timers.js.map +1 -1
- package/package.json +8 -8
- package/src/engine.ts +24 -15
- package/src/facades/dev.ts +10 -0
- package/src/facades/display.ts +21 -8
- package/src/facades/displayMirror.ts +29 -0
- package/src/facades/glasses.ts +61 -1
- package/src/facades/memory.ts +1 -12
- package/src/facades/miniapps.ts +4 -1
- package/src/facades/pairing.ts +8 -6
- package/src/facades/permissions.ts +46 -0
- package/src/facades/phoneNotifications.ts +45 -26
- package/src/facades/settings.ts +1 -2
- package/src/generated/releaseMetadata.ts +4 -4
- package/src/index.ts +6 -9
- package/src/react/MentraLiveOtaFlow.tsx +2 -2
- package/src/react/useMentraLiveOta.ts +14 -8
- package/src/runtime/config.ts +1 -1
- package/src/services/AppRegistry.ts +43 -7
- package/src/services/BlobStore.ts +3 -3
- package/src/services/CloudClientService.ts +37 -10
- package/src/services/DevServerBridge.ts +12 -10
- package/src/services/DeviceEventRouter.ts +73 -74
- package/src/services/DisplayDiagnostics.ts +107 -0
- package/src/services/DisplayProcessor.ts +20 -55
- package/src/services/GestureDotsService.ts +77 -16
- package/src/services/GlassesKeyboardInput.ts +306 -0
- package/src/services/GlassesSensorService.ts +233 -0
- package/src/services/GlassesTouchInput.ts +128 -0
- package/src/services/HeadingService.ts +0 -24
- package/src/services/HotspotShutdown.ts +3 -1
- package/src/services/JSCrashloopReportService.ts +2 -2
- package/src/services/JSRouter.ts +29 -14
- package/src/services/LocalDisplayManager.ts +112 -26
- package/src/services/LocalMiniappDataMigration.ts +1 -1
- package/src/services/LocalMiniappRuntime.ts +500 -43
- package/src/services/LocalSttFallbackCoordinator.ts +28 -7
- package/src/services/MemoryStore.ts +32 -80
- package/src/services/MiniappEngine.ts +7 -7
- package/src/services/MiniappLauncher.ts +25 -1
- package/src/services/MirrorService.ts +139 -0
- package/src/services/NativeNavigationService.ts +29 -25
- package/src/services/NavigationHandlers.ts +10 -5
- package/src/services/OtaInstallCoordinator.ts +36 -34
- package/src/services/PairedGlassesLatch.ts +39 -0
- package/src/services/PhoneActivity.ts +116 -0
- package/src/services/PhoneCameraFovCoordinator.ts +6 -4
- package/src/services/PhoneNotificationsSync.ts +185 -103
- package/src/services/PhonePhotoCoordinator.ts +9 -10
- package/src/services/PhoneStreamCoordinator.ts +13 -11
- package/src/services/STTModelManager.ts +15 -1
- package/src/services/SceneRenderer.ts +148 -10
- package/src/services/StreamLifecycleController.ts +9 -7
- package/src/services/TTSModelManager.ts +1 -1
- package/src/services/UIRouter.ts +5 -5
- package/src/services/asg/galleryPathMigration.ts +1 -1
- package/src/services/asg/gallerySyncService.ts +2 -2
- package/src/services/asg/localStorageService.ts +3 -3
- package/src/services/debug/DashboardOpenTrace.ts +153 -0
- package/src/services/debug/dashboardOpenTimeline.ts +237 -0
- package/src/services/effectiveCapabilities.ts +32 -13
- package/src/services/gestureClaims.ts +72 -23
- package/src/services/manifestFields.ts +23 -0
- package/src/services/memoryStoreInstance.ts +2 -34
- package/src/services/mirrorSnapshot.ts +116 -0
- package/src/services/nativeNavigationGate.ts +14 -0
- package/src/services/notificationAppCatalog.ts +21 -0
- package/src/services/notifications/notificationPolicy.ts +87 -0
- package/src/services/pages/OverlayPages.ts +86 -0
- package/src/services/pages/PageHost.ts +116 -0
- package/src/services/pages/overlayApps.ts +72 -0
- package/src/services/pages/pageEligibility.ts +30 -0
- package/src/services/settingsBridge.ts +111 -0
- package/src/services/speakerProfileStoreInstance.ts +1 -1
- package/src/services/uiShim.ts +4 -4
- package/src/stores/appVisibility.ts +45 -0
- package/src/stores/apps.ts +110 -32
- package/src/stores/bluetoothSettingKeys.ts +1 -1
- package/src/stores/display.ts +18 -7
- package/src/stores/glasses.ts +15 -1
- package/src/stores/settings.ts +175 -51
- package/src/types/applet.ts +14 -1
- package/src/types/capabilities/even-realities-g2.ts +6 -0
- package/src/types/capabilities/simulated-glasses.ts +8 -4
- package/src/types/hardware.ts +34 -1
- package/src/types/index.ts +1 -0
- package/src/utils/debouncedPatch.ts +8 -4
- package/src/utils/devMiniappLaunch.ts +5 -3
- package/src/utils/display/measurer/TextMeasurer.ts +3 -346
- package/src/utils/display/measurer/script-detection.ts +10 -218
- package/src/utils/display/pixelArt.ts +3 -0
- package/src/utils/display/profiles/g1.ts +2 -236
- package/src/utils/display/profiles/g2.ts +2 -39
- package/src/utils/display/profiles/nex.ts +2 -166
- package/src/utils/display/profiles/types.ts +9 -132
- package/src/utils/display/profiles/z100.ts +2 -198
- package/src/utils/display/scene/degrade.ts +4 -1
- package/src/utils/display/scene/differ.ts +25 -1
- package/src/utils/display/scene/index.ts +5 -0
- package/src/utils/display/scene/process.ts +196 -13
- package/src/utils/display/scene/store.ts +0 -0
- package/src/utils/display/scene/svgPath.ts +163 -0
- package/src/utils/display/scene/types.ts +0 -0
- package/src/utils/display/wrapper/TextWrapper.ts +2 -546
- package/src/utils/display/wrapper/types.ts +3 -102
- package/src/utils/hardware/hardware.ts +1 -1
- package/src/utils/timers/timers.ts +32 -4
- package/build/services/CustomDashboardModel.d.ts +0 -48
- package/build/services/CustomDashboardModel.d.ts.map +0 -1
- package/build/services/CustomDashboardModel.js +0 -73
- package/build/services/CustomDashboardModel.js.map +0 -1
- package/build/services/CustomDashboardService.d.ts +0 -63
- package/build/services/CustomDashboardService.d.ts.map +0 -1
- package/build/services/CustomDashboardService.js +0 -576
- package/build/services/CustomDashboardService.js.map +0 -1
- package/build/services/DashboardCoordinator.d.ts +0 -26
- package/build/services/DashboardCoordinator.d.ts.map +0 -1
- package/build/services/DashboardCoordinator.js +0 -125
- package/build/services/DashboardCoordinator.js.map +0 -1
- package/build/services/iosNotificationAppCatalog.d.ts +0 -13
- package/build/services/iosNotificationAppCatalog.d.ts.map +0 -1
- package/build/services/iosNotificationAppCatalog.js +0 -28
- package/build/services/iosNotificationAppCatalog.js.map +0 -1
- package/src/services/CustomDashboardModel.ts +0 -83
- package/src/services/CustomDashboardService.ts +0 -598
- package/src/services/DashboardCoordinator.ts +0 -121
- package/src/services/iosNotificationAppCatalog.ts +0 -39
|
@@ -1,33 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* Vuzix Z100 Smart Glasses Display Profile
|
|
4
|
-
*
|
|
5
|
-
* The Z100 has a green monochrome display with 640x480 resolution.
|
|
6
|
-
* It uses the Vuzix Ultralite SDK and Noto Sans font family.
|
|
7
|
-
*
|
|
8
|
-
* Display specs:
|
|
9
|
-
* - Resolution: 640x480
|
|
10
|
-
* - Usable text width: ~390px (empirically tested - SDK applies margins)
|
|
11
|
-
* - Color: Green monochrome
|
|
12
|
-
* - Max text lines: 7
|
|
13
|
-
* - Font: Noto Sans Regular at 21px
|
|
14
|
-
* - No bitmap support via text commands
|
|
15
|
-
* - Adjustable brightness
|
|
16
|
-
*
|
|
17
|
-
* NOTE: The Vuzix Ultralite SDK handles text rendering internally and applies
|
|
18
|
-
* its own margins/padding. The usable text width is significantly less than
|
|
19
|
-
* the physical 640px resolution. Empirical testing shows ~42 characters of
|
|
20
|
-
* mixed text (387px measured) fits on one line before the SDK wraps.
|
|
21
|
-
*/
|
|
22
|
-
export declare const Z100_PROFILE: DisplayProfile;
|
|
23
|
-
/**
|
|
24
|
-
* Get the hyphen width for Z100 in pixels.
|
|
25
|
-
* Used for line breaking calculations.
|
|
26
|
-
*/
|
|
27
|
-
export declare const Z100_HYPHEN_WIDTH_PX = 7;
|
|
28
|
-
/**
|
|
29
|
-
* Get the space width for Z100 in pixels.
|
|
30
|
-
* Used for column alignment calculations.
|
|
31
|
-
*/
|
|
32
|
-
export declare const Z100_SPACE_WIDTH_PX = 5;
|
|
1
|
+
export { Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX } from "@glassly/miniapp/display";
|
|
33
2
|
//# sourceMappingURL=z100.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"z100.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/profiles/z100.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"z100.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/profiles/z100.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAC,MAAM,0BAA0B,CAAA"}
|
|
@@ -1,182 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* These are pixel widths at the default font size used by the Z100 display.
|
|
5
|
-
* The Z100 uses Noto Sans as its system font.
|
|
6
|
-
*
|
|
7
|
-
* Extracted using: node scripts/extract-font-metrics.js NotoSans-Regular.ttf 21
|
|
8
|
-
*/
|
|
9
|
-
const Z100_GLYPH_WIDTHS = {
|
|
10
|
-
// Space and punctuation
|
|
11
|
-
" ": 5,
|
|
12
|
-
"!": 6,
|
|
13
|
-
'"': 9,
|
|
14
|
-
"#": 14,
|
|
15
|
-
"$": 12,
|
|
16
|
-
"%": 17,
|
|
17
|
-
"&": 15,
|
|
18
|
-
"'": 5,
|
|
19
|
-
"(": 6,
|
|
20
|
-
")": 6,
|
|
21
|
-
"*": 12,
|
|
22
|
-
"+": 12,
|
|
23
|
-
",": 6,
|
|
24
|
-
"-": 7, // Hyphen width - important for line breaking
|
|
25
|
-
".": 6,
|
|
26
|
-
"/": 8,
|
|
27
|
-
// Numbers
|
|
28
|
-
"0": 12,
|
|
29
|
-
"1": 12,
|
|
30
|
-
"2": 12,
|
|
31
|
-
"3": 12,
|
|
32
|
-
"4": 12,
|
|
33
|
-
"5": 12,
|
|
34
|
-
"6": 12,
|
|
35
|
-
"7": 12,
|
|
36
|
-
"8": 12,
|
|
37
|
-
"9": 12,
|
|
38
|
-
// More punctuation
|
|
39
|
-
":": 6,
|
|
40
|
-
";": 6,
|
|
41
|
-
"<": 12,
|
|
42
|
-
"=": 12,
|
|
43
|
-
">": 12,
|
|
44
|
-
"?": 9,
|
|
45
|
-
"@": 19,
|
|
46
|
-
// Uppercase
|
|
47
|
-
"A": 13,
|
|
48
|
-
"B": 14,
|
|
49
|
-
"C": 13,
|
|
50
|
-
"D": 15,
|
|
51
|
-
"E": 12,
|
|
52
|
-
"F": 11,
|
|
53
|
-
"G": 15,
|
|
54
|
-
"H": 16,
|
|
55
|
-
"I": 7,
|
|
56
|
-
"J": 6,
|
|
57
|
-
"K": 13,
|
|
58
|
-
"L": 11,
|
|
59
|
-
"M": 19,
|
|
60
|
-
"N": 16,
|
|
61
|
-
"O": 16,
|
|
62
|
-
"P": 13,
|
|
63
|
-
"Q": 16,
|
|
64
|
-
"R": 13,
|
|
65
|
-
"S": 12,
|
|
66
|
-
"T": 12,
|
|
67
|
-
"U": 15,
|
|
68
|
-
"V": 13,
|
|
69
|
-
"W": 20,
|
|
70
|
-
"X": 12,
|
|
71
|
-
"Y": 12,
|
|
72
|
-
"Z": 12,
|
|
73
|
-
// Brackets & special
|
|
74
|
-
"[": 7,
|
|
75
|
-
"\\": 8,
|
|
76
|
-
"]": 7,
|
|
77
|
-
"^": 12,
|
|
78
|
-
"_": 9,
|
|
79
|
-
"`": 6,
|
|
80
|
-
// Lowercase
|
|
81
|
-
"a": 12,
|
|
82
|
-
"b": 13,
|
|
83
|
-
"c": 10,
|
|
84
|
-
"d": 13,
|
|
85
|
-
"e": 12,
|
|
86
|
-
"f": 7,
|
|
87
|
-
"g": 13,
|
|
88
|
-
"h": 13,
|
|
89
|
-
"i": 5,
|
|
90
|
-
"j": 5,
|
|
91
|
-
"k": 11,
|
|
92
|
-
"l": 5,
|
|
93
|
-
"m": 20,
|
|
94
|
-
"n": 13,
|
|
95
|
-
"o": 13,
|
|
96
|
-
"p": 13,
|
|
97
|
-
"q": 13,
|
|
98
|
-
"r": 9,
|
|
99
|
-
"s": 10,
|
|
100
|
-
"t": 8,
|
|
101
|
-
"u": 13,
|
|
102
|
-
"v": 11,
|
|
103
|
-
"w": 17,
|
|
104
|
-
"x": 11,
|
|
105
|
-
"y": 11,
|
|
106
|
-
"z": 10,
|
|
107
|
-
// More special
|
|
108
|
-
"{": 8,
|
|
109
|
-
"|": 12,
|
|
110
|
-
"}": 8,
|
|
111
|
-
"~": 12,
|
|
112
|
-
};
|
|
113
|
-
/**
|
|
114
|
-
* Vuzix Z100 Smart Glasses Display Profile
|
|
115
|
-
*
|
|
116
|
-
* The Z100 has a green monochrome display with 640x480 resolution.
|
|
117
|
-
* It uses the Vuzix Ultralite SDK and Noto Sans font family.
|
|
118
|
-
*
|
|
119
|
-
* Display specs:
|
|
120
|
-
* - Resolution: 640x480
|
|
121
|
-
* - Usable text width: ~390px (empirically tested - SDK applies margins)
|
|
122
|
-
* - Color: Green monochrome
|
|
123
|
-
* - Max text lines: 7
|
|
124
|
-
* - Font: Noto Sans Regular at 21px
|
|
125
|
-
* - No bitmap support via text commands
|
|
126
|
-
* - Adjustable brightness
|
|
127
|
-
*
|
|
128
|
-
* NOTE: The Vuzix Ultralite SDK handles text rendering internally and applies
|
|
129
|
-
* its own margins/padding. The usable text width is significantly less than
|
|
130
|
-
* the physical 640px resolution. Empirical testing shows ~42 characters of
|
|
131
|
-
* mixed text (387px measured) fits on one line before the SDK wraps.
|
|
132
|
-
*/
|
|
133
|
-
export const Z100_PROFILE = {
|
|
134
|
-
id: "vuzix-z100",
|
|
135
|
-
name: "Vuzix Z100",
|
|
136
|
-
// Display dimensions
|
|
137
|
-
// Empirically tested: ~42 chars of mixed text (387px) fits before SDK wraps
|
|
138
|
-
// Using 390px to account for measurement variance
|
|
139
|
-
displayWidthPx: 390,
|
|
140
|
-
maxLines: 7,
|
|
141
|
-
// BLE constraints
|
|
142
|
-
// Z100 uses Vuzix Ultralite SDK which handles chunking internally
|
|
143
|
-
// These are conservative values for direct BLE if needed
|
|
144
|
-
maxPayloadBytes: 512,
|
|
145
|
-
bleChunkSize: 180,
|
|
146
|
-
// Font metrics - Noto Sans Regular at 21px
|
|
147
|
-
fontMetrics: {
|
|
148
|
-
glyphWidths: new Map(Object.entries(Z100_GLYPH_WIDTHS)),
|
|
149
|
-
defaultGlyphWidth: 12, // Average width from extracted metrics
|
|
150
|
-
// Z100 uses direct pixel widths, no render formula needed
|
|
151
|
-
renderFormula: (glyphWidth) => glyphWidth,
|
|
152
|
-
// Uniform-width scripts for CJK and other non-Latin
|
|
153
|
-
// Noto Sans CJK characters are typically wider
|
|
154
|
-
uniformScripts: {
|
|
155
|
-
cjk: 21, // Full-width CJK characters
|
|
156
|
-
hiragana: 21,
|
|
157
|
-
katakana: 21,
|
|
158
|
-
korean: 21,
|
|
159
|
-
cyrillic: 14, // Cyrillic is similar to Latin in Noto Sans
|
|
160
|
-
},
|
|
161
|
-
fallback: {
|
|
162
|
-
latinMaxWidth: 20, // 'W' and 'm' are the widest at 20px
|
|
163
|
-
unknownBehavior: "useLatinMax",
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
constraints: {
|
|
167
|
-
minCharsBeforeHyphen: 3,
|
|
168
|
-
noStartChars: [".", ",", "!", "?", ":", ";", ")", "]", "}", "。", ",", "!", "?", ":", ";", ")", "】", "」"],
|
|
169
|
-
noEndChars: ["(", "[", "{", "(", "【", "「"],
|
|
170
|
-
},
|
|
171
|
-
};
|
|
172
|
-
/**
|
|
173
|
-
* Get the hyphen width for Z100 in pixels.
|
|
174
|
-
* Used for line breaking calculations.
|
|
175
|
-
*/
|
|
176
|
-
export const Z100_HYPHEN_WIDTH_PX = 7;
|
|
177
|
-
/**
|
|
178
|
-
* Get the space width for Z100 in pixels.
|
|
179
|
-
* Used for column alignment calculations.
|
|
180
|
-
*/
|
|
181
|
-
export const Z100_SPACE_WIDTH_PX = 5;
|
|
1
|
+
// Moved into the SDK (@glassly/miniapp/display) so miniapps lay text out the way the host measures it; this path re-exports it for the engine.
|
|
2
|
+
export { Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX } from "@glassly/miniapp/display";
|
|
182
3
|
//# sourceMappingURL=z100.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"z100.js","sourceRoot":"","sources":["../../../../src/utils/display/profiles/z100.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"z100.js","sourceRoot":"","sources":["../../../../src/utils/display/profiles/z100.ts"],"names":[],"mappings":"AAAA,+IAA+I;AAC/I,OAAO,EAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAC,MAAM,0BAA0B,CAAA","sourcesContent":["// Moved into the SDK (@glassly/miniapp/display) so miniapps lay text out the way the host measures it; this path re-exports it for the engine.\nexport {Z100_PROFILE, Z100_HYPHEN_WIDTH_PX, Z100_SPACE_WIDTH_PX} from \"@glassly/miniapp/display\"\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"degrade.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/scene/degrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,+FAA+F;IAC/F,MAAM,EAAE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,IAAI,CAAA;IAC3D,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAYD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"degrade.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/scene/degrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,+FAA+F;IAC/F,MAAM,EAAE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,IAAI,CAAA;IAC3D,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAYD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAAG,aAAa,CAiD/E"}
|
|
@@ -22,6 +22,9 @@ export function degradeScene(input) {
|
|
|
22
22
|
let degraded = false;
|
|
23
23
|
const texts = [];
|
|
24
24
|
input.forEach((el, index) => {
|
|
25
|
+
if (el && typeof el === "object" && Array.isArray(el.points)) {
|
|
26
|
+
return; // vector shapes: decoration on a text wall
|
|
27
|
+
}
|
|
25
28
|
if (!el || typeof el !== "object" || !el.box) {
|
|
26
29
|
// Malformed element — report it like the positioning pipeline does
|
|
27
30
|
// instead of silently pretending the render was clean.
|
|
@@ -36,7 +39,7 @@ export function degradeScene(input) {
|
|
|
36
39
|
dropped.push(el.id ?? `image[${index}]`);
|
|
37
40
|
degraded = true;
|
|
38
41
|
}
|
|
39
|
-
// rects: silent drop — pure decoration on a text wall.
|
|
42
|
+
// rects and other shapes: silent drop — pure decoration on a text wall.
|
|
40
43
|
});
|
|
41
44
|
if (texts.length === 0) {
|
|
42
45
|
return { layout: null, degraded, dropped };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"degrade.js","sourceRoot":"","sources":["../../../../src/utils/display/scene/degrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAmC;IAC9D,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;QAC1B,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YAC7C,mEAAmE;YACnE,uDAAuD;YACvD,OAAO,CAAC,IAAI,CAAE,EAA2B,EAAE,EAAE,IAAI,WAAW,KAAK,GAAG,CAAC,CAAA;YACrE,QAAQ,GAAG,IAAI,CAAA;YACf,OAAM;QACR,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC;aAAM,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS,KAAK,GAAG,CAAC,CAAA;YACxC,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"degrade.js","sourceRoot":"","sources":["../../../../src/utils/display/scene/degrade.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Degrade — compile a scene for devices that can't position elements\n * (`canPosition: false`: G1, Z100). Output is a LEGACY layout that rides the\n * existing display path — DisplayProcessor wraps it there, exactly as today,\n * which is what keeps sugar byte-identical on old hardware (spec §2/§5:\n * degrade output must be UNWRAPPED; wrapping twice breaks the goldens).\n *\n * Rules (design doc §3.4.8): content-preserving, never-erroring,\n * honestly-reported. Text collapses in reading order (y, then x) joined by\n * blank lines; EXACTLY two text elements sharing a y-range with disjoint\n * x-ranges become a double_text_wall (ColumnComposer path downstream); rects\n * drop silently (decoration); images drop + report.\n */\n\nimport type {SceneElementInput} from \"./types\"\n\nexport interface DegradedScene {\n /** Legacy layout for the existing display path, or null for an empty scene (caller clears). */\n layout: {layoutType: string; [key: string]: unknown} | null\n degraded: boolean\n dropped: string[]\n}\n\ntype TextEl = Extract<SceneElementInput, {type: \"text\"}>\n\nfunction yOverlap(a: TextEl, b: TextEl): boolean {\n return a.box.y < b.box.y + b.box.h && b.box.y < a.box.y + a.box.h\n}\n\nfunction xDisjoint(a: TextEl, b: TextEl): boolean {\n return a.box.x + a.box.w <= b.box.x || b.box.x + b.box.w <= a.box.x\n}\n\nexport function degradeScene(input: readonly SceneElementInput[]): DegradedScene {\n const dropped: string[] = []\n let degraded = false\n\n const texts: TextEl[] = []\n input.forEach((el, index) => {\n if (el && typeof el === \"object\" && Array.isArray((el as {points?: unknown}).points)) {\n return // vector shapes: decoration on a text wall\n }\n if (!el || typeof el !== \"object\" || !el.box) {\n // Malformed element — report it like the positioning pipeline does\n // instead of silently pretending the render was clean.\n dropped.push((el as {id?: string} | null)?.id ?? `element[${index}]`)\n degraded = true\n return\n }\n if (el.type === \"text\") {\n texts.push(el)\n } else if (el.type === \"image\") {\n dropped.push(el.id ?? `image[${index}]`)\n degraded = true\n }\n // rects and other shapes: silent drop — pure decoration on a text wall.\n })\n\n if (texts.length === 0) {\n return {layout: null, degraded, dropped}\n }\n\n // Row exception: exactly 2 columns with clean separation — the shipped\n // double_text_wall mechanism (scope guard: nothing fancier; this is NOT a\n // layout engine).\n if (texts.length === 2 && yOverlap(texts[0], texts[1]) && xDisjoint(texts[0], texts[1])) {\n const [left, right] = texts[0].box.x <= texts[1].box.x ? [texts[0], texts[1]] : [texts[1], texts[0]]\n return {\n layout: {layoutType: \"double_text_wall\", topText: left.text ?? \"\", bottomText: right.text ?? \"\"},\n degraded,\n dropped,\n }\n }\n\n // Reading order: y, then x; join with blank lines. Downstream wrap clips\n // overflow per the device profile.\n const ordered = [...texts].sort((a, b) => a.box.y - b.box.y || a.box.x - b.box.x)\n const text = ordered\n .map((t) => t.text ?? \"\")\n .filter((t) => t.length > 0)\n .join(\"\\n\\n\")\n return {layout: {layoutType: \"text_wall\", text}, degraded, dropped}\n}\n"]}
|
|
@@ -14,15 +14,27 @@
|
|
|
14
14
|
* synthesized id from the caller (SceneStore counter). Synthesized ids are
|
|
15
15
|
* prefixed "~" so they can never collide with app-supplied ids.
|
|
16
16
|
*/
|
|
17
|
-
import type { FrameElement, SceneBox, SceneElementType } from "./types";
|
|
17
|
+
import type { FrameElement, SceneBox, SceneElementType, ScenePoint, SceneTransition } from "./types";
|
|
18
18
|
/** A processed (clamped/wrapped) element, pre-diff: id optional, no annotation yet. */
|
|
19
19
|
export interface DiffableElement {
|
|
20
|
+
/** SVG path and its checked firmware command stream (Q4 coordinates). */
|
|
21
|
+
d?: string;
|
|
22
|
+
path?: number[];
|
|
23
|
+
pathScale?: number;
|
|
24
|
+
fillRule?: "nonzero" | "evenodd";
|
|
25
|
+
rotation?: number;
|
|
26
|
+
pivot?: ScenePoint;
|
|
27
|
+
depth?: number;
|
|
20
28
|
id?: string;
|
|
21
29
|
type: SceneElementType;
|
|
22
30
|
box: SceneBox;
|
|
23
31
|
text?: string;
|
|
24
32
|
data?: string;
|
|
25
33
|
style?: FrameElement["style"];
|
|
34
|
+
points?: ScenePoint[];
|
|
35
|
+
startDeg?: number;
|
|
36
|
+
endDeg?: number;
|
|
37
|
+
transition?: SceneTransition;
|
|
26
38
|
contentHash: string;
|
|
27
39
|
}
|
|
28
40
|
export interface DiffResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/scene/differ.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAE,QAAQ,EAAe,gBAAgB,EAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/scene/differ.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAE,QAAQ,EAAe,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAC,MAAM,SAAS,CAAA;AAG/G,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,gBAAgB,CAAA;IACtB,GAAG,EAAE,QAAQ,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;IAC7B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAoCD;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,YAAY,EAAE,EAC7B,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,eAAe,EAAE,MAAM,MAAM,GAC5B,UAAU,CA2DZ"}
|
|
@@ -39,6 +39,28 @@ function buildFrameElement(el, id, change) {
|
|
|
39
39
|
out.data = el.data;
|
|
40
40
|
if (el.style !== undefined)
|
|
41
41
|
out.style = el.style;
|
|
42
|
+
if (el.points !== undefined)
|
|
43
|
+
out.points = el.points;
|
|
44
|
+
if (el.startDeg !== undefined)
|
|
45
|
+
out.startDeg = el.startDeg;
|
|
46
|
+
if (el.endDeg !== undefined)
|
|
47
|
+
out.endDeg = el.endDeg;
|
|
48
|
+
if (el.transition !== undefined)
|
|
49
|
+
out.transition = el.transition;
|
|
50
|
+
if (el.d !== undefined)
|
|
51
|
+
out.d = el.d;
|
|
52
|
+
if (el.path !== undefined)
|
|
53
|
+
out.path = el.path;
|
|
54
|
+
if (el.pathScale !== undefined)
|
|
55
|
+
out.pathScale = el.pathScale;
|
|
56
|
+
if (el.fillRule !== undefined)
|
|
57
|
+
out.fillRule = el.fillRule;
|
|
58
|
+
if (el.rotation !== undefined)
|
|
59
|
+
out.rotation = el.rotation;
|
|
60
|
+
if (el.pivot !== undefined)
|
|
61
|
+
out.pivot = el.pivot;
|
|
62
|
+
if (el.depth !== undefined)
|
|
63
|
+
out.depth = el.depth;
|
|
42
64
|
return out;
|
|
43
65
|
}
|
|
44
66
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"differ.js","sourceRoot":"","sources":["../../../../src/utils/display/scene/differ.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Scene differ — matches elements between the last frame sent to the device and\n * the next scene, and classifies each element's change. Pure set arithmetic:\n * nothing in here is device-specific (spec §1).\n *\n * Matching rules (design doc §3.4.1, in order):\n * 1. same explicit `id` + same `type` ⇒ same element\n * 2. no id: same `type` + identical box ⇒ same element\n * 3. no id: same `type`, by order among the still-unmatched\n * 4. anything unmatched in prev ⇒ removed; unmatched in next ⇒ created\n *\n * Matched no-id elements INHERIT the previous element's assigned id so the\n * device-side id⇒firmware-component mapping stays stable; fresh elements get a\n * synthesized id from the caller (SceneStore counter). Synthesized ids are\n * prefixed \"~\" so they can never collide with app-supplied ids.\n */\n\nimport type {FrameElement, SceneBox, SceneChange, SceneElementType} from \"./types\"\nimport {boxesEqual} from \"./types\"\n\n/** A processed (clamped/wrapped) element, pre-diff: id optional, no annotation yet. */\nexport interface DiffableElement {\n id?: string\n type: SceneElementType\n box: SceneBox\n text?: string\n data?: string\n style?: FrameElement[\"style\"]\n contentHash: string\n}\n\nexport interface DiffResult {\n elements: FrameElement[]\n removed: string[]\n}\n\nfunction classify(prev: FrameElement, next: DiffableElement): SceneChange {\n if (!boxesEqual(prev.box, next.box)) return \"moved\"\n if (prev.contentHash !== next.contentHash) return \"updated\"\n return \"unchanged\"\n}\n\n/**\n * Assemble the annotated FrameElement, OMITTING optional fields that are\n * undefined. A present key with an `undefined` value cannot cross the Expo\n * Android bridge — its `Map<String, Any>` converter rejects it (\"Value is\n * undefined, expected an Object\"), which surfaces as ERR_UNEXPECTED from\n * displayEvent. (iOS's `[String: Any]` bridge silently drops nils, so the\n * defect was invisible there.) Keeping the keys absent — not undefined —\n * matches the optional-field contract in types.ts.\n */\nfunction buildFrameElement(el: DiffableElement, id: string, change: SceneChange): FrameElement {\n const out: FrameElement = {id, type: el.type, box: el.box, contentHash: el.contentHash, change}\n if (el.text !== undefined) out.text = el.text\n if (el.data !== undefined) out.data = el.data\n if (el.style !== undefined) out.style = el.style\n return out\n}\n\n/**\n * Diff `next` against `prev` (the last frame sent for this app/view/device;\n * empty array for a fresh scene). `nextSyntheticId` mints ids for elements the\n * app didn't name — must be stable per (app, view) across calls (SceneStore).\n */\nexport function diffScene(\n prev: readonly FrameElement[],\n next: readonly DiffableElement[],\n nextSyntheticId: () => string,\n): DiffResult {\n const prevUnmatched = new Set(prev.map((_, i) => i))\n const prevByExplicitId = new Map<string, number>()\n prev.forEach((el, i) => {\n if (!el.id.startsWith(\"~\")) prevByExplicitId.set(`${el.type}:${el.id}`, i)\n })\n\n // matches[nextIndex] = prevIndex | undefined\n const matches: (number | undefined)[] = new Array(next.length).fill(undefined)\n\n // Pass 1: explicit id + type.\n next.forEach((el, i) => {\n if (!el.id) return\n const j = prevByExplicitId.get(`${el.type}:${el.id}`)\n if (j !== undefined && prevUnmatched.has(j)) {\n matches[i] = j\n prevUnmatched.delete(j)\n }\n })\n\n // Pass 2: no-id elements match a no-id prev element of the same type with an\n // identical box.\n next.forEach((el, i) => {\n if (el.id || matches[i] !== undefined) return\n for (const j of prevUnmatched) {\n const p = prev[j]\n if (p.id.startsWith(\"~\") && p.type === el.type && boxesEqual(p.box, el.box)) {\n matches[i] = j\n prevUnmatched.delete(j)\n break\n }\n }\n })\n\n // Pass 3: remaining no-id elements match remaining no-id prev of the same\n // type in order (k-th unmatched text ↔ k-th unmatched text).\n next.forEach((el, i) => {\n if (el.id || matches[i] !== undefined) return\n for (const j of prevUnmatched) {\n const p = prev[j]\n if (p.id.startsWith(\"~\") && p.type === el.type) {\n matches[i] = j\n prevUnmatched.delete(j)\n break\n }\n }\n })\n\n const elements: FrameElement[] = next.map((el, i) => {\n const j = matches[i]\n if (j !== undefined) {\n const p = prev[j]\n return buildFrameElement(el, el.id ?? p.id, classify(p, el))\n }\n return buildFrameElement(el, el.id ?? nextSyntheticId(), \"created\")\n })\n\n const removed = [...prevUnmatched].map((j) => prev[j].id)\n return {elements, removed}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"differ.js","sourceRoot":"","sources":["../../../../src/utils/display/scene/differ.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Scene differ — matches elements between the last frame sent to the device and\n * the next scene, and classifies each element's change. Pure set arithmetic:\n * nothing in here is device-specific (spec §1).\n *\n * Matching rules (design doc §3.4.1, in order):\n * 1. same explicit `id` + same `type` ⇒ same element\n * 2. no id: same `type` + identical box ⇒ same element\n * 3. no id: same `type`, by order among the still-unmatched\n * 4. anything unmatched in prev ⇒ removed; unmatched in next ⇒ created\n *\n * Matched no-id elements INHERIT the previous element's assigned id so the\n * device-side id⇒firmware-component mapping stays stable; fresh elements get a\n * synthesized id from the caller (SceneStore counter). Synthesized ids are\n * prefixed \"~\" so they can never collide with app-supplied ids.\n */\n\nimport type {FrameElement, SceneBox, SceneChange, SceneElementType, ScenePoint, SceneTransition} from \"./types\"\nimport {boxesEqual} from \"./types\"\n\n/** A processed (clamped/wrapped) element, pre-diff: id optional, no annotation yet. */\nexport interface DiffableElement {\n /** SVG path and its checked firmware command stream (Q4 coordinates). */\n d?: string\n path?: number[]\n pathScale?: number\n fillRule?: \"nonzero\" | \"evenodd\"\n rotation?: number\n pivot?: ScenePoint\n depth?: number\n\n id?: string\n type: SceneElementType\n box: SceneBox\n text?: string\n data?: string\n style?: FrameElement[\"style\"]\n points?: ScenePoint[]\n startDeg?: number\n endDeg?: number\n transition?: SceneTransition\n contentHash: string\n}\n\nexport interface DiffResult {\n elements: FrameElement[]\n removed: string[]\n}\n\nfunction classify(prev: FrameElement, next: DiffableElement): SceneChange {\n if (!boxesEqual(prev.box, next.box)) return \"moved\"\n if (prev.contentHash !== next.contentHash) return \"updated\"\n return \"unchanged\"\n}\n\n/**\n * Assemble the annotated FrameElement, OMITTING optional fields that are\n * undefined. A present key with an `undefined` value cannot cross the Expo\n * Android bridge — its `Map<String, Any>` converter rejects it (\"Value is\n * undefined, expected an Object\"), which surfaces as ERR_UNEXPECTED from\n * displayEvent. (iOS's `[String: Any]` bridge silently drops nils, so the\n * defect was invisible there.) Keeping the keys absent — not undefined —\n * matches the optional-field contract in types.ts.\n */\nfunction buildFrameElement(el: DiffableElement, id: string, change: SceneChange): FrameElement {\n const out: FrameElement = {id, type: el.type, box: el.box, contentHash: el.contentHash, change}\n if (el.text !== undefined) out.text = el.text\n if (el.data !== undefined) out.data = el.data\n if (el.style !== undefined) out.style = el.style\n if (el.points !== undefined) out.points = el.points\n if (el.startDeg !== undefined) out.startDeg = el.startDeg\n if (el.endDeg !== undefined) out.endDeg = el.endDeg\n if (el.transition !== undefined) out.transition = el.transition\n if (el.d !== undefined) out.d = el.d\n if (el.path !== undefined) out.path = el.path\n if (el.pathScale !== undefined) out.pathScale = el.pathScale\n if (el.fillRule !== undefined) out.fillRule = el.fillRule\n if (el.rotation !== undefined) out.rotation = el.rotation\n if (el.pivot !== undefined) out.pivot = el.pivot\n if (el.depth !== undefined) out.depth = el.depth\n return out\n}\n\n/**\n * Diff `next` against `prev` (the last frame sent for this app/view/device;\n * empty array for a fresh scene). `nextSyntheticId` mints ids for elements the\n * app didn't name — must be stable per (app, view) across calls (SceneStore).\n */\nexport function diffScene(\n prev: readonly FrameElement[],\n next: readonly DiffableElement[],\n nextSyntheticId: () => string,\n): DiffResult {\n const prevUnmatched = new Set(prev.map((_, i) => i))\n const prevByExplicitId = new Map<string, number>()\n prev.forEach((el, i) => {\n if (!el.id.startsWith(\"~\")) prevByExplicitId.set(`${el.type}:${el.id}`, i)\n })\n\n // matches[nextIndex] = prevIndex | undefined\n const matches: (number | undefined)[] = new Array(next.length).fill(undefined)\n\n // Pass 1: explicit id + type.\n next.forEach((el, i) => {\n if (!el.id) return\n const j = prevByExplicitId.get(`${el.type}:${el.id}`)\n if (j !== undefined && prevUnmatched.has(j)) {\n matches[i] = j\n prevUnmatched.delete(j)\n }\n })\n\n // Pass 2: no-id elements match a no-id prev element of the same type with an\n // identical box.\n next.forEach((el, i) => {\n if (el.id || matches[i] !== undefined) return\n for (const j of prevUnmatched) {\n const p = prev[j]\n if (p.id.startsWith(\"~\") && p.type === el.type && boxesEqual(p.box, el.box)) {\n matches[i] = j\n prevUnmatched.delete(j)\n break\n }\n }\n })\n\n // Pass 3: remaining no-id elements match remaining no-id prev of the same\n // type in order (k-th unmatched text ↔ k-th unmatched text).\n next.forEach((el, i) => {\n if (el.id || matches[i] !== undefined) return\n for (const j of prevUnmatched) {\n const p = prev[j]\n if (p.id.startsWith(\"~\") && p.type === el.type) {\n matches[i] = j\n prevUnmatched.delete(j)\n break\n }\n }\n })\n\n const elements: FrameElement[] = next.map((el, i) => {\n const j = matches[i]\n if (j !== undefined) {\n const p = prev[j]\n return buildFrameElement(el, el.id ?? p.id, classify(p, el))\n }\n return buildFrameElement(el, el.id ?? nextSyntheticId(), \"created\")\n })\n\n const removed = [...prevUnmatched].map((j) => prev[j].id)\n return {elements, removed}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { FrameElement, SceneAnchor, SceneBox, SceneBoxInput, SceneBreakMode, SceneChange, SceneDisplayCapabilities, SceneElementInput, SceneElementType, SceneFrame, SceneProcessResult, SceneRectStyle, SceneTextStyle, } from "./types";
|
|
1
|
+
export type { FrameElement, SceneAnchor, SceneBox, SceneBoxInput, SceneBreakMode, SceneChange, SceneDisplayCapabilities, SceneElementInput, SceneElementType, SceneFrame, SceneImageStyle, ScenePoint, SceneProcessResult, SceneRectStyle, SceneShapeStyle, SceneStrokeStyle, SceneTextStyle, SceneTransition, } from "./types";
|
|
2
2
|
export { boxesEqual, contentHash, elementContentHash } from "./types";
|
|
3
3
|
export { resolveAnchors } from "./anchor";
|
|
4
4
|
export type { DiffResult, DiffableElement } from "./differ";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/scene/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/scene/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAA;AACnE,OAAO,EAAC,cAAc,EAAC,MAAM,UAAU,CAAA;AACvC,YAAY,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,UAAU,CAAA;AACzD,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAClC,YAAY,EAAC,cAAc,EAAC,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAC,YAAY,EAAE,mBAAmB,EAAC,MAAM,WAAW,CAAA;AAC3D,YAAY,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/display/scene/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/display/scene/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAA;AACnE,OAAO,EAAC,cAAc,EAAC,MAAM,UAAU,CAAA;AAEvC,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAA;AAElC,OAAO,EAAC,YAAY,EAAE,mBAAmB,EAAC,MAAM,WAAW,CAAA;AAE3D,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAA","sourcesContent":["export type {\n FrameElement,\n SceneAnchor,\n SceneBox,\n SceneBoxInput,\n SceneBreakMode,\n SceneChange,\n SceneDisplayCapabilities,\n SceneElementInput,\n SceneElementType,\n SceneFrame,\n SceneImageStyle,\n ScenePoint,\n SceneProcessResult,\n SceneRectStyle,\n SceneShapeStyle,\n SceneStrokeStyle,\n SceneTextStyle,\n SceneTransition,\n} from \"./types\"\nexport {boxesEqual, contentHash, elementContentHash} from \"./types\"\nexport {resolveAnchors} from \"./anchor\"\nexport type {DiffResult, DiffableElement} from \"./differ\"\nexport {diffScene} from \"./differ\"\nexport type {ProcessedScene} from \"./process\"\nexport {processScene, profileLineHeightPx} from \"./process\"\nexport type {DegradedScene} from \"./degrade\"\nexport {degradeScene} from \"./degrade\"\nexport {SceneStore} from \"./store\"\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/scene/process.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../../src/utils/display/scene/process.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAGV,wBAAwB,EACxB,iBAAiB,EAIlB,MAAM,SAAS,CAAA;AAGhB,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAsDD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjG;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,iBAAiB,EAAE,EACnC,IAAI,EAAE,wBAAwB,EAC9B,OAAO,EAAE,cAAc,GACtB,cAAc,CAgThB"}
|