@satinhq/kit 0.0.0-stage → 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +96 -0
- package/README.md +454 -2
- package/THIRD_PARTY_NOTICES.md +65 -0
- package/bin/satin.mjs +13 -0
- package/dist/acknowledgements/Acknowledgements.d.ts +4 -0
- package/dist/acknowledgements/Acknowledgements.js +42 -0
- package/dist/acknowledgements/bundledNotices.d.ts +4 -0
- package/dist/acknowledgements/bundledNotices.js +58 -0
- package/dist/acknowledgements/inventory.d.ts +17 -0
- package/dist/acknowledgements/inventory.js +10 -0
- package/dist/acknowledgements/inventory.json +39 -0
- package/dist/actions/ActionMenu.d.ts +30 -0
- package/dist/actions/ActionMenu.js +103 -0
- package/dist/actions/RowActions.d.ts +42 -0
- package/dist/actions/RowActions.js +820 -0
- package/dist/actions/contextMotion.d.ts +78 -0
- package/dist/actions/contextMotion.js +329 -0
- package/dist/actions/motion.d.ts +19 -0
- package/dist/actions/motion.js +74 -0
- package/dist/actions/nativeContextAppearance.json +86 -0
- package/dist/actions/nativeContextMotion.json +734 -0
- package/dist/actions/nativeMotion.json +388 -0
- package/dist/actions/preview.d.ts +27 -0
- package/dist/actions/preview.js +217 -0
- package/dist/actions/recognizers.d.ts +24 -0
- package/dist/actions/recognizers.js +87 -0
- package/dist/actions/rowScrub.d.ts +59 -0
- package/dist/actions/rowScrub.js +400 -0
- package/dist/actions/swipeSpring.d.ts +14 -0
- package/dist/actions/swipeSpring.js +35 -0
- package/dist/actions/types.d.ts +71 -0
- package/dist/actions/types.js +28 -0
- package/dist/app/InstallComponents.d.ts +16 -0
- package/dist/app/InstallComponents.js +104 -0
- package/dist/app/InstallationDiagnostics.d.ts +7 -0
- package/dist/app/InstallationDiagnostics.js +23 -0
- package/dist/app/OrientationGuard.d.ts +8 -0
- package/dist/app/OrientationGuard.js +9 -0
- package/dist/app/appearance.d.ts +18 -0
- package/dist/app/appearance.js +15 -0
- package/dist/app/appearanceStore.d.ts +30 -0
- package/dist/app/appearanceStore.js +228 -0
- package/dist/app/backgroundUpdate.d.ts +20 -0
- package/dist/app/backgroundUpdate.js +151 -0
- package/dist/app/buildInfo.d.ts +11 -0
- package/dist/app/buildInfo.js +12 -0
- package/dist/app/buildInfoBuild.d.ts +3 -0
- package/dist/app/buildInfoBuild.js +12 -0
- package/dist/app/checkCli.d.ts +1 -0
- package/dist/app/checkCli.js +73 -0
- package/dist/app/coldLaunchUpdate.d.ts +14 -0
- package/dist/app/coldLaunchUpdate.js +384 -0
- package/dist/app/definition.d.ts +85 -0
- package/dist/app/definition.js +347 -0
- package/dist/app/deployment.d.ts +28 -0
- package/dist/app/deployment.js +352 -0
- package/dist/app/deploymentBuild.d.ts +3 -0
- package/dist/app/deploymentBuild.js +55 -0
- package/dist/app/earlyWorker.d.ts +3 -0
- package/dist/app/earlyWorker.js +77 -0
- package/dist/app/head.d.ts +10 -0
- package/dist/app/head.js +120 -0
- package/dist/app/icons.d.ts +4 -0
- package/dist/app/icons.js +35 -0
- package/dist/app/install.d.ts +18 -0
- package/dist/app/install.js +82 -0
- package/dist/app/installCheck.d.ts +2 -0
- package/dist/app/installCheck.js +148 -0
- package/dist/app/installContext.d.ts +35 -0
- package/dist/app/installContext.js +45 -0
- package/dist/app/installCustom.d.ts +25 -0
- package/dist/app/installCustom.js +55 -0
- package/dist/app/installExperience.d.ts +22 -0
- package/dist/app/installExperience.js +389 -0
- package/dist/app/installExperienceDevice.d.ts +29 -0
- package/dist/app/installExperienceDevice.js +160 -0
- package/dist/app/installExperienceHome.d.ts +16 -0
- package/dist/app/installExperienceHome.js +304 -0
- package/dist/app/installExperienceRuntime.d.ts +37 -0
- package/dist/app/installExperienceRuntime.js +285 -0
- package/dist/app/installPolicy.d.ts +28 -0
- package/dist/app/installPolicy.js +90 -0
- package/dist/app/installQr.d.ts +10 -0
- package/dist/app/installQr.js +139 -0
- package/dist/app/installStrings.d.ts +52 -0
- package/dist/app/installStrings.js +75 -0
- package/dist/app/installTipPath.d.ts +12 -0
- package/dist/app/installTipPath.js +9 -0
- package/dist/app/installationFailure.d.ts +14 -0
- package/dist/app/installationFailure.js +38 -0
- package/dist/app/launch.d.ts +7 -0
- package/dist/app/launch.js +241 -0
- package/dist/app/launchReadiness.d.ts +9 -0
- package/dist/app/launchReadiness.js +72 -0
- package/dist/app/launchScreen.d.ts +16 -0
- package/dist/app/launchScreen.js +14 -0
- package/dist/app/launchScreenRuntime.d.ts +19 -0
- package/dist/app/launchScreenRuntime.js +313 -0
- package/dist/app/launchWatchdog.d.ts +1 -0
- package/dist/app/launchWatchdog.js +202 -0
- package/dist/app/manifests.d.ts +19 -0
- package/dist/app/manifests.js +20 -0
- package/dist/app/mdm.d.ts +3 -0
- package/dist/app/mdm.js +20 -0
- package/dist/app/mediaCheck.d.ts +9 -0
- package/dist/app/mediaCheck.js +122 -0
- package/dist/app/mediaTypes.d.ts +2 -0
- package/dist/app/mediaTypes.js +13 -0
- package/dist/app/platformPolicy.d.ts +3 -0
- package/dist/app/platformPolicy.js +10 -0
- package/dist/app/platformScripts.d.ts +6 -0
- package/dist/app/platformScripts.js +65 -0
- package/dist/app/releaseUpdates.d.ts +7 -0
- package/dist/app/releaseUpdates.js +53 -0
- package/dist/app/runtime.d.ts +9 -0
- package/dist/app/runtime.js +38 -0
- package/dist/app/startup.d.ts +30 -0
- package/dist/app/startup.js +24 -0
- package/dist/app/statusBand.d.ts +11 -0
- package/dist/app/statusBand.js +257 -0
- package/dist/app/viewport.d.ts +3 -0
- package/dist/app/viewport.js +42 -0
- package/dist/app/viewportValue.d.ts +5 -0
- package/dist/app/viewportValue.js +14 -0
- package/dist/app/vite.d.ts +27 -0
- package/dist/app/vite.js +440 -0
- package/dist/app/warmImage.d.ts +3 -0
- package/dist/app/warmImage.js +59 -0
- package/dist/content/content.d.ts +153 -0
- package/dist/content/content.js +315 -0
- package/dist/content/layout.d.ts +26 -0
- package/dist/content/layout.js +114 -0
- package/dist/content/scaledMetric.d.ts +3 -0
- package/dist/content/scaledMetric.js +68 -0
- package/dist/content/typography.d.ts +83 -0
- package/dist/content/typography.js +32 -0
- package/dist/controls/ActivityIndicatorSegments.d.ts +4 -0
- package/dist/controls/ActivityIndicatorSegments.js +5 -0
- package/dist/controls/ColorPicker.d.ts +20 -0
- package/dist/controls/ColorPicker.js +70 -0
- package/dist/controls/ControlRow.d.ts +5 -0
- package/dist/controls/ControlRow.js +10 -0
- package/dist/controls/DatePicker.d.ts +41 -0
- package/dist/controls/DatePicker.js +148 -0
- package/dist/controls/ProgressView.d.ts +17 -0
- package/dist/controls/ProgressView.js +24 -0
- package/dist/controls/civilDate.d.ts +49 -0
- package/dist/controls/civilDate.js +112 -0
- package/dist/data/database.d.ts +154 -0
- package/dist/data/database.js +710 -0
- package/dist/data/value-equal.d.ts +2 -0
- package/dist/data/value-equal.js +36 -0
- package/dist/data/write-store.d.ts +38 -0
- package/dist/data/write-store.js +192 -0
- package/dist/dev-menu/DevMenu.d.ts +1 -0
- package/dist/dev-menu/DevMenu.js +121 -0
- package/dist/dev-menu/actions.d.ts +12 -0
- package/dist/dev-menu/actions.js +99 -0
- package/dist/dev-menu/build.d.ts +5 -0
- package/dist/dev-menu/build.js +40 -0
- package/dist/dev-menu/gesture.d.ts +18 -0
- package/dist/dev-menu/gesture.js +109 -0
- package/dist/dev-menu/shake.d.ts +2 -0
- package/dist/dev-menu/shake.js +36 -0
- package/dist/dev-menu/types.d.ts +8 -0
- package/dist/dev-menu/types.js +1 -0
- package/dist/diagnostics.d.ts +3 -0
- package/dist/diagnostics.js +4 -0
- package/dist/docs/app-recipes.md +411 -0
- package/dist/docs/components/file-importer.md +54 -0
- package/dist/docs/components/paste-button.md +48 -0
- package/dist/docs/components/photos-picker.md +53 -0
- package/dist/docs/components/share-link.md +58 -0
- package/dist/docs/content.md +159 -0
- package/dist/docs/controls.md +151 -0
- package/dist/docs/data.md +332 -0
- package/dist/docs/limitations.md +40 -0
- package/dist/docs/messaging-scroll.md +234 -0
- package/dist/docs/networking.md +190 -0
- package/dist/docs/push.md +215 -0
- package/dist/docs/swiftui-reference.md +1895 -0
- package/dist/docs/symbols.md +293 -0
- package/dist/docs/tokens.md +60 -0
- package/dist/fidelity/devAssertions.d.ts +21 -0
- package/dist/fidelity/devAssertions.js +199 -0
- package/dist/focus/focusIntentMachine.d.ts +106 -0
- package/dist/focus/focusIntentMachine.js +359 -0
- package/dist/focus/navigationFocus.d.ts +42 -0
- package/dist/focus/navigationFocus.js +241 -0
- package/dist/focus/programmaticFocus.d.ts +15 -0
- package/dist/focus/programmaticFocus.js +152 -0
- package/dist/gestures/GestureView.d.ts +12 -0
- package/dist/gestures/GestureView.js +321 -0
- package/dist/gestures/arena.d.ts +138 -0
- package/dist/gestures/arena.js +417 -0
- package/dist/gestures/existingCompetitors.d.ts +79 -0
- package/dist/gestures/existingCompetitors.js +82 -0
- package/dist/gestures/gesture.d.ts +62 -0
- package/dist/gestures/gesture.js +107 -0
- package/dist/glass/ControlLens.d.ts +46 -0
- package/dist/glass/ControlLens.js +88 -0
- package/dist/glass/GlassBar.d.ts +9 -0
- package/dist/glass/GlassBar.js +22 -0
- package/dist/glass/GlassConfusionReview.d.ts +3 -0
- package/dist/glass/GlassConfusionReview.js +185 -0
- package/dist/glass/GlassEffect.d.ts +69 -0
- package/dist/glass/GlassEffect.js +550 -0
- package/dist/glass/GlassMaterialRoot.d.ts +7 -0
- package/dist/glass/GlassMaterialRoot.js +39 -0
- package/dist/glass/GlassPresentation.d.ts +28 -0
- package/dist/glass/GlassPresentation.js +1038 -0
- package/dist/glass/GlassProbeIcons.d.ts +8 -0
- package/dist/glass/GlassProbeIcons.js +12 -0
- package/dist/glass/GlassProbeOverlay.d.ts +52 -0
- package/dist/glass/GlassProbeOverlay.js +45 -0
- package/dist/glass/GlassTextField.d.ts +22 -0
- package/dist/glass/GlassTextField.js +12 -0
- package/dist/glass/MaterialEffectRoot.d.ts +9 -0
- package/dist/glass/MaterialEffectRoot.js +189 -0
- package/dist/glass/Menu.d.ts +3 -0
- package/dist/glass/Menu.js +35 -0
- package/dist/glass/MenuStack.d.ts +23 -0
- package/dist/glass/MenuStack.js +371 -0
- package/dist/glass/MenuSymbol.d.ts +7 -0
- package/dist/glass/MenuSymbol.js +16 -0
- package/dist/glass/MorphEllipsisArtwork.d.ts +2 -0
- package/dist/glass/MorphEllipsisArtwork.js +6 -0
- package/dist/glass/TabBar.d.ts +29 -0
- package/dist/glass/TabBar.js +169 -0
- package/dist/glass/capability.d.ts +25 -0
- package/dist/glass/capability.js +63 -0
- package/dist/glass/captureWindow.d.ts +60 -0
- package/dist/glass/captureWindow.js +119 -0
- package/dist/glass/confusionSession.d.ts +41 -0
- package/dist/glass/confusionSession.js +44 -0
- package/dist/glass/contactPhysics.d.ts +130 -0
- package/dist/glass/contactPhysics.js +214 -0
- package/dist/glass/context.d.ts +37 -0
- package/dist/glass/context.js +11 -0
- package/dist/glass/errorAlert.d.ts +6 -0
- package/dist/glass/errorAlert.js +57 -0
- package/dist/glass/errors.d.ts +22 -0
- package/dist/glass/errors.js +78 -0
- package/dist/glass/failurePolicy.d.ts +4 -0
- package/dist/glass/failurePolicy.js +20 -0
- package/dist/glass/fallback/material.d.ts +16 -0
- package/dist/glass/fallback/material.js +87 -0
- package/dist/glass/fallback/regions.d.ts +16 -0
- package/dist/glass/fallback/regions.js +249 -0
- package/dist/glass/fallback/runtime.d.ts +72 -0
- package/dist/glass/fallback/runtime.js +278 -0
- package/dist/glass/fallback/selection.d.ts +2 -0
- package/dist/glass/fallback/selection.js +9 -0
- package/dist/glass/fieldGeometry.d.ts +28 -0
- package/dist/glass/fieldGeometry.js +64 -0
- package/dist/glass/fieldMotion.d.ts +42 -0
- package/dist/glass/fieldMotion.js +47 -0
- package/dist/glass/glassContact.d.ts +76 -0
- package/dist/glass/glassContact.js +153 -0
- package/dist/glass/glassProbeSettings.d.ts +18 -0
- package/dist/glass/glassProbeSettings.js +133 -0
- package/dist/glass/lens/Scene.d.ts +108 -0
- package/dist/glass/lens/Scene.js +553 -0
- package/dist/glass/lens/backgrounds.json +103 -0
- package/dist/glass/lens/bitmapBackdrop.d.ts +14 -0
- package/dist/glass/lens/bitmapBackdrop.js +35 -0
- package/dist/glass/lens/controlLift.d.ts +94 -0
- package/dist/glass/lens/controlLift.js +78 -0
- package/dist/glass/lens/data.d.ts +19 -0
- package/dist/glass/lens/data.js +161 -0
- package/dist/glass/lens/drawableTop.d.ts +16 -0
- package/dist/glass/lens/drawableTop.js +15 -0
- package/dist/glass/lens/icons.d.ts +9 -0
- package/dist/glass/lens/icons.js +34 -0
- package/dist/glass/lens/interactiveContact.d.ts +33 -0
- package/dist/glass/lens/interactiveContact.js +158 -0
- package/dist/glass/lens/interactivePress.d.ts +95 -0
- package/dist/glass/lens/interactivePress.js +169 -0
- package/dist/glass/lens/ios27GlyphFit.json +126 -0
- package/dist/glass/lens/lensLightingSamples.json +1 -0
- package/dist/glass/lens/lensPress.d.ts +22 -0
- package/dist/glass/lens/lensPress.js +68 -0
- package/dist/glass/lens/lensPressSamples.json +1 -0
- package/dist/glass/lens/liquidMotion.d.ts +50 -0
- package/dist/glass/lens/liquidMotion.js +239 -0
- package/dist/glass/lens/materialGlassRecipes.json +776 -0
- package/dist/glass/lens/materialUniforms.d.ts +22 -0
- package/dist/glass/lens/materialUniforms.js +117 -0
- package/dist/glass/lens/menu-closing-close-fit.json +380 -0
- package/dist/glass/lens/menu-opening-native-fits.json +911 -0
- package/dist/glass/lens/menuContextFit.json +88 -0
- package/dist/glass/lens/menuContextOpacity.json +98 -0
- package/dist/glass/lens/menuContextPresentation.d.ts +15 -0
- package/dist/glass/lens/menuContextPresentation.js +65 -0
- package/dist/glass/lens/menuCornerFit.json +252 -0
- package/dist/glass/lens/menuCornerMotion.d.ts +9 -0
- package/dist/glass/lens/menuCornerMotion.js +5 -0
- package/dist/glass/lens/menuDropFit.json +64 -0
- package/dist/glass/lens/menuField.d.ts +178 -0
- package/dist/glass/lens/menuField.js +564 -0
- package/dist/glass/lens/menuGesturePresentation.d.ts +12 -0
- package/dist/glass/lens/menuGesturePresentation.js +42 -0
- package/dist/glass/lens/menuGlyphDropFit.json +38 -0
- package/dist/glass/lens/menuMorphFit.json +564 -0
- package/dist/glass/lens/menuMorphMotion.d.ts +70 -0
- package/dist/glass/lens/menuMorphMotion.js +219 -0
- package/dist/glass/lens/menuMorphPhoneFit.json +85 -0
- package/dist/glass/lens/menuMotion.d.ts +81 -0
- package/dist/glass/lens/menuMotion.js +323 -0
- package/dist/glass/lens/menuPlacement.d.ts +5 -0
- package/dist/glass/lens/menuPlacement.js +29 -0
- package/dist/glass/lens/menuSpring.d.ts +18 -0
- package/dist/glass/lens/menuSpring.js +29 -0
- package/dist/glass/lens/menuTouchLight.d.ts +13 -0
- package/dist/glass/lens/menuTouchLight.js +147 -0
- package/dist/glass/lens/mirrorConstants.d.ts +1 -0
- package/dist/glass/lens/mirrorConstants.js +2 -0
- package/dist/glass/lens/mirrorExtents.d.ts +52 -0
- package/dist/glass/lens/mirrorExtents.js +264 -0
- package/dist/glass/lens/mirrorInvalidation.d.ts +6 -0
- package/dist/glass/lens/mirrorInvalidation.js +10 -0
- package/dist/glass/lens/mirrorReuse.d.ts +20 -0
- package/dist/glass/lens/mirrorReuse.js +166 -0
- package/dist/glass/lens/motion.d.ts +62 -0
- package/dist/glass/lens/motion.js +93 -0
- package/dist/glass/lens/recordedMotion.d.ts +6 -0
- package/dist/glass/lens/recordedMotion.js +44 -0
- package/dist/glass/lens/referenceBackground.d.ts +9 -0
- package/dist/glass/lens/referenceBackground.js +151 -0
- package/dist/glass/lens/referenceProfiles.d.ts +21 -0
- package/dist/glass/lens/referenceProfiles.js +33 -0
- package/dist/glass/lens/referenceRegularTint.d.ts +12 -0
- package/dist/glass/lens/referenceRegularTint.js +41 -0
- package/dist/glass/lens/scopeSegments.d.ts +12 -0
- package/dist/glass/lens/scopeSegments.js +18 -0
- package/dist/glass/lens/scrollAnchoring.d.ts +15 -0
- package/dist/glass/lens/scrollAnchoring.js +17 -0
- package/dist/glass/lens/selectionParameters.json +94 -0
- package/dist/glass/lens/shapeParameters.json +198 -0
- package/dist/glass/lens/tab-motion-native-fits.json +778 -0
- package/dist/glass/lens/tabAccessoryMotion.d.ts +52 -0
- package/dist/glass/lens/tabAccessoryMotion.js +52 -0
- package/dist/glass/lens/tabChromaRimModel.d.ts +43 -0
- package/dist/glass/lens/tabChromaRimModel.js +93 -0
- package/dist/glass/lens/tabCollapseInkSamples.json +49 -0
- package/dist/glass/lens/tabCompactGesture.d.ts +15 -0
- package/dist/glass/lens/tabCompactGesture.js +50 -0
- package/dist/glass/lens/tabGeometryAttack.json +70 -0
- package/dist/glass/lens/tabGlyphColours.d.ts +17 -0
- package/dist/glass/lens/tabGlyphColours.js +37 -0
- package/dist/glass/lens/tabInterruptedDecaySamples.json +245 -0
- package/dist/glass/lens/tabInterruptedRestoreSamples.json +290 -0
- package/dist/glass/lens/tabMaterialModel.d.ts +10 -0
- package/dist/glass/lens/tabMaterialModel.js +108 -0
- package/dist/glass/lens/tabMinimizeInk.d.ts +15 -0
- package/dist/glass/lens/tabMinimizeInk.js +14 -0
- package/dist/glass/lens/tabMinimizeMotion.d.ts +36 -0
- package/dist/glass/lens/tabMinimizeMotion.js +107 -0
- package/dist/glass/lens/tabMinimizeSamples.json +411 -0
- package/dist/glass/lens/tabMotion.d.ts +91 -0
- package/dist/glass/lens/tabMotion.js +478 -0
- package/dist/glass/lens/tabMotionFit.d.ts +76 -0
- package/dist/glass/lens/tabMotionFit.js +61 -0
- package/dist/glass/lens/tabNativeSymbols.d.ts +1 -0
- package/dist/glass/lens/tabNativeSymbols.js +7 -0
- package/dist/glass/lens/tabPresentation.d.ts +21 -0
- package/dist/glass/lens/tabPresentation.js +20 -0
- package/dist/glass/lens/tabRelease.d.ts +5 -0
- package/dist/glass/lens/tabRelease.js +14 -0
- package/dist/glass/lens/tabRestoreMotion.d.ts +19 -0
- package/dist/glass/lens/tabRestoreMotion.js +65 -0
- package/dist/glass/lens/tabRestoreSamples.json +1272 -0
- package/dist/glass/lens/tabSearchMember.d.ts +38 -0
- package/dist/glass/lens/tabSearchMember.js +74 -0
- package/dist/glass/lens/tabSelectionMaterial.d.ts +20 -0
- package/dist/glass/lens/tabSelectionMaterial.js +23 -0
- package/dist/glass/lens/tabSelectionMeasurements.test-fixture.d.ts +9 -0
- package/dist/glass/lens/tabSelectionMeasurements.test-fixture.js +74 -0
- package/dist/glass/lens/tabSettingsSymbol.d.ts +1 -0
- package/dist/glass/lens/tabSettingsSymbol.js +2 -0
- package/dist/glass/lens/tabShapeResponse.d.ts +7 -0
- package/dist/glass/lens/tabShapeResponse.js +30 -0
- package/dist/glass/lens/theme.d.ts +18 -0
- package/dist/glass/lens/theme.js +40 -0
- package/dist/glass/lens/trace.d.ts +2 -0
- package/dist/glass/lens/trace.js +27 -0
- package/dist/glass/liquidContext.d.ts +31 -0
- package/dist/glass/liquidContext.js +2 -0
- package/dist/glass/menuPanelPlacement.d.ts +51 -0
- package/dist/glass/menuPanelPlacement.js +128 -0
- package/dist/glass/menuPresenter.d.ts +34 -0
- package/dist/glass/menuPresenter.js +983 -0
- package/dist/glass/menuSymbolMasks.d.ts +1 -0
- package/dist/glass/menuSymbolMasks.js +1 -0
- package/dist/glass/menuSymbolTokens.d.ts +22 -0
- package/dist/glass/menuSymbolTokens.js +12 -0
- package/dist/glass/menuTriggerGeometry.d.ts +99 -0
- package/dist/glass/menuTriggerGeometry.js +126 -0
- package/dist/glass/menuTriggerSnapshot.d.ts +77 -0
- package/dist/glass/menuTriggerSnapshot.js +69 -0
- package/dist/glass/menuTypes.d.ts +22 -0
- package/dist/glass/menuTypes.js +1 -0
- package/dist/glass/morphField.d.ts +18 -0
- package/dist/glass/morphField.js +139 -0
- package/dist/glass/presentationFrame.d.ts +43 -0
- package/dist/glass/presentationFrame.js +82 -0
- package/dist/glass/pressHighlight.d.ts +9 -0
- package/dist/glass/pressHighlight.js +158 -0
- package/dist/glass/regionRegistry.d.ts +93 -0
- package/dist/glass/regionRegistry.js +313 -0
- package/dist/glass/regions.d.ts +262 -0
- package/dist/glass/regions.js +147 -0
- package/dist/glass/regularMaterialContext.d.ts +45 -0
- package/dist/glass/regularMaterialContext.js +118 -0
- package/dist/glass/regularTriggerMaterial.d.ts +19 -0
- package/dist/glass/regularTriggerMaterial.js +111 -0
- package/dist/glass/regularTriggerRim.d.ts +163 -0
- package/dist/glass/regularTriggerRim.js +436 -0
- package/dist/glass/renderSpecs.d.ts +454 -0
- package/dist/glass/renderSpecs.js +231 -0
- package/dist/glass/rendererContract.d.ts +205 -0
- package/dist/glass/rendererContract.js +18 -0
- package/dist/glass/shapeTrack.d.ts +53 -0
- package/dist/glass/shapeTrack.js +74 -0
- package/dist/glass/shapeTrackRegistry.d.ts +40 -0
- package/dist/glass/shapeTrackRegistry.js +49 -0
- package/dist/glass/sourceDamage.d.ts +6 -0
- package/dist/glass/sourceDamage.js +8 -0
- package/dist/glass/submenuMotion.d.ts +205 -0
- package/dist/glass/submenuMotion.js +306 -0
- package/dist/glass/tabBarModel.d.ts +12 -0
- package/dist/glass/tabBarModel.js +32 -0
- package/dist/glass/testing.d.ts +14 -0
- package/dist/glass/testing.js +14 -0
- package/dist/glass/tokens.d.ts +79 -0
- package/dist/glass/tokens.js +86 -0
- package/dist/glass/toolbarMaterialContext.d.ts +28 -0
- package/dist/glass/toolbarMaterialContext.js +66 -0
- package/dist/glass/topLayer.d.ts +5 -0
- package/dist/glass/topLayer.js +10 -0
- package/dist/glass/unionOutline.d.ts +11 -0
- package/dist/glass/unionOutline.js +98 -0
- package/dist/glass/visibleDeadline.d.ts +21 -0
- package/dist/glass/visibleDeadline.js +61 -0
- package/dist/glass/webgpu/accessoryMorph.d.ts +99 -0
- package/dist/glass/webgpu/accessoryMorph.js +473 -0
- package/dist/glass/webgpu/accessoryTrack.d.ts +47 -0
- package/dist/glass/webgpu/accessoryTrack.js +59 -0
- package/dist/glass/webgpu/areaMips.d.ts +50 -0
- package/dist/glass/webgpu/areaMips.js +166 -0
- package/dist/glass/webgpu/backdrop.d.ts +86 -0
- package/dist/glass/webgpu/backdrop.js +243 -0
- package/dist/glass/webgpu/backdropLayers.d.ts +29 -0
- package/dist/glass/webgpu/backdropLayers.js +182 -0
- package/dist/glass/webgpu/backgroundLayers.d.ts +71 -0
- package/dist/glass/webgpu/backgroundLayers.js +385 -0
- package/dist/glass/webgpu/cadence.d.ts +18 -0
- package/dist/glass/webgpu/cadence.js +35 -0
- package/dist/glass/webgpu/canvasSubmission.d.ts +6 -0
- package/dist/glass/webgpu/canvasSubmission.js +22 -0
- package/dist/glass/webgpu/capture.d.ts +77 -0
- package/dist/glass/webgpu/capture.js +534 -0
- package/dist/glass/webgpu/captureBands.d.ts +39 -0
- package/dist/glass/webgpu/captureBands.js +53 -0
- package/dist/glass/webgpu/captureContext.d.ts +1 -0
- package/dist/glass/webgpu/captureContext.js +6 -0
- package/dist/glass/webgpu/captureDemand.d.ts +44 -0
- package/dist/glass/webgpu/captureDemand.js +81 -0
- package/dist/glass/webgpu/captureRelease.d.ts +18 -0
- package/dist/glass/webgpu/captureRelease.js +39 -0
- package/dist/glass/webgpu/client.d.ts +49 -0
- package/dist/glass/webgpu/client.js +336 -0
- package/dist/glass/webgpu/contextBackdrop.d.ts +6 -0
- package/dist/glass/webgpu/contextBackdrop.js +13 -0
- package/dist/glass/webgpu/contextComposite.d.ts +64 -0
- package/dist/glass/webgpu/contextComposite.js +66 -0
- package/dist/glass/webgpu/decodedImage.d.ts +1 -0
- package/dist/glass/webgpu/decodedImage.js +2 -0
- package/dist/glass/webgpu/deviceLimits.d.ts +5 -0
- package/dist/glass/webgpu/deviceLimits.js +8 -0
- package/dist/glass/webgpu/edgePass.d.ts +9 -0
- package/dist/glass/webgpu/edgePass.js +170 -0
- package/dist/glass/webgpu/entry.worker.d.ts +1 -0
- package/dist/glass/webgpu/entry.worker.js +28 -0
- package/dist/glass/webgpu/errorCode.d.ts +3 -0
- package/dist/glass/webgpu/errorCode.js +27 -0
- package/dist/glass/webgpu/errors.d.ts +8 -0
- package/dist/glass/webgpu/errors.js +55 -0
- package/dist/glass/webgpu/fieldInk.d.ts +9 -0
- package/dist/glass/webgpu/fieldInk.js +62 -0
- package/dist/glass/webgpu/foreground.d.ts +29 -0
- package/dist/glass/webgpu/foreground.js +313 -0
- package/dist/glass/webgpu/frameClock.d.ts +34 -0
- package/dist/glass/webgpu/frameClock.js +60 -0
- package/dist/glass/webgpu/frameGraph.d.ts +57 -0
- package/dist/glass/webgpu/frameGraph.js +287 -0
- package/dist/glass/webgpu/frameProbe.d.ts +58 -0
- package/dist/glass/webgpu/frameProbe.js +181 -0
- package/dist/glass/webgpu/interactionProfiles.d.ts +10 -0
- package/dist/glass/webgpu/interactionProfiles.js +25 -0
- package/dist/glass/webgpu/keptGlyphs.d.ts +68 -0
- package/dist/glass/webgpu/keptGlyphs.js +85 -0
- package/dist/glass/webgpu/keyboardBackdrop.d.ts +12 -0
- package/dist/glass/webgpu/keyboardBackdrop.js +51 -0
- package/dist/glass/webgpu/lagTrace.d.ts +31 -0
- package/dist/glass/webgpu/lagTrace.js +22 -0
- package/dist/glass/webgpu/layers.d.ts +100 -0
- package/dist/glass/webgpu/layers.js +301 -0
- package/dist/glass/webgpu/lensDebug.d.ts +4 -0
- package/dist/glass/webgpu/lensDebug.js +28 -0
- package/dist/glass/webgpu/lensDiffusion.d.ts +2 -0
- package/dist/glass/webgpu/lensDiffusion.js +20 -0
- package/dist/glass/webgpu/lensLightingFit.json +222 -0
- package/dist/glass/webgpu/menuLiftInput.d.ts +30 -0
- package/dist/glass/webgpu/menuLiftInput.js +39 -0
- package/dist/glass/webgpu/menuSurfaceGuard.d.ts +17 -0
- package/dist/glass/webgpu/menuSurfaceGuard.js +26 -0
- package/dist/glass/webgpu/minimize.d.ts +184 -0
- package/dist/glass/webgpu/minimize.js +470 -0
- package/dist/glass/webgpu/navigationAtlasCopy.d.ts +12 -0
- package/dist/glass/webgpu/navigationAtlasCopy.js +121 -0
- package/dist/glass/webgpu/navigationTracks.d.ts +3 -0
- package/dist/glass/webgpu/navigationTracks.js +84 -0
- package/dist/glass/webgpu/passes.d.ts +204 -0
- package/dist/glass/webgpu/passes.js +394 -0
- package/dist/glass/webgpu/pendingSurfaceInput.d.ts +29 -0
- package/dist/glass/webgpu/pendingSurfaceInput.js +51 -0
- package/dist/glass/webgpu/preparedSourcePixels.d.ts +21 -0
- package/dist/glass/webgpu/preparedSourcePixels.js +43 -0
- package/dist/glass/webgpu/presentationBackdrop.d.ts +3 -0
- package/dist/glass/webgpu/presentationBackdrop.js +33 -0
- package/dist/glass/webgpu/presentationDiffusion.d.ts +48 -0
- package/dist/glass/webgpu/presentationDiffusion.js +57 -0
- package/dist/glass/webgpu/presentationMaterial.d.ts +9 -0
- package/dist/glass/webgpu/presentationMaterial.js +156 -0
- package/dist/glass/webgpu/presenterViewport.d.ts +11 -0
- package/dist/glass/webgpu/presenterViewport.js +193 -0
- package/dist/glass/webgpu/production.d.ts +552 -0
- package/dist/glass/webgpu/production.js +1929 -0
- package/dist/glass/webgpu/productionInstalls.d.ts +53 -0
- package/dist/glass/webgpu/productionInstalls.js +225 -0
- package/dist/glass/webgpu/productionNavigation.d.ts +5 -0
- package/dist/glass/webgpu/productionNavigation.js +360 -0
- package/dist/glass/webgpu/productionPinnedTop.d.ts +80 -0
- package/dist/glass/webgpu/productionPinnedTop.js +77 -0
- package/dist/glass/webgpu/productionPinnedTopPrepare.d.ts +21 -0
- package/dist/glass/webgpu/productionPinnedTopPrepare.js +132 -0
- package/dist/glass/webgpu/productionPlanes.d.ts +135 -0
- package/dist/glass/webgpu/productionPlanes.js +412 -0
- package/dist/glass/webgpu/productionPrepare.d.ts +18 -0
- package/dist/glass/webgpu/productionPrepare.js +832 -0
- package/dist/glass/webgpu/productionTracks.d.ts +73 -0
- package/dist/glass/webgpu/productionTracks.js +22 -0
- package/dist/glass/webgpu/productionViewport.d.ts +20 -0
- package/dist/glass/webgpu/productionViewport.js +52 -0
- package/dist/glass/webgpu/profile.d.ts +37 -0
- package/dist/glass/webgpu/profile.js +101 -0
- package/dist/glass/webgpu/raster.d.ts +337 -0
- package/dist/glass/webgpu/raster.js +1360 -0
- package/dist/glass/webgpu/rasterMaterial.d.ts +19 -0
- package/dist/glass/webgpu/rasterMaterial.js +197 -0
- package/dist/glass/webgpu/rasterShaders.d.ts +7 -0
- package/dist/glass/webgpu/rasterShaders.js +105 -0
- package/dist/glass/webgpu/rasterUniforms.d.ts +304 -0
- package/dist/glass/webgpu/rasterUniforms.js +415 -0
- package/dist/glass/webgpu/regionBackdrop.d.ts +8 -0
- package/dist/glass/webgpu/regionBackdrop.js +12 -0
- package/dist/glass/webgpu/regionBridge.d.ts +145 -0
- package/dist/glass/webgpu/regionBridge.js +1691 -0
- package/dist/glass/webgpu/regionScene.d.ts +294 -0
- package/dist/glass/webgpu/regionScene.js +2144 -0
- package/dist/glass/webgpu/renderer.d.ts +8 -0
- package/dist/glass/webgpu/renderer.js +1478 -0
- package/dist/glass/webgpu/residentPlanes.d.ts +69 -0
- package/dist/glass/webgpu/residentPlanes.js +104 -0
- package/dist/glass/webgpu/restMaterial.d.ts +6 -0
- package/dist/glass/webgpu/restMaterial.js +65 -0
- package/dist/glass/webgpu/resumeOverlay.d.ts +44 -0
- package/dist/glass/webgpu/resumeOverlay.js +82 -0
- package/dist/glass/webgpu/sampleTrace.d.ts +11 -0
- package/dist/glass/webgpu/sampleTrace.js +50 -0
- package/dist/glass/webgpu/scrollEdgeBackdrop.d.ts +89 -0
- package/dist/glass/webgpu/scrollEdgeBackdrop.js +177 -0
- package/dist/glass/webgpu/scrollEdgePose.d.ts +4 -0
- package/dist/glass/webgpu/scrollEdgePose.js +49 -0
- package/dist/glass/webgpu/selectionThumb.d.ts +81 -0
- package/dist/glass/webgpu/selectionThumb.js +209 -0
- package/dist/glass/webgpu/shaders.d.ts +67 -0
- package/dist/glass/webgpu/shaders.js +595 -0
- package/dist/glass/webgpu/sharedLift.d.ts +7 -0
- package/dist/glass/webgpu/sharedLift.js +223 -0
- package/dist/glass/webgpu/sourcePixels.d.ts +42 -0
- package/dist/glass/webgpu/sourcePixels.js +140 -0
- package/dist/glass/webgpu/sourcePixels.worker.d.ts +1 -0
- package/dist/glass/webgpu/sourcePixels.worker.js +62 -0
- package/dist/glass/webgpu/tabGlyphInk.d.ts +14 -0
- package/dist/glass/webgpu/tabGlyphInk.js +72 -0
- package/dist/glass/webgpu/touchLight.d.ts +4 -0
- package/dist/glass/webgpu/touchLight.js +15 -0
- package/dist/glass/worker/client.d.ts +21 -0
- package/dist/glass/worker/client.js +152 -0
- package/dist/glass/worker/experiment.d.ts +13 -0
- package/dist/glass/worker/experiment.js +221 -0
- package/dist/glass/worker/fixture.d.ts +21 -0
- package/dist/glass/worker/fixture.js +152 -0
- package/dist/glass/worker/protocol.d.ts +439 -0
- package/dist/glass/worker/protocol.js +5 -0
- package/dist/graphicsProbe.d.ts +19 -0
- package/dist/graphicsProbe.js +111 -0
- package/dist/haptics/SensoryButton.d.ts +21 -0
- package/dist/haptics/SensoryButton.js +80 -0
- package/dist/image/ContentAdmission.d.ts +19 -0
- package/dist/image/ContentAdmission.js +70 -0
- package/dist/image/Image.d.ts +30 -0
- package/dist/image/Image.js +341 -0
- package/dist/image/asset.d.ts +9 -0
- package/dist/image/asset.js +1 -0
- package/dist/image/contentReadiness.d.ts +7 -0
- package/dist/image/contentReadiness.js +54 -0
- package/dist/image/imports.d.ts +4 -0
- package/dist/image/resource.d.ts +53 -0
- package/dist/image/resource.js +286 -0
- package/dist/image/vite.d.ts +3 -0
- package/dist/image/vite.js +63 -0
- package/dist/index.d.ts +87 -0
- package/dist/index.js +102 -0
- package/dist/install.d.ts +8 -0
- package/dist/install.js +8 -0
- package/dist/internal.d.ts +96 -0
- package/dist/internal.js +80 -0
- package/dist/keyboard/adapter.d.ts +82 -0
- package/dist/keyboard/adapter.js +727 -0
- package/dist/keyboard/avoidance.d.ts +24 -0
- package/dist/keyboard/avoidance.js +283 -0
- package/dist/keyboard/caretMirror.d.ts +13 -0
- package/dist/keyboard/caretMirror.js +122 -0
- package/dist/keyboard/expectedKeyboard.d.ts +10 -0
- package/dist/keyboard/expectedKeyboard.js +60 -0
- package/dist/keyboard/geometry.d.ts +10 -0
- package/dist/keyboard/geometry.js +21 -0
- package/dist/keyboard/modalTapFocus.d.ts +41 -0
- package/dist/keyboard/modalTapFocus.js +224 -0
- package/dist/keyboard/motion.d.ts +54 -0
- package/dist/keyboard/motion.js +80 -0
- package/dist/keyboard/translation.d.ts +12 -0
- package/dist/keyboard/translation.js +19 -0
- package/dist/layout/adaptiveTabsContext.d.ts +5 -0
- package/dist/layout/adaptiveTabsContext.js +2 -0
- package/dist/layout/deviceIdiom.d.ts +4 -0
- package/dist/layout/deviceIdiom.js +12 -0
- package/dist/layout/layoutClass.d.ts +44 -0
- package/dist/layout/layoutClass.js +102 -0
- package/dist/layout/navigationLayoutContext.d.ts +8 -0
- package/dist/layout/navigationLayoutContext.js +5 -0
- package/dist/list-form/ListForm.d.ts +158 -0
- package/dist/list-form/ListForm.js +427 -0
- package/dist/list-form/ListItem.d.ts +30 -0
- package/dist/list-form/ListItem.js +251 -0
- package/dist/list-form/RowLabel.d.ts +14 -0
- package/dist/list-form/RowLabel.js +11 -0
- package/dist/list-form/Slider.d.ts +18 -0
- package/dist/list-form/Slider.js +235 -0
- package/dist/list-form/StepperButton.d.ts +9 -0
- package/dist/list-form/StepperButton.js +60 -0
- package/dist/list-form/Toggle.d.ts +16 -0
- package/dist/list-form/Toggle.js +204 -0
- package/dist/list-form/editMotion.d.ts +15 -0
- package/dist/list-form/editMotion.js +25 -0
- package/dist/list-form/editing.d.ts +102 -0
- package/dist/list-form/editing.js +51 -0
- package/dist/list-form/listContext.d.ts +4 -0
- package/dist/list-form/listContext.js +5 -0
- package/dist/list-form/offsets.d.ts +26 -0
- package/dist/list-form/offsets.js +34 -0
- package/dist/list-form/reorder.d.ts +20 -0
- package/dist/list-form/reorder.js +193 -0
- package/dist/list-form/rowMotion.d.ts +11 -0
- package/dist/list-form/rowMotion.js +236 -0
- package/dist/list-form/rowMotionScope.d.ts +14 -0
- package/dist/list-form/rowMotionScope.js +61 -0
- package/dist/list-form/separatorInsets.d.ts +4 -0
- package/dist/list-form/separatorInsets.js +87 -0
- package/dist/list-form/sliderContact.d.ts +40 -0
- package/dist/list-form/sliderContact.js +98 -0
- package/dist/list-form/state.d.ts +5 -0
- package/dist/list-form/state.js +8 -0
- package/dist/list-form/toggleContact.d.ts +55 -0
- package/dist/list-form/toggleContact.js +164 -0
- package/dist/media/controller.d.ts +7 -0
- package/dist/media/controller.js +612 -0
- package/dist/media/react.d.ts +9 -0
- package/dist/media/react.js +38 -0
- package/dist/media/systemMedia.d.ts +6 -0
- package/dist/media/systemMedia.js +200 -0
- package/dist/media/types.d.ts +83 -0
- package/dist/media/types.js +1 -0
- package/dist/menu/menuContact.d.ts +20 -0
- package/dist/menu/menuContact.js +286 -0
- package/dist/menu/menuGesture.d.ts +84 -0
- package/dist/menu/menuGesture.js +502 -0
- package/dist/menu/menuInteraction.d.ts +17 -0
- package/dist/menu/menuInteraction.js +34 -0
- package/dist/menu/menuOutside.d.ts +9 -0
- package/dist/menu/menuOutside.js +58 -0
- package/dist/menu/menuPanelContact.d.ts +11 -0
- package/dist/menu/menuPanelContact.js +77 -0
- package/dist/menu/menuTriggerHold.d.ts +3 -0
- package/dist/menu/menuTriggerHold.js +52 -0
- package/dist/menu/sampledMotion.d.ts +37 -0
- package/dist/menu/sampledMotion.js +86 -0
- package/dist/modal/lifecycle.d.ts +10 -0
- package/dist/modal/lifecycle.js +189 -0
- package/dist/motion/TransitionView.d.ts +12 -0
- package/dist/motion/TransitionView.js +118 -0
- package/dist/motion/animate.d.ts +20 -0
- package/dist/motion/animate.js +79 -0
- package/dist/motion/animationValue.d.ts +25 -0
- package/dist/motion/animationValue.js +42 -0
- package/dist/motion/composerMotion.d.ts +3 -0
- package/dist/motion/composerMotion.js +15 -0
- package/dist/motion/layoutTransaction.d.ts +7 -0
- package/dist/motion/layoutTransaction.js +28 -0
- package/dist/motion/matchedGeometry.d.ts +55 -0
- package/dist/motion/matchedGeometry.js +412 -0
- package/dist/motion/springPath.d.ts +27 -0
- package/dist/motion/springPath.js +46 -0
- package/dist/motion/springTrack.d.ts +33 -0
- package/dist/motion/springTrack.js +69 -0
- package/dist/motion/transition.d.ts +48 -0
- package/dist/motion/transition.js +56 -0
- package/dist/motion/transitionImages.d.ts +7 -0
- package/dist/motion/transitionImages.js +49 -0
- package/dist/motionProbe.d.ts +227 -0
- package/dist/motionProbe.js +697 -0
- package/dist/motionProbeControls.d.ts +2 -0
- package/dist/motionProbeControls.js +118 -0
- package/dist/motionProbeDelivery.d.ts +15 -0
- package/dist/motionProbeDelivery.js +84 -0
- package/dist/navigation/DetailList.d.ts +9 -0
- package/dist/navigation/DetailList.js +7 -0
- package/dist/navigation/NavigationChrome.d.ts +18 -0
- package/dist/navigation/NavigationChrome.js +195 -0
- package/dist/navigation/NavigationSearchRow.d.ts +9 -0
- package/dist/navigation/NavigationSearchRow.js +101 -0
- package/dist/navigation/NavigationTitleSlots.d.ts +18 -0
- package/dist/navigation/NavigationTitleSlots.js +64 -0
- package/dist/navigation/NavigatorHost.d.ts +17 -0
- package/dist/navigation/NavigatorHost.js +534 -0
- package/dist/navigation/ScreenContainer.d.ts +31 -0
- package/dist/navigation/ScreenContainer.js +219 -0
- package/dist/navigation/ScrubSourceFrames.d.ts +18 -0
- package/dist/navigation/ScrubSourceFrames.js +67 -0
- package/dist/navigation/Sidebar.d.ts +16 -0
- package/dist/navigation/Sidebar.js +20 -0
- package/dist/navigation/SidebarSymbol.d.ts +4 -0
- package/dist/navigation/SidebarSymbol.js +6 -0
- package/dist/navigation/ToolbarGlass.d.ts +2 -0
- package/dist/navigation/ToolbarGlass.js +429 -0
- package/dist/navigation/TransitionEdge.d.ts +4 -0
- package/dist/navigation/TransitionEdge.js +33 -0
- package/dist/navigation/bottomToolbarGeometry.d.ts +6 -0
- package/dist/navigation/bottomToolbarGeometry.js +14 -0
- package/dist/navigation/chromeCurves.d.ts +48 -0
- package/dist/navigation/chromeCurves.js +255 -0
- package/dist/navigation/glassTransition.d.ts +32 -0
- package/dist/navigation/glassTransition.js +55 -0
- package/dist/navigation/horizontalDrag.d.ts +6 -0
- package/dist/navigation/horizontalDrag.js +15 -0
- package/dist/navigation/interactivePop.d.ts +45 -0
- package/dist/navigation/interactivePop.js +86 -0
- package/dist/navigation/interactivePopTypes.d.ts +85 -0
- package/dist/navigation/interactivePopTypes.js +36 -0
- package/dist/navigation/keyboard.d.ts +9 -0
- package/dist/navigation/keyboard.js +55 -0
- package/dist/navigation/motion.d.ts +19 -0
- package/dist/navigation/motion.js +645 -0
- package/dist/navigation/motionTokens.d.ts +43 -0
- package/dist/navigation/motionTokens.js +75 -0
- package/dist/navigation/nativeScrubExperiment.d.ts +5 -0
- package/dist/navigation/nativeScrubExperiment.js +153 -0
- package/dist/navigation/nativeScrubSource.d.ts +15 -0
- package/dist/navigation/nativeScrubSource.js +88 -0
- package/dist/navigation/navigationChromeModel.d.ts +8 -0
- package/dist/navigation/navigationChromeModel.js +30 -0
- package/dist/navigation/navigationContext.d.ts +22 -0
- package/dist/navigation/navigationContext.js +65 -0
- package/dist/navigation/navigationEdge.d.ts +4 -0
- package/dist/navigation/navigationEdge.js +101 -0
- package/dist/navigation/pointerPop.d.ts +32 -0
- package/dist/navigation/pointerPop.js +206 -0
- package/dist/navigation/probeLayers.d.ts +7 -0
- package/dist/navigation/probeLayers.js +8 -0
- package/dist/navigation/registry.d.ts +14 -0
- package/dist/navigation/registry.js +31 -0
- package/dist/navigation/releaseDecision.d.ts +21 -0
- package/dist/navigation/releaseDecision.js +94 -0
- package/dist/navigation/releaseTrajectory.d.ts +20 -0
- package/dist/navigation/releaseTrajectory.js +95 -0
- package/dist/navigation/releaseVelocity.d.ts +9 -0
- package/dist/navigation/releaseVelocity.js +38 -0
- package/dist/navigation/routeCodec.d.ts +33 -0
- package/dist/navigation/routeCodec.js +123 -0
- package/dist/navigation/scrollEdge.d.ts +18 -0
- package/dist/navigation/scrollEdge.js +66 -0
- package/dist/navigation/scrubFrameLoop.d.ts +44 -0
- package/dist/navigation/scrubFrameLoop.js +129 -0
- package/dist/navigation/sidebarSelection.d.ts +5 -0
- package/dist/navigation/sidebarSelection.js +8 -0
- package/dist/navigation/splitContext.d.ts +17 -0
- package/dist/navigation/splitContext.js +9 -0
- package/dist/navigation/splitState.d.ts +46 -0
- package/dist/navigation/splitState.js +130 -0
- package/dist/navigation/stack.d.ts +25 -0
- package/dist/navigation/stack.js +136 -0
- package/dist/navigation/store.d.ts +80 -0
- package/dist/navigation/store.js +464 -0
- package/dist/navigation/toolbarGlassMotion.d.ts +40 -0
- package/dist/navigation/toolbarGlassMotion.js +202 -0
- package/dist/navigation/toolbarMinimization.d.ts +9 -0
- package/dist/navigation/toolbarMinimization.js +76 -0
- package/dist/navigation/toolbarMotionOwner.d.ts +6 -0
- package/dist/navigation/toolbarMotionOwner.js +30 -0
- package/dist/navigation/touchArbitration.d.ts +34 -0
- package/dist/navigation/touchArbitration.js +550 -0
- package/dist/navigation/tracking.d.ts +7 -0
- package/dist/navigation/tracking.js +19 -0
- package/dist/navigation/transitionBindings.d.ts +31 -0
- package/dist/navigation/transitionBindings.js +106 -0
- package/dist/navigation/transitionChrome.d.ts +31 -0
- package/dist/navigation/transitionChrome.js +380 -0
- package/dist/navigation/transitionPose.d.ts +52 -0
- package/dist/navigation/transitionPose.js +295 -0
- package/dist/navigation/types.d.ts +133 -0
- package/dist/navigation/types.js +1 -0
- package/dist/navigation/zoomDrag.d.ts +3 -0
- package/dist/navigation/zoomDrag.js +125 -0
- package/dist/navigation/zoomGeometry.d.ts +48 -0
- package/dist/navigation/zoomGeometry.js +94 -0
- package/dist/navigation/zoomGlass.d.ts +27 -0
- package/dist/navigation/zoomGlass.js +64 -0
- package/dist/navigation/zoomMotion.d.ts +73 -0
- package/dist/navigation/zoomMotion.js +104 -0
- package/dist/navigation/zoomTransition.d.ts +82 -0
- package/dist/navigation/zoomTransition.js +975 -0
- package/dist/presentation/Presentation.d.ts +61 -0
- package/dist/presentation/Presentation.js +92 -0
- package/dist/presentation/PresentationSurface.d.ts +29 -0
- package/dist/presentation/PresentationSurface.js +586 -0
- package/dist/presentation/PresentedSheet.d.ts +2 -0
- package/dist/presentation/PresentedSheet.js +571 -0
- package/dist/presentation/activity.d.ts +3 -0
- package/dist/presentation/activity.js +24 -0
- package/dist/presentation/coldLaunch.d.ts +2 -0
- package/dist/presentation/coldLaunch.js +19 -0
- package/dist/presentation/dismiss.d.ts +26 -0
- package/dist/presentation/dismiss.js +30 -0
- package/dist/presentation/glassMotion.d.ts +39 -0
- package/dist/presentation/glassMotion.js +259 -0
- package/dist/presentation/glassReady.d.ts +11 -0
- package/dist/presentation/glassReady.js +246 -0
- package/dist/presentation/model.d.ts +108 -0
- package/dist/presentation/model.js +183 -0
- package/dist/presentation/motion.d.ts +56 -0
- package/dist/presentation/motion.js +263 -0
- package/dist/presentation/presentationMotion.d.ts +10 -0
- package/dist/presentation/presentationMotion.js +74 -0
- package/dist/presentation/presentationSource.d.ts +2 -0
- package/dist/presentation/presentationSource.js +28 -0
- package/dist/presentation/sheetChromeContext.d.ts +2 -0
- package/dist/presentation/sheetChromeContext.js +3 -0
- package/dist/presentation/sheetMaterialTransition.d.ts +14 -0
- package/dist/presentation/sheetMaterialTransition.js +33 -0
- package/dist/presentation/sheetReleaseMotion.d.ts +18 -0
- package/dist/presentation/sheetReleaseMotion.js +123 -0
- package/dist/presentation/useAlertKeyboardMotion.d.ts +8 -0
- package/dist/presentation/useAlertKeyboardMotion.js +104 -0
- package/dist/press/Pressable.d.ts +19 -0
- package/dist/press/Pressable.js +16 -0
- package/dist/press/activation.d.ts +20 -0
- package/dist/press/activation.js +28 -0
- package/dist/press/contactReceipt.d.ts +23 -0
- package/dist/press/contactReceipt.js +177 -0
- package/dist/press/gestureArbitration.d.ts +13 -0
- package/dist/press/gestureArbitration.js +38 -0
- package/dist/press/stateMachine.d.ts +29 -0
- package/dist/press/stateMachine.js +39 -0
- package/dist/press/tokens.d.ts +18 -0
- package/dist/press/tokens.js +19 -0
- package/dist/press/usePressInteraction.d.ts +30 -0
- package/dist/press/usePressInteraction.js +247 -0
- package/dist/public/Label.d.ts +16 -0
- package/dist/public/Label.js +40 -0
- package/dist/public/NativeFilePicker.d.ts +19 -0
- package/dist/public/NativeFilePicker.js +75 -0
- package/dist/public/Screen.d.ts +42 -0
- package/dist/public/Screen.js +87 -0
- package/dist/public/actions.d.ts +16 -0
- package/dist/public/actions.js +15 -0
- package/dist/public/buttonBorderShape.d.ts +7 -0
- package/dist/public/buttonBorderShape.js +9 -0
- package/dist/public/chrome.d.ts +3 -0
- package/dist/public/chrome.js +5 -0
- package/dist/public/colors.d.ts +29 -0
- package/dist/public/colors.js +28 -0
- package/dist/public/context.d.ts +19 -0
- package/dist/public/context.js +8 -0
- package/dist/public/controlStyle.d.ts +93 -0
- package/dist/public/controlStyle.js +52 -0
- package/dist/public/controls.d.ts +360 -0
- package/dist/public/controls.js +301 -0
- package/dist/public/definition.d.ts +65 -0
- package/dist/public/definition.js +58 -0
- package/dist/public/deviceActions.d.ts +23 -0
- package/dist/public/deviceActions.js +87 -0
- package/dist/public/environment.d.ts +77 -0
- package/dist/public/environment.js +171 -0
- package/dist/public/fieldContext.d.ts +2 -0
- package/dist/public/fieldContext.js +3 -0
- package/dist/public/filePickers.d.ts +25 -0
- package/dist/public/filePickers.js +11 -0
- package/dist/public/glass.d.ts +31 -0
- package/dist/public/glass.js +29 -0
- package/dist/public/glassValue.d.ts +19 -0
- package/dist/public/glassValue.js +32 -0
- package/dist/public/keyboard.d.ts +4 -0
- package/dist/public/keyboard.js +6 -0
- package/dist/public/navigationTransition.d.ts +48 -0
- package/dist/public/navigationTransition.js +49 -0
- package/dist/public/pickerNavigation.d.ts +7 -0
- package/dist/public/pickerNavigation.js +64 -0
- package/dist/public/presentation.d.ts +40 -0
- package/dist/public/presentation.js +21 -0
- package/dist/public/presentationContext.d.ts +2 -0
- package/dist/public/presentationContext.js +3 -0
- package/dist/public/routeRegistry.d.ts +3 -0
- package/dist/public/routeRegistry.js +10 -0
- package/dist/public/routes.d.ts +74 -0
- package/dist/public/routes.js +105 -0
- package/dist/public/runtime.d.ts +134 -0
- package/dist/public/runtime.js +292 -0
- package/dist/public/screenChrome.d.ts +91 -0
- package/dist/public/screenChrome.js +187 -0
- package/dist/public/scroll.d.ts +38 -0
- package/dist/public/scroll.js +7 -0
- package/dist/public/storage.d.ts +9 -0
- package/dist/public/storage.js +9 -0
- package/dist/public/structure.d.ts +65 -0
- package/dist/public/structure.js +40 -0
- package/dist/public/toolbar.d.ts +37 -0
- package/dist/public/toolbar.js +76 -0
- package/dist/push/PushPermissionExplainer.d.ts +14 -0
- package/dist/push/PushPermissionExplainer.js +30 -0
- package/dist/push/notifications.d.ts +54 -0
- package/dist/push/notifications.js +276 -0
- package/dist/push/routes.d.ts +20 -0
- package/dist/push/routes.js +63 -0
- package/dist/push/schema.d.ts +42 -0
- package/dist/push/schema.js +41 -0
- package/dist/push/urlProjection.d.ts +24 -0
- package/dist/push/urlProjection.js +207 -0
- package/dist/reachability/controller.d.ts +21 -0
- package/dist/reachability/controller.js +202 -0
- package/dist/reachability/model.d.ts +94 -0
- package/dist/reachability/model.js +131 -0
- package/dist/reachability/react.d.ts +29 -0
- package/dist/reachability/react.js +69 -0
- package/dist/restoration/navigation.d.ts +9 -0
- package/dist/restoration/navigation.js +55 -0
- package/dist/restoration/react.d.ts +6 -0
- package/dist/restoration/react.js +21 -0
- package/dist/restoration/routes.d.ts +22 -0
- package/dist/restoration/routes.js +166 -0
- package/dist/restoration/scene.d.ts +44 -0
- package/dist/restoration/scene.js +284 -0
- package/dist/root/SatinRoot.d.ts +25 -0
- package/dist/root/SatinRoot.js +512 -0
- package/dist/root/mountSatin.d.ts +12 -0
- package/dist/root/mountSatin.js +60 -0
- package/dist/root/runtimeContext.d.ts +26 -0
- package/dist/root/runtimeContext.js +30 -0
- package/dist/safe-area/Overlay.d.ts +9 -0
- package/dist/safe-area/Overlay.js +26 -0
- package/dist/safe-area/SafeAreaInset.d.ts +25 -0
- package/dist/safe-area/SafeAreaInset.js +138 -0
- package/dist/safe-area/bottomInsetGeometry.d.ts +12 -0
- package/dist/safe-area/bottomInsetGeometry.js +73 -0
- package/dist/safe-area/context.d.ts +15 -0
- package/dist/safe-area/context.js +8 -0
- package/dist/safe-area/displayCorners.d.ts +21 -0
- package/dist/safe-area/displayCorners.js +70 -0
- package/dist/safe-area/keyboardCarrier.d.ts +26 -0
- package/dist/safe-area/keyboardCarrier.js +394 -0
- package/dist/safe-area/keyboardCarrierGeometry.d.ts +37 -0
- package/dist/safe-area/keyboardCarrierGeometry.js +49 -0
- package/dist/safe-area/modifiers.d.ts +52 -0
- package/dist/safe-area/modifiers.js +86 -0
- package/dist/safe-area/useSafeAreaMetrics.d.ts +83 -0
- package/dist/safe-area/useSafeAreaMetrics.js +367 -0
- package/dist/safe-area/windowChrome.d.ts +7 -0
- package/dist/safe-area/windowChrome.js +14 -0
- package/dist/scroll/RefreshControl.d.ts +8 -0
- package/dist/scroll/RefreshControl.js +135 -0
- package/dist/scroll/ScrollSurface.d.ts +62 -0
- package/dist/scroll/ScrollSurface.js +278 -0
- package/dist/scroll/ScrollTarget.d.ts +6 -0
- package/dist/scroll/ScrollTarget.js +11 -0
- package/dist/scroll/edgePolicy.d.ts +21 -0
- package/dist/scroll/edgePolicy.js +17 -0
- package/dist/scroll/insertionMotion.d.ts +15 -0
- package/dist/scroll/insertionMotion.js +128 -0
- package/dist/scroll/nativeScroll.d.ts +14 -0
- package/dist/scroll/nativeScroll.js +71 -0
- package/dist/scroll/position.d.ts +31 -0
- package/dist/scroll/position.js +273 -0
- package/dist/scroll/pressOwnership.d.ts +4 -0
- package/dist/scroll/pressOwnership.js +65 -0
- package/dist/scroll/refreshMotion.d.ts +9 -0
- package/dist/scroll/refreshMotion.js +15 -0
- package/dist/scroll/refreshable.d.ts +6 -0
- package/dist/scroll/refreshable.js +50 -0
- package/dist/scroll/registry.d.ts +38 -0
- package/dist/scroll/registry.js +261 -0
- package/dist/scroll/screenGeometry.d.ts +8 -0
- package/dist/scroll/screenGeometry.js +50 -0
- package/dist/scroll/scrollIndicator.d.ts +7 -0
- package/dist/scroll/scrollIndicator.js +114 -0
- package/dist/scroll/scrollJump.d.ts +7 -0
- package/dist/scroll/scrollJump.js +16 -0
- package/dist/scroll/types.d.ts +12 -0
- package/dist/scroll/types.js +1 -0
- package/dist/search/SearchDrawer.d.ts +16 -0
- package/dist/search/SearchDrawer.js +421 -0
- package/dist/search/SearchScopesBar.d.ts +6 -0
- package/dist/search/SearchScopesBar.js +12 -0
- package/dist/search/SearchToolbarField.d.ts +8 -0
- package/dist/search/SearchToolbarField.js +115 -0
- package/dist/search/searchBackdrop.d.ts +12 -0
- package/dist/search/searchBackdrop.js +45 -0
- package/dist/search/searchChrome.d.ts +13 -0
- package/dist/search/searchChrome.js +31 -0
- package/dist/search/searchMotion.d.ts +30 -0
- package/dist/search/searchMotion.js +46 -0
- package/dist/search/searchPlacement.d.ts +11 -0
- package/dist/search/searchPlacement.js +15 -0
- package/dist/search/searchable.d.ts +46 -0
- package/dist/search/searchable.js +5 -0
- package/dist/search/useSearchPresentation.d.ts +15 -0
- package/dist/search/useSearchPresentation.js +61 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.js +144 -0
- package/dist/settings/DisclosureIndicator.d.ts +4 -0
- package/dist/settings/DisclosureIndicator.js +6 -0
- package/dist/settings/tokens.d.ts +129 -0
- package/dist/settings/tokens.js +143 -0
- package/dist/shapes/corners.d.ts +14 -0
- package/dist/shapes/corners.js +80 -0
- package/dist/styles.css +9078 -0
- package/dist/styles.css.d.ts +3 -0
- package/dist/sw/activationState.d.ts +20 -0
- package/dist/sw/activationState.js +39 -0
- package/dist/sw/generator.d.ts +14 -0
- package/dist/sw/generator.js +26 -0
- package/dist/sw/manifest.d.ts +32 -0
- package/dist/sw/manifest.js +137 -0
- package/dist/sw/protocol.d.ts +7 -0
- package/dist/sw/protocol.js +7 -0
- package/dist/sw/pushRuntime.d.ts +2 -0
- package/dist/sw/pushRuntime.js +161 -0
- package/dist/sw/registerAppShell.d.ts +25 -0
- package/dist/sw/registerAppShell.js +259 -0
- package/dist/sw/renderServiceWorker.d.ts +10 -0
- package/dist/sw/renderServiceWorker.js +370 -0
- package/dist/sw/requestRouting.d.ts +13 -0
- package/dist/sw/requestRouting.js +26 -0
- package/dist/sw/updateCheck.d.ts +2 -0
- package/dist/sw/updateCheck.js +25 -0
- package/dist/sw/vite.d.ts +20 -0
- package/dist/sw/vite.js +71 -0
- package/dist/symbols/Symbol.d.ts +33 -0
- package/dist/symbols/Symbol.js +59 -0
- package/dist/symbols/catalogue.d.ts +4 -0
- package/dist/symbols/catalogue.js +4139 -0
- package/dist/symbols/exclusions.d.ts +2 -0
- package/dist/symbols/exclusions.js +4 -0
- package/dist/symbols/inheritedWeight.d.ts +3 -0
- package/dist/symbols/inheritedWeight.js +104 -0
- package/dist/symbols/metrics.d.ts +38 -0
- package/dist/symbols/metrics.js +53 -0
- package/dist/symbols/svg.d.ts +3 -0
- package/dist/symbols/svg.js +16 -0
- package/dist/symbols/types.d.ts +30 -0
- package/dist/symbols/types.js +1 -0
- package/dist/tabs/TabSection.d.ts +12 -0
- package/dist/tabs/TabSection.js +4 -0
- package/dist/tabs/TabSidebarSurface.d.ts +7 -0
- package/dist/tabs/TabSidebarSurface.js +29 -0
- package/dist/tabs/TabView.d.ts +28 -0
- package/dist/tabs/TabView.js +258 -0
- package/dist/tabs/accessoryContact.d.ts +2 -0
- package/dist/tabs/accessoryContact.js +42 -0
- package/dist/tabs/compactBar.d.ts +4 -0
- package/dist/tabs/compactBar.js +28 -0
- package/dist/tabs/context.d.ts +8 -0
- package/dist/tabs/context.js +6 -0
- package/dist/tabs/keyboard.d.ts +3 -0
- package/dist/tabs/keyboard.js +23 -0
- package/dist/tabs/model.d.ts +6 -0
- package/dist/tabs/model.js +16 -0
- package/dist/tabs/presentation.d.ts +7 -0
- package/dist/tabs/presentation.js +14 -0
- package/dist/tabs/sourceRevision.d.ts +3 -0
- package/dist/tabs/sourceRevision.js +36 -0
- package/dist/tabs/tabSidebarGlyph.d.ts +2 -0
- package/dist/tabs/tabSidebarGlyph.js +11 -0
- package/dist/tasks/useTask.d.ts +16 -0
- package/dist/tasks/useTask.js +67 -0
- package/dist/testing.d.ts +9 -0
- package/dist/testing.js +11 -0
- package/dist/text-input/TextEditor.d.ts +25 -0
- package/dist/text-input/TextEditor.js +74 -0
- package/dist/text-input/TextField.d.ts +32 -0
- package/dist/text-input/TextField.js +29 -0
- package/dist/text-input/editorGeometry.d.ts +2 -0
- package/dist/text-input/editorGeometry.js +6 -0
- package/dist/text-input/editorTextLayout.d.ts +2 -0
- package/dist/text-input/editorTextLayout.js +31 -0
- package/dist/text-input/focusChain.d.ts +27 -0
- package/dist/text-input/focusChain.js +62 -0
- package/dist/text-input/kinds.d.ts +8 -0
- package/dist/text-input/kinds.js +34 -0
- package/dist/text-input/measureEditor.d.ts +2 -0
- package/dist/text-input/measureEditor.js +50 -0
- package/dist/text-input/submit.d.ts +9 -0
- package/dist/text-input/submit.js +7 -0
- package/dist/unstable.d.ts +16 -0
- package/dist/unstable.js +16 -0
- package/dist/vite.d.ts +3 -0
- package/dist/vite.js +3 -0
- package/dist/web/WebView.d.ts +42 -0
- package/dist/web/WebView.js +115 -0
- package/dist/web/authentication.d.ts +75 -0
- package/dist/web/authentication.js +488 -0
- package/dist/web/openURL.d.ts +37 -0
- package/dist/web/openURL.js +89 -0
- package/dist/web/urlPolicy.d.ts +3 -0
- package/dist/web/urlPolicy.js +19 -0
- package/dist/web/useWebAuthentication.d.ts +3 -0
- package/dist/web/useWebAuthentication.js +6 -0
- package/dist/zoom/Zoomable.d.ts +10 -0
- package/dist/zoom/Zoomable.js +116 -0
- package/dist/zoom/geometry.d.ts +11 -0
- package/dist/zoom/geometry.js +16 -0
- package/package.json +115 -3
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type CaptureBand, type SampleRect } from './captureBands.js';
|
|
2
|
+
export type { CaptureBand, SampleRect } from './captureBands.js';
|
|
3
|
+
/** Points of slack kept around each sample rectangle: press growth, sub-point layout and spring
|
|
4
|
+
* overshoot stay inside the capture without another preparation. */
|
|
5
|
+
export declare const DEMAND_MARGIN_POINTS = 24;
|
|
6
|
+
/** What a plane that does not scroll is captured for (see `demandWindow`). */
|
|
7
|
+
export type PlaneDemand = {
|
|
8
|
+
/** Sample rectangles of every glass surface and region on screen. */
|
|
9
|
+
rects: readonly SampleRect[];
|
|
10
|
+
/** The plane is beneath an open presentation (a sheet, alert or confirmation): glass above it
|
|
11
|
+
* moves over all of it, so it is captured whole. */
|
|
12
|
+
covered: boolean;
|
|
13
|
+
/** The plane is captured again anyway (its content changed): a whole capture may shrink. */
|
|
14
|
+
damaged: boolean;
|
|
15
|
+
};
|
|
16
|
+
/** The sample rectangle of an app glass region: its box and its material's sampling halo. */
|
|
17
|
+
export declare function regionSampleRect(element: Element, treatment?: string): SampleRect | undefined;
|
|
18
|
+
/** Whether an open presentation (sheet, alert, confirmation) paints above `host`. Glass in it moves
|
|
19
|
+
* over the whole of `host` with the presentation, between preparations. */
|
|
20
|
+
export declare function beneathPresentation(host: Element): boolean;
|
|
21
|
+
type HostBox = {
|
|
22
|
+
left: number;
|
|
23
|
+
top: number;
|
|
24
|
+
right: number;
|
|
25
|
+
bottom: number;
|
|
26
|
+
};
|
|
27
|
+
/** The content rows of a plane that does not scroll which glass samples, or undefined for a
|
|
28
|
+
* capture of its whole content.
|
|
29
|
+
*
|
|
30
|
+
* Every sample rectangle that overlaps the host contributes its rows, widened by
|
|
31
|
+
* DEMAND_MARGIN_POINTS; overlapping or nearby rows merge into bands. Unrelated content outside
|
|
32
|
+
* them is never measured, rastered or read back, and a change to it is no change to the
|
|
33
|
+
* capture: capture cost follows the glass, not the page. Bands the plane already holds are kept
|
|
34
|
+
* while they cover the demand (no capture for glass that stays put), and a whole capture is kept
|
|
35
|
+
* until the content changes. Glass that later samples outside the bands makes the region bridge
|
|
36
|
+
* wait for a capture that covers it (`ProductionGlassRuntime.coverFor`); the renderer refuses any
|
|
37
|
+
* sample outside them (`uncoveredRows`). */
|
|
38
|
+
export declare function demandBands(options: {
|
|
39
|
+
host: HostBox;
|
|
40
|
+
contentHeight: number;
|
|
41
|
+
resolution: number;
|
|
42
|
+
demand: PlaneDemand;
|
|
43
|
+
current?: readonly CaptureBand[] | 'full';
|
|
44
|
+
}): CaptureBand[] | undefined;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { orderedTopLayerDialogs } from '../../modal/lifecycle.js';
|
|
2
|
+
import { topLayerDialogOf } from '../topLayer.js';
|
|
3
|
+
import { contextSampleInset } from './contextComposite.js';
|
|
4
|
+
import { atRest, presentationTravel } from '../presentationFrame.js';
|
|
5
|
+
import { bandsCover, snapCaptureBand } from './captureBands.js';
|
|
6
|
+
/** Points of slack kept around each sample rectangle: press growth, sub-point layout and spring
|
|
7
|
+
* overshoot stay inside the capture without another preparation. */
|
|
8
|
+
export const DEMAND_MARGIN_POINTS = 24;
|
|
9
|
+
/** A demand window this close to the whole content captures the whole content instead. */
|
|
10
|
+
const WHOLE_CONTENT_SHARE = 0.75;
|
|
11
|
+
/** The sample rectangle of an app glass region: its box and its material's sampling halo. */
|
|
12
|
+
export function regionSampleRect(element, treatment) {
|
|
13
|
+
// Nested sheet glass samples its resting content plane while CSS moves both.
|
|
14
|
+
// The sheet's own surface has zero nested travel and still samples the page.
|
|
15
|
+
const box = atRest(element.getBoundingClientRect(), presentationTravel(element));
|
|
16
|
+
if (box.width <= 0 || box.height <= 0)
|
|
17
|
+
return;
|
|
18
|
+
const inset = contextSampleInset(treatment);
|
|
19
|
+
return [box.x - inset, box.y - inset, box.width + 2 * inset, box.height + 2 * inset];
|
|
20
|
+
}
|
|
21
|
+
/** Whether an open presentation (sheet, alert, confirmation) paints above `host`. Glass in it moves
|
|
22
|
+
* over the whole of `host` with the presentation, between preparations. */
|
|
23
|
+
export function beneathPresentation(host) {
|
|
24
|
+
const dialogs = orderedTopLayerDialogs(document);
|
|
25
|
+
const own = dialogs.indexOf(topLayerDialogOf(host));
|
|
26
|
+
return dialogs
|
|
27
|
+
.slice(own + 1)
|
|
28
|
+
.some(dialog => dialog.open && dialog.hasAttribute('data-satin-presentation'));
|
|
29
|
+
}
|
|
30
|
+
/** Bands closer than this merge into one: one raster and readback is cheaper than two that
|
|
31
|
+
* nearly touch. */
|
|
32
|
+
const MERGE_GAP_POINTS = 2 * DEMAND_MARGIN_POINTS;
|
|
33
|
+
/** The content rows of a plane that does not scroll which glass samples, or undefined for a
|
|
34
|
+
* capture of its whole content.
|
|
35
|
+
*
|
|
36
|
+
* Every sample rectangle that overlaps the host contributes its rows, widened by
|
|
37
|
+
* DEMAND_MARGIN_POINTS; overlapping or nearby rows merge into bands. Unrelated content outside
|
|
38
|
+
* them is never measured, rastered or read back, and a change to it is no change to the
|
|
39
|
+
* capture: capture cost follows the glass, not the page. Bands the plane already holds are kept
|
|
40
|
+
* while they cover the demand (no capture for glass that stays put), and a whole capture is kept
|
|
41
|
+
* until the content changes. Glass that later samples outside the bands makes the region bridge
|
|
42
|
+
* wait for a capture that covers it (`ProductionGlassRuntime.coverFor`); the renderer refuses any
|
|
43
|
+
* sample outside them (`uncoveredRows`). */
|
|
44
|
+
export function demandBands(options) {
|
|
45
|
+
const { host, contentHeight, resolution, demand, current } = options;
|
|
46
|
+
if (demand.covered)
|
|
47
|
+
return undefined;
|
|
48
|
+
if (current === 'full' && !demand.damaged)
|
|
49
|
+
return undefined;
|
|
50
|
+
const rows = [];
|
|
51
|
+
for (const [x, y, width, height] of demand.rects) {
|
|
52
|
+
if (x + width <= host.left || x >= host.right)
|
|
53
|
+
continue;
|
|
54
|
+
if (y + height <= host.top || y >= host.bottom)
|
|
55
|
+
continue;
|
|
56
|
+
const top = Math.max(0, y - DEMAND_MARGIN_POINTS - host.top);
|
|
57
|
+
const bottom = Math.min(contentHeight, y + height + DEMAND_MARGIN_POINTS - host.top);
|
|
58
|
+
if (bottom > top)
|
|
59
|
+
rows.push([top, bottom]);
|
|
60
|
+
}
|
|
61
|
+
// No glass over the plane: nothing bounds it (a screen without glass keeps its whole capture).
|
|
62
|
+
if (!rows.length)
|
|
63
|
+
return undefined;
|
|
64
|
+
rows.sort((a, b) => a[0] - b[0]);
|
|
65
|
+
const bands = [];
|
|
66
|
+
for (const [top, bottom] of rows) {
|
|
67
|
+
const last = bands.at(-1);
|
|
68
|
+
if (last && top <= last.bottom + MERGE_GAP_POINTS)
|
|
69
|
+
last.bottom = Math.max(last.bottom, bottom);
|
|
70
|
+
else
|
|
71
|
+
bands.push({ top, bottom });
|
|
72
|
+
}
|
|
73
|
+
// Device-pixel rows: a band's edges are whole texels of the capture.
|
|
74
|
+
const snapped = bands.map(band => snapCaptureBand(band, resolution));
|
|
75
|
+
const captured = snapped.reduce((sum, band) => sum + band.bottom - band.top, 0);
|
|
76
|
+
if (captured >= WHOLE_CONTENT_SHARE * contentHeight)
|
|
77
|
+
return undefined;
|
|
78
|
+
if (current && current !== 'full' && bandsCover(current, snapped, resolution))
|
|
79
|
+
return [...current];
|
|
80
|
+
return snapped;
|
|
81
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Release a throwaway capture canvas as soon as it has been consumed.
|
|
2
|
+
*
|
|
3
|
+
* WebKit keeps a GPU-process image for a canvas that was drawn into another canvas, and
|
|
4
|
+
* destroying that image is a synchronous round trip to the GPU process. Left to the garbage
|
|
5
|
+
* collector, the capture canvases of a preparation were swept together later, often in the
|
|
6
|
+
* first frames of the next navigation: a main-thread stall of about 200 ms (sampled in the
|
|
7
|
+
* Catalyst host: HTMLCanvasElement::~HTMLCanvasElement, ImageFrame::clearImage,
|
|
8
|
+
* RemoteNativeImageProxy::platformImage, IPC::Connection::waitForSyncReply). Emptying the
|
|
9
|
+
* canvas drops that image now, inside the preparation, which never runs during motion. */
|
|
10
|
+
export declare function releaseCaptureCanvas(canvas: HTMLCanvasElement): void;
|
|
11
|
+
/** Release every canvas of `canvases` and empty the list (so each is released exactly once,
|
|
12
|
+
* whichever of the normal path or a failure path gets to it first). */
|
|
13
|
+
export declare function releaseCaptureCanvases(canvases: HTMLCanvasElement[]): void;
|
|
14
|
+
/** A reply that never arrives must not keep capture canvases allocated for longer than this. */
|
|
15
|
+
export declare const CAPTURE_RELEASE_FALLBACK_MS = 5000;
|
|
16
|
+
/** Release `canvases` when `settled` settles, fulfilled or rejected, or after `fallbackMs` when it
|
|
17
|
+
* never does (a renderer that stopped answering). Whichever comes first releases them once. */
|
|
18
|
+
export declare function releaseCaptureCanvasesAfter(settled: Promise<unknown>, canvases: HTMLCanvasElement[], fallbackMs?: number): void;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { traceStage, traceStageStart } from './profile.js';
|
|
2
|
+
/** Release a throwaway capture canvas as soon as it has been consumed.
|
|
3
|
+
*
|
|
4
|
+
* WebKit keeps a GPU-process image for a canvas that was drawn into another canvas, and
|
|
5
|
+
* destroying that image is a synchronous round trip to the GPU process. Left to the garbage
|
|
6
|
+
* collector, the capture canvases of a preparation were swept together later, often in the
|
|
7
|
+
* first frames of the next navigation: a main-thread stall of about 200 ms (sampled in the
|
|
8
|
+
* Catalyst host: HTMLCanvasElement::~HTMLCanvasElement, ImageFrame::clearImage,
|
|
9
|
+
* RemoteNativeImageProxy::platformImage, IPC::Connection::waitForSyncReply). Emptying the
|
|
10
|
+
* canvas drops that image now, inside the preparation, which never runs during motion. */
|
|
11
|
+
export function releaseCaptureCanvas(canvas) {
|
|
12
|
+
canvas.width = 0;
|
|
13
|
+
canvas.height = 0;
|
|
14
|
+
}
|
|
15
|
+
/** Release every canvas of `canvases` and empty the list (so each is released exactly once,
|
|
16
|
+
* whichever of the normal path or a failure path gets to it first). */
|
|
17
|
+
export function releaseCaptureCanvases(canvases) {
|
|
18
|
+
if (!canvases.length)
|
|
19
|
+
return;
|
|
20
|
+
const started = traceStageStart();
|
|
21
|
+
const released = canvases.length;
|
|
22
|
+
for (const canvas of canvases.splice(0))
|
|
23
|
+
releaseCaptureCanvas(canvas);
|
|
24
|
+
traceStage('capture-release', started, () => `${released} canvases`);
|
|
25
|
+
}
|
|
26
|
+
/** A reply that never arrives must not keep capture canvases allocated for longer than this. */
|
|
27
|
+
export const CAPTURE_RELEASE_FALLBACK_MS = 5000;
|
|
28
|
+
/** Release `canvases` when `settled` settles, fulfilled or rejected, or after `fallbackMs` when it
|
|
29
|
+
* never does (a renderer that stopped answering). Whichever comes first releases them once. */
|
|
30
|
+
export function releaseCaptureCanvasesAfter(settled, canvases, fallbackMs = CAPTURE_RELEASE_FALLBACK_MS) {
|
|
31
|
+
if (!canvases.length)
|
|
32
|
+
return;
|
|
33
|
+
const fallback = setTimeout(() => releaseCaptureCanvases(canvases), fallbackMs);
|
|
34
|
+
const release = () => {
|
|
35
|
+
clearTimeout(fallback);
|
|
36
|
+
releaseCaptureCanvases(canvases);
|
|
37
|
+
};
|
|
38
|
+
settled.then(release, release);
|
|
39
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { GlassRegionEvent } from '../rendererContract.js';
|
|
2
|
+
import type { GlassLayer } from './layers.js';
|
|
3
|
+
import type { Request } from '../worker/protocol.js';
|
|
4
|
+
export declare class WebGPUClient {
|
|
5
|
+
private transport?;
|
|
6
|
+
private local?;
|
|
7
|
+
get documentOwned(): boolean;
|
|
8
|
+
private nextId;
|
|
9
|
+
private pending;
|
|
10
|
+
private presentationAllowed;
|
|
11
|
+
/** Does not wait for the renderer queue, so a stalled request remains diagnosable. */
|
|
12
|
+
status(): {
|
|
13
|
+
execution: string;
|
|
14
|
+
presentationAllowed: boolean | undefined;
|
|
15
|
+
failed: string | undefined;
|
|
16
|
+
pending: {
|
|
17
|
+
id: number;
|
|
18
|
+
operation: string;
|
|
19
|
+
ageMs: number;
|
|
20
|
+
}[];
|
|
21
|
+
};
|
|
22
|
+
private adapterDeadline?;
|
|
23
|
+
private failed?;
|
|
24
|
+
private frames;
|
|
25
|
+
private webgpu;
|
|
26
|
+
private currentAppearance;
|
|
27
|
+
/** Production commits visibility only after remeasuring and replacing sources. */
|
|
28
|
+
deferResume: boolean;
|
|
29
|
+
/** Unsolicited worker events (a region's close morph ended). */
|
|
30
|
+
private eventListeners;
|
|
31
|
+
onEvent(listener: (event: GlassRegionEvent) => void): () => void;
|
|
32
|
+
backend: 'webgpu';
|
|
33
|
+
private visibility;
|
|
34
|
+
readonly work: {
|
|
35
|
+
at: number;
|
|
36
|
+
ms: number;
|
|
37
|
+
}[];
|
|
38
|
+
init(canvas: HTMLCanvasElement, resolution: number, worker: boolean, webgpu?: boolean, appearance?: () => 'light' | 'dark', execution?: 'worker' | 'document'): Promise<void>;
|
|
39
|
+
private initialize;
|
|
40
|
+
private failTransport;
|
|
41
|
+
attachLayer(canvas: HTMLCanvasElement, layer: GlassLayer): Promise<unknown>;
|
|
42
|
+
request(request: Request, transfer?: Transferable[], admitted?: () => void): Promise<unknown>;
|
|
43
|
+
pose(x: number, at: number): void;
|
|
44
|
+
private adapterVisibility;
|
|
45
|
+
private focus;
|
|
46
|
+
private bindLifecycle;
|
|
47
|
+
resume(): void;
|
|
48
|
+
park(): Promise<unknown>;
|
|
49
|
+
}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { glassNow, glassTiming, receiveGlassFrames, receiveGlassTiming, setGlassTimingSink, } from './profile.js';
|
|
2
|
+
import { motionPreparationEnabled, recordMotionPreparation } from '../../motionProbe.js';
|
|
3
|
+
import { installGlassErrorAlert } from '../errorAlert.js';
|
|
4
|
+
import { glassFailureCode } from '../webgpu/errorCode.js';
|
|
5
|
+
import { reportGlassError, setGlassAdapterRecovery } from '../errors.js';
|
|
6
|
+
import { GLASS_READINESS_BUDGET_MS, VisibleDeadline } from '../visibleDeadline.js';
|
|
7
|
+
import { PageFrameHost } from './frameClock.js';
|
|
8
|
+
import { readDarkAppearance } from '../../app/appearance.js';
|
|
9
|
+
export class WebGPUClient {
|
|
10
|
+
transport;
|
|
11
|
+
local;
|
|
12
|
+
get documentOwned() {
|
|
13
|
+
return !!this.local;
|
|
14
|
+
}
|
|
15
|
+
nextId = 0;
|
|
16
|
+
pending = new Map();
|
|
17
|
+
presentationAllowed;
|
|
18
|
+
/** Does not wait for the renderer queue, so a stalled request remains diagnosable. */
|
|
19
|
+
status() {
|
|
20
|
+
return {
|
|
21
|
+
execution: this.documentOwned ? 'document' : 'worker',
|
|
22
|
+
presentationAllowed: this.presentationAllowed,
|
|
23
|
+
failed: this.failed?.message,
|
|
24
|
+
pending: [...this.pending].map(([id, request]) => ({
|
|
25
|
+
id,
|
|
26
|
+
operation: request.operation,
|
|
27
|
+
ageMs: glassNow() - request.at,
|
|
28
|
+
})),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
adapterDeadline;
|
|
32
|
+
failed;
|
|
33
|
+
frames = new PageFrameHost();
|
|
34
|
+
webgpu = false;
|
|
35
|
+
currentAppearance = () => readDarkAppearance() ? 'dark' : 'light';
|
|
36
|
+
/** Production commits visibility only after remeasuring and replacing sources. */
|
|
37
|
+
deferResume = false;
|
|
38
|
+
/** Unsolicited worker events (a region's close morph ended). */
|
|
39
|
+
eventListeners = new Set();
|
|
40
|
+
onEvent(listener) {
|
|
41
|
+
this.eventListeners.add(listener);
|
|
42
|
+
return () => {
|
|
43
|
+
this.eventListeners.delete(listener);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
backend = 'webgpu';
|
|
47
|
+
visibility = (event) => {
|
|
48
|
+
const visible = event?.type !== 'pagehide' && document.visibilityState === 'visible';
|
|
49
|
+
if (visible)
|
|
50
|
+
void this.request({ type: 'retry-adapter' }).catch(() => {
|
|
51
|
+
// The device owner reports an exhausted burst once, with its history.
|
|
52
|
+
});
|
|
53
|
+
if (!visible || !this.deferResume)
|
|
54
|
+
void this.request({ type: 'visible', visible }).catch(error => {
|
|
55
|
+
reportGlassError(glassFailureCode('worker control', error), error, 'worker control');
|
|
56
|
+
});
|
|
57
|
+
if (!visible)
|
|
58
|
+
this.frames.cancel();
|
|
59
|
+
};
|
|
60
|
+
work = [];
|
|
61
|
+
async init(canvas, resolution, worker, webgpu = false, appearance = () => (readDarkAppearance() ? 'dark' : 'light'), execution = 'worker') {
|
|
62
|
+
installGlassErrorAlert();
|
|
63
|
+
setGlassTimingSink(event => recordMotionPreparation(() => ({
|
|
64
|
+
kind: 'webgpu-timing',
|
|
65
|
+
...event,
|
|
66
|
+
epoch: event.at,
|
|
67
|
+
at: event.at - performance.timeOrigin,
|
|
68
|
+
})), motionPreparationEnabled);
|
|
69
|
+
glassTiming('client-start');
|
|
70
|
+
try {
|
|
71
|
+
await this.initialize(canvas, resolution, worker, webgpu, appearance, execution);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
reportGlassError(glassFailureCode('renderer initialization', error), error, 'renderer initialization');
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async initialize(canvas, resolution, worker, webgpu, appearance, execution) {
|
|
79
|
+
this.currentAppearance = appearance;
|
|
80
|
+
// 7b: do not create the page context before visibility plus one frame.
|
|
81
|
+
if (document.visibilityState !== 'visible')
|
|
82
|
+
await new Promise(resolve => {
|
|
83
|
+
const listener = () => {
|
|
84
|
+
if (document.visibilityState === 'visible') {
|
|
85
|
+
document.removeEventListener('visibilitychange', listener);
|
|
86
|
+
resolve();
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
document.addEventListener('visibilitychange', listener);
|
|
90
|
+
});
|
|
91
|
+
await new Promise(resolve => requestAnimationFrame(() => resolve()));
|
|
92
|
+
this.webgpu = webgpu;
|
|
93
|
+
if (worker) {
|
|
94
|
+
const receive = (event) => {
|
|
95
|
+
if (this.frames.receive(event.data, data => this.transport.postMessage(data)))
|
|
96
|
+
return;
|
|
97
|
+
const { id, value, error, glassError, glassProfile, glassFrames, glassEvent, appearanceRefresh, appearanceRevision, } = event.data;
|
|
98
|
+
if (typeof event.data.adapterRecovery === 'boolean') {
|
|
99
|
+
const pending = event.data.adapterRecovery;
|
|
100
|
+
setGlassAdapterRecovery(pending);
|
|
101
|
+
if (pending && !this.adapterDeadline) {
|
|
102
|
+
// Settled regions may have cancelled their own deadlines before loss.
|
|
103
|
+
// Retain one budget through duplicate loss signals and hidden time.
|
|
104
|
+
this.adapterDeadline = new VisibleDeadline(GLASS_READINESS_BUDGET_MS, () => {
|
|
105
|
+
reportGlassError('readiness-timeout', 'Glass device was not reconstructed within 10 s of visible time', 'device recovery');
|
|
106
|
+
});
|
|
107
|
+
this.adapterDeadline.start();
|
|
108
|
+
}
|
|
109
|
+
else if (!pending) {
|
|
110
|
+
this.adapterDeadline?.cancel();
|
|
111
|
+
this.adapterDeadline = undefined;
|
|
112
|
+
}
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (appearanceRefresh) {
|
|
116
|
+
void this.request({
|
|
117
|
+
type: 'canonical',
|
|
118
|
+
appearanceRevision,
|
|
119
|
+
request: {
|
|
120
|
+
type: 'appearance',
|
|
121
|
+
value: appearance(),
|
|
122
|
+
reducedMotion: matchMedia('(prefers-reduced-motion: reduce)').matches,
|
|
123
|
+
},
|
|
124
|
+
}).catch(error => {
|
|
125
|
+
reportGlassError(glassFailureCode('appearance restoration', error), error, 'appearance restoration');
|
|
126
|
+
});
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (glassEvent) {
|
|
130
|
+
if (glassEvent.type === 'presentation-gate')
|
|
131
|
+
this.presentationAllowed = glassEvent.allowed;
|
|
132
|
+
for (const listener of this.eventListeners)
|
|
133
|
+
listener(glassEvent);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (glassFrames) {
|
|
137
|
+
receiveGlassFrames(glassFrames);
|
|
138
|
+
recordMotionPreparation(() => ({
|
|
139
|
+
kind: 'webgpu-frames',
|
|
140
|
+
at: performance.now(),
|
|
141
|
+
summaries: glassFrames,
|
|
142
|
+
}));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (glassProfile) {
|
|
146
|
+
receiveGlassTiming(glassProfile);
|
|
147
|
+
recordMotionPreparation(() => ({
|
|
148
|
+
kind: 'webgpu-timing',
|
|
149
|
+
...glassProfile,
|
|
150
|
+
epoch: glassProfile.at,
|
|
151
|
+
at: glassProfile.at - performance.timeOrigin,
|
|
152
|
+
}));
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (glassError) {
|
|
156
|
+
reportGlassError(glassError.code, glassError.message, glassError.stage, glassError.reason);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const request = this.pending.get(id);
|
|
160
|
+
this.pending.delete(id);
|
|
161
|
+
if (error)
|
|
162
|
+
request?.reject(new Error(error));
|
|
163
|
+
else
|
|
164
|
+
request?.resolve(value);
|
|
165
|
+
};
|
|
166
|
+
glassTiming(execution === 'document' ? 'renderer-create' : 'worker-create');
|
|
167
|
+
if (execution === 'document') {
|
|
168
|
+
const { createWebGPURenderer } = await import('./renderer.js');
|
|
169
|
+
const renderer = createWebGPURenderer(data => queueMicrotask(() => receive(new MessageEvent('message', { data }))));
|
|
170
|
+
this.local = renderer;
|
|
171
|
+
this.transport = {
|
|
172
|
+
postMessage: data => renderer.receive({ data }),
|
|
173
|
+
terminate: () => renderer.stop(),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const transport = new Worker(new URL('./entry.worker.js', import.meta.url), {
|
|
178
|
+
type: 'module',
|
|
179
|
+
name: 'satin-glass-webgpu',
|
|
180
|
+
});
|
|
181
|
+
transport.onmessage = receive;
|
|
182
|
+
transport.onerror = event => this.failTransport(new Error(event.message || 'Glass worker failed'), 'worker startup/runtime');
|
|
183
|
+
transport.onmessageerror = () => this.failTransport(Error('Glass worker message could not be deserialized'), 'worker transport');
|
|
184
|
+
this.transport = {
|
|
185
|
+
postMessage: (data, transfer = []) => transport.postMessage(data, transfer),
|
|
186
|
+
terminate: () => transport.terminate(),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
// The transport is page-lived, including while release fallback is presented.
|
|
190
|
+
// Keep availability signals bound when presentation is parked.
|
|
191
|
+
document.addEventListener('visibilitychange', this.adapterVisibility, true);
|
|
192
|
+
window.addEventListener('pagehide', this.adapterVisibility, true);
|
|
193
|
+
window.addEventListener('pageshow', this.adapterVisibility);
|
|
194
|
+
window.addEventListener('focus', this.adapterVisibility);
|
|
195
|
+
if (webgpu) {
|
|
196
|
+
let timeout;
|
|
197
|
+
try {
|
|
198
|
+
await Promise.race([
|
|
199
|
+
this.request({ type: 'capability' }),
|
|
200
|
+
new Promise((_, reject) => {
|
|
201
|
+
timeout = setTimeout(() => reject(Error('WebGPU startup exceeded 2.5 seconds')), 2500);
|
|
202
|
+
}),
|
|
203
|
+
]);
|
|
204
|
+
this.backend = 'webgpu';
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
this.failed = error instanceof Error ? error : Error(String(error));
|
|
208
|
+
reportGlassError(glassFailureCode('WebGPU startup', this.failed), this.failed, 'WebGPU startup');
|
|
209
|
+
this.transport?.terminate();
|
|
210
|
+
for (const pending of this.pending.values())
|
|
211
|
+
pending.reject(this.failed);
|
|
212
|
+
this.pending.clear();
|
|
213
|
+
throw this.failed;
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
clearTimeout(timeout);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const offscreen = this.local ? canvas : canvas.transferControlToOffscreen();
|
|
220
|
+
await this.request({
|
|
221
|
+
type: 'init',
|
|
222
|
+
canvas: offscreen,
|
|
223
|
+
resolution,
|
|
224
|
+
appearance: appearance(),
|
|
225
|
+
presentationLeadMs: Number(document.documentElement.getAttribute('data-satin-experimental-glass-lead-ms') ?? 0),
|
|
226
|
+
}, this.local ? [] : [offscreen]);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
throw Error('WebGPU requires an owned renderer transport');
|
|
230
|
+
}
|
|
231
|
+
this.bindLifecycle();
|
|
232
|
+
}
|
|
233
|
+
failTransport(error, stage) {
|
|
234
|
+
this.adapterDeadline?.cancel();
|
|
235
|
+
this.failed = error;
|
|
236
|
+
reportGlassError(glassFailureCode(stage, error), error, stage);
|
|
237
|
+
for (const pending of this.pending.values())
|
|
238
|
+
pending.reject(error);
|
|
239
|
+
this.pending.clear();
|
|
240
|
+
}
|
|
241
|
+
async attachLayer(canvas, layer) {
|
|
242
|
+
if (!this.webgpu)
|
|
243
|
+
throw Error('Additional presentation canvases require WebGPU');
|
|
244
|
+
canvas.style.position = 'absolute';
|
|
245
|
+
canvas.style.pointerEvents = 'none';
|
|
246
|
+
canvas.style.zIndex = String(layer.depth);
|
|
247
|
+
canvas.dataset.satinGlassLayer = layer.id;
|
|
248
|
+
canvas.dataset.satinGlassAttachment = layer.attachment.kind;
|
|
249
|
+
if (layer.attachment.kind === 'scroll') {
|
|
250
|
+
const container = canvas.closest('[data-satin-scroll-container]');
|
|
251
|
+
if (container?.getAttribute('data-satin-scroll-container') !== layer.attachment.scrollId)
|
|
252
|
+
throw Error('Scroll glass canvas must be mounted inside its declared scroll container');
|
|
253
|
+
}
|
|
254
|
+
const offscreen = this.local ? canvas : canvas.transferControlToOffscreen();
|
|
255
|
+
return this.request({ type: 'attach-layer', layer, canvas: offscreen }, this.local ? [] : [offscreen]);
|
|
256
|
+
}
|
|
257
|
+
request(request, transfer = [], admitted) {
|
|
258
|
+
if (this.failed)
|
|
259
|
+
return Promise.reject(this.failed);
|
|
260
|
+
if (request.type === 'visible' && request.visible) {
|
|
261
|
+
// Read at dispatch, after the appearance store's visibility handler. Never
|
|
262
|
+
// infer a resume material from the hidden-time media query or worker state.
|
|
263
|
+
request = {
|
|
264
|
+
...request,
|
|
265
|
+
appearance: this.currentAppearance(),
|
|
266
|
+
reducedMotion: matchMedia('(prefers-reduced-motion: reduce)').matches,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
const id = ++this.nextId, at = glassNow();
|
|
270
|
+
return new Promise((resolve, reject) => {
|
|
271
|
+
this.pending.set(id, {
|
|
272
|
+
at,
|
|
273
|
+
operation: request.type === 'canonical' ? `canonical:${request.request.type}` : request.type,
|
|
274
|
+
resolve: value => {
|
|
275
|
+
glassTiming('rpc', at, () => request.type === 'canonical' ? 'canonical:' + request.request.type : request.type);
|
|
276
|
+
resolve(value);
|
|
277
|
+
},
|
|
278
|
+
reject: error => {
|
|
279
|
+
glassTiming('rpc', at, request.type, error);
|
|
280
|
+
reject(error);
|
|
281
|
+
},
|
|
282
|
+
});
|
|
283
|
+
try {
|
|
284
|
+
this.transport.postMessage({ id, request, postedAt: glassNow() }, transfer);
|
|
285
|
+
admitted?.();
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
this.pending.delete(id);
|
|
289
|
+
reportGlassError(glassFailureCode('worker transport', error), error, 'worker transport');
|
|
290
|
+
reject(error);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
pose(x, at) {
|
|
295
|
+
const start = performance.now(), request = { type: 'pose', x, at };
|
|
296
|
+
this.transport.postMessage({ id: 0, request });
|
|
297
|
+
this.work.push({ at, ms: performance.now() - start });
|
|
298
|
+
if (this.work.length > 2400)
|
|
299
|
+
this.work.shift();
|
|
300
|
+
}
|
|
301
|
+
adapterVisibility = (event) => {
|
|
302
|
+
if (this.failed)
|
|
303
|
+
return;
|
|
304
|
+
const visible = event.type !== 'pagehide' && document.visibilityState === 'visible';
|
|
305
|
+
this.adapterDeadline?.setVisible(visible);
|
|
306
|
+
void this.request({ type: 'adapter-visibility', visible }).catch(() => {
|
|
307
|
+
// Transport failures already enter the terminal diagnostic channel.
|
|
308
|
+
});
|
|
309
|
+
};
|
|
310
|
+
focus = () => {
|
|
311
|
+
if (document.visibilityState === 'visible')
|
|
312
|
+
void this.request({ type: 'retry-adapter' }).catch(() => {
|
|
313
|
+
// The device owner reports terminal acquisition failures.
|
|
314
|
+
});
|
|
315
|
+
};
|
|
316
|
+
bindLifecycle() {
|
|
317
|
+
// Capture hide before the appearance store's bubble listener can publish.
|
|
318
|
+
document.addEventListener('visibilitychange', this.visibility, true);
|
|
319
|
+
window.addEventListener('pagehide', this.visibility, true);
|
|
320
|
+
window.addEventListener('pageshow', this.visibility);
|
|
321
|
+
window.addEventListener('focus', this.focus);
|
|
322
|
+
}
|
|
323
|
+
resume() {
|
|
324
|
+
this.bindLifecycle();
|
|
325
|
+
this.visibility();
|
|
326
|
+
}
|
|
327
|
+
park() {
|
|
328
|
+
this.frames.cancel();
|
|
329
|
+
document.removeEventListener('visibilitychange', this.visibility, true);
|
|
330
|
+
window.removeEventListener('pagehide', this.visibility, true);
|
|
331
|
+
window.removeEventListener('pageshow', this.visibility);
|
|
332
|
+
window.removeEventListener('focus', this.focus);
|
|
333
|
+
return this.request({ type: 'visible', visible: false });
|
|
334
|
+
// Preserve the page-lifetime worker and device.
|
|
335
|
+
}
|
|
336
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Prepare the dim before revealing a context menu, including speculative hold preparation.
|
|
2
|
+
* Only menu rasters sample this overlay; the displayed popover dims the other controls. */
|
|
3
|
+
export declare function contextBackdrop(document: Document): {
|
|
4
|
+
owner: string | undefined;
|
|
5
|
+
alpha: number;
|
|
6
|
+
} | undefined;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { backdropOwner } from './backdropLayers.js';
|
|
2
|
+
/** Prepare the dim before revealing a context menu, including speculative hold preparation.
|
|
3
|
+
* Only menu rasters sample this overlay; the displayed popover dims the other controls. */
|
|
4
|
+
export function contextBackdrop(document) {
|
|
5
|
+
const hosts = document.querySelectorAll('[data-satin-context-backdrop-active]');
|
|
6
|
+
const host = hosts[hosts.length - 1];
|
|
7
|
+
if (!host)
|
|
8
|
+
return undefined;
|
|
9
|
+
return {
|
|
10
|
+
owner: backdropOwner(host),
|
|
11
|
+
alpha: document.documentElement.dataset.satinAppearance === 'dark' ? 0.48 : 0.2,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** Native light exterior fit, review-2/measurements/context-shadow-fit.json.
|
|
2
|
+
* Dark uses the same geometric shadow candidate; its near-black signal did not identify a fit. */
|
|
3
|
+
export declare const contextPreviewShadow: readonly [19.544682868986335, 0.29743200247189167, 0.24465397829558655];
|
|
4
|
+
export declare const contextMenuShadow: readonly [17.05975989117854, 0.12642226441997836, 7.75094276443249];
|
|
5
|
+
export declare const contextSampleInset: (treatment?: string) => 20 | 48 | 80;
|
|
6
|
+
export declare const contextBackdropFit: {
|
|
7
|
+
readonly light: {
|
|
8
|
+
readonly sigma: 0.031692773778513594;
|
|
9
|
+
readonly gain: 0.8010016469847555;
|
|
10
|
+
readonly bias: number;
|
|
11
|
+
};
|
|
12
|
+
readonly dark: {
|
|
13
|
+
readonly sigma: 0.034251656122903235;
|
|
14
|
+
readonly gain: 0.5188529641684325;
|
|
15
|
+
readonly bias: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare const contextComposite: {
|
|
19
|
+
readonly uniforms: readonly ['uResolution', 'uShape', 'uRadius', 'uFilter', 'uAxis', 'uShadow'];
|
|
20
|
+
readonly textures: readonly ['uTexture'];
|
|
21
|
+
readonly wgsl: `
|
|
22
|
+
struct P { resolution:vec4f, shape:vec4f, radius:vec4f, response:vec4f, axis:vec4f, shadow:vec4f }
|
|
23
|
+
@group(0) @binding(0) var<uniform> p:P;
|
|
24
|
+
@group(0) @binding(1) var s:sampler;
|
|
25
|
+
@group(0) @binding(2) var source:texture_2d<f32>;
|
|
26
|
+
// Gaussian integral of a rounded rectangle. Integrate horizontal CDF slices
|
|
27
|
+
// through the true rounded aperture, rather than a distance-only halo.
|
|
28
|
+
fn cdf(v:f32)->f32 {
|
|
29
|
+
let z=abs(v)/sqrt(2.0);let t=1.0/(1.0+.3275911*z);
|
|
30
|
+
let erf=1.0-(((((1.061405429*t-1.453152027)*t)+1.421413741)*t-.284496736)*t+.254829592)*t*exp(-z*z);
|
|
31
|
+
return .5*(1.0+sign(v)*erf);
|
|
32
|
+
}
|
|
33
|
+
fn shadowAt(point:vec2f)->f32 {
|
|
34
|
+
let sigma=p.shadow.x;if(sigma<=0.0){return 0.0;}
|
|
35
|
+
let local=point-p.shape.xy-vec2f(0,p.shadow.z);var total=0.0;
|
|
36
|
+
let step=2*p.shape.w/64.0;let exponent=select(2.0,2.900378259,p.radius.y>0.0);
|
|
37
|
+
for(var i=0;i<64;i++){
|
|
38
|
+
let yy=-p.shape.w+(f32(i)+.5)*step;let dy=(yy-local.y)/sigma;
|
|
39
|
+
let corner=max(0.0,abs(yy)-(p.shape.w-p.radius.x));
|
|
40
|
+
let halfWidth=p.shape.z-p.radius.x+p.radius.x*pow(max(0.0,1.0-pow(corner/p.radius.x,exponent)),1.0/exponent);
|
|
41
|
+
total+=(cdf((halfWidth-local.x)/sigma)-cdf((-halfWidth-local.x)/sigma))*exp(-.5*dy*dy)*step/(sigma*sqrt(6.283185307));
|
|
42
|
+
}
|
|
43
|
+
return total*p.shadow.y;
|
|
44
|
+
}
|
|
45
|
+
@fragment fn main(@location(0) uv:vec2f,@location(1) coord:vec2f)->@location(0) vec4f {
|
|
46
|
+
var colour=textureSampleLevel(source,s,uv,0);
|
|
47
|
+
if(p.response.x>0.001){
|
|
48
|
+
var total=1.0;
|
|
49
|
+
for(var i=1;i<=6;i++){
|
|
50
|
+
let w=exp(-.5*pow(f32(i)*.5,2));
|
|
51
|
+
let delta=p.axis.xy*f32(i)*.5*p.response.x/p.resolution.xy;
|
|
52
|
+
colour+=(textureSampleLevel(source,s,uv+delta,0)+textureSampleLevel(source,s,uv-delta,0))*w;
|
|
53
|
+
total+=2*w;
|
|
54
|
+
}
|
|
55
|
+
colour/=total;
|
|
56
|
+
}
|
|
57
|
+
let point=coord*p.resolution.xy;
|
|
58
|
+
let q=abs(point-p.shape.xy)-p.shape.zw+p.radius.x;
|
|
59
|
+
let distance=length(max(q,vec2f(0)))+min(max(q.x,q.y),0)-p.radius.x;
|
|
60
|
+
let coverage=1-smoothstep(-.5,.5,distance);
|
|
61
|
+
let face=vec4f(clamp(colour.rgb*p.response.y+vec3f(p.response.z)*colour.a,vec3f(0),vec3f(1)),colour.a)*select(coverage,1.0,p.radius.y>0.0);
|
|
62
|
+
return face+vec4f(0,0,0,shadowAt(point))*(1-face.a);
|
|
63
|
+
}`;
|
|
64
|
+
};
|