@rafaelaugusto/jolt 0.1.0-beta.2 → 0.1.0-beta.3

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.
Files changed (67) hide show
  1. package/README.md +60 -6
  2. package/dist/animate.d.ts +3 -1
  3. package/dist/animate.d.ts.map +1 -1
  4. package/dist/animate.js +65 -1
  5. package/dist/animate.js.map +1 -1
  6. package/dist/decay.d.ts +11 -0
  7. package/dist/decay.d.ts.map +1 -0
  8. package/dist/decay.js +22 -0
  9. package/dist/decay.js.map +1 -0
  10. package/dist/driver/android.d.ts +1 -1
  11. package/dist/driver/android.d.ts.map +1 -1
  12. package/dist/driver/android.js +95 -5
  13. package/dist/driver/android.js.map +1 -1
  14. package/dist/driver/index.d.ts +3 -1
  15. package/dist/driver/index.d.ts.map +1 -1
  16. package/dist/driver/index.js.map +1 -1
  17. package/dist/engine.d.ts +1 -1
  18. package/dist/engine.d.ts.map +1 -1
  19. package/dist/engine.js +6 -3
  20. package/dist/engine.js.map +1 -1
  21. package/dist/index.d.ts +7 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/loader.d.ts +19 -0
  26. package/dist/loader.d.ts.map +1 -0
  27. package/dist/loader.js +172 -0
  28. package/dist/loader.js.map +1 -0
  29. package/dist/properties.d.ts +1 -1
  30. package/dist/properties.d.ts.map +1 -1
  31. package/dist/properties.js +1 -1
  32. package/dist/properties.js.map +1 -1
  33. package/dist/reveal.d.ts +25 -0
  34. package/dist/reveal.d.ts.map +1 -0
  35. package/dist/reveal.js +293 -0
  36. package/dist/reveal.js.map +1 -0
  37. package/dist/text-layout.d.ts +22 -0
  38. package/dist/text-layout.d.ts.map +1 -0
  39. package/dist/text-layout.js +179 -0
  40. package/dist/text-layout.js.map +1 -0
  41. package/dist/text.d.ts +17 -0
  42. package/dist/text.d.ts.map +1 -0
  43. package/dist/text.js +264 -0
  44. package/dist/text.js.map +1 -0
  45. package/dist/track.d.ts.map +1 -1
  46. package/dist/track.js +25 -3
  47. package/dist/track.js.map +1 -1
  48. package/dist/transition.d.ts +5 -0
  49. package/dist/transition.d.ts.map +1 -1
  50. package/dist/transition.js.map +1 -1
  51. package/dist/types.d.ts +14 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/src/animate.ts +75 -1
  55. package/src/decay.ts +45 -0
  56. package/src/driver/android.ts +112 -6
  57. package/src/driver/index.ts +3 -1
  58. package/src/engine.ts +8 -4
  59. package/src/index.ts +7 -1
  60. package/src/loader.ts +201 -0
  61. package/src/properties.ts +1 -1
  62. package/src/reveal.ts +374 -0
  63. package/src/text-layout.ts +216 -0
  64. package/src/text.ts +296 -0
  65. package/src/track.ts +42 -3
  66. package/src/transition.ts +6 -0
  67. package/src/types.ts +13 -0
package/dist/track.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"track.js","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"track.js","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,11 @@ export type Curve = {
42
42
  type: 'spring';
43
43
  physics: SpringPhysics;
44
44
  velocity: number | undefined;
45
+ } | {
46
+ type: 'decay';
47
+ friction: number;
48
+ velocity: number;
49
+ snap: readonly number[] | undefined;
45
50
  };
