@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,43 @@
|
|
|
1
|
+
/** Measured from the iOS 26.5 Settings app on iPhone 17 Pro. */
|
|
2
|
+
export declare const NAVIGATION_DURATION_MS = 352;
|
|
3
|
+
export declare const NAVIGATION_EASING: readonly [0.21, 0.71, 0.3, 1];
|
|
4
|
+
export declare const NAVIGATION_EASING_CSS: string;
|
|
5
|
+
export declare const NAVIGATION_PARALLAX_FRACTION = 0.3;
|
|
6
|
+
export declare const NAVIGATION_DIM_OPACITY = 0.1;
|
|
7
|
+
export declare const NAVIGATION_EDGE_SHADOW_WIDTH_PX = 20;
|
|
8
|
+
export declare const NAVIGATION_EDGE_SHADOW_OPACITY = 0.018;
|
|
9
|
+
/** Legacy non-touch fallback. Installed touch uses releaseDecision statistics. */
|
|
10
|
+
export declare const NAVIGATION_POSITION_THRESHOLD = 0.425;
|
|
11
|
+
export declare const NAVIGATION_VELOCITY_THRESHOLD_PX_PER_SECOND = 317;
|
|
12
|
+
export declare const NAVIGATION_HORIZONTAL_INTENT_PX = 30;
|
|
13
|
+
/** Chosen inside UIKit's observed 10-12 point direction-lock window. */
|
|
14
|
+
export declare const NAVIGATION_DIRECTION_LOCK_PX = 10;
|
|
15
|
+
export declare const navigationMotionTokens: Readonly<{
|
|
16
|
+
dimOpacity: 0.1;
|
|
17
|
+
directionLockPx: 10;
|
|
18
|
+
durationMs: 352;
|
|
19
|
+
easing: readonly [0.21, 0.71, 0.3, 1];
|
|
20
|
+
edgeShadowOpacity: 0.018;
|
|
21
|
+
edgeShadowWidthPx: 20;
|
|
22
|
+
horizontalIntentPx: 30;
|
|
23
|
+
parallaxFraction: 0.3;
|
|
24
|
+
positionThreshold: 0.425;
|
|
25
|
+
releaseSampleRateHz: 240;
|
|
26
|
+
releaseSpring: Readonly<{
|
|
27
|
+
damping: 35.60471674068432;
|
|
28
|
+
mass: 1;
|
|
29
|
+
stiffness: 438.6490844928604;
|
|
30
|
+
}>;
|
|
31
|
+
velocityThresholdPxPerSecond: 317;
|
|
32
|
+
releaseCompletion: "first edge arrival";
|
|
33
|
+
flickVelocityBoost: 1;
|
|
34
|
+
nativeControllerFlickVelocityBoost: 4.25;
|
|
35
|
+
initialFlickHistoryThresholdWidthsPerSecond: 1.5;
|
|
36
|
+
touchReleaseProjectionSeconds: 0.35;
|
|
37
|
+
touchReleaseThresholdPoints: 187.5;
|
|
38
|
+
trackingResponseSeconds: 0.08;
|
|
39
|
+
trackingDampingRatio: 0.85;
|
|
40
|
+
}>;
|
|
41
|
+
export declare function clampProgress(progress: number): number;
|
|
42
|
+
export declare function sampleNavigationCurve(timeProgress: number): number;
|
|
43
|
+
export declare function shouldCompleteInteractivePop(progress: number, velocityPointsPerSecond: number): boolean;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// The navigation push/pop timing model: measured durations, curve and thresholds, plus the
|
|
2
|
+
// sampling helpers that read them. Values come from the native references named beside them.
|
|
3
|
+
import { NAVIGATION_EDGE_FLICK_BOOST, NAVIGATION_EDGE_FLICK_NORMALIZED_VELOCITY, NAVIGATION_PROJECTION_SECONDS, NAVIGATION_PROJECTED_COMPLETION_POINTS, } from './releaseDecision.js';
|
|
4
|
+
import { NAVIGATION_TRACKING_DAMPING_RATIO, NAVIGATION_TRACKING_RESPONSE_SECONDS, } from './tracking.js';
|
|
5
|
+
import { NAVIGATION_RELEASE_SAMPLE_RATE_HZ, NAVIGATION_RELEASE_SPRING_DAMPING, NAVIGATION_RELEASE_SPRING_MASS, NAVIGATION_RELEASE_SPRING_STIFFNESS, } from './releaseTrajectory.js';
|
|
6
|
+
/** Measured from the iOS 26.5 Settings app on iPhone 17 Pro. */
|
|
7
|
+
export const NAVIGATION_DURATION_MS = 352;
|
|
8
|
+
export const NAVIGATION_EASING = Object.freeze([0.21, 0.71, 0.3, 1]);
|
|
9
|
+
export const NAVIGATION_EASING_CSS = `cubic-bezier(${NAVIGATION_EASING.join(', ')})`;
|
|
10
|
+
export const NAVIGATION_PARALLAX_FRACTION = 0.3;
|
|
11
|
+
export const NAVIGATION_DIM_OPACITY = 0.1;
|
|
12
|
+
export const NAVIGATION_EDGE_SHADOW_WIDTH_PX = 20;
|
|
13
|
+
export const NAVIGATION_EDGE_SHADOW_OPACITY = 0.018;
|
|
14
|
+
/** Legacy non-touch fallback. Installed touch uses releaseDecision statistics. */
|
|
15
|
+
export const NAVIGATION_POSITION_THRESHOLD = 0.425;
|
|
16
|
+
export const NAVIGATION_VELOCITY_THRESHOLD_PX_PER_SECOND = 317;
|
|
17
|
+
export const NAVIGATION_HORIZONTAL_INTENT_PX = 30;
|
|
18
|
+
/** Chosen inside UIKit's observed 10-12 point direction-lock window. */
|
|
19
|
+
export const NAVIGATION_DIRECTION_LOCK_PX = 10;
|
|
20
|
+
export const navigationMotionTokens = Object.freeze({
|
|
21
|
+
dimOpacity: NAVIGATION_DIM_OPACITY,
|
|
22
|
+
directionLockPx: NAVIGATION_DIRECTION_LOCK_PX,
|
|
23
|
+
durationMs: NAVIGATION_DURATION_MS,
|
|
24
|
+
easing: NAVIGATION_EASING,
|
|
25
|
+
edgeShadowOpacity: NAVIGATION_EDGE_SHADOW_OPACITY,
|
|
26
|
+
edgeShadowWidthPx: NAVIGATION_EDGE_SHADOW_WIDTH_PX,
|
|
27
|
+
horizontalIntentPx: NAVIGATION_HORIZONTAL_INTENT_PX,
|
|
28
|
+
parallaxFraction: NAVIGATION_PARALLAX_FRACTION,
|
|
29
|
+
positionThreshold: NAVIGATION_POSITION_THRESHOLD,
|
|
30
|
+
releaseSampleRateHz: NAVIGATION_RELEASE_SAMPLE_RATE_HZ,
|
|
31
|
+
releaseSpring: Object.freeze({
|
|
32
|
+
damping: NAVIGATION_RELEASE_SPRING_DAMPING,
|
|
33
|
+
mass: NAVIGATION_RELEASE_SPRING_MASS,
|
|
34
|
+
stiffness: NAVIGATION_RELEASE_SPRING_STIFFNESS,
|
|
35
|
+
}),
|
|
36
|
+
velocityThresholdPxPerSecond: NAVIGATION_VELOCITY_THRESHOLD_PX_PER_SECOND,
|
|
37
|
+
releaseCompletion: 'first edge arrival',
|
|
38
|
+
flickVelocityBoost: 1,
|
|
39
|
+
nativeControllerFlickVelocityBoost: NAVIGATION_EDGE_FLICK_BOOST,
|
|
40
|
+
initialFlickHistoryThresholdWidthsPerSecond: NAVIGATION_EDGE_FLICK_NORMALIZED_VELOCITY,
|
|
41
|
+
touchReleaseProjectionSeconds: NAVIGATION_PROJECTION_SECONDS,
|
|
42
|
+
touchReleaseThresholdPoints: NAVIGATION_PROJECTED_COMPLETION_POINTS,
|
|
43
|
+
// Native reference values. Interactive input uses the fixed scroll mapping;
|
|
44
|
+
// applying the tracking spring in JavaScript regresses compositor continuity.
|
|
45
|
+
trackingResponseSeconds: NAVIGATION_TRACKING_RESPONSE_SECONDS,
|
|
46
|
+
trackingDampingRatio: NAVIGATION_TRACKING_DAMPING_RATIO,
|
|
47
|
+
});
|
|
48
|
+
export function clampProgress(progress) {
|
|
49
|
+
return Math.min(1, Math.max(0, progress));
|
|
50
|
+
}
|
|
51
|
+
function cubicCoordinate(amount, firstControl, secondControl) {
|
|
52
|
+
const inverse = 1 - amount;
|
|
53
|
+
return (3 * inverse * inverse * amount * firstControl +
|
|
54
|
+
3 * inverse * amount * amount * secondControl +
|
|
55
|
+
amount * amount * amount);
|
|
56
|
+
}
|
|
57
|
+
export function sampleNavigationCurve(timeProgress) {
|
|
58
|
+
const [x1, y1, x2, y2] = NAVIGATION_EASING;
|
|
59
|
+
const targetX = clampProgress(timeProgress);
|
|
60
|
+
let lower = 0;
|
|
61
|
+
let upper = 1;
|
|
62
|
+
for (let iteration = 0; iteration < 28; iteration += 1) {
|
|
63
|
+
const candidate = (lower + upper) / 2;
|
|
64
|
+
const x = cubicCoordinate(candidate, x1, x2);
|
|
65
|
+
if (x < targetX)
|
|
66
|
+
lower = candidate;
|
|
67
|
+
else
|
|
68
|
+
upper = candidate;
|
|
69
|
+
}
|
|
70
|
+
return cubicCoordinate((lower + upper) / 2, y1, y2);
|
|
71
|
+
}
|
|
72
|
+
export function shouldCompleteInteractivePop(progress, velocityPointsPerSecond) {
|
|
73
|
+
return (progress >= NAVIGATION_POSITION_THRESHOLD ||
|
|
74
|
+
velocityPointsPerSecond >= NAVIGATION_VELOCITY_THRESHOLD_PX_PER_SECOND);
|
|
75
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Installed-only architecture experiment. No application navigation is
|
|
2
|
+
* replaced. The nested vertical surface uses the production ScrollSurface
|
|
3
|
+
* policy, including scroll-chain containment.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createNativeScrubExperiment(record: (value: unknown) => void): HTMLDivElement;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { resolveInteractivePopDirectionLock } from './interactivePop.js';
|
|
2
|
+
/** Installed-only architecture experiment. No application navigation is
|
|
3
|
+
* replaced. The nested vertical surface uses the production ScrollSurface
|
|
4
|
+
* policy, including scroll-chain containment.
|
|
5
|
+
*/
|
|
6
|
+
export function createNativeScrubExperiment(record) {
|
|
7
|
+
const root = document.createElement('section');
|
|
8
|
+
root.hidden = true;
|
|
9
|
+
root.setAttribute('data-satin-motion-probe', 'true');
|
|
10
|
+
Object.assign(root.style, {
|
|
11
|
+
position: 'fixed',
|
|
12
|
+
top: '180px',
|
|
13
|
+
left: '60px',
|
|
14
|
+
width: '280px',
|
|
15
|
+
background: '#17212e',
|
|
16
|
+
color: 'white',
|
|
17
|
+
zIndex: '20000',
|
|
18
|
+
padding: '8px',
|
|
19
|
+
});
|
|
20
|
+
const label = document.createElement('p');
|
|
21
|
+
label.textContent =
|
|
22
|
+
'Nested native scrub experiment: drag right across the striped surface. Then try 40° and 50° diagonals. Reports retain native scroll and touch coordinates.';
|
|
23
|
+
const select = document.createElement('select');
|
|
24
|
+
for (const value of ['nested-contained', 'nested-chain', 'horizontal-only', 'claim-at-10']) {
|
|
25
|
+
const option = document.createElement('option');
|
|
26
|
+
option.value = option.textContent = value;
|
|
27
|
+
select.append(option);
|
|
28
|
+
}
|
|
29
|
+
const x = document.createElement('div'), track = document.createElement('div'), y = document.createElement('div'), content = document.createElement('div');
|
|
30
|
+
Object.assign(x.style, {
|
|
31
|
+
position: 'relative',
|
|
32
|
+
width: '280px',
|
|
33
|
+
height: '160px',
|
|
34
|
+
overflowX: 'scroll',
|
|
35
|
+
overflowY: 'hidden',
|
|
36
|
+
touchAction: 'pan-y pan-right pinch-zoom',
|
|
37
|
+
overscrollBehaviorX: 'contain',
|
|
38
|
+
background: '#345',
|
|
39
|
+
});
|
|
40
|
+
Object.assign(track.style, { width: '840px', height: '160px', position: 'relative' });
|
|
41
|
+
Object.assign(y.style, {
|
|
42
|
+
position: 'absolute',
|
|
43
|
+
left: '280px',
|
|
44
|
+
width: '280px',
|
|
45
|
+
height: '160px',
|
|
46
|
+
overflowY: 'auto',
|
|
47
|
+
overflowX: 'hidden',
|
|
48
|
+
touchAction: 'pan-y pan-right pinch-zoom',
|
|
49
|
+
overscrollBehavior: 'contain',
|
|
50
|
+
});
|
|
51
|
+
Object.assign(content.style, {
|
|
52
|
+
width: '280px',
|
|
53
|
+
height: '600px',
|
|
54
|
+
background: 'repeating-linear-gradient(0deg,#345 0px,#345 39px,#fff 40px,#345 41px)',
|
|
55
|
+
});
|
|
56
|
+
content.textContent = 'Native vertical content';
|
|
57
|
+
y.setAttribute('data-satin-scroll', 'native-scrub-experiment');
|
|
58
|
+
const button = document.createElement('button');
|
|
59
|
+
button.textContent = 'Press target';
|
|
60
|
+
content.append(button);
|
|
61
|
+
y.append(content);
|
|
62
|
+
track.append(y);
|
|
63
|
+
x.append(track);
|
|
64
|
+
const dot = document.createElement('div');
|
|
65
|
+
Object.assign(dot.style, { width: '8px', height: '8px', background: '#ffbd42', marginTop: '4px' });
|
|
66
|
+
let animation;
|
|
67
|
+
const reset = () => {
|
|
68
|
+
y.style.overflow = select.value === 'horizontal-only' ? 'visible' : '';
|
|
69
|
+
if (select.value !== 'horizontal-only') {
|
|
70
|
+
y.style.overflowY = 'auto';
|
|
71
|
+
y.style.overflowX = 'hidden';
|
|
72
|
+
}
|
|
73
|
+
content.style.height = select.value === 'horizontal-only' ? '160px' : '600px';
|
|
74
|
+
y.style.overscrollBehavior = select.value === 'nested-chain' ? 'auto' : 'contain';
|
|
75
|
+
x.scrollLeft = 280;
|
|
76
|
+
y.scrollTop = 200;
|
|
77
|
+
animation?.cancel();
|
|
78
|
+
const Timeline = window.ScrollTimeline;
|
|
79
|
+
if (Timeline)
|
|
80
|
+
animation = dot.animate([{ transform: 'translateX(280px)' }, { transform: 'translateX(-280px)' }], { timeline: new Timeline({ source: x, axis: 'x' }), fill: 'both' });
|
|
81
|
+
};
|
|
82
|
+
const events = [];
|
|
83
|
+
let startX = 0, startY = 0, claimed = false;
|
|
84
|
+
const sample = (type, touch) => {
|
|
85
|
+
const dx = touch ? touch.clientX - startX : undefined, dy = touch ? touch.clientY - startY : undefined;
|
|
86
|
+
events.push({
|
|
87
|
+
type,
|
|
88
|
+
at: performance.now(),
|
|
89
|
+
x: x.scrollLeft,
|
|
90
|
+
y: y.scrollTop,
|
|
91
|
+
dx,
|
|
92
|
+
dy,
|
|
93
|
+
lock: dx === undefined ? undefined : resolveInteractivePopDirectionLock(dx, dy),
|
|
94
|
+
claimed,
|
|
95
|
+
});
|
|
96
|
+
if (events.length > 600)
|
|
97
|
+
events.shift();
|
|
98
|
+
};
|
|
99
|
+
x.addEventListener('touchstart', event => {
|
|
100
|
+
events.length = 0;
|
|
101
|
+
claimed = false;
|
|
102
|
+
startX = event.touches[0].clientX;
|
|
103
|
+
startY = event.touches[0].clientY;
|
|
104
|
+
sample('touchstart', event.touches[0]);
|
|
105
|
+
}, { passive: true });
|
|
106
|
+
x.addEventListener('touchmove', event => {
|
|
107
|
+
const t = event.touches[0];
|
|
108
|
+
if (select.value === 'claim-at-10' &&
|
|
109
|
+
resolveInteractivePopDirectionLock(t.clientX - startX, t.clientY - startY) ===
|
|
110
|
+
'claim-horizontal')
|
|
111
|
+
claimed = true;
|
|
112
|
+
if (claimed && event.cancelable)
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
sample('touchmove', t);
|
|
115
|
+
}, { passive: false });
|
|
116
|
+
for (const type of ['touchend', 'touchcancel'])
|
|
117
|
+
x.addEventListener(type, event => {
|
|
118
|
+
sample(type, event.changedTouches[0]);
|
|
119
|
+
setTimeout(() => {
|
|
120
|
+
record({
|
|
121
|
+
kind: 'nested-native-scrub',
|
|
122
|
+
mode: select.value,
|
|
123
|
+
timeline: Boolean(animation),
|
|
124
|
+
events: [...events],
|
|
125
|
+
});
|
|
126
|
+
reset();
|
|
127
|
+
}, 700);
|
|
128
|
+
}, { passive: true });
|
|
129
|
+
for (const type of ['pointercancel', 'pointerup', 'click'])
|
|
130
|
+
button.addEventListener(type, () => sample(type));
|
|
131
|
+
x.addEventListener('scroll', () => sample('scroll-x'), { passive: true });
|
|
132
|
+
y.addEventListener('scroll', () => sample('scroll-y'), { passive: true });
|
|
133
|
+
select.onchange = reset;
|
|
134
|
+
const resetButton = document.createElement('button');
|
|
135
|
+
resetButton.textContent = 'Reset native scrub';
|
|
136
|
+
resetButton.onclick = reset;
|
|
137
|
+
root.append(label, select, resetButton, x, dot);
|
|
138
|
+
const close = document.createElement('button');
|
|
139
|
+
close.textContent = 'Close native scrub';
|
|
140
|
+
close.onclick = () => {
|
|
141
|
+
root.hidden = true;
|
|
142
|
+
};
|
|
143
|
+
root.append(close);
|
|
144
|
+
const launcher = document.createElement('button');
|
|
145
|
+
launcher.textContent = 'Open nested scrub experiment';
|
|
146
|
+
launcher.onclick = () => {
|
|
147
|
+
root.hidden = false;
|
|
148
|
+
reset();
|
|
149
|
+
};
|
|
150
|
+
const controls = document.createElement('div');
|
|
151
|
+
controls.append(launcher, root);
|
|
152
|
+
return controls;
|
|
153
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** A retired source clamps its offset while its native deceleration is stopped. */
|
|
2
|
+
export declare const NATIVE_SCRUB_RETIRED_ATTRIBUTE = "data-satin-scrub-retired";
|
|
3
|
+
/** One display frame at 60 Hz: a re-arm is committed with the next update. */
|
|
4
|
+
export declare const NATIVE_SCRUB_REARM_COMMIT_MS = 17;
|
|
5
|
+
/** Retires the shared source and schedules its re-arm. Returns the retirement
|
|
6
|
+
* token; only that retirement may be re-armed with it. */
|
|
7
|
+
export declare function retireNativeScrubSource(source: HTMLElement, origin: number): number;
|
|
8
|
+
/** Re-arms the source if `retirement` (or, when omitted, any retirement) is
|
|
9
|
+
* still current and its native reset has committed. A superseded retirement
|
|
10
|
+
* never re-arms a newer one. */
|
|
11
|
+
export declare function rearmNativeScrubSource(source: HTMLElement, retirement?: number): boolean;
|
|
12
|
+
/** A new eligible contact returns offset ownership before its native pan starts. Re-arming alone does not. */
|
|
13
|
+
export declare function releaseNativeScrubClamp(source: HTMLElement): void;
|
|
14
|
+
/** Whether a contact that touched down at `time` can be scrolling `source`. */
|
|
15
|
+
export declare function nativeScrubSourceLiveAt(source: HTMLElement | null | undefined, time: number): boolean;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// The private horizontal scroller that carries an installed back swipe: retiring it after a
|
|
2
|
+
// release and re-arming it for the next contact.
|
|
3
|
+
import { recordMotionPreparation } from '../motionProbe.js';
|
|
4
|
+
/** A retired source clamps its offset while its native deceleration is stopped. */
|
|
5
|
+
export const NATIVE_SCRUB_RETIRED_ATTRIBUTE = 'data-satin-scrub-retired';
|
|
6
|
+
const nativeScrubSources = new WeakMap();
|
|
7
|
+
let nativeScrubRetirements = 0;
|
|
8
|
+
/** One display frame at 60 Hz: a re-arm is committed with the next update. */
|
|
9
|
+
export const NATIVE_SCRUB_REARM_COMMIT_MS = 17;
|
|
10
|
+
/** Retires the shared source and schedules its re-arm. Returns the retirement
|
|
11
|
+
* token; only that retirement may be re-armed with it. */
|
|
12
|
+
export function retireNativeScrubSource(source, origin) {
|
|
13
|
+
const state = nativeScrubSources.get(source);
|
|
14
|
+
if (state)
|
|
15
|
+
source.removeEventListener?.('scroll', state.clamp);
|
|
16
|
+
const retiredWidth = source.clientWidth;
|
|
17
|
+
const clamp = () => {
|
|
18
|
+
const target = retiredWidth > 0 && source.clientWidth > 0
|
|
19
|
+
? (origin / retiredWidth) * source.clientWidth
|
|
20
|
+
: origin;
|
|
21
|
+
if (source.scrollLeft !== target)
|
|
22
|
+
source.scrollLeft = target;
|
|
23
|
+
};
|
|
24
|
+
const next = {
|
|
25
|
+
frame: 0,
|
|
26
|
+
rearmedAt: state?.rearmedAt ?? -Infinity,
|
|
27
|
+
retirement: ++nativeScrubRetirements,
|
|
28
|
+
clamp,
|
|
29
|
+
clampActive: true,
|
|
30
|
+
overflowX: state?.frame ? state.overflowX : source.style.overflowX,
|
|
31
|
+
};
|
|
32
|
+
if (state?.frame && typeof window !== 'undefined')
|
|
33
|
+
window.cancelAnimationFrame(state.frame);
|
|
34
|
+
nativeScrubSources.set(source, next);
|
|
35
|
+
source.setAttribute?.(NATIVE_SCRUB_RETIRED_ATTRIBUTE, 'true');
|
|
36
|
+
source.addEventListener?.('scroll', clamp, { passive: true });
|
|
37
|
+
// Recentre immediately for painted stability. This alone does not end UIKit deceleration.
|
|
38
|
+
source.scrollLeft = origin;
|
|
39
|
+
if (typeof window !== 'undefined') {
|
|
40
|
+
next.frame = window.requestAnimationFrame(() => {
|
|
41
|
+
// Run after lift, when UIKit has begun decelerating. Keep overflow disabled
|
|
42
|
+
// through a rendering update so the native scrolling tree drops momentum.
|
|
43
|
+
// Restore the same source: replacing it would lose active touch ownership.
|
|
44
|
+
source.style.overflowX = 'hidden';
|
|
45
|
+
void source.offsetWidth;
|
|
46
|
+
next.frame = window.requestAnimationFrame(() => {
|
|
47
|
+
next.frame = 0;
|
|
48
|
+
source.style.overflowX = next.overflowX;
|
|
49
|
+
rearmNativeScrubSource(source, next.retirement);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return next.retirement;
|
|
54
|
+
}
|
|
55
|
+
/** Re-arms the source if `retirement` (or, when omitted, any retirement) is
|
|
56
|
+
* still current and its native reset has committed. A superseded retirement
|
|
57
|
+
* never re-arms a newer one. */
|
|
58
|
+
export function rearmNativeScrubSource(source, retirement) {
|
|
59
|
+
const state = nativeScrubSources.get(source);
|
|
60
|
+
if (!state?.retirement || (retirement !== undefined && retirement !== state.retirement))
|
|
61
|
+
return false;
|
|
62
|
+
// An endpoint release may complete before the native reset commits. Completion
|
|
63
|
+
// must not cancel that reset and leave the next content tap stopping momentum.
|
|
64
|
+
if (state.frame)
|
|
65
|
+
return false;
|
|
66
|
+
state.retirement = 0;
|
|
67
|
+
// Re-arm contact eligibility, but keep offset ownership until another native scrub starts.
|
|
68
|
+
// Momentum can arrive after the re-arm frame; letting it move this sticky ancestor shifts content.
|
|
69
|
+
state.rearmedAt = performance.now();
|
|
70
|
+
source.removeAttribute?.(NATIVE_SCRUB_RETIRED_ATTRIBUTE);
|
|
71
|
+
recordMotionPreparation(() => ({ kind: 'navigation-source-rearmed', at: state.rearmedAt }));
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
/** A new eligible contact returns offset ownership before its native pan starts. Re-arming alone does not. */
|
|
75
|
+
export function releaseNativeScrubClamp(source) {
|
|
76
|
+
const state = nativeScrubSources.get(source);
|
|
77
|
+
if (!state?.clampActive)
|
|
78
|
+
return;
|
|
79
|
+
source.removeEventListener?.('scroll', state.clamp);
|
|
80
|
+
state.clampActive = false;
|
|
81
|
+
}
|
|
82
|
+
/** Whether a contact that touched down at `time` can be scrolling `source`. */
|
|
83
|
+
export function nativeScrubSourceLiveAt(source, time) {
|
|
84
|
+
if (!source || source.getAttribute?.(NATIVE_SCRUB_RETIRED_ATTRIBUTE))
|
|
85
|
+
return false;
|
|
86
|
+
const state = nativeScrubSources.get(source);
|
|
87
|
+
return !state || (!state.retirement && time >= state.rearmedAt + NATIVE_SCRUB_REARM_COMMIT_MS);
|
|
88
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AnyScreenDefinition, NavigationBarDefinition, TitleDisplayMode, ScreenEntry } from './types.js';
|
|
2
|
+
export declare function resolveNavigationTitle(navigation: NavigationBarDefinition<any> | undefined, params: unknown): string | undefined;
|
|
3
|
+
export declare function backButtonVisible(definition: AnyScreenDefinition | undefined, entryIndex: number): boolean;
|
|
4
|
+
export declare function backTargetIndex(entries: readonly ScreenEntry[]): number;
|
|
5
|
+
/** An empty title reserves no large-title row. Bar demand is resolved separately. */
|
|
6
|
+
export declare function resolveNavigationDisplay(title: string | undefined, display: TitleDisplayMode | undefined, compact?: boolean): TitleDisplayMode;
|
|
7
|
+
/** Native iOS 27 omits an untitled root bar unless controls need its row. */
|
|
8
|
+
export declare function resolveNavigationVisibility(title: string | undefined, visibility: 'automatic' | 'visible' | 'hidden' | undefined, display: TitleDisplayMode | undefined, hasToolbar?: boolean, hasBackButton?: boolean): "hidden" | "visible";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function resolveNavigationTitle(navigation, params) {
|
|
2
|
+
if (!navigation)
|
|
3
|
+
return undefined;
|
|
4
|
+
return typeof navigation.title === 'function' ? navigation.title(params) : navigation.title;
|
|
5
|
+
}
|
|
6
|
+
export function backButtonVisible(definition, entryIndex) {
|
|
7
|
+
return (entryIndex > 0 &&
|
|
8
|
+
definition?.navigation !== undefined &&
|
|
9
|
+
definition.navigation.backButton !== 'hidden');
|
|
10
|
+
}
|
|
11
|
+
export function backTargetIndex(entries) {
|
|
12
|
+
const firstExiting = entries.findIndex(entry => entry.transition.phase === 'exiting');
|
|
13
|
+
return (firstExiting === -1 ? entries.length - 1 : firstExiting) - 1;
|
|
14
|
+
}
|
|
15
|
+
/** An empty title reserves no large-title row. Bar demand is resolved separately. */
|
|
16
|
+
export function resolveNavigationDisplay(title, display, compact = false) {
|
|
17
|
+
if (display === 'none')
|
|
18
|
+
return 'none';
|
|
19
|
+
if (!title || (compact && display === 'large'))
|
|
20
|
+
return 'inline';
|
|
21
|
+
return display ?? 'inline';
|
|
22
|
+
}
|
|
23
|
+
/** Native iOS 27 omits an untitled root bar unless controls need its row. */
|
|
24
|
+
export function resolveNavigationVisibility(title, visibility, display, hasToolbar = false, hasBackButton = false) {
|
|
25
|
+
if (visibility && visibility !== 'automatic')
|
|
26
|
+
return visibility;
|
|
27
|
+
return (display !== 'none' && Boolean(title)) || hasToolbar || hasBackButton
|
|
28
|
+
? 'visible'
|
|
29
|
+
: 'hidden';
|
|
30
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Context } from 'react';
|
|
2
|
+
import type { ScreenRegistry } from './registry.js';
|
|
3
|
+
import type { NavigatorActions, NavigatorStore, RegistryScreenEntry } from './store.js';
|
|
4
|
+
import type { NavigatorState, ScreenLifecycle, ScreenLifecycleCallbacks } from './types.js';
|
|
5
|
+
import { type ScrollSurfaceRegistry } from '../scroll/registry.js';
|
|
6
|
+
type ScreenContextValue = Readonly<{
|
|
7
|
+
key: string;
|
|
8
|
+
lifecycle: ScreenLifecycle;
|
|
9
|
+
params: unknown;
|
|
10
|
+
scrollRegistry: ScrollSurfaceRegistry;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const NavigationPaneContext: Context<"detail" | "sidebar" | "stack">;
|
|
13
|
+
export declare const NavigatorContext: Context<NavigatorStore | undefined>;
|
|
14
|
+
export declare const ScreenContext: Context<ScreenContextValue | undefined>;
|
|
15
|
+
export declare const SystemScrollRegistryContext: Context<ScrollSurfaceRegistry | undefined>;
|
|
16
|
+
export declare function useNavigator<Registry extends ScreenRegistry = ScreenRegistry>(): NavigatorActions<Registry>;
|
|
17
|
+
export declare function useNavigatorState<Registry extends ScreenRegistry = ScreenRegistry>(): NavigatorState<RegistryScreenEntry<Registry>>;
|
|
18
|
+
export declare function useParams<Params = unknown>(): Params;
|
|
19
|
+
export declare function useScreenScrollRegistry(): ScrollSurfaceRegistry;
|
|
20
|
+
/** `onAppear` and `onDisappear`: callbacks for a retained navigation entry's visible lifecycle. */
|
|
21
|
+
export declare function useScreenLifecycle(callbacks?: ScreenLifecycleCallbacks): ScreenLifecycle;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { createContext, useContext, useEffect, useRef, useSyncExternalStore } from 'react';
|
|
2
|
+
import { createScrollSurfaceRegistry } from '../scroll/registry.js';
|
|
3
|
+
export const NavigationPaneContext = createContext('stack');
|
|
4
|
+
const EMPTY_LIFECYCLE_CALLBACKS = Object.freeze({});
|
|
5
|
+
export const NavigatorContext = createContext(undefined);
|
|
6
|
+
export const ScreenContext = createContext(undefined);
|
|
7
|
+
// Framework-owned system presentations can scroll without joining an app screen's
|
|
8
|
+
// registry or its restoration snapshot. Bare app content owns a local registry.
|
|
9
|
+
export const SystemScrollRegistryContext = createContext(undefined);
|
|
10
|
+
export function useNavigator() {
|
|
11
|
+
const navigator = useContext(NavigatorContext);
|
|
12
|
+
if (!navigator) {
|
|
13
|
+
throw new Error('useNavigator must be called inside NavigatorHost.');
|
|
14
|
+
}
|
|
15
|
+
return navigator;
|
|
16
|
+
}
|
|
17
|
+
export function useNavigatorState() {
|
|
18
|
+
const navigator = useContext(NavigatorContext);
|
|
19
|
+
if (!navigator) {
|
|
20
|
+
throw new Error('useNavigatorState must be called inside NavigatorHost.');
|
|
21
|
+
}
|
|
22
|
+
return useSyncExternalStore(navigator.subscribe, navigator.getState, navigator.getState);
|
|
23
|
+
}
|
|
24
|
+
export function useParams() {
|
|
25
|
+
const screen = useContext(ScreenContext);
|
|
26
|
+
if (!screen) {
|
|
27
|
+
throw new Error('useParams must be called inside a NavigatorHost screen.');
|
|
28
|
+
}
|
|
29
|
+
return screen.params;
|
|
30
|
+
}
|
|
31
|
+
export function useScreenScrollRegistry() {
|
|
32
|
+
const systemRegistry = useContext(SystemScrollRegistryContext);
|
|
33
|
+
const screen = useContext(ScreenContext);
|
|
34
|
+
const standalone = useRef(null);
|
|
35
|
+
if (systemRegistry)
|
|
36
|
+
return systemRegistry;
|
|
37
|
+
if (screen)
|
|
38
|
+
return screen.scrollRegistry;
|
|
39
|
+
// Onboarding and bare presentation content own their scroll state for this mount.
|
|
40
|
+
// They never join a navigation entry's restoration snapshot.
|
|
41
|
+
if (!standalone.current) {
|
|
42
|
+
standalone.current = createScrollSurfaceRegistry();
|
|
43
|
+
standalone.current.setUncovered(true);
|
|
44
|
+
}
|
|
45
|
+
return standalone.current;
|
|
46
|
+
}
|
|
47
|
+
/** `onAppear` and `onDisappear`: callbacks for a retained navigation entry's visible lifecycle. */
|
|
48
|
+
export function useScreenLifecycle(callbacks = EMPTY_LIFECYCLE_CALLBACKS) {
|
|
49
|
+
const screen = useContext(ScreenContext);
|
|
50
|
+
if (!screen) {
|
|
51
|
+
throw new Error('useScreenLifecycle must be called inside a NavigatorHost screen.');
|
|
52
|
+
}
|
|
53
|
+
const callbacksRef = useRef(callbacks);
|
|
54
|
+
const isAppeared = !screen.lifecycle.isCovered;
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
callbacksRef.current = callbacks;
|
|
57
|
+
}, [callbacks]);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (!isAppeared)
|
|
60
|
+
return;
|
|
61
|
+
callbacksRef.current.appear?.();
|
|
62
|
+
return () => callbacksRef.current.disappear?.();
|
|
63
|
+
}, [isAppeared]);
|
|
64
|
+
return screen.lifecycle;
|
|
65
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Observe the material belonging to one page, independent of stack coverage.
|
|
2
|
+
* `statusEdgeOnly`: the page has no bar row of its own (a hidden bar, or a root under floating
|
|
3
|
+
* iPad tabs), so the edge effect covers only the status bar. */
|
|
4
|
+
export declare function observeNavigationEdge(edge: HTMLElement, scroller: HTMLElement | null, statusEdgeOnly: boolean): () => void;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { observeNativeScroll } from '../scroll/nativeScroll.js';
|
|
2
|
+
import { firstContentTop, pinnedSectionHeader, scrollEdgeStrength, searchHeaderEdge, } from './scrollEdge.js';
|
|
3
|
+
/** Observe the material belonging to one page, independent of stack coverage.
|
|
4
|
+
* `statusEdgeOnly`: the page has no bar row of its own (a hidden bar, or a root under floating
|
|
5
|
+
* iPad tabs), so the edge effect covers only the status bar. */
|
|
6
|
+
export function observeNavigationEdge(edge, scroller, statusEdgeOnly) {
|
|
7
|
+
// Content drawn up against the status band (a hidden bar, or a primary that ignores the top
|
|
8
|
+
// safe area) has no top content inset, and native's edge effect then covers only the status
|
|
9
|
+
// bar, never the bar row (iOS 27 native reference hero-toolbar at offsets 0/150/600). The band already
|
|
10
|
+
// covers that strip here, so the edge material stays off and the band keeps its short seam
|
|
11
|
+
// fade at rest and while scrolled (styles.css).
|
|
12
|
+
const ignoresTop = ['top', 'all'].includes(scroller?.dataset.satinIgnoresSafeArea ?? '');
|
|
13
|
+
const underEdge = Boolean(scroller) && (ignoresTop || statusEdgeOnly);
|
|
14
|
+
let edgeHidden = scroller?.dataset.satinScrollEdgeHidden === 'true';
|
|
15
|
+
const applySeam = () => edge.parentElement?.toggleAttribute('data-satin-edge-seam', underEdge && !edgeHidden);
|
|
16
|
+
applySeam();
|
|
17
|
+
let applied = -1;
|
|
18
|
+
let pinnedHeader;
|
|
19
|
+
let pinnedReach = -1;
|
|
20
|
+
let searchMarker;
|
|
21
|
+
let searchStart = -1;
|
|
22
|
+
const releaseSearch = () => {
|
|
23
|
+
searchMarker?.removeAttribute('data-satin-search-edge-covered');
|
|
24
|
+
searchMarker = undefined;
|
|
25
|
+
searchStart = -1;
|
|
26
|
+
edge.removeAttribute('data-satin-scroll-edge-search');
|
|
27
|
+
edge.style.removeProperty('--satin-scroll-edge-search-start');
|
|
28
|
+
};
|
|
29
|
+
const releasePinnedHeader = () => {
|
|
30
|
+
pinnedHeader?.removeAttribute('data-satin-section-header-pinned');
|
|
31
|
+
pinnedHeader = undefined;
|
|
32
|
+
};
|
|
33
|
+
const update = (snapshot) => {
|
|
34
|
+
const rect = (element) => snapshot?.rect(element) ?? element.getBoundingClientRect();
|
|
35
|
+
const live = Boolean(scroller) && !edgeHidden && !underEdge;
|
|
36
|
+
const search = live && scroller ? searchHeaderEdge(scroller, snapshot?.top, rect) : undefined;
|
|
37
|
+
if (searchMarker !== search?.marker) {
|
|
38
|
+
releaseSearch();
|
|
39
|
+
searchMarker = search?.marker;
|
|
40
|
+
searchMarker?.setAttribute('data-satin-search-edge-covered', '');
|
|
41
|
+
}
|
|
42
|
+
if (search && edge.parentElement) {
|
|
43
|
+
const start = search.top - rect(edge.parentElement).top;
|
|
44
|
+
if (start !== searchStart) {
|
|
45
|
+
searchStart = start;
|
|
46
|
+
edge.style.setProperty('--satin-scroll-edge-search-start', `${start}px`);
|
|
47
|
+
edge.setAttribute('data-satin-scroll-edge-search', '');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// A hidden pane has no edge geometry to update.
|
|
51
|
+
if (edge.getClientRects().length === 0)
|
|
52
|
+
return;
|
|
53
|
+
// A pinned plain-list header carries the edge material through itself (styles.css).
|
|
54
|
+
const pinned = live && scroller ? pinnedSectionHeader(scroller, rect) : undefined;
|
|
55
|
+
if (pinned?.header !== pinnedHeader) {
|
|
56
|
+
releasePinnedHeader();
|
|
57
|
+
pinnedHeader = pinned?.header;
|
|
58
|
+
pinnedHeader?.setAttribute('data-satin-section-header-pinned', 'true');
|
|
59
|
+
pinnedReach = -1;
|
|
60
|
+
}
|
|
61
|
+
if (pinned && pinned.reach !== pinnedReach) {
|
|
62
|
+
pinnedReach = pinned.reach;
|
|
63
|
+
pinned.header.style.setProperty('--satin-pinned-header-reach', `${pinned.reach}px`);
|
|
64
|
+
}
|
|
65
|
+
const strength = !live || !scroller || pinned
|
|
66
|
+
? 0
|
|
67
|
+
: (search?.strength ??
|
|
68
|
+
scrollEdgeStrength(rect(edge).bottom, firstContentTop(scroller, snapshot?.top, rect)));
|
|
69
|
+
if (strength === applied)
|
|
70
|
+
return;
|
|
71
|
+
applied = strength;
|
|
72
|
+
edge.style.opacity = strength > 0 && strength < 1 ? String(strength) : '';
|
|
73
|
+
edge.setAttribute('data-satin-scroll-edge-visible', strength > 0 ? 'true' : 'false');
|
|
74
|
+
};
|
|
75
|
+
update();
|
|
76
|
+
if (!scroller)
|
|
77
|
+
return releasePinnedHeader;
|
|
78
|
+
const releaseScroll = observeNativeScroll(scroller, update);
|
|
79
|
+
// Policy changes are rare; keep their reads and seam writes off the scroll path.
|
|
80
|
+
const policy = new MutationObserver(() => {
|
|
81
|
+
const hidden = scroller.dataset.satinScrollEdgeHidden === 'true';
|
|
82
|
+
edgeHidden = hidden;
|
|
83
|
+
applySeam();
|
|
84
|
+
update();
|
|
85
|
+
});
|
|
86
|
+
policy.observe(scroller, {
|
|
87
|
+
attributes: true,
|
|
88
|
+
attributeFilter: ['data-satin-scroll-edge-hidden', 'data-satin-search-presented'],
|
|
89
|
+
});
|
|
90
|
+
const resize = new ResizeObserver(() => update());
|
|
91
|
+
resize.observe(scroller);
|
|
92
|
+
if (scroller.firstElementChild)
|
|
93
|
+
resize.observe(scroller.firstElementChild);
|
|
94
|
+
return () => {
|
|
95
|
+
releaseScroll();
|
|
96
|
+
resize.disconnect();
|
|
97
|
+
policy.disconnect();
|
|
98
|
+
releasePinnedHeader();
|
|
99
|
+
releaseSearch();
|
|
100
|
+
};
|
|
101
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PointerEvent as ReactPointerEvent, RefObject } from 'react';
|
|
2
|
+
import type { AxisLayoutClass } from '../layout/layoutClass.js';
|
|
3
|
+
import { type InteractivePopGesture } from './interactivePop.js';
|
|
4
|
+
import { type EarlyTouchArbitration, type InteractivePopDiagnostic, type InteractiveTransitionController, type NavigatorHostGeometry, type ScrubDiagnosticState } from './interactivePopTypes.js';
|
|
5
|
+
import type { ScreenRegistry } from './registry.js';
|
|
6
|
+
import type { InteractiveScrubFrameLoop } from './scrubFrameLoop.js';
|
|
7
|
+
import { type NavigatorStore } from './store.js';
|
|
8
|
+
/** What the navigator host's pointer handlers read; recreated with the host on every render. */
|
|
9
|
+
export type PointerPopContext = {
|
|
10
|
+
navigator: NavigatorStore<ScreenRegistry>;
|
|
11
|
+
tabActive: boolean;
|
|
12
|
+
nativeNavigation: boolean;
|
|
13
|
+
split: boolean;
|
|
14
|
+
horizontal: AxisLayoutClass;
|
|
15
|
+
appliedHorizontal: AxisLayoutClass;
|
|
16
|
+
onInteractivePopDiagnostic: ((diagnostic: InteractivePopDiagnostic) => void) | undefined;
|
|
17
|
+
startScrubFrameLoop: (controller: InteractiveTransitionController, diagnosticState: ScrubDiagnosticState) => InteractiveScrubFrameLoop;
|
|
18
|
+
hostGeometryRef: RefObject<NavigatorHostGeometry | undefined>;
|
|
19
|
+
earlyTouchArbitrationRef: RefObject<EarlyTouchArbitration | undefined>;
|
|
20
|
+
scrubFrameLoopRef: RefObject<InteractiveScrubFrameLoop | undefined>;
|
|
21
|
+
scrubDiagnosticStateRef: RefObject<ScrubDiagnosticState | undefined>;
|
|
22
|
+
gestureRef: RefObject<InteractivePopGesture | undefined>;
|
|
23
|
+
interactiveControllerRef: RefObject<InteractiveTransitionController | undefined>;
|
|
24
|
+
};
|
|
25
|
+
/** The host's pointer handlers for the back gesture. */
|
|
26
|
+
export declare function createPointerPopHandlers(context: PointerPopContext): {
|
|
27
|
+
onLostPointerCapture: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
28
|
+
onPointerCancel: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
29
|
+
onPointerDown: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
30
|
+
onPointerMove: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
31
|
+
onPointerUp: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
32
|
+
};
|