@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,87 @@
|
|
|
1
|
+
import { createGestureArena, deferGesture, failGesture, recognizeGesture, } from '../gestures/arena.js';
|
|
2
|
+
import { interactivePopRecognizer, nativeScrollRecognizer, pressRecognizer, } from '../gestures/existingCompetitors.js';
|
|
3
|
+
import { horizontalDragBlocksBack } from '../navigation/horizontalDrag.js';
|
|
4
|
+
/** The generic arena receives calibration from the interaction owner. */
|
|
5
|
+
export function createRowArena(bounds, options) {
|
|
6
|
+
const { calibration: c } = options;
|
|
7
|
+
return createGestureArena({
|
|
8
|
+
bounds,
|
|
9
|
+
recognizers: [
|
|
10
|
+
{
|
|
11
|
+
...interactivePopRecognizer,
|
|
12
|
+
evaluate: context => options.canPop
|
|
13
|
+
? interactivePopRecognizer.evaluate(context)
|
|
14
|
+
: failGesture('no-pop-target'),
|
|
15
|
+
},
|
|
16
|
+
nativeScrollRecognizer,
|
|
17
|
+
{
|
|
18
|
+
...pressRecognizer,
|
|
19
|
+
evaluate: context => Math.hypot(context.deltaX, context.deltaY) > c.holdSlop
|
|
20
|
+
? failGesture('moved')
|
|
21
|
+
: pressRecognizer.evaluate(context),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'row-swipe',
|
|
25
|
+
axis: 'horizontal',
|
|
26
|
+
priority: 50,
|
|
27
|
+
region: { kind: 'all' },
|
|
28
|
+
hysteresis: { claimDistance: c.claimDistance },
|
|
29
|
+
requiresFailureOf: ['interactive-pop'],
|
|
30
|
+
evaluate: context => {
|
|
31
|
+
if (context.sample.phase === 'end')
|
|
32
|
+
return failGesture('released');
|
|
33
|
+
if (Math.max(Math.abs(context.deltaX), Math.abs(context.deltaY)) < c.claimDistance)
|
|
34
|
+
return deferGesture();
|
|
35
|
+
if (Math.abs(context.deltaY) >= Math.abs(context.deltaX))
|
|
36
|
+
return failGesture('vertical-intent');
|
|
37
|
+
return (context.deltaX > 0 ? options.leading : options.trailing)
|
|
38
|
+
? recognizeGesture('horizontal-row-action')
|
|
39
|
+
: failGesture('no-actions');
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: 'context-hold',
|
|
44
|
+
axis: 'any',
|
|
45
|
+
priority: 60,
|
|
46
|
+
region: { kind: 'all' },
|
|
47
|
+
hysteresis: { retentionDistance: c.holdSlop },
|
|
48
|
+
evaluate: context => {
|
|
49
|
+
if (!options.context ||
|
|
50
|
+
context.sample.phase === 'end' ||
|
|
51
|
+
Math.hypot(context.deltaX, context.deltaY) > c.holdSlop)
|
|
52
|
+
return failGesture('hold-canceled');
|
|
53
|
+
return context.elapsed >= c.holdMilliseconds
|
|
54
|
+
? recognizeGesture('hold-elapsed')
|
|
55
|
+
: deferGesture();
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
const navigationOwners = new WeakMap();
|
|
62
|
+
export function registerRowNavigationOwner(host, canPop) {
|
|
63
|
+
navigationOwners.set(host, canPop);
|
|
64
|
+
return () => {
|
|
65
|
+
navigationOwners.delete(host);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export function rowCanPop(target, clientX) {
|
|
69
|
+
const host = target.closest('[data-satin-navigator-host]');
|
|
70
|
+
return host
|
|
71
|
+
? !horizontalDragBlocksBack(target, clientX) && (navigationOwners.get(host)?.(target) ?? false)
|
|
72
|
+
: false;
|
|
73
|
+
}
|
|
74
|
+
/** Set before contact: native horizontal scrolling cannot be enabled after down. */
|
|
75
|
+
export function rowSwipeTouchAction(nativeDriver, canPop, directionalPanning = true) {
|
|
76
|
+
return nativeDriver && canPop && directionalPanning ? 'pan-y pan-right pinch-zoom' : 'pan-y';
|
|
77
|
+
}
|
|
78
|
+
/** Sample the committed target policy at contact, not after direction lock. */
|
|
79
|
+
export function rowBlocksNativeBack(target) {
|
|
80
|
+
const row = target?.closest('[data-satin-row-swipe="true"]');
|
|
81
|
+
if (!row)
|
|
82
|
+
return false;
|
|
83
|
+
const policy = getComputedStyle(row).touchAction || 'auto';
|
|
84
|
+
return (!['auto', 'manipulation'].includes(policy) &&
|
|
85
|
+
!policy.includes('pan-x') &&
|
|
86
|
+
!policy.includes('pan-right'));
|
|
87
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type SwipeActions } from './types.js';
|
|
2
|
+
export declare const swipeGeometry: {
|
|
3
|
+
readonly buttonWidth: 60;
|
|
4
|
+
readonly gap: 10;
|
|
5
|
+
readonly padding: 10;
|
|
6
|
+
readonly capsuleHeight: 44;
|
|
7
|
+
};
|
|
8
|
+
export declare const swipeOpenWidth: (count: number, buttonWidth?: number) => number;
|
|
9
|
+
export type SwipeWidths = {
|
|
10
|
+
leading: number;
|
|
11
|
+
trailing: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function swipeWidths(host: HTMLElement): SwipeWidths;
|
|
14
|
+
export declare function fullSwipeThreshold(width: number, count: number, side?: 'leading' | 'trailing', buttonWidth?: number, inline?: boolean): number;
|
|
15
|
+
export declare const swipeDragLimit: (width: number, count: number, buttonWidth?: number) => number;
|
|
16
|
+
/** Spatial fit of native's sequential capsule reveal. Rest interpolates the
|
|
17
|
+
* contact pose into the fully revealed spring target; it is never a DOM writer. */
|
|
18
|
+
export declare function swipeActionPose(position: number, index: number, count: number, takeover?: number, rest?: number, buttonWidth?: number, inline?: boolean, allowsFullSwipe?: boolean): {
|
|
19
|
+
scale: number;
|
|
20
|
+
spread: number;
|
|
21
|
+
opacity: number;
|
|
22
|
+
growth: number;
|
|
23
|
+
};
|
|
24
|
+
export declare function swipeActionTracks(primary: HTMLElement, count: number, width: number, allowsFullSwipe: boolean): {
|
|
25
|
+
element: HTMLElement;
|
|
26
|
+
frame(position: number, raw?: number, rest?: number, temporalTakeover?: number): Keyframe;
|
|
27
|
+
}[];
|
|
28
|
+
/** Native scroll offset is authoritative; resistance maps it to the presented row position. */
|
|
29
|
+
export declare function rowSwipePosition(raw: number, width: number, configuration?: SwipeActions, widths?: SwipeWidths): number;
|
|
30
|
+
/** A revealed row closes after a deliberate reverse drag, without requiring
|
|
31
|
+
* the finger to traverse the entire tray. */
|
|
32
|
+
export declare function rowSwipeShouldClose(initial: number, position: number, drag: number): boolean;
|
|
33
|
+
/** Invert resistance once when a new finger catches a spring. */
|
|
34
|
+
export declare function rowSwipeRaw(position: number, width: number, configuration?: SwipeActions, widths?: SwipeWidths): number;
|
|
35
|
+
export declare function primaryParts(primary: HTMLElement): HTMLElement[];
|
|
36
|
+
export declare function primaryTransform(part: HTMLElement, growth: number, middleWidth?: number): string;
|
|
37
|
+
/** Recover takeover from the presented capsule, including a caught settle. */
|
|
38
|
+
export declare function presentedTakeover(primary: HTMLElement, position: number): number;
|
|
39
|
+
export declare function createRowScrub(host: HTMLElement, source: HTMLElement, content: HTMLElement, initial: number, width: number, configuration?: SwipeActions): {
|
|
40
|
+
flush: (now?: number) => {
|
|
41
|
+
raw: number;
|
|
42
|
+
position: number;
|
|
43
|
+
};
|
|
44
|
+
rawPosition: () => number;
|
|
45
|
+
position: () => number;
|
|
46
|
+
cancel: () => void;
|
|
47
|
+
} | undefined;
|
|
48
|
+
/** Called by the row's existing ResizeObserver, never by its frame loop. */
|
|
49
|
+
export declare function updateRowCorners(content: HTMLElement, width: number, height: number, actions?: SwipeActions): void;
|
|
50
|
+
/** Rebuild only geometry keyframes on resize. The existing animation keeps its
|
|
51
|
+
* timeline, velocity fit and current time, including an interrupted release. */
|
|
52
|
+
export declare function resizeRowCornerAnimation(content: HTMLElement, animation: Animation, frames: () => Keyframe[]): void;
|
|
53
|
+
/** Keep section end caps until the first inline action has entered. The
|
|
54
|
+
* revealed face has a fixed continuous corner, independent of text height. */
|
|
55
|
+
export declare function swipeContentTrack(content: HTMLElement): (position: number, rest?: number) => {
|
|
56
|
+
transform: string;
|
|
57
|
+
borderRadius: string;
|
|
58
|
+
clipPath: string;
|
|
59
|
+
};
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import { cornerClipPath, roundedCornerPath } from '../shapes/corners.js';
|
|
2
|
+
import { takeoverSample } from './swipeSpring.js';
|
|
3
|
+
import { swipeEdge } from './types.js';
|
|
4
|
+
// iOS 27 matched phone reference, light/dark, 1/2/3 actions, both edges:
|
|
5
|
+
// color-mask width 60pt, gap 10pt, outer padding 10pt. Capsule 44pt layout / 42-43pt solid mask.
|
|
6
|
+
export const swipeGeometry = { buttonWidth: 60, gap: 10, padding: 10, capsuleHeight: 44 };
|
|
7
|
+
export const swipeOpenWidth = (count, buttonWidth = swipeGeometry.buttonWidth) => count * (buttonWidth + swipeGeometry.gap) + swipeGeometry.padding;
|
|
8
|
+
export function swipeWidths(host) {
|
|
9
|
+
const width = (side) => {
|
|
10
|
+
const tray = host.querySelector(`[data-satin-swipe-tray="${side}"]`);
|
|
11
|
+
return Number.parseFloat(tray?.style.getPropertyValue('--satin-swipe-button-width') ?? '') || 60;
|
|
12
|
+
};
|
|
13
|
+
return { leading: width('leading'), trailing: width('trailing') };
|
|
14
|
+
}
|
|
15
|
+
const defaultWidths = { leading: 60, trailing: 60 };
|
|
16
|
+
// reference native UIKit pan receipts, 400pt / 52pt rows. Recognition consumes
|
|
17
|
+
// some initial finger travel, especially in fast strokes: the scroll source
|
|
18
|
+
// supplies recognized translation, not total finger displacement.
|
|
19
|
+
// Normal cancel/commit brackets: trailing 195..220pt; leading two 205..230pt,
|
|
20
|
+
// leading three 300..325pt. Flick-only projection is not isolated by these
|
|
21
|
+
// bounds and must not be invented from the commanded input duration.
|
|
22
|
+
export function fullSwipeThreshold(width, count, side = 'trailing', buttonWidth = 84, inline = true) {
|
|
23
|
+
// Tall two-action leading rows cancel at 205pt and commit at 210pt,
|
|
24
|
+
// from slow drags through 1394pt/s flicks. Keep other tall-row fits separate.
|
|
25
|
+
if (!inline) {
|
|
26
|
+
const threshold = side === 'leading' && count === 2 ? 207.5 : count === 1 ? 240 : count === 2 ? 232.5 : 265;
|
|
27
|
+
return (width / 400) * threshold;
|
|
28
|
+
}
|
|
29
|
+
const threshold = width * (207.5 / 400);
|
|
30
|
+
return side === 'leading'
|
|
31
|
+
? Math.max(threshold, swipeOpenWidth(count, buttonWidth) + 20)
|
|
32
|
+
: threshold;
|
|
33
|
+
}
|
|
34
|
+
export const swipeDragLimit = (width, count, buttonWidth = 60) => Math.max(width / 2, swipeOpenWidth(count, buttonWidth) + 20);
|
|
35
|
+
const clamp = (value) => Math.max(0, Math.min(1, value));
|
|
36
|
+
// Tall stock List rows reveal a 50pt button over 40..70pt of recognized travel.
|
|
37
|
+
// Held-input probes at 40, 60 and 80pt produce scale/alpha 0, 2/3 and 1.
|
|
38
|
+
function revealScale(distance) {
|
|
39
|
+
return clamp((distance - 40) / 30);
|
|
40
|
+
}
|
|
41
|
+
// iOS 27 short-row captures, both appearances and edges, every third frame.
|
|
42
|
+
// The 84pt Read pill grows over 50..114pt; the 96pt Archive pill over 52..124pt.
|
|
43
|
+
// Opacity is measured independently of the colored mask height.
|
|
44
|
+
const inlineOpacitySamples = [
|
|
45
|
+
[0, 0],
|
|
46
|
+
[0.15, 0.08],
|
|
47
|
+
[0.3, 0.43],
|
|
48
|
+
[0.55, 0.69],
|
|
49
|
+
[0.8, 0.93],
|
|
50
|
+
[1, 1],
|
|
51
|
+
];
|
|
52
|
+
function inlineEntrance(distance, buttonWidth) {
|
|
53
|
+
const widthDelta = buttonWidth - 84;
|
|
54
|
+
const scale = clamp((distance - 50 - widthDelta / 6) / (64 + (widthDelta * 2) / 3));
|
|
55
|
+
let opacity = 1;
|
|
56
|
+
for (let index = 1; index < inlineOpacitySamples.length; index++) {
|
|
57
|
+
const [end, to] = inlineOpacitySamples[index];
|
|
58
|
+
const [start, from] = inlineOpacitySamples[index - 1];
|
|
59
|
+
if (scale <= end) {
|
|
60
|
+
opacity = from + (to - from) * clamp((scale - start) / (end - start));
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return { scale, opacity };
|
|
65
|
+
}
|
|
66
|
+
/** Spatial fit of native's sequential capsule reveal. Rest interpolates the
|
|
67
|
+
* contact pose into the fully revealed spring target; it is never a DOM writer. */
|
|
68
|
+
export function swipeActionPose(position, index, count, takeover = 0, rest = 0, buttonWidth = 60, inline = false, allowsFullSwipe = false) {
|
|
69
|
+
const distance = Math.abs(position);
|
|
70
|
+
const open = swipeOpenWidth(count, buttonWidth);
|
|
71
|
+
const excess = Math.max(0, distance - open);
|
|
72
|
+
const localDistance = distance - index * (buttonWidth + 10);
|
|
73
|
+
// reference paired third-pill mask: native 37pt, prior fit 35pt at full reveal.
|
|
74
|
+
// Apply its measured 3pt reveal lead progressively, preserving first-pill
|
|
75
|
+
// entrance samples and the zero-width pose before this action enters.
|
|
76
|
+
const revealLead = inline && index === 2 ? 3 * clamp((localDistance - 50) / 50) : 0;
|
|
77
|
+
const entrance = inline ? inlineEntrance(localDistance + revealLead, buttonWidth) : undefined;
|
|
78
|
+
const contactScale = entrance?.scale ?? revealScale(localDistance);
|
|
79
|
+
const reveal = contactScale + (clamp(distance / open) - contactScale) * rest;
|
|
80
|
+
const spread = (((index + 0.5) * excess) / (count + 0.5)) * (1 - takeover);
|
|
81
|
+
return {
|
|
82
|
+
scale: reveal,
|
|
83
|
+
spread,
|
|
84
|
+
opacity: ((entrance?.opacity ?? contactScale) + (1 - (entrance?.opacity ?? contactScale)) * rest) *
|
|
85
|
+
(index === 0 ? 1 : 1 - takeover),
|
|
86
|
+
growth: index === 0
|
|
87
|
+
? (inline && allowsFullSwipe ? excess * (1 - takeover) : 0) +
|
|
88
|
+
takeover * Math.max(0, distance - buttonWidth - 20)
|
|
89
|
+
: 0,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function capsuleHeight(primary) {
|
|
93
|
+
return primary.closest('[data-satin-row-actions]')?.dataset.satinSwipeLabelLayout ===
|
|
94
|
+
'below'
|
|
95
|
+
? 50
|
|
96
|
+
: 44;
|
|
97
|
+
}
|
|
98
|
+
export function swipeActionTracks(primary, count, width, allowsFullSwipe) {
|
|
99
|
+
const buttons = primary.parentElement?.matches('[data-satin-swipe-tray]')
|
|
100
|
+
? [...primary.parentElement.querySelectorAll('[data-satin-swipe-action]')]
|
|
101
|
+
: [primary];
|
|
102
|
+
const trailing = primary.parentElement?.dataset.satinSwipeTray === 'trailing';
|
|
103
|
+
const inline = primary.closest('[data-satin-row-actions]')?.dataset.satinSwipeLabelLayout ===
|
|
104
|
+
'inline';
|
|
105
|
+
return buttons.flatMap((button, index) => {
|
|
106
|
+
const buttonWidth = Number.parseFloat(getComputedStyle(button).width) || 60;
|
|
107
|
+
const middleWidth = Math.max(1, buttonWidth - capsuleHeight(primary));
|
|
108
|
+
const pose = (position, raw = position, rest = 0, temporalTakeover) => {
|
|
109
|
+
// The short two-action reference starts primary takeover at the open tray:
|
|
110
|
+
// 198pt leading / 222pt trailing. Taller rows retain their earlier fit.
|
|
111
|
+
const start = inline && count === 2
|
|
112
|
+
? swipeOpenWidth(count, buttonWidth)
|
|
113
|
+
: swipeDragLimit(width, count, buttonWidth) - 8;
|
|
114
|
+
const progress = clamp((Math.abs(position) - start) / (count === 2 ? 26 : 14));
|
|
115
|
+
const takeover = temporalTakeover ??
|
|
116
|
+
(!allowsFullSwipe
|
|
117
|
+
? 0
|
|
118
|
+
: count === 1 || raw === Infinity
|
|
119
|
+
? 1
|
|
120
|
+
: progress * progress * (3 - 2 * progress));
|
|
121
|
+
return swipeActionPose(position, index, count, raw === Infinity ? takeover : takeover * (1 - rest), rest, buttonWidth, inline, allowsFullSwipe);
|
|
122
|
+
};
|
|
123
|
+
return [
|
|
124
|
+
{
|
|
125
|
+
element: button,
|
|
126
|
+
frame(position, raw = position, rest = 0, temporalTakeover) {
|
|
127
|
+
const value = pose(position, raw, rest, temporalTakeover);
|
|
128
|
+
return {
|
|
129
|
+
transform: `translate3d(${(trailing ? -1 : 1) * value.spread}px,0,0) scale(${value.scale})`,
|
|
130
|
+
opacity: value.opacity,
|
|
131
|
+
};
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
...primaryParts(button).map(part => ({
|
|
135
|
+
element: part,
|
|
136
|
+
frame(position, raw = position, rest = 0, temporalTakeover) {
|
|
137
|
+
return {
|
|
138
|
+
transform: primaryTransform(part, pose(position, raw, rest, temporalTakeover).growth, middleWidth),
|
|
139
|
+
};
|
|
140
|
+
},
|
|
141
|
+
})),
|
|
142
|
+
];
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/** Native scroll offset is authoritative; resistance maps it to the presented row position. */
|
|
146
|
+
export function rowSwipePosition(raw, width, configuration, widths = defaultWidths) {
|
|
147
|
+
const side = raw >= 0 ? 'leading' : 'trailing';
|
|
148
|
+
const edge = swipeEdge(configuration, side);
|
|
149
|
+
if (!edge.actions.length)
|
|
150
|
+
return 0;
|
|
151
|
+
const limit = edge.allowsFullSwipe
|
|
152
|
+
? swipeDragLimit(width, edge.actions.length, widths[side])
|
|
153
|
+
: swipeOpenWidth(edge.actions.length, widths[side]);
|
|
154
|
+
const excess = Math.max(0, Math.abs(raw) - limit);
|
|
155
|
+
const resistance = edge.allowsFullSwipe && edge.actions.length <= 2 ? 0.25 : 0.2;
|
|
156
|
+
return (Math.sign(raw) *
|
|
157
|
+
(Math.min(Math.abs(raw), limit) + (resistance * excess) / (1 + (resistance * excess) / width)));
|
|
158
|
+
}
|
|
159
|
+
/** Native iPhone HID brackets a reverse drag on a revealed row between 20pt
|
|
160
|
+
* (reopens) and 40pt (closes), slow and as a 150ms flick. Close at the midpoint:
|
|
161
|
+
* a commanded 40pt contact reaches WebKit as 39.5pt. */
|
|
162
|
+
const reverseCloseDistance = 30;
|
|
163
|
+
/** A revealed row closes after a deliberate reverse drag, without requiring
|
|
164
|
+
* the finger to traverse the entire tray. */
|
|
165
|
+
export function rowSwipeShouldClose(initial, position, drag) {
|
|
166
|
+
return (Math.abs(position) < 40 ||
|
|
167
|
+
(Math.sign(initial) === Math.sign(position) &&
|
|
168
|
+
Math.sign(drag) === -Math.sign(initial) &&
|
|
169
|
+
Math.abs(drag) >= reverseCloseDistance));
|
|
170
|
+
}
|
|
171
|
+
/** Invert resistance once when a new finger catches a spring. */
|
|
172
|
+
export function rowSwipeRaw(position, width, configuration, widths = defaultWidths) {
|
|
173
|
+
const side = position >= 0 ? 'leading' : 'trailing';
|
|
174
|
+
const edge = swipeEdge(configuration, side);
|
|
175
|
+
const limit = edge.allowsFullSwipe
|
|
176
|
+
? swipeDragLimit(width, edge.actions.length, widths[side])
|
|
177
|
+
: swipeOpenWidth(edge.actions.length, widths[side]);
|
|
178
|
+
const excess = Math.max(0, Math.abs(position) - limit);
|
|
179
|
+
const resistance = edge.allowsFullSwipe && edge.actions.length <= 2 ? 0.25 : 0.2;
|
|
180
|
+
return (Math.sign(position) *
|
|
181
|
+
(Math.min(Math.abs(position), limit) +
|
|
182
|
+
excess / (resistance * Math.max(0.01, 1 - excess / width))));
|
|
183
|
+
}
|
|
184
|
+
export function primaryParts(primary) {
|
|
185
|
+
return [
|
|
186
|
+
...primary.querySelectorAll('[data-satin-swipe-fill], [data-satin-swipe-label]'),
|
|
187
|
+
];
|
|
188
|
+
}
|
|
189
|
+
export function primaryTransform(part, growth, middleWidth = 16) {
|
|
190
|
+
const trailing = part.dataset.satinSwipeDirection === 'trailing';
|
|
191
|
+
switch (part.dataset.satinSwipeFill) {
|
|
192
|
+
case 'middle':
|
|
193
|
+
return `scaleX(${1 + growth / middleWidth})`;
|
|
194
|
+
case 'end':
|
|
195
|
+
return `translate3d(${trailing ? 0 : growth}px,0,0)`;
|
|
196
|
+
case 'start':
|
|
197
|
+
return `translate3d(${trailing ? -growth : 0}px,0,0)`;
|
|
198
|
+
default:
|
|
199
|
+
return `translate3d(${(trailing ? -growth : growth) / 2}px,0,0)`;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/** Recover takeover from the presented capsule, including a caught settle. */
|
|
203
|
+
export function presentedTakeover(primary, position) {
|
|
204
|
+
const middle = primary.querySelector('[data-satin-swipe-fill="middle"]');
|
|
205
|
+
if (!middle || typeof DOMMatrixReadOnly === 'undefined')
|
|
206
|
+
return 0;
|
|
207
|
+
const buttonWidth = Number.parseFloat(getComputedStyle(primary).width) || 60;
|
|
208
|
+
const count = primary.parentElement?.children.length ?? 1;
|
|
209
|
+
const inline = primary.closest('[data-satin-row-actions]')?.dataset.satinSwipeLabelLayout ===
|
|
210
|
+
'inline';
|
|
211
|
+
const ordinary = inline ? Math.max(0, Math.abs(position) - swipeOpenWidth(count, buttonWidth)) : 0;
|
|
212
|
+
const expanded = Math.max(0, Math.abs(position) - buttonWidth - 20);
|
|
213
|
+
if (expanded <= ordinary)
|
|
214
|
+
return 0;
|
|
215
|
+
const matrix = new DOMMatrixReadOnly(getComputedStyle(middle).transform);
|
|
216
|
+
const growth = (matrix.a - 1) * Math.max(1, buttonWidth - capsuleHeight(primary));
|
|
217
|
+
return clamp((growth - ordinary) / (expanded - ordinary));
|
|
218
|
+
}
|
|
219
|
+
export function createRowScrub(host, source, content, initial, width, configuration) {
|
|
220
|
+
if (!width || source.scrollWidth <= source.clientWidth)
|
|
221
|
+
return undefined;
|
|
222
|
+
const widths = swipeWidths(host);
|
|
223
|
+
const initialRaw = rowSwipeRaw(initial, width, configuration, widths);
|
|
224
|
+
const origin = source.scrollLeft;
|
|
225
|
+
const actionUpdates = [];
|
|
226
|
+
const contentFrame = swipeContentTrack(content);
|
|
227
|
+
for (const side of ['leading', 'trailing']) {
|
|
228
|
+
const tray = host.querySelector(`[data-satin-swipe-tray="${side}"]`);
|
|
229
|
+
const primary = tray.firstElementChild;
|
|
230
|
+
const sign = side === 'leading' ? 1 : -1;
|
|
231
|
+
actionUpdates.push((_now, _raw, position) => {
|
|
232
|
+
tray.style.opacity = position * sign > 0 ? '1' : '0';
|
|
233
|
+
});
|
|
234
|
+
if (primary) {
|
|
235
|
+
const edge = swipeEdge(configuration, side);
|
|
236
|
+
const actions = swipeActionTracks(primary, edge.actions.length, width, edge.allowsFullSwipe);
|
|
237
|
+
const reducedMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;
|
|
238
|
+
const caught = initial ? presentedTakeover(primary, initial) : 0;
|
|
239
|
+
const state = { from: caught, target: caught, velocity: 0, started: performance.now() };
|
|
240
|
+
const threshold = fullSwipeThreshold(width, edge.actions.length, side, widths[side], host.dataset.satinSwipeLabelLayout === 'inline');
|
|
241
|
+
const openWidth = swipeOpenWidth(edge.actions.length, widths[side]);
|
|
242
|
+
let previousRaw = Number.NaN;
|
|
243
|
+
let previousTakeover = Number.NaN;
|
|
244
|
+
const update = (now, raw, position) => {
|
|
245
|
+
const sample = takeoverSample(state.from, state.target, state.velocity, (now - state.started) / 1000);
|
|
246
|
+
const target = edge.allowsFullSwipe && raw * sign >= threshold ? 1 : 0;
|
|
247
|
+
if (target !== state.target) {
|
|
248
|
+
state.from = sample.position;
|
|
249
|
+
state.velocity = sample.velocity;
|
|
250
|
+
state.target = target;
|
|
251
|
+
state.started = now;
|
|
252
|
+
}
|
|
253
|
+
// Both spring states advance across reversals, but the hidden tray has
|
|
254
|
+
// no pixels to update. Read the scroll source before either tray writes.
|
|
255
|
+
if (position * sign <= 0)
|
|
256
|
+
return;
|
|
257
|
+
const takeover = edge.actions.length === 1 && edge.allowsFullSwipe
|
|
258
|
+
? 1
|
|
259
|
+
: reducedMotion
|
|
260
|
+
? target
|
|
261
|
+
: Math.max(0, Math.min(1, sample.position));
|
|
262
|
+
if (raw === previousRaw && takeover === previousTakeover)
|
|
263
|
+
return;
|
|
264
|
+
previousRaw = raw;
|
|
265
|
+
previousTakeover = takeover;
|
|
266
|
+
const rest = initial ? clamp(1 - Math.abs(raw - initialRaw) / openWidth) : 0;
|
|
267
|
+
for (const action of actions) {
|
|
268
|
+
const frame = action.frame(position, raw, rest, takeover);
|
|
269
|
+
// Avoid dirtying style when a capsule part did not change this frame.
|
|
270
|
+
if (frame.transform !== undefined && action.element.style.transform !== frame.transform)
|
|
271
|
+
action.element.style.transform = String(frame.transform);
|
|
272
|
+
if (frame.opacity !== undefined && action.element.style.opacity !== String(frame.opacity))
|
|
273
|
+
action.element.style.opacity = String(frame.opacity);
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
actionUpdates.push(update);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// WebKit owns touch arbitration and the scroll offset. Sample it once per
|
|
280
|
+
// frame and present the row, trays, and fitted takeover together. Mixing a
|
|
281
|
+
// compositor row with main-thread pills exposes every delayed main-thread frame.
|
|
282
|
+
let actionFrame = 0;
|
|
283
|
+
const flush = (now = performance.now()) => {
|
|
284
|
+
const raw = initialRaw + origin - source.scrollLeft;
|
|
285
|
+
const position = rowSwipePosition(raw, width, configuration, widths);
|
|
286
|
+
Object.assign(content.style, contentFrame(position, initial ? 1 : 0));
|
|
287
|
+
for (const update of actionUpdates)
|
|
288
|
+
update(now, raw, position);
|
|
289
|
+
return { raw, position };
|
|
290
|
+
};
|
|
291
|
+
const paintActions = (now) => {
|
|
292
|
+
flush(now);
|
|
293
|
+
actionFrame = requestAnimationFrame(paintActions);
|
|
294
|
+
};
|
|
295
|
+
paintActions(performance.now());
|
|
296
|
+
return {
|
|
297
|
+
flush,
|
|
298
|
+
rawPosition: () => initialRaw + origin - source.scrollLeft,
|
|
299
|
+
position: () => rowSwipePosition(initialRaw + origin - source.scrollLeft, width, configuration, widths),
|
|
300
|
+
cancel: () => {
|
|
301
|
+
cancelAnimationFrame(actionFrame);
|
|
302
|
+
// Outside contact, the settled side's visibility belongs to the row CSS.
|
|
303
|
+
host.querySelectorAll('[data-satin-swipe-tray]').forEach(tray => {
|
|
304
|
+
tray.style.opacity = '';
|
|
305
|
+
});
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
const defaultRowRadius = 26;
|
|
310
|
+
const defaultRowShape = {
|
|
311
|
+
kind: 'roundedRectangle',
|
|
312
|
+
cornerRadius: defaultRowRadius,
|
|
313
|
+
cornerStyle: 'continuous',
|
|
314
|
+
};
|
|
315
|
+
const rowCorners = new WeakMap();
|
|
316
|
+
/** Called by the row's existing ResizeObserver, never by its frame loop. */
|
|
317
|
+
export function updateRowCorners(content, width, height, actions) {
|
|
318
|
+
const geometry = rowCorners.get(content) ?? { width, height };
|
|
319
|
+
Object.assign(geometry, {
|
|
320
|
+
width,
|
|
321
|
+
height,
|
|
322
|
+
revision: (geometry.revision ?? 0) + 1,
|
|
323
|
+
leading: swipeEdge(actions, 'leading').shape,
|
|
324
|
+
trailing: swipeEdge(actions, 'trailing').shape,
|
|
325
|
+
});
|
|
326
|
+
rowCorners.set(content, geometry);
|
|
327
|
+
for (const side of ['leading', 'trailing']) {
|
|
328
|
+
content.style.setProperty(`--satin-row-${side}-clip`, cornerClipPath(geometry[side] ?? defaultRowShape, width, height));
|
|
329
|
+
}
|
|
330
|
+
geometry.refresh?.();
|
|
331
|
+
geometry.resizeRelease?.();
|
|
332
|
+
}
|
|
333
|
+
/** Rebuild only geometry keyframes on resize. The existing animation keeps its
|
|
334
|
+
* timeline, velocity fit and current time, including an interrupted release. */
|
|
335
|
+
export function resizeRowCornerAnimation(content, animation, frames) {
|
|
336
|
+
const geometry = rowCorners.get(content);
|
|
337
|
+
if (!geometry || !animation)
|
|
338
|
+
return;
|
|
339
|
+
const resize = () => {
|
|
340
|
+
const effect = animation.effect;
|
|
341
|
+
if (animation.playState !== 'idle' && effect instanceof KeyframeEffect)
|
|
342
|
+
effect.setKeyframes(frames());
|
|
343
|
+
};
|
|
344
|
+
geometry.resizeRelease = resize;
|
|
345
|
+
const clear = () => {
|
|
346
|
+
if (geometry.resizeRelease === resize)
|
|
347
|
+
geometry.resizeRelease = undefined;
|
|
348
|
+
};
|
|
349
|
+
animation.finished?.then(clear, clear);
|
|
350
|
+
}
|
|
351
|
+
/** Keep section end caps until the first inline action has entered. The
|
|
352
|
+
* revealed face has a fixed continuous corner, independent of text height. */
|
|
353
|
+
export function swipeContentTrack(content) {
|
|
354
|
+
const host = content.closest('[data-satin-row-actions]');
|
|
355
|
+
const style = host ? getComputedStyle(host) : undefined;
|
|
356
|
+
const resting = [
|
|
357
|
+
style?.borderTopLeftRadius,
|
|
358
|
+
style?.borderTopRightRadius,
|
|
359
|
+
style?.borderBottomRightRadius,
|
|
360
|
+
style?.borderBottomLeftRadius,
|
|
361
|
+
].map(value => Number.parseFloat(value ?? '') || 0);
|
|
362
|
+
const sectionEnd = resting.some(radius => radius > 0);
|
|
363
|
+
const geometry = rowCorners.get(content) ?? {
|
|
364
|
+
width: content.offsetWidth,
|
|
365
|
+
height: content.offsetHeight,
|
|
366
|
+
};
|
|
367
|
+
rowCorners.set(content, geometry);
|
|
368
|
+
geometry.resizeRelease = undefined;
|
|
369
|
+
const widths = host ? swipeWidths(host) : defaultWidths;
|
|
370
|
+
let previousKey = '';
|
|
371
|
+
let clipPath = '';
|
|
372
|
+
let lastPosition = 0;
|
|
373
|
+
let lastRest = 0;
|
|
374
|
+
const frame = (position, rest = 0) => {
|
|
375
|
+
lastPosition = position;
|
|
376
|
+
lastRest = rest;
|
|
377
|
+
const transform = `translate3d(${position}px,0,0)`;
|
|
378
|
+
if (position === 0)
|
|
379
|
+
return { transform, borderRadius: '', clipPath: 'none' };
|
|
380
|
+
const side = position >= 0 ? 'leading' : 'trailing';
|
|
381
|
+
const custom = geometry[side];
|
|
382
|
+
const inline = host?.dataset.satinSwipeLabelLayout === 'inline';
|
|
383
|
+
const progress = inline && sectionEnd
|
|
384
|
+
? clamp((Math.abs(position) - widths[side] - 20) / 20)
|
|
385
|
+
: clamp(Math.abs(position));
|
|
386
|
+
const rounded = progress + (1 - progress) * rest;
|
|
387
|
+
// A settled or middle-row drag reuses its path. Only changing corners or
|
|
388
|
+
// a ResizeObserver geometry update rebuild the small cubic path.
|
|
389
|
+
const key = `${geometry.revision}:${geometry.width}:${geometry.height}:${side}:${rounded}`;
|
|
390
|
+
if (key !== previousKey) {
|
|
391
|
+
previousKey = key;
|
|
392
|
+
clipPath = custom
|
|
393
|
+
? cornerClipPath(custom, geometry.width, geometry.height)
|
|
394
|
+
: `path('${roundedCornerPath(geometry.width, geometry.height, resting.map(start => start + (defaultRowRadius - start) * rounded))}')`;
|
|
395
|
+
}
|
|
396
|
+
return { transform, borderRadius: '0px', clipPath };
|
|
397
|
+
};
|
|
398
|
+
geometry.refresh = () => Object.assign(content.style, frame(lastPosition, lastRest));
|
|
399
|
+
return frame;
|
|
400
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function swipeReleasePosition(from: number, to: number, velocity: number, seconds: number, fit: {
|
|
2
|
+
stiffness: number;
|
|
3
|
+
damping: number;
|
|
4
|
+
}): number;
|
|
5
|
+
/** Native E counter-retimed leading three-action takeover, 24 samples.
|
|
6
|
+
* Entry RMS 0.00494, reversal RMS 0.04057 in normalized geometry. */
|
|
7
|
+
export declare const swipeTakeover: {
|
|
8
|
+
readonly stiffness: 3741.169;
|
|
9
|
+
readonly damping: 122.3302;
|
|
10
|
+
};
|
|
11
|
+
export declare function takeoverSample(from: number, to: number, velocity: number, seconds: number): {
|
|
12
|
+
position: number;
|
|
13
|
+
velocity: number;
|
|
14
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function swipeReleasePosition(from, to, velocity, seconds, fit) {
|
|
2
|
+
const decay = fit.damping / 2;
|
|
3
|
+
const discriminant = fit.stiffness - decay * decay;
|
|
4
|
+
const displacement = from - to;
|
|
5
|
+
if (Math.abs(discriminant) < 0.000001) {
|
|
6
|
+
return (to + Math.exp(-decay * seconds) * (displacement + (velocity + decay * displacement) * seconds));
|
|
7
|
+
}
|
|
8
|
+
if (discriminant < 0) {
|
|
9
|
+
const spread = Math.sqrt(-discriminant);
|
|
10
|
+
const slow = -decay + spread;
|
|
11
|
+
const fast = -decay - spread;
|
|
12
|
+
const coefficient = (velocity - fast * displacement) / (slow - fast);
|
|
13
|
+
return (to +
|
|
14
|
+
coefficient * Math.exp(slow * seconds) +
|
|
15
|
+
(displacement - coefficient) * Math.exp(fast * seconds));
|
|
16
|
+
}
|
|
17
|
+
const frequency = Math.sqrt(discriminant);
|
|
18
|
+
return (to +
|
|
19
|
+
Math.exp(-decay * seconds) *
|
|
20
|
+
(displacement * Math.cos(frequency * seconds) +
|
|
21
|
+
((velocity + decay * displacement) / frequency) * Math.sin(frequency * seconds)));
|
|
22
|
+
}
|
|
23
|
+
/** Native E counter-retimed leading three-action takeover, 24 samples.
|
|
24
|
+
* Entry RMS 0.00494, reversal RMS 0.04057 in normalized geometry. */
|
|
25
|
+
export const swipeTakeover = { stiffness: 3741.169, damping: 122.3302 };
|
|
26
|
+
export function takeoverSample(from, to, velocity, seconds) {
|
|
27
|
+
const rate = swipeTakeover.damping / 2;
|
|
28
|
+
const displacement = from - to;
|
|
29
|
+
const coefficient = velocity + rate * displacement;
|
|
30
|
+
const decay = Math.exp(-rate * seconds);
|
|
31
|
+
return {
|
|
32
|
+
position: to + (displacement + coefficient * seconds) * decay,
|
|
33
|
+
velocity: (velocity - rate * coefficient * seconds) * decay,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { SymbolName } from '../symbols/Symbol.js';
|
|
3
|
+
import type { CornerShape } from '../shapes/corners.js';
|
|
4
|
+
/** Shared by menus, context menus and row swipe actions. */
|
|
5
|
+
export type Action = ActionItem | Readonly<{
|
|
6
|
+
section: readonly Action[];
|
|
7
|
+
label?: string;
|
|
8
|
+
}> | Readonly<{
|
|
9
|
+
id: string;
|
|
10
|
+
label: string;
|
|
11
|
+
symbol?: SymbolName;
|
|
12
|
+
icon?: ReactNode;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
submenu: readonly Action[];
|
|
15
|
+
}>;
|
|
16
|
+
/** A leaf command shared by menus, swipe actions, alerts and confirmation dialogs. */
|
|
17
|
+
export type ActionItem = Readonly<{
|
|
18
|
+
id: string;
|
|
19
|
+
label: string;
|
|
20
|
+
accessibilityLabel?: string;
|
|
21
|
+
symbol?: SymbolName;
|
|
22
|
+
icon?: ReactNode;
|
|
23
|
+
role?: 'destructive' | 'cancel';
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
/** Selection semantics for menu-style pickers. Defined false values reserve the checkmark column. */
|
|
26
|
+
checked?: boolean;
|
|
27
|
+
onPress?: (() => void) | (() => Promise<void>);
|
|
28
|
+
tint?: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** A swipe command may omit its visible title while retaining an accessible name. */
|
|
31
|
+
export type SwipeActionItem = ActionItem | Readonly<Omit<ActionItem, 'label' | 'accessibilityLabel'> & {
|
|
32
|
+
label?: never;
|
|
33
|
+
accessibilityLabel: string;
|
|
34
|
+
} & ({
|
|
35
|
+
symbol: SymbolName;
|
|
36
|
+
} | {
|
|
37
|
+
icon: ReactNode;
|
|
38
|
+
})>;
|
|
39
|
+
export type SwipeAction = Action | SwipeActionItem;
|
|
40
|
+
/** `swipeActions`: one or more edge configurations for a row. */
|
|
41
|
+
export type SwipeActions = SwipeActionsConfiguration | readonly SwipeActionsConfiguration[];
|
|
42
|
+
/** Swipe actions on one row edge. Full swipe is enabled unless explicitly disabled. */
|
|
43
|
+
export type SwipeActionsConfiguration = Readonly<{
|
|
44
|
+
edge?: 'leading' | 'trailing';
|
|
45
|
+
/** Revealed row face. Omit for the native default; custom shapes are unrestricted. */
|
|
46
|
+
shape?: CornerShape;
|
|
47
|
+
allowsFullSwipe?: boolean;
|
|
48
|
+
actions: readonly SwipeAction[];
|
|
49
|
+
}>;
|
|
50
|
+
/** `contextMenu`: row commands and an optional preview. */
|
|
51
|
+
export type ContextMenuConfiguration = readonly Action[] | Readonly<{
|
|
52
|
+
actions: readonly Action[];
|
|
53
|
+
preview?: ReactNode;
|
|
54
|
+
}>;
|
|
55
|
+
/** Row swipe actions and context-menu commands. */
|
|
56
|
+
export type RowActionsProps = Readonly<{
|
|
57
|
+
swipeActions?: SwipeActions;
|
|
58
|
+
contextMenu?: ContextMenuConfiguration;
|
|
59
|
+
}>;
|
|
60
|
+
export declare function actionItems(actions: readonly Action[], inheritedDisabled?: boolean): ActionItem[];
|
|
61
|
+
export declare function actionItems(actions: readonly SwipeAction[], inheritedDisabled?: boolean): SwipeActionItem[];
|
|
62
|
+
export declare function contextDefinition(value: ContextMenuConfiguration): Readonly<{
|
|
63
|
+
actions: readonly Action[];
|
|
64
|
+
preview?: ReactNode;
|
|
65
|
+
}>;
|
|
66
|
+
/** Resolve each edge once, using a single configuration shape. */
|
|
67
|
+
export declare function swipeEdge(value: SwipeActions | undefined, edge: 'leading' | 'trailing'): {
|
|
68
|
+
actions: SwipeActionItem[];
|
|
69
|
+
allowsFullSwipe: boolean;
|
|
70
|
+
shape: CornerShape | undefined;
|
|
71
|
+
};
|