46
51
  export interface ResolvedTransition {
47
52
  curve: Curve;
@@ -1 +1 @@
1
- {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAE/D,MAAM,WAAW,MAAM;IACrB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC;AAED,MAAM,WAAW,KAAM,SAAQ,MAAM;IACnC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IACjC,uEAAuE;IACvE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,MAAO,SAAQ,MAAM;IACpC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qHAAqH;IACrH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,CAAA;AAEvC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAI9C,CAAA;AAED,MAAM,MAAM,KAAK,GACb;IACE,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,SAAS,cAAc,EAAE,CAAA;IAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CACrC,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAE5E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB;AAMD,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAEnC,wBAAgB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAIxD;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAMvD;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,CAInF;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,GAChB,kBAAkB,CA8DpB"}
1
+ {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAE/D,MAAM,WAAW,MAAM;IACrB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC;AAED,MAAM,WAAW,KAAM,SAAQ,MAAM;IACnC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IACjC,uEAAuE;IACvE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,MAAO,SAAQ,MAAM;IACpC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qHAAqH;IACrH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,CAAA;AAEvC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEvD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAI9C,CAAA;AAED,MAAM,MAAM,KAAK,GACb;IACE,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,SAAS,cAAc,EAAE,CAAA;IAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CACrC,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACxE;IACE,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CACpC,CAAA;AAEL,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB;AAMD,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAEnC,wBAAgB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAIxD;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAMvD;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,CAInF;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,GAChB,kBAAkB,CA8DpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"transition.js","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transition.js","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -24,6 +24,20 @@ export type Target = View | {
24
24
  } | {
25
25
  readonly nativeElement: View;
26
26
  };
27
+ /** Translation velocities in DIPs per second. Omitted axes keep their current motion. */
28
+ export interface DecayVelocity {
29
+ x?: number;
30
+ y?: number;
31
+ }
32
+ export interface DecayOptions {
33
+ /** Velocity multiplier per millisecond, between 0 and 1 exclusively. Defaults to 0.998. */
34
+ friction?: number;
35
+ /** Spring to the closest stop to the projected landing, shared or set per axis. */
36
+ snap?: readonly number[] | {
37
+ x?: readonly number[];
38
+ y?: readonly number[];
39
+ };
40
+ }
27
41
  export interface Stagger {
28
42
  /** Milliseconds between one target and the next. */
29
43
  each: number;
@@ -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,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE7D,+GAA+G;AAC/G,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;AAE/D,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,qCAAqC;IACrC,CAAC,CAAC,EAAE,aAAa,CAAA;IACjB,qCAAqC;IACrC,CAAC,CAAC,EAAE,aAAa,CAAA;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,eAAe;IACf,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AAED,+FAA+F;AAC/F,MAAM,MAAM,MAAM,GAChB,IAAI,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAA;CAAE,CAAA;AAEzE,MAAM,WAAW,OAAO;IACtB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG;KACvC,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;CACjD,GAAG;IACF,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA"}
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,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE7D,+GAA+G;AAC/G,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;AAE/D,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,qCAAqC;IACrC,CAAC,CAAC,EAAE,aAAa,CAAA;IACjB,qCAAqC;IACrC,CAAC,CAAC,EAAE,aAAa,CAAA;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,eAAe;IACf,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AAED,+FAA+F;AAC/F,MAAM,MAAM,MAAM,GAChB,IAAI,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAA;CAAE,CAAA;AAEzE,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,YAAY;IAC3B,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG;QAAE,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;CAC5E;AAED,MAAM,WAAW,OAAO;IACtB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG;KACvC,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;CACjD,GAAG;IACF,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rafaelaugusto/jolt",
3
- "version": "0.1.0-beta.2",
3
+ "version": "0.1.0-beta.3",
4
4
  "description": "Native animations for NativeScript: presets, springs, keyframes and stagger in one call.",
5
5
  "keywords": [
6
6
  "nativescript",
package/src/animate.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { View } from '@nativescript/core'
2
+ import { DEFAULT_FRICTION, solveDecay } from './decay.js'
2
3
  import {
3
4
  arrivalOf,
4
5
  setArrival,
@@ -9,7 +10,7 @@ import {
9
10
  } from './engine.js'
10
11
  import { getPreset, type PresetName } from './presets.js'
11
12
  import { resolveHaptic, type Haptic } from './haptics.js'
12
- import { isProperty, type Property } from './properties.js'
13
+ import { isProperty, precision, type Property } from './properties.js'
13
14
  import {
14
15
  hasCurve,
15
16
  mergeTransitions,
@@ -20,6 +21,8 @@ import {
20
21
  } from './transition.js'
21
22
  import type {
22
23
  AnimateOptions,
24
+ DecayOptions,
25
+ DecayVelocity,
23
26
  Keyframes,
24
27
  KeyframeValue,
25
28
  Stagger,
@@ -82,6 +85,77 @@ export function animate(
82
85
  )
83
86
  }
84
87
 
88
+ /** Starts at the current translation and slows down from a velocity in DIPs per second. */
89
+ export function decay(
90
+ target: Target | readonly Target[],
91
+ velocity: DecayVelocity,
92
+ options: DecayOptions = {},
93
+ ): Animation {
94
+ const friction = options.friction ?? DEFAULT_FRICTION
95
+ if (!Number.isFinite(friction) || friction <= 0 || friction >= 1) {
96
+ throw new RangeError('Decay friction must be between 0 and 1 exclusively.')
97
+ }
98
+
99
+ const stops = (values: readonly number[] | undefined) => {
100
+ if (values === undefined) return undefined
101
+ if (
102
+ !Array.isArray(values) ||
103
+ values.length === 0 ||
104
+ ![...values].every(Number.isFinite)
105
+ ) {
106
+ throw new RangeError('Decay snap needs a nonempty array of finite positions.')
107
+ }
108
+ return [...values]
109
+ }
110
+ const snap = options.snap
111
+ if (
112
+ snap !== undefined &&
113
+ !Array.isArray(snap) &&
114
+ (snap === null ||
115
+ typeof snap !== 'object' ||
116
+ Object.keys(snap).some((key) => key !== 'x' && key !== 'y'))
117
+ ) {
118
+ throw new TypeError('Decay snap must be an array or an object with x and y stops.')
119
+ }
120
+ const shared = Array.isArray(snap)
121
+ const perAxis = snap as { x?: readonly number[]; y?: readonly number[] } | undefined
122
+ const snapped = shared ? stops(snap) : undefined
123
+ const snapX = shared ? snapped : stops(perAxis?.x)
124
+ const snapY = shared ? snapped : stops(perAxis?.y)
125
+
126
+ const plans = Object.entries(velocity).flatMap<Plan>(([property, value]) => {
127
+ if (property !== 'x' && property !== 'y') {
128
+ throw new Error(`Can't decay "${property}". Use x or y.`)
129
+ }
130
+ if (value === undefined) return []
131
+ if (!Number.isFinite(value)) {
132
+ throw new RangeError(`Invalid decay velocity for "${property}".`)
133
+ }
134
+ // Validate every axis before handing any plans to the engine.
135
+ solveDecay(0, value, friction, precision[property])
136
+ return [
137
+ {
138
+ property,
139
+ keyframes: [null, null],
140
+ transition: {
141
+ curve: {
142
+ type: 'decay',
143
+ friction,
144
+ velocity: value,
145
+ snap: property === 'x' ? snapX : snapY,
146
+ },
147
+ delay: 0,
148
+ repeat: 0,
149
+ reverse: false,
150
+ },
151
+ },
152
+ ]
153
+ })
154
+ const views = toViews(target)
155
+ if (plans.length === 0) return group([])
156
+ return group(views.map((view) => new ViewAnimation(view, plans)))
157
+ }
158
+
85
159
  /** Stops all or selected properties at their current values. `scale` stops both axes. */
86
160
  export function stop(
87
161
  target: Target | readonly Target[],
package/src/decay.ts ADDED
@@ -0,0 +1,45 @@
1
+ export interface DecayMotion {
2
+ duration: number
3
+ to: number
4
+ position(time: number): number
5
+ velocity(time: number): number
6
+ }
7
+
8
+ /** Velocity retains this fraction every millisecond, independently of the display's refresh rate. */
9
+ export const DEFAULT_FRICTION = 0.998
10
+
11
+ /** Exponential motion, with velocity in units per second and time in milliseconds. */
12
+ export function solveDecay(
13
+ from: number,
14
+ velocity: number,
15
+ friction: number,
16
+ precision: number,
17
+ ): DecayMotion {
18
+ const rate = -Math.log(friction)
19
+ const distance = velocity / (1000 * rate)
20
+ const to = from + distance
21
+ // Stop only when both the remaining distance and speed are imperceptible.
22
+ const duration =
23
+ velocity === 0
24
+ ? 0
25
+ : Math.ceil(
26
+ Math.max(
27
+ 0,
28
+ Math.log(Math.abs(distance) / precision) / rate,
29
+ Math.log(Math.abs(velocity) / (precision * 10)) / rate,
30
+ ),
31
+ )
32
+
33
+ if (!Number.isFinite(to) || !Number.isFinite(duration) || duration > 2_147_483_647) {
34
+ throw new RangeError('Decay velocity and friction produce an unplayable motion.')
35
+ }
36
+
37
+ return {
38
+ duration,
39
+ to,
40
+ position: (time) =>
41
+ time >= duration ? to : from - distance * Math.expm1(-rate * Math.max(0, time)),
42
+ velocity: (time) =>
43
+ time >= duration ? 0 : velocity * Math.exp(-rate * Math.max(0, time)),
44
+ }
45
+ }
@@ -1,9 +1,48 @@
1
1
  import { Utils, type View } from '@nativescript/core'
2
2
  import type { Property } from '../properties.js'
3
- import { after, type Driver } from './index.js'
3
+ import type { Driver } from './index.js'
4
4
 
5
5
  type NativeView = android.view.View
6
6
 
7
+ interface Handle {
8
+ cancel(): void
9
+ elapsed(): number
10
+ }
11
+
12
+ /** Own only layers we create; keep app-configured hardware/software layers and paints intact. */
13
+ function fadeLayer(view: View, nativeView: NativeView): (() => void) | undefined {
14
+ const { View, ViewGroup } = android.view
15
+ if (
16
+ !view.isLoaded ||
17
+ view.nativeViewProtected !== nativeView ||
18
+ !(nativeView instanceof ViewGroup) ||
19
+ nativeView.getChildCount() === 0 ||
20
+ !nativeView.isHardwareAccelerated() ||
21
+ nativeView.getLayerType() !== View.LAYER_TYPE_NONE
22
+ )
23
+ return undefined
24
+
25
+ // Do not cache an entire oversized scrolling/content tree into a GPU texture.
26
+ const { widthPixels, heightPixels } = nativeView.getResources().getDisplayMetrics()
27
+ const width = nativeView.getWidth()
28
+ const height = nativeView.getHeight()
29
+ if (width <= 0 || height <= 0 || width > widthPixels || height > heightPixels)
30
+ return undefined
31
+
32
+ nativeView.setLayerType(View.LAYER_TYPE_HARDWARE, null)
33
+ let active = true
34
+ const restore = () => {
35
+ if (!active) return
36
+ active = false
37
+ view.off('unloaded', restore)
38
+ if (nativeView.getLayerType() === View.LAYER_TYPE_HARDWARE) {
39
+ nativeView.setLayerType(View.LAYER_TYPE_NONE, null)
40
+ }
41
+ }
42
+ view.on('unloaded', restore)
43
+ return restore
44
+ }
45
+
7
46
  const accessors: Record<
8
47
  Property,
9
48
  { get(view: NativeView): number; set(view: NativeView, value: number): void }
@@ -42,6 +81,12 @@ export function createAndroidDriver(): Driver {
42
81
  const nativeView = view.nativeViewProtected as NativeView
43
82
  const scale = unit(track.property)
44
83
 
84
+ if (track.property === 'rotateX' || track.property === 'rotateY') {
85
+ nativeView.setCameraDistance(
86
+ (view.perspective || 300) * Utils.layout.getDisplayDensity(),
87
+ )
88
+ }
89
+
45
90
  const keyframes = Array.create(android.animation.Keyframe, track.values.length)
46
91
  track.values.forEach((value, i) => {
47
92
  keyframes[i] = android.animation.Keyframe.ofFloat(track.times[i]!, value * scale)
@@ -56,6 +101,14 @@ export function createAndroidDriver(): Driver {
56
101
  nativeView,
57
102
  holders,
58
103
  )
104
+ let cancelled = false
105
+ let ended = false
106
+ let started = false
107
+ let restoreLayer: (() => void) | undefined
108
+ const releaseLayer = () => {
109
+ restoreLayer?.()
110
+ restoreLayer = undefined
111
+ }
59
112
  animator.setDuration(Math.max(track.duration, 1))
60
113
  animator.setStartDelay(track.delay)
61
114
  animator.setInterpolator(interpolator)
@@ -73,10 +126,25 @@ export function createAndroidDriver(): Driver {
73
126
  }
74
127
  animator.addListener(
75
128
  new android.animation.Animator.AnimatorListener({
76
- onAnimationStart() {},
129
+ onAnimationStart() {
130
+ started = true
131
+ if (
132
+ !cancelled &&
133
+ !ended &&
134
+ track.property === 'opacity' &&
135
+ track.values.some((value) => value !== track.values[0])
136
+ )
137
+ restoreLayer = fadeLayer(view, nativeView)
138
+ },
77
139
  onAnimationRepeat() {},
78
- onAnimationCancel() {},
140
+ onAnimationCancel() {
141
+ cancelled = true
142
+ releaseLayer()
143
+ },
79
144
  onAnimationEnd() {
145
+ if (ended) return
146
+ ended = true
147
+ releaseLayer()
80
148
  onEnd()
81
149
  },
82
150
  }),
@@ -84,18 +152,56 @@ export function createAndroidDriver(): Driver {
84
152
 
85
153
  accessors[track.property].set(nativeView, track.values[0]! * scale)
86
154
  animator.start()
87
- return animator
155
+ return {
156
+ elapsed: () => (started ? track.delay + animator.getCurrentPlayTime() : 0),
157
+ cancel() {
158
+ // Cancel before native callbacks: Android can send onStart while cancelling a delay.
159
+ cancelled = true
160
+ releaseLayer()
161
+ animator.cancel()
162
+ },
163
+ } satisfies Handle
88
164
  },
89
165
 
90
166
  stop(_view, handle) {
91
- ;(handle as android.animation.ObjectAnimator).cancel()
167
+ ;(handle as Handle).cancel()
92
168
  },
93
169
 
170
+ elapsed: (handle) => (handle as Handle).elapsed(),
171
+
94
172
  presented(view, property) {
95
173
  const nativeView = view.nativeViewProtected as NativeView | undefined
96
174
  return nativeView ? accessors[property].get(nativeView) / unit(property) : undefined
97
175
  },
98
176
 
99
- after,
177
+ after(ms, callback) {
178
+ // A native marker follows animator duration scale, including changes during playback.
179
+ // Only completion crosses the bridge; there is no JavaScript update listener.
180
+ const values = Array.create('float', 2)
181
+ values[0] = 0
182
+ values[1] = 1
183
+ const marker = android.animation.ValueAnimator.ofFloat(values)
184
+ marker.setDuration(ms)
185
+ let active = true
186
+ marker.addListener(
187
+ new android.animation.Animator.AnimatorListener({
188
+ onAnimationStart() {},
189
+ onAnimationRepeat() {},
190
+ onAnimationCancel() {
191
+ active = false
192
+ },
193
+ onAnimationEnd() {
194
+ if (!active) return
195
+ active = false
196
+ callback()
197
+ },
198
+ }),
199
+ )
200
+ marker.start()
201
+ return () => {
202
+ active = false
203
+ marker.cancel()
204
+ }
205
+ },
100
206
  }
101
207
  }
@@ -10,9 +10,11 @@ export interface Driver {
10
10
  /** Starts the track at `startedAt + track.delay` and calls `onEnd` once, however it ends. */
11
11
  play(view: View, track: Track, startedAt: number, onEnd: () => void): unknown
12
12
  stop(view: View, handle: unknown): void
13
+ /** Track time, including its delay, when the native clock differs from `now()`. */
14
+ elapsed?(handle: unknown): number
13
15
  /** The value on screen, when the platform knows it better than the track does. */
14
16
  presented(view: View, property: Property): number | undefined
15
- /** Calls back after `ms` on the same clock, and returns a function that cancels it. */
17
+ /** Calls back after `ms` of animation time, respecting platform speed settings. */
16
18
  after(ms: number, callback: () => void): () => void
17
19
  }
18
20
 
package/src/engine.ts CHANGED
@@ -12,7 +12,7 @@ export interface Animation extends PromiseLike<boolean> {
12
12
  * Never rejects.
13
13
  */
14
14
  readonly finished: Promise<boolean>
15
- /** Stops playback. Property animations keep their current values; symbol effects are removed. */
15
+ /** Stops playback. Each effect documents whether it preserves or restores its visual state. */
16
16
  stop(): void
17
17
  }
18
18
 
@@ -107,7 +107,7 @@ export class ViewAnimation implements Animation {
107
107
  let current: number
108
108
  let velocity = 0
109
109
  if (previous) {
110
- const elapsed = now - previous.startedAt
110
+ const elapsed = elapsedOf(previous, now)
111
111
  current = driver.presented(this.view, property) ?? previous.track.valueAt(elapsed)
112
112
  velocity = previous.track.velocityAt(elapsed)
113
113
  release(previous, now, false)
@@ -157,7 +157,7 @@ export class ViewAnimation implements Animation {
157
157
 
158
158
  const arrival = Math.max(...this.entries.map((entry) => entry.track.arrival))
159
159
  if (this.pending === 0) this.settle()
160
- else if (Number.isFinite(arrival)) {
160
+ else if (Number.isFinite(arrival) && tracks.some((track) => track.end > arrival)) {
161
161
  this.cancelArrival = driver.after(arrival, this.arrive)
162
162
  }
163
163
  }
@@ -220,9 +220,13 @@ function release(entry: Entry, now: number, commit: boolean) {
220
220
  forget(entry)
221
221
  if (commit) {
222
222
  const value =
223
- driver.presented(view, property) ?? entry.track.valueAt(now - entry.startedAt)
223
+ driver.presented(view, property) ?? entry.track.valueAt(elapsedOf(entry, now))
224
224
  writeValue(view, property, value)
225
225
  }
226
226
  driver.stop(view, entry.handle)
227
227
  entry.owner.ended(false)
228
228
  }
229
+
230
+ function elapsedOf(entry: Entry, now: number) {
231
+ return getDriver().elapsed?.(entry.handle) ?? now - entry.startedAt
232
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { animate, stop } from './animate.js'
1
+ export { animate, decay, stop } from './animate.js'
2
2
  export { sequence } from './sequence.js'
3
3
  export type { Step } from './sequence.js'
4
4
  export { press } from './press.js'
@@ -7,6 +7,12 @@ export { confetti, particles } from './particles.js'
7
7
  export type { ConfettiOptions, ParticleOptions } from './particles.js'
8
8
  export { shimmer } from './shimmer.js'
9
9
  export type { ShimmerOptions } from './shimmer.js'
10
+ export { loader } from './loader.js'
11
+ export type { LoaderOptions, LoaderStyle } from './loader.js'
12
+ export { reveal, conceal } from './reveal.js'
13
+ export type { RevealOptions, ConcealOptions } from './reveal.js'
14
+ export { animateText } from './text.js'
15
+ export type { TextOptions } from './text.js'
10
16
  export { symbolEffect } from './symbol-effect.js'
11
17
  export type {
12
18
  SymbolEffect,