@satinhq/kit 0.0.0-stage → 0.1.0-beta.1
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 +29 -0
- package/dist/glass/GlassPresentation.js +1041 -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 +176 -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 +38 -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 +32 -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 +833 -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 +116 -3
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import { keyboardTranslationStops, sampleKeyboardTranslation } from '../keyboard/translation.js';
|
|
2
|
+
import { KEYBOARD_CARRIER_MOTION, setKeyboardCarrierPose, setKeyboardCarrierContent, clearKeyboardCarrierContent, clearKeyboardCarrierPose, } from './keyboardCarrierGeometry.js';
|
|
3
|
+
import { currentKeyboardHeight, onKeyboardMotion, } from '../keyboard/adapter.js';
|
|
4
|
+
import { lagMark, lagTraceEnabled } from '../glass/webgpu/lagTrace.js';
|
|
5
|
+
import { KEYBOARD_DURATION_MS, KEYBOARD_HOLD_MS, keyboardKeyframes } from '../keyboard/motion.js';
|
|
6
|
+
/**
|
|
7
|
+
* Moves a root bottom inset with the software keyboard as one thing, as a native chat's composer
|
|
8
|
+
* and transcript ride the keyboard.
|
|
9
|
+
*
|
|
10
|
+
* Why not animate the inset's padding: that is layout, and layout needs the page to draw. On the
|
|
11
|
+
* installed iPad WebKit draws one page frame after it reports the keyboard and then none until the
|
|
12
|
+
* keyboard has arrived (~390 ms on the tested iPad). A padding animation stands still for
|
|
13
|
+
* that whole time and then jumps. Transform animations run on the compositor and keep moving.
|
|
14
|
+
*
|
|
15
|
+
* So each keyboard change is one run on the keyboard's own curve (keyboard/motion.ts):
|
|
16
|
+
* - the accessory (the composer) and the content of each scroll view that is pinned to its bottom
|
|
17
|
+
* (`defaultScrollAnchor="bottom"`) move together on compositor transforms;
|
|
18
|
+
* - the inset's layout changes once per run, at the endpoint where nothing is clipped. A keyboard
|
|
19
|
+
* that rises keeps the taller scrollport until the composer has arrived, then commits the shorter
|
|
20
|
+
* one; a keyboard that falls commits the taller one first and the transforms lead back to it.
|
|
21
|
+
* Committing a shorter scrollport first would clip the transcript above the composer.
|
|
22
|
+
* - a run that starts while another is moving starts from the pose on screen, never from rest.
|
|
23
|
+
*
|
|
24
|
+
* The editor stays live and keeps its text, selection and focus: nothing is snapshotted or scaled.
|
|
25
|
+
*/
|
|
26
|
+
export function installKeyboardCarrier(boundary, accessory, geometry, measuredRoom) {
|
|
27
|
+
// The keyboard height the boundary's layout is committed to, and the one last reported.
|
|
28
|
+
let committed = currentKeyboardHeight();
|
|
29
|
+
let keyboardHeight = committed;
|
|
30
|
+
let run;
|
|
31
|
+
let accessoryRestTop = accessory.getBoundingClientRect().top;
|
|
32
|
+
let accessoryHeight = measuredRoom().accessoryHeight;
|
|
33
|
+
// Growth changes the bottom-anchored resting top even while a carry is running. Keep its
|
|
34
|
+
// anchor current using SafeAreaInset's existing measurement, not another layout read.
|
|
35
|
+
const synchronizeAccessoryHeight = () => {
|
|
36
|
+
const nextHeight = measuredRoom().accessoryHeight;
|
|
37
|
+
accessoryRestTop -= nextHeight - accessoryHeight;
|
|
38
|
+
accessoryHeight = nextHeight;
|
|
39
|
+
};
|
|
40
|
+
const originTops = new Map([[accessory, accessoryRestTop]]);
|
|
41
|
+
const contentOrigins = new Map();
|
|
42
|
+
const backdropAdjustments = new Map();
|
|
43
|
+
const restTops = new Map([[accessory, accessoryRestTop]]);
|
|
44
|
+
const announce = () => window.dispatchEvent(new Event(KEYBOARD_CARRIER_MOTION));
|
|
45
|
+
const restPose = (element, top) => {
|
|
46
|
+
const origin = originTops.get(element) ?? top;
|
|
47
|
+
originTops.set(element, origin);
|
|
48
|
+
restTops.set(element, top);
|
|
49
|
+
const source = contentOrigins.get(element);
|
|
50
|
+
const backdropAdjustment = source
|
|
51
|
+
? contentStart(element) + source.surface.scrollTop - source.top - (top - origin)
|
|
52
|
+
: 0;
|
|
53
|
+
backdropAdjustments.set(element, backdropAdjustment);
|
|
54
|
+
setKeyboardCarrierPose(element, () => ({
|
|
55
|
+
offsetY: top - origin,
|
|
56
|
+
moving: false,
|
|
57
|
+
backdropAdjustment,
|
|
58
|
+
}));
|
|
59
|
+
};
|
|
60
|
+
restPose(accessory, accessoryRestTop);
|
|
61
|
+
const geometryObserver = new ResizeObserver(() => {
|
|
62
|
+
synchronizeAccessoryHeight();
|
|
63
|
+
if (run)
|
|
64
|
+
return;
|
|
65
|
+
accessoryRestTop = accessory.getBoundingClientRect().top;
|
|
66
|
+
restPose(accessory, accessoryRestTop);
|
|
67
|
+
announce();
|
|
68
|
+
});
|
|
69
|
+
geometryObserver.observe(accessory);
|
|
70
|
+
geometryObserver.observe(boundary);
|
|
71
|
+
const commit = (height) => {
|
|
72
|
+
committed = height;
|
|
73
|
+
boundary.style.setProperty(COMMITTED_HEIGHT, `${height}px`);
|
|
74
|
+
};
|
|
75
|
+
commit(committed);
|
|
76
|
+
boundary.dataset.satinKeyboardCarrier = 'true';
|
|
77
|
+
const stopRun = () => {
|
|
78
|
+
const current = run;
|
|
79
|
+
run = undefined;
|
|
80
|
+
for (const animation of current?.animations.values() ?? [])
|
|
81
|
+
animation.cancel();
|
|
82
|
+
};
|
|
83
|
+
const carry = ({ height, leadMs }) => {
|
|
84
|
+
synchronizeAccessoryHeight();
|
|
85
|
+
// The same change reported again with an earlier stamp: the keyboard started sooner than the
|
|
86
|
+
// first report said. Keep the run and move it onto the keyboard's clock.
|
|
87
|
+
if (height === keyboardHeight) {
|
|
88
|
+
run?.retime(leadMs);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const startHeight = keyboardHeight;
|
|
92
|
+
keyboardHeight = height;
|
|
93
|
+
const elements = [...geometry.attached()];
|
|
94
|
+
const surfaces = carriedScrollViews(elements);
|
|
95
|
+
let overlays = carriedOverlays(geometry.participants(), accessory);
|
|
96
|
+
const shownOverlays = overlays.map(({ content }) => content.getBoundingClientRect().top);
|
|
97
|
+
// Where everything is on screen now, including the pose of a run still moving.
|
|
98
|
+
const shownAccessory = run ? accessory.getBoundingClientRect().top : accessoryRestTop;
|
|
99
|
+
const runAccessoryOffset = run ? shownAccessory - accessoryRestTop : 0;
|
|
100
|
+
const shownContent = surfaces.map(contentTop);
|
|
101
|
+
// A first dismissal can commit taller layout before a content pose has ever
|
|
102
|
+
// been registered. Preserve its pre-commit origin as well as its native scroll.
|
|
103
|
+
surfaces.forEach(({ surface, content }, index) => {
|
|
104
|
+
if (originTops.has(content))
|
|
105
|
+
return;
|
|
106
|
+
originTops.set(content, shownContent[index]);
|
|
107
|
+
contentOrigins.set(content, { surface, top: contentStart(content) + surface.scrollTop });
|
|
108
|
+
setKeyboardCarrierContent(surface, content, () => contentStart(content) + surface.scrollTop - contentOrigins.get(content).top);
|
|
109
|
+
});
|
|
110
|
+
stopRun();
|
|
111
|
+
const pinned = surfaces.map(view => view.anchorsToBottom && isAtBottom(view.surface));
|
|
112
|
+
const measured = measuredRoom();
|
|
113
|
+
const room = (keyboard) => Math.max(measured.systemInset, keyboard - measured.coveredRows);
|
|
114
|
+
const layoutPadding = room(committed);
|
|
115
|
+
const travel = room(height) - layoutPadding;
|
|
116
|
+
const keyboardRises = travel > 0;
|
|
117
|
+
let scrollTravel;
|
|
118
|
+
if (keyboardRises) {
|
|
119
|
+
// Keep the taller scrollport while moving. A pinned transcript will scroll by the travel
|
|
120
|
+
// when the shorter one is committed; it rides up by that much on the way.
|
|
121
|
+
scrollTravel = surfaces.map(({ surface }, index) => pinned[index]
|
|
122
|
+
? bottomOffset(surface, surface.clientHeight - travel) - surface.scrollTop
|
|
123
|
+
: 0);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
commit(height);
|
|
127
|
+
const offsets = surfaces.map(({ surface }) => surface.scrollTop);
|
|
128
|
+
surfaces.forEach(({ surface }, index) => {
|
|
129
|
+
if (pinned[index])
|
|
130
|
+
scrollToBottom(surface);
|
|
131
|
+
});
|
|
132
|
+
scrollTravel = surfaces.map(({ surface }, index) => surface.scrollTop - offsets[index]);
|
|
133
|
+
}
|
|
134
|
+
accessoryRestTop += layoutPadding - room(committed);
|
|
135
|
+
// The accessory sits on the keyboard's room at every instant, as native's keyboard layout
|
|
136
|
+
// guide does: on the safe area until the keyboard's top passes it, then on the keyboard. A run
|
|
137
|
+
// that starts away from that pose (a reversal) blends its difference out on the same curve.
|
|
138
|
+
const committedPadding = room(committed);
|
|
139
|
+
const keyboardAt = (progress) => startHeight + (height - startHeight) * progress;
|
|
140
|
+
const accessoryLayoutAt = (progress) => committedPadding - room(keyboardAt(progress));
|
|
141
|
+
// The committed padding is the only layout displacement of the root accessory.
|
|
142
|
+
// Reversals still read the shown pose, but never force layout after a commit just to recover it.
|
|
143
|
+
const accessoryFrom = runAccessoryOffset + committedPadding - layoutPadding;
|
|
144
|
+
const reversal = accessoryFrom - accessoryLayoutAt(0);
|
|
145
|
+
const accessoryAt = (progress) => accessoryLayoutAt(progress) + reversal * (1 - progress);
|
|
146
|
+
const accessoryTo = accessoryAt(1);
|
|
147
|
+
// A carried transcript moves in lockstep with the accessory, by its own distance.
|
|
148
|
+
const contentFrom = surfaces.map((view, index) => {
|
|
149
|
+
const top = contentTop(view);
|
|
150
|
+
restPose(view.content, top);
|
|
151
|
+
return shownContent[index] - top;
|
|
152
|
+
});
|
|
153
|
+
const overlayFrom = overlays.map(({ content }, index) => {
|
|
154
|
+
const top = content.getBoundingClientRect().top;
|
|
155
|
+
restPose(content, top);
|
|
156
|
+
return shownOverlays[index] - top;
|
|
157
|
+
});
|
|
158
|
+
restPose(accessory, accessoryRestTop);
|
|
159
|
+
const contentTo = surfaces.map((_, index) => (keyboardRises ? -scrollTravel[index] : 0));
|
|
160
|
+
const accessoryShare = (progress) => Math.abs(accessoryTo - accessoryFrom) < 0.5
|
|
161
|
+
? progress
|
|
162
|
+
: (accessoryAt(progress) - accessoryFrom) / (accessoryTo - accessoryFrom);
|
|
163
|
+
let finishTimer;
|
|
164
|
+
// Commit from the page's own frame once the curve has ended: the layout and the removed
|
|
165
|
+
// transforms then reach the screen together, while the compositor holds the end pose.
|
|
166
|
+
const scheduleFinish = (lead) => {
|
|
167
|
+
clearTimeout(finishTimer);
|
|
168
|
+
finishTimer = setTimeout(() => requestAnimationFrame(finish), Math.max(0, KEYBOARD_DURATION_MS - lead));
|
|
169
|
+
};
|
|
170
|
+
const current = {
|
|
171
|
+
animations: new Map(),
|
|
172
|
+
refreshOverlays: () => refreshOverlays(),
|
|
173
|
+
finish: () => finish(),
|
|
174
|
+
retime: lead => {
|
|
175
|
+
const start = performance.now() - lead;
|
|
176
|
+
for (const animation of current.animations.values())
|
|
177
|
+
animation.startTime = start;
|
|
178
|
+
startTime = start;
|
|
179
|
+
trace('retime', { height, leadMs: Math.round(lead) });
|
|
180
|
+
scheduleFinish(lead);
|
|
181
|
+
announce();
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
const finish = () => {
|
|
185
|
+
if (run !== current)
|
|
186
|
+
return;
|
|
187
|
+
trace('commit', { height, rises: keyboardRises });
|
|
188
|
+
if (keyboardRises) {
|
|
189
|
+
const stillPinned = surfaces.map(view => view.anchorsToBottom && isAtBottom(view.surface));
|
|
190
|
+
commit(height);
|
|
191
|
+
surfaces.forEach(({ surface }, index) => {
|
|
192
|
+
if (stillPinned[index])
|
|
193
|
+
scrollToBottom(surface);
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
stopRun();
|
|
197
|
+
accessoryRestTop = accessory.getBoundingClientRect().top;
|
|
198
|
+
restPose(accessory, accessoryRestTop);
|
|
199
|
+
for (const view of surfaces)
|
|
200
|
+
restPose(view.content, contentTop(view));
|
|
201
|
+
for (const { content } of overlays)
|
|
202
|
+
restPose(content, content.getBoundingClientRect().top);
|
|
203
|
+
announce();
|
|
204
|
+
};
|
|
205
|
+
run = current;
|
|
206
|
+
let startTime = performance.now() - leadMs;
|
|
207
|
+
const totalMs = KEYBOARD_DURATION_MS + KEYBOARD_HOLD_MS;
|
|
208
|
+
const move = (element, translateAt) => {
|
|
209
|
+
if (Math.abs(translateAt(0)) < 0.5 && Math.abs(translateAt(1)) < 0.5)
|
|
210
|
+
return;
|
|
211
|
+
const frames = keyboardKeyframes(translateAt, totalMs);
|
|
212
|
+
const animation = element.animate(frames, {
|
|
213
|
+
duration: totalMs,
|
|
214
|
+
fill: 'both',
|
|
215
|
+
});
|
|
216
|
+
// Pin the curve to the keyboard's clock, not to the next frame this page happens to draw.
|
|
217
|
+
animation.startTime = startTime;
|
|
218
|
+
current.animations.set(element, animation);
|
|
219
|
+
const layoutOffset = (restTops.get(element) ?? 0) - (originTops.get(element) ?? 0);
|
|
220
|
+
const stops = keyboardTranslationStops(frames);
|
|
221
|
+
const backdropAdjustment = backdropAdjustments.get(element) ?? 0;
|
|
222
|
+
setKeyboardCarrierPose(element, () => {
|
|
223
|
+
const epoch = performance.timeOrigin + Number(animation.startTime);
|
|
224
|
+
const motion = {
|
|
225
|
+
epoch,
|
|
226
|
+
duration: totalMs,
|
|
227
|
+
end: epoch + KEYBOARD_DURATION_MS,
|
|
228
|
+
offset: layoutOffset,
|
|
229
|
+
stops,
|
|
230
|
+
};
|
|
231
|
+
return {
|
|
232
|
+
offsetY: sampleKeyboardTranslation(motion, performance.timeOrigin + performance.now()),
|
|
233
|
+
moving: run === current,
|
|
234
|
+
motion,
|
|
235
|
+
backdropAdjustment,
|
|
236
|
+
};
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
// Registration can change after the keyboard report (conditional controls, nested insets,
|
|
240
|
+
// or alignment changes). Join the original curve at its current clock; never restart it.
|
|
241
|
+
const refreshOverlays = () => {
|
|
242
|
+
const next = carriedOverlays(geometry.participants(), accessory);
|
|
243
|
+
const retained = new Set(next.map(({ content }) => content));
|
|
244
|
+
for (const { content } of overlays) {
|
|
245
|
+
if (retained.has(content))
|
|
246
|
+
continue;
|
|
247
|
+
current.animations.get(content)?.cancel();
|
|
248
|
+
current.animations.delete(content);
|
|
249
|
+
clearKeyboardCarrierPose(content);
|
|
250
|
+
restTops.delete(content);
|
|
251
|
+
originTops.delete(content);
|
|
252
|
+
}
|
|
253
|
+
const previous = new Set(overlays.map(({ content }) => content));
|
|
254
|
+
for (const { content, share } of next) {
|
|
255
|
+
if (previous.has(content))
|
|
256
|
+
continue;
|
|
257
|
+
restPose(content, content.getBoundingClientRect().top);
|
|
258
|
+
move(content, progress => accessoryAt(progress) * share);
|
|
259
|
+
}
|
|
260
|
+
overlays = next;
|
|
261
|
+
announce();
|
|
262
|
+
};
|
|
263
|
+
if (leadMs < KEYBOARD_DURATION_MS) {
|
|
264
|
+
move(accessory, accessoryAt);
|
|
265
|
+
overlays.forEach(({ content, share }, index) => {
|
|
266
|
+
const from = overlayFrom[index];
|
|
267
|
+
const to = keyboardRises ? accessoryTo * share : 0;
|
|
268
|
+
move(content, progress => from + (to - from) * accessoryShare(progress));
|
|
269
|
+
});
|
|
270
|
+
surfaces.forEach(({ content }, index) => {
|
|
271
|
+
const from = contentFrom[index];
|
|
272
|
+
const to = contentTo[index];
|
|
273
|
+
move(content, progress => from + (to - from) * accessoryShare(progress));
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
announce();
|
|
277
|
+
trace('start', {
|
|
278
|
+
height,
|
|
279
|
+
startHeight,
|
|
280
|
+
leadMs: Math.round(leadMs),
|
|
281
|
+
travel,
|
|
282
|
+
accessoryFrom: Math.round(accessoryFrom),
|
|
283
|
+
accessoryTo: Math.round(accessoryTo),
|
|
284
|
+
carried: surfaces.length,
|
|
285
|
+
pinned: pinned.filter(Boolean).length,
|
|
286
|
+
});
|
|
287
|
+
if (!current.animations.size) {
|
|
288
|
+
finish();
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
scheduleFinish(leadMs);
|
|
292
|
+
};
|
|
293
|
+
// A backgrounded app is snapshotted at rest.
|
|
294
|
+
const visibilityChanged = () => {
|
|
295
|
+
if (document.visibilityState === 'hidden')
|
|
296
|
+
run?.finish();
|
|
297
|
+
};
|
|
298
|
+
const unsubscribeParticipants = geometry.subscribeParticipants(() => {
|
|
299
|
+
if (run) {
|
|
300
|
+
run.refreshOverlays();
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const retained = new Set(carriedOverlays(geometry.participants(), accessory).map(({ content }) => content));
|
|
304
|
+
for (const element of originTops.keys()) {
|
|
305
|
+
if (!element.hasAttribute('data-satin-overlay-content') || retained.has(element))
|
|
306
|
+
continue;
|
|
307
|
+
clearKeyboardCarrierPose(element);
|
|
308
|
+
originTops.delete(element);
|
|
309
|
+
restTops.delete(element);
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
const unsubscribe = onKeyboardMotion(carry);
|
|
313
|
+
document.addEventListener('visibilitychange', visibilityChanged);
|
|
314
|
+
return () => {
|
|
315
|
+
unsubscribe();
|
|
316
|
+
unsubscribeParticipants();
|
|
317
|
+
geometryObserver.disconnect();
|
|
318
|
+
document.removeEventListener('visibilitychange', visibilityChanged);
|
|
319
|
+
stopRun();
|
|
320
|
+
for (const element of originTops.keys())
|
|
321
|
+
clearKeyboardCarrierPose(element);
|
|
322
|
+
for (const { surface } of contentOrigins.values())
|
|
323
|
+
clearKeyboardCarrierContent(surface);
|
|
324
|
+
announce();
|
|
325
|
+
delete boundary.dataset.satinKeyboardCarrier;
|
|
326
|
+
boundary.style.removeProperty(COMMITTED_HEIGHT);
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
function trace(stage, values) {
|
|
330
|
+
if (lagTraceEnabled())
|
|
331
|
+
lagMark({
|
|
332
|
+
stage: `keyboard-carrier-${stage}`,
|
|
333
|
+
at: performance.timeOrigin + performance.now(),
|
|
334
|
+
values,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
/** The keyboard height the boundary's layout is committed to (styles.css, carrier mode). */
|
|
338
|
+
const COMMITTED_HEIGHT = '--satin-keyboard-committed';
|
|
339
|
+
/** Vertical scroll views with a positioned content box (ScrollSurface's `data-satin-scroll-content`). */
|
|
340
|
+
function carriedScrollViews(elements) {
|
|
341
|
+
const views = [];
|
|
342
|
+
for (const surface of elements) {
|
|
343
|
+
if (!surface.isConnected || surface.dataset.satinScrollAxis !== 'vertical')
|
|
344
|
+
continue;
|
|
345
|
+
const content = surface.querySelector(':scope > [data-satin-scroll-content]');
|
|
346
|
+
if (!content)
|
|
347
|
+
continue;
|
|
348
|
+
views.push({
|
|
349
|
+
surface,
|
|
350
|
+
content,
|
|
351
|
+
anchorsToBottom: content.dataset.satinScrollAlignment === 'bottom',
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
return views;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Where a scroll view's content is on screen. A bottom-aligned transcript shorter than its
|
|
358
|
+
* scrollport sits at the end of its flex column, so its last row is measured, not the box.
|
|
359
|
+
*/
|
|
360
|
+
function contentTop({ content }) {
|
|
361
|
+
return (content.lastElementChild ?? content).getBoundingClientRect().top;
|
|
362
|
+
}
|
|
363
|
+
/** The captured rows start here. Appending a last row must not translate an older
|
|
364
|
+
* capture; native scroll already accounts for a long transcript following its end. */
|
|
365
|
+
function contentStart(content) {
|
|
366
|
+
return (content.firstElementChild ?? content).getBoundingClientRect().top;
|
|
367
|
+
}
|
|
368
|
+
function isAtBottom(surface) {
|
|
369
|
+
return surface.scrollHeight - surface.clientHeight - surface.scrollTop <= 1;
|
|
370
|
+
}
|
|
371
|
+
/** The bottom-most scroll offset for a scrollport of the given height. */
|
|
372
|
+
function bottomOffset(surface, clientHeight) {
|
|
373
|
+
return Math.max(0, surface.scrollHeight - clientHeight);
|
|
374
|
+
}
|
|
375
|
+
function scrollToBottom(surface) {
|
|
376
|
+
surface.scrollTop = bottomOffset(surface, surface.clientHeight);
|
|
377
|
+
}
|
|
378
|
+
/** Only the outermost content owns transport. Descendants inherit that same transform. */
|
|
379
|
+
function carriedOverlays(elements, accessory) {
|
|
380
|
+
return [...elements].flatMap(layer => {
|
|
381
|
+
if (!layer.isConnected ||
|
|
382
|
+
!layer.hasAttribute('data-satin-overlay-layer') ||
|
|
383
|
+
accessory.contains(layer))
|
|
384
|
+
return [];
|
|
385
|
+
if (layer.closest('[data-satin-scroll-content], [data-satin-overlay-content]'))
|
|
386
|
+
return [];
|
|
387
|
+
const content = layer.querySelector(':scope > [data-satin-overlay-content]');
|
|
388
|
+
if (!content)
|
|
389
|
+
return [];
|
|
390
|
+
const alignment = layer.dataset.satinOverlayLayer ?? 'center';
|
|
391
|
+
const share = alignment.startsWith('bottom') ? 1 : alignment.startsWith('top') ? 0 : 0.5;
|
|
392
|
+
return [{ content, share }];
|
|
393
|
+
});
|
|
394
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type KeyboardTranslation } from '../keyboard/translation.js';
|
|
2
|
+
/** Geometry of transforms owned by the keyboard carrier, on the same clock as its WAAPI runs. */
|
|
3
|
+
export declare const KEYBOARD_CARRIER_MOTION = "satin-keyboard-carrier-motion";
|
|
4
|
+
type Pose = Readonly<{
|
|
5
|
+
offsetY: number;
|
|
6
|
+
moving: boolean;
|
|
7
|
+
motion?: KeyboardTranslation;
|
|
8
|
+
/** Converts the last-row carrier pose to the captured first-row origin, excluding scroll. */
|
|
9
|
+
backdropAdjustment?: number;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function setKeyboardCarrierContent(surface: HTMLElement, content: HTMLElement, atRest: () => number): void;
|
|
12
|
+
export declare function clearKeyboardCarrierContent(surface: HTMLElement): void;
|
|
13
|
+
export declare function setKeyboardCarrierPose(element: HTMLElement, read: () => Pose): void;
|
|
14
|
+
export declare function clearKeyboardCarrierPose(element: HTMLElement): void;
|
|
15
|
+
export declare function keyboardCarrierPose(element: HTMLElement): {
|
|
16
|
+
offsetY: number;
|
|
17
|
+
moving: boolean;
|
|
18
|
+
motion?: KeyboardTranslation;
|
|
19
|
+
backdropAdjustment?: number;
|
|
20
|
+
owner: HTMLElement;
|
|
21
|
+
} | undefined;
|
|
22
|
+
/** Interpolate the actual rounded compositor keyframes, rather than fit a second curve. */
|
|
23
|
+
export declare function keyboardFrameTranslation(frames: readonly Keyframe[], elapsed: number, duration: number): number;
|
|
24
|
+
/** A capture's content origin follows the same carrier, excluding native scroll.
|
|
25
|
+
* Native scroll is transported separately, including real overscroll. */
|
|
26
|
+
export declare function keyboardBackdropPose(host: HTMLElement): {
|
|
27
|
+
offsetY: number;
|
|
28
|
+
moving: boolean;
|
|
29
|
+
motion: {
|
|
30
|
+
epoch: number;
|
|
31
|
+
duration: number;
|
|
32
|
+
end: number;
|
|
33
|
+
stops: readonly (readonly [number, number])[];
|
|
34
|
+
offset: number;
|
|
35
|
+
} | undefined;
|
|
36
|
+
} | undefined;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { keyboardTranslationStops, sampleKeyboardTranslation, } from '../keyboard/translation.js';
|
|
2
|
+
/** Geometry of transforms owned by the keyboard carrier, on the same clock as its WAAPI runs. */
|
|
3
|
+
export const KEYBOARD_CARRIER_MOTION = 'satin-keyboard-carrier-motion';
|
|
4
|
+
const poses = new WeakMap();
|
|
5
|
+
const contents = new WeakMap();
|
|
6
|
+
export function setKeyboardCarrierContent(surface, content, atRest) {
|
|
7
|
+
contents.set(surface, { content, atRest });
|
|
8
|
+
}
|
|
9
|
+
export function clearKeyboardCarrierContent(surface) {
|
|
10
|
+
contents.delete(surface);
|
|
11
|
+
}
|
|
12
|
+
export function setKeyboardCarrierPose(element, read) {
|
|
13
|
+
poses.set(element, read);
|
|
14
|
+
}
|
|
15
|
+
export function clearKeyboardCarrierPose(element) {
|
|
16
|
+
poses.delete(element);
|
|
17
|
+
}
|
|
18
|
+
export function keyboardCarrierPose(element) {
|
|
19
|
+
for (let owner = element; owner; owner = owner.parentElement) {
|
|
20
|
+
const read = poses.get(owner);
|
|
21
|
+
if (read)
|
|
22
|
+
return { owner, ...read() };
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
/** Interpolate the actual rounded compositor keyframes, rather than fit a second curve. */
|
|
27
|
+
export function keyboardFrameTranslation(frames, elapsed, duration) {
|
|
28
|
+
return sampleKeyboardTranslation({
|
|
29
|
+
epoch: 0,
|
|
30
|
+
duration,
|
|
31
|
+
end: duration,
|
|
32
|
+
offset: 0,
|
|
33
|
+
stops: keyboardTranslationStops(frames),
|
|
34
|
+
}, elapsed);
|
|
35
|
+
}
|
|
36
|
+
/** A capture's content origin follows the same carrier, excluding native scroll.
|
|
37
|
+
* Native scroll is transported separately, including real overscroll. */
|
|
38
|
+
export function keyboardBackdropPose(host) {
|
|
39
|
+
const entry = contents.get(host);
|
|
40
|
+
const pose = entry && poses.get(entry.content)?.();
|
|
41
|
+
if (!pose)
|
|
42
|
+
return undefined;
|
|
43
|
+
const adjustment = pose.backdropAdjustment ?? 0;
|
|
44
|
+
return {
|
|
45
|
+
offsetY: pose.moving ? pose.offsetY + adjustment : entry.atRest(),
|
|
46
|
+
moving: pose.moving,
|
|
47
|
+
motion: pose.motion && { ...pose.motion, offset: pose.motion.offset + adjustment },
|
|
48
|
+
};
|
|
49
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type SafeAreaInsetProps } from './SafeAreaInset.js';
|
|
2
|
+
import { type Edge, type EdgeLengths } from './context.js';
|
|
3
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
4
|
+
export type { Edge, EdgeLengths } from './context.js';
|
|
5
|
+
/** A logical edge, an axis pair or all edges. */
|
|
6
|
+
export type EdgeSetMember = Edge | 'horizontal' | 'vertical' | 'all';
|
|
7
|
+
/** `Edge.Set`: one member or several. */
|
|
8
|
+
export type EdgeSet = EdgeSetMember | readonly EdgeSetMember[];
|
|
9
|
+
/** The content and standard DOM attributes of a layout modifier wrapper. */
|
|
10
|
+
export type LayoutModifierProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & Readonly<{
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
}>;
|
|
13
|
+
/** Which edges to pad, and by how much. */
|
|
14
|
+
export type SafeAreaPaddingProps = LayoutModifierProps & Readonly<{
|
|
15
|
+
/** Edges to pad. Defaults to all edges, as `safeAreaPadding()`. */
|
|
16
|
+
edges?: EdgeSet;
|
|
17
|
+
/** Points. Defaults to the system padding, 16 pt. */
|
|
18
|
+
length?: number;
|
|
19
|
+
/** `safeAreaPadding(_ insets: EdgeInsets)`; overrides `edges` and `length`. */
|
|
20
|
+
insets?: EdgeLengths;
|
|
21
|
+
}>;
|
|
22
|
+
/** Adds to the content safe area. Scroll views keep their frame and inset content; other content is padded. Nested padding adds up. */
|
|
23
|
+
export declare function SafeAreaPadding({ edges, length, insets, children, ...props }: SafeAreaPaddingProps): import("react").JSX.Element;
|
|
24
|
+
/** Which edges get a margin, how much, and whether it applies to content or indicators. */
|
|
25
|
+
export type ContentMarginsProps = LayoutModifierProps & Readonly<{
|
|
26
|
+
edges?: EdgeSet;
|
|
27
|
+
/** Points. */
|
|
28
|
+
length: number;
|
|
29
|
+
/**
|
|
30
|
+
* `ContentMarginPlacement`. `scrollContent` (and `automatic`) margins the content;
|
|
31
|
+
* `scrollIndicators` only moves the indicator, which Satin draws in the screen frame and does
|
|
32
|
+
* not inset, so it has no effect yet.
|
|
33
|
+
*/
|
|
34
|
+
placement?: 'automatic' | 'scrollContent' | 'scrollIndicators';
|
|
35
|
+
}>;
|
|
36
|
+
/** Sets margins for descendant scroll views. Lists use horizontal layout margins; the innermost value for each edge wins. */
|
|
37
|
+
export declare function ContentMargins({ edges, length, placement, children, ...props }: ContentMarginsProps): import("react").JSX.Element;
|
|
38
|
+
/** A `SafeAreaInset` limited to the top or bottom edge, with no spacing. */
|
|
39
|
+
export type SafeAreaBarProps = Omit<SafeAreaInsetProps, 'edge' | 'spacing'> & Readonly<{
|
|
40
|
+
edge: 'top' | 'bottom';
|
|
41
|
+
}>;
|
|
42
|
+
/** Places a top or bottom safe-area inset with no spacing and its own scroll-edge material. */
|
|
43
|
+
export declare function SafeAreaBar({ edge, ...props }: SafeAreaBarProps): import("react").JSX.Element;
|
|
44
|
+
/** Which safe-area regions and edges the content ignores. */
|
|
45
|
+
export type IgnoresSafeAreaProps = LayoutModifierProps & Readonly<{
|
|
46
|
+
/** `SafeAreaRegions`. Defaults to `'all'`. */
|
|
47
|
+
regions?: 'all' | 'container' | 'keyboard';
|
|
48
|
+
/** Defaults to all edges. */
|
|
49
|
+
edges?: EdgeSet;
|
|
50
|
+
}>;
|
|
51
|
+
/** Extends content through selected safe-area edges. Container edges and keyboard avoidance can be controlled independently. */
|
|
52
|
+
export declare function IgnoresSafeArea({ regions, edges, children, ...props }: IgnoresSafeAreaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { startsScreenContent } from '../scroll/screenGeometry.js';
|
|
3
|
+
import { SafeAreaInset } from './SafeAreaInset.js';
|
|
4
|
+
import { ContentMarginsContext, IgnoresSafeAreaContext, NO_LENGTHS, SafeAreaPaddingContext, } from './context.js';
|
|
5
|
+
import { useContext, useLayoutEffect, useRef } from 'react';
|
|
6
|
+
/** SwiftUI's default padding amount (`padding()` and `safeAreaPadding()` with no length). */
|
|
7
|
+
const SYSTEM_PADDING_PX = 16;
|
|
8
|
+
function edgesOf(set) {
|
|
9
|
+
const edges = new Set();
|
|
10
|
+
for (const member of typeof set === 'string' ? [set] : set) {
|
|
11
|
+
if (member === 'all' || member === 'vertical')
|
|
12
|
+
edges.add('top').add('bottom');
|
|
13
|
+
if (member === 'all' || member === 'horizontal')
|
|
14
|
+
edges.add('leading').add('trailing');
|
|
15
|
+
if (member !== 'all' && member !== 'vertical' && member !== 'horizontal')
|
|
16
|
+
edges.add(member);
|
|
17
|
+
}
|
|
18
|
+
return edges;
|
|
19
|
+
}
|
|
20
|
+
function lengthsOf(edges, length, insets) {
|
|
21
|
+
if (insets)
|
|
22
|
+
return { ...NO_LENGTHS, ...insets };
|
|
23
|
+
const set = edgesOf(edges ?? 'all');
|
|
24
|
+
const amount = length ?? SYSTEM_PADDING_PX;
|
|
25
|
+
return {
|
|
26
|
+
top: set.has('top') ? amount : 0,
|
|
27
|
+
bottom: set.has('bottom') ? amount : 0,
|
|
28
|
+
leading: set.has('leading') ? amount : 0,
|
|
29
|
+
trailing: set.has('trailing') ? amount : 0,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Adds to the content safe area. Scroll views keep their frame and inset content; other content is padded. Nested padding adds up. */
|
|
33
|
+
export function SafeAreaPadding({ edges, length, insets, children, ...props }) {
|
|
34
|
+
const parent = useContext(SafeAreaPaddingContext);
|
|
35
|
+
const own = lengthsOf(edges, length, insets);
|
|
36
|
+
const total = {
|
|
37
|
+
top: parent.top + own.top,
|
|
38
|
+
bottom: parent.bottom + own.bottom,
|
|
39
|
+
leading: parent.leading + own.leading,
|
|
40
|
+
trailing: parent.trailing + own.trailing,
|
|
41
|
+
};
|
|
42
|
+
return (_jsx("div", { ...props, style: {
|
|
43
|
+
...props.style,
|
|
44
|
+
['--satin-padding-top']: `${own.top}px`,
|
|
45
|
+
['--satin-padding-bottom']: `${own.bottom}px`,
|
|
46
|
+
['--satin-padding-leading']: `${own.leading}px`,
|
|
47
|
+
['--satin-padding-trailing']: `${own.trailing}px`,
|
|
48
|
+
}, "data-satin-safe-area-padding": "true", children: _jsx(SafeAreaPaddingContext, { value: total, children: children }) }));
|
|
49
|
+
}
|
|
50
|
+
/** Sets margins for descendant scroll views. Lists use horizontal layout margins; the innermost value for each edge wins. */
|
|
51
|
+
export function ContentMargins({ edges = 'all', length, placement = 'automatic', children, ...props }) {
|
|
52
|
+
const parent = useContext(ContentMarginsContext);
|
|
53
|
+
const set = edgesOf(edges);
|
|
54
|
+
const margins = { ...parent };
|
|
55
|
+
if (placement !== 'scrollIndicators')
|
|
56
|
+
for (const edge of set)
|
|
57
|
+
margins[edge] = length;
|
|
58
|
+
return (_jsx("div", { ...props, "data-satin-content-margins": "true", children: _jsx(ContentMarginsContext, { value: margins, children: children }) }));
|
|
59
|
+
}
|
|
60
|
+
/** Places a top or bottom safe-area inset with no spacing and its own scroll-edge material. */
|
|
61
|
+
export function SafeAreaBar({ edge, ...props }) {
|
|
62
|
+
return _jsx(SafeAreaInset, { ...props, edge: edge, spacing: 0, "data-satin-safe-area-bar": edge });
|
|
63
|
+
}
|
|
64
|
+
/** Extends content through selected safe-area edges. Container edges and keyboard avoidance can be controlled independently. */
|
|
65
|
+
export function IgnoresSafeArea({ regions = 'all', edges = 'all', children, ...props }) {
|
|
66
|
+
const parent = useContext(IgnoresSafeAreaContext);
|
|
67
|
+
const set = edgesOf(edges);
|
|
68
|
+
const container = regions === 'keyboard' ? new Set() : set;
|
|
69
|
+
const keyboard = regions !== 'container' && set.has('bottom');
|
|
70
|
+
const element = useRef(null);
|
|
71
|
+
// Only a view that reaches the safe edge extends past it, as SwiftUI's does.
|
|
72
|
+
useLayoutEffect(() => {
|
|
73
|
+
const node = element.current;
|
|
74
|
+
if (!node)
|
|
75
|
+
return;
|
|
76
|
+
const position = getComputedStyle(node).position;
|
|
77
|
+
// An out-of-flow view (a full-screen background) has no slot to keep: it only grows upward.
|
|
78
|
+
const overlay = position === 'absolute' || position === 'fixed';
|
|
79
|
+
node.dataset.satinTouchesTop = String(container.has('top') && (overlay || startsScreenContent(node)));
|
|
80
|
+
node.dataset.satinIgnoresOverlay = String(overlay);
|
|
81
|
+
});
|
|
82
|
+
return (_jsx("div", { ...props, ref: element, "data-satin-safe-area-modifier": "ignores", "data-satin-ignores-safe-area-edges": [...container].join(' ') || undefined, children: _jsx(IgnoresSafeAreaContext, { value: {
|
|
83
|
+
container: new Set([...parent.container, ...container]),
|
|
84
|
+
keyboard: parent.keyboard || keyboard,
|
|
85
|
+
}, children: children }) }));
|
|
86
|
+
}
|