@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,473 @@
|
|
|
1
|
+
import { tabBottomChrome } from '../../tabs/compactBar.js';
|
|
2
|
+
import { animateLayout, timelineStart } from '../../motion/animate.js';
|
|
3
|
+
import { frameUnion } from '../regions.js';
|
|
4
|
+
import { ACCESSORY_PROFILES, accessoryRunDuration, RESTING_ACCESSORY_VELOCITY, sampleAccessory, } from '../lens/tabAccessoryMotion.js';
|
|
5
|
+
const readyInk = new WeakMap();
|
|
6
|
+
/**
|
|
7
|
+
* Whether the renderer draws the accessory's ink and capsule while it moves (a retained track).
|
|
8
|
+
* The morph needs it: only then can the canvas hold still and the glass refract what is
|
|
9
|
+
* really behind it every frame (see `holds` in `move`). `data-satin-experimental-accessory-worker`
|
|
10
|
+
* still enables it alone.
|
|
11
|
+
*/
|
|
12
|
+
export function accessoryWorkerEnabled(element) {
|
|
13
|
+
const root = document.documentElement;
|
|
14
|
+
return ((root.hasAttribute('data-satin-experimental-accessory-worker') ||
|
|
15
|
+
root.hasAttribute('data-satin-experimental-accessory-morph')) &&
|
|
16
|
+
!!element.closest('[data-satin-tab-bottom-accessory]'));
|
|
17
|
+
}
|
|
18
|
+
export function accessoryInkReady(element, width) {
|
|
19
|
+
readyInk.set(element, width);
|
|
20
|
+
}
|
|
21
|
+
export function accessoryInkWidth(element) {
|
|
22
|
+
return readyInk.get(element);
|
|
23
|
+
}
|
|
24
|
+
const glassMotions = new WeakMap();
|
|
25
|
+
export function accessoryGlassMotion(element) {
|
|
26
|
+
return glassMotions.get(element);
|
|
27
|
+
}
|
|
28
|
+
const reaches = new WeakMap();
|
|
29
|
+
export function accessoryReach(element) {
|
|
30
|
+
const reach = reaches.get(element);
|
|
31
|
+
const chrome = element.closest('[data-satin-tab-bottom-chrome]')?.getBoundingClientRect();
|
|
32
|
+
if (!reach || !chrome)
|
|
33
|
+
return undefined;
|
|
34
|
+
// A new chrome width (rotation, a resized window) lays the rows out again.
|
|
35
|
+
if (Math.abs(chrome.width - reach.chrome) > 0.5) {
|
|
36
|
+
reaches.delete(element);
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
x: chrome.left + reach.left,
|
|
41
|
+
y: chrome.bottom + reach.top,
|
|
42
|
+
width: reach.width,
|
|
43
|
+
height: reach.height,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function extendReach(element, frame) {
|
|
47
|
+
const chrome = element.closest('[data-satin-tab-bottom-chrome]')?.getBoundingClientRect();
|
|
48
|
+
if (!chrome)
|
|
49
|
+
return;
|
|
50
|
+
const known = accessoryReach(element);
|
|
51
|
+
const union = known ? frameUnion(known, frame) : frame;
|
|
52
|
+
// Whole points, so a slightly different spring path does not resize the canvas again.
|
|
53
|
+
const left = Math.floor(union.x - chrome.left), top = Math.floor(union.y - chrome.bottom);
|
|
54
|
+
reaches.set(element, {
|
|
55
|
+
left,
|
|
56
|
+
top,
|
|
57
|
+
width: Math.ceil(union.x + union.width - chrome.left) - left,
|
|
58
|
+
height: Math.ceil(union.y + union.height - chrome.bottom) - top,
|
|
59
|
+
chrome: chrome.width,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/** Keyframes per second of motion. WAAPI interpolates linearly between them. */
|
|
63
|
+
const KEYFRAMES_PER_SECOND = 120;
|
|
64
|
+
/**
|
|
65
|
+
* Opt-in (`<html data-satin-experimental-accessory-morph>`) until its main-thread cost is resolved:
|
|
66
|
+
* on iPad, during a scroll-driven collapse, the page's animation frames ran at a 44 ms median
|
|
67
|
+
* with the morph against 17 ms without it (expand: 18 vs 17 ms). Without the attribute the
|
|
68
|
+
* transaction only commits the layout, which is the previous behaviour.
|
|
69
|
+
*/
|
|
70
|
+
export function accessoryMorphEnabled() {
|
|
71
|
+
return document.documentElement.hasAttribute('data-satin-experimental-accessory-morph');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Moves the TabView bottom accessory between its expanded and inline rows as one element.
|
|
75
|
+
*
|
|
76
|
+
* The minimize transaction commits the accessory's target layout once (CSS keyed on the compact
|
|
77
|
+
* restore control). This owner reads the box the accessory presents just before that commit,
|
|
78
|
+
* then translates it through fixed rounded masks; child anchors come from the two endpoint layouts.
|
|
79
|
+
* Material geometry is frozen once in a fixed envelope; the compositor clips that envelope
|
|
80
|
+
* with the same sampled width trajectory, so glass capture/measurement is not part of each motion frame.
|
|
81
|
+
* The aperture retains its radius and live ink moves without scaling.
|
|
82
|
+
*/
|
|
83
|
+
export class AccessoryMorph {
|
|
84
|
+
run;
|
|
85
|
+
dock;
|
|
86
|
+
constructor(dock) {
|
|
87
|
+
this.dock = dock;
|
|
88
|
+
}
|
|
89
|
+
/** The dock's glass chrome is a separate layer; the accessory lives in the TabView's bottom
|
|
90
|
+
* inset under the same app root (the scope the compact-layout CSS also keys on). */
|
|
91
|
+
get chrome() {
|
|
92
|
+
return tabBottomChrome(this.dock);
|
|
93
|
+
}
|
|
94
|
+
get accessory() {
|
|
95
|
+
return this.chrome?.querySelector(':scope > [data-satin-tab-bottom-accessory]');
|
|
96
|
+
}
|
|
97
|
+
/** The accessory's presented edges relative to the bottom chrome, or undefined without one. */
|
|
98
|
+
presentedBox() {
|
|
99
|
+
const chrome = this.chrome?.getBoundingClientRect();
|
|
100
|
+
const accessory = this.accessory?.getBoundingClientRect();
|
|
101
|
+
if (!chrome || !accessory || accessory.width === 0)
|
|
102
|
+
return undefined;
|
|
103
|
+
return {
|
|
104
|
+
left: accessory.left - chrome.left,
|
|
105
|
+
right: chrome.right - accessory.right,
|
|
106
|
+
bottom: chrome.bottom - accessory.bottom,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Run `commit` (the one layout change between rows) and animate the accessory across it.
|
|
111
|
+
* `start` is the transaction's epoch on the performance clock.
|
|
112
|
+
*/
|
|
113
|
+
move(direction, start, commit) {
|
|
114
|
+
const accessory = this.accessory;
|
|
115
|
+
const clip = accessory?.querySelector(':scope > [data-satin-accessory-clip]');
|
|
116
|
+
const content = clip?.querySelector(':scope > [data-satin-accessory-content]');
|
|
117
|
+
if (!accessory || !clip || !content || !accessoryMorphEnabled()) {
|
|
118
|
+
commit();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const now = performance.now();
|
|
122
|
+
const running = this.run ? sampleAccessory(this.run.spec, now - this.run.start) : undefined;
|
|
123
|
+
this.end();
|
|
124
|
+
// Read the presented box with the previous run removed, so a reversal starts from the
|
|
125
|
+
// sampled presentation (value and velocity) rather than from an endpoint.
|
|
126
|
+
const from = running?.value ?? this.presentedBox();
|
|
127
|
+
const oldBounds = accessory.getBoundingClientRect();
|
|
128
|
+
const oldInk = new Map([
|
|
129
|
+
...accessory.querySelectorAll('[data-satin-glass-region-id] > :not(canvas)'),
|
|
130
|
+
].map(element => {
|
|
131
|
+
const rect = element.getBoundingClientRect();
|
|
132
|
+
return [element, { x: rect.x - oldBounds.x, width: rect.width }];
|
|
133
|
+
}));
|
|
134
|
+
// Where each glass canvas is on screen before the rows change (see `holdPlace`).
|
|
135
|
+
const canvasPlaces = new Map([
|
|
136
|
+
...accessory.querySelectorAll('[data-satin-glass-region-id] > canvas'),
|
|
137
|
+
].map(canvas => [canvas, canvas.getBoundingClientRect()]));
|
|
138
|
+
commit();
|
|
139
|
+
const to = this.presentedBox();
|
|
140
|
+
if (!from || !to || matchMedia('(prefers-reduced-motion: reduce)').matches)
|
|
141
|
+
return;
|
|
142
|
+
if (sameBox(from, to))
|
|
143
|
+
return;
|
|
144
|
+
const spec = {
|
|
145
|
+
from,
|
|
146
|
+
to,
|
|
147
|
+
velocity: running?.velocity ?? RESTING_ACCESSORY_VELOCITY,
|
|
148
|
+
profile: ACCESSORY_PROFILES[direction],
|
|
149
|
+
};
|
|
150
|
+
const duration = accessoryRunDuration(spec);
|
|
151
|
+
const count = Math.max(2, Math.ceil((duration / 1000) * KEYFRAMES_PER_SECOND));
|
|
152
|
+
const chromeWidth = this.chrome.getBoundingClientRect().width;
|
|
153
|
+
const widths = [];
|
|
154
|
+
const offsets = [];
|
|
155
|
+
const frames = Array.from({ length: count + 1 }, (_, index) => {
|
|
156
|
+
const box = index === count ? to : sampleAccessory(spec, (duration * index) / count).value;
|
|
157
|
+
const width = chromeWidth - box.left - box.right;
|
|
158
|
+
widths.push(width);
|
|
159
|
+
offsets.push({ x: box.left - to.left, y: to.bottom - box.bottom });
|
|
160
|
+
return {
|
|
161
|
+
offset: index / count,
|
|
162
|
+
transform: `translate3d(${box.left - to.left}px, ${to.bottom - box.bottom}px, 0)`,
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
// Retain each full-width material's sampling envelope. Aperture motion does not
|
|
166
|
+
// issue per-frame region measurements or foreground captures.
|
|
167
|
+
const glass = [
|
|
168
|
+
...accessory.querySelectorAll('[data-satin-glass-region-id]'),
|
|
169
|
+
].filter(element => Math.abs(element.getBoundingClientRect().width - widths.at(-1)) < 1);
|
|
170
|
+
const minX = Math.min(...offsets.map(offset => offset.x));
|
|
171
|
+
const maxX = Math.max(...offsets.map(offset => offset.x));
|
|
172
|
+
const minY = Math.min(...offsets.map(offset => offset.y));
|
|
173
|
+
const maxY = Math.max(...offsets.map(offset => offset.y));
|
|
174
|
+
for (const element of glass) {
|
|
175
|
+
const rect = element.getBoundingClientRect();
|
|
176
|
+
glassMotions.set(element, {
|
|
177
|
+
rect: { x: rect.x, y: rect.y, width: Math.max(...widths), height: rect.height },
|
|
178
|
+
sampleRect: {
|
|
179
|
+
x: rect.x + minX,
|
|
180
|
+
y: rect.y + minY,
|
|
181
|
+
width: Math.max(...widths) + maxX - minX,
|
|
182
|
+
height: rect.height + maxY - minY,
|
|
183
|
+
},
|
|
184
|
+
widths,
|
|
185
|
+
duration,
|
|
186
|
+
viewportTrack: { epoch: performance.timeOrigin + start, duration, widths, offsets },
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
const targetWidth = widths.at(-1);
|
|
190
|
+
const envelopeWidth = Math.max(...widths);
|
|
191
|
+
// The worker draws this run's glass and ink (a retained track) when the accessory is one
|
|
192
|
+
// material whose ink it holds at both widths. Then nothing above the glass canvas moves
|
|
193
|
+
// (see `holds` below).
|
|
194
|
+
const holds = glass.length === 1 &&
|
|
195
|
+
accessoryWorkerEnabled(glass[0]) &&
|
|
196
|
+
(readyInk.get(glass[0]) ?? 0) >= Math.max(widths[0], targetWidth) - 1 &&
|
|
197
|
+
onlyGlass(content, glass[0]);
|
|
198
|
+
const ink = glass.flatMap(element => [...element.children].filter((child) => child instanceof HTMLElement && child.tagName !== 'CANVAS'));
|
|
199
|
+
const targetInk = ink.map(element => ({
|
|
200
|
+
element,
|
|
201
|
+
rect: element.getBoundingClientRect(),
|
|
202
|
+
transform: getComputedStyle(element).transform,
|
|
203
|
+
}));
|
|
204
|
+
const targetBounds = accessory.getBoundingClientRect();
|
|
205
|
+
const previousWidth = accessory.style.width;
|
|
206
|
+
const previousRadius = accessory.style.borderRadius;
|
|
207
|
+
accessory.style.width = `${envelopeWidth}px`;
|
|
208
|
+
const radius = getComputedStyle(glass[0] ?? accessory).borderRadius || '0px';
|
|
209
|
+
accessory.style.borderRadius = radius;
|
|
210
|
+
const slices = [];
|
|
211
|
+
const children = targetInk.map(({ element, rect, transform }) => {
|
|
212
|
+
const full = element.getBoundingClientRect();
|
|
213
|
+
const denominator = envelopeWidth - targetWidth;
|
|
214
|
+
const previous = oldInk.get(element);
|
|
215
|
+
const oldDelta = targetWidth - oldBounds.width;
|
|
216
|
+
const anchor = Math.abs(denominator) > 0.01
|
|
217
|
+
? (full.x - rect.x) / denominator
|
|
218
|
+
: previous && Math.abs(oldDelta) > 0.01
|
|
219
|
+
? (rect.x - targetBounds.x - previous.x) / oldDelta
|
|
220
|
+
: 0;
|
|
221
|
+
const clips = Math.abs(denominator) > 0.01
|
|
222
|
+
? Math.max(0, (full.width - rect.width) / denominator)
|
|
223
|
+
: previous && Math.abs(oldDelta) > 0.01
|
|
224
|
+
? Math.max(0, (rect.width - previous.width) / oldDelta)
|
|
225
|
+
: 0;
|
|
226
|
+
slices.push({
|
|
227
|
+
x: full.x - accessory.getBoundingClientRect().x,
|
|
228
|
+
y: full.y - accessory.getBoundingClientRect().y,
|
|
229
|
+
width: full.width,
|
|
230
|
+
height: full.height,
|
|
231
|
+
anchor,
|
|
232
|
+
clip: clips,
|
|
233
|
+
});
|
|
234
|
+
const base = transform === 'none' ? '' : ` ${transform}`;
|
|
235
|
+
return element.animate(widths.map((width, index) => ({
|
|
236
|
+
offset: index / (widths.length - 1),
|
|
237
|
+
// Held, the accessory itself does not move: its controls carry the travel.
|
|
238
|
+
transform: holds
|
|
239
|
+
? `translate3d(${offsets[index].x + (width - envelopeWidth) * anchor}px, ${offsets[index].y}px, 0px)${base}`
|
|
240
|
+
: `translate3d(${(width - envelopeWidth) * anchor}px, 0px, 0px)${base}`,
|
|
241
|
+
...(clips > 0.5
|
|
242
|
+
? { clipPath: `inset(0px ${(envelopeWidth - width) * clips}px 0px 0px)` }
|
|
243
|
+
: {}),
|
|
244
|
+
})), { duration, easing: 'linear', fill: 'both' });
|
|
245
|
+
});
|
|
246
|
+
for (const element of glass) {
|
|
247
|
+
const motion = glassMotions.get(element);
|
|
248
|
+
const inkWidth = readyInk.get(element) ?? 0;
|
|
249
|
+
if (holds) {
|
|
250
|
+
motion.track = {
|
|
251
|
+
epoch: performance.timeOrigin + start,
|
|
252
|
+
offsets,
|
|
253
|
+
duration,
|
|
254
|
+
widths,
|
|
255
|
+
envelope: inkWidth,
|
|
256
|
+
held: true,
|
|
257
|
+
slices: slices.map(slice => ({
|
|
258
|
+
...slice,
|
|
259
|
+
x: slice.x - (envelopeWidth - inkWidth) * slice.anchor,
|
|
260
|
+
width: slice.width - (envelopeWidth - inkWidth) * slice.clip,
|
|
261
|
+
})),
|
|
262
|
+
};
|
|
263
|
+
motion.takeInk = () => {
|
|
264
|
+
if (element.dataset.satinAccessoryInk === 'true')
|
|
265
|
+
return;
|
|
266
|
+
// Keep compositor transforms: the invisible semantic controls still own hit testing.
|
|
267
|
+
// Only text clipping transfers to the worker; cancelling the animation would move
|
|
268
|
+
// the live controls back to their expanded positions during the morph.
|
|
269
|
+
for (const animation of children.slice(0, targetInk.length)) {
|
|
270
|
+
const effect = animation.effect;
|
|
271
|
+
if (!(effect instanceof KeyframeEffect))
|
|
272
|
+
continue;
|
|
273
|
+
effect.setKeyframes(effect.getKeyframes().map(frame => {
|
|
274
|
+
const transformed = { ...frame };
|
|
275
|
+
delete transformed.clipPath;
|
|
276
|
+
return transformed;
|
|
277
|
+
}));
|
|
278
|
+
}
|
|
279
|
+
element.dataset.satinAccessoryInk = 'true';
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// The two rounded masks keep their full layout width and their unscaled end caps.
|
|
284
|
+
// Their intersection is the sampled capsule; the carrier cancels the mask's travel
|
|
285
|
+
// so live labels keep their positions and sizes. A held run opens the masks instead.
|
|
286
|
+
for (const [element, sign] of holds
|
|
287
|
+
? []
|
|
288
|
+
: [
|
|
289
|
+
[clip, 1],
|
|
290
|
+
[content, -1],
|
|
291
|
+
]) {
|
|
292
|
+
children.push(element.animate(widths.map((width, index) => ({
|
|
293
|
+
offset: index / (widths.length - 1),
|
|
294
|
+
transform: `translate3d(${sign * (width - envelopeWidth)}px, 0px, 0px)`,
|
|
295
|
+
})), { duration, easing: 'linear', fill: 'both' }));
|
|
296
|
+
}
|
|
297
|
+
// When the worker draws this run's glass and ink, its canvas holds still on screen and the
|
|
298
|
+
// capsule moves inside it, on the same clock as the tab bar's glass. The refracted content
|
|
299
|
+
// then stays fixed to the page whenever the canvas frame and the compositor frame disagree.
|
|
300
|
+
// No element above the canvas moves: the accessory stays at its committed row (only its
|
|
301
|
+
// controls carry the travel) and the rounded masks open, so they cannot cut the capsule.
|
|
302
|
+
// A carrier cancelled by an opposite transform on the canvas was not enough: during a
|
|
303
|
+
// scroll the compositor showed one without the other for several frames, and the canvas
|
|
304
|
+
// stood up to 12 pt from where the renderer drew for it (the stripes swam, and the tab
|
|
305
|
+
// bar's hole showed beside the accessory).
|
|
306
|
+
const held = holds ? glass : [];
|
|
307
|
+
for (const element of held) {
|
|
308
|
+
extendReach(element, glassMotions.get(element).sampleRect);
|
|
309
|
+
extendReach(element, element.getBoundingClientRect());
|
|
310
|
+
const canvas = element.querySelector(':scope > canvas');
|
|
311
|
+
const place = canvas && canvasPlaces.get(canvas);
|
|
312
|
+
if (canvas && place)
|
|
313
|
+
holdPlace(canvas, place, element.getBoundingClientRect());
|
|
314
|
+
}
|
|
315
|
+
const previousOverflow = { accessory: accessory.style.overflow, clip: clip.style.overflow };
|
|
316
|
+
if (held.length > 0) {
|
|
317
|
+
accessory.style.overflow = 'visible';
|
|
318
|
+
clip.style.overflow = 'visible';
|
|
319
|
+
}
|
|
320
|
+
for (const animation of children)
|
|
321
|
+
animation.startTime = timelineStart(start);
|
|
322
|
+
accessory.dataset.satinAccessoryMotion = 'true';
|
|
323
|
+
window.dispatchEvent(new Event('satin-accessory-motion'));
|
|
324
|
+
const clearGlass = (immediate = false) => {
|
|
325
|
+
for (const element of glass) {
|
|
326
|
+
glassMotions.delete(element);
|
|
327
|
+
if (immediate && element.dataset.satinAccessoryInk) {
|
|
328
|
+
delete element.dataset.satinAccessoryInk;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
if (element.dataset.satinAccessoryInk !== 'true')
|
|
332
|
+
continue;
|
|
333
|
+
// The page's ink returns at once; the renderer stops drawing its copy a frame or two
|
|
334
|
+
// later, so the same ink overlaps briefly rather than the capsule showing none.
|
|
335
|
+
element.dataset.satinAccessoryInk = 'returning';
|
|
336
|
+
requestAnimationFrame(() => requestAnimationFrame(() => {
|
|
337
|
+
if (element.dataset.satinAccessoryInk === 'returning')
|
|
338
|
+
delete element.dataset.satinAccessoryInk;
|
|
339
|
+
}));
|
|
340
|
+
}
|
|
341
|
+
accessory.style.width = previousWidth;
|
|
342
|
+
accessory.style.borderRadius = previousRadius;
|
|
343
|
+
accessory.style.overflow = previousOverflow.accessory;
|
|
344
|
+
clip.style.overflow = previousOverflow.clip;
|
|
345
|
+
delete accessory.dataset.satinAccessoryMotion;
|
|
346
|
+
window.dispatchEvent(new Event('satin-accessory-motion'));
|
|
347
|
+
};
|
|
348
|
+
// The tab bar's motion can start after the commit (the collapse delay): hold the presented
|
|
349
|
+
// box until then rather than showing the committed row early.
|
|
350
|
+
const animation = animateLayout(accessory, holds ? frames.map(stillFrame) : frames, {
|
|
351
|
+
duration,
|
|
352
|
+
easing: 'linear',
|
|
353
|
+
fill: 'both',
|
|
354
|
+
});
|
|
355
|
+
animation.startTime = timelineStart(start);
|
|
356
|
+
const chromeBox = this.chrome.getBoundingClientRect();
|
|
357
|
+
this.run = {
|
|
358
|
+
start,
|
|
359
|
+
spec,
|
|
360
|
+
animation,
|
|
361
|
+
children,
|
|
362
|
+
clearGlass,
|
|
363
|
+
chrome: { left: chromeBox.left, right: chromeBox.right, bottom: chromeBox.bottom },
|
|
364
|
+
height: targetBounds.height,
|
|
365
|
+
};
|
|
366
|
+
const run = this.run;
|
|
367
|
+
// The compositor holds the final pose until layout and all child tracks can be released
|
|
368
|
+
// together. A busy document must not expose the wide temporary layout between the
|
|
369
|
+
// timeline ending and this callback. A carrier cancelled by anything but this owner
|
|
370
|
+
// (`move` and `end` clear `this.run` first) ends the run the same way: a run left behind
|
|
371
|
+
// kept the envelope width, the hidden ink and the glass motion until the next run.
|
|
372
|
+
const release = () => {
|
|
373
|
+
if (this.run === run)
|
|
374
|
+
this.end();
|
|
375
|
+
};
|
|
376
|
+
void animation.finished.then(release, release);
|
|
377
|
+
}
|
|
378
|
+
/** Ends the live run (if any) at its committed row. */
|
|
379
|
+
end(immediate = false) {
|
|
380
|
+
const run = this.run;
|
|
381
|
+
this.run = undefined;
|
|
382
|
+
if (!run)
|
|
383
|
+
return;
|
|
384
|
+
for (const animation of run.children)
|
|
385
|
+
animation.cancel();
|
|
386
|
+
run.clearGlass(immediate);
|
|
387
|
+
run.animation.cancel();
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* The page is being hidden: end a live run at its committed row now, so it never crosses a
|
|
391
|
+
* suspension. While hidden, the document's animation frames stop and the renderer drops its
|
|
392
|
+
* own tracks (it settles them at their ends); a run kept across that is drawn by no one
|
|
393
|
+
* consistently on return (the owner's resume recording: an empty capsule at the run's
|
|
394
|
+
* envelope width, without its ink). The ink comes back immediately: no frame runs to return it.
|
|
395
|
+
*/
|
|
396
|
+
settle() {
|
|
397
|
+
this.end(true);
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Where the moving accessory's capsule is at `at` (performance clock), in viewport points, or
|
|
401
|
+
* undefined when it is not moving. It is the same sampled run the accessory presents, so a
|
|
402
|
+
* surface drawn on the same clock can leave it uncovered (the tab bar's `occluder`).
|
|
403
|
+
*/
|
|
404
|
+
capsuleAt(at) {
|
|
405
|
+
const run = this.run;
|
|
406
|
+
if (!run)
|
|
407
|
+
return undefined;
|
|
408
|
+
const box = sampleAccessory(run.spec, at - run.start).value;
|
|
409
|
+
const bottom = run.chrome.bottom - box.bottom;
|
|
410
|
+
return {
|
|
411
|
+
x: run.chrome.left + box.left,
|
|
412
|
+
y: bottom - run.height,
|
|
413
|
+
width: run.chrome.right - box.right - (run.chrome.left + box.left),
|
|
414
|
+
height: run.height,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
/** Whether a run is live (resume readout). */
|
|
418
|
+
get running() {
|
|
419
|
+
return !!this.run;
|
|
420
|
+
}
|
|
421
|
+
dispose() {
|
|
422
|
+
this.end();
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
/** Debug readout (resume diagnostics): the accessory's run-owned state as the page holds it. */
|
|
426
|
+
export function accessoryMorphReadout(accessory) {
|
|
427
|
+
const glass = accessory.querySelector('[data-satin-glass-region-id]');
|
|
428
|
+
const motion = glass ? glassMotions.get(glass) : undefined;
|
|
429
|
+
const reach = glass ? reaches.get(glass) : undefined;
|
|
430
|
+
return {
|
|
431
|
+
run: !!motion,
|
|
432
|
+
motion: accessory.dataset.satinAccessoryMotion === 'true',
|
|
433
|
+
ink: glass?.dataset.satinAccessoryInk ?? null,
|
|
434
|
+
width: accessory.style.width || null,
|
|
435
|
+
readyInk: glass ? (readyInk.get(glass) ?? null) : null,
|
|
436
|
+
reach: reach ? `${reach.left},${reach.top} ${reach.width}x${reach.height}` : null,
|
|
437
|
+
animations: accessory.getAnimations?.({ subtree: true }).length ?? 0,
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Keeps a canvas where it was on screen when its holder moves to the other row. The glass
|
|
442
|
+
* bridge writes the same box when it next measures (the canvas covers `accessoryReach`), but
|
|
443
|
+
* not in this frame.
|
|
444
|
+
*/
|
|
445
|
+
function holdPlace(canvas, place, holder) {
|
|
446
|
+
Object.assign(canvas.style, {
|
|
447
|
+
left: `${place.x - holder.x}px`,
|
|
448
|
+
top: `${place.y - holder.y}px`,
|
|
449
|
+
width: `${place.width}px`,
|
|
450
|
+
height: `${place.height}px`,
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
/** A carrier keyframe that keeps the run's timing (and its layout-animation announcement) but
|
|
454
|
+
* leaves the accessory at its committed row. */
|
|
455
|
+
function stillFrame(frame) {
|
|
456
|
+
return { offset: frame.offset, transform: 'none' };
|
|
457
|
+
}
|
|
458
|
+
/** Whether the accessory shows nothing but `glass` (its controls move inside it when held). */
|
|
459
|
+
function onlyGlass(content, glass) {
|
|
460
|
+
for (const element of content.querySelectorAll('*')) {
|
|
461
|
+
if (element === glass || glass.contains(element) || element.contains(glass))
|
|
462
|
+
continue;
|
|
463
|
+
const rect = element.getBoundingClientRect();
|
|
464
|
+
if (rect.width > 0 && rect.height > 0)
|
|
465
|
+
return false;
|
|
466
|
+
}
|
|
467
|
+
return true;
|
|
468
|
+
}
|
|
469
|
+
function sameBox(a, b) {
|
|
470
|
+
return (Math.abs(a.left - b.left) < 0.5 &&
|
|
471
|
+
Math.abs(a.right - b.right) < 0.5 &&
|
|
472
|
+
Math.abs(a.bottom - b.bottom) < 0.5);
|
|
473
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { SurfaceRenderSpec } from '../renderSpecs.js';
|
|
2
|
+
/** Immutable sampled motion shared with the compositor, on the normalized performance clock. */
|
|
3
|
+
export type AccessoryTrack = {
|
|
4
|
+
epoch: number;
|
|
5
|
+
duration: number;
|
|
6
|
+
offsets?: readonly {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
}[];
|
|
10
|
+
widths: readonly number[];
|
|
11
|
+
envelope: number;
|
|
12
|
+
slices: readonly {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
anchor: number;
|
|
18
|
+
clip: number;
|
|
19
|
+
}[];
|
|
20
|
+
/**
|
|
21
|
+
* The canvas holds still on screen for this run (see `accessoryMorph.ts`, `accessoryReach`).
|
|
22
|
+
* The worker then draws the moving capsule and its ink inside it at each sampled offset, so
|
|
23
|
+
* the backdrop is always sampled where the canvas really is. Without it the canvas rides the
|
|
24
|
+
* compositor carrier and only its sampling viewport follows, which lets the refracted content
|
|
25
|
+
* slide whenever the canvas frame and the compositor frame disagree about the time.
|
|
26
|
+
*/
|
|
27
|
+
held?: boolean;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The accessory's glass and ink at `at`. `restingFrame` is the glass frame's position in its
|
|
31
|
+
* canvas at the run's target layout; a held-still canvas (`track.held`) moves the frame from
|
|
32
|
+
* there by the carrier's offset at the same instant.
|
|
33
|
+
*/
|
|
34
|
+
export declare function accessoryPose(spec: SurfaceRenderSpec, track: AccessoryTrack, at: number, atlas: {
|
|
35
|
+
width: number;
|
|
36
|
+
height: number;
|
|
37
|
+
}, restingFrame?: {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
}): SurfaceRenderSpec;
|
|
41
|
+
/** Sampling motion is available even when the document still owns the accessory ink. */
|
|
42
|
+
export type AccessoryViewportTrack = Pick<AccessoryTrack, 'epoch' | 'duration' | 'widths' | 'offsets'>;
|
|
43
|
+
/** Coordinates of the compositor carrier, sampled without a DOM read. */
|
|
44
|
+
export declare function accessoryOffset(track: AccessoryViewportTrack, at: number): {
|
|
45
|
+
x: number;
|
|
46
|
+
y: number;
|
|
47
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The accessory's glass and ink at `at`. `restingFrame` is the glass frame's position in its
|
|
3
|
+
* canvas at the run's target layout; a held-still canvas (`track.held`) moves the frame from
|
|
4
|
+
* there by the carrier's offset at the same instant.
|
|
5
|
+
*/
|
|
6
|
+
export function accessoryPose(spec, track, at, atlas, restingFrame = { x: spec.frameX, y: spec.frameY }) {
|
|
7
|
+
const progress = Math.max(0, Math.min(1, (at - track.epoch) / track.duration));
|
|
8
|
+
const index = progress * (track.widths.length - 1);
|
|
9
|
+
const low = Math.floor(index), high = Math.min(track.widths.length - 1, low + 1);
|
|
10
|
+
const width = track.widths[low] + (track.widths[high] - track.widths[low]) * (index - low);
|
|
11
|
+
const delta = width - track.envelope;
|
|
12
|
+
const travel = track.held ? accessoryOffset(track, at) : undefined;
|
|
13
|
+
return {
|
|
14
|
+
...spec,
|
|
15
|
+
...(travel ? { frameX: restingFrame.x + travel.x, frameY: restingFrame.y + travel.y } : {}),
|
|
16
|
+
shape: {
|
|
17
|
+
...spec.shape,
|
|
18
|
+
first: { ...spec.shape.first, centerX: width / 2, halfWidth: width / 2 },
|
|
19
|
+
members: [{ ...spec.shape.first, centerX: width / 2, halfWidth: width / 2 }],
|
|
20
|
+
},
|
|
21
|
+
ink: {
|
|
22
|
+
atlas,
|
|
23
|
+
layers: track.slices
|
|
24
|
+
.map(slice => {
|
|
25
|
+
const shown = Math.max(0, slice.width + delta * slice.clip);
|
|
26
|
+
return {
|
|
27
|
+
source: {
|
|
28
|
+
x: slice.x + spec.sampleInsetX,
|
|
29
|
+
y: slice.y + spec.sampleInsetY,
|
|
30
|
+
width: shown,
|
|
31
|
+
height: slice.height,
|
|
32
|
+
},
|
|
33
|
+
frame: {
|
|
34
|
+
x: slice.x + delta * slice.anchor,
|
|
35
|
+
y: slice.y,
|
|
36
|
+
width: shown,
|
|
37
|
+
height: slice.height,
|
|
38
|
+
},
|
|
39
|
+
opacity: 1,
|
|
40
|
+
blur: 0,
|
|
41
|
+
lens: 0,
|
|
42
|
+
lensWidth: 1,
|
|
43
|
+
};
|
|
44
|
+
})
|
|
45
|
+
.filter(layer => layer.source.width > 0),
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Coordinates of the compositor carrier, sampled without a DOM read. */
|
|
50
|
+
export function accessoryOffset(track, at) {
|
|
51
|
+
const position = Math.max(0, Math.min(1, (at - track.epoch) / track.duration)) * (track.widths.length - 1);
|
|
52
|
+
const index = Math.floor(position);
|
|
53
|
+
const from = track.offsets?.[index] ?? { x: 0, y: 0 };
|
|
54
|
+
const to = track.offsets?.[Math.min(index + 1, track.widths.length - 1)] ?? from;
|
|
55
|
+
return {
|
|
56
|
+
x: from.x + (to.x - from.x) * (position - index),
|
|
57
|
+
y: from.y + (to.y - from.y) * (position - index),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Target } from './passes.js';
|
|
2
|
+
/** The bar material's blur pyramid: its wide diffusion reads coarse levels (level 5 to 6 at
|
|
3
|
+
* half resolution, texels of 21 to 43 pt), so the pyramid decides how bright the glass's interior
|
|
4
|
+
* reads over any detail in the backdrop.
|
|
5
|
+
*
|
|
6
|
+
* Two things keep that brightness a property of the backdrop alone, not of the shape's size.
|
|
7
|
+
*
|
|
8
|
+
* Every destination texel is the exact area average of the source texels it covers. With one
|
|
9
|
+
* bilinear tap at the destination centre, a chain that is not a power of two (the tab bar's is
|
|
10
|
+
* 789 x 477) gave whole bands of the backdrop no weight and others double weight: text scrolling
|
|
11
|
+
* under the bar lit its blur at some heights and vanished from it at others.
|
|
12
|
+
*
|
|
13
|
+
* The storage is a whole number of coarse texels (PYRAMID_GRID), so each level is exactly half
|
|
14
|
+
* the one below and a level-k texel always covers the same 2^k level-0 texels, counted from the
|
|
15
|
+
* sample rectangle's top-left corner. When the storage was the content rounded up, every level's
|
|
16
|
+
* texel size followed the surface's width: a growing Music accessory moved the coarse texels'
|
|
17
|
+
* edges across the tiles under it and its interior dimmed and brightened by several luma levels
|
|
18
|
+
* over a still backdrop, then stepped when the run ended at a narrower width. Storage past the
|
|
19
|
+
* content carries no weight: a coarse texel at the content's edge averages only the content it
|
|
20
|
+
* covers, and the shader's reads stop at the content (pyramidClamp). A wider surface changes
|
|
21
|
+
* only the texels at its edge; the ones away from it stay exactly as they were. */
|
|
22
|
+
/** Level-0 texels per side of the coarsest exact texel (level 6, the wide diffusion's deepest). */
|
|
23
|
+
export declare const PYRAMID_GRID = 64;
|
|
24
|
+
/** Storage for `extent` level-0 texels of content: a whole number of PYRAMID_GRID cells. */
|
|
25
|
+
export declare function pyramidStorage(extent: number): number;
|
|
26
|
+
/** Level-0 texels the content copy writes for a content extent: those whose centre lies inside
|
|
27
|
+
* it (the copy's scissor in passes.ts). */
|
|
28
|
+
export declare function pyramidContent(extent: number): number;
|
|
29
|
+
/** The kernel's read clamp for a pyramid whose level 0 holds `content` texels: half a texel
|
|
30
|
+
* inside the content, so no sample reaches the cleared storage past it. Same layout as
|
|
31
|
+
* rasterUniforms.ts inputUniforms' uInputClamp. */
|
|
32
|
+
export declare function pyramidClamp(target: Target, content: readonly [number, number]): number[];
|
|
33
|
+
/** Texels of content at each level, fractional: a level keeps the content's share of its size. */
|
|
34
|
+
export declare function contentLevels(target: Target, content: readonly [number, number]): [number, number][];
|
|
35
|
+
/** One axis of a destination texel's footprint over the level below: the source texels it
|
|
36
|
+
* overlaps and how much of each, counting only the part inside the content. Mirrors
|
|
37
|
+
* `footprint` in the compute shader; texel t spans [t, t + 1]. */
|
|
38
|
+
export declare function footprint(index: number, ratio: number, content: number): {
|
|
39
|
+
texel: number;
|
|
40
|
+
weight: number;
|
|
41
|
+
}[];
|
|
42
|
+
/** One view per mip level of a pyramid target (created once per texture). */
|
|
43
|
+
export declare function areaMipLevels(target: Target): {
|
|
44
|
+
view: GPUTextureView;
|
|
45
|
+
width: number;
|
|
46
|
+
height: number;
|
|
47
|
+
}[];
|
|
48
|
+
/** Fill every level above 0 of `target` from the level below, in one compute pass. Level 0
|
|
49
|
+
* holds `content` texels of backdrop; `uniform` makes a uniform buffer (Passes.uniform). */
|
|
50
|
+
export declare function encodeAreaMips(encoder: GPUCommandEncoder, device: GPUDevice, target: Target, content: readonly [number, number], uniform: (values: Float32Array<ArrayBuffer>) => GPUBuffer): void;
|