@rafaelaugusto/jolt 0.1.0-beta.1 → 0.1.0-beta.11
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 +385 -18
- package/dist/animate.d.ts +19 -3
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +186 -14
- package/dist/animate.js.map +1 -1
- package/dist/color.d.ts +11 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +73 -0
- package/dist/color.js.map +1 -0
- package/dist/config.d.ts +31 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +73 -0
- package/dist/config.js.map +1 -0
- package/dist/decay.d.ts +11 -0
- package/dist/decay.d.ts.map +1 -0
- package/dist/decay.js +22 -0
- package/dist/decay.js.map +1 -0
- package/dist/decoration.d.ts +18 -0
- package/dist/decoration.d.ts.map +1 -0
- package/dist/decoration.js +155 -0
- package/dist/decoration.js.map +1 -0
- package/dist/drag-input.d.ts +15 -0
- package/dist/drag-input.d.ts.map +1 -0
- package/dist/drag-input.js +66 -0
- package/dist/drag-input.js.map +1 -0
- package/dist/drag-physics.d.ts +20 -0
- package/dist/drag-physics.d.ts.map +1 -0
- package/dist/drag-physics.js +75 -0
- package/dist/drag-physics.js.map +1 -0
- package/dist/drag.d.ts +58 -0
- package/dist/drag.d.ts.map +1 -0
- package/dist/drag.js +324 -0
- package/dist/drag.js.map +1 -0
- package/dist/driver/android-color.d.ts +20 -0
- package/dist/driver/android-color.d.ts.map +1 -0
- package/dist/driver/android-color.js +136 -0
- package/dist/driver/android-color.js.map +1 -0
- package/dist/driver/android-decoration.d.ts +22 -0
- package/dist/driver/android-decoration.d.ts.map +1 -0
- package/dist/driver/android-decoration.js +139 -0
- package/dist/driver/android-decoration.js.map +1 -0
- 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 +89 -0
- package/dist/driver/android-gradient.js.map +1 -0
- package/dist/driver/android-playback.d.ts +13 -0
- package/dist/driver/android-playback.d.ts.map +1 -0
- package/dist/driver/android-playback.js +141 -0
- package/dist/driver/android-playback.js.map +1 -0
- package/dist/driver/android.d.ts +1 -1
- package/dist/driver/android.d.ts.map +1 -1
- package/dist/driver/android.js +165 -13
- package/dist/driver/android.js.map +1 -1
- package/dist/driver/index.d.ts +25 -2
- package/dist/driver/index.d.ts.map +1 -1
- package/dist/driver/index.js.map +1 -1
- package/dist/driver/ios-color.d.ts +16 -0
- package/dist/driver/ios-color.d.ts.map +1 -0
- package/dist/driver/ios-color.js +392 -0
- package/dist/driver/ios-color.js.map +1 -0
- package/dist/driver/ios-decoration.d.ts +17 -0
- package/dist/driver/ios-decoration.d.ts.map +1 -0
- package/dist/driver/ios-decoration.js +271 -0
- package/dist/driver/ios-decoration.js.map +1 -0
- 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 +109 -0
- package/dist/driver/ios-gradient.js.map +1 -0
- package/dist/driver/ios-layout.d.ts +9 -0
- package/dist/driver/ios-layout.d.ts.map +1 -0
- package/dist/driver/ios-layout.js +52 -0
- package/dist/driver/ios-layout.js.map +1 -0
- package/dist/driver/ios-playback.d.ts +10 -0
- package/dist/driver/ios-playback.d.ts.map +1 -0
- package/dist/driver/ios-playback.js +47 -0
- package/dist/driver/ios-playback.js.map +1 -0
- package/dist/driver/ios-shadow.d.ts +6 -0
- package/dist/driver/ios-shadow.d.ts.map +1 -0
- package/dist/driver/ios-shadow.js +52 -0
- package/dist/driver/ios-shadow.js.map +1 -0
- package/dist/driver/ios.d.ts.map +1 -1
- package/dist/driver/ios.js +163 -28
- package/dist/driver/ios.js.map +1 -1
- package/dist/engine.d.ts +75 -5
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +293 -23
- package/dist/engine.js.map +1 -1
- package/dist/gradient.d.ts +90 -0
- package/dist/gradient.d.ts.map +1 -0
- package/dist/gradient.js +247 -0
- package/dist/gradient.js.map +1 -0
- package/dist/haptics.d.ts +21 -0
- package/dist/haptics.d.ts.map +1 -0
- package/dist/haptics.js +120 -0
- package/dist/haptics.js.map +1 -0
- package/dist/image-effect-native.d.ts +26 -0
- package/dist/image-effect-native.d.ts.map +1 -0
- package/dist/image-effect-native.js +73 -0
- package/dist/image-effect-native.js.map +1 -0
- package/dist/image-effect.d.ts +50 -0
- package/dist/image-effect.d.ts.map +1 -0
- package/dist/image-effect.js +290 -0
- package/dist/image-effect.js.map +1 -0
- package/dist/image-owner.d.ts +3 -0
- package/dist/image-owner.d.ts.map +1 -0
- package/dist/image-owner.js +11 -0
- package/dist/image-owner.js.map +1 -0
- package/dist/index.d.ts +47 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/interaction-surface.d.ts +12 -0
- package/dist/interaction-surface.d.ts.map +1 -0
- package/dist/interaction-surface.js +36 -0
- package/dist/interaction-surface.js.map +1 -0
- package/dist/items.d.ts +20 -0
- package/dist/items.d.ts.map +1 -0
- package/dist/items.js +109 -0
- package/dist/items.js.map +1 -0
- package/dist/keyboard.d.ts +41 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +256 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/label.d.ts +7 -0
- package/dist/label.d.ts.map +1 -0
- package/dist/label.js +60 -0
- package/dist/label.js.map +1 -0
- package/dist/layout.d.ts +13 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +348 -0
- package/dist/layout.js.map +1 -0
- package/dist/liquid-grid.d.ts +3 -0
- package/dist/liquid-grid.d.ts.map +1 -0
- package/dist/liquid-grid.js +24 -0
- package/dist/liquid-grid.js.map +1 -0
- package/dist/liquid.d.ts +18 -0
- package/dist/liquid.d.ts.map +1 -0
- package/dist/liquid.js +234 -0
- package/dist/liquid.js.map +1 -0
- package/dist/loader.d.ts +19 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +173 -0
- package/dist/loader.js.map +1 -0
- package/dist/motion-scope.d.ts +39 -0
- package/dist/motion-scope.d.ts.map +1 -0
- package/dist/motion-scope.js +238 -0
- package/dist/motion-scope.js.map +1 -0
- package/dist/motion-states.d.ts +43 -0
- package/dist/motion-states.d.ts.map +1 -0
- package/dist/motion-states.js +220 -0
- package/dist/motion-states.js.map +1 -0
- package/dist/particles.d.ts +39 -0
- package/dist/particles.d.ts.map +1 -0
- package/dist/particles.js +265 -0
- package/dist/particles.js.map +1 -0
- package/dist/path.d.ts +12 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +90 -0
- package/dist/path.js.map +1 -0
- package/dist/playback-group.d.ts +6 -0
- package/dist/playback-group.d.ts.map +1 -0
- package/dist/playback-group.js +141 -0
- package/dist/playback-group.js.map +1 -0
- package/dist/playback.d.ts +25 -0
- package/dist/playback.d.ts.map +1 -0
- package/dist/playback.js +35 -0
- package/dist/playback.js.map +1 -0
- package/dist/press.d.ts.map +1 -1
- package/dist/press.js +23 -7
- package/dist/press.js.map +1 -1
- package/dist/properties.d.ts +6 -3
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +26 -2
- package/dist/properties.js.map +1 -1
- package/dist/reveal.d.ts +25 -0
- package/dist/reveal.d.ts.map +1 -0
- package/dist/reveal.js +294 -0
- package/dist/reveal.js.map +1 -0
- package/dist/roll-diff.d.ts +22 -0
- package/dist/roll-diff.d.ts.map +1 -0
- package/dist/roll-diff.js +36 -0
- package/dist/roll-diff.js.map +1 -0
- package/dist/roll.d.ts +29 -0
- package/dist/roll.d.ts.map +1 -0
- package/dist/roll.js +442 -0
- package/dist/roll.js.map +1 -0
- package/dist/scroll-linked.d.ts +10 -0
- package/dist/scroll-linked.d.ts.map +1 -0
- package/dist/scroll-linked.js +58 -0
- package/dist/scroll-linked.js.map +1 -0
- package/dist/sequence.d.ts +10 -5
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +208 -14
- package/dist/sequence.js.map +1 -1
- package/dist/shimmer.d.ts +12 -0
- package/dist/shimmer.d.ts.map +1 -0
- package/dist/shimmer.js +161 -0
- package/dist/shimmer.js.map +1 -0
- package/dist/svg-path.d.ts +14 -0
- package/dist/svg-path.d.ts.map +1 -0
- package/dist/svg-path.js +281 -0
- package/dist/svg-path.js.map +1 -0
- package/dist/symbol-effect.d.ts +23 -0
- package/dist/symbol-effect.d.ts.map +1 -0
- package/dist/symbol-effect.js +187 -0
- package/dist/symbol-effect.js.map +1 -0
- package/dist/text-layout.d.ts +30 -0
- package/dist/text-layout.d.ts.map +1 -0
- package/dist/text-layout.js +185 -0
- package/dist/text-layout.js.map +1 -0
- package/dist/text.d.ts +17 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +263 -0
- package/dist/text.js.map +1 -0
- package/dist/track.d.ts +3 -1
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +266 -13
- package/dist/track.js.map +1 -1
- package/dist/transition.d.ts +32 -1
- package/dist/transition.d.ts.map +1 -1
- package/dist/transition.js +58 -6
- package/dist/transition.js.map +1 -1
- package/dist/types.d.ts +48 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vue/index.d.ts +95 -0
- package/dist/vue/index.d.ts.map +1 -0
- package/dist/vue/index.js +163 -0
- package/dist/vue/index.js.map +1 -0
- package/dist/zoom-native.d.ts +30 -0
- package/dist/zoom-native.d.ts.map +1 -0
- package/dist/zoom-native.js +56 -0
- package/dist/zoom-native.js.map +1 -0
- package/dist/zoomable.d.ts +48 -0
- package/dist/zoomable.d.ts.map +1 -0
- package/dist/zoomable.js +249 -0
- package/dist/zoomable.js.map +1 -0
- package/package.json +29 -5
- package/platforms/android/include.gradle +7 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ColorTarget.java +102 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/DecorationTarget.java +154 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/GradientLayer.java +195 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/ImageEffect.java +288 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFollower.java +91 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardObserver.java +97 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/NumberRoll.java +190 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/PhotoZoom.java +250 -0
- package/platforms/android/java/org/rafaelaugusto/jolt/TextReveal.java +180 -0
- package/platforms/android/proguard-rules.pro +21 -0
- package/platforms/ios/build.xcconfig +1 -0
- package/platforms/ios/src/JoltImageEffect.h +25 -0
- package/platforms/ios/src/JoltImageEffect.mm +242 -0
- package/platforms/ios/src/JoltInteractiveAnimation.h +18 -0
- package/platforms/ios/src/JoltInteractiveAnimation.m +123 -0
- package/platforms/ios/src/JoltPhotoZoom.h +23 -0
- package/platforms/ios/src/JoltPhotoZoom.m +229 -0
- package/platforms/ios/src/module.modulemap +6 -0
- package/src/android-plugin.d.ts +184 -0
- package/src/animate.ts +249 -36
- package/src/color.ts +101 -0
- package/src/config.ts +84 -0
- package/src/decay.ts +45 -0
- package/src/decoration.ts +180 -0
- package/src/drag-input.ts +74 -0
- package/src/drag-physics.ts +110 -0
- package/src/drag.ts +395 -0
- package/src/driver/android-color.ts +170 -0
- package/src/driver/android-decoration.ts +182 -0
- package/src/driver/android-gradient.ts +109 -0
- package/src/driver/android-playback.ts +157 -0
- package/src/driver/android.ts +208 -20
- package/src/driver/index.ts +37 -2
- package/src/driver/ios-color.ts +441 -0
- package/src/driver/ios-decoration.ts +332 -0
- package/src/driver/ios-gradient.ts +114 -0
- package/src/driver/ios-layout.ts +63 -0
- package/src/driver/ios-playback.ts +51 -0
- package/src/driver/ios-shadow.ts +50 -0
- package/src/driver/ios.ts +193 -33
- package/src/engine.ts +321 -27
- package/src/gradient.ts +372 -0
- package/src/haptics.ts +148 -0
- package/src/image-effect-native.ts +129 -0
- package/src/image-effect.ts +336 -0
- package/src/image-owner.ts +12 -0
- package/src/index.ts +75 -4
- package/src/interaction-surface.ts +41 -0
- package/src/ios-plugin.d.ts +81 -0
- package/src/items.ts +140 -0
- package/src/keyboard.ts +291 -0
- package/src/label.ts +76 -0
- package/src/layout.ts +408 -0
- package/src/liquid-grid.ts +28 -0
- package/src/liquid.ts +287 -0
- package/src/loader.ts +202 -0
- package/src/motion-scope.ts +279 -0
- package/src/motion-states.ts +269 -0
- package/src/particles.ts +323 -0
- package/src/path.ts +124 -0
- package/src/playback-group.ts +143 -0
- package/src/playback.ts +62 -0
- package/src/press.ts +26 -10
- package/src/properties.ts +32 -6
- package/src/reveal.ts +374 -0
- package/src/roll-diff.ts +57 -0
- package/src/roll.ts +515 -0
- package/src/scroll-linked.ts +73 -0
- package/src/sequence.ts +204 -14
- package/src/shimmer.ts +180 -0
- package/src/svg-path.ts +355 -0
- package/src/symbol-effect.ts +226 -0
- package/src/text-layout.ts +228 -0
- package/src/text.ts +279 -0
- package/src/track.ts +347 -12
- package/src/transition.ts +93 -6
- package/src/types.ts +49 -1
- package/src/vue/index.ts +231 -0
- package/src/zoom-native.ts +124 -0
- package/src/zoomable.ts +330 -0
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
1
|
import type { View } from '@nativescript/core';
|
|
2
|
+
import type { Haptic } from './haptics.js';
|
|
2
3
|
import type { SpringName, Transition } from './transition.js';
|
|
4
|
+
import type { ColorKeyframes } from './color.js';
|
|
3
5
|
/** A value to animate to, or keyframes. `null` stands for the value the view has when the animation starts. */
|
|
4
6
|
export type KeyframeValue = number | readonly (number | null)[];
|
|
5
7
|
export interface Keyframes {
|
|
8
|
+
/** One continuous SVG path, expressed as translation coordinates in DIPs. */
|
|
9
|
+
path?: string;
|
|
10
|
+
/** Face the path's forward tangent (+X artwork). Requires path. */
|
|
11
|
+
orient?: boolean;
|
|
12
|
+
backgroundColor?: ColorKeyframes;
|
|
13
|
+
/** Uniform starting edge colors; widths and radii may differ. */
|
|
14
|
+
borderColor?: ColorKeyframes;
|
|
15
|
+
color?: ColorKeyframes;
|
|
16
|
+
/** Uniform circular corners, in DIPs. */
|
|
17
|
+
borderRadius?: KeyframeValue;
|
|
18
|
+
/** Uniform visual border width, in DIPs. Content layout uses the final width. */
|
|
19
|
+
borderWidth?: KeyframeValue;
|
|
20
|
+
/** iOS: opacity of one existing boxShadow, from 0 to 1. */
|
|
21
|
+
shadowOpacity?: KeyframeValue;
|
|
22
|
+
/** iOS: native blur radius in DIPs (half Core's boxShadow blurRadius). */
|
|
23
|
+
shadowRadius?: KeyframeValue;
|
|
24
|
+
/** iOS: offset of one existing boxShadow, in DIPs. */
|
|
25
|
+
shadowOffsetX?: KeyframeValue;
|
|
26
|
+
shadowOffsetY?: KeyframeValue;
|
|
27
|
+
/** Android: base elevation in DIPs. */
|
|
28
|
+
elevation?: KeyframeValue;
|
|
29
|
+
/** Android: dynamic Z offset in DIPs. Native state changes may replace it. */
|
|
30
|
+
translationZ?: KeyframeValue;
|
|
6
31
|
opacity?: KeyframeValue;
|
|
7
32
|
/** Same as `translateX`, in DIPs. */
|
|
8
33
|
x?: KeyframeValue;
|
|
@@ -17,12 +42,32 @@ export interface Keyframes {
|
|
|
17
42
|
rotateX?: KeyframeValue;
|
|
18
43
|
rotateY?: KeyframeValue;
|
|
19
44
|
}
|
|
45
|
+
/** Properties that can be timed or stopped independently. A path owns x/y and optionally rotate. */
|
|
46
|
+
export type KeyframeProperty = Exclude<keyof Keyframes, 'path' | 'orient'>;
|
|
47
|
+
/** One value per property, as `set()` applies them. */
|
|
48
|
+
export type Values = {
|
|
49
|
+
[K in KeyframeProperty]?: Exclude<Keyframes[K], readonly unknown[]>;
|
|
50
|
+
};
|
|
20
51
|
/** A view, or anything that holds one: a NativeScript-Vue element, an Angular `ElementRef`. */
|
|
21
52
|
export type Target = View | {
|
|
22
53
|
readonly nativeView: View;
|
|
23
54
|
} | {
|
|
24
55
|
readonly nativeElement: View;
|
|
25
56
|
};
|
|
57
|
+
/** Translation velocities in DIPs per second. Omitted axes keep their current motion. */
|
|
58
|
+
export interface DecayVelocity {
|
|
59
|
+
x?: number;
|
|
60
|
+
y?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface DecayOptions {
|
|
63
|
+
/** Velocity multiplier per millisecond, between 0 and 1 exclusively. Defaults to 0.998. */
|
|
64
|
+
friction?: number;
|
|
65
|
+
/** Spring to the closest stop to the projected landing, shared or set per axis. */
|
|
66
|
+
snap?: readonly number[] | {
|
|
67
|
+
x?: readonly number[];
|
|
68
|
+
y?: readonly number[];
|
|
69
|
+
};
|
|
70
|
+
}
|
|
26
71
|
export interface Stagger {
|
|
27
72
|
/** Milliseconds between one target and the next. */
|
|
28
73
|
each: number;
|
|
@@ -30,11 +75,13 @@ export interface Stagger {
|
|
|
30
75
|
from?: 'first' | 'last' | 'center' | number;
|
|
31
76
|
}
|
|
32
77
|
export type AnimateOptions = Transition & {
|
|
33
|
-
[K in
|
|
78
|
+
[K in KeyframeProperty | 'path']?: Transition | SpringName;
|
|
34
79
|
} & {
|
|
35
80
|
/** Offset translations/rotations and multiply scale/opacity by their values at the start. */
|
|
36
81
|
relative?: boolean;
|
|
37
82
|
/** With several targets, delays each one by this much more than the previous. */
|
|
38
83
|
stagger?: number | Stagger;
|
|
84
|
+
/** iOS impact feedback at arrival, or at explicit points in a finite animation. */
|
|
85
|
+
haptic?: Haptic;
|
|
39
86
|
};
|
|
40
87
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type App, type BaseTransitionProps, type NSVElement, type ObjectDirective, type PropType, type Ref } from 'nativescript-vue';
|
|
2
|
+
import { type KeyboardState, type MotionScope, type AnimateOptions, type Keyframes, type PresetName, type SpringName } from '../index.js';
|
|
3
|
+
type Host = NSVElement;
|
|
4
|
+
type Options = AnimateOptions | SpringName;
|
|
5
|
+
/** A preset name or keyframes, alone or paired with a transition. */
|
|
6
|
+
export type AnimateValue = PresetName | Keyframes | readonly [animation: PresetName | Keyframes, options?: Options];
|
|
7
|
+
/** The pressed keyframes, alone or paired with a transition. */
|
|
8
|
+
export type PressValue = Keyframes | readonly [pressed: Keyframes, options?: Options];
|
|
9
|
+
export interface TransitionProps {
|
|
10
|
+
/** Played when the child is inserted. */
|
|
11
|
+
enter?: AnimateValue;
|
|
12
|
+
/** Played before the child is removed. */
|
|
13
|
+
leave?: AnimateValue;
|
|
14
|
+
/** Also play `enter` on the first render. */
|
|
15
|
+
appear?: boolean;
|
|
16
|
+
mode?: 'in-out' | 'out-in' | 'default';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Plays an animation when the element mounts, and again whenever the value changes.
|
|
20
|
+
*
|
|
21
|
+
* ```vue
|
|
22
|
+
* <Label v-animate="'fadeInUp'" />
|
|
23
|
+
* <Label v-animate="['popIn', { delay: 200 }]" />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare const vAnimate: ObjectDirective<Host, AnimateValue>;
|
|
27
|
+
/**
|
|
28
|
+
* Press feedback while a finger is on the element.
|
|
29
|
+
*
|
|
30
|
+
* ```vue
|
|
31
|
+
* <GridLayout v-press />
|
|
32
|
+
* <GridLayout v-press="{ scale: 0.95 }" />
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const vPress: ObjectDirective<Host, PressValue | undefined>;
|
|
36
|
+
/** The hooks `JoltTransition` hands to Vue's `BaseTransition`. */
|
|
37
|
+
export declare function transitionHooks(props: TransitionProps): BaseTransitionProps<Host>;
|
|
38
|
+
/**
|
|
39
|
+
* Animates a child in and out. Vue keeps the element until the leave animation settles.
|
|
40
|
+
*
|
|
41
|
+
* ```vue
|
|
42
|
+
* <JoltTransition enter="popIn" leave="fadeOut">
|
|
43
|
+
* <Label v-if="visible" text="Saved" />
|
|
44
|
+
* </JoltTransition>
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare const JoltTransition: import("nativescript-vue").DefineComponent<import("nativescript-vue").ExtractPropTypes<{
|
|
48
|
+
enter: {
|
|
49
|
+
type: PropType<AnimateValue>;
|
|
50
|
+
default: undefined;
|
|
51
|
+
};
|
|
52
|
+
leave: {
|
|
53
|
+
type: PropType<AnimateValue>;
|
|
54
|
+
default: undefined;
|
|
55
|
+
};
|
|
56
|
+
appear: BooleanConstructor;
|
|
57
|
+
mode: {
|
|
58
|
+
type: PropType<TransitionProps['mode']>;
|
|
59
|
+
default: undefined;
|
|
60
|
+
};
|
|
61
|
+
}>, () => import("nativescript-vue").VNode<import("nativescript-vue").RendererNode, import("nativescript-vue").RendererElement, {
|
|
62
|
+
[key: string]: any;
|
|
63
|
+
}>, {}, {}, {}, import("nativescript-vue").ComponentOptionsMixin, import("nativescript-vue").ComponentOptionsMixin, {}, string, import("nativescript-vue").PublicProps, Readonly<import("nativescript-vue").ExtractPropTypes<{
|
|
64
|
+
enter: {
|
|
65
|
+
type: PropType<AnimateValue>;
|
|
66
|
+
default: undefined;
|
|
67
|
+
};
|
|
68
|
+
leave: {
|
|
69
|
+
type: PropType<AnimateValue>;
|
|
70
|
+
default: undefined;
|
|
71
|
+
};
|
|
72
|
+
appear: BooleanConstructor;
|
|
73
|
+
mode: {
|
|
74
|
+
type: PropType<TransitionProps['mode']>;
|
|
75
|
+
default: undefined;
|
|
76
|
+
};
|
|
77
|
+
}>> & Readonly<{}>, {
|
|
78
|
+
enter: AnimateValue;
|
|
79
|
+
leave: AnimateValue;
|
|
80
|
+
appear: boolean;
|
|
81
|
+
mode: "default" | "in-out" | "out-in" | undefined;
|
|
82
|
+
}, {}, {}, {}, string, import("nativescript-vue").ComponentProvideOptions, true, {}, any>;
|
|
83
|
+
/** Registers `v-animate`, `v-press` and `JoltTransition` on the app. */
|
|
84
|
+
export declare function install(app: App): void;
|
|
85
|
+
declare const _default: {
|
|
86
|
+
install: typeof install;
|
|
87
|
+
};
|
|
88
|
+
export default _default;
|
|
89
|
+
/** Call in setup(): suspend cached components and dispose only on actual unmount. */
|
|
90
|
+
export declare function useMotionScope(): MotionScope;
|
|
91
|
+
/** Call in setup(): whether motion is reduced, kept up to date until the component unmounts. */
|
|
92
|
+
export declare function useReducedMotion(): Readonly<Ref<boolean>>;
|
|
93
|
+
/** Call in setup(): the keyboard's state, kept up to date until the component unmounts. */
|
|
94
|
+
export declare function useKeyboard(): Readonly<Ref<KeyboardState>>;
|
|
95
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,GAAG,EACR,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,GAAG,EACT,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EAEd,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAGpB,KAAK,IAAI,GAAG,UAAU,CAAA;AACtB,KAAK,OAAO,GAAG,cAAc,GAAG,UAAU,CAAA;AAE1C,qEAAqE;AACrE,MAAM,MAAM,YAAY,GACtB,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;AAE1F,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;AAErF,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CACvC;AAgDD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,eAAe,CAAC,IAAI,EAAE,YAAY,CAQxD,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAahE,CAAA;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAuBjF;AAOD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;cAbQ,QAAQ,CAAC,YAAY,CAAC;;;;;;;;;QAmB7C,IAAI,EAAY,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;yFAUpE,CAAA;AAEF,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,QAI/B;;;;;AAID,qFAAqF;AACrF,wBAAgB,cAAc,IAAI,WAAW,CAM5C;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAKzD;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,IAAI,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAM1D"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { BaseTransition, defineComponent, h, onUnmounted, onActivated, onDeactivated, readonly, shallowRef, } from 'nativescript-vue';
|
|
2
|
+
import { press, motionScope, onKeyboard, onReducedMotion, reducedMotion, } from '../index.js';
|
|
3
|
+
import { currentKeyboard } from '../keyboard.js';
|
|
4
|
+
const animations = new WeakMap();
|
|
5
|
+
const scopes = new WeakMap();
|
|
6
|
+
const removers = new WeakMap();
|
|
7
|
+
function split(value) {
|
|
8
|
+
return Array.isArray(value)
|
|
9
|
+
? [value[0], value[1]]
|
|
10
|
+
: [value, undefined];
|
|
11
|
+
}
|
|
12
|
+
function same(a, b) {
|
|
13
|
+
if (Object.is(a, b))
|
|
14
|
+
return true;
|
|
15
|
+
if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null)
|
|
16
|
+
return false;
|
|
17
|
+
if (Array.isArray(a) !== Array.isArray(b))
|
|
18
|
+
return false;
|
|
19
|
+
const keys = Object.keys(a);
|
|
20
|
+
return (keys.length === Object.keys(b).length &&
|
|
21
|
+
keys.every((key) => same(a[key], b[key])));
|
|
22
|
+
}
|
|
23
|
+
function play(el, value) {
|
|
24
|
+
const [animation, options] = split(value);
|
|
25
|
+
let scope = scopes.get(el);
|
|
26
|
+
if (!scope)
|
|
27
|
+
scopes.set(el, (scope = motionScope()));
|
|
28
|
+
const handle = scope.animate(el, animation, options);
|
|
29
|
+
animations.set(el, handle);
|
|
30
|
+
return handle;
|
|
31
|
+
}
|
|
32
|
+
function cancel(el) {
|
|
33
|
+
scopes.get(el)?.dispose();
|
|
34
|
+
scopes.delete(el);
|
|
35
|
+
animations.delete(el);
|
|
36
|
+
}
|
|
37
|
+
function attach(el, value) {
|
|
38
|
+
const [pressed, options] = value === undefined ? [] : split(value);
|
|
39
|
+
removers.set(el, press(el, pressed, options));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Plays an animation when the element mounts, and again whenever the value changes.
|
|
43
|
+
*
|
|
44
|
+
* ```vue
|
|
45
|
+
* <Label v-animate="'fadeInUp'" />
|
|
46
|
+
* <Label v-animate="['popIn', { delay: 200 }]" />
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export const vAnimate = {
|
|
50
|
+
mounted(el, { value }) {
|
|
51
|
+
play(el, value);
|
|
52
|
+
},
|
|
53
|
+
updated(el, { value, oldValue }) {
|
|
54
|
+
if (!same(value, oldValue))
|
|
55
|
+
play(el, value);
|
|
56
|
+
},
|
|
57
|
+
unmounted: cancel,
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Press feedback while a finger is on the element.
|
|
61
|
+
*
|
|
62
|
+
* ```vue
|
|
63
|
+
* <GridLayout v-press />
|
|
64
|
+
* <GridLayout v-press="{ scale: 0.95 }" />
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export const vPress = {
|
|
68
|
+
mounted(el, { value }) {
|
|
69
|
+
attach(el, value);
|
|
70
|
+
},
|
|
71
|
+
updated(el, { value, oldValue }) {
|
|
72
|
+
if (same(value, oldValue))
|
|
73
|
+
return;
|
|
74
|
+
removers.get(el)?.();
|
|
75
|
+
attach(el, value);
|
|
76
|
+
},
|
|
77
|
+
unmounted(el) {
|
|
78
|
+
removers.get(el)?.();
|
|
79
|
+
removers.delete(el);
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
/** The hooks `JoltTransition` hands to Vue's `BaseTransition`. */
|
|
83
|
+
export function transitionHooks(props) {
|
|
84
|
+
const run = (value) => (el, done) => {
|
|
85
|
+
if (value === undefined) {
|
|
86
|
+
done();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const handle = play(el, value);
|
|
90
|
+
void handle.finished.then(() => {
|
|
91
|
+
if (animations.get(el) === handle)
|
|
92
|
+
animations.delete(el);
|
|
93
|
+
done();
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
const hooks = {
|
|
97
|
+
onEnter: run(props.enter),
|
|
98
|
+
onEnterCancelled: cancel,
|
|
99
|
+
onLeave: run(props.leave),
|
|
100
|
+
onLeaveCancelled: cancel,
|
|
101
|
+
};
|
|
102
|
+
if (props.appear) {
|
|
103
|
+
hooks.onAppear = hooks.onEnter;
|
|
104
|
+
hooks.onAppearCancelled = cancel;
|
|
105
|
+
}
|
|
106
|
+
return hooks;
|
|
107
|
+
}
|
|
108
|
+
const value = {
|
|
109
|
+
type: [String, Object, Array],
|
|
110
|
+
default: undefined,
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Animates a child in and out. Vue keeps the element until the leave animation settles.
|
|
114
|
+
*
|
|
115
|
+
* ```vue
|
|
116
|
+
* <JoltTransition enter="popIn" leave="fadeOut">
|
|
117
|
+
* <Label v-if="visible" text="Saved" />
|
|
118
|
+
* </JoltTransition>
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export const JoltTransition = defineComponent({
|
|
122
|
+
name: 'JoltTransition',
|
|
123
|
+
props: {
|
|
124
|
+
enter: value,
|
|
125
|
+
leave: value,
|
|
126
|
+
appear: Boolean,
|
|
127
|
+
mode: { type: String, default: undefined },
|
|
128
|
+
},
|
|
129
|
+
setup(props, { slots }) {
|
|
130
|
+
return () => h(BaseTransition, { ...transitionHooks(props), mode: props.mode, appear: props.appear }, slots);
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
/** Registers `v-animate`, `v-press` and `JoltTransition` on the app. */
|
|
134
|
+
export function install(app) {
|
|
135
|
+
app.directive('animate', vAnimate);
|
|
136
|
+
app.directive('press', vPress);
|
|
137
|
+
app.component('JoltTransition', JoltTransition);
|
|
138
|
+
}
|
|
139
|
+
export default { install };
|
|
140
|
+
/** Call in setup(): suspend cached components and dispose only on actual unmount. */
|
|
141
|
+
export function useMotionScope() {
|
|
142
|
+
const scope = motionScope();
|
|
143
|
+
onUnmounted(() => scope.dispose());
|
|
144
|
+
onDeactivated(() => scope.suspend());
|
|
145
|
+
onActivated(() => scope.resume());
|
|
146
|
+
return scope;
|
|
147
|
+
}
|
|
148
|
+
/** Call in setup(): whether motion is reduced, kept up to date until the component unmounts. */
|
|
149
|
+
export function useReducedMotion() {
|
|
150
|
+
const reduced = shallowRef(reducedMotion());
|
|
151
|
+
const off = onReducedMotion((value) => (reduced.value = value));
|
|
152
|
+
onUnmounted(off);
|
|
153
|
+
return readonly(reduced);
|
|
154
|
+
}
|
|
155
|
+
/** Call in setup(): the keyboard's state, kept up to date until the component unmounts. */
|
|
156
|
+
export function useKeyboard() {
|
|
157
|
+
const keyboard = shallowRef(currentKeyboard());
|
|
158
|
+
const off = onKeyboard((next) => (keyboard.value = next));
|
|
159
|
+
keyboard.value = currentKeyboard();
|
|
160
|
+
onUnmounted(off);
|
|
161
|
+
return readonly(keyboard);
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vue/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Image, type View } from '@nativescript/core';
|
|
2
|
+
export interface ZoomSnapshot {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
scale: number;
|
|
6
|
+
progress: number;
|
|
7
|
+
pending: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ZoomDriver {
|
|
10
|
+
readonly native: object;
|
|
11
|
+
readonly state: ZoomSnapshot;
|
|
12
|
+
zoom(scale: number, x: number, y: number, animated: boolean): void;
|
|
13
|
+
reset(animated: boolean): void;
|
|
14
|
+
requestDismiss(): void;
|
|
15
|
+
setReduced(value: boolean): void;
|
|
16
|
+
setActive(value: boolean): void;
|
|
17
|
+
layout(): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
}
|
|
20
|
+
export interface ZoomSettings {
|
|
21
|
+
minimum: number;
|
|
22
|
+
maximum: number;
|
|
23
|
+
doubleTap: number;
|
|
24
|
+
dismiss: boolean;
|
|
25
|
+
reduced: boolean;
|
|
26
|
+
backdrop?: View;
|
|
27
|
+
chrome?: View;
|
|
28
|
+
}
|
|
29
|
+
export declare function createZoomDriver(image: Image, viewport: View, options: ZoomSettings, dismiss: (x: number, y: number, scale: number, velocity: number, progress: number) => void, settled: (x: number, y: number, scale: number) => void): ZoomDriver;
|
|
30
|
+
//# sourceMappingURL=zoom-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoom-native.d.ts","sourceRoot":"","sources":["../src/zoom-native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAExE,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AACD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IAClE,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9B,cAAc,IAAI,IAAI,CAAA;IACtB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC/B,MAAM,IAAI,IAAI,CAAA;IACd,IAAI,IAAI,IAAI,CAAA;CACb;AACD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,MAAM,CAAC,EAAE,IAAI,CAAA;CACd;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,CACP,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,KACb,IAAI,EACT,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACrD,UAAU,CAiFZ"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Utils, isIOS } from '@nativescript/core';
|
|
2
|
+
export function createZoomDriver(image, viewport, options, dismiss, settled) {
|
|
3
|
+
const { minimum, maximum, doubleTap, reduced, backdrop, chrome } = options;
|
|
4
|
+
if (isIOS) {
|
|
5
|
+
const native = JoltPhotoZoom.attachImageViewportMinimumMaximumDoubleTapDismissReducedBackdropChromeOnDismissOnSettled(image.nativeViewProtected, viewport.nativeViewProtected, minimum, maximum, doubleTap, options.dismiss, reduced, backdrop?.nativeViewProtected ?? null, chrome?.nativeViewProtected ?? null, dismiss, settled);
|
|
6
|
+
return {
|
|
7
|
+
native,
|
|
8
|
+
get state() {
|
|
9
|
+
return {
|
|
10
|
+
x: native.x,
|
|
11
|
+
y: native.y,
|
|
12
|
+
scale: native.scale,
|
|
13
|
+
progress: native.dismissProgress,
|
|
14
|
+
pending: native.dismissPending,
|
|
15
|
+
};
|
|
16
|
+
},
|
|
17
|
+
zoom: (s, x, y, a) => native.zoomFocusXFocusYAnimated(s, x, y, a),
|
|
18
|
+
reset: (a) => native.reset(a),
|
|
19
|
+
requestDismiss: () => native.requestDismiss(),
|
|
20
|
+
setReduced: (r) => native.setReduced(r),
|
|
21
|
+
setActive: (a) => native.setActive(a),
|
|
22
|
+
layout: () => native.layout(),
|
|
23
|
+
stop: () => native.stop(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const density = Utils.layout.getDisplayDensity();
|
|
27
|
+
const source = image.imageSource;
|
|
28
|
+
const angle = Math.abs((source.rotationAngle ?? 0) % 180);
|
|
29
|
+
const swapped = angle > 45 && angle < 135;
|
|
30
|
+
const native = new org.rafaelaugusto.jolt.PhotoZoom(image.nativeViewProtected, viewport.nativeViewProtected, swapped ? source.height : source.width, swapped ? source.width : source.height, minimum, maximum, doubleTap, options.dismiss, reduced, backdrop?.nativeViewProtected ?? null, chrome?.nativeViewProtected ?? null, viewport
|
|
31
|
+
.touchListener ?? null, image
|
|
32
|
+
.touchListener ?? null, new org.rafaelaugusto.jolt.PhotoZoom.Listener({
|
|
33
|
+
onDismiss: dismiss,
|
|
34
|
+
onSettled: settled,
|
|
35
|
+
}));
|
|
36
|
+
return {
|
|
37
|
+
native,
|
|
38
|
+
get state() {
|
|
39
|
+
return {
|
|
40
|
+
x: native.getX(),
|
|
41
|
+
y: native.getY(),
|
|
42
|
+
scale: native.getScale(),
|
|
43
|
+
progress: native.getDismissProgress(),
|
|
44
|
+
pending: native.isDismissPending(),
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
zoom: (s, x, y, a) => native.zoom(s, x * density, y * density, a),
|
|
48
|
+
reset: (a) => native.reset(a),
|
|
49
|
+
requestDismiss: () => native.requestDismiss(),
|
|
50
|
+
setReduced: (r) => native.setReduced(r),
|
|
51
|
+
setActive: (a) => native.setActive(a),
|
|
52
|
+
layout: () => { },
|
|
53
|
+
stop: () => native.stop(),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=zoom-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoom-native.js","sourceRoot":"","sources":["../src/zoom-native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type ZoomSnapshot } from './zoom-native.js';
|
|
2
|
+
import type { Target } from './types.js';
|
|
3
|
+
export type ZoomState = Readonly<ZoomSnapshot>;
|
|
4
|
+
export interface PhotoDismissal {
|
|
5
|
+
readonly state: ZoomState;
|
|
6
|
+
/** Release velocity in viewport-local DIPs per second. */
|
|
7
|
+
readonly velocity: number;
|
|
8
|
+
/** Return to the viewer. False means this intent is obsolete. */
|
|
9
|
+
cancel(): boolean;
|
|
10
|
+
/** Release the controller. Navigate only when this returns true. */
|
|
11
|
+
complete(): boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface ZoomableOptions {
|
|
14
|
+
/** Direct parent of the Image. Its bounds are the clipping/pointer viewport. */
|
|
15
|
+
viewport?: Target;
|
|
16
|
+
/** Relative zoom range. Defaults to [1, 5]; minimum must be >= 1. */
|
|
17
|
+
scale?: readonly [number, number];
|
|
18
|
+
/** Double-tap zoom, clamped into the configured range. Defaults to 2.5. */
|
|
19
|
+
doubleTap?: number;
|
|
20
|
+
dismiss?: 'vertical' | false;
|
|
21
|
+
/** These views follow dismissal natively; no JS progress callback is needed. */
|
|
22
|
+
backdrop?: Target;
|
|
23
|
+
chrome?: Target;
|
|
24
|
+
/** One terminal intent per drag/programmatic close. App/router owns navigation. */
|
|
25
|
+
onDismiss?: (dismissal: PhotoDismissal) => void;
|
|
26
|
+
/** Called at rest, never on each pointer/frame update. */
|
|
27
|
+
onSettled?: (state: ZoomState) => void;
|
|
28
|
+
/** Setup failed after loading; resources are disposed before this callback. */
|
|
29
|
+
onError?: (error: Error) => void;
|
|
30
|
+
}
|
|
31
|
+
export interface Zoomable {
|
|
32
|
+
readonly ready: boolean;
|
|
33
|
+
readonly error: Error | undefined;
|
|
34
|
+
readonly state: ZoomState;
|
|
35
|
+
/** Native adapter entry point for native navigation integrations. */
|
|
36
|
+
readonly nativeController: object | undefined;
|
|
37
|
+
zoomTo(scale: number, focus?: {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
}, animated?: boolean): void;
|
|
41
|
+
reset(animated?: boolean): void;
|
|
42
|
+
requestDismiss(): void;
|
|
43
|
+
cancelDismiss(): void;
|
|
44
|
+
dispose(): void;
|
|
45
|
+
}
|
|
46
|
+
/** Makes an Image interactive without per-frame JS. Owns its transforms until disposed. */
|
|
47
|
+
export declare function zoomable(target: Target, options?: ZoomableOptions): Zoomable;
|
|
48
|
+
//# sourceMappingURL=zoomable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoomable.d.ts","sourceRoot":"","sources":["../src/zoomable.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;AAC9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,iEAAiE;IACjE,MAAM,IAAI,OAAO,CAAA;IACjB,oEAAoE;IACpE,QAAQ,IAAI,OAAO,CAAA;CACpB;AACD,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,UAAU,GAAG,KAAK,CAAA;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAA;IAC/C,0DAA0D;IAC1D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IACtC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AACD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACjF,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC/B,cAAc,IAAI,IAAI,CAAA;IACtB,aAAa,IAAI,IAAI,CAAA;IACrB,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,CA0DhF"}
|