@rafaelaugusto/jolt 0.1.0-beta.0 → 0.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +134 -14
- package/dist/animate.d.ts +3 -3
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +40 -19
- package/dist/animate.js.map +1 -1
- package/dist/driver/ios.d.ts.map +1 -1
- package/dist/driver/ios.js +19 -3
- package/dist/driver/ios.js.map +1 -1
- package/dist/engine.d.ts +7 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +28 -5
- package/dist/engine.js.map +1 -1
- package/dist/haptics.d.ts +18 -0
- package/dist/haptics.d.ts.map +1 -0
- package/dist/haptics.js +96 -0
- package/dist/haptics.js.map +1 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/particles.d.ts +39 -0
- package/dist/particles.d.ts.map +1 -0
- package/dist/particles.js +264 -0
- package/dist/particles.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 +3 -1
- package/dist/press.js.map +1 -1
- package/dist/sequence.d.ts +3 -2
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +6 -5
- 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 +160 -0
- package/dist/shimmer.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 +186 -0
- package/dist/symbol-effect.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -1
- package/src/animate.ts +64 -19
- package/src/driver/ios.ts +23 -3
- package/src/engine.ts +26 -6
- package/src/haptics.ts +125 -0
- package/src/index.ts +13 -2
- package/src/particles.ts +323 -0
- package/src/presets.ts +31 -7
- package/src/press.ts +7 -1
- package/src/sequence.ts +8 -5
- package/src/shimmer.ts +179 -0
- package/src/symbol-effect.ts +225 -0
- package/src/types.ts +5 -0
package/dist/presets.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ export interface Preset {
|
|
|
3
3
|
keyframes: Keyframes;
|
|
4
4
|
transition: AnimateOptions;
|
|
5
5
|
}
|
|
6
|
+
/** Add custom preset names through module augmentation, with `true` as each value. */
|
|
7
|
+
export interface Presets {
|
|
8
|
+
}
|
|
6
9
|
export declare const presets: {
|
|
7
10
|
fadeIn: {
|
|
8
11
|
keyframes: {
|
|
@@ -211,6 +214,7 @@ export declare const presets: {
|
|
|
211
214
|
transition: {
|
|
212
215
|
duration: number;
|
|
213
216
|
ease: "easeInOut";
|
|
217
|
+
relative: true;
|
|
214
218
|
};
|
|
215
219
|
};
|
|
216
220
|
bounce: {
|
|
@@ -219,6 +223,7 @@ export declare const presets: {
|
|
|
219
223
|
};
|
|
220
224
|
transition: {
|
|
221
225
|
duration: number;
|
|
226
|
+
relative: true;
|
|
222
227
|
times: number[];
|
|
223
228
|
ease: ["easeOut", "easeIn", "easeOut", "easeIn"];
|
|
224
229
|
};
|
|
@@ -230,6 +235,7 @@ export declare const presets: {
|
|
|
230
235
|
transition: {
|
|
231
236
|
duration: number;
|
|
232
237
|
ease: "easeInOut";
|
|
238
|
+
relative: true;
|
|
233
239
|
};
|
|
234
240
|
};
|
|
235
241
|
wiggle: {
|
|
@@ -239,6 +245,7 @@ export declare const presets: {
|
|
|
239
245
|
transition: {
|
|
240
246
|
duration: number;
|
|
241
247
|
ease: "easeInOut";
|
|
248
|
+
relative: true;
|
|
242
249
|
};
|
|
243
250
|
};
|
|
244
251
|
heartbeat: {
|
|
@@ -247,6 +254,7 @@ export declare const presets: {
|
|
|
247
254
|
};
|
|
248
255
|
transition: {
|
|
249
256
|
duration: number;
|
|
257
|
+
relative: true;
|
|
250
258
|
times: number[];
|
|
251
259
|
ease: "easeInOut";
|
|
252
260
|
};
|
|
@@ -258,6 +266,7 @@ export declare const presets: {
|
|
|
258
266
|
};
|
|
259
267
|
transition: {
|
|
260
268
|
duration: number;
|
|
269
|
+
relative: true;
|
|
261
270
|
times: number[];
|
|
262
271
|
ease: "easeInOut";
|
|
263
272
|
};
|
|
@@ -269,6 +278,7 @@ export declare const presets: {
|
|
|
269
278
|
transition: {
|
|
270
279
|
duration: number;
|
|
271
280
|
ease: "easeInOut";
|
|
281
|
+
relative: true;
|
|
272
282
|
};
|
|
273
283
|
};
|
|
274
284
|
tada: {
|
|
@@ -279,6 +289,7 @@ export declare const presets: {
|
|
|
279
289
|
transition: {
|
|
280
290
|
duration: number;
|
|
281
291
|
ease: "easeInOut";
|
|
292
|
+
relative: true;
|
|
282
293
|
};
|
|
283
294
|
};
|
|
284
295
|
spin: {
|
|
@@ -288,8 +299,12 @@ export declare const presets: {
|
|
|
288
299
|
transition: {
|
|
289
300
|
duration: number;
|
|
290
301
|
ease: "linear";
|
|
302
|
+
relative: true;
|
|
291
303
|
};
|
|
292
304
|
};
|
|
293
305
|
};
|
|
294
|
-
export type PresetName = keyof typeof presets
|
|
306
|
+
export type PresetName = keyof typeof presets | Extract<keyof Presets, string>;
|
|
307
|
+
/** Registers a custom preset. Registering it again replaces it for future animations. */
|
|
308
|
+
export declare function definePreset(name: PresetName, preset: Preset): void;
|
|
309
|
+
export declare function getPreset(name: PresetName): Preset;
|
|
295
310
|
//# sourceMappingURL=presets.d.ts.map
|
package/dist/presets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,EAAE,cAAc,CAAA;CAC3B;
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,EAAE,cAAc,CAAA;CAC3B;AAED,sFAAsF;AACtF,MAAM,WAAW,OAAO;CAAG;AAM3B,eAAO,MAAM,OAAO;;QACR,SAAS;YAAI,OAAO;;QAAY,UAAU;+BAL3B,GAAG;2BAAQ,SAAS;;;;;YAO9B,OAAO;YAAU,CAAC;;;kBALb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YASvC,OAAO;YAAU,CAAC;;;kBATb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAavC,OAAO;YAAU,CAAC;;;kBAbb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAiBvC,OAAO;YAAU,CAAC;;;kBAjBb,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAqBvC,OAAO;YAAU,KAAK;;;kBArBjB,QAAQ;sBAAY,GAAG;oBAAU,CAAC;;;;;;;;;YAyBvC,OAAO;YAAU,KAAK;;;;;;;gBAKtB,QAAQ;;;;;;YAIR,OAAO;YAAU,OAAO;;;;;;;gBAKxB,QAAQ;;;;;;YAIR,OAAO;YAAU,OAAO;;;;;;;gBAKxB,QAAQ;;;;;QAIZ,SAAS;YAAI,OAAO;;QAAO,UAAU;+BArDtB,GAAG;2BAAQ,QAAQ;;;;QAsDhC,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAS,UAAU;;;;;;QAC3C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAQ,UAAU;;;;;;QAC5C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAS,UAAU;;;;;;QAC5C,SAAS;YAAI,OAAO;YAAK,CAAC;;QAAQ,UAAU;;;;;;QACjD,SAAS;YAAI,OAAO;YAAK,KAAK;;QAAU,UAAU;;;;;;;YAE9C,OAAO;YAAK,KAAK;;;;;;;;;;;;;;YAUjB,KAAK;;;;;;;;;;YAIL,CAAC;;;;;;;;;;;YASD,CAAC;;;;;;;;;;YAID,MAAM;;;;;;;;;;YAIN,KAAK;;;;;;;;;;;YAUhB,MAAM;YACN,MAAM;;;;;;;;;;;YAUK,OAAO;;;;;;;;;;YAKlB,KAAK;YACL,MAAM;;;;;;;;;;YAKK,MAAM;;;;;;;;CAGW,CAAA;AAElC,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,GAAG,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,CAAA;AAI9E,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAMlD"}
|
package/dist/presets.js
CHANGED
|
@@ -67,28 +67,30 @@ export const presets = {
|
|
|
67
67
|
},
|
|
68
68
|
pulse: {
|
|
69
69
|
keyframes: { scale: [1, 1.06, 1] },
|
|
70
|
-
transition: { duration: 500, ease: 'easeInOut' },
|
|
70
|
+
transition: { duration: 500, ease: 'easeInOut', relative: true },
|
|
71
71
|
},
|
|
72
72
|
bounce: {
|
|
73
73
|
keyframes: { y: [0, -18, 0, -8, 0] },
|
|
74
74
|
transition: {
|
|
75
75
|
duration: 650,
|
|
76
|
+
relative: true,
|
|
76
77
|
times: [0, 0.3, 0.6, 0.8, 1],
|
|
77
78
|
ease: ['easeOut', 'easeIn', 'easeOut', 'easeIn'],
|
|
78
79
|
},
|
|
79
80
|
},
|
|
80
81
|
shake: {
|
|
81
82
|
keyframes: { x: [0, -10, 10, -8, 8, -4, 4, 0] },
|
|
82
|
-
transition: { duration: 500, ease: 'easeInOut' },
|
|
83
|
+
transition: { duration: 500, ease: 'easeInOut', relative: true },
|
|
83
84
|
},
|
|
84
85
|
wiggle: {
|
|
85
86
|
keyframes: { rotate: [0, -8, 8, -5, 5, 0] },
|
|
86
|
-
transition: { duration: 500, ease: 'easeInOut' },
|
|
87
|
+
transition: { duration: 500, ease: 'easeInOut', relative: true },
|
|
87
88
|
},
|
|
88
89
|
heartbeat: {
|
|
89
90
|
keyframes: { scale: [1, 1.15, 1, 1.15, 1, 1] },
|
|
90
91
|
transition: {
|
|
91
92
|
duration: 1000,
|
|
93
|
+
relative: true,
|
|
92
94
|
times: [0, 0.14, 0.28, 0.42, 0.7, 1],
|
|
93
95
|
ease: 'easeInOut',
|
|
94
96
|
},
|
|
@@ -100,24 +102,40 @@ export const presets = {
|
|
|
100
102
|
},
|
|
101
103
|
transition: {
|
|
102
104
|
duration: 800,
|
|
105
|
+
relative: true,
|
|
103
106
|
times: [0, 0.3, 0.4, 0.5, 0.65, 0.75, 1],
|
|
104
107
|
ease: 'easeInOut',
|
|
105
108
|
},
|
|
106
109
|
},
|
|
107
110
|
flash: {
|
|
108
111
|
keyframes: { opacity: [1, 0, 1, 0, 1] },
|
|
109
|
-
transition: { duration: 800, ease: 'easeInOut' },
|
|
112
|
+
transition: { duration: 800, ease: 'easeInOut', relative: true },
|
|
110
113
|
},
|
|
111
114
|
tada: {
|
|
112
115
|
keyframes: {
|
|
113
116
|
scale: [1, 0.9, 0.9, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1],
|
|
114
117
|
rotate: [0, -3, -3, 3, -3, 3, -3, 3, -3, 3, 0],
|
|
115
118
|
},
|
|
116
|
-
transition: { duration: 1000, ease: 'easeInOut' },
|
|
119
|
+
transition: { duration: 1000, ease: 'easeInOut', relative: true },
|
|
117
120
|
},
|
|
118
121
|
spin: {
|
|
119
122
|
keyframes: { rotate: [0, 360] },
|
|
120
|
-
transition: { duration: 1000, ease: 'linear' },
|
|
123
|
+
transition: { duration: 1000, ease: 'linear', relative: true },
|
|
121
124
|
},
|
|
122
125
|
};
|
|
126
|
+
const customPresets = new Map();
|
|
127
|
+
/** Registers a custom preset. Registering it again replaces it for future animations. */
|
|
128
|
+
export function definePreset(name, preset) {
|
|
129
|
+
if (Object.hasOwn(presets, name)) {
|
|
130
|
+
throw new Error(`Preset "${name}" is built in and cannot be replaced.`);
|
|
131
|
+
}
|
|
132
|
+
customPresets.set(name, preset);
|
|
133
|
+
}
|
|
134
|
+
export function getPreset(name) {
|
|
135
|
+
const preset = customPresets.get(name) ??
|
|
136
|
+
(Object.hasOwn(presets, name) ? presets[name] : undefined);
|
|
137
|
+
if (!preset)
|
|
138
|
+
throw new Error(`Unknown preset "${name}".`);
|
|
139
|
+
return preset;
|
|
140
|
+
}
|
|
123
141
|
//# sourceMappingURL=presets.js.map
|
package/dist/presets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
package/dist/press.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"press.d.ts","sourceRoot":"","sources":["../src/press.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKnE;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,SAA2B,EACpC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,GACpC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"press.d.ts","sourceRoot":"","sources":["../src/press.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKnE;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,SAA2B,EACpC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,GACpC,MAAM,IAAI,CA0BZ"}
|
package/dist/press.js
CHANGED
|
@@ -22,7 +22,9 @@ export function press(target, pressed = { scale: 0.96 }, options) {
|
|
|
22
22
|
animate(view, pressed, options ?? pressIn);
|
|
23
23
|
}
|
|
24
24
|
else if ((action === 'up' || action === 'cancel') && rest) {
|
|
25
|
-
animate(view, rest, options
|
|
25
|
+
animate(view, rest, typeof options === 'object'
|
|
26
|
+
? { ...options, relative: false }
|
|
27
|
+
: (options ?? release));
|
|
26
28
|
rest = undefined;
|
|
27
29
|
}
|
|
28
30
|
};
|
package/dist/press.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"press.js","sourceRoot":"","sources":["../src/press.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAA;AAItE,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;AACxE,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AAE3E;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CACnB,MAAc,EACd,OAAO,GAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EACpC,OAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAc,EAAE,CAClE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CACtE,CAAA;IACD,IAAI,IAA2B,CAAA;IAE/B,MAAM,OAAO,GAAG,CAAC,KAAgB,EAAE,EAAE;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,KAA8B,CAAA;QACjD,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC3D,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,CAAA;QAC5C,CAAC;aAAM,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"press.js","sourceRoot":"","sources":["../src/press.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAA;AAItE,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;AACxE,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AAE3E;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CACnB,MAAc,EACd,OAAO,GAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EACpC,OAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAc,EAAE,CAClE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CACtE,CAAA;IACD,IAAI,IAA2B,CAAA;IAE/B,MAAM,OAAO,GAAG,CAAC,KAAgB,EAAE,EAAE;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,KAA8B,CAAA;QACjD,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC3D,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,CAAA;QAC5C,CAAC;aAAM,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5D,OAAO,CACL,IAAI,EACJ,IAAI,EACJ,OAAO,OAAO,KAAK,QAAQ;gBACzB,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;gBACjC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CACzB,CAAA;YACD,IAAI,GAAG,SAAS,CAAA;QAClB,CAAC;IACH,CAAC,CAAA;IAED,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC"}
|
package/dist/sequence.d.ts
CHANGED
|
@@ -10,8 +10,9 @@ export type Step = readonly [
|
|
|
10
10
|
/**
|
|
11
11
|
* Plays steps one after the other. A step starts once the previous one looks
|
|
12
12
|
* done: a spring is close to its target, even if it hasn't fully settled.
|
|
13
|
-
* Views in later steps take their first keyframe right away, so a title
|
|
14
|
-
* fades in third doesn't show up before its turn.
|
|
13
|
+
* Views in later steps take their first absolute keyframe right away, so a title
|
|
14
|
+
* that fades in third doesn't show up before its turn. Relative and null keyframes
|
|
15
|
+
* read the current value when their step starts.
|
|
15
16
|
*
|
|
16
17
|
* ```ts
|
|
17
18
|
* await sequence([
|
package/dist/sequence.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnE,MAAM,MAAM,IAAI,GACZ,SAAS;IACP,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAClC,SAAS,EAAE,SAAS,GAAG,UAAU;IACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU;CACtC,GACD,CAAC,MAAM,SAAS,CAAC,CAAA;AAErB
|
|
1
|
+
{"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnE,MAAM,MAAM,IAAI,GACZ,SAAS;IACP,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAClC,SAAS,EAAE,SAAS,GAAG,UAAU;IACjC,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU;CACtC,GACD,CAAC,MAAM,SAAS,CAAC,CAAA;AAErB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,SAAS,CA8B1D"}
|
package/dist/sequence.js
CHANGED
|
@@ -4,8 +4,9 @@ import { writeValue } from './properties.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Plays steps one after the other. A step starts once the previous one looks
|
|
6
6
|
* done: a spring is close to its target, even if it hasn't fully settled.
|
|
7
|
-
* Views in later steps take their first keyframe right away, so a title
|
|
8
|
-
* fades in third doesn't show up before its turn.
|
|
7
|
+
* Views in later steps take their first absolute keyframe right away, so a title
|
|
8
|
+
* that fades in third doesn't show up before its turn. Relative and null keyframes
|
|
9
|
+
* read the current value when their step starts.
|
|
9
10
|
*
|
|
10
11
|
* ```ts
|
|
11
12
|
* await sequence([
|
|
@@ -48,13 +49,13 @@ function applyStartingValues(steps) {
|
|
|
48
49
|
for (const step of steps) {
|
|
49
50
|
if (typeof step === 'function')
|
|
50
51
|
continue;
|
|
51
|
-
const [target, animation] = step;
|
|
52
|
-
const starts = startingValues(animation);
|
|
52
|
+
const [target, animation, options] = step;
|
|
53
|
+
const starts = startingValues(animation, options);
|
|
53
54
|
for (const view of toViews(target)) {
|
|
54
55
|
let properties = claimed.get(view);
|
|
55
56
|
if (!properties)
|
|
56
57
|
claimed.set(view, (properties = new Set()));
|
|
57
|
-
const fresh = [...starts].filter(([property]) => !properties.has(property));
|
|
58
|
+
const fresh = [...starts].filter(([property, value]) => !properties.has(property) && value !== null);
|
|
58
59
|
stopView(view, fresh.map(([property]) => property));
|
|
59
60
|
for (const [property, value] of fresh) {
|
|
60
61
|
if (value !== null)
|
package/dist/sequence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequence.js","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAkB,MAAM,aAAa,CAAA;AAE7E,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAA;AAY3D
|
|
1
|
+
{"version":3,"file":"sequence.js","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Target } from './types.js';
|
|
2
|
+
export interface ShimmerOptions {
|
|
3
|
+
/** Milliseconds per sweep. Defaults to 1500. */
|
|
4
|
+
duration?: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Sweeps a native gradient mask across an iOS placeholder until stopped.
|
|
8
|
+
* Waits for layout, respects Reduce Motion and pauses while the view is unloaded.
|
|
9
|
+
* Android is a no-op. Returns an idempotent cleanup function.
|
|
10
|
+
*/
|
|
11
|
+
export declare function shimmer(target: Target, options?: ShimmerOptions): () => void;
|
|
12
|
+
//# sourceMappingURL=shimmer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shimmer.d.ts","sourceRoot":"","sources":["../src/shimmer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAQD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,IAAI,CAQhF"}
|
package/dist/shimmer.js
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Application, isIOS } from '@nativescript/core';
|
|
2
|
+
import { toView } from './animate.js';
|
|
3
|
+
const running = new WeakMap();
|
|
4
|
+
const key = 'jolt:shimmer';
|
|
5
|
+
/**
|
|
6
|
+
* Sweeps a native gradient mask across an iOS placeholder until stopped.
|
|
7
|
+
* Waits for layout, respects Reduce Motion and pauses while the view is unloaded.
|
|
8
|
+
* Android is a no-op. Returns an idempotent cleanup function.
|
|
9
|
+
*/
|
|
10
|
+
export function shimmer(target, options = {}) {
|
|
11
|
+
const view = toView(target);
|
|
12
|
+
const duration = options.duration ?? 1500;
|
|
13
|
+
if (!Number.isFinite(duration) || duration <= 0)
|
|
14
|
+
throw new RangeError('Shimmer duration must be a positive finite number.');
|
|
15
|
+
running.get(view)?.();
|
|
16
|
+
if (!isIOS)
|
|
17
|
+
return () => { };
|
|
18
|
+
return new Shimmer(view, duration).stop;
|
|
19
|
+
}
|
|
20
|
+
class Shimmer {
|
|
21
|
+
view;
|
|
22
|
+
duration;
|
|
23
|
+
stopped = false;
|
|
24
|
+
queued = false;
|
|
25
|
+
waitingForLoad;
|
|
26
|
+
native;
|
|
27
|
+
owner;
|
|
28
|
+
gradient;
|
|
29
|
+
observer;
|
|
30
|
+
constructor(view, duration) {
|
|
31
|
+
this.view = view;
|
|
32
|
+
this.duration = duration;
|
|
33
|
+
this.waitingForLoad = !view.isLoaded;
|
|
34
|
+
running.set(view, this.stop);
|
|
35
|
+
view.on('loaded', this.loaded);
|
|
36
|
+
view.on('layoutChanged', this.schedule);
|
|
37
|
+
view.on('unloaded', this.unloaded);
|
|
38
|
+
view.style.on('backgroundInternalChange', this.schedule);
|
|
39
|
+
this.update();
|
|
40
|
+
}
|
|
41
|
+
stop = () => {
|
|
42
|
+
if (this.stopped)
|
|
43
|
+
return;
|
|
44
|
+
this.stopped = true;
|
|
45
|
+
const { view } = this;
|
|
46
|
+
view.off('loaded', this.loaded);
|
|
47
|
+
view.off('layoutChanged', this.schedule);
|
|
48
|
+
view.off('unloaded', this.unloaded);
|
|
49
|
+
view.style.off('backgroundInternalChange', this.schedule);
|
|
50
|
+
if (running.get(view) === this.stop)
|
|
51
|
+
running.delete(view);
|
|
52
|
+
this.unloaded();
|
|
53
|
+
};
|
|
54
|
+
loaded = () => {
|
|
55
|
+
this.waitingForLoad = false;
|
|
56
|
+
this.schedule();
|
|
57
|
+
};
|
|
58
|
+
unloaded = () => {
|
|
59
|
+
this.waitingForLoad = true;
|
|
60
|
+
if (this.observer) {
|
|
61
|
+
Application.ios.removeNotificationObserver(this.observer, UIAccessibilityReduceMotionStatusDidChangeNotification);
|
|
62
|
+
this.observer = undefined;
|
|
63
|
+
}
|
|
64
|
+
this.remove();
|
|
65
|
+
};
|
|
66
|
+
schedule = () => {
|
|
67
|
+
if (this.stopped || this.queued)
|
|
68
|
+
return;
|
|
69
|
+
this.queued = true;
|
|
70
|
+
// Core raises layoutChanged before redrawing the background and its mask.
|
|
71
|
+
// Attach after that pass, coalescing events from the same layout.
|
|
72
|
+
void Promise.resolve().then(() => {
|
|
73
|
+
this.queued = false;
|
|
74
|
+
this.update();
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
update = () => {
|
|
78
|
+
if (this.stopped || this.waitingForLoad || !this.view.isLoaded)
|
|
79
|
+
return;
|
|
80
|
+
const native = this.view.nativeViewProtected;
|
|
81
|
+
if (!native)
|
|
82
|
+
return;
|
|
83
|
+
this.observer ??= Application.ios.addNotificationObserver(UIAccessibilityReduceMotionStatusDidChangeNotification, this.update);
|
|
84
|
+
if (UIAccessibilityIsReduceMotionEnabled())
|
|
85
|
+
return this.remove();
|
|
86
|
+
const bounds = native.layer.bounds;
|
|
87
|
+
if (bounds.size.width <= 0 || bounds.size.height <= 0)
|
|
88
|
+
return this.remove();
|
|
89
|
+
if (this.native && this.native !== native)
|
|
90
|
+
this.remove();
|
|
91
|
+
CATransaction.begin();
|
|
92
|
+
CATransaction.setDisableActions(true);
|
|
93
|
+
try {
|
|
94
|
+
this.native = native;
|
|
95
|
+
const gradient = (this.gradient ??= this.createGradient());
|
|
96
|
+
// Leave Core's mask at the root so it can keep updating its path on resize.
|
|
97
|
+
let owner = native.layer;
|
|
98
|
+
while (owner.mask && owner.mask !== gradient)
|
|
99
|
+
owner = owner.mask;
|
|
100
|
+
if (this.owner && this.owner !== owner && this.owner.mask === gradient)
|
|
101
|
+
this.owner.mask = null;
|
|
102
|
+
this.owner = owner;
|
|
103
|
+
owner.mask = gradient;
|
|
104
|
+
// Don't let a later background redraw resurrect our mask after cleanup.
|
|
105
|
+
if (native.originalMask === gradient)
|
|
106
|
+
native.originalMask = null;
|
|
107
|
+
// Core's CAShapeLayer masks draw a path with zero bounds. In that case the
|
|
108
|
+
// path uses the view's coordinates; other masks have their own bounds.
|
|
109
|
+
const area = owner.bounds.size.width > 0 && owner.bounds.size.height > 0
|
|
110
|
+
? owner.bounds
|
|
111
|
+
: bounds;
|
|
112
|
+
gradient.frame = CGRectMake(area.origin.x - area.size.width, area.origin.y, area.size.width * 3, area.size.height);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
CATransaction.commit();
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
createGradient() {
|
|
119
|
+
const gradient = CAGradientLayer.new();
|
|
120
|
+
const dim = UIColor.colorWithWhiteAlpha(1, 0.35).CGColor;
|
|
121
|
+
gradient.colors = NSArray.arrayWithArray([dim, UIColor.whiteColor.CGColor, dim]);
|
|
122
|
+
gradient.startPoint = CGPointMake(0, 0.5);
|
|
123
|
+
gradient.endPoint = CGPointMake(1, 0.5);
|
|
124
|
+
// A three-width mask lets the band enter and leave while every stop stays
|
|
125
|
+
// within the documented 0...1 range for CAGradientLayer.locations.
|
|
126
|
+
const from = NSArray.arrayWithArray([0, 0.125, 0.25]);
|
|
127
|
+
const to = NSArray.arrayWithArray([0.75, 0.875, 1]);
|
|
128
|
+
gradient.locations = from;
|
|
129
|
+
const animation = CABasicAnimation.animationWithKeyPath('locations');
|
|
130
|
+
animation.fromValue = from;
|
|
131
|
+
animation.toValue = to;
|
|
132
|
+
animation.duration = this.duration / 1000;
|
|
133
|
+
animation.repeatCount = Infinity;
|
|
134
|
+
animation.removedOnCompletion = false;
|
|
135
|
+
animation.timingFunction = CAMediaTimingFunction.functionWithName(kCAMediaTimingFunctionLinear);
|
|
136
|
+
gradient.addAnimationForKey(animation, key);
|
|
137
|
+
return gradient;
|
|
138
|
+
}
|
|
139
|
+
remove() {
|
|
140
|
+
const { gradient, owner, native } = this;
|
|
141
|
+
if (!gradient)
|
|
142
|
+
return;
|
|
143
|
+
CATransaction.begin();
|
|
144
|
+
CATransaction.setDisableActions(true);
|
|
145
|
+
try {
|
|
146
|
+
gradient.removeAnimationForKey(key);
|
|
147
|
+
if (owner?.mask === gradient)
|
|
148
|
+
owner.mask = null;
|
|
149
|
+
if (native?.originalMask === gradient)
|
|
150
|
+
native.originalMask = null;
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
CATransaction.commit();
|
|
154
|
+
}
|
|
155
|
+
this.owner = undefined;
|
|
156
|
+
this.gradient = undefined;
|
|
157
|
+
this.native = undefined;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=shimmer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shimmer.js","sourceRoot":"","sources":["../src/shimmer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Animation } from './engine.js';
|
|
2
|
+
import type { Target } from './types.js';
|
|
3
|
+
export type SymbolEffectName = 'bounce' | 'pulse' | 'scale' | 'variableColor';
|
|
4
|
+
export type SymbolEffect = SymbolEffectName | {
|
|
5
|
+
replace: `sys://${string}`;
|
|
6
|
+
};
|
|
7
|
+
export interface SymbolEffectOptions {
|
|
8
|
+
/** Native playback speed multiplier. Defaults to 1. */
|
|
9
|
+
speed?: number;
|
|
10
|
+
/** Repeat bounce, pulse or variableColor until stopped. Defaults to false. */
|
|
11
|
+
repeat?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Plays an iOS 17+ SF Symbol effect on a NativeScript Image.
|
|
15
|
+
* Scale holds until stopped; replacements also update the Image's src.
|
|
16
|
+
*
|
|
17
|
+
* ```ts
|
|
18
|
+
* symbolEffect(icon, 'bounce')
|
|
19
|
+
* symbolEffect(icon, { replace: 'sys://heart.fill' })
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function symbolEffect(target: Target, effect: SymbolEffect, options?: SymbolEffectOptions): Animation;
|
|
23
|
+
//# sourceMappingURL=symbol-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-effect.d.ts","sourceRoot":"","sources":["../src/symbol-effect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,eAAe,CAAA;AAE7E,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAAE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAE5E,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAKD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,mBAAwB,GAChC,SAAS,CAqBX"}
|