@rafaelaugusto/jolt 0.1.0-beta.0 → 0.1.0-beta.10
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 +441 -25
- package/dist/animate.d.ts +21 -5
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +205 -25
- 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-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-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 +164 -20
- package/dist/driver/ios.js.map +1 -1
- package/dist/engine.d.ts +76 -5
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +303 -23
- package/dist/engine.js.map +1 -1
- 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 +45 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -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 +36 -0
- package/dist/motion-states.d.ts.map +1 -0
- package/dist/motion-states.js +165 -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/presets.d.ts +16 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +24 -6
- package/dist/presets.js.map +1 -1
- package/dist/press.d.ts.map +1 -1
- package/dist/press.js +25 -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 +13 -7
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +214 -19
- 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 +17 -1
- package/dist/transition.d.ts.map +1 -1
- package/dist/transition.js +41 -6
- package/dist/transition.js.map +1 -1
- package/dist/types.d.ts +50 -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 +33 -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/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 +19 -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 +155 -0
- package/src/animate.ts +278 -38
- 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-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-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 +194 -25
- package/src/engine.ts +329 -27
- 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 +61 -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 +215 -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/presets.ts +31 -7
- package/src/press.ts +32 -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 +212 -19
- 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 +63 -6
- package/src/types.ts +51 -1
- package/src/vue/index.ts +231 -0
- package/src/zoom-native.ts +124 -0
- package/src/zoomable.ts +330 -0
package/dist/animate.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type { PlaybackAnimation } from './playback.js';
|
|
1
2
|
import { View } from '@nativescript/core';
|
|
2
3
|
import { type Animation } from './engine.js';
|
|
3
4
|
import { type PresetName } from './presets.js';
|
|
4
5
|
import { type Property } from './properties.js';
|
|
5
6
|
import { type SpringName } from './transition.js';
|
|
6
|
-
import type { AnimateOptions, Keyframes, Target } from './types.js';
|
|
7
|
+
import type { AnimateOptions, DecayOptions, DecayVelocity, Keyframes, KeyframeProperty, Target, Values } from './types.js';
|
|
7
8
|
/**
|
|
8
9
|
* Animates one view, or several. Takes keyframes or the name of a preset,
|
|
9
10
|
* and a transition or the name of a spring.
|
|
@@ -14,13 +15,28 @@ import type { AnimateOptions, Keyframes, Target } from './types.js';
|
|
|
14
15
|
* animate(rows, 'fadeInUp', { stagger: 40 })
|
|
15
16
|
* ```
|
|
16
17
|
*/
|
|
17
|
-
export declare function animate(target: Target | readonly Target[], animation: Keyframes | PresetName, options?: AnimateOptions | SpringName):
|
|
18
|
-
/**
|
|
19
|
-
export declare function
|
|
18
|
+
export declare function animate(target: Target | readonly Target[], animation: Keyframes | PresetName, options?: AnimateOptions | SpringName): PlaybackAnimation;
|
|
19
|
+
/** Validate and snapshot a complete animation before changing any view ownership. */
|
|
20
|
+
export declare function prepareAnimation(target: Target | readonly Target[], animation: Keyframes | PresetName, options?: AnimateOptions | SpringName): () => PlaybackAnimation;
|
|
21
|
+
/** Starts at the current translation and slows down from a velocity in DIPs per second. */
|
|
22
|
+
export declare function decay(target: Target | readonly Target[], velocity: DecayVelocity, options?: DecayOptions): PlaybackAnimation;
|
|
23
|
+
/** Stops all or selected properties at their current values. `scale` stops both axes. */
|
|
24
|
+
export declare function stop(target: Target | readonly Target[], properties?: readonly KeyframeProperty[]): void;
|
|
25
|
+
/**
|
|
26
|
+
* Applies values at once, stopping whatever animates those properties.
|
|
27
|
+
* `scale` sets both axes. A view that isn't loaded yet gets them right away.
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* set(logo, { opacity: 1, scale: 1, y: 0 })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function set(target: Target | readonly Target[], values: Values): void;
|
|
20
34
|
/** Plays several animations as one: finished once they all are, and stopped together. */
|
|
21
35
|
export declare function group(animations: readonly Animation[]): Animation;
|
|
22
36
|
export declare function toView(target: Target): View;
|
|
23
37
|
export declare function toViews(target: Target | readonly Target[]): View[];
|
|
24
38
|
/** Each property the animation touches, with the value it starts from when it sets one. */
|
|
25
|
-
export declare function startingValues(animation: Keyframes | PresetName): Map<Property, number>;
|
|
39
|
+
export declare function startingValues(animation: Keyframes | PresetName, options?: AnimateOptions | SpringName): Map<Property, number | null>;
|
|
40
|
+
/** Each property the animation touches, with the value it leaves behind when that is known up front. */
|
|
41
|
+
export declare function endingValues(animation: Keyframes | PresetName, options?: AnimateOptions | SpringName): Map<Property, number | null>;
|
|
26
42
|
//# sourceMappingURL=animate.d.ts.map
|
package/dist/animate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animate.d.ts","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"animate.d.ts","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAQzC,OAAO,EAKL,KAAK,SAAS,EAEf,MAAM,aAAa,CAAA;AACpB,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAKL,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,SAAS,EAET,gBAAgB,EAEhB,MAAM,EACN,MAAM,EACP,MAAM,YAAY,CAAA;AAUnB;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,GACpC,iBAAiB,CAEnB;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,GACpC,MAAM,iBAAiB,CAmCzB;AAED,2FAA2F;AAC3F,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,YAAiB,GACzB,iBAAiB,CAkEnB;AAED,yFAAyF;AACzF,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,UAAU,CAAC,EAAE,SAAS,gBAAgB,EAAE,QAMzC;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAc5E;AAED,yFAAyF;AACzF,wBAAgB,KAAK,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAWjE;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAO3C;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,EAAE,CAElE;AA8GD,2FAA2F;AAC3F,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,gCAUtC;AAED,wGAAwG;AACxG,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,gCActC"}
|
package/dist/animate.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import { isDecorationProperty, validateDecorationTarget, validateDecorationFrames, } from './decoration.js';
|
|
2
|
+
import { playbackGroup } from './playback-group.js';
|
|
3
|
+
import { preparePath } from './path.js';
|
|
1
4
|
import { View } from '@nativescript/core';
|
|
5
|
+
import { isColorProperty, parseColor, validateColorTarget, } from './color.js';
|
|
6
|
+
import { DEFAULT_FRICTION, solveDecay } from './decay.js';
|
|
2
7
|
import { arrivalOf, setArrival, stopView, ViewAnimation, } from './engine.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
8
|
+
import { getPreset } from './presets.js';
|
|
9
|
+
import { resolveHaptic } from './haptics.js';
|
|
10
|
+
import { isProperty, precision } from './properties.js';
|
|
5
11
|
import { hasCurve, mergeTransitions, resolveTransition, springs, } from './transition.js';
|
|
6
12
|
/**
|
|
7
13
|
* Animates one view, or several. Takes keyframes or the name of a preset,
|
|
@@ -14,17 +20,123 @@ import { hasCurve, mergeTransitions, resolveTransition, springs, } from './trans
|
|
|
14
20
|
* ```
|
|
15
21
|
*/
|
|
16
22
|
export function animate(target, animation, options) {
|
|
17
|
-
|
|
23
|
+
return prepareAnimation(target, animation, options)();
|
|
24
|
+
}
|
|
25
|
+
/** Validate and snapshot a complete animation before changing any view ownership. */
|
|
26
|
+
export function prepareAnimation(target, animation, options) {
|
|
27
|
+
const { keyframes, base, overrides, stagger, relative, haptic, path } = prepare(animation, options);
|
|
28
|
+
const feedback = resolveHaptic(haptic);
|
|
18
29
|
if (!isList(target)) {
|
|
19
|
-
|
|
30
|
+
const view = toView(target);
|
|
31
|
+
for (const property of Object.keys(keyframes))
|
|
32
|
+
if (isColorProperty(property))
|
|
33
|
+
validateColorTarget(view, property);
|
|
34
|
+
else if (isDecorationProperty(property))
|
|
35
|
+
validateDecorationTarget(view, property);
|
|
36
|
+
const plans = plan(keyframes, base, overrides, 0, relative, path);
|
|
37
|
+
return () => new ViewAnimation(view, plans, feedback);
|
|
20
38
|
}
|
|
21
39
|
const views = target.map(toView);
|
|
22
|
-
|
|
40
|
+
for (const view of views)
|
|
41
|
+
for (const property of Object.keys(keyframes))
|
|
42
|
+
if (isColorProperty(property))
|
|
43
|
+
validateColorTarget(view, property);
|
|
44
|
+
else if (isDecorationProperty(property))
|
|
45
|
+
validateDecorationTarget(view, property);
|
|
46
|
+
const plans = views.map((_, index) => plan(keyframes, base, overrides, staggerDelay(stagger, index, views.length), relative, path));
|
|
47
|
+
return () => playbackGroup(views.map((view, index) => new ViewAnimation(view, plans[index], feedback, true)));
|
|
48
|
+
}
|
|
49
|
+
/** Starts at the current translation and slows down from a velocity in DIPs per second. */
|
|
50
|
+
export function decay(target, velocity, options = {}) {
|
|
51
|
+
const friction = options.friction ?? DEFAULT_FRICTION;
|
|
52
|
+
if (!Number.isFinite(friction) || friction <= 0 || friction >= 1) {
|
|
53
|
+
throw new RangeError('Decay friction must be between 0 and 1 exclusively.');
|
|
54
|
+
}
|
|
55
|
+
const stops = (values) => {
|
|
56
|
+
if (values === undefined)
|
|
57
|
+
return undefined;
|
|
58
|
+
if (!Array.isArray(values) ||
|
|
59
|
+
values.length === 0 ||
|
|
60
|
+
![...values].every(Number.isFinite)) {
|
|
61
|
+
throw new RangeError('Decay snap needs a nonempty array of finite positions.');
|
|
62
|
+
}
|
|
63
|
+
return [...values];
|
|
64
|
+
};
|
|
65
|
+
const snap = options.snap;
|
|
66
|
+
if (snap !== undefined &&
|
|
67
|
+
!Array.isArray(snap) &&
|
|
68
|
+
(snap === null ||
|
|
69
|
+
typeof snap !== 'object' ||
|
|
70
|
+
Object.keys(snap).some((key) => key !== 'x' && key !== 'y'))) {
|
|
71
|
+
throw new TypeError('Decay snap must be an array or an object with x and y stops.');
|
|
72
|
+
}
|
|
73
|
+
const shared = Array.isArray(snap);
|
|
74
|
+
const perAxis = snap;
|
|
75
|
+
const snapped = shared ? stops(snap) : undefined;
|
|
76
|
+
const snapX = shared ? snapped : stops(perAxis?.x);
|
|
77
|
+
const snapY = shared ? snapped : stops(perAxis?.y);
|
|
78
|
+
const plans = Object.entries(velocity).flatMap(([property, value]) => {
|
|
79
|
+
if (property !== 'x' && property !== 'y') {
|
|
80
|
+
throw new Error(`Can't decay "${property}". Use x or y.`);
|
|
81
|
+
}
|
|
82
|
+
if (value === undefined)
|
|
83
|
+
return [];
|
|
84
|
+
if (!Number.isFinite(value)) {
|
|
85
|
+
throw new RangeError(`Invalid decay velocity for "${property}".`);
|
|
86
|
+
}
|
|
87
|
+
// Validate every axis before handing any plans to the engine.
|
|
88
|
+
solveDecay(0, value, friction, precision[property]);
|
|
89
|
+
return [
|
|
90
|
+
{
|
|
91
|
+
property,
|
|
92
|
+
keyframes: [null, null],
|
|
93
|
+
transition: {
|
|
94
|
+
curve: {
|
|
95
|
+
type: 'decay',
|
|
96
|
+
friction,
|
|
97
|
+
velocity: value,
|
|
98
|
+
snap: property === 'x' ? snapX : snapY,
|
|
99
|
+
},
|
|
100
|
+
delay: 0,
|
|
101
|
+
repeat: 0,
|
|
102
|
+
reverse: false,
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
];
|
|
106
|
+
});
|
|
107
|
+
const views = toViews(target);
|
|
108
|
+
if (plans.length === 0)
|
|
109
|
+
return playbackGroup([]);
|
|
110
|
+
return playbackGroup(views.map((view) => new ViewAnimation(view, plans, undefined, true)));
|
|
23
111
|
}
|
|
24
|
-
/** Stops
|
|
25
|
-
export function stop(target) {
|
|
112
|
+
/** Stops all or selected properties at their current values. `scale` stops both axes. */
|
|
113
|
+
export function stop(target, properties) {
|
|
114
|
+
const expanded = properties?.flatMap((property) => property === 'scale' ? ['scaleX', 'scaleY'] : [property]);
|
|
26
115
|
for (const view of toViews(target))
|
|
27
|
-
stopView(view);
|
|
116
|
+
stopView(view, expanded);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Applies values at once, stopping whatever animates those properties.
|
|
120
|
+
* `scale` sets both axes. A view that isn't loaded yet gets them right away.
|
|
121
|
+
*
|
|
122
|
+
* ```ts
|
|
123
|
+
* set(logo, { opacity: 1, scale: 1, y: 0 })
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export function set(target, values) {
|
|
127
|
+
if (values === null || typeof values !== 'object' || Array.isArray(values))
|
|
128
|
+
throw new TypeError('set() takes an object of values.');
|
|
129
|
+
const keyframes = {};
|
|
130
|
+
for (const [key, value] of Object.entries(values)) {
|
|
131
|
+
if (value === undefined)
|
|
132
|
+
continue;
|
|
133
|
+
if (key !== 'scale' && !isProperty(key))
|
|
134
|
+
throw new Error(`Can't set "${key}".`);
|
|
135
|
+
if (value === null || Array.isArray(value))
|
|
136
|
+
throw new TypeError(`set() takes one value per property, got ${String(value)} for "${key}".`);
|
|
137
|
+
keyframes[key] = [value, value];
|
|
138
|
+
}
|
|
139
|
+
animate(target, keyframes, { duration: 0 });
|
|
28
140
|
}
|
|
29
141
|
/** Plays several animations as one: finished once they all are, and stopped together. */
|
|
30
142
|
export function group(animations) {
|
|
@@ -53,12 +165,17 @@ function isList(target) {
|
|
|
53
165
|
return Array.isArray(target);
|
|
54
166
|
}
|
|
55
167
|
function prepare(animation, options) {
|
|
168
|
+
const prepared = resolveAnimation(animation, options);
|
|
169
|
+
return {
|
|
170
|
+
...prepared,
|
|
171
|
+
path: preparePath(prepared.keyframes, prepared.base, prepared.overrides),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function resolveAnimation(animation, options) {
|
|
56
175
|
const user = normalize(options);
|
|
57
176
|
if (typeof animation !== 'string')
|
|
58
177
|
return { keyframes: animation, ...user };
|
|
59
|
-
const preset =
|
|
60
|
-
if (!preset)
|
|
61
|
-
throw new Error(`Unknown preset "${animation}".`);
|
|
178
|
+
const preset = getPreset(animation);
|
|
62
179
|
const own = normalize(preset.transition);
|
|
63
180
|
return {
|
|
64
181
|
keyframes: preset.keyframes,
|
|
@@ -66,49 +183,95 @@ function prepare(animation, options) {
|
|
|
66
183
|
overrides: hasCurve(user.base)
|
|
67
184
|
? user.overrides
|
|
68
185
|
: { ...own.overrides, ...user.overrides },
|
|
69
|
-
stagger: user.stagger,
|
|
186
|
+
stagger: user.stagger ?? own.stagger,
|
|
187
|
+
relative: user.relative ?? own.relative,
|
|
188
|
+
haptic: user.haptic ?? own.haptic,
|
|
70
189
|
};
|
|
71
190
|
}
|
|
72
191
|
function normalize(options) {
|
|
73
192
|
if (options === undefined)
|
|
74
|
-
return {
|
|
193
|
+
return {
|
|
194
|
+
base: {},
|
|
195
|
+
overrides: {},
|
|
196
|
+
stagger: undefined,
|
|
197
|
+
relative: undefined,
|
|
198
|
+
haptic: undefined,
|
|
199
|
+
};
|
|
75
200
|
if (typeof options === 'string')
|
|
76
|
-
return {
|
|
201
|
+
return {
|
|
202
|
+
base: spring(options),
|
|
203
|
+
overrides: {},
|
|
204
|
+
stagger: undefined,
|
|
205
|
+
relative: undefined,
|
|
206
|
+
haptic: undefined,
|
|
207
|
+
};
|
|
77
208
|
const base = {};
|
|
78
209
|
const overrides = {};
|
|
79
210
|
let stagger;
|
|
211
|
+
let relative;
|
|
212
|
+
let haptic;
|
|
80
213
|
for (const [key, value] of Object.entries(options)) {
|
|
81
214
|
if (value === undefined)
|
|
82
215
|
continue;
|
|
83
216
|
if (key === 'stagger')
|
|
84
217
|
stagger = value;
|
|
85
|
-
else if (key === '
|
|
218
|
+
else if (key === 'relative')
|
|
219
|
+
relative = value;
|
|
220
|
+
else if (key === 'haptic')
|
|
221
|
+
haptic = value;
|
|
222
|
+
else if (key === 'path' || key === 'scale' || isProperty(key)) {
|
|
86
223
|
overrides[key] = typeof value === 'string' ? spring(value) : value;
|
|
87
224
|
}
|
|
88
225
|
else
|
|
89
226
|
base[key] = value;
|
|
90
227
|
}
|
|
91
|
-
return { base, overrides, stagger };
|
|
228
|
+
return { base, overrides, stagger, relative, haptic };
|
|
92
229
|
}
|
|
93
|
-
function plan(keyframes, base, overrides, offset) {
|
|
94
|
-
return expand(keyframes).map(([property, frames]) => {
|
|
230
|
+
function plan(keyframes, base, overrides, offset, relative = false, path) {
|
|
231
|
+
return expand(keyframes, path).map(([property, frames]) => {
|
|
232
|
+
if (path?.properties.includes(property)) {
|
|
233
|
+
if (!Number.isFinite(path.transition.delay + offset) ||
|
|
234
|
+
path.transition.delay + offset < 0)
|
|
235
|
+
throw new RangeError('Path delays, including stagger, must be finite and nonnegative.');
|
|
236
|
+
return {
|
|
237
|
+
property,
|
|
238
|
+
keyframes: frames,
|
|
239
|
+
transition: { ...path.transition, delay: path.transition.delay + offset },
|
|
240
|
+
relative,
|
|
241
|
+
path,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
95
244
|
const override = overrides[property] ?? (property.startsWith('scale') ? overrides.scale : undefined);
|
|
96
245
|
const transition = resolveTransition(override ? mergeTransitions(base, override) : base, property, frames.length);
|
|
97
246
|
transition.delay += offset;
|
|
98
|
-
return { property, keyframes: frames, transition };
|
|
247
|
+
return { property, keyframes: frames, transition, relative };
|
|
99
248
|
});
|
|
100
249
|
}
|
|
101
250
|
/** Each property the animation touches, with the value it starts from when it sets one. */
|
|
102
|
-
export function startingValues(animation) {
|
|
103
|
-
const keyframes
|
|
251
|
+
export function startingValues(animation, options) {
|
|
252
|
+
const { keyframes, relative, path } = prepare(animation, options);
|
|
104
253
|
if (!keyframes)
|
|
105
254
|
throw new Error(`Unknown preset "${animation}".`);
|
|
106
|
-
return new Map(expand(keyframes).map(([property, [first]]) => [
|
|
255
|
+
return new Map(expand(keyframes, path).map(([property, [first]]) => [
|
|
256
|
+
property,
|
|
257
|
+
relative && !isColorProperty(property) ? null : first,
|
|
258
|
+
]));
|
|
107
259
|
}
|
|
108
|
-
|
|
260
|
+
/** Each property the animation touches, with the value it leaves behind when that is known up front. */
|
|
261
|
+
export function endingValues(animation, options) {
|
|
262
|
+
const { keyframes, base, overrides, relative, path } = prepare(animation, options);
|
|
263
|
+
return new Map(plan(keyframes, base, overrides, 0, relative, path).map(({ property, keyframes: frames, transition, path: owned }) => {
|
|
264
|
+
const finite = Number.isFinite(transition.repeat);
|
|
265
|
+
const backwards = transition.reverse && finite && transition.repeat % 2 === 1;
|
|
266
|
+
const unknown = owned !== undefined || (relative && !isColorProperty(property));
|
|
267
|
+
const frame = !finite || backwards ? frames[0] : frames.at(-1);
|
|
268
|
+
return [property, unknown ? null : frame];
|
|
269
|
+
}));
|
|
270
|
+
}
|
|
271
|
+
function expand(keyframes, path) {
|
|
109
272
|
const expanded = [];
|
|
110
273
|
for (const [key, value] of Object.entries(keyframes)) {
|
|
111
|
-
if (value === undefined)
|
|
274
|
+
if (value === undefined || key === 'path' || key === 'orient')
|
|
112
275
|
continue;
|
|
113
276
|
if (key !== 'scale' && !isProperty(key))
|
|
114
277
|
throw new Error(`Can't animate "${key}".`);
|
|
@@ -116,12 +279,27 @@ function expand(keyframes) {
|
|
|
116
279
|
for (const property of properties) {
|
|
117
280
|
if (key === 'scale' && keyframes[property] !== undefined)
|
|
118
281
|
continue;
|
|
119
|
-
expanded.push([
|
|
282
|
+
expanded.push([
|
|
283
|
+
property,
|
|
284
|
+
toKeyframes(property, value),
|
|
285
|
+
]);
|
|
120
286
|
}
|
|
121
287
|
}
|
|
288
|
+
for (const [property, value] of path?.starts ?? [])
|
|
289
|
+
expanded.push([property, [value, value]]);
|
|
122
290
|
return expanded;
|
|
123
291
|
}
|
|
124
292
|
function toKeyframes(property, value) {
|
|
293
|
+
if (isColorProperty(property)) {
|
|
294
|
+
const frames = Array.isArray(value) ? [...value] : [null, value];
|
|
295
|
+
if (!frames.length)
|
|
296
|
+
throw new TypeError(`Empty color keyframes for "${property}".`);
|
|
297
|
+
if (frames.length === 1)
|
|
298
|
+
frames.unshift(null);
|
|
299
|
+
return frames.map((frame) => (frame === null ? null : parseColor(frame)));
|
|
300
|
+
}
|
|
301
|
+
if (typeof value !== 'number' && !Array.isArray(value))
|
|
302
|
+
throw new TypeError(`Invalid numeric keyframes for "${property}".`);
|
|
125
303
|
const frames = typeof value === 'number' ? [null, value] : [...value];
|
|
126
304
|
if (frames.length === 1)
|
|
127
305
|
frames.unshift(null);
|
|
@@ -129,6 +307,8 @@ function toKeyframes(property, value) {
|
|
|
129
307
|
frames.some((frame) => frame !== null && !Number.isFinite(frame))) {
|
|
130
308
|
throw new Error(`Invalid keyframes for "${property}": ${JSON.stringify(value)}.`);
|
|
131
309
|
}
|
|
310
|
+
if (isDecorationProperty(property))
|
|
311
|
+
validateDecorationFrames(property, frames);
|
|
132
312
|
return frames;
|
|
133
313
|
}
|
|
134
314
|
function staggerDelay(stagger, index, count) {
|
package/dist/animate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animate.js","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"animate.js","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"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"}
|
package/dist/color.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Color, type View } from '@nativescript/core';
|
|
2
|
+
export type ColorProperty = 'backgroundColor' | 'borderColor' | 'color';
|
|
3
|
+
export type ColorValue = string | Color;
|
|
4
|
+
export type ColorKeyframes = ColorValue | readonly (ColorValue | null)[];
|
|
5
|
+
export declare const isColorProperty: (property: string) => property is ColorProperty;
|
|
6
|
+
export declare function parseColor(value: unknown): number;
|
|
7
|
+
export declare function readColor(view: View, property: ColorProperty): number;
|
|
8
|
+
export declare function validateColorTarget(view: View, property: ColorProperty): void;
|
|
9
|
+
/** Premultiplied OKLab interpolation, clipped to the sRGB output gamut. */
|
|
10
|
+
export declare function colorMixer(from: number, to: number): (progress: number) => number;
|
|
11
|
+
//# sourceMappingURL=color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAA0B,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAErF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,aAAa,GAAG,OAAO,CAAA;AACvE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAA;AACvC,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAA;AACxE,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,QAAQ,IAAI,aACuB,CAAA;AAEtF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAOrE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,QAwBtE;AAsBD,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CA6BjF"}
|
package/dist/color.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Button, Color, Label, TextBase, isIOS } from '@nativescript/core';
|
|
2
|
+
export const isColorProperty = (property) => property === 'backgroundColor' || property === 'borderColor' || property === 'color';
|
|
3
|
+
export function parseColor(value) {
|
|
4
|
+
if (value instanceof Color)
|
|
5
|
+
return value.argb >>> 0;
|
|
6
|
+
if (typeof value !== 'string' || !Color.isValid(value))
|
|
7
|
+
throw new TypeError(`Invalid animation color: ${String(value)}.`);
|
|
8
|
+
return new Color(value).argb >>> 0;
|
|
9
|
+
}
|
|
10
|
+
export function readColor(view, property) {
|
|
11
|
+
const value = property === 'borderColor' ? view.borderTopColor : view[property];
|
|
12
|
+
return value instanceof Color
|
|
13
|
+
? value.argb >>> 0
|
|
14
|
+
: property === 'backgroundColor'
|
|
15
|
+
? 0
|
|
16
|
+
: 0xff000000;
|
|
17
|
+
}
|
|
18
|
+
export function validateColorTarget(view, property) {
|
|
19
|
+
if (property === 'color' &&
|
|
20
|
+
!(isIOS ? view instanceof Label || view instanceof Button : view instanceof TextBase))
|
|
21
|
+
throw new TypeError('Text color animation requires a Label or Button on iOS, or a TextBase on Android.');
|
|
22
|
+
if (property === 'borderColor') {
|
|
23
|
+
const colors = [
|
|
24
|
+
view.borderTopColor,
|
|
25
|
+
view.borderRightColor,
|
|
26
|
+
view.borderBottomColor,
|
|
27
|
+
view.borderLeftColor,
|
|
28
|
+
];
|
|
29
|
+
if (colors.some((color) => (color?.argb ?? 0xff000000) !== (colors[0]?.argb ?? 0xff000000)))
|
|
30
|
+
throw new TypeError('borderColor animation requires the same starting color on every edge.');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const clamp = (value) => Math.max(0, Math.min(1, value));
|
|
34
|
+
const linear = (channel) => channel <= 0.04045 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4;
|
|
35
|
+
const encoded = (channel) => channel <= 0.0031308 ? 12.92 * channel : 1.055 * channel ** (1 / 2.4) - 0.055;
|
|
36
|
+
function lab(value) {
|
|
37
|
+
const r = linear(((value >>> 16) & 255) / 255);
|
|
38
|
+
const g = linear(((value >>> 8) & 255) / 255);
|
|
39
|
+
const b = linear((value & 255) / 255);
|
|
40
|
+
const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);
|
|
41
|
+
const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);
|
|
42
|
+
const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);
|
|
43
|
+
return [
|
|
44
|
+
0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
|
|
45
|
+
1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,
|
|
46
|
+
0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s,
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
/** Premultiplied OKLab interpolation, clipped to the sRGB output gamut. */
|
|
50
|
+
export function colorMixer(from, to) {
|
|
51
|
+
const a = lab(from), b = lab(to);
|
|
52
|
+
const alphaA = (from >>> 24) / 255, alphaB = (to >>> 24) / 255;
|
|
53
|
+
return (progress) => {
|
|
54
|
+
const p = clamp(progress);
|
|
55
|
+
if (p === 0)
|
|
56
|
+
return from;
|
|
57
|
+
if (p === 1)
|
|
58
|
+
return to;
|
|
59
|
+
const alpha = alphaA + (alphaB - alphaA) * p;
|
|
60
|
+
if (alpha <= 0)
|
|
61
|
+
return 0;
|
|
62
|
+
const channel = (i) => (a[i] * alphaA * (1 - p) + b[i] * alphaB * p) / alpha;
|
|
63
|
+
const L = channel(0), A = channel(1), B = channel(2);
|
|
64
|
+
const l = (L + 0.3963377774 * A + 0.2158037573 * B) ** 3;
|
|
65
|
+
const m = (L - 0.1055613458 * A - 0.0638541728 * B) ** 3;
|
|
66
|
+
const s = (L - 0.0894841775 * A - 1.291485548 * B) ** 3;
|
|
67
|
+
const r = Math.round(clamp(encoded(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s)) * 255);
|
|
68
|
+
const g = Math.round(clamp(encoded(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s)) * 255);
|
|
69
|
+
const blue = Math.round(clamp(encoded(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s)) * 255);
|
|
70
|
+
return ((Math.round(alpha * 255) << 24) | (r << 16) | (g << 8) | blue) >>> 0;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface JoltConfig {
|
|
2
|
+
/** Playback speed for every engine animation. `0.2` plays everything five times slower. */
|
|
3
|
+
timeScale?: number;
|
|
4
|
+
/**
|
|
5
|
+
* When transforms, paths, decorations and decay jump to their end instead of animating.
|
|
6
|
+
* `user` follows the platform setting. Opacity and colors still animate.
|
|
7
|
+
*/
|
|
8
|
+
reducedMotion?: 'user' | 'always' | 'never';
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Global settings, applied to animations that start after the call.
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* configure({ timeScale: 0.2 }) // tune a spring in slow motion
|
|
15
|
+
* configure({ reducedMotion: 'always' }) // check the reduced layout
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function configure(options: JoltConfig): void;
|
|
19
|
+
export declare function timeScale(): number;
|
|
20
|
+
/** Whether motion is reduced right now. `user` asks the platform each time. */
|
|
21
|
+
export declare function reducedMotion(): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Calls back with the new value whenever `reducedMotion()` changes, from `configure()`
|
|
24
|
+
* or the platform setting. Returns a cleanup function.
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* const off = onReducedMotion((reduced) => (illustration.visibility = reduced ? 'visible' : 'collapse'))
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function onReducedMotion(callback: (reduced: boolean) => void): () => void;
|
|
31
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;CAC5C;AAQD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAenD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAchF"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { getDriver } from './driver/index.js';
|
|
2
|
+
const settings = { timeScale: 1, reducedMotion: 'user' };
|
|
3
|
+
const listeners = new Set();
|
|
4
|
+
let reported = false;
|
|
5
|
+
let unwatch;
|
|
6
|
+
const preferences = ['user', 'always', 'never'];
|
|
7
|
+
/**
|
|
8
|
+
* Global settings, applied to animations that start after the call.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* configure({ timeScale: 0.2 }) // tune a spring in slow motion
|
|
12
|
+
* configure({ reducedMotion: 'always' }) // check the reduced layout
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export function configure(options) {
|
|
16
|
+
if (options === null || typeof options !== 'object')
|
|
17
|
+
throw new TypeError('configure() takes an options object.');
|
|
18
|
+
const { timeScale, reducedMotion } = options;
|
|
19
|
+
if (timeScale !== undefined && (!Number.isFinite(timeScale) || timeScale <= 0))
|
|
20
|
+
throw new RangeError(`Time scale must be a positive finite number, got ${timeScale}.`);
|
|
21
|
+
if (reducedMotion !== undefined && !preferences.includes(reducedMotion))
|
|
22
|
+
throw new TypeError(`Reduced motion must be 'user', 'always' or 'never', got ${String(reducedMotion)}.`);
|
|
23
|
+
if (timeScale !== undefined)
|
|
24
|
+
settings.timeScale = timeScale;
|
|
25
|
+
if (reducedMotion !== undefined) {
|
|
26
|
+
settings.reducedMotion = reducedMotion;
|
|
27
|
+
changed();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function timeScale() {
|
|
31
|
+
return settings.timeScale;
|
|
32
|
+
}
|
|
33
|
+
/** Whether motion is reduced right now. `user` asks the platform each time. */
|
|
34
|
+
export function reducedMotion() {
|
|
35
|
+
if (settings.reducedMotion === 'user')
|
|
36
|
+
return getDriver().reducedMotion?.() ?? false;
|
|
37
|
+
return settings.reducedMotion === 'always';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Calls back with the new value whenever `reducedMotion()` changes, from `configure()`
|
|
41
|
+
* or the platform setting. Returns a cleanup function.
|
|
42
|
+
*
|
|
43
|
+
* ```ts
|
|
44
|
+
* const off = onReducedMotion((reduced) => (illustration.visibility = reduced ? 'visible' : 'collapse'))
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export function onReducedMotion(callback) {
|
|
48
|
+
if (typeof callback !== 'function')
|
|
49
|
+
throw new TypeError('onReducedMotion() takes a callback.');
|
|
50
|
+
const listener = (reduced) => callback(reduced);
|
|
51
|
+
if (listeners.size === 0) {
|
|
52
|
+
reported = reducedMotion();
|
|
53
|
+
unwatch = getDriver().watchReducedMotion?.(changed);
|
|
54
|
+
}
|
|
55
|
+
listeners.add(listener);
|
|
56
|
+
return () => {
|
|
57
|
+
if (!listeners.delete(listener) || listeners.size > 0)
|
|
58
|
+
return;
|
|
59
|
+
unwatch?.();
|
|
60
|
+
unwatch = undefined;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function changed() {
|
|
64
|
+
if (listeners.size === 0)
|
|
65
|
+
return;
|
|
66
|
+
const reduced = reducedMotion();
|
|
67
|
+
if (reduced === reported)
|
|
68
|
+
return;
|
|
69
|
+
reported = reduced;
|
|
70
|
+
for (const listener of [...listeners])
|
|
71
|
+
listener(reduced);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAY7C,MAAM,QAAQ,GAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;AAC9E,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAA;AACvD,IAAI,QAAQ,GAAG,KAAK,CAAA;AACpB,IAAI,OAAiC,CAAA;AACrC,MAAM,WAAW,GAA2C,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;AAEvF;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAAmB;IAC3C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QACjD,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAA;IAC7D,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;IAC5C,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC;QAC5E,MAAM,IAAI,UAAU,CAAC,oDAAoD,SAAS,GAAG,CAAC,CAAA;IACxF,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;QACrE,MAAM,IAAI,SAAS,CACjB,2DAA2D,MAAM,CAAC,aAAa,CAAC,GAAG,CACpF,CAAA;IACH,IAAI,SAAS,KAAK,SAAS;QAAE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAA;IAC3D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,QAAQ,CAAC,aAAa,GAAG,aAAa,CAAA;QACtC,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,QAAQ,CAAC,SAAS,CAAA;AAC3B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa;IAC3B,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM;QAAE,OAAO,SAAS,EAAE,CAAC,aAAa,EAAE,EAAE,IAAI,KAAK,CAAA;IACpF,OAAO,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAA;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,QAAoC;IAClE,IAAI,OAAO,QAAQ,KAAK,UAAU;QAChC,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACxD,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,QAAQ,GAAG,aAAa,EAAE,CAAA;QAC1B,OAAO,GAAG,SAAS,EAAE,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAA;IACrD,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvB,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC;YAAE,OAAM;QAC7D,OAAO,EAAE,EAAE,CAAA;QACX,OAAO,GAAG,SAAS,CAAA;IACrB,CAAC,CAAA;AACH,CAAC;AAED,SAAS,OAAO;IACd,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAM;IAChC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAM;IAChC,QAAQ,GAAG,OAAO,CAAA;IAClB,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC;QAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC1D,CAAC"}
|
package/dist/decay.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface DecayMotion {
|
|
2
|
+
duration: number;
|
|
3
|
+
to: number;
|
|
4
|
+
position(time: number): number;
|
|
5
|
+
velocity(time: number): number;
|
|
6
|
+
}
|
|
7
|
+
/** Velocity retains this fraction every millisecond, independently of the display's refresh rate. */
|
|
8
|
+
export declare const DEFAULT_FRICTION = 0.998;
|
|
9
|
+
/** Exponential motion, with velocity in units per second and time in milliseconds. */
|
|
10
|
+
export declare function solveDecay(from: number, velocity: number, friction: number, precision: number): DecayMotion;
|
|
11
|
+
//# sourceMappingURL=decay.d.ts.map
|