@satinhq/kit 0.0.0-stage → 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +96 -0
- package/README.md +454 -2
- package/THIRD_PARTY_NOTICES.md +65 -0
- package/bin/satin.mjs +13 -0
- package/dist/acknowledgements/Acknowledgements.d.ts +4 -0
- package/dist/acknowledgements/Acknowledgements.js +42 -0
- package/dist/acknowledgements/bundledNotices.d.ts +4 -0
- package/dist/acknowledgements/bundledNotices.js +58 -0
- package/dist/acknowledgements/inventory.d.ts +17 -0
- package/dist/acknowledgements/inventory.js +10 -0
- package/dist/acknowledgements/inventory.json +39 -0
- package/dist/actions/ActionMenu.d.ts +30 -0
- package/dist/actions/ActionMenu.js +103 -0
- package/dist/actions/RowActions.d.ts +42 -0
- package/dist/actions/RowActions.js +820 -0
- package/dist/actions/contextMotion.d.ts +78 -0
- package/dist/actions/contextMotion.js +329 -0
- package/dist/actions/motion.d.ts +19 -0
- package/dist/actions/motion.js +74 -0
- package/dist/actions/nativeContextAppearance.json +86 -0
- package/dist/actions/nativeContextMotion.json +734 -0
- package/dist/actions/nativeMotion.json +388 -0
- package/dist/actions/preview.d.ts +27 -0
- package/dist/actions/preview.js +217 -0
- package/dist/actions/recognizers.d.ts +24 -0
- package/dist/actions/recognizers.js +87 -0
- package/dist/actions/rowScrub.d.ts +59 -0
- package/dist/actions/rowScrub.js +400 -0
- package/dist/actions/swipeSpring.d.ts +14 -0
- package/dist/actions/swipeSpring.js +35 -0
- package/dist/actions/types.d.ts +71 -0
- package/dist/actions/types.js +28 -0
- package/dist/app/InstallComponents.d.ts +16 -0
- package/dist/app/InstallComponents.js +104 -0
- package/dist/app/InstallationDiagnostics.d.ts +7 -0
- package/dist/app/InstallationDiagnostics.js +23 -0
- package/dist/app/OrientationGuard.d.ts +8 -0
- package/dist/app/OrientationGuard.js +9 -0
- package/dist/app/appearance.d.ts +18 -0
- package/dist/app/appearance.js +15 -0
- package/dist/app/appearanceStore.d.ts +30 -0
- package/dist/app/appearanceStore.js +228 -0
- package/dist/app/backgroundUpdate.d.ts +20 -0
- package/dist/app/backgroundUpdate.js +151 -0
- package/dist/app/buildInfo.d.ts +11 -0
- package/dist/app/buildInfo.js +12 -0
- package/dist/app/buildInfoBuild.d.ts +3 -0
- package/dist/app/buildInfoBuild.js +12 -0
- package/dist/app/checkCli.d.ts +1 -0
- package/dist/app/checkCli.js +73 -0
- package/dist/app/coldLaunchUpdate.d.ts +14 -0
- package/dist/app/coldLaunchUpdate.js +384 -0
- package/dist/app/definition.d.ts +85 -0
- package/dist/app/definition.js +347 -0
- package/dist/app/deployment.d.ts +28 -0
- package/dist/app/deployment.js +352 -0
- package/dist/app/deploymentBuild.d.ts +3 -0
- package/dist/app/deploymentBuild.js +55 -0
- package/dist/app/earlyWorker.d.ts +3 -0
- package/dist/app/earlyWorker.js +77 -0
- package/dist/app/head.d.ts +10 -0
- package/dist/app/head.js +120 -0
- package/dist/app/icons.d.ts +4 -0
- package/dist/app/icons.js +35 -0
- package/dist/app/install.d.ts +18 -0
- package/dist/app/install.js +82 -0
- package/dist/app/installCheck.d.ts +2 -0
- package/dist/app/installCheck.js +148 -0
- package/dist/app/installContext.d.ts +35 -0
- package/dist/app/installContext.js +45 -0
- package/dist/app/installCustom.d.ts +25 -0
- package/dist/app/installCustom.js +55 -0
- package/dist/app/installExperience.d.ts +22 -0
- package/dist/app/installExperience.js +389 -0
- package/dist/app/installExperienceDevice.d.ts +29 -0
- package/dist/app/installExperienceDevice.js +160 -0
- package/dist/app/installExperienceHome.d.ts +16 -0
- package/dist/app/installExperienceHome.js +304 -0
- package/dist/app/installExperienceRuntime.d.ts +37 -0
- package/dist/app/installExperienceRuntime.js +285 -0
- package/dist/app/installPolicy.d.ts +28 -0
- package/dist/app/installPolicy.js +90 -0
- package/dist/app/installQr.d.ts +10 -0
- package/dist/app/installQr.js +139 -0
- package/dist/app/installStrings.d.ts +52 -0
- package/dist/app/installStrings.js +75 -0
- package/dist/app/installTipPath.d.ts +12 -0
- package/dist/app/installTipPath.js +9 -0
- package/dist/app/installationFailure.d.ts +14 -0
- package/dist/app/installationFailure.js +38 -0
- package/dist/app/launch.d.ts +7 -0
- package/dist/app/launch.js +241 -0
- package/dist/app/launchReadiness.d.ts +9 -0
- package/dist/app/launchReadiness.js +72 -0
- package/dist/app/launchScreen.d.ts +16 -0
- package/dist/app/launchScreen.js +14 -0
- package/dist/app/launchScreenRuntime.d.ts +19 -0
- package/dist/app/launchScreenRuntime.js +313 -0
- package/dist/app/launchWatchdog.d.ts +1 -0
- package/dist/app/launchWatchdog.js +202 -0
- package/dist/app/manifests.d.ts +19 -0
- package/dist/app/manifests.js +20 -0
- package/dist/app/mdm.d.ts +3 -0
- package/dist/app/mdm.js +20 -0
- package/dist/app/mediaCheck.d.ts +9 -0
- package/dist/app/mediaCheck.js +122 -0
- package/dist/app/mediaTypes.d.ts +2 -0
- package/dist/app/mediaTypes.js +13 -0
- package/dist/app/platformPolicy.d.ts +3 -0
- package/dist/app/platformPolicy.js +10 -0
- package/dist/app/platformScripts.d.ts +6 -0
- package/dist/app/platformScripts.js +65 -0
- package/dist/app/releaseUpdates.d.ts +7 -0
- package/dist/app/releaseUpdates.js +53 -0
- package/dist/app/runtime.d.ts +9 -0
- package/dist/app/runtime.js +38 -0
- package/dist/app/startup.d.ts +30 -0
- package/dist/app/startup.js +24 -0
- package/dist/app/statusBand.d.ts +11 -0
- package/dist/app/statusBand.js +257 -0
- package/dist/app/viewport.d.ts +3 -0
- package/dist/app/viewport.js +42 -0
- package/dist/app/viewportValue.d.ts +5 -0
- package/dist/app/viewportValue.js +14 -0
- package/dist/app/vite.d.ts +27 -0
- package/dist/app/vite.js +440 -0
- package/dist/app/warmImage.d.ts +3 -0
- package/dist/app/warmImage.js +59 -0
- package/dist/content/content.d.ts +153 -0
- package/dist/content/content.js +315 -0
- package/dist/content/layout.d.ts +26 -0
- package/dist/content/layout.js +114 -0
- package/dist/content/scaledMetric.d.ts +3 -0
- package/dist/content/scaledMetric.js +68 -0
- package/dist/content/typography.d.ts +83 -0
- package/dist/content/typography.js +32 -0
- package/dist/controls/ActivityIndicatorSegments.d.ts +4 -0
- package/dist/controls/ActivityIndicatorSegments.js +5 -0
- package/dist/controls/ColorPicker.d.ts +20 -0
- package/dist/controls/ColorPicker.js +70 -0
- package/dist/controls/ControlRow.d.ts +5 -0
- package/dist/controls/ControlRow.js +10 -0
- package/dist/controls/DatePicker.d.ts +41 -0
- package/dist/controls/DatePicker.js +148 -0
- package/dist/controls/ProgressView.d.ts +17 -0
- package/dist/controls/ProgressView.js +24 -0
- package/dist/controls/civilDate.d.ts +49 -0
- package/dist/controls/civilDate.js +112 -0
- package/dist/data/database.d.ts +154 -0
- package/dist/data/database.js +710 -0
- package/dist/data/value-equal.d.ts +2 -0
- package/dist/data/value-equal.js +36 -0
- package/dist/data/write-store.d.ts +38 -0
- package/dist/data/write-store.js +192 -0
- package/dist/dev-menu/DevMenu.d.ts +1 -0
- package/dist/dev-menu/DevMenu.js +121 -0
- package/dist/dev-menu/actions.d.ts +12 -0
- package/dist/dev-menu/actions.js +99 -0
- package/dist/dev-menu/build.d.ts +5 -0
- package/dist/dev-menu/build.js +40 -0
- package/dist/dev-menu/gesture.d.ts +18 -0
- package/dist/dev-menu/gesture.js +109 -0
- package/dist/dev-menu/shake.d.ts +2 -0
- package/dist/dev-menu/shake.js +36 -0
- package/dist/dev-menu/types.d.ts +8 -0
- package/dist/dev-menu/types.js +1 -0
- package/dist/diagnostics.d.ts +3 -0
- package/dist/diagnostics.js +4 -0
- package/dist/docs/app-recipes.md +411 -0
- package/dist/docs/components/file-importer.md +54 -0
- package/dist/docs/components/paste-button.md +48 -0
- package/dist/docs/components/photos-picker.md +53 -0
- package/dist/docs/components/share-link.md +58 -0
- package/dist/docs/content.md +159 -0
- package/dist/docs/controls.md +151 -0
- package/dist/docs/data.md +332 -0
- package/dist/docs/limitations.md +40 -0
- package/dist/docs/messaging-scroll.md +234 -0
- package/dist/docs/networking.md +190 -0
- package/dist/docs/push.md +215 -0
- package/dist/docs/swiftui-reference.md +1895 -0
- package/dist/docs/symbols.md +293 -0
- package/dist/docs/tokens.md +60 -0
- package/dist/fidelity/devAssertions.d.ts +21 -0
- package/dist/fidelity/devAssertions.js +199 -0
- package/dist/focus/focusIntentMachine.d.ts +106 -0
- package/dist/focus/focusIntentMachine.js +359 -0
- package/dist/focus/navigationFocus.d.ts +42 -0
- package/dist/focus/navigationFocus.js +241 -0
- package/dist/focus/programmaticFocus.d.ts +15 -0
- package/dist/focus/programmaticFocus.js +152 -0
- package/dist/gestures/GestureView.d.ts +12 -0
- package/dist/gestures/GestureView.js +321 -0
- package/dist/gestures/arena.d.ts +138 -0
- package/dist/gestures/arena.js +417 -0
- package/dist/gestures/existingCompetitors.d.ts +79 -0
- package/dist/gestures/existingCompetitors.js +82 -0
- package/dist/gestures/gesture.d.ts +62 -0
- package/dist/gestures/gesture.js +107 -0
- package/dist/glass/ControlLens.d.ts +46 -0
- package/dist/glass/ControlLens.js +88 -0
- package/dist/glass/GlassBar.d.ts +9 -0
- package/dist/glass/GlassBar.js +22 -0
- package/dist/glass/GlassConfusionReview.d.ts +3 -0
- package/dist/glass/GlassConfusionReview.js +185 -0
- package/dist/glass/GlassEffect.d.ts +69 -0
- package/dist/glass/GlassEffect.js +550 -0
- package/dist/glass/GlassMaterialRoot.d.ts +7 -0
- package/dist/glass/GlassMaterialRoot.js +39 -0
- package/dist/glass/GlassPresentation.d.ts +28 -0
- package/dist/glass/GlassPresentation.js +1038 -0
- package/dist/glass/GlassProbeIcons.d.ts +8 -0
- package/dist/glass/GlassProbeIcons.js +12 -0
- package/dist/glass/GlassProbeOverlay.d.ts +52 -0
- package/dist/glass/GlassProbeOverlay.js +45 -0
- package/dist/glass/GlassTextField.d.ts +22 -0
- package/dist/glass/GlassTextField.js +12 -0
- package/dist/glass/MaterialEffectRoot.d.ts +9 -0
- package/dist/glass/MaterialEffectRoot.js +189 -0
- package/dist/glass/Menu.d.ts +3 -0
- package/dist/glass/Menu.js +35 -0
- package/dist/glass/MenuStack.d.ts +23 -0
- package/dist/glass/MenuStack.js +371 -0
- package/dist/glass/MenuSymbol.d.ts +7 -0
- package/dist/glass/MenuSymbol.js +16 -0
- package/dist/glass/MorphEllipsisArtwork.d.ts +2 -0
- package/dist/glass/MorphEllipsisArtwork.js +6 -0
- package/dist/glass/TabBar.d.ts +29 -0
- package/dist/glass/TabBar.js +169 -0
- package/dist/glass/capability.d.ts +25 -0
- package/dist/glass/capability.js +63 -0
- package/dist/glass/captureWindow.d.ts +60 -0
- package/dist/glass/captureWindow.js +119 -0
- package/dist/glass/confusionSession.d.ts +41 -0
- package/dist/glass/confusionSession.js +44 -0
- package/dist/glass/contactPhysics.d.ts +130 -0
- package/dist/glass/contactPhysics.js +214 -0
- package/dist/glass/context.d.ts +37 -0
- package/dist/glass/context.js +11 -0
- package/dist/glass/errorAlert.d.ts +6 -0
- package/dist/glass/errorAlert.js +57 -0
- package/dist/glass/errors.d.ts +22 -0
- package/dist/glass/errors.js +78 -0
- package/dist/glass/failurePolicy.d.ts +4 -0
- package/dist/glass/failurePolicy.js +20 -0
- package/dist/glass/fallback/material.d.ts +16 -0
- package/dist/glass/fallback/material.js +87 -0
- package/dist/glass/fallback/regions.d.ts +16 -0
- package/dist/glass/fallback/regions.js +249 -0
- package/dist/glass/fallback/runtime.d.ts +72 -0
- package/dist/glass/fallback/runtime.js +278 -0
- package/dist/glass/fallback/selection.d.ts +2 -0
- package/dist/glass/fallback/selection.js +9 -0
- package/dist/glass/fieldGeometry.d.ts +28 -0
- package/dist/glass/fieldGeometry.js +64 -0
- package/dist/glass/fieldMotion.d.ts +42 -0
- package/dist/glass/fieldMotion.js +47 -0
- package/dist/glass/glassContact.d.ts +76 -0
- package/dist/glass/glassContact.js +153 -0
- package/dist/glass/glassProbeSettings.d.ts +18 -0
- package/dist/glass/glassProbeSettings.js +133 -0
- package/dist/glass/lens/Scene.d.ts +108 -0
- package/dist/glass/lens/Scene.js +553 -0
- package/dist/glass/lens/backgrounds.json +103 -0
- package/dist/glass/lens/bitmapBackdrop.d.ts +14 -0
- package/dist/glass/lens/bitmapBackdrop.js +35 -0
- package/dist/glass/lens/controlLift.d.ts +94 -0
- package/dist/glass/lens/controlLift.js +78 -0
- package/dist/glass/lens/data.d.ts +19 -0
- package/dist/glass/lens/data.js +161 -0
- package/dist/glass/lens/drawableTop.d.ts +16 -0
- package/dist/glass/lens/drawableTop.js +15 -0
- package/dist/glass/lens/icons.d.ts +9 -0
- package/dist/glass/lens/icons.js +34 -0
- package/dist/glass/lens/interactiveContact.d.ts +33 -0
- package/dist/glass/lens/interactiveContact.js +158 -0
- package/dist/glass/lens/interactivePress.d.ts +95 -0
- package/dist/glass/lens/interactivePress.js +169 -0
- package/dist/glass/lens/ios27GlyphFit.json +126 -0
- package/dist/glass/lens/lensLightingSamples.json +1 -0
- package/dist/glass/lens/lensPress.d.ts +22 -0
- package/dist/glass/lens/lensPress.js +68 -0
- package/dist/glass/lens/lensPressSamples.json +1 -0
- package/dist/glass/lens/liquidMotion.d.ts +50 -0
- package/dist/glass/lens/liquidMotion.js +239 -0
- package/dist/glass/lens/materialGlassRecipes.json +776 -0
- package/dist/glass/lens/materialUniforms.d.ts +22 -0
- package/dist/glass/lens/materialUniforms.js +117 -0
- package/dist/glass/lens/menu-closing-close-fit.json +380 -0
- package/dist/glass/lens/menu-opening-native-fits.json +911 -0
- package/dist/glass/lens/menuContextFit.json +88 -0
- package/dist/glass/lens/menuContextOpacity.json +98 -0
- package/dist/glass/lens/menuContextPresentation.d.ts +15 -0
- package/dist/glass/lens/menuContextPresentation.js +65 -0
- package/dist/glass/lens/menuCornerFit.json +252 -0
- package/dist/glass/lens/menuCornerMotion.d.ts +9 -0
- package/dist/glass/lens/menuCornerMotion.js +5 -0
- package/dist/glass/lens/menuDropFit.json +64 -0
- package/dist/glass/lens/menuField.d.ts +178 -0
- package/dist/glass/lens/menuField.js +564 -0
- package/dist/glass/lens/menuGesturePresentation.d.ts +12 -0
- package/dist/glass/lens/menuGesturePresentation.js +42 -0
- package/dist/glass/lens/menuGlyphDropFit.json +38 -0
- package/dist/glass/lens/menuMorphFit.json +564 -0
- package/dist/glass/lens/menuMorphMotion.d.ts +70 -0
- package/dist/glass/lens/menuMorphMotion.js +219 -0
- package/dist/glass/lens/menuMorphPhoneFit.json +85 -0
- package/dist/glass/lens/menuMotion.d.ts +81 -0
- package/dist/glass/lens/menuMotion.js +323 -0
- package/dist/glass/lens/menuPlacement.d.ts +5 -0
- package/dist/glass/lens/menuPlacement.js +29 -0
- package/dist/glass/lens/menuSpring.d.ts +18 -0
- package/dist/glass/lens/menuSpring.js +29 -0
- package/dist/glass/lens/menuTouchLight.d.ts +13 -0
- package/dist/glass/lens/menuTouchLight.js +147 -0
- package/dist/glass/lens/mirrorConstants.d.ts +1 -0
- package/dist/glass/lens/mirrorConstants.js +2 -0
- package/dist/glass/lens/mirrorExtents.d.ts +52 -0
- package/dist/glass/lens/mirrorExtents.js +264 -0
- package/dist/glass/lens/mirrorInvalidation.d.ts +6 -0
- package/dist/glass/lens/mirrorInvalidation.js +10 -0
- package/dist/glass/lens/mirrorReuse.d.ts +20 -0
- package/dist/glass/lens/mirrorReuse.js +166 -0
- package/dist/glass/lens/motion.d.ts +62 -0
- package/dist/glass/lens/motion.js +93 -0
- package/dist/glass/lens/recordedMotion.d.ts +6 -0
- package/dist/glass/lens/recordedMotion.js +44 -0
- package/dist/glass/lens/referenceBackground.d.ts +9 -0
- package/dist/glass/lens/referenceBackground.js +151 -0
- package/dist/glass/lens/referenceProfiles.d.ts +21 -0
- package/dist/glass/lens/referenceProfiles.js +33 -0
- package/dist/glass/lens/referenceRegularTint.d.ts +12 -0
- package/dist/glass/lens/referenceRegularTint.js +41 -0
- package/dist/glass/lens/scopeSegments.d.ts +12 -0
- package/dist/glass/lens/scopeSegments.js +18 -0
- package/dist/glass/lens/scrollAnchoring.d.ts +15 -0
- package/dist/glass/lens/scrollAnchoring.js +17 -0
- package/dist/glass/lens/selectionParameters.json +94 -0
- package/dist/glass/lens/shapeParameters.json +198 -0
- package/dist/glass/lens/tab-motion-native-fits.json +778 -0
- package/dist/glass/lens/tabAccessoryMotion.d.ts +52 -0
- package/dist/glass/lens/tabAccessoryMotion.js +52 -0
- package/dist/glass/lens/tabChromaRimModel.d.ts +43 -0
- package/dist/glass/lens/tabChromaRimModel.js +93 -0
- package/dist/glass/lens/tabCollapseInkSamples.json +49 -0
- package/dist/glass/lens/tabCompactGesture.d.ts +15 -0
- package/dist/glass/lens/tabCompactGesture.js +50 -0
- package/dist/glass/lens/tabGeometryAttack.json +70 -0
- package/dist/glass/lens/tabGlyphColours.d.ts +17 -0
- package/dist/glass/lens/tabGlyphColours.js +37 -0
- package/dist/glass/lens/tabInterruptedDecaySamples.json +245 -0
- package/dist/glass/lens/tabInterruptedRestoreSamples.json +290 -0
- package/dist/glass/lens/tabMaterialModel.d.ts +10 -0
- package/dist/glass/lens/tabMaterialModel.js +108 -0
- package/dist/glass/lens/tabMinimizeInk.d.ts +15 -0
- package/dist/glass/lens/tabMinimizeInk.js +14 -0
- package/dist/glass/lens/tabMinimizeMotion.d.ts +36 -0
- package/dist/glass/lens/tabMinimizeMotion.js +107 -0
- package/dist/glass/lens/tabMinimizeSamples.json +411 -0
- package/dist/glass/lens/tabMotion.d.ts +91 -0
- package/dist/glass/lens/tabMotion.js +478 -0
- package/dist/glass/lens/tabMotionFit.d.ts +76 -0
- package/dist/glass/lens/tabMotionFit.js +61 -0
- package/dist/glass/lens/tabNativeSymbols.d.ts +1 -0
- package/dist/glass/lens/tabNativeSymbols.js +7 -0
- package/dist/glass/lens/tabPresentation.d.ts +21 -0
- package/dist/glass/lens/tabPresentation.js +20 -0
- package/dist/glass/lens/tabRelease.d.ts +5 -0
- package/dist/glass/lens/tabRelease.js +14 -0
- package/dist/glass/lens/tabRestoreMotion.d.ts +19 -0
- package/dist/glass/lens/tabRestoreMotion.js +65 -0
- package/dist/glass/lens/tabRestoreSamples.json +1272 -0
- package/dist/glass/lens/tabSearchMember.d.ts +38 -0
- package/dist/glass/lens/tabSearchMember.js +74 -0
- package/dist/glass/lens/tabSelectionMaterial.d.ts +20 -0
- package/dist/glass/lens/tabSelectionMaterial.js +23 -0
- package/dist/glass/lens/tabSelectionMeasurements.test-fixture.d.ts +9 -0
- package/dist/glass/lens/tabSelectionMeasurements.test-fixture.js +74 -0
- package/dist/glass/lens/tabSettingsSymbol.d.ts +1 -0
- package/dist/glass/lens/tabSettingsSymbol.js +2 -0
- package/dist/glass/lens/tabShapeResponse.d.ts +7 -0
- package/dist/glass/lens/tabShapeResponse.js +30 -0
- package/dist/glass/lens/theme.d.ts +18 -0
- package/dist/glass/lens/theme.js +40 -0
- package/dist/glass/lens/trace.d.ts +2 -0
- package/dist/glass/lens/trace.js +27 -0
- package/dist/glass/liquidContext.d.ts +31 -0
- package/dist/glass/liquidContext.js +2 -0
- package/dist/glass/menuPanelPlacement.d.ts +51 -0
- package/dist/glass/menuPanelPlacement.js +128 -0
- package/dist/glass/menuPresenter.d.ts +34 -0
- package/dist/glass/menuPresenter.js +983 -0
- package/dist/glass/menuSymbolMasks.d.ts +1 -0
- package/dist/glass/menuSymbolMasks.js +1 -0
- package/dist/glass/menuSymbolTokens.d.ts +22 -0
- package/dist/glass/menuSymbolTokens.js +12 -0
- package/dist/glass/menuTriggerGeometry.d.ts +99 -0
- package/dist/glass/menuTriggerGeometry.js +126 -0
- package/dist/glass/menuTriggerSnapshot.d.ts +77 -0
- package/dist/glass/menuTriggerSnapshot.js +69 -0
- package/dist/glass/menuTypes.d.ts +22 -0
- package/dist/glass/menuTypes.js +1 -0
- package/dist/glass/morphField.d.ts +18 -0
- package/dist/glass/morphField.js +139 -0
- package/dist/glass/presentationFrame.d.ts +43 -0
- package/dist/glass/presentationFrame.js +82 -0
- package/dist/glass/pressHighlight.d.ts +9 -0
- package/dist/glass/pressHighlight.js +158 -0
- package/dist/glass/regionRegistry.d.ts +93 -0
- package/dist/glass/regionRegistry.js +313 -0
- package/dist/glass/regions.d.ts +262 -0
- package/dist/glass/regions.js +147 -0
- package/dist/glass/regularMaterialContext.d.ts +45 -0
- package/dist/glass/regularMaterialContext.js +118 -0
- package/dist/glass/regularTriggerMaterial.d.ts +19 -0
- package/dist/glass/regularTriggerMaterial.js +111 -0
- package/dist/glass/regularTriggerRim.d.ts +163 -0
- package/dist/glass/regularTriggerRim.js +436 -0
- package/dist/glass/renderSpecs.d.ts +454 -0
- package/dist/glass/renderSpecs.js +231 -0
- package/dist/glass/rendererContract.d.ts +205 -0
- package/dist/glass/rendererContract.js +18 -0
- package/dist/glass/shapeTrack.d.ts +53 -0
- package/dist/glass/shapeTrack.js +74 -0
- package/dist/glass/shapeTrackRegistry.d.ts +40 -0
- package/dist/glass/shapeTrackRegistry.js +49 -0
- package/dist/glass/sourceDamage.d.ts +6 -0
- package/dist/glass/sourceDamage.js +8 -0
- package/dist/glass/submenuMotion.d.ts +205 -0
- package/dist/glass/submenuMotion.js +306 -0
- package/dist/glass/tabBarModel.d.ts +12 -0
- package/dist/glass/tabBarModel.js +32 -0
- package/dist/glass/testing.d.ts +14 -0
- package/dist/glass/testing.js +14 -0
- package/dist/glass/tokens.d.ts +79 -0
- package/dist/glass/tokens.js +86 -0
- package/dist/glass/toolbarMaterialContext.d.ts +28 -0
- package/dist/glass/toolbarMaterialContext.js +66 -0
- package/dist/glass/topLayer.d.ts +5 -0
- package/dist/glass/topLayer.js +10 -0
- package/dist/glass/unionOutline.d.ts +11 -0
- package/dist/glass/unionOutline.js +98 -0
- package/dist/glass/visibleDeadline.d.ts +21 -0
- package/dist/glass/visibleDeadline.js +61 -0
- package/dist/glass/webgpu/accessoryMorph.d.ts +99 -0
- package/dist/glass/webgpu/accessoryMorph.js +473 -0
- package/dist/glass/webgpu/accessoryTrack.d.ts +47 -0
- package/dist/glass/webgpu/accessoryTrack.js +59 -0
- package/dist/glass/webgpu/areaMips.d.ts +50 -0
- package/dist/glass/webgpu/areaMips.js +166 -0
- package/dist/glass/webgpu/backdrop.d.ts +86 -0
- package/dist/glass/webgpu/backdrop.js +243 -0
- package/dist/glass/webgpu/backdropLayers.d.ts +29 -0
- package/dist/glass/webgpu/backdropLayers.js +182 -0
- package/dist/glass/webgpu/backgroundLayers.d.ts +71 -0
- package/dist/glass/webgpu/backgroundLayers.js +385 -0
- package/dist/glass/webgpu/cadence.d.ts +18 -0
- package/dist/glass/webgpu/cadence.js +35 -0
- package/dist/glass/webgpu/canvasSubmission.d.ts +6 -0
- package/dist/glass/webgpu/canvasSubmission.js +22 -0
- package/dist/glass/webgpu/capture.d.ts +77 -0
- package/dist/glass/webgpu/capture.js +534 -0
- package/dist/glass/webgpu/captureBands.d.ts +39 -0
- package/dist/glass/webgpu/captureBands.js +53 -0
- package/dist/glass/webgpu/captureContext.d.ts +1 -0
- package/dist/glass/webgpu/captureContext.js +6 -0
- package/dist/glass/webgpu/captureDemand.d.ts +44 -0
- package/dist/glass/webgpu/captureDemand.js +81 -0
- package/dist/glass/webgpu/captureRelease.d.ts +18 -0
- package/dist/glass/webgpu/captureRelease.js +39 -0
- package/dist/glass/webgpu/client.d.ts +49 -0
- package/dist/glass/webgpu/client.js +336 -0
- package/dist/glass/webgpu/contextBackdrop.d.ts +6 -0
- package/dist/glass/webgpu/contextBackdrop.js +13 -0
- package/dist/glass/webgpu/contextComposite.d.ts +64 -0
- package/dist/glass/webgpu/contextComposite.js +66 -0
- package/dist/glass/webgpu/decodedImage.d.ts +1 -0
- package/dist/glass/webgpu/decodedImage.js +2 -0
- package/dist/glass/webgpu/deviceLimits.d.ts +5 -0
- package/dist/glass/webgpu/deviceLimits.js +8 -0
- package/dist/glass/webgpu/edgePass.d.ts +9 -0
- package/dist/glass/webgpu/edgePass.js +170 -0
- package/dist/glass/webgpu/entry.worker.d.ts +1 -0
- package/dist/glass/webgpu/entry.worker.js +28 -0
- package/dist/glass/webgpu/errorCode.d.ts +3 -0
- package/dist/glass/webgpu/errorCode.js +27 -0
- package/dist/glass/webgpu/errors.d.ts +8 -0
- package/dist/glass/webgpu/errors.js +55 -0
- package/dist/glass/webgpu/fieldInk.d.ts +9 -0
- package/dist/glass/webgpu/fieldInk.js +62 -0
- package/dist/glass/webgpu/foreground.d.ts +29 -0
- package/dist/glass/webgpu/foreground.js +313 -0
- package/dist/glass/webgpu/frameClock.d.ts +34 -0
- package/dist/glass/webgpu/frameClock.js +60 -0
- package/dist/glass/webgpu/frameGraph.d.ts +57 -0
- package/dist/glass/webgpu/frameGraph.js +287 -0
- package/dist/glass/webgpu/frameProbe.d.ts +58 -0
- package/dist/glass/webgpu/frameProbe.js +181 -0
- package/dist/glass/webgpu/interactionProfiles.d.ts +10 -0
- package/dist/glass/webgpu/interactionProfiles.js +25 -0
- package/dist/glass/webgpu/keptGlyphs.d.ts +68 -0
- package/dist/glass/webgpu/keptGlyphs.js +85 -0
- package/dist/glass/webgpu/keyboardBackdrop.d.ts +12 -0
- package/dist/glass/webgpu/keyboardBackdrop.js +51 -0
- package/dist/glass/webgpu/lagTrace.d.ts +31 -0
- package/dist/glass/webgpu/lagTrace.js +22 -0
- package/dist/glass/webgpu/layers.d.ts +100 -0
- package/dist/glass/webgpu/layers.js +301 -0
- package/dist/glass/webgpu/lensDebug.d.ts +4 -0
- package/dist/glass/webgpu/lensDebug.js +28 -0
- package/dist/glass/webgpu/lensDiffusion.d.ts +2 -0
- package/dist/glass/webgpu/lensDiffusion.js +20 -0
- package/dist/glass/webgpu/lensLightingFit.json +222 -0
- package/dist/glass/webgpu/menuLiftInput.d.ts +30 -0
- package/dist/glass/webgpu/menuLiftInput.js +39 -0
- package/dist/glass/webgpu/menuSurfaceGuard.d.ts +17 -0
- package/dist/glass/webgpu/menuSurfaceGuard.js +26 -0
- package/dist/glass/webgpu/minimize.d.ts +184 -0
- package/dist/glass/webgpu/minimize.js +470 -0
- package/dist/glass/webgpu/navigationAtlasCopy.d.ts +12 -0
- package/dist/glass/webgpu/navigationAtlasCopy.js +121 -0
- package/dist/glass/webgpu/navigationTracks.d.ts +3 -0
- package/dist/glass/webgpu/navigationTracks.js +84 -0
- package/dist/glass/webgpu/passes.d.ts +204 -0
- package/dist/glass/webgpu/passes.js +394 -0
- package/dist/glass/webgpu/pendingSurfaceInput.d.ts +29 -0
- package/dist/glass/webgpu/pendingSurfaceInput.js +51 -0
- package/dist/glass/webgpu/preparedSourcePixels.d.ts +21 -0
- package/dist/glass/webgpu/preparedSourcePixels.js +43 -0
- package/dist/glass/webgpu/presentationBackdrop.d.ts +3 -0
- package/dist/glass/webgpu/presentationBackdrop.js +33 -0
- package/dist/glass/webgpu/presentationDiffusion.d.ts +48 -0
- package/dist/glass/webgpu/presentationDiffusion.js +57 -0
- package/dist/glass/webgpu/presentationMaterial.d.ts +9 -0
- package/dist/glass/webgpu/presentationMaterial.js +156 -0
- package/dist/glass/webgpu/presenterViewport.d.ts +11 -0
- package/dist/glass/webgpu/presenterViewport.js +193 -0
- package/dist/glass/webgpu/production.d.ts +552 -0
- package/dist/glass/webgpu/production.js +1929 -0
- package/dist/glass/webgpu/productionInstalls.d.ts +53 -0
- package/dist/glass/webgpu/productionInstalls.js +225 -0
- package/dist/glass/webgpu/productionNavigation.d.ts +5 -0
- package/dist/glass/webgpu/productionNavigation.js +360 -0
- package/dist/glass/webgpu/productionPinnedTop.d.ts +80 -0
- package/dist/glass/webgpu/productionPinnedTop.js +77 -0
- package/dist/glass/webgpu/productionPinnedTopPrepare.d.ts +21 -0
- package/dist/glass/webgpu/productionPinnedTopPrepare.js +132 -0
- package/dist/glass/webgpu/productionPlanes.d.ts +135 -0
- package/dist/glass/webgpu/productionPlanes.js +412 -0
- package/dist/glass/webgpu/productionPrepare.d.ts +18 -0
- package/dist/glass/webgpu/productionPrepare.js +832 -0
- package/dist/glass/webgpu/productionTracks.d.ts +73 -0
- package/dist/glass/webgpu/productionTracks.js +22 -0
- package/dist/glass/webgpu/productionViewport.d.ts +20 -0
- package/dist/glass/webgpu/productionViewport.js +52 -0
- package/dist/glass/webgpu/profile.d.ts +37 -0
- package/dist/glass/webgpu/profile.js +101 -0
- package/dist/glass/webgpu/raster.d.ts +337 -0
- package/dist/glass/webgpu/raster.js +1360 -0
- package/dist/glass/webgpu/rasterMaterial.d.ts +19 -0
- package/dist/glass/webgpu/rasterMaterial.js +197 -0
- package/dist/glass/webgpu/rasterShaders.d.ts +7 -0
- package/dist/glass/webgpu/rasterShaders.js +105 -0
- package/dist/glass/webgpu/rasterUniforms.d.ts +304 -0
- package/dist/glass/webgpu/rasterUniforms.js +415 -0
- package/dist/glass/webgpu/regionBackdrop.d.ts +8 -0
- package/dist/glass/webgpu/regionBackdrop.js +12 -0
- package/dist/glass/webgpu/regionBridge.d.ts +145 -0
- package/dist/glass/webgpu/regionBridge.js +1691 -0
- package/dist/glass/webgpu/regionScene.d.ts +294 -0
- package/dist/glass/webgpu/regionScene.js +2144 -0
- package/dist/glass/webgpu/renderer.d.ts +8 -0
- package/dist/glass/webgpu/renderer.js +1478 -0
- package/dist/glass/webgpu/residentPlanes.d.ts +69 -0
- package/dist/glass/webgpu/residentPlanes.js +104 -0
- package/dist/glass/webgpu/restMaterial.d.ts +6 -0
- package/dist/glass/webgpu/restMaterial.js +65 -0
- package/dist/glass/webgpu/resumeOverlay.d.ts +44 -0
- package/dist/glass/webgpu/resumeOverlay.js +82 -0
- package/dist/glass/webgpu/sampleTrace.d.ts +11 -0
- package/dist/glass/webgpu/sampleTrace.js +50 -0
- package/dist/glass/webgpu/scrollEdgeBackdrop.d.ts +89 -0
- package/dist/glass/webgpu/scrollEdgeBackdrop.js +177 -0
- package/dist/glass/webgpu/scrollEdgePose.d.ts +4 -0
- package/dist/glass/webgpu/scrollEdgePose.js +49 -0
- package/dist/glass/webgpu/selectionThumb.d.ts +81 -0
- package/dist/glass/webgpu/selectionThumb.js +209 -0
- package/dist/glass/webgpu/shaders.d.ts +67 -0
- package/dist/glass/webgpu/shaders.js +595 -0
- package/dist/glass/webgpu/sharedLift.d.ts +7 -0
- package/dist/glass/webgpu/sharedLift.js +223 -0
- package/dist/glass/webgpu/sourcePixels.d.ts +42 -0
- package/dist/glass/webgpu/sourcePixels.js +140 -0
- package/dist/glass/webgpu/sourcePixels.worker.d.ts +1 -0
- package/dist/glass/webgpu/sourcePixels.worker.js +62 -0
- package/dist/glass/webgpu/tabGlyphInk.d.ts +14 -0
- package/dist/glass/webgpu/tabGlyphInk.js +72 -0
- package/dist/glass/webgpu/touchLight.d.ts +4 -0
- package/dist/glass/webgpu/touchLight.js +15 -0
- package/dist/glass/worker/client.d.ts +21 -0
- package/dist/glass/worker/client.js +152 -0
- package/dist/glass/worker/experiment.d.ts +13 -0
- package/dist/glass/worker/experiment.js +221 -0
- package/dist/glass/worker/fixture.d.ts +21 -0
- package/dist/glass/worker/fixture.js +152 -0
- package/dist/glass/worker/protocol.d.ts +439 -0
- package/dist/glass/worker/protocol.js +5 -0
- package/dist/graphicsProbe.d.ts +19 -0
- package/dist/graphicsProbe.js +111 -0
- package/dist/haptics/SensoryButton.d.ts +21 -0
- package/dist/haptics/SensoryButton.js +80 -0
- package/dist/image/ContentAdmission.d.ts +19 -0
- package/dist/image/ContentAdmission.js +70 -0
- package/dist/image/Image.d.ts +30 -0
- package/dist/image/Image.js +341 -0
- package/dist/image/asset.d.ts +9 -0
- package/dist/image/asset.js +1 -0
- package/dist/image/contentReadiness.d.ts +7 -0
- package/dist/image/contentReadiness.js +54 -0
- package/dist/image/imports.d.ts +4 -0
- package/dist/image/resource.d.ts +53 -0
- package/dist/image/resource.js +286 -0
- package/dist/image/vite.d.ts +3 -0
- package/dist/image/vite.js +63 -0
- package/dist/index.d.ts +87 -0
- package/dist/index.js +102 -0
- package/dist/install.d.ts +8 -0
- package/dist/install.js +8 -0
- package/dist/internal.d.ts +96 -0
- package/dist/internal.js +80 -0
- package/dist/keyboard/adapter.d.ts +82 -0
- package/dist/keyboard/adapter.js +727 -0
- package/dist/keyboard/avoidance.d.ts +24 -0
- package/dist/keyboard/avoidance.js +283 -0
- package/dist/keyboard/caretMirror.d.ts +13 -0
- package/dist/keyboard/caretMirror.js +122 -0
- package/dist/keyboard/expectedKeyboard.d.ts +10 -0
- package/dist/keyboard/expectedKeyboard.js +60 -0
- package/dist/keyboard/geometry.d.ts +10 -0
- package/dist/keyboard/geometry.js +21 -0
- package/dist/keyboard/modalTapFocus.d.ts +41 -0
- package/dist/keyboard/modalTapFocus.js +224 -0
- package/dist/keyboard/motion.d.ts +54 -0
- package/dist/keyboard/motion.js +80 -0
- package/dist/keyboard/translation.d.ts +12 -0
- package/dist/keyboard/translation.js +19 -0
- package/dist/layout/adaptiveTabsContext.d.ts +5 -0
- package/dist/layout/adaptiveTabsContext.js +2 -0
- package/dist/layout/deviceIdiom.d.ts +4 -0
- package/dist/layout/deviceIdiom.js +12 -0
- package/dist/layout/layoutClass.d.ts +44 -0
- package/dist/layout/layoutClass.js +102 -0
- package/dist/layout/navigationLayoutContext.d.ts +8 -0
- package/dist/layout/navigationLayoutContext.js +5 -0
- package/dist/list-form/ListForm.d.ts +158 -0
- package/dist/list-form/ListForm.js +427 -0
- package/dist/list-form/ListItem.d.ts +30 -0
- package/dist/list-form/ListItem.js +251 -0
- package/dist/list-form/RowLabel.d.ts +14 -0
- package/dist/list-form/RowLabel.js +11 -0
- package/dist/list-form/Slider.d.ts +18 -0
- package/dist/list-form/Slider.js +235 -0
- package/dist/list-form/StepperButton.d.ts +9 -0
- package/dist/list-form/StepperButton.js +60 -0
- package/dist/list-form/Toggle.d.ts +16 -0
- package/dist/list-form/Toggle.js +204 -0
- package/dist/list-form/editMotion.d.ts +15 -0
- package/dist/list-form/editMotion.js +25 -0
- package/dist/list-form/editing.d.ts +102 -0
- package/dist/list-form/editing.js +51 -0
- package/dist/list-form/listContext.d.ts +4 -0
- package/dist/list-form/listContext.js +5 -0
- package/dist/list-form/offsets.d.ts +26 -0
- package/dist/list-form/offsets.js +34 -0
- package/dist/list-form/reorder.d.ts +20 -0
- package/dist/list-form/reorder.js +193 -0
- package/dist/list-form/rowMotion.d.ts +11 -0
- package/dist/list-form/rowMotion.js +236 -0
- package/dist/list-form/rowMotionScope.d.ts +14 -0
- package/dist/list-form/rowMotionScope.js +61 -0
- package/dist/list-form/separatorInsets.d.ts +4 -0
- package/dist/list-form/separatorInsets.js +87 -0
- package/dist/list-form/sliderContact.d.ts +40 -0
- package/dist/list-form/sliderContact.js +98 -0
- package/dist/list-form/state.d.ts +5 -0
- package/dist/list-form/state.js +8 -0
- package/dist/list-form/toggleContact.d.ts +55 -0
- package/dist/list-form/toggleContact.js +164 -0
- package/dist/media/controller.d.ts +7 -0
- package/dist/media/controller.js +612 -0
- package/dist/media/react.d.ts +9 -0
- package/dist/media/react.js +38 -0
- package/dist/media/systemMedia.d.ts +6 -0
- package/dist/media/systemMedia.js +200 -0
- package/dist/media/types.d.ts +83 -0
- package/dist/media/types.js +1 -0
- package/dist/menu/menuContact.d.ts +20 -0
- package/dist/menu/menuContact.js +286 -0
- package/dist/menu/menuGesture.d.ts +84 -0
- package/dist/menu/menuGesture.js +502 -0
- package/dist/menu/menuInteraction.d.ts +17 -0
- package/dist/menu/menuInteraction.js +34 -0
- package/dist/menu/menuOutside.d.ts +9 -0
- package/dist/menu/menuOutside.js +58 -0
- package/dist/menu/menuPanelContact.d.ts +11 -0
- package/dist/menu/menuPanelContact.js +77 -0
- package/dist/menu/menuTriggerHold.d.ts +3 -0
- package/dist/menu/menuTriggerHold.js +52 -0
- package/dist/menu/sampledMotion.d.ts +37 -0
- package/dist/menu/sampledMotion.js +86 -0
- package/dist/modal/lifecycle.d.ts +10 -0
- package/dist/modal/lifecycle.js +189 -0
- package/dist/motion/TransitionView.d.ts +12 -0
- package/dist/motion/TransitionView.js +118 -0
- package/dist/motion/animate.d.ts +20 -0
- package/dist/motion/animate.js +79 -0
- package/dist/motion/animationValue.d.ts +25 -0
- package/dist/motion/animationValue.js +42 -0
- package/dist/motion/composerMotion.d.ts +3 -0
- package/dist/motion/composerMotion.js +15 -0
- package/dist/motion/layoutTransaction.d.ts +7 -0
- package/dist/motion/layoutTransaction.js +28 -0
- package/dist/motion/matchedGeometry.d.ts +55 -0
- package/dist/motion/matchedGeometry.js +412 -0
- package/dist/motion/springPath.d.ts +27 -0
- package/dist/motion/springPath.js +46 -0
- package/dist/motion/springTrack.d.ts +33 -0
- package/dist/motion/springTrack.js +69 -0
- package/dist/motion/transition.d.ts +48 -0
- package/dist/motion/transition.js +56 -0
- package/dist/motion/transitionImages.d.ts +7 -0
- package/dist/motion/transitionImages.js +49 -0
- package/dist/motionProbe.d.ts +227 -0
- package/dist/motionProbe.js +697 -0
- package/dist/motionProbeControls.d.ts +2 -0
- package/dist/motionProbeControls.js +118 -0
- package/dist/motionProbeDelivery.d.ts +15 -0
- package/dist/motionProbeDelivery.js +84 -0
- package/dist/navigation/DetailList.d.ts +9 -0
- package/dist/navigation/DetailList.js +7 -0
- package/dist/navigation/NavigationChrome.d.ts +18 -0
- package/dist/navigation/NavigationChrome.js +195 -0
- package/dist/navigation/NavigationSearchRow.d.ts +9 -0
- package/dist/navigation/NavigationSearchRow.js +101 -0
- package/dist/navigation/NavigationTitleSlots.d.ts +18 -0
- package/dist/navigation/NavigationTitleSlots.js +64 -0
- package/dist/navigation/NavigatorHost.d.ts +17 -0
- package/dist/navigation/NavigatorHost.js +534 -0
- package/dist/navigation/ScreenContainer.d.ts +31 -0
- package/dist/navigation/ScreenContainer.js +219 -0
- package/dist/navigation/ScrubSourceFrames.d.ts +18 -0
- package/dist/navigation/ScrubSourceFrames.js +67 -0
- package/dist/navigation/Sidebar.d.ts +16 -0
- package/dist/navigation/Sidebar.js +20 -0
- package/dist/navigation/SidebarSymbol.d.ts +4 -0
- package/dist/navigation/SidebarSymbol.js +6 -0
- package/dist/navigation/ToolbarGlass.d.ts +2 -0
- package/dist/navigation/ToolbarGlass.js +429 -0
- package/dist/navigation/TransitionEdge.d.ts +4 -0
- package/dist/navigation/TransitionEdge.js +33 -0
- package/dist/navigation/bottomToolbarGeometry.d.ts +6 -0
- package/dist/navigation/bottomToolbarGeometry.js +14 -0
- package/dist/navigation/chromeCurves.d.ts +48 -0
- package/dist/navigation/chromeCurves.js +255 -0
- package/dist/navigation/glassTransition.d.ts +32 -0
- package/dist/navigation/glassTransition.js +55 -0
- package/dist/navigation/horizontalDrag.d.ts +6 -0
- package/dist/navigation/horizontalDrag.js +15 -0
- package/dist/navigation/interactivePop.d.ts +45 -0
- package/dist/navigation/interactivePop.js +86 -0
- package/dist/navigation/interactivePopTypes.d.ts +85 -0
- package/dist/navigation/interactivePopTypes.js +36 -0
- package/dist/navigation/keyboard.d.ts +9 -0
- package/dist/navigation/keyboard.js +55 -0
- package/dist/navigation/motion.d.ts +19 -0
- package/dist/navigation/motion.js +645 -0
- package/dist/navigation/motionTokens.d.ts +43 -0
- package/dist/navigation/motionTokens.js +75 -0
- package/dist/navigation/nativeScrubExperiment.d.ts +5 -0
- package/dist/navigation/nativeScrubExperiment.js +153 -0
- package/dist/navigation/nativeScrubSource.d.ts +15 -0
- package/dist/navigation/nativeScrubSource.js +88 -0
- package/dist/navigation/navigationChromeModel.d.ts +8 -0
- package/dist/navigation/navigationChromeModel.js +30 -0
- package/dist/navigation/navigationContext.d.ts +22 -0
- package/dist/navigation/navigationContext.js +65 -0
- package/dist/navigation/navigationEdge.d.ts +4 -0
- package/dist/navigation/navigationEdge.js +101 -0
- package/dist/navigation/pointerPop.d.ts +32 -0
- package/dist/navigation/pointerPop.js +206 -0
- package/dist/navigation/probeLayers.d.ts +7 -0
- package/dist/navigation/probeLayers.js +8 -0
- package/dist/navigation/registry.d.ts +14 -0
- package/dist/navigation/registry.js +31 -0
- package/dist/navigation/releaseDecision.d.ts +21 -0
- package/dist/navigation/releaseDecision.js +94 -0
- package/dist/navigation/releaseTrajectory.d.ts +20 -0
- package/dist/navigation/releaseTrajectory.js +95 -0
- package/dist/navigation/releaseVelocity.d.ts +9 -0
- package/dist/navigation/releaseVelocity.js +38 -0
- package/dist/navigation/routeCodec.d.ts +33 -0
- package/dist/navigation/routeCodec.js +123 -0
- package/dist/navigation/scrollEdge.d.ts +18 -0
- package/dist/navigation/scrollEdge.js +66 -0
- package/dist/navigation/scrubFrameLoop.d.ts +44 -0
- package/dist/navigation/scrubFrameLoop.js +129 -0
- package/dist/navigation/sidebarSelection.d.ts +5 -0
- package/dist/navigation/sidebarSelection.js +8 -0
- package/dist/navigation/splitContext.d.ts +17 -0
- package/dist/navigation/splitContext.js +9 -0
- package/dist/navigation/splitState.d.ts +46 -0
- package/dist/navigation/splitState.js +130 -0
- package/dist/navigation/stack.d.ts +25 -0
- package/dist/navigation/stack.js +136 -0
- package/dist/navigation/store.d.ts +80 -0
- package/dist/navigation/store.js +464 -0
- package/dist/navigation/toolbarGlassMotion.d.ts +40 -0
- package/dist/navigation/toolbarGlassMotion.js +202 -0
- package/dist/navigation/toolbarMinimization.d.ts +9 -0
- package/dist/navigation/toolbarMinimization.js +76 -0
- package/dist/navigation/toolbarMotionOwner.d.ts +6 -0
- package/dist/navigation/toolbarMotionOwner.js +30 -0
- package/dist/navigation/touchArbitration.d.ts +34 -0
- package/dist/navigation/touchArbitration.js +550 -0
- package/dist/navigation/tracking.d.ts +7 -0
- package/dist/navigation/tracking.js +19 -0
- package/dist/navigation/transitionBindings.d.ts +31 -0
- package/dist/navigation/transitionBindings.js +106 -0
- package/dist/navigation/transitionChrome.d.ts +31 -0
- package/dist/navigation/transitionChrome.js +380 -0
- package/dist/navigation/transitionPose.d.ts +52 -0
- package/dist/navigation/transitionPose.js +295 -0
- package/dist/navigation/types.d.ts +133 -0
- package/dist/navigation/types.js +1 -0
- package/dist/navigation/zoomDrag.d.ts +3 -0
- package/dist/navigation/zoomDrag.js +125 -0
- package/dist/navigation/zoomGeometry.d.ts +48 -0
- package/dist/navigation/zoomGeometry.js +94 -0
- package/dist/navigation/zoomGlass.d.ts +27 -0
- package/dist/navigation/zoomGlass.js +64 -0
- package/dist/navigation/zoomMotion.d.ts +73 -0
- package/dist/navigation/zoomMotion.js +104 -0
- package/dist/navigation/zoomTransition.d.ts +82 -0
- package/dist/navigation/zoomTransition.js +975 -0
- package/dist/presentation/Presentation.d.ts +61 -0
- package/dist/presentation/Presentation.js +92 -0
- package/dist/presentation/PresentationSurface.d.ts +29 -0
- package/dist/presentation/PresentationSurface.js +586 -0
- package/dist/presentation/PresentedSheet.d.ts +2 -0
- package/dist/presentation/PresentedSheet.js +571 -0
- package/dist/presentation/activity.d.ts +3 -0
- package/dist/presentation/activity.js +24 -0
- package/dist/presentation/coldLaunch.d.ts +2 -0
- package/dist/presentation/coldLaunch.js +19 -0
- package/dist/presentation/dismiss.d.ts +26 -0
- package/dist/presentation/dismiss.js +30 -0
- package/dist/presentation/glassMotion.d.ts +39 -0
- package/dist/presentation/glassMotion.js +259 -0
- package/dist/presentation/glassReady.d.ts +11 -0
- package/dist/presentation/glassReady.js +246 -0
- package/dist/presentation/model.d.ts +108 -0
- package/dist/presentation/model.js +183 -0
- package/dist/presentation/motion.d.ts +56 -0
- package/dist/presentation/motion.js +263 -0
- package/dist/presentation/presentationMotion.d.ts +10 -0
- package/dist/presentation/presentationMotion.js +74 -0
- package/dist/presentation/presentationSource.d.ts +2 -0
- package/dist/presentation/presentationSource.js +28 -0
- package/dist/presentation/sheetChromeContext.d.ts +2 -0
- package/dist/presentation/sheetChromeContext.js +3 -0
- package/dist/presentation/sheetMaterialTransition.d.ts +14 -0
- package/dist/presentation/sheetMaterialTransition.js +33 -0
- package/dist/presentation/sheetReleaseMotion.d.ts +18 -0
- package/dist/presentation/sheetReleaseMotion.js +123 -0
- package/dist/presentation/useAlertKeyboardMotion.d.ts +8 -0
- package/dist/presentation/useAlertKeyboardMotion.js +104 -0
- package/dist/press/Pressable.d.ts +19 -0
- package/dist/press/Pressable.js +16 -0
- package/dist/press/activation.d.ts +20 -0
- package/dist/press/activation.js +28 -0
- package/dist/press/contactReceipt.d.ts +23 -0
- package/dist/press/contactReceipt.js +177 -0
- package/dist/press/gestureArbitration.d.ts +13 -0
- package/dist/press/gestureArbitration.js +38 -0
- package/dist/press/stateMachine.d.ts +29 -0
- package/dist/press/stateMachine.js +39 -0
- package/dist/press/tokens.d.ts +18 -0
- package/dist/press/tokens.js +19 -0
- package/dist/press/usePressInteraction.d.ts +30 -0
- package/dist/press/usePressInteraction.js +247 -0
- package/dist/public/Label.d.ts +16 -0
- package/dist/public/Label.js +40 -0
- package/dist/public/NativeFilePicker.d.ts +19 -0
- package/dist/public/NativeFilePicker.js +75 -0
- package/dist/public/Screen.d.ts +42 -0
- package/dist/public/Screen.js +87 -0
- package/dist/public/actions.d.ts +16 -0
- package/dist/public/actions.js +15 -0
- package/dist/public/buttonBorderShape.d.ts +7 -0
- package/dist/public/buttonBorderShape.js +9 -0
- package/dist/public/chrome.d.ts +3 -0
- package/dist/public/chrome.js +5 -0
- package/dist/public/colors.d.ts +29 -0
- package/dist/public/colors.js +28 -0
- package/dist/public/context.d.ts +19 -0
- package/dist/public/context.js +8 -0
- package/dist/public/controlStyle.d.ts +93 -0
- package/dist/public/controlStyle.js +52 -0
- package/dist/public/controls.d.ts +360 -0
- package/dist/public/controls.js +301 -0
- package/dist/public/definition.d.ts +65 -0
- package/dist/public/definition.js +58 -0
- package/dist/public/deviceActions.d.ts +23 -0
- package/dist/public/deviceActions.js +87 -0
- package/dist/public/environment.d.ts +77 -0
- package/dist/public/environment.js +171 -0
- package/dist/public/fieldContext.d.ts +2 -0
- package/dist/public/fieldContext.js +3 -0
- package/dist/public/filePickers.d.ts +25 -0
- package/dist/public/filePickers.js +11 -0
- package/dist/public/glass.d.ts +31 -0
- package/dist/public/glass.js +29 -0
- package/dist/public/glassValue.d.ts +19 -0
- package/dist/public/glassValue.js +32 -0
- package/dist/public/keyboard.d.ts +4 -0
- package/dist/public/keyboard.js +6 -0
- package/dist/public/navigationTransition.d.ts +48 -0
- package/dist/public/navigationTransition.js +49 -0
- package/dist/public/pickerNavigation.d.ts +7 -0
- package/dist/public/pickerNavigation.js +64 -0
- package/dist/public/presentation.d.ts +40 -0
- package/dist/public/presentation.js +21 -0
- package/dist/public/presentationContext.d.ts +2 -0
- package/dist/public/presentationContext.js +3 -0
- package/dist/public/routeRegistry.d.ts +3 -0
- package/dist/public/routeRegistry.js +10 -0
- package/dist/public/routes.d.ts +74 -0
- package/dist/public/routes.js +105 -0
- package/dist/public/runtime.d.ts +134 -0
- package/dist/public/runtime.js +292 -0
- package/dist/public/screenChrome.d.ts +91 -0
- package/dist/public/screenChrome.js +187 -0
- package/dist/public/scroll.d.ts +38 -0
- package/dist/public/scroll.js +7 -0
- package/dist/public/storage.d.ts +9 -0
- package/dist/public/storage.js +9 -0
- package/dist/public/structure.d.ts +65 -0
- package/dist/public/structure.js +40 -0
- package/dist/public/toolbar.d.ts +37 -0
- package/dist/public/toolbar.js +76 -0
- package/dist/push/PushPermissionExplainer.d.ts +14 -0
- package/dist/push/PushPermissionExplainer.js +30 -0
- package/dist/push/notifications.d.ts +54 -0
- package/dist/push/notifications.js +276 -0
- package/dist/push/routes.d.ts +20 -0
- package/dist/push/routes.js +63 -0
- package/dist/push/schema.d.ts +42 -0
- package/dist/push/schema.js +41 -0
- package/dist/push/urlProjection.d.ts +24 -0
- package/dist/push/urlProjection.js +207 -0
- package/dist/reachability/controller.d.ts +21 -0
- package/dist/reachability/controller.js +202 -0
- package/dist/reachability/model.d.ts +94 -0
- package/dist/reachability/model.js +131 -0
- package/dist/reachability/react.d.ts +29 -0
- package/dist/reachability/react.js +69 -0
- package/dist/restoration/navigation.d.ts +9 -0
- package/dist/restoration/navigation.js +55 -0
- package/dist/restoration/react.d.ts +6 -0
- package/dist/restoration/react.js +21 -0
- package/dist/restoration/routes.d.ts +22 -0
- package/dist/restoration/routes.js +166 -0
- package/dist/restoration/scene.d.ts +44 -0
- package/dist/restoration/scene.js +284 -0
- package/dist/root/SatinRoot.d.ts +25 -0
- package/dist/root/SatinRoot.js +512 -0
- package/dist/root/mountSatin.d.ts +12 -0
- package/dist/root/mountSatin.js +60 -0
- package/dist/root/runtimeContext.d.ts +26 -0
- package/dist/root/runtimeContext.js +30 -0
- package/dist/safe-area/Overlay.d.ts +9 -0
- package/dist/safe-area/Overlay.js +26 -0
- package/dist/safe-area/SafeAreaInset.d.ts +25 -0
- package/dist/safe-area/SafeAreaInset.js +138 -0
- package/dist/safe-area/bottomInsetGeometry.d.ts +12 -0
- package/dist/safe-area/bottomInsetGeometry.js +73 -0
- package/dist/safe-area/context.d.ts +15 -0
- package/dist/safe-area/context.js +8 -0
- package/dist/safe-area/displayCorners.d.ts +21 -0
- package/dist/safe-area/displayCorners.js +70 -0
- package/dist/safe-area/keyboardCarrier.d.ts +26 -0
- package/dist/safe-area/keyboardCarrier.js +394 -0
- package/dist/safe-area/keyboardCarrierGeometry.d.ts +37 -0
- package/dist/safe-area/keyboardCarrierGeometry.js +49 -0
- package/dist/safe-area/modifiers.d.ts +52 -0
- package/dist/safe-area/modifiers.js +86 -0
- package/dist/safe-area/useSafeAreaMetrics.d.ts +83 -0
- package/dist/safe-area/useSafeAreaMetrics.js +367 -0
- package/dist/safe-area/windowChrome.d.ts +7 -0
- package/dist/safe-area/windowChrome.js +14 -0
- package/dist/scroll/RefreshControl.d.ts +8 -0
- package/dist/scroll/RefreshControl.js +135 -0
- package/dist/scroll/ScrollSurface.d.ts +62 -0
- package/dist/scroll/ScrollSurface.js +278 -0
- package/dist/scroll/ScrollTarget.d.ts +6 -0
- package/dist/scroll/ScrollTarget.js +11 -0
- package/dist/scroll/edgePolicy.d.ts +21 -0
- package/dist/scroll/edgePolicy.js +17 -0
- package/dist/scroll/insertionMotion.d.ts +15 -0
- package/dist/scroll/insertionMotion.js +128 -0
- package/dist/scroll/nativeScroll.d.ts +14 -0
- package/dist/scroll/nativeScroll.js +71 -0
- package/dist/scroll/position.d.ts +31 -0
- package/dist/scroll/position.js +273 -0
- package/dist/scroll/pressOwnership.d.ts +4 -0
- package/dist/scroll/pressOwnership.js +65 -0
- package/dist/scroll/refreshMotion.d.ts +9 -0
- package/dist/scroll/refreshMotion.js +15 -0
- package/dist/scroll/refreshable.d.ts +6 -0
- package/dist/scroll/refreshable.js +50 -0
- package/dist/scroll/registry.d.ts +38 -0
- package/dist/scroll/registry.js +261 -0
- package/dist/scroll/screenGeometry.d.ts +8 -0
- package/dist/scroll/screenGeometry.js +50 -0
- package/dist/scroll/scrollIndicator.d.ts +7 -0
- package/dist/scroll/scrollIndicator.js +114 -0
- package/dist/scroll/scrollJump.d.ts +7 -0
- package/dist/scroll/scrollJump.js +16 -0
- package/dist/scroll/types.d.ts +12 -0
- package/dist/scroll/types.js +1 -0
- package/dist/search/SearchDrawer.d.ts +16 -0
- package/dist/search/SearchDrawer.js +421 -0
- package/dist/search/SearchScopesBar.d.ts +6 -0
- package/dist/search/SearchScopesBar.js +12 -0
- package/dist/search/SearchToolbarField.d.ts +8 -0
- package/dist/search/SearchToolbarField.js +115 -0
- package/dist/search/searchBackdrop.d.ts +12 -0
- package/dist/search/searchBackdrop.js +45 -0
- package/dist/search/searchChrome.d.ts +13 -0
- package/dist/search/searchChrome.js +31 -0
- package/dist/search/searchMotion.d.ts +30 -0
- package/dist/search/searchMotion.js +46 -0
- package/dist/search/searchPlacement.d.ts +11 -0
- package/dist/search/searchPlacement.js +15 -0
- package/dist/search/searchable.d.ts +46 -0
- package/dist/search/searchable.js +5 -0
- package/dist/search/useSearchPresentation.d.ts +15 -0
- package/dist/search/useSearchPresentation.js +61 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.js +144 -0
- package/dist/settings/DisclosureIndicator.d.ts +4 -0
- package/dist/settings/DisclosureIndicator.js +6 -0
- package/dist/settings/tokens.d.ts +129 -0
- package/dist/settings/tokens.js +143 -0
- package/dist/shapes/corners.d.ts +14 -0
- package/dist/shapes/corners.js +80 -0
- package/dist/styles.css +9078 -0
- package/dist/styles.css.d.ts +3 -0
- package/dist/sw/activationState.d.ts +20 -0
- package/dist/sw/activationState.js +39 -0
- package/dist/sw/generator.d.ts +14 -0
- package/dist/sw/generator.js +26 -0
- package/dist/sw/manifest.d.ts +32 -0
- package/dist/sw/manifest.js +137 -0
- package/dist/sw/protocol.d.ts +7 -0
- package/dist/sw/protocol.js +7 -0
- package/dist/sw/pushRuntime.d.ts +2 -0
- package/dist/sw/pushRuntime.js +161 -0
- package/dist/sw/registerAppShell.d.ts +25 -0
- package/dist/sw/registerAppShell.js +259 -0
- package/dist/sw/renderServiceWorker.d.ts +10 -0
- package/dist/sw/renderServiceWorker.js +370 -0
- package/dist/sw/requestRouting.d.ts +13 -0
- package/dist/sw/requestRouting.js +26 -0
- package/dist/sw/updateCheck.d.ts +2 -0
- package/dist/sw/updateCheck.js +25 -0
- package/dist/sw/vite.d.ts +20 -0
- package/dist/sw/vite.js +71 -0
- package/dist/symbols/Symbol.d.ts +33 -0
- package/dist/symbols/Symbol.js +59 -0
- package/dist/symbols/catalogue.d.ts +4 -0
- package/dist/symbols/catalogue.js +4139 -0
- package/dist/symbols/exclusions.d.ts +2 -0
- package/dist/symbols/exclusions.js +4 -0
- package/dist/symbols/inheritedWeight.d.ts +3 -0
- package/dist/symbols/inheritedWeight.js +104 -0
- package/dist/symbols/metrics.d.ts +38 -0
- package/dist/symbols/metrics.js +53 -0
- package/dist/symbols/svg.d.ts +3 -0
- package/dist/symbols/svg.js +16 -0
- package/dist/symbols/types.d.ts +30 -0
- package/dist/symbols/types.js +1 -0
- package/dist/tabs/TabSection.d.ts +12 -0
- package/dist/tabs/TabSection.js +4 -0
- package/dist/tabs/TabSidebarSurface.d.ts +7 -0
- package/dist/tabs/TabSidebarSurface.js +29 -0
- package/dist/tabs/TabView.d.ts +28 -0
- package/dist/tabs/TabView.js +258 -0
- package/dist/tabs/accessoryContact.d.ts +2 -0
- package/dist/tabs/accessoryContact.js +42 -0
- package/dist/tabs/compactBar.d.ts +4 -0
- package/dist/tabs/compactBar.js +28 -0
- package/dist/tabs/context.d.ts +8 -0
- package/dist/tabs/context.js +6 -0
- package/dist/tabs/keyboard.d.ts +3 -0
- package/dist/tabs/keyboard.js +23 -0
- package/dist/tabs/model.d.ts +6 -0
- package/dist/tabs/model.js +16 -0
- package/dist/tabs/presentation.d.ts +7 -0
- package/dist/tabs/presentation.js +14 -0
- package/dist/tabs/sourceRevision.d.ts +3 -0
- package/dist/tabs/sourceRevision.js +36 -0
- package/dist/tabs/tabSidebarGlyph.d.ts +2 -0
- package/dist/tabs/tabSidebarGlyph.js +11 -0
- package/dist/tasks/useTask.d.ts +16 -0
- package/dist/tasks/useTask.js +67 -0
- package/dist/testing.d.ts +9 -0
- package/dist/testing.js +11 -0
- package/dist/text-input/TextEditor.d.ts +25 -0
- package/dist/text-input/TextEditor.js +74 -0
- package/dist/text-input/TextField.d.ts +32 -0
- package/dist/text-input/TextField.js +29 -0
- package/dist/text-input/editorGeometry.d.ts +2 -0
- package/dist/text-input/editorGeometry.js +6 -0
- package/dist/text-input/editorTextLayout.d.ts +2 -0
- package/dist/text-input/editorTextLayout.js +31 -0
- package/dist/text-input/focusChain.d.ts +27 -0
- package/dist/text-input/focusChain.js +62 -0
- package/dist/text-input/kinds.d.ts +8 -0
- package/dist/text-input/kinds.js +34 -0
- package/dist/text-input/measureEditor.d.ts +2 -0
- package/dist/text-input/measureEditor.js +50 -0
- package/dist/text-input/submit.d.ts +9 -0
- package/dist/text-input/submit.js +7 -0
- package/dist/unstable.d.ts +16 -0
- package/dist/unstable.js +16 -0
- package/dist/vite.d.ts +3 -0
- package/dist/vite.js +3 -0
- package/dist/web/WebView.d.ts +42 -0
- package/dist/web/WebView.js +115 -0
- package/dist/web/authentication.d.ts +75 -0
- package/dist/web/authentication.js +488 -0
- package/dist/web/openURL.d.ts +37 -0
- package/dist/web/openURL.js +89 -0
- package/dist/web/urlPolicy.d.ts +3 -0
- package/dist/web/urlPolicy.js +19 -0
- package/dist/web/useWebAuthentication.d.ts +3 -0
- package/dist/web/useWebAuthentication.js +6 -0
- package/dist/zoom/Zoomable.d.ts +10 -0
- package/dist/zoom/Zoomable.js +116 -0
- package/dist/zoom/geometry.d.ts +11 -0
- package/dist/zoom/geometry.js +16 -0
- package/package.json +115 -3
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext } from 'react';
|
|
3
|
+
import { imageRequestKey, imageDecodeFailed, peekDecodedImage, decodedImage, retainDecodedImage, } from './resource.js';
|
|
4
|
+
/** A replacement owns its requests until it commits or a newer replacement retires it.
|
|
5
|
+
* Failure is a settled content outcome: Image renders its placeholder, not an error boundary. */
|
|
6
|
+
export class ImagePreparation {
|
|
7
|
+
active = false;
|
|
8
|
+
committed = false;
|
|
9
|
+
requests = new Map();
|
|
10
|
+
read(source, request) {
|
|
11
|
+
const key = imageRequestKey(source, request);
|
|
12
|
+
let selected = this.requests.get(key);
|
|
13
|
+
if (!selected) {
|
|
14
|
+
const failed = imageDecodeFailed(source, request);
|
|
15
|
+
selected = {
|
|
16
|
+
source,
|
|
17
|
+
request,
|
|
18
|
+
image: peekDecodedImage(source, request),
|
|
19
|
+
failed,
|
|
20
|
+
settled: failed
|
|
21
|
+
? Promise.resolve()
|
|
22
|
+
: decodedImage(source, request).then(image => {
|
|
23
|
+
selected.image = image;
|
|
24
|
+
}, () => {
|
|
25
|
+
selected.failed = true;
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
this.requests.set(key, selected);
|
|
29
|
+
if (this.active && !failed) {
|
|
30
|
+
const retained = retainDecodedImage(source, request);
|
|
31
|
+
void retained.ready.catch(() => { });
|
|
32
|
+
selected.release = retained.release;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (selected.failed)
|
|
36
|
+
return null;
|
|
37
|
+
if (selected.image)
|
|
38
|
+
return selected.image;
|
|
39
|
+
throw selected.settled;
|
|
40
|
+
}
|
|
41
|
+
activate() {
|
|
42
|
+
if (this.committed)
|
|
43
|
+
return;
|
|
44
|
+
this.active = true;
|
|
45
|
+
for (const selected of this.requests.values()) {
|
|
46
|
+
if (selected.failed || selected.release)
|
|
47
|
+
continue;
|
|
48
|
+
const retained = retainDecodedImage(selected.source, selected.request);
|
|
49
|
+
void retained.ready.catch(() => { });
|
|
50
|
+
selected.release = retained.release;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
commit() {
|
|
54
|
+
this.committed = true;
|
|
55
|
+
this.release();
|
|
56
|
+
}
|
|
57
|
+
release() {
|
|
58
|
+
this.active = false;
|
|
59
|
+
for (const selected of this.requests.values()) {
|
|
60
|
+
selected.release?.();
|
|
61
|
+
selected.release = undefined;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export const ContentImageContext = createContext(false);
|
|
66
|
+
/** Enable image-only admission without scheduling surrounding content. Nested
|
|
67
|
+
* screen/scroll boundaries carry the same policy; controls always commit urgently. */
|
|
68
|
+
export function ContentAdmission({ children }) {
|
|
69
|
+
return _jsx(ContentImageContext, { value: true, children: children });
|
|
70
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Ref, type CSSProperties, type ImgHTMLAttributes } from 'react';
|
|
2
|
+
import type { ImageAsset } from './asset.js';
|
|
3
|
+
/** An image's source, required alt text and aspect-ratio content mode. */
|
|
4
|
+
export interface ImageProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt' | 'srcSet' | 'loading'> {
|
|
5
|
+
readonly ref?: Ref<HTMLImageElement>;
|
|
6
|
+
readonly src: string | ImageAsset;
|
|
7
|
+
readonly alt: string;
|
|
8
|
+
readonly contentMode?: 'fit' | 'fill';
|
|
9
|
+
readonly aspectRatio?: CSSProperties['aspectRatio'];
|
|
10
|
+
readonly priority?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type AsyncImagePhase = {
|
|
13
|
+
readonly phase: 'empty';
|
|
14
|
+
} | {
|
|
15
|
+
readonly phase: 'success';
|
|
16
|
+
readonly image: HTMLImageElement;
|
|
17
|
+
} | {
|
|
18
|
+
readonly phase: 'failure';
|
|
19
|
+
readonly error: Error;
|
|
20
|
+
};
|
|
21
|
+
/** `Image` for a bundled or local asset: it reserves its size so layout never jumps, and
|
|
22
|
+
* `priority` loads it ahead of other images. Use `alt=""` for decoration. */
|
|
23
|
+
export declare function Image(props: ImageProps): import("react").JSX.Element;
|
|
24
|
+
/** An `ImageProps` whose source is a remote URL. */
|
|
25
|
+
export interface AsyncImageProps extends Omit<ImageProps, 'src'> {
|
|
26
|
+
readonly src: string;
|
|
27
|
+
readonly onPhaseChange?: (phase: AsyncImagePhase) => void;
|
|
28
|
+
}
|
|
29
|
+
/** Remote artwork keeps its placeholder on failure and never blocks navigation. */
|
|
30
|
+
export declare function AsyncImage(props: AsyncImageProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useLayoutEffect, useSyncExternalStore, useState, useRef, useImperativeHandle, useContext, useCallback, useMemo, useDeferredValue, Suspense, } from 'react';
|
|
3
|
+
import { retainDecodedImage, peekDecodedImage, registerImageCapture, subscribeImageViewport, imageViewport, decodedImage, retryFailedImage, } from './resource.js';
|
|
4
|
+
import { ContentImageContext, ImagePreparation } from './ContentAdmission.js';
|
|
5
|
+
import { useReachability } from '../reachability/react.js';
|
|
6
|
+
import { emptyImageSource } from './resource.js';
|
|
7
|
+
const transparent = emptyImageSource;
|
|
8
|
+
/** A one-pixel placeholder has its own intrinsic size. In a shrink-wrapped flex/grid
|
|
9
|
+
* hierarchy it can change the parent's width even when the img has width/height
|
|
10
|
+
* attributes and height:auto. Preserve the declared intrinsic contribution too. */
|
|
11
|
+
function reservedPlaceholder(width, height, colour = transparent) {
|
|
12
|
+
const w = Number(width);
|
|
13
|
+
const h = Number(height);
|
|
14
|
+
if (!Number.isFinite(w) || !Number.isFinite(h) || w <= 0 || h <= 0)
|
|
15
|
+
return colour;
|
|
16
|
+
// Vite emits an inline colour pixel. Never make an SVG load an external placeholder.
|
|
17
|
+
const pixel = colour.startsWith('data:image/')
|
|
18
|
+
? `<image width="${w}" height="${h}" href="${colour.replaceAll('&', '&').replaceAll('"', '"')}" preserveAspectRatio="none"/>`
|
|
19
|
+
: '';
|
|
20
|
+
return ('data:image/svg+xml,' +
|
|
21
|
+
encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}">${pixel}</svg>`));
|
|
22
|
+
}
|
|
23
|
+
/** Bundled artwork. Intrinsic dimensions and variants come from a ?satin-image import. */
|
|
24
|
+
function Artwork({ remote = false, admitted, ref, src, alt, contentMode = 'fit', aspectRatio, priority = false, style, width, height, sizes, crossOrigin, referrerPolicy, onLoad, onError, onPhaseChange, ...props }) {
|
|
25
|
+
const element = useRef(null);
|
|
26
|
+
// Readiness belongs to this displayed node and selected request. The shared cache
|
|
27
|
+
// avoids fetching/decoding the resource again; it does not authorize a new node.
|
|
28
|
+
const displayed = useRef(undefined);
|
|
29
|
+
const [painted, setPainted] = useState();
|
|
30
|
+
const lastPainted = useRef(undefined);
|
|
31
|
+
const [failed, setFailed] = useState();
|
|
32
|
+
const { state: reachability } = useReachability();
|
|
33
|
+
const status = reachability.status;
|
|
34
|
+
const previousStatus = useRef(status);
|
|
35
|
+
const phaseCallback = useRef(onPhaseChange);
|
|
36
|
+
phaseCallback.current = onPhaseChange;
|
|
37
|
+
const publishedPhase = useRef(undefined);
|
|
38
|
+
const reportedError = useRef(undefined);
|
|
39
|
+
useImperativeHandle(ref, () => element.current, []);
|
|
40
|
+
const asset = typeof src === 'string' ? undefined : src;
|
|
41
|
+
const url = typeof src === 'string' ? src : src.src;
|
|
42
|
+
const reportPhase = useCallback((phase) => {
|
|
43
|
+
const key = `${url}\0${phase.phase}`;
|
|
44
|
+
if (publishedPhase.current === key)
|
|
45
|
+
return;
|
|
46
|
+
publishedPhase.current = key;
|
|
47
|
+
phaseCallback.current?.(phase);
|
|
48
|
+
}, [url]);
|
|
49
|
+
useLayoutEffect(() => {
|
|
50
|
+
reportPhase({ phase: 'empty' });
|
|
51
|
+
}, [reportPhase]);
|
|
52
|
+
useLayoutEffect(() => {
|
|
53
|
+
const previous = previousStatus.current;
|
|
54
|
+
previousStatus.current = status;
|
|
55
|
+
if (failed?.url === url &&
|
|
56
|
+
status === 'reachable' &&
|
|
57
|
+
(previous === 'server-unreachable' || previous === 'device-offline')) {
|
|
58
|
+
retryFailedImage(url, { srcSet: asset?.srcSet, sizes, priority, crossOrigin, referrerPolicy });
|
|
59
|
+
displayed.current = undefined;
|
|
60
|
+
reportedError.current = undefined;
|
|
61
|
+
reportPhase({ phase: 'empty' });
|
|
62
|
+
setFailed(undefined);
|
|
63
|
+
}
|
|
64
|
+
}, [status, reportPhase, failed, url, asset, sizes, priority, crossOrigin, referrerPolicy]);
|
|
65
|
+
const intrinsicWidth = width ?? asset?.width;
|
|
66
|
+
const intrinsicHeight = height ?? asset?.height;
|
|
67
|
+
const placeholder = reservedPlaceholder(intrinsicWidth, intrinsicHeight, asset?.placeholder);
|
|
68
|
+
const reservedWidth = Number(intrinsicWidth);
|
|
69
|
+
const reservedHeight = Number(intrinsicHeight);
|
|
70
|
+
const reserved = Number.isFinite(reservedWidth) &&
|
|
71
|
+
reservedWidth > 0 &&
|
|
72
|
+
Number.isFinite(reservedHeight) &&
|
|
73
|
+
reservedHeight > 0;
|
|
74
|
+
// Retained decodes let repeat visits paint immediately, without a placeholder commit.
|
|
75
|
+
const request = { srcSet: asset?.srcSet, sizes, priority, crossOrigin, referrerPolicy };
|
|
76
|
+
const viewport = useSyncExternalStore(subscribeImageViewport, imageViewport, () => '');
|
|
77
|
+
const ready = peekDecodedImage(url, request) ?? admitted;
|
|
78
|
+
const admissionFailed = admitted === null;
|
|
79
|
+
// A new node for bytes already in memory decodes synchronously, the way UIKit decodes an
|
|
80
|
+
// image on its first display. WebKit drops decoded pixels of images whose layer is already
|
|
81
|
+
// drawn, and an async decode of a new node then paints nothing for several frames: the
|
|
82
|
+
// owner's Now Playing queue showed 4–7 empty 60 Hz frames per toggle (queue-art clip,
|
|
83
|
+
// October 11). Cold loads keep async decoding behind the placeholder.
|
|
84
|
+
const source = admissionFailed
|
|
85
|
+
? placeholder
|
|
86
|
+
: failed?.url === url
|
|
87
|
+
? failed.source
|
|
88
|
+
: ready
|
|
89
|
+
? ready.currentSrc || ready.src
|
|
90
|
+
: painted?.url === url
|
|
91
|
+
? painted.source
|
|
92
|
+
: placeholder;
|
|
93
|
+
// Keep decoded bytes owned across this node's source-selection and paint commits.
|
|
94
|
+
// Capture effects may retire and re-register without opening an eviction gap.
|
|
95
|
+
useLayoutEffect(() => {
|
|
96
|
+
if (admissionFailed || failed?.url === url)
|
|
97
|
+
return;
|
|
98
|
+
const retained = retainDecodedImage(url, {
|
|
99
|
+
srcSet: asset?.srcSet,
|
|
100
|
+
sizes,
|
|
101
|
+
priority,
|
|
102
|
+
crossOrigin,
|
|
103
|
+
referrerPolicy,
|
|
104
|
+
});
|
|
105
|
+
void retained.ready.catch(() => { });
|
|
106
|
+
return retained.release;
|
|
107
|
+
}, [
|
|
108
|
+
url,
|
|
109
|
+
asset?.srcSet,
|
|
110
|
+
sizes,
|
|
111
|
+
priority,
|
|
112
|
+
crossOrigin,
|
|
113
|
+
referrerPolicy,
|
|
114
|
+
viewport,
|
|
115
|
+
admissionFailed,
|
|
116
|
+
failed,
|
|
117
|
+
]);
|
|
118
|
+
useLayoutEffect(() => {
|
|
119
|
+
const target = element.current;
|
|
120
|
+
if (admissionFailed || failed?.url === url) {
|
|
121
|
+
target.dataset.satinImageState = 'error';
|
|
122
|
+
if (admissionFailed && reportedError.current !== url) {
|
|
123
|
+
reportedError.current = url;
|
|
124
|
+
reportPhase({ phase: 'failure', error: new Error('Image unavailable') });
|
|
125
|
+
target.dispatchEvent(new Event('error'));
|
|
126
|
+
}
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
let current = true;
|
|
130
|
+
target.dataset.satinImageState =
|
|
131
|
+
displayed.current?.ready &&
|
|
132
|
+
displayed.current.source === target.src &&
|
|
133
|
+
displayed.current.crossOrigin === crossOrigin &&
|
|
134
|
+
displayed.current.referrerPolicy === referrerPolicy
|
|
135
|
+
? 'ready'
|
|
136
|
+
: 'pending';
|
|
137
|
+
const resource = decodedImage(url, {
|
|
138
|
+
srcSet: asset?.srcSet,
|
|
139
|
+
sizes,
|
|
140
|
+
priority,
|
|
141
|
+
crossOrigin,
|
|
142
|
+
referrerPolicy,
|
|
143
|
+
});
|
|
144
|
+
let unregister = () => { };
|
|
145
|
+
let releaseCommit = () => { };
|
|
146
|
+
const task = resource
|
|
147
|
+
.then(async (image) => {
|
|
148
|
+
if (!current)
|
|
149
|
+
return image;
|
|
150
|
+
const source = image.currentSrc || image.src;
|
|
151
|
+
// React owns src. Assigning it here and then in React's commit restarts the
|
|
152
|
+
// WebKit load after the decode that authorized reveal. Select first, retire
|
|
153
|
+
// this capture at the commit, then decode the committed node in the next effect.
|
|
154
|
+
if (target.src !== source) {
|
|
155
|
+
await new Promise(resolve => {
|
|
156
|
+
releaseCommit = resolve;
|
|
157
|
+
setPainted(previous => previous?.url === url && previous.source === source ? previous : { url, source });
|
|
158
|
+
});
|
|
159
|
+
if (!current)
|
|
160
|
+
return image;
|
|
161
|
+
}
|
|
162
|
+
let selected = displayed.current;
|
|
163
|
+
if (!selected ||
|
|
164
|
+
selected.source !== source ||
|
|
165
|
+
selected.crossOrigin !== crossOrigin ||
|
|
166
|
+
selected.referrerPolicy !== referrerPolicy) {
|
|
167
|
+
selected = {
|
|
168
|
+
source,
|
|
169
|
+
crossOrigin,
|
|
170
|
+
referrerPolicy,
|
|
171
|
+
ready: false,
|
|
172
|
+
promise: target.decode(),
|
|
173
|
+
};
|
|
174
|
+
displayed.current = selected;
|
|
175
|
+
const decoding = selected;
|
|
176
|
+
void decoding.promise.then(() => {
|
|
177
|
+
decoding.ready = true;
|
|
178
|
+
}, () => { });
|
|
179
|
+
}
|
|
180
|
+
// Include cached visits. WebKit may load a newly mounted element after the
|
|
181
|
+
// detached cache image is ready. Reuse this node's promise across rerenders.
|
|
182
|
+
await selected.promise;
|
|
183
|
+
if (!current)
|
|
184
|
+
return image;
|
|
185
|
+
setPainted(previous => previous?.url === url && previous.source === source ? previous : { url, source });
|
|
186
|
+
lastPainted.current = { url, source };
|
|
187
|
+
target.dataset.satinImageState = 'ready';
|
|
188
|
+
reportPhase({ phase: 'success', image: target });
|
|
189
|
+
if (remote)
|
|
190
|
+
unregister = registerImageCapture(target, { source, ready: task });
|
|
191
|
+
return image;
|
|
192
|
+
})
|
|
193
|
+
.catch(async (error) => {
|
|
194
|
+
if (!current)
|
|
195
|
+
return decodedImage(placeholder);
|
|
196
|
+
const fallback = lastPainted.current?.url === url ? lastPainted.current.source : placeholder;
|
|
197
|
+
setFailed({ url, source: fallback });
|
|
198
|
+
target.dataset.satinImageState = 'error';
|
|
199
|
+
reportedError.current = url;
|
|
200
|
+
reportPhase({
|
|
201
|
+
phase: 'failure',
|
|
202
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
203
|
+
});
|
|
204
|
+
target.dispatchEvent(new Event('error'));
|
|
205
|
+
// Glass measured this request before the failure. Give that measurement the
|
|
206
|
+
// same placeholder pixels Image owns; a failed asset is not a failed renderer.
|
|
207
|
+
return decodedImage(fallback);
|
|
208
|
+
});
|
|
209
|
+
if (!remote)
|
|
210
|
+
unregister = registerImageCapture(target, { source: url, ready: task });
|
|
211
|
+
void task.catch(() => { });
|
|
212
|
+
return () => {
|
|
213
|
+
current = false;
|
|
214
|
+
unregister();
|
|
215
|
+
releaseCommit();
|
|
216
|
+
};
|
|
217
|
+
}, [
|
|
218
|
+
url,
|
|
219
|
+
asset,
|
|
220
|
+
sizes,
|
|
221
|
+
priority,
|
|
222
|
+
ready,
|
|
223
|
+
remote,
|
|
224
|
+
crossOrigin,
|
|
225
|
+
referrerPolicy,
|
|
226
|
+
viewport,
|
|
227
|
+
painted,
|
|
228
|
+
placeholder,
|
|
229
|
+
admissionFailed,
|
|
230
|
+
failed,
|
|
231
|
+
reportPhase,
|
|
232
|
+
]);
|
|
233
|
+
return (_jsx("img", { ...props, ref: element, alt: alt, width: intrinsicWidth, height: intrinsicHeight, sizes: sizes, crossOrigin: crossOrigin, referrerPolicy: referrerPolicy, decoding: ready ? 'sync' : 'async', fetchPriority: priority ? 'high' : undefined, draggable: false, src: source, onLoad: event => {
|
|
234
|
+
if (event.currentTarget.dataset.satinImageState === 'ready')
|
|
235
|
+
onLoad?.(event);
|
|
236
|
+
}, onError: onError, "data-satin-image-source": url, "data-satin-image-intrinsic": asset && height === undefined ? 'true' : undefined, "data-satin-row-intrinsic": "true", "data-satin-image-state": admissionFailed || failed?.url === url
|
|
237
|
+
? 'error'
|
|
238
|
+
: displayed.current?.ready &&
|
|
239
|
+
displayed.current.source === source &&
|
|
240
|
+
displayed.current.crossOrigin === crossOrigin &&
|
|
241
|
+
displayed.current.referrerPolicy === referrerPolicy
|
|
242
|
+
? 'ready'
|
|
243
|
+
: 'pending', style: {
|
|
244
|
+
objectFit: contentMode === 'fill' ? 'cover' : 'contain',
|
|
245
|
+
...style,
|
|
246
|
+
...(aspectRatio === undefined ? {} : { aspectRatio }),
|
|
247
|
+
// Reserve intrinsic contributions even before the inline placeholder loads.
|
|
248
|
+
// Size containment does not add clipping or a new containing block.
|
|
249
|
+
...(reserved
|
|
250
|
+
? {
|
|
251
|
+
contain: 'size',
|
|
252
|
+
containIntrinsicSize: `${reservedWidth}px ${reservedHeight}px`,
|
|
253
|
+
}
|
|
254
|
+
: {}),
|
|
255
|
+
} }));
|
|
256
|
+
}
|
|
257
|
+
/** `Image` for a bundled or local asset: it reserves its size so layout never jumps, and
|
|
258
|
+
* `priority` loads it ahead of other images. Use `alt=""` for decoration. */
|
|
259
|
+
export function Image(props) {
|
|
260
|
+
const preparation = useContext(ContentImageContext);
|
|
261
|
+
if (!preparation)
|
|
262
|
+
return _jsx(Artwork, { ...props });
|
|
263
|
+
return _jsx(AdmittedImage, { ...props });
|
|
264
|
+
}
|
|
265
|
+
/** Reserve first-mount geometry without painting an undecoded tile. The marker
|
|
266
|
+
* belongs to this image and is removed when its decoded node can commit. */
|
|
267
|
+
function PendingArtwork({ src, width, height, className, style, aspectRatio, contentMode = 'fit', priority, hidden, }) {
|
|
268
|
+
const asset = typeof src === 'string' ? undefined : src;
|
|
269
|
+
const intrinsicWidth = width ?? asset?.width;
|
|
270
|
+
const intrinsicHeight = height ?? asset?.height;
|
|
271
|
+
const reservedWidth = Number(intrinsicWidth);
|
|
272
|
+
const reservedHeight = Number(intrinsicHeight);
|
|
273
|
+
const reserved = Number.isFinite(reservedWidth) &&
|
|
274
|
+
reservedWidth > 0 &&
|
|
275
|
+
Number.isFinite(reservedHeight) &&
|
|
276
|
+
reservedHeight > 0;
|
|
277
|
+
return (_jsx("img", { alt: "", "aria-hidden": "true", className: className, width: intrinsicWidth, height: intrinsicHeight, src: reservedPlaceholder(intrinsicWidth, intrinsicHeight, asset?.placeholder), hidden: hidden, "data-satin-content-pending": "", fetchPriority: priority ? 'high' : undefined, "data-satin-row-intrinsic": "true", "data-satin-image-state": "pending", "data-satin-image-intrinsic": asset && height === undefined ? 'true' : undefined, style: {
|
|
278
|
+
objectFit: contentMode === 'fill' ? 'cover' : 'contain',
|
|
279
|
+
...style,
|
|
280
|
+
...(aspectRatio === undefined ? {} : { aspectRatio }),
|
|
281
|
+
...(reserved
|
|
282
|
+
? { contain: 'size', containIntrinsicSize: `${reservedWidth}px ${reservedHeight}px` }
|
|
283
|
+
: {}),
|
|
284
|
+
visibility: 'hidden',
|
|
285
|
+
} }));
|
|
286
|
+
}
|
|
287
|
+
/** Only source selection can defer. Alt text, geometry, handlers and surrounding
|
|
288
|
+
* controls receive current props even while the previous decoded source stays up.
|
|
289
|
+
* Initial mounts join the existing launch/navigation/tab readiness marker. */
|
|
290
|
+
function AdmittedImage(props) {
|
|
291
|
+
const { src, sizes, priority, crossOrigin, referrerPolicy } = props;
|
|
292
|
+
const { state } = useReachability();
|
|
293
|
+
const status = state.status !== 'local' ? state.status : 'local';
|
|
294
|
+
const previousStatus = useRef(status);
|
|
295
|
+
const [recovery, setRecovery] = useState(0);
|
|
296
|
+
useLayoutEffect(() => {
|
|
297
|
+
const previous = previousStatus.current;
|
|
298
|
+
previousStatus.current = status;
|
|
299
|
+
if (status === 'reachable' &&
|
|
300
|
+
(previous === 'server-unreachable' || previous === 'device-offline')) {
|
|
301
|
+
retryFailedImage(typeof src === 'string' ? src : src.src, {
|
|
302
|
+
srcSet: typeof src === 'string' ? undefined : src.srcSet,
|
|
303
|
+
sizes,
|
|
304
|
+
priority,
|
|
305
|
+
crossOrigin,
|
|
306
|
+
referrerPolicy,
|
|
307
|
+
});
|
|
308
|
+
setRecovery(value => value + 1);
|
|
309
|
+
}
|
|
310
|
+
}, [status, src, sizes, priority, crossOrigin, referrerPolicy]);
|
|
311
|
+
const candidate = useMemo(() => ({
|
|
312
|
+
source: { src, sizes, priority, crossOrigin, referrerPolicy },
|
|
313
|
+
recovery,
|
|
314
|
+
images: new ImagePreparation(),
|
|
315
|
+
}), [src, sizes, priority, crossOrigin, referrerPolicy, recovery]);
|
|
316
|
+
useLayoutEffect(() => {
|
|
317
|
+
candidate.images.activate();
|
|
318
|
+
return () => candidate.images.release();
|
|
319
|
+
}, [candidate]);
|
|
320
|
+
return (_jsx(Suspense, { fallback: _jsx(PendingArtwork, { ...props }), children: _jsx(PreparedArtwork, { ...props, candidate: candidate }) }));
|
|
321
|
+
}
|
|
322
|
+
function PreparedArtwork({ candidate, ...props }) {
|
|
323
|
+
const accepted = useDeferredValue(candidate);
|
|
324
|
+
// A responsive viewport change keeps this accepted decode. Artwork separately
|
|
325
|
+
// prepares its better-sized variant without suspending an external-store update.
|
|
326
|
+
const admitted = useMemo(() => accepted.images.read(typeof accepted.source.src === 'string' ? accepted.source.src : accepted.source.src.src, {
|
|
327
|
+
srcSet: typeof accepted.source.src === 'string' ? undefined : accepted.source.src.srcSet,
|
|
328
|
+
sizes: accepted.source.sizes,
|
|
329
|
+
priority: accepted.source.priority,
|
|
330
|
+
crossOrigin: accepted.source.crossOrigin,
|
|
331
|
+
referrerPolicy: accepted.source.referrerPolicy,
|
|
332
|
+
}), [accepted]);
|
|
333
|
+
// Artwork's layout effect has acquired displayed ownership before this runs.
|
|
334
|
+
// The parent keeps the settled outcome, but need not pin an old responsive decode.
|
|
335
|
+
useLayoutEffect(() => accepted.images.commit(), [accepted]);
|
|
336
|
+
return _jsx(Artwork, { ...props, ...accepted.source, admitted: admitted });
|
|
337
|
+
}
|
|
338
|
+
/** Remote artwork keeps its placeholder on failure and never blocks navigation. */
|
|
339
|
+
export function AsyncImage(props) {
|
|
340
|
+
return _jsx(Artwork, { ...props, remote: true, "data-satin-async-image": "true" });
|
|
341
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Produced by the Satin Vite plugin for imports ending in ?satin-image. */
|
|
2
|
+
export interface ImageAsset {
|
|
3
|
+
readonly src: string;
|
|
4
|
+
readonly width: number;
|
|
5
|
+
readonly height: number;
|
|
6
|
+
readonly srcSet: string;
|
|
7
|
+
/** A tiny, decoded colour image, suitable for reserving the artwork's frame. */
|
|
8
|
+
readonly placeholder: string;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Reveal eligibility is relative to the destination, which may itself be hidden
|
|
2
|
+
* or translated while preparing. A declared priority image participates offscreen. */
|
|
3
|
+
export declare function imageRequiredForReveal(root: HTMLElement, image: HTMLImageElement): boolean;
|
|
4
|
+
export declare function hasPendingContent(root: HTMLElement): boolean;
|
|
5
|
+
/** First mounts have no displayed capture. Every reveal pass includes their
|
|
6
|
+
* visible/priority markers, and the caller owns cancellation of this observer. */
|
|
7
|
+
export declare function prepareMountedContent(root: HTMLElement, signal?: AbortSignal): Promise<void> | undefined;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Reveal eligibility is relative to the destination, which may itself be hidden
|
|
2
|
+
* or translated while preparing. A declared priority image participates offscreen. */
|
|
3
|
+
export function imageRequiredForReveal(root, image) {
|
|
4
|
+
if (image.getAttribute('fetchpriority') === 'high')
|
|
5
|
+
return true;
|
|
6
|
+
const rect = image.getBoundingClientRect();
|
|
7
|
+
if (rect.width <= 0 || rect.height <= 0)
|
|
8
|
+
return false;
|
|
9
|
+
const route = root.getBoundingClientRect();
|
|
10
|
+
if (rect.right <= route.left ||
|
|
11
|
+
rect.left >= route.right ||
|
|
12
|
+
rect.bottom <= route.top ||
|
|
13
|
+
rect.top >= route.bottom)
|
|
14
|
+
return false;
|
|
15
|
+
const rootVisibility = getComputedStyle(root).visibility;
|
|
16
|
+
for (let parent = image; parent && parent !== root; parent = parent.parentElement) {
|
|
17
|
+
if (parent.hidden ||
|
|
18
|
+
parent.dataset.satinTabActive === 'false' ||
|
|
19
|
+
getComputedStyle(parent).display === 'none')
|
|
20
|
+
return false;
|
|
21
|
+
// Pending artwork hides its own undecoded pixels. That deliberate guard is
|
|
22
|
+
// distinct from a hidden ancestor or an author-hidden committed image.
|
|
23
|
+
const pendingMarker = parent === image && image.hasAttribute('data-satin-content-pending');
|
|
24
|
+
if (!pendingMarker &&
|
|
25
|
+
(parent.style.visibility === 'hidden' ||
|
|
26
|
+
(rootVisibility !== 'hidden' && getComputedStyle(parent).visibility === 'hidden')))
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
export function hasPendingContent(root) {
|
|
32
|
+
if (!root.querySelector('[data-satin-content-pending]'))
|
|
33
|
+
return false;
|
|
34
|
+
return [...root.querySelectorAll('[data-satin-content-pending]')].some(image => imageRequiredForReveal(root, image));
|
|
35
|
+
}
|
|
36
|
+
/** First mounts have no displayed capture. Every reveal pass includes their
|
|
37
|
+
* visible/priority markers, and the caller owns cancellation of this observer. */
|
|
38
|
+
export function prepareMountedContent(root, signal) {
|
|
39
|
+
if (signal?.aborted || !hasPendingContent(root))
|
|
40
|
+
return;
|
|
41
|
+
return new Promise(resolve => {
|
|
42
|
+
const finish = () => {
|
|
43
|
+
observer.disconnect();
|
|
44
|
+
signal?.removeEventListener('abort', finish);
|
|
45
|
+
resolve();
|
|
46
|
+
};
|
|
47
|
+
const observer = new MutationObserver(() => {
|
|
48
|
+
if (!hasPendingContent(root))
|
|
49
|
+
finish();
|
|
50
|
+
});
|
|
51
|
+
observer.observe(root, { childList: true, subtree: true, attributes: true });
|
|
52
|
+
signal?.addEventListener('abort', finish, { once: true });
|
|
53
|
+
});
|
|
54
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export declare const emptyImageSource = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==";
|
|
2
|
+
/** One decode cache for artwork and glass rasterization, including responsive candidates. */
|
|
3
|
+
export interface ImageRequest {
|
|
4
|
+
readonly srcSet?: string;
|
|
5
|
+
readonly sizes?: string;
|
|
6
|
+
readonly crossOrigin?: '' | 'anonymous' | 'use-credentials';
|
|
7
|
+
readonly referrerPolicy?: HTMLImageElement['referrerPolicy'];
|
|
8
|
+
readonly priority?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function imageRequestKey(url: string, request: ImageRequest): string;
|
|
11
|
+
export declare function peekDecodedImage(url: string, request?: ImageRequest): HTMLImageElement | undefined;
|
|
12
|
+
/** Failed requests settle content admission too. Remember the outcome across
|
|
13
|
+
* suspended React retries, which may reconstruct a preparation before it commits. */
|
|
14
|
+
export declare function imageDecodeFailed(url: string, request?: ImageRequest): boolean;
|
|
15
|
+
/** A confirmed reconnect may retry a failed bundled request. Keep successful
|
|
16
|
+
* cached pixels and existing consumers; retire only the remembered failure. */
|
|
17
|
+
export declare function retryFailedImage(url: string, request?: ImageRequest): void;
|
|
18
|
+
export declare function decodedImage(url: string, request?: ImageRequest): Promise<HTMLImageElement>;
|
|
19
|
+
export declare function retainDecodedImage(url: string, request?: ImageRequest): {
|
|
20
|
+
ready: Promise<HTMLImageElement>;
|
|
21
|
+
release(): void;
|
|
22
|
+
};
|
|
23
|
+
export type ImageCapture = {
|
|
24
|
+
source: string;
|
|
25
|
+
ready: Promise<HTMLImageElement>;
|
|
26
|
+
};
|
|
27
|
+
/** The element changed source or unmounted before its decode finished: not a failure. */
|
|
28
|
+
export declare class SupersededImage extends Error {
|
|
29
|
+
constructor(source: string);
|
|
30
|
+
}
|
|
31
|
+
export declare const imageCapture: (element: HTMLImageElement) => ImageCapture | undefined;
|
|
32
|
+
/** A failed content request contributes no image pixels. Replacement races still
|
|
33
|
+
* invalidate the measurement; renderer assets must never use this boundary. */
|
|
34
|
+
export declare function settleContentImage(ready: Promise<HTMLImageElement | undefined>): Promise<HTMLImageElement | undefined>;
|
|
35
|
+
/** Capture the displayed consumer, including raw img, without a second URL request. */
|
|
36
|
+
export declare function paintedImage(element: HTMLImageElement): Promise<HTMLImageElement | undefined>;
|
|
37
|
+
export declare const imageCaptureRevision: () => number;
|
|
38
|
+
/** Waiters on a retired capture (glass preparation, a push) are released at once, never held
|
|
39
|
+
* until a decode nobody displays any more settles. */
|
|
40
|
+
export declare function registerImageCapture(element: HTMLImageElement, capture: ImageCapture): () => void;
|
|
41
|
+
/** Target preparation budget for visible bundled artwork. A missed budget is a
|
|
42
|
+
* performance failure, never permission to reveal an undecoded local Image.
|
|
43
|
+
* Owner correction: the implementation contract October 10. */
|
|
44
|
+
export declare const DESTINATION_IMAGE_BUDGET_MS = 100;
|
|
45
|
+
/** Local Images must be ready before reveal. The entering route is translated offscreen,
|
|
46
|
+
* so visibility is measured in the route's own coordinates. The budget is a checkpoint:
|
|
47
|
+
* after a miss, keep the source visible and the destination paused until ready or aborted.
|
|
48
|
+
* AsyncImage's remote placeholder does not register a pending capture. */
|
|
49
|
+
export declare function prepareDestinationImages(root: HTMLElement, signal: AbortSignal, budget?: number): Promise<void>;
|
|
50
|
+
/** Synchronous empty admission keeps image-free tab selection immediate. */
|
|
51
|
+
export declare function hasDestinationImages(root: HTMLElement): boolean;
|
|
52
|
+
export declare function subscribeImageViewport(notify: () => void): () => void;
|
|
53
|
+
export declare const imageViewport: () => string;
|