@rafaelaugusto/jolt 0.1.0-beta.9 → 0.1.0-rc.2
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/README.md +167 -21
- package/dist/animate.d.ts +25 -4
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +67 -26
- package/dist/animate.js.map +1 -1
- package/dist/blur/index.d.ts +6 -0
- package/dist/blur/index.d.ts.map +1 -0
- package/dist/blur/index.js +196 -0
- package/dist/blur/index.js.map +1 -0
- package/dist/blur/native.d.ts +17 -0
- package/dist/blur/native.d.ts.map +1 -0
- package/dist/blur/native.js +44 -0
- package/dist/blur/native.js.map +1 -0
- package/dist/blur/types.d.ts +32 -0
- package/dist/blur/types.d.ts.map +1 -0
- package/dist/blur/types.js +2 -0
- package/dist/blur/types.js.map +1 -0
- package/dist/bottom-sheet/geometry.d.ts +18 -0
- package/dist/bottom-sheet/geometry.d.ts.map +1 -0
- package/dist/bottom-sheet/geometry.js +51 -0
- package/dist/bottom-sheet/geometry.js.map +1 -0
- package/dist/bottom-sheet/index.d.ts +56 -0
- package/dist/bottom-sheet/index.d.ts.map +1 -0
- package/dist/bottom-sheet/index.js +462 -0
- package/dist/bottom-sheet/index.js.map +1 -0
- package/dist/bottom-sheet/native.d.ts +11 -0
- package/dist/bottom-sheet/native.d.ts.map +1 -0
- package/dist/bottom-sheet/native.js +173 -0
- package/dist/bottom-sheet/native.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +40 -1
- package/dist/config.js.map +1 -1
- package/dist/decay.d.ts +1 -0
- package/dist/decay.d.ts.map +1 -1
- package/dist/decay.js +7 -0
- package/dist/decay.js.map +1 -1
- package/dist/drag-physics.d.ts +6 -1
- package/dist/drag-physics.d.ts.map +1 -1
- package/dist/drag.d.ts +17 -3
- package/dist/drag.d.ts.map +1 -1
- package/dist/drag.js +34 -11
- package/dist/drag.js.map +1 -1
- package/dist/driver/android-gradient.d.ts +5 -0
- package/dist/driver/android-gradient.d.ts.map +1 -0
- package/dist/driver/android-gradient.js +99 -0
- package/dist/driver/android-gradient.js.map +1 -0
- package/dist/driver/android-particles.d.ts +6 -0
- package/dist/driver/android-particles.d.ts.map +1 -0
- package/dist/driver/android-particles.js +93 -0
- package/dist/driver/android-particles.js.map +1 -0
- package/dist/driver/android.d.ts.map +1 -1
- package/dist/driver/android.js +27 -1
- package/dist/driver/android.js.map +1 -1
- package/dist/driver/frame.d.ts +3 -0
- package/dist/driver/frame.d.ts.map +1 -0
- package/dist/driver/frame.js +7 -0
- package/dist/driver/frame.js.map +1 -0
- package/dist/driver/index.d.ts +4 -0
- package/dist/driver/index.d.ts.map +1 -1
- package/dist/driver/index.js.map +1 -1
- package/dist/driver/ios-gradient.d.ts +5 -0
- package/dist/driver/ios-gradient.d.ts.map +1 -0
- package/dist/driver/ios-gradient.js +131 -0
- package/dist/driver/ios-gradient.js.map +1 -0
- package/dist/driver/ios-scroll-delegate.d.ts +4 -0
- package/dist/driver/ios-scroll-delegate.d.ts.map +1 -0
- package/dist/driver/ios-scroll-delegate.js +26 -0
- package/dist/driver/ios-scroll-delegate.js.map +1 -0
- package/dist/driver/ios.d.ts.map +1 -1
- package/dist/driver/ios.js +9 -0
- package/dist/driver/ios.js.map +1 -1
- package/dist/easing.d.ts +3 -1
- package/dist/easing.d.ts.map +1 -1
- package/dist/easing.js +18 -1
- package/dist/easing.js.map +1 -1
- package/dist/engine.d.ts +31 -2
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +194 -42
- package/dist/engine.js.map +1 -1
- package/dist/gesture-native.d.ts +28 -0
- package/dist/gesture-native.d.ts.map +1 -0
- package/dist/gesture-native.js +61 -0
- package/dist/gesture-native.js.map +1 -0
- package/dist/gestures/index.d.ts +69 -0
- package/dist/gestures/index.d.ts.map +1 -0
- package/dist/gestures/index.js +262 -0
- package/dist/gestures/index.js.map +1 -0
- package/dist/glass/index.d.ts +55 -0
- package/dist/glass/index.d.ts.map +1 -0
- package/dist/glass/index.js +205 -0
- package/dist/glass/index.js.map +1 -0
- package/dist/gradient-binding.d.ts +38 -0
- package/dist/gradient-binding.d.ts.map +1 -0
- package/dist/gradient-binding.js +128 -0
- package/dist/gradient-binding.js.map +1 -0
- package/dist/gradient.d.ts +105 -0
- package/dist/gradient.d.ts.map +1 -0
- package/dist/gradient.js +514 -0
- package/dist/gradient.js.map +1 -0
- package/dist/gravity.d.ts +13 -0
- package/dist/gravity.d.ts.map +1 -0
- package/dist/gravity.js +84 -0
- package/dist/gravity.js.map +1 -0
- package/dist/haptics.d.ts.map +1 -1
- package/dist/haptics.js +101 -28
- package/dist/haptics.js.map +1 -1
- package/dist/image-effect.d.ts +1 -0
- package/dist/image-effect.d.ts.map +1 -1
- package/dist/image-effect.js +10 -2
- package/dist/image-effect.js.map +1 -1
- package/dist/index.d.ts +19 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/inspector/index.d.ts +86 -0
- package/dist/inspector/index.d.ts.map +1 -0
- package/dist/inspector/index.js +419 -0
- package/dist/inspector/index.js.map +1 -0
- package/dist/inspector/plot.d.ts +4 -0
- package/dist/inspector/plot.d.ts.map +1 -0
- package/dist/inspector/plot.js +23 -0
- package/dist/inspector/plot.js.map +1 -0
- package/dist/inspector/probe.d.ts +19 -0
- package/dist/inspector/probe.d.ts.map +1 -0
- package/dist/inspector/probe.js +37 -0
- package/dist/inspector/probe.js.map +1 -0
- package/dist/inspector/tuning.d.ts +19 -0
- package/dist/inspector/tuning.d.ts.map +1 -0
- package/dist/inspector/tuning.js +37 -0
- package/dist/inspector/tuning.js.map +1 -0
- package/dist/interactive-navigation/index.d.ts +44 -0
- package/dist/interactive-navigation/index.d.ts.map +1 -0
- package/dist/interactive-navigation/index.js +350 -0
- package/dist/interactive-navigation/index.js.map +1 -0
- package/dist/keyboard.d.ts +24 -0
- package/dist/keyboard.d.ts.map +1 -1
- package/dist/keyboard.js +199 -6
- package/dist/keyboard.js.map +1 -1
- package/dist/live-spring-driver.d.ts +52 -0
- package/dist/live-spring-driver.d.ts.map +1 -0
- package/dist/live-spring-driver.js +104 -0
- package/dist/live-spring-driver.js.map +1 -0
- package/dist/mixer.d.ts +55 -0
- package/dist/mixer.d.ts.map +1 -0
- package/dist/mixer.js +286 -0
- package/dist/mixer.js.map +1 -0
- package/dist/motion-scope.d.ts +8 -2
- package/dist/motion-scope.d.ts.map +1 -1
- package/dist/motion-scope.js +24 -3
- package/dist/motion-scope.js.map +1 -1
- package/dist/motion-states.d.ts +19 -7
- package/dist/motion-states.d.ts.map +1 -1
- package/dist/motion-states.js +116 -26
- package/dist/motion-states.js.map +1 -1
- package/dist/motion-value.d.ts +227 -0
- package/dist/motion-value.d.ts.map +1 -0
- package/dist/motion-value.js +1074 -0
- package/dist/motion-value.js.map +1 -0
- package/dist/native/index.d.ts +10 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +6 -0
- package/dist/native/index.js.map +1 -0
- package/dist/native-properties.d.ts +28 -0
- package/dist/native-properties.d.ts.map +1 -0
- package/dist/native-properties.js +154 -0
- package/dist/native-properties.js.map +1 -0
- package/dist/native-property-driver.d.ts +19 -0
- package/dist/native-property-driver.d.ts.map +1 -0
- package/dist/native-property-driver.js +69 -0
- package/dist/native-property-driver.js.map +1 -0
- package/dist/native-property.d.ts +37 -0
- package/dist/native-property.d.ts.map +1 -0
- package/dist/native-property.js +285 -0
- package/dist/native-property.js.map +1 -0
- package/dist/particles.d.ts +5 -2
- package/dist/particles.d.ts.map +1 -1
- package/dist/particles.js +16 -10
- package/dist/particles.js.map +1 -1
- package/dist/path.d.ts.map +1 -1
- package/dist/path.js +2 -2
- package/dist/path.js.map +1 -1
- package/dist/physics/index.d.ts +139 -0
- package/dist/physics/index.d.ts.map +1 -0
- package/dist/physics/index.js +316 -0
- package/dist/physics/index.js.map +1 -0
- package/dist/physics/native.d.ts +54 -0
- package/dist/physics/native.d.ts.map +1 -0
- package/dist/physics/native.js +64 -0
- package/dist/physics/native.js.map +1 -0
- package/dist/playback-group.d.ts.map +1 -1
- package/dist/playback-group.js +17 -1
- package/dist/playback-group.js.map +1 -1
- package/dist/playback.d.ts +15 -0
- package/dist/playback.d.ts.map +1 -1
- package/dist/playback.js +23 -0
- package/dist/playback.js.map +1 -1
- package/dist/predictive-back/index.d.ts +45 -0
- package/dist/predictive-back/index.d.ts.map +1 -0
- package/dist/predictive-back/index.js +220 -0
- package/dist/predictive-back/index.js.map +1 -0
- package/dist/predictive-back/presentation.d.ts +4 -0
- package/dist/predictive-back/presentation.d.ts.map +1 -0
- package/dist/predictive-back/presentation.js +3 -0
- package/dist/predictive-back/presentation.js.map +1 -0
- package/dist/press.d.ts.map +1 -1
- package/dist/press.js +11 -2
- package/dist/press.js.map +1 -1
- package/dist/reorder/handle.d.ts +6 -0
- package/dist/reorder/handle.d.ts.map +1 -0
- package/dist/reorder/handle.js +10 -0
- package/dist/reorder/handle.js.map +1 -0
- package/dist/reorder/index.d.ts +10 -0
- package/dist/reorder/index.d.ts.map +1 -0
- package/dist/reorder/index.js +233 -0
- package/dist/reorder/index.js.map +1 -0
- package/dist/reorder/list-view.d.ts +5 -0
- package/dist/reorder/list-view.d.ts.map +1 -0
- package/dist/reorder/list-view.js +238 -0
- package/dist/reorder/list-view.js.map +1 -0
- package/dist/reorder/model.d.ts +6 -0
- package/dist/reorder/model.d.ts.map +1 -0
- package/dist/reorder/model.js +30 -0
- package/dist/reorder/model.js.map +1 -0
- package/dist/reorder/surface.d.ts +6 -0
- package/dist/reorder/surface.d.ts.map +1 -0
- package/dist/reorder/surface.js +10 -0
- package/dist/reorder/surface.js.map +1 -0
- package/dist/reorder/types.d.ts +92 -0
- package/dist/reorder/types.d.ts.map +1 -0
- package/dist/reorder/types.js +2 -0
- package/dist/reorder/types.js.map +1 -0
- package/dist/sampling.d.ts +35 -0
- package/dist/sampling.d.ts.map +1 -0
- package/dist/sampling.js +123 -0
- package/dist/sampling.js.map +1 -0
- package/dist/scene-appearance.d.ts +14 -0
- package/dist/scene-appearance.d.ts.map +1 -0
- package/dist/scene-appearance.js +68 -0
- package/dist/scene-appearance.js.map +1 -0
- package/dist/scene-camera.d.ts +5 -0
- package/dist/scene-camera.d.ts.map +1 -0
- package/dist/scene-camera.js +23 -0
- package/dist/scene-camera.js.map +1 -0
- package/dist/scene-shader.d.ts +18 -0
- package/dist/scene-shader.d.ts.map +1 -0
- package/dist/scene-shader.js +76 -0
- package/dist/scene-shader.js.map +1 -0
- package/dist/scroll-header/geometry.d.ts +18 -0
- package/dist/scroll-header/geometry.d.ts.map +1 -0
- package/dist/scroll-header/geometry.js +46 -0
- package/dist/scroll-header/geometry.js.map +1 -0
- package/dist/scroll-header/index.d.ts +48 -0
- package/dist/scroll-header/index.d.ts.map +1 -0
- package/dist/scroll-header/index.js +399 -0
- package/dist/scroll-header/index.js.map +1 -0
- package/dist/scroll-header/native.d.ts +28 -0
- package/dist/scroll-header/native.d.ts.map +1 -0
- package/dist/scroll-header/native.js +43 -0
- package/dist/scroll-header/native.js.map +1 -0
- package/dist/sensors/index.d.ts +69 -0
- package/dist/sensors/index.d.ts.map +1 -0
- package/dist/sensors/index.js +149 -0
- package/dist/sensors/index.js.map +1 -0
- package/dist/sensors/native.d.ts +20 -0
- package/dist/sensors/native.d.ts.map +1 -0
- package/dist/sensors/native.js +48 -0
- package/dist/sensors/native.js.map +1 -0
- package/dist/sequence.d.ts +24 -0
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +181 -19
- package/dist/sequence.js.map +1 -1
- package/dist/shapes/android.d.ts +3 -0
- package/dist/shapes/android.d.ts.map +1 -0
- package/dist/shapes/android.js +51 -0
- package/dist/shapes/android.js.map +1 -0
- package/dist/shapes/index.d.ts +6 -0
- package/dist/shapes/index.d.ts.map +1 -0
- package/dist/shapes/index.js +238 -0
- package/dist/shapes/index.js.map +1 -0
- package/dist/shapes/ios.d.ts +3 -0
- package/dist/shapes/ios.d.ts.map +1 -0
- package/dist/shapes/ios.js +164 -0
- package/dist/shapes/ios.js.map +1 -0
- package/dist/shapes/native.d.ts +18 -0
- package/dist/shapes/native.d.ts.map +1 -0
- package/dist/shapes/native.js +10 -0
- package/dist/shapes/native.js.map +1 -0
- package/dist/shapes/path.d.ts +10 -0
- package/dist/shapes/path.d.ts.map +1 -0
- package/dist/shapes/path.js +106 -0
- package/dist/shapes/path.js.map +1 -0
- package/dist/shapes/types.d.ts +55 -0
- package/dist/shapes/types.d.ts.map +1 -0
- package/dist/shapes/types.js +11 -0
- package/dist/shapes/types.js.map +1 -0
- package/dist/shared-layout/index.d.ts +40 -0
- package/dist/shared-layout/index.d.ts.map +1 -0
- package/dist/shared-layout/index.js +267 -0
- package/dist/shared-layout/index.js.map +1 -0
- package/dist/shared-layout/native.d.ts +15 -0
- package/dist/shared-layout/native.d.ts.map +1 -0
- package/dist/shared-layout/native.js +79 -0
- package/dist/shared-layout/native.js.map +1 -0
- package/dist/shared-layout/timing.d.ts +9 -0
- package/dist/shared-layout/timing.d.ts.map +1 -0
- package/dist/shared-layout/timing.js +68 -0
- package/dist/shared-layout/timing.js.map +1 -0
- package/dist/shared-navigation/entry.d.ts +51 -0
- package/dist/shared-navigation/entry.d.ts.map +1 -0
- package/dist/shared-navigation/entry.js +619 -0
- package/dist/shared-navigation/entry.js.map +1 -0
- package/dist/shared-navigation/index.d.ts +58 -0
- package/dist/shared-navigation/index.d.ts.map +1 -0
- package/dist/shared-navigation/index.js +318 -0
- package/dist/shared-navigation/index.js.map +1 -0
- package/dist/shared-navigation/return-signal.d.ts +16 -0
- package/dist/shared-navigation/return-signal.d.ts.map +1 -0
- package/dist/shared-navigation/return-signal.js +35 -0
- package/dist/shared-navigation/return-signal.js.map +1 -0
- package/dist/shared-navigation/return-target.d.ts +32 -0
- package/dist/shared-navigation/return-target.d.ts.map +1 -0
- package/dist/shared-navigation/return-target.js +168 -0
- package/dist/shared-navigation/return-target.js.map +1 -0
- package/dist/shared-navigation/scope.d.ts +4 -0
- package/dist/shared-navigation/scope.d.ts.map +1 -0
- package/dist/shared-navigation/scope.js +2 -0
- package/dist/shared-navigation/scope.js.map +1 -0
- package/dist/shared-navigation/targets.d.ts +6 -0
- package/dist/shared-navigation/targets.d.ts.map +1 -0
- package/dist/shared-navigation/targets.js +36 -0
- package/dist/shared-navigation/targets.js.map +1 -0
- package/dist/size-layout.d.ts +19 -0
- package/dist/size-layout.d.ts.map +1 -0
- package/dist/size-layout.js +216 -0
- package/dist/size-layout.js.map +1 -0
- package/dist/size.d.ts +19 -0
- package/dist/size.d.ts.map +1 -0
- package/dist/size.js +251 -0
- package/dist/size.js.map +1 -0
- package/dist/spring.d.ts +2 -0
- package/dist/spring.d.ts.map +1 -1
- package/dist/spring.js +11 -0
- package/dist/spring.js.map +1 -1
- package/dist/svg-path.d.ts +18 -0
- package/dist/svg-path.d.ts.map +1 -1
- package/dist/svg-path.js +3 -2
- package/dist/svg-path.js.map +1 -1
- package/dist/testing/clock.d.ts +40 -0
- package/dist/testing/clock.d.ts.map +1 -0
- package/dist/testing/clock.js +116 -0
- package/dist/testing/clock.js.map +1 -0
- package/dist/testing/handoff-recorder.d.ts +8 -0
- package/dist/testing/handoff-recorder.d.ts.map +1 -0
- package/dist/testing/handoff-recorder.js +77 -0
- package/dist/testing/handoff-recorder.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/native.d.ts +46 -0
- package/dist/testing/native.d.ts.map +1 -0
- package/dist/testing/native.js +313 -0
- package/dist/testing/native.js.map +1 -0
- package/dist/testing/presentation.d.ts +11 -0
- package/dist/testing/presentation.d.ts.map +1 -0
- package/dist/testing/presentation.js +45 -0
- package/dist/testing/presentation.js.map +1 -0
- package/dist/testing/replay.d.ts +39 -0
- package/dist/testing/replay.d.ts.map +1 -0
- package/dist/testing/replay.js +99 -0
- package/dist/testing/replay.js.map +1 -0
- package/dist/testing/scroll-handoff-native.d.ts +10 -0
- package/dist/testing/scroll-handoff-native.d.ts.map +1 -0
- package/dist/testing/scroll-handoff-native.js +151 -0
- package/dist/testing/scroll-handoff-native.js.map +1 -0
- package/dist/testing/scroll-handoff.d.ts +25 -0
- package/dist/testing/scroll-handoff.d.ts.map +1 -0
- package/dist/testing/scroll-handoff.js +127 -0
- package/dist/testing/scroll-handoff.js.map +1 -0
- package/dist/testing/sensors.d.ts +13 -0
- package/dist/testing/sensors.d.ts.map +1 -0
- package/dist/testing/sensors.js +26 -0
- package/dist/testing/sensors.js.map +1 -0
- package/dist/testing/trace.d.ts +101 -0
- package/dist/testing/trace.d.ts.map +1 -0
- package/dist/testing/trace.js +263 -0
- package/dist/testing/trace.js.map +1 -0
- package/dist/timed-animation.d.ts +38 -0
- package/dist/timed-animation.d.ts.map +1 -0
- package/dist/timed-animation.js +177 -0
- package/dist/timed-animation.js.map +1 -0
- package/dist/track.d.ts +3 -0
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +281 -40
- package/dist/track.js.map +1 -1
- package/dist/transition.d.ts +54 -2
- package/dist/transition.d.ts.map +1 -1
- package/dist/transition.js +128 -8
- package/dist/transition.js.map +1 -1
- package/dist/types.d.ts +10 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/value-observers.d.ts +22 -0
- package/dist/value-observers.d.ts.map +1 -0
- package/dist/value-observers.js +122 -0
- package/dist/value-observers.js.map +1 -0
- package/dist/value-track.d.ts +13 -0
- package/dist/value-track.d.ts.map +1 -0
- package/dist/value-track.js +59 -0
- package/dist/value-track.js.map +1 -0
- package/dist/vue/index.d.ts +33 -3
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.js +118 -3
- package/dist/vue/index.js.map +1 -1
- package/dist/zoomable.d.ts +1 -1
- package/dist/zoomable.d.ts.map +1 -1
- package/package.json +68 -3
- package/platforms/android/include.gradle +10 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/BlurEffect.java +89 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/CircleMath.java +158 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/CircleWorld.java +221 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/GestureSession.java +227 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/GestureSurface.java +54 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/GradientLayer.java +224 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFrame.java +53 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFrameFollower.java +57 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardObserver.java +97 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/LiveSpring.java +277 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/MotionProbe.java +70 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ParticleEmitter.java +192 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ParticleSimulation.java +114 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/PredictiveBackSession.java +212 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ReorderHandle.java +25 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ReorderSession.java +213 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ReorderSurface.java +27 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ScrollHeader.java +84 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/SensorMath.java +28 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/SensorSource.java +217 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ShapeLayer.java +120 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/SharedLayoutFlight.java +287 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/SharedNavigationScene.java +115 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/SpringState.java +39 -0
- package/platforms/android/proguard-rules.pro +20 -0
- package/platforms/ios/build.xcconfig +1 -1
- package/platforms/ios/src/JoltBlur.h +14 -0
- package/platforms/ios/src/JoltBlur.m +86 -0
- package/platforms/ios/src/JoltCircleMath.h +191 -0
- package/platforms/ios/src/JoltCircleWorld.h +18 -0
- package/platforms/ios/src/JoltCircleWorld.m +218 -0
- package/platforms/ios/src/JoltGestureSession.h +23 -0
- package/platforms/ios/src/JoltGestureSession.m +251 -0
- package/platforms/ios/src/JoltInteractiveNavigation.h +23 -0
- package/platforms/ios/src/JoltInteractiveNavigation.m +255 -0
- package/platforms/ios/src/JoltLiveSpring.h +29 -0
- package/platforms/ios/src/JoltLiveSpring.m +243 -0
- package/platforms/ios/src/JoltMotionProbe.h +9 -0
- package/platforms/ios/src/JoltMotionProbe.m +72 -0
- package/platforms/ios/src/JoltReorderSession.h +15 -0
- package/platforms/ios/src/JoltReorderSession.m +205 -0
- package/platforms/ios/src/JoltScrollHeader.h +13 -0
- package/platforms/ios/src/JoltScrollHeader.m +101 -0
- package/platforms/ios/src/JoltSensorMath.h +39 -0
- package/platforms/ios/src/JoltSensorSource.h +13 -0
- package/platforms/ios/src/JoltSensorSource.m +201 -0
- package/platforms/ios/src/JoltSharedLayoutFlight.h +19 -0
- package/platforms/ios/src/JoltSharedLayoutFlight.m +250 -0
- package/platforms/ios/src/JoltSpringState.h +35 -0
- package/platforms/ios/src/module.modulemap +10 -0
- package/src/android-plugin.d.ts +464 -0
- package/src/animate.ts +129 -15
- package/src/blur/index.ts +195 -0
- package/src/blur/native.ts +70 -0
- package/src/blur/types.ts +32 -0
- package/src/bottom-sheet/geometry.ts +84 -0
- package/src/bottom-sheet/index.ts +536 -0
- package/src/bottom-sheet/native.ts +214 -0
- package/src/config.ts +39 -1
- package/src/decay.ts +9 -0
- package/src/drag.ts +67 -21
- package/src/driver/android-gradient.ts +116 -0
- package/src/driver/android-particles.ts +118 -0
- package/src/driver/android.ts +31 -1
- package/src/driver/frame.ts +10 -0
- package/src/driver/index.ts +4 -0
- package/src/driver/ios-gradient.ts +136 -0
- package/src/driver/ios-scroll-delegate.ts +23 -0
- package/src/driver/ios.ts +10 -0
- package/src/easing.ts +21 -1
- package/src/engine.ts +209 -60
- package/src/gesture-native.ts +139 -0
- package/src/gestures/index.ts +365 -0
- package/src/glass/index.ts +218 -0
- package/src/gradient-binding.ts +158 -0
- package/src/gradient.ts +663 -0
- package/src/gravity.ts +107 -0
- package/src/haptics.ts +106 -28
- package/src/image-effect.ts +10 -2
- package/src/index.ts +56 -7
- package/src/inspector/index.ts +523 -0
- package/src/inspector/plot.ts +27 -0
- package/src/inspector/probe.ts +50 -0
- package/src/inspector/tuning.ts +51 -0
- package/src/interactive-navigation/index.ts +427 -0
- package/src/ios-plugin.d.ts +280 -0
- package/src/keyboard.ts +231 -7
- package/src/live-spring-driver.ts +181 -0
- package/src/mixer.ts +312 -0
- package/src/motion-scope.ts +39 -6
- package/src/motion-states.ts +149 -42
- package/src/motion-value.ts +1289 -0
- package/src/native/index.ts +30 -0
- package/src/native-properties.ts +188 -0
- package/src/native-property-driver.ts +123 -0
- package/src/native-property.ts +366 -0
- package/src/particles.ts +18 -17
- package/src/path.ts +2 -1
- package/src/physics/index.ts +476 -0
- package/src/physics/native.ts +121 -0
- package/src/playback-group.ts +17 -1
- package/src/playback.ts +41 -0
- package/src/predictive-back/index.ts +280 -0
- package/src/predictive-back/presentation.ts +6 -0
- package/src/press.ts +10 -2
- package/src/reorder/handle.ts +9 -0
- package/src/reorder/index.ts +243 -0
- package/src/reorder/list-view.ts +262 -0
- package/src/reorder/model.ts +47 -0
- package/src/reorder/surface.ts +10 -0
- package/src/reorder/types.ts +87 -0
- package/src/sampling.ts +173 -0
- package/src/scene-appearance.ts +92 -0
- package/src/scene-camera.ts +30 -0
- package/src/scene-shader.ts +139 -0
- package/src/scroll-header/geometry.ts +88 -0
- package/src/scroll-header/index.ts +530 -0
- package/src/scroll-header/native.ts +89 -0
- package/src/sensors/index.ts +246 -0
- package/src/sensors/native.ts +72 -0
- package/src/sequence.ts +209 -20
- package/src/shapes/android.ts +63 -0
- package/src/shapes/index.ts +267 -0
- package/src/shapes/ios.ts +194 -0
- package/src/shapes/native.ts +27 -0
- package/src/shapes/path.ts +127 -0
- package/src/shapes/types.ts +63 -0
- package/src/shared-layout/index.ts +343 -0
- package/src/shared-layout/native.ts +138 -0
- package/src/shared-layout/timing.ts +87 -0
- package/src/shared-navigation/entry.ts +695 -0
- package/src/shared-navigation/index.ts +414 -0
- package/src/shared-navigation/return-signal.ts +41 -0
- package/src/shared-navigation/return-target.ts +197 -0
- package/src/shared-navigation/scope.ts +3 -0
- package/src/shared-navigation/targets.ts +38 -0
- package/src/size-layout.ts +237 -0
- package/src/size.ts +302 -0
- package/src/spring.ts +18 -0
- package/src/svg-path.ts +8 -3
- package/src/testing/clock.ts +128 -0
- package/src/testing/handoff-recorder.ts +98 -0
- package/src/testing/index.ts +4 -0
- package/src/testing/native.ts +386 -0
- package/src/testing/presentation.ts +46 -0
- package/src/testing/replay.ts +149 -0
- package/src/testing/scroll-handoff-native.ts +201 -0
- package/src/testing/scroll-handoff.ts +140 -0
- package/src/testing/sensors.ts +41 -0
- package/src/testing/trace.ts +340 -0
- package/src/timed-animation.ts +192 -0
- package/src/track.ts +334 -38
- package/src/transition.ts +197 -9
- package/src/types.ts +11 -1
- package/src/value-observers.ts +147 -0
- package/src/value-track.ts +71 -0
- package/src/vue/index.ts +147 -1
- package/src/zoomable.ts +1 -1
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
import { ReturnScope } from '../shared-navigation/return-signal.js'
|
|
2
|
+
import {
|
|
3
|
+
Application,
|
|
4
|
+
Image,
|
|
5
|
+
isIOS,
|
|
6
|
+
SharedTransition,
|
|
7
|
+
Transition,
|
|
8
|
+
Trace,
|
|
9
|
+
type EventData,
|
|
10
|
+
type Frame,
|
|
11
|
+
type NavigationTransition,
|
|
12
|
+
type Page,
|
|
13
|
+
type NavigationData,
|
|
14
|
+
} from '@nativescript/core'
|
|
15
|
+
import {
|
|
16
|
+
resolveReturnTarget,
|
|
17
|
+
validateReturnTarget,
|
|
18
|
+
focusReturnTarget,
|
|
19
|
+
type SharedReturnTarget,
|
|
20
|
+
} from '../shared-navigation/return-target.js'
|
|
21
|
+
import { find, radius, supportedImage } from '../shared-navigation/targets.js'
|
|
22
|
+
import { onReducedMotion, reducedMotion, timeScale } from '../config.js'
|
|
23
|
+
import { springPhysics } from '../spring.js'
|
|
24
|
+
import { springs, type Spring } from '../transition.js'
|
|
25
|
+
|
|
26
|
+
export type InteractiveNavigationState =
|
|
27
|
+
'ready' | 'animating' | 'idle' | 'dragging' | 'finishing' | 'cancelling' | 'disposed'
|
|
28
|
+
export interface InteractiveNavigationEvent {
|
|
29
|
+
state: InteractiveNavigationState
|
|
30
|
+
outcome?: 'completed' | 'cancelled'
|
|
31
|
+
shared?: { status: 'ready' | 'unavailable'; reason?: string }
|
|
32
|
+
/** Present on finishing/cancelling. Velocity is page widths per second. */
|
|
33
|
+
release?: Readonly<{ progress: number; velocity: number }>
|
|
34
|
+
}
|
|
35
|
+
export interface InteractiveNavigationOptions {
|
|
36
|
+
/** Optional stable image/card identity in the two pages. Unsupported pairs use normal page motion. */
|
|
37
|
+
shared?: { tag: string; maxSnapshotPixels?: number; returnTarget?: SharedReturnTarget }
|
|
38
|
+
/** Same physics as Jolt's live springs. Default smooth; settling is bounded at 3 s. */
|
|
39
|
+
spring?:
|
|
40
|
+
| keyof typeof springs
|
|
41
|
+
| Pick<Spring, 'duration' | 'bounce' | 'stiffness' | 'damping' | 'mass'>
|
|
42
|
+
/** Synchronous extra gate. Page.enableSwipeBackNavigation is always respected. */
|
|
43
|
+
canBegin?: () => boolean
|
|
44
|
+
/** Lifecycle only. Finger updates and spring playback stay in Objective-C. */
|
|
45
|
+
onState?: (event: InteractiveNavigationEvent) => void
|
|
46
|
+
}
|
|
47
|
+
export interface InteractiveNavigation {
|
|
48
|
+
readonly supported: boolean
|
|
49
|
+
/** Use for ONE pushed Frame entry. Pass to Frame.navigate or router.push. */
|
|
50
|
+
readonly transition: NavigationTransition | undefined
|
|
51
|
+
readonly state: InteractiveNavigationState
|
|
52
|
+
/** Rolls back a held drag. A release already committed to UIKit finishes normally. */
|
|
53
|
+
cancel(): void
|
|
54
|
+
/** Detaches the gesture; future programmatic back uses UIKit's default transition. */
|
|
55
|
+
dispose(): void
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Interactive iOS page navigation using Core's existing UINavigationController delegate. */
|
|
59
|
+
export function interactiveNavigation(
|
|
60
|
+
frame: Frame,
|
|
61
|
+
options: InteractiveNavigationOptions = {},
|
|
62
|
+
): InteractiveNavigation {
|
|
63
|
+
if (
|
|
64
|
+
options.shared &&
|
|
65
|
+
(typeof options.shared.tag !== 'string' || !options.shared.tag.trim())
|
|
66
|
+
)
|
|
67
|
+
throw new TypeError('A nonempty sharedTransitionTag is required.')
|
|
68
|
+
validateReturnTarget(options.shared?.returnTarget)
|
|
69
|
+
const budget = options.shared?.maxSnapshotPixels ?? 8_000_000
|
|
70
|
+
if (!Number.isSafeInteger(budget) || budget <= 0 || budget > 32_000_000)
|
|
71
|
+
throw new RangeError('maxSnapshotPixels must be a positive integer at most 32000000.')
|
|
72
|
+
const input =
|
|
73
|
+
typeof options.spring === 'string' ? springs[options.spring] : options.spring
|
|
74
|
+
if (options.spring !== undefined && !input)
|
|
75
|
+
throw new TypeError('Unknown navigation spring.')
|
|
76
|
+
for (const [key, value] of Object.entries(input ?? {}) as [string, unknown][]) {
|
|
77
|
+
if (!['type', 'duration', 'bounce', 'stiffness', 'damping', 'mass'].includes(key))
|
|
78
|
+
throw new TypeError(`Unsupported navigation spring option: ${key}.`)
|
|
79
|
+
if (key === 'type' && value !== 'spring')
|
|
80
|
+
throw new TypeError('Interactive navigation requires a spring.')
|
|
81
|
+
if (key !== 'type' && (typeof value !== 'number' || !Number.isFinite(value)))
|
|
82
|
+
throw new RangeError(`${key} must be finite.`)
|
|
83
|
+
if (['duration', 'stiffness', 'mass'].includes(key) && (value as number) <= 0)
|
|
84
|
+
throw new RangeError(`${key} must be positive.`)
|
|
85
|
+
if (key === 'damping' && (value as number) < 0)
|
|
86
|
+
throw new RangeError('damping must be nonnegative.')
|
|
87
|
+
}
|
|
88
|
+
const physics = springPhysics(input ?? springs.smooth)
|
|
89
|
+
if (Object.values(physics).some((value) => !Number.isFinite(value)))
|
|
90
|
+
throw new RangeError('Navigation spring physics must be finite.')
|
|
91
|
+
const supported = isIOS && typeof JoltInteractiveNavigation !== 'undefined'
|
|
92
|
+
let state: InteractiveNavigationState = 'ready'
|
|
93
|
+
let native: JoltInteractiveNavigation | undefined, page: Page | undefined
|
|
94
|
+
let candidate: Page | undefined
|
|
95
|
+
let start: (() => void) | undefined
|
|
96
|
+
let transitioning = false
|
|
97
|
+
let fromPage: Page | undefined, toPage: Page | undefined
|
|
98
|
+
let shared: InteractiveNavigationEvent['shared']
|
|
99
|
+
let targetScope: ReturnScope | undefined
|
|
100
|
+
let detachTarget: (() => void) | undefined
|
|
101
|
+
let resolvedReturn: import('@nativescript/core').View | undefined
|
|
102
|
+
let returning = false
|
|
103
|
+
let suspended = false
|
|
104
|
+
let resumeTimer: ReturnType<typeof setTimeout> | undefined
|
|
105
|
+
const originalPage = frame.currentPage
|
|
106
|
+
function prepareShared() {
|
|
107
|
+
if (!native || !options.shared) return
|
|
108
|
+
if (returning && options.shared.returnTarget && toPage) {
|
|
109
|
+
targetScope?.abort()
|
|
110
|
+
detachTarget?.()
|
|
111
|
+
detachTarget = undefined
|
|
112
|
+
const scope = (targetScope = new ReturnScope())
|
|
113
|
+
resolvedReturn = undefined
|
|
114
|
+
const targetPage = toPage,
|
|
115
|
+
owner = native,
|
|
116
|
+
sharedOptions = options.shared
|
|
117
|
+
void resolveReturnTarget(
|
|
118
|
+
sharedOptions.returnTarget!,
|
|
119
|
+
sharedOptions.tag,
|
|
120
|
+
targetPage,
|
|
121
|
+
scope.signal,
|
|
122
|
+
).then((result) => {
|
|
123
|
+
if (scope.signal.aborted || state === 'disposed' || native !== owner) return
|
|
124
|
+
if (result.view) {
|
|
125
|
+
resolvedReturn = result.view
|
|
126
|
+
installShared()
|
|
127
|
+
const target = result.view
|
|
128
|
+
const invalidated = () => {
|
|
129
|
+
shared = { status: 'unavailable', reason: 'target-invalidated' }
|
|
130
|
+
owner.cancel()
|
|
131
|
+
}
|
|
132
|
+
const events = [
|
|
133
|
+
'bindingContextChange',
|
|
134
|
+
'sharedTransitionTagChange',
|
|
135
|
+
'imageSourceChange',
|
|
136
|
+
'unloaded',
|
|
137
|
+
]
|
|
138
|
+
for (const event of events) target.on(event, invalidated)
|
|
139
|
+
detachTarget = () => {
|
|
140
|
+
for (const event of events) target.off(event, invalidated)
|
|
141
|
+
}
|
|
142
|
+
} else shared = { status: 'unavailable', reason: result.reason }
|
|
143
|
+
owner.completeSharedPreparation()
|
|
144
|
+
})
|
|
145
|
+
return
|
|
146
|
+
}
|
|
147
|
+
installShared()
|
|
148
|
+
}
|
|
149
|
+
function installShared() {
|
|
150
|
+
if (!native || !options.shared) return
|
|
151
|
+
const unavailable = (reason: string) => {
|
|
152
|
+
shared = { status: 'unavailable', reason }
|
|
153
|
+
}
|
|
154
|
+
if (reducedMotion()) return unavailable('reduced-motion')
|
|
155
|
+
const sources = find(fromPage, options.shared.tag, true),
|
|
156
|
+
targets = find(toPage, options.shared.tag, true)
|
|
157
|
+
if (sources.length !== 1)
|
|
158
|
+
return unavailable(sources.length ? 'duplicate-source' : 'missing-source')
|
|
159
|
+
if (targets.length !== 1)
|
|
160
|
+
return unavailable(targets.length ? 'duplicate-target' : 'missing-target')
|
|
161
|
+
const source = sources[0]!,
|
|
162
|
+
target = targets[0]!,
|
|
163
|
+
image = source instanceof Image
|
|
164
|
+
if (
|
|
165
|
+
image &&
|
|
166
|
+
(!supportedImage(source) ||
|
|
167
|
+
!supportedImage(target) ||
|
|
168
|
+
(source.src !== target.src && source.imageSource !== target.imageSource))
|
|
169
|
+
)
|
|
170
|
+
return unavailable('unsupported-image')
|
|
171
|
+
if (!image && target instanceof Image) return unavailable('content-mismatch')
|
|
172
|
+
try {
|
|
173
|
+
shared = native.prepareSharedFromToImageFromRadiusToRadiusMaxPixels(
|
|
174
|
+
source.nativeViewProtected,
|
|
175
|
+
target.nativeViewProtected,
|
|
176
|
+
image,
|
|
177
|
+
radius(source),
|
|
178
|
+
radius(target),
|
|
179
|
+
budget,
|
|
180
|
+
)
|
|
181
|
+
? { status: 'ready' }
|
|
182
|
+
: { status: 'unavailable', reason: 'unsupported-geometry' }
|
|
183
|
+
} catch {
|
|
184
|
+
unavailable('native-unavailable')
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
let transition: NavigationTransition | undefined
|
|
188
|
+
let releaseMotion: (() => void) | undefined
|
|
189
|
+
const emit = (
|
|
190
|
+
next: InteractiveNavigationState,
|
|
191
|
+
outcome?: InteractiveNavigationEvent['outcome'],
|
|
192
|
+
release?: InteractiveNavigationEvent['release'],
|
|
193
|
+
) => {
|
|
194
|
+
if (state === 'disposed') return
|
|
195
|
+
state = next
|
|
196
|
+
try {
|
|
197
|
+
options.onState?.({
|
|
198
|
+
state,
|
|
199
|
+
...(shared ? { shared } : {}),
|
|
200
|
+
...(outcome ? { outcome } : {}),
|
|
201
|
+
...(release ? { release } : {}),
|
|
202
|
+
})
|
|
203
|
+
} catch (error) {
|
|
204
|
+
Trace.write(
|
|
205
|
+
`Interactive navigation observer failed: ${String(error)}`,
|
|
206
|
+
'Jolt',
|
|
207
|
+
Trace.messageType.error,
|
|
208
|
+
)
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const cancel = () => {
|
|
212
|
+
targetScope?.abort()
|
|
213
|
+
native?.cancel()
|
|
214
|
+
}
|
|
215
|
+
const suspend = () => {
|
|
216
|
+
suspended = true
|
|
217
|
+
if (resumeTimer !== undefined) clearTimeout(resumeTimer)
|
|
218
|
+
resumeTimer = undefined
|
|
219
|
+
cancel()
|
|
220
|
+
}
|
|
221
|
+
const unload = () => {
|
|
222
|
+
// Core unloads the root view in the background, without removing its routes.
|
|
223
|
+
if (suspended) cancel()
|
|
224
|
+
else control.dispose()
|
|
225
|
+
}
|
|
226
|
+
const shown = () => native?.sync()
|
|
227
|
+
const swipeChanged = () => {
|
|
228
|
+
void Promise.resolve().then(shown)
|
|
229
|
+
}
|
|
230
|
+
const arrived = () => {
|
|
231
|
+
if (transitioning) return
|
|
232
|
+
// clearHistory/replace/programmatic pop also release the entry's recognizer.
|
|
233
|
+
if (
|
|
234
|
+
page &&
|
|
235
|
+
frame.currentPage !== page &&
|
|
236
|
+
!frame.backStack.some((entry) => entry.resolvedPage === page)
|
|
237
|
+
)
|
|
238
|
+
void Promise.resolve().then(() => control.dispose())
|
|
239
|
+
else shown()
|
|
240
|
+
}
|
|
241
|
+
const resume = () => {
|
|
242
|
+
suspended = false
|
|
243
|
+
// Core raises resume before reloading the root. A macrotask lets that load
|
|
244
|
+
// finish, including when native callbacks drain JS microtasks in between.
|
|
245
|
+
if (resumeTimer !== undefined) clearTimeout(resumeTimer)
|
|
246
|
+
resumeTimer = setTimeout(() => {
|
|
247
|
+
resumeTimer = undefined
|
|
248
|
+
if (frame.isLoaded) arrived()
|
|
249
|
+
else control.dispose()
|
|
250
|
+
}, 0)
|
|
251
|
+
}
|
|
252
|
+
const entering = (args: EventData) => {
|
|
253
|
+
const event = args as NavigationData
|
|
254
|
+
if (!page && !event.isBack) candidate = event.entry?.resolvedPage
|
|
255
|
+
}
|
|
256
|
+
class PageMotion extends Transition {
|
|
257
|
+
override setupInteractiveGesture(callback: () => void) {
|
|
258
|
+
start = callback
|
|
259
|
+
}
|
|
260
|
+
override iosNavigatedController(
|
|
261
|
+
nav: UINavigationController,
|
|
262
|
+
operation: number,
|
|
263
|
+
from: UIViewController,
|
|
264
|
+
to: UIViewController,
|
|
265
|
+
) {
|
|
266
|
+
if (state === 'disposed' || nav !== frame.ios.controller) return undefined
|
|
267
|
+
if (operation === 1) {
|
|
268
|
+
// An entry owns one transition. Reusing its instance never steals another page.
|
|
269
|
+
if (page || candidate?.ios !== to) return undefined
|
|
270
|
+
page = candidate
|
|
271
|
+
page.on('enableSwipeBackNavigationChange', swipeChanged)
|
|
272
|
+
}
|
|
273
|
+
if (!page) return undefined
|
|
274
|
+
const pages = [
|
|
275
|
+
originalPage,
|
|
276
|
+
page,
|
|
277
|
+
...frame.backStack.map((entry) => entry.resolvedPage),
|
|
278
|
+
]
|
|
279
|
+
fromPage = pages.find((candidate) => candidate?.ios === from)
|
|
280
|
+
toPage = pages.find((candidate) => candidate?.ios === to)
|
|
281
|
+
shared = undefined
|
|
282
|
+
returning = operation !== 1
|
|
283
|
+
transitioning = true
|
|
284
|
+
if (!native) {
|
|
285
|
+
native = JoltInteractiveNavigation.attachStiffnessDampingMassShouldBeginOnEvent(
|
|
286
|
+
nav,
|
|
287
|
+
physics.stiffness,
|
|
288
|
+
physics.damping,
|
|
289
|
+
physics.mass,
|
|
290
|
+
() => {
|
|
291
|
+
try {
|
|
292
|
+
return (
|
|
293
|
+
state === 'idle' &&
|
|
294
|
+
!suspended &&
|
|
295
|
+
frame.isLoaded &&
|
|
296
|
+
!!start &&
|
|
297
|
+
!reducedMotion() &&
|
|
298
|
+
!!page &&
|
|
299
|
+
frame.currentPage === page &&
|
|
300
|
+
page.enableSwipeBackNavigation &&
|
|
301
|
+
frame.canGoBack() &&
|
|
302
|
+
(options.canBegin?.() ?? true) === true
|
|
303
|
+
)
|
|
304
|
+
} catch {
|
|
305
|
+
return false
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
(event) => {
|
|
309
|
+
if (state === 'disposed') return
|
|
310
|
+
if (event === 8) {
|
|
311
|
+
prepareShared()
|
|
312
|
+
return
|
|
313
|
+
}
|
|
314
|
+
if (event === 2) {
|
|
315
|
+
transitioning = true
|
|
316
|
+
frame.transitionId = this.id
|
|
317
|
+
SharedTransition.updateState(this.id, {
|
|
318
|
+
interactiveBegan: true,
|
|
319
|
+
interactiveCancelled: false,
|
|
320
|
+
})
|
|
321
|
+
emit('dragging')
|
|
322
|
+
start?.()
|
|
323
|
+
} else if (event === 3 || event === 4) {
|
|
324
|
+
emit(
|
|
325
|
+
event === 3 ? 'finishing' : 'cancelling',
|
|
326
|
+
undefined,
|
|
327
|
+
native && { progress: native.progress, velocity: native.velocity },
|
|
328
|
+
)
|
|
329
|
+
} else if (event === 0) emit('animating')
|
|
330
|
+
else {
|
|
331
|
+
targetScope?.abort()
|
|
332
|
+
targetScope = undefined
|
|
333
|
+
detachTarget?.()
|
|
334
|
+
detachTarget = undefined
|
|
335
|
+
if (returning && event !== 6 && toPage && options.shared?.returnTarget) {
|
|
336
|
+
let focus = resolvedReturn
|
|
337
|
+
if (!focus)
|
|
338
|
+
try {
|
|
339
|
+
focus = options.shared.returnTarget.fallbackFocus?.(toPage)
|
|
340
|
+
} catch {}
|
|
341
|
+
focusReturnTarget(toPage, focus)
|
|
342
|
+
}
|
|
343
|
+
transitioning = false
|
|
344
|
+
SharedTransition.updateState(this.id, {
|
|
345
|
+
interactiveBegan: false,
|
|
346
|
+
interactiveCancelled: event === 6,
|
|
347
|
+
})
|
|
348
|
+
emit(
|
|
349
|
+
'idle',
|
|
350
|
+
event === 5 ? 'completed' : event === 6 ? 'cancelled' : undefined,
|
|
351
|
+
)
|
|
352
|
+
arrived()
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
)
|
|
356
|
+
}
|
|
357
|
+
if (options.shared) native.sharedEnabled = true
|
|
358
|
+
native.sharedDeferred = !!(returning && options.shared?.returnTarget)
|
|
359
|
+
native.prepareOperationPresentedReducedTimeScale(
|
|
360
|
+
operation,
|
|
361
|
+
page.ios,
|
|
362
|
+
reducedMotion(),
|
|
363
|
+
timeScale(),
|
|
364
|
+
)
|
|
365
|
+
return native
|
|
366
|
+
}
|
|
367
|
+
override iosInteractionDismiss() {
|
|
368
|
+
return native?.interactive ? native : undefined
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
const control: InteractiveNavigation = {
|
|
372
|
+
supported,
|
|
373
|
+
get transition() {
|
|
374
|
+
return transition
|
|
375
|
+
},
|
|
376
|
+
get state() {
|
|
377
|
+
return state
|
|
378
|
+
},
|
|
379
|
+
cancel,
|
|
380
|
+
dispose() {
|
|
381
|
+
if (state === 'disposed') return
|
|
382
|
+
targetScope?.abort()
|
|
383
|
+
targetScope = undefined
|
|
384
|
+
detachTarget?.()
|
|
385
|
+
detachTarget = undefined
|
|
386
|
+
// Complete UIKit's context before releasing Core's interactive state.
|
|
387
|
+
native?.disposeRestoringSwipe(
|
|
388
|
+
!!page?.enableSwipeBackNavigation && frame.canGoBack(),
|
|
389
|
+
)
|
|
390
|
+
native = undefined
|
|
391
|
+
emit('disposed')
|
|
392
|
+
releaseMotion?.()
|
|
393
|
+
if (resumeTimer !== undefined) clearTimeout(resumeTimer)
|
|
394
|
+
resumeTimer = undefined
|
|
395
|
+
frame.off('unloaded', unload)
|
|
396
|
+
frame.off('navigatingTo', entering)
|
|
397
|
+
frame.off('navigatedTo', arrived)
|
|
398
|
+
frame.off('viewControllerShown', shown)
|
|
399
|
+
Application.off(Application.suspendEvent, suspend)
|
|
400
|
+
Application.off(Application.resumeEvent, resume)
|
|
401
|
+
if (transition?.instance) SharedTransition.finishState(transition.instance.id)
|
|
402
|
+
page?.off('enableSwipeBackNavigationChange', swipeChanged)
|
|
403
|
+
start = undefined
|
|
404
|
+
page = undefined
|
|
405
|
+
candidate = undefined
|
|
406
|
+
fromPage = undefined
|
|
407
|
+
toPage = undefined
|
|
408
|
+
},
|
|
409
|
+
}
|
|
410
|
+
if (supported) {
|
|
411
|
+
if (!frame.isLoaded || !frame.ios?.controller)
|
|
412
|
+
throw new Error('Create interactiveNavigation after the Frame is loaded.')
|
|
413
|
+
transition = SharedTransition.custom(new PageMotion(), {
|
|
414
|
+
interactive: { dismiss: {} },
|
|
415
|
+
})
|
|
416
|
+
frame.on('navigatingTo', entering)
|
|
417
|
+
frame.on('navigatedTo', arrived)
|
|
418
|
+
frame.on('viewControllerShown', shown)
|
|
419
|
+
frame.on('unloaded', unload)
|
|
420
|
+
Application.on(Application.suspendEvent, suspend)
|
|
421
|
+
Application.on(Application.resumeEvent, resume)
|
|
422
|
+
releaseMotion = onReducedMotion((value) => {
|
|
423
|
+
if (value) cancel()
|
|
424
|
+
})
|
|
425
|
+
}
|
|
426
|
+
return control
|
|
427
|
+
}
|
package/src/ios-plugin.d.ts
CHANGED
|
@@ -1,3 +1,136 @@
|
|
|
1
|
+
declare class JoltBlur extends NSObject {
|
|
2
|
+
static attachOptions(view: UIView, options: string): JoltBlur
|
|
3
|
+
static liveCount(): number
|
|
4
|
+
static activeCount(): number
|
|
5
|
+
paint(amount: number): void
|
|
6
|
+
play(program: string): void
|
|
7
|
+
controlPaused(time: number, paused: boolean): void
|
|
8
|
+
resize(): void
|
|
9
|
+
snapshot(): string
|
|
10
|
+
dispose(): void
|
|
11
|
+
}
|
|
12
|
+
declare class JoltSensorSource extends NSObject {
|
|
13
|
+
static createOptionsOnState(
|
|
14
|
+
kind: string,
|
|
15
|
+
options: string,
|
|
16
|
+
changed: () => void,
|
|
17
|
+
): JoltSensorSource
|
|
18
|
+
static activeCount(): number
|
|
19
|
+
static sourceCount(): number
|
|
20
|
+
connectIndex(node: JoltLiveSpring, index: number): void
|
|
21
|
+
setEnabledPaused(active: boolean, paused: boolean): void
|
|
22
|
+
snapshot(): string
|
|
23
|
+
recenter(): void
|
|
24
|
+
replay(trace: string): void
|
|
25
|
+
dispose(): void
|
|
26
|
+
}
|
|
27
|
+
declare class JoltScrollHeader extends NSObject {
|
|
28
|
+
static attachNodeTitleToolbarTitleToolbarDiagnosticOptionsOnState(
|
|
29
|
+
list: UITableView,
|
|
30
|
+
node: JoltLiveSpring,
|
|
31
|
+
title: UIView,
|
|
32
|
+
toolbarTitle: UIView,
|
|
33
|
+
toolbar: UIView,
|
|
34
|
+
diagnostic: UILabel | null,
|
|
35
|
+
options: string,
|
|
36
|
+
onState: () => void,
|
|
37
|
+
): JoltScrollHeader
|
|
38
|
+
static activeCount(): number
|
|
39
|
+
configure(options: string): void
|
|
40
|
+
snapshot(): string
|
|
41
|
+
scrollAnimated(offset: number, animated: boolean): void
|
|
42
|
+
setEnabled(value: boolean): void
|
|
43
|
+
dispose(): void
|
|
44
|
+
}
|
|
45
|
+
declare class JoltMotionProbe extends NSObject {
|
|
46
|
+
static startViewCapacityHertz(
|
|
47
|
+
view: UIView,
|
|
48
|
+
capacity: number,
|
|
49
|
+
hertz: number,
|
|
50
|
+
): JoltMotionProbe
|
|
51
|
+
static activeCount(): number
|
|
52
|
+
drain(): string
|
|
53
|
+
dispose(): void
|
|
54
|
+
}
|
|
55
|
+
declare class JoltReorderHandle extends UIButton {
|
|
56
|
+
onMove: ((direction: number) => void) | null
|
|
57
|
+
}
|
|
58
|
+
declare class JoltReorderSession extends NSObject {
|
|
59
|
+
static attachOptionsOnState(
|
|
60
|
+
list: UITableView,
|
|
61
|
+
options: string,
|
|
62
|
+
callback: (state: number, index: number, toIndex: number) => void,
|
|
63
|
+
): JoltReorderSession
|
|
64
|
+
readonly active: boolean
|
|
65
|
+
registerHandle(view: UIView): void
|
|
66
|
+
setEnabled(enabled: boolean): void
|
|
67
|
+
setReducedMotion(reduced: boolean): void
|
|
68
|
+
cancel(): void
|
|
69
|
+
dispose(): void
|
|
70
|
+
}
|
|
71
|
+
declare class JoltGestureSession extends NSObject {
|
|
72
|
+
static supportsContactEvents(): boolean
|
|
73
|
+
static supportsScrollReplay(): boolean
|
|
74
|
+
static hasSession(surface: UIView): boolean
|
|
75
|
+
replayScrollDeltaVelocity(phase: number, delta: number, velocity: number): void
|
|
76
|
+
replayScrollOffset(offset: number): void
|
|
77
|
+
static attachScrollXYScaleRotationOptionsOnState(
|
|
78
|
+
surface: UIView,
|
|
79
|
+
scroll: UIScrollView | null,
|
|
80
|
+
x: JoltLiveSpring,
|
|
81
|
+
y: JoltLiveSpring,
|
|
82
|
+
scale: JoltLiveSpring,
|
|
83
|
+
rotation: JoltLiveSpring,
|
|
84
|
+
options: string,
|
|
85
|
+
onState: (state: number, velocityX: number, velocityY: number) => void,
|
|
86
|
+
): JoltGestureSession
|
|
87
|
+
readonly active: boolean
|
|
88
|
+
cancel(): void
|
|
89
|
+
refreshScrollDelegate(): void
|
|
90
|
+
setEnabled(value: boolean): void
|
|
91
|
+
settleXYScaleRotationAnimated(
|
|
92
|
+
x: number,
|
|
93
|
+
y: number,
|
|
94
|
+
scale: number,
|
|
95
|
+
rotation: number,
|
|
96
|
+
animated: boolean,
|
|
97
|
+
): void
|
|
98
|
+
updateLeftRightTopBottom(left: number, right: number, top: number, bottom: number): void
|
|
99
|
+
dispose(): void
|
|
100
|
+
}
|
|
101
|
+
declare class JoltLiveSpring extends NSObject {
|
|
102
|
+
static createStiffnessDampingMassRestDeltaRestSpeedReduced(
|
|
103
|
+
initial: number,
|
|
104
|
+
stiffness: number,
|
|
105
|
+
damping: number,
|
|
106
|
+
mass: number,
|
|
107
|
+
restDelta: number,
|
|
108
|
+
restSpeed: number,
|
|
109
|
+
reduced: boolean,
|
|
110
|
+
): JoltLiveSpring
|
|
111
|
+
static activeCount(): number
|
|
112
|
+
static nodeCount(): number
|
|
113
|
+
static sync(view: UIView): void
|
|
114
|
+
readonly position: number
|
|
115
|
+
readonly velocity: number
|
|
116
|
+
readonly moving: boolean
|
|
117
|
+
followMappings(source: JoltLiveSpring, mappings: string): void
|
|
118
|
+
updateInput(snapshot: string): void
|
|
119
|
+
setTarget(value: number): void
|
|
120
|
+
setReduced(value: boolean): void
|
|
121
|
+
setPaused(value: boolean): void
|
|
122
|
+
bindPropertyMappings(
|
|
123
|
+
view: UIView,
|
|
124
|
+
property: string,
|
|
125
|
+
mappings: string,
|
|
126
|
+
): JoltLiveSpringBinding
|
|
127
|
+
dispose(): void
|
|
128
|
+
}
|
|
129
|
+
declare class JoltLiveSpringBinding extends NSObject {
|
|
130
|
+
readonly value: number
|
|
131
|
+
setLayers(inputs: string): void
|
|
132
|
+
cancel(): void
|
|
133
|
+
}
|
|
1
134
|
declare class JoltInteractiveAnimation extends NSObject {
|
|
2
135
|
static startViewLayersKeyPathValuesTimesDurationDelayRepeatReverseFinalValueStartedAtCompletion(
|
|
3
136
|
view: UIView,
|
|
@@ -79,3 +212,150 @@ declare class JoltPhotoZoom extends NSObject {
|
|
|
79
212
|
layout(): void
|
|
80
213
|
stop(): void
|
|
81
214
|
}
|
|
215
|
+
|
|
216
|
+
declare class JoltPropertySink extends NSObject {
|
|
217
|
+
static scalarTargetKeyPath(target: NSObject, keyPath: string): JoltPropertySink
|
|
218
|
+
readonly dimensions: number
|
|
219
|
+
readonly alive: boolean
|
|
220
|
+
readonly compiled: boolean
|
|
221
|
+
read(): NSArray<number>
|
|
222
|
+
write(values: NSArray<number>): void
|
|
223
|
+
dispose(): void
|
|
224
|
+
}
|
|
225
|
+
declare class JoltPropertyPlayer extends NSObject {
|
|
226
|
+
static startSinkTimesValuesFinalValueDurationDelayRepeatReverseCompletion(
|
|
227
|
+
sink: JoltPropertySink,
|
|
228
|
+
times: NSArray<number>,
|
|
229
|
+
values: NSArray<number>,
|
|
230
|
+
finalValue: NSArray<number>,
|
|
231
|
+
duration: number,
|
|
232
|
+
delay: number,
|
|
233
|
+
repeat: number,
|
|
234
|
+
reverse: boolean,
|
|
235
|
+
completion: (completed: boolean) => void,
|
|
236
|
+
): JoltPropertyPlayer
|
|
237
|
+
readonly elapsed: number
|
|
238
|
+
readonly frames: number
|
|
239
|
+
static activeCount(): number
|
|
240
|
+
controlPaused(time: number, paused: boolean): void
|
|
241
|
+
cancel(): void
|
|
242
|
+
}
|
|
243
|
+
declare class JoltReferenceProperties extends NSObject {
|
|
244
|
+
static sceneFieldOfView(camera: NSObject): JoltPropertySink
|
|
245
|
+
static sceneCameraSinkCount(): number
|
|
246
|
+
static sceneCameraWriteCount(): number
|
|
247
|
+
static mapCoordinate(target: NSObject): JoltPropertySink
|
|
248
|
+
static mapCamera(target: NSObject): JoltPropertySink
|
|
249
|
+
static scenePose(target: NSObject): JoltPropertySink
|
|
250
|
+
static sceneLightIntensity(target: NSObject): JoltPropertySink
|
|
251
|
+
static sceneLightColor(target: NSObject): JoltPropertySink
|
|
252
|
+
static sceneMaterialTransparency(target: NSObject): JoltPropertySink
|
|
253
|
+
static sceneMaterialDiffuse(target: NSObject): JoltPropertySink
|
|
254
|
+
static sceneMaterialEmission(target: NSObject): JoltPropertySink
|
|
255
|
+
static sceneAppearanceSinkCount(): number
|
|
256
|
+
static sceneAppearanceWriteCount(): number
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
declare class JoltSceneShaderProperties extends NSObject {
|
|
260
|
+
static environmentError(
|
|
261
|
+
scene: NSObject,
|
|
262
|
+
error: interop.Reference<NSError>,
|
|
263
|
+
): JoltPropertySink | null
|
|
264
|
+
static uniformNameConfigurationError(
|
|
265
|
+
target: NSObject,
|
|
266
|
+
name: string,
|
|
267
|
+
configuration: string,
|
|
268
|
+
error: interop.Reference<NSError>,
|
|
269
|
+
): JoltPropertySink | null
|
|
270
|
+
static sinkCount(): number
|
|
271
|
+
static writeCount(): number
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
declare class JoltSharedLayoutFlight extends UIView {
|
|
275
|
+
holdPageMaxPixels(page: UIView, maxPixels: number): boolean
|
|
276
|
+
fadeOnEnd(duration: number, onEnd: (completed: boolean) => void): void
|
|
277
|
+
static captureNavigationImageRadiusMaxPixels(
|
|
278
|
+
view: UIView,
|
|
279
|
+
radius: number,
|
|
280
|
+
maxPixels: number,
|
|
281
|
+
): JoltSharedLayoutFlight | null
|
|
282
|
+
static captureClippedNavigationImageRadiusMaxPixels(
|
|
283
|
+
view: UIView,
|
|
284
|
+
radius: number,
|
|
285
|
+
maxPixels: number,
|
|
286
|
+
): JoltSharedLayoutFlight | null
|
|
287
|
+
prepareNavigationImageRadiusMaxPixels(
|
|
288
|
+
view: UIView,
|
|
289
|
+
radius: number,
|
|
290
|
+
maxPixels: number,
|
|
291
|
+
): string | null
|
|
292
|
+
static captureImageRadiusMaxPixels(
|
|
293
|
+
view: UIView,
|
|
294
|
+
image: boolean,
|
|
295
|
+
radius: number,
|
|
296
|
+
maxPixels: number,
|
|
297
|
+
): JoltSharedLayoutFlight | null
|
|
298
|
+
static activeCount(): number
|
|
299
|
+
pixels(): number
|
|
300
|
+
state(): string
|
|
301
|
+
prepareImageRadiusMaxPixels(
|
|
302
|
+
view: UIView,
|
|
303
|
+
image: boolean,
|
|
304
|
+
radius: number,
|
|
305
|
+
maxPixels: number,
|
|
306
|
+
): string | null
|
|
307
|
+
freeze(maxPixels: number): boolean
|
|
308
|
+
playOnEnd(configuration: string, onEnd: (completed: boolean) => void): void
|
|
309
|
+
dispose(): void
|
|
310
|
+
}
|
|
311
|
+
declare class JoltInteractiveNavigation extends NSObject {
|
|
312
|
+
sharedEnabled: boolean
|
|
313
|
+
sharedDeferred: boolean
|
|
314
|
+
completeSharedPreparation(): void
|
|
315
|
+
prepareSharedFromToImageFromRadiusToRadiusMaxPixels(
|
|
316
|
+
from: UIView,
|
|
317
|
+
to: UIView,
|
|
318
|
+
image: boolean,
|
|
319
|
+
fromRadius: number,
|
|
320
|
+
toRadius: number,
|
|
321
|
+
maxPixels: number,
|
|
322
|
+
): boolean
|
|
323
|
+
static attachStiffnessDampingMassShouldBeginOnEvent(
|
|
324
|
+
nav: UINavigationController,
|
|
325
|
+
stiffness: number,
|
|
326
|
+
damping: number,
|
|
327
|
+
mass: number,
|
|
328
|
+
shouldBegin: () => boolean,
|
|
329
|
+
onEvent: (event: number) => void,
|
|
330
|
+
): JoltInteractiveNavigation
|
|
331
|
+
static activeCount(): number
|
|
332
|
+
static recognizerCount(): number
|
|
333
|
+
readonly interactive: boolean
|
|
334
|
+
readonly progress: number
|
|
335
|
+
readonly velocity: number
|
|
336
|
+
prepareOperationPresentedReducedTimeScale(
|
|
337
|
+
operation: number,
|
|
338
|
+
presented: UIViewController,
|
|
339
|
+
reduced: boolean,
|
|
340
|
+
timeScale: number,
|
|
341
|
+
): void
|
|
342
|
+
sync(): void
|
|
343
|
+
cancel(): void
|
|
344
|
+
disposeRestoringSwipe(enabled: boolean): void
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
declare class JoltCircleWorld extends NSObject {
|
|
348
|
+
static createOptions(container: UIView, options: string): JoltCircleWorld
|
|
349
|
+
static worldCount(): number
|
|
350
|
+
static activeCount(): number
|
|
351
|
+
connectIndex(view: UIView, index: number): void
|
|
352
|
+
setEnabled(active: boolean): void
|
|
353
|
+
resizeHeight(width: number, height: number): void
|
|
354
|
+
impulseXY(index: number, x: number, y: number): void
|
|
355
|
+
attachOptions(index: number, options: string): void
|
|
356
|
+
snapToTarget(index: number, target: number): void
|
|
357
|
+
reset(): void
|
|
358
|
+
supportsPointerSpring(): boolean
|
|
359
|
+
snapshot(): string
|
|
360
|
+
dispose(): void
|
|
361
|
+
}
|