@flighthq/tween 0.5.1-next.704.19c91ec → 0.5.1-next.730.f29a5aa
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 +2 -2
- package/dist/colorTween.d.ts.map +1 -1
- package/dist/colorTween.js +4 -3
- package/dist/colorTween.js.map +1 -1
- package/dist/internal.d.ts +4 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +71 -0
- package/dist/internal.js.map +1 -1
- package/dist/tween.d.ts.map +1 -1
- package/dist/tween.js +5 -55
- package/dist/tween.js.map +1 -1
- package/package.json +4 -4
- package/src/colorTween.test.ts +29 -0
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/tween`. The `@flight
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/tween@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/tween@0.5.1-next.730.f29a5aa](https://github.com/flighthq/flight/tree/f29a5aab5db192284ce5cadf08ffae2649a598ea/packages/tween)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/f29a5aab5db192284ce5cadf08ffae2649a598ea/LICENSE.md)
|
package/dist/colorTween.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorTween.d.ts","sourceRoot":"","sources":["../src/colorTween.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlF,KAAK,eAAe,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC/B,KAAK,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"colorTween.d.ts","sourceRoot":"","sources":["../src/colorTween.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlF,KAAK,eAAe,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC/B,KAAK,CAAC,eAAe,CAAC,CA0BxB"}
|
package/dist/colorTween.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { connectSignal } from '@flighthq/signals/contract';
|
|
2
|
-
import {
|
|
2
|
+
import { addTweenToManager, makeTween } from './internal';
|
|
3
3
|
/**
|
|
4
4
|
* Tween a packed 0xRRGGBB color property on target.
|
|
5
5
|
* Components are interpolated in float space; the composed value written on each
|
|
@@ -12,11 +12,12 @@ export function createColorTween(manager, target, property, duration, toColor, o
|
|
|
12
12
|
g: (fromColor >> 8) & 0xff,
|
|
13
13
|
r: (fromColor >> 16) & 0xff,
|
|
14
14
|
};
|
|
15
|
-
const tween =
|
|
15
|
+
const tween = makeTween(components, duration, {
|
|
16
16
|
b: toColor & 0xff,
|
|
17
17
|
g: (toColor >> 8) & 0xff,
|
|
18
18
|
r: (toColor >> 16) & 0xff,
|
|
19
|
-
}, options);
|
|
19
|
+
}, options, manager.defaultEase);
|
|
20
|
+
addTweenToManager(manager, tween, options?.overwrite ?? true, target, [property]);
|
|
20
21
|
connectSignal(tween.onUpdate, () => {
|
|
21
22
|
target[property] =
|
|
22
23
|
((Math.round(components.r) & 0xff) << 16) |
|
package/dist/colorTween.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorTween.js","sourceRoot":"","sources":["../src/colorTween.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"colorTween.js","sourceRoot":"","sources":["../src/colorTween.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI1D;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAqB,EACrB,MAA8B,EAC9B,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,OAAgC;IAEhC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAAoB;QAClC,CAAC,EAAE,SAAS,GAAG,IAAI;QACnB,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI;QAC1B,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,IAAI;KAC5B,CAAC;IACF,MAAM,KAAK,GAAG,SAAS,CACrB,UAAU,EACV,QAAQ,EACR;QACE,CAAC,EAAE,OAAO,GAAG,IAAI;QACjB,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI;QACxB,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI;KAC1B,EACD,OAAO,EACP,OAAO,CAAC,WAAW,CACpB,CAAC;IACF,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClF,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,QAAQ,CAAC;YACd,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import type { Tween } from '@flighthq/types/contract';
|
|
1
|
+
import type { EasingFunction, NumericProps, Tween, TweenManager, TweenOptions } from '@flighthq/types/contract';
|
|
2
|
+
export declare function addTweenToManager<T extends object>(manager: TweenManager, tween: Tween<T>, overwrite: boolean, registrationTarget?: object, registrationPropertyKeys?: readonly string[]): void;
|
|
3
|
+
export declare function hasTweenProperty<T extends object>(tween: Tween<T>, key: string): boolean;
|
|
2
4
|
export declare function initializeTween<T extends object>(tween: Tween<T>): void;
|
|
5
|
+
export declare function makeTween<T extends object>(target: T, duration: number, propertyMap: Readonly<NumericProps<T>>, options: Readonly<TweenOptions> | undefined, defaultEase: EasingFunction): Tween<T>;
|
|
3
6
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,YAAY,EAEb,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,SAAS,EAAE,OAAO,EAClB,kBAAkB,GAAE,MAAqB,EACzC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,GAC3C,IAAI,CAiCN;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAIxF;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAevE;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACxC,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACtC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS,EAC3C,WAAW,EAAE,cAAc,GAC1B,KAAK,CAAC,CAAC,CAAC,CAwBV"}
|
package/dist/internal.js
CHANGED
|
@@ -1,3 +1,45 @@
|
|
|
1
|
+
import { createSignal } from '@flighthq/signals/contract';
|
|
2
|
+
export function addTweenToManager(manager, tween, overwrite, registrationTarget = tween.target, registrationPropertyKeys) {
|
|
3
|
+
if (registrationPropertyKeys !== undefined) {
|
|
4
|
+
_registrationPropertyKeys.set(tween, registrationPropertyKeys);
|
|
5
|
+
}
|
|
6
|
+
let list = manager.tweens.get(registrationTarget);
|
|
7
|
+
if (list === undefined) {
|
|
8
|
+
list = [];
|
|
9
|
+
manager.tweens.set(registrationTarget, list);
|
|
10
|
+
}
|
|
11
|
+
if (overwrite) {
|
|
12
|
+
for (let i = list.length - 1; i >= 0; i--) {
|
|
13
|
+
const existing = list[i];
|
|
14
|
+
let overlaps = false;
|
|
15
|
+
if (registrationPropertyKeys === undefined) {
|
|
16
|
+
for (const detail of tween.properties) {
|
|
17
|
+
if (hasTweenProperty(existing, detail.key)) {
|
|
18
|
+
overlaps = true;
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
for (const key of registrationPropertyKeys) {
|
|
25
|
+
if (hasTweenProperty(existing, key)) {
|
|
26
|
+
overlaps = true;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (overlaps)
|
|
32
|
+
existing.complete = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
list.push(tween);
|
|
36
|
+
}
|
|
37
|
+
export function hasTweenProperty(tween, key) {
|
|
38
|
+
const registrationPropertyKeys = _registrationPropertyKeys.get(tween);
|
|
39
|
+
if (registrationPropertyKeys !== undefined)
|
|
40
|
+
return registrationPropertyKeys.includes(key);
|
|
41
|
+
return key in tween.propertyMap;
|
|
42
|
+
}
|
|
1
43
|
export function initializeTween(tween) {
|
|
2
44
|
const target = tween.target;
|
|
3
45
|
const propertyMap = tween.propertyMap;
|
|
@@ -15,4 +57,33 @@ export function initializeTween(tween) {
|
|
|
15
57
|
}
|
|
16
58
|
tween.initialized = true;
|
|
17
59
|
}
|
|
60
|
+
export function makeTween(target, duration, propertyMap, options, defaultEase) {
|
|
61
|
+
const keys = Object.keys(propertyMap);
|
|
62
|
+
const properties = keys.map((key) => ({ change: 0, key, start: 0 }));
|
|
63
|
+
return {
|
|
64
|
+
complete: false,
|
|
65
|
+
delay: options?.delay ?? 0,
|
|
66
|
+
duration,
|
|
67
|
+
ease: options?.ease ?? defaultEase,
|
|
68
|
+
elapsed: 0,
|
|
69
|
+
initialized: false,
|
|
70
|
+
onComplete: createSignal(),
|
|
71
|
+
onRepeat: createSignal(),
|
|
72
|
+
onUpdate: createSignal(),
|
|
73
|
+
onYoyo: createSignal(),
|
|
74
|
+
paused: false,
|
|
75
|
+
properties,
|
|
76
|
+
propertyMap,
|
|
77
|
+
reflect: options?.reflect ?? false,
|
|
78
|
+
repeat: options?.repeat ?? 0,
|
|
79
|
+
reverse: options?.reverse ?? false,
|
|
80
|
+
smartRotation: options?.smartRotation ?? false,
|
|
81
|
+
snapping: options?.snapping ?? false,
|
|
82
|
+
target,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// Proxy-backed tweens interpolate against their private target while manager operations address the
|
|
86
|
+
// caller's property. The weak key keeps that registration identity attached to the tween without
|
|
87
|
+
// widening the public Tween shape or retaining completed tweens.
|
|
88
|
+
const _registrationPropertyKeys = new WeakMap();
|
|
18
89
|
//# sourceMappingURL=internal.js.map
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
|
package/dist/tween.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tween.d.ts","sourceRoot":"","sources":["../src/tween.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tween.d.ts","sourceRoot":"","sources":["../src/tween.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACrC,IAAI,CAQN;AAMD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC1C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACtC,OAAO,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC/B,KAAK,CAAC,CAAC,CAAC,CAAC;AACZ,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC1C,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACtC,OAAO,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC/B,KAAK,CAAC,CAAC,CAAC,CAAC;AAiCZ,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAIjE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,CAExF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAG1E;AAMD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAM7E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAI1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAElD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAE1D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAI3D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAEnD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIxE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAI/F;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAkBvF;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EACzC,OAAO,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACnC,IAAI,CAmBN"}
|
package/dist/tween.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import {
|
|
3
|
-
import { initializeTween } from './internal';
|
|
2
|
+
import { emitSignal } from '@flighthq/signals/contract';
|
|
3
|
+
import { addTweenToManager, hasTweenProperty, initializeTween, makeTween } from './internal';
|
|
4
4
|
import { defaultManager } from './tweenManager';
|
|
5
5
|
export function applyTween(manager, target, propertyMap) {
|
|
6
6
|
stopTweens(manager, target, propertyMap);
|
|
@@ -33,7 +33,7 @@ export function createTween(managerOrTarget, targetOrDuration, durationOrProps,
|
|
|
33
33
|
options = propsOrOptions;
|
|
34
34
|
}
|
|
35
35
|
const tween = makeTween(target, duration, propertyMap, options, manager.defaultEase);
|
|
36
|
-
|
|
36
|
+
addTweenToManager(manager, tween, options?.overwrite ?? true);
|
|
37
37
|
return tween;
|
|
38
38
|
}
|
|
39
39
|
export function getActiveTweenCount(manager) {
|
|
@@ -55,37 +55,11 @@ function isTweenManager(value) {
|
|
|
55
55
|
export function killTweensOfProperty(manager, key) {
|
|
56
56
|
for (const list of manager.tweens.values()) {
|
|
57
57
|
for (const tween of list) {
|
|
58
|
-
|
|
59
|
-
if (key in p)
|
|
58
|
+
if (hasTweenProperty(tween, key))
|
|
60
59
|
tween.complete = true;
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
}
|
|
64
|
-
function makeTween(target, duration, propertyMap, options, defaultEase) {
|
|
65
|
-
const keys = Object.keys(propertyMap);
|
|
66
|
-
const properties = keys.map((key) => ({ change: 0, key, start: 0 }));
|
|
67
|
-
return {
|
|
68
|
-
complete: false,
|
|
69
|
-
delay: options?.delay ?? 0,
|
|
70
|
-
duration,
|
|
71
|
-
ease: options?.ease ?? defaultEase,
|
|
72
|
-
elapsed: 0,
|
|
73
|
-
initialized: false,
|
|
74
|
-
onComplete: createSignal(),
|
|
75
|
-
onRepeat: createSignal(),
|
|
76
|
-
onUpdate: createSignal(),
|
|
77
|
-
onYoyo: createSignal(),
|
|
78
|
-
paused: false,
|
|
79
|
-
properties,
|
|
80
|
-
propertyMap,
|
|
81
|
-
reflect: options?.reflect ?? false,
|
|
82
|
-
repeat: options?.repeat ?? 0,
|
|
83
|
-
reverse: options?.reverse ?? false,
|
|
84
|
-
smartRotation: options?.smartRotation ?? false,
|
|
85
|
-
snapping: options?.snapping ?? false,
|
|
86
|
-
target,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
63
|
export function pauseAllTweens(manager) {
|
|
90
64
|
for (const list of manager.tweens.values()) {
|
|
91
65
|
for (const tween of list)
|
|
@@ -102,29 +76,6 @@ export function pauseTweens(manager, target) {
|
|
|
102
76
|
for (const tween of list)
|
|
103
77
|
tween.paused = true;
|
|
104
78
|
}
|
|
105
|
-
function registerTween(manager, tween, overwrite) {
|
|
106
|
-
let list = manager.tweens.get(tween.target);
|
|
107
|
-
if (list === undefined) {
|
|
108
|
-
list = [];
|
|
109
|
-
manager.tweens.set(tween.target, list);
|
|
110
|
-
}
|
|
111
|
-
if (overwrite) {
|
|
112
|
-
for (let i = list.length - 1; i >= 0; i--) {
|
|
113
|
-
const existing = list[i];
|
|
114
|
-
const existingMap = existing.propertyMap;
|
|
115
|
-
let overlaps = false;
|
|
116
|
-
for (const detail of tween.properties) {
|
|
117
|
-
if (detail.key in existingMap) {
|
|
118
|
-
overlaps = true;
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (overlaps)
|
|
123
|
-
existing.complete = true;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
list.push(tween);
|
|
127
|
-
}
|
|
128
79
|
export function resetAllTweens(manager) {
|
|
129
80
|
manager.tweens.clear();
|
|
130
81
|
}
|
|
@@ -177,10 +128,9 @@ export function stopTweens(manager, target, propertyMap, options) {
|
|
|
177
128
|
for (const tween of list) {
|
|
178
129
|
if (propertyMap !== undefined) {
|
|
179
130
|
const p = propertyMap;
|
|
180
|
-
const tweenMap = tween.propertyMap;
|
|
181
131
|
let overlaps = false;
|
|
182
132
|
for (const key of Object.keys(p)) {
|
|
183
|
-
if (key
|
|
133
|
+
if (hasTweenProperty(tween, key)) {
|
|
184
134
|
overlaps = true;
|
|
185
135
|
break;
|
|
186
136
|
}
|
package/dist/tween.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tween.js","sourceRoot":"","sources":["../src/tween.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tween.js","sourceRoot":"","sources":["../src/tween.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/tween",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.730.f29a5aa",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/easing": "0.5.1-next.
|
|
42
|
-
"@flighthq/signals": "0.5.1-next.
|
|
43
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/easing": "0.5.1-next.730.f29a5aa",
|
|
42
|
+
"@flighthq/signals": "0.5.1-next.730.f29a5aa",
|
|
43
|
+
"@flighthq/types": "0.5.1-next.730.f29a5aa"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
package/src/colorTween.test.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createColorTween } from './colorTween';
|
|
2
|
+
import { createTween, getTweensOf, hasTweensOf, killTweensOfProperty, stopTweens } from './tween';
|
|
2
3
|
import { createTweenManager } from './tweenManager';
|
|
3
4
|
import { updateTweens } from './updateTweens';
|
|
4
5
|
|
|
@@ -39,6 +40,34 @@ describe('createColorTween', () => {
|
|
|
39
40
|
expect(b).toBeCloseTo(128, 0);
|
|
40
41
|
});
|
|
41
42
|
|
|
43
|
+
it('registers the component proxy against the user target for manager queries and stops', () => {
|
|
44
|
+
const manager = createTweenManager();
|
|
45
|
+
const target = { color: 0xff0000 };
|
|
46
|
+
const tween = createColorTween(manager, target, 'color', 1000, 0x0000ff);
|
|
47
|
+
|
|
48
|
+
expect(getTweensOf(manager, target)).toContain(tween);
|
|
49
|
+
expect(hasTweensOf(manager, target)).toBe(true);
|
|
50
|
+
|
|
51
|
+
stopTweens(manager, target);
|
|
52
|
+
expect(tween.complete).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('registers the user property for overwrite, targeted stop, and property kill', () => {
|
|
56
|
+
const manager = createTweenManager();
|
|
57
|
+
const target = { color: 0xff0000 };
|
|
58
|
+
const numericTween = createTween(manager, target, 1000, { color: 0x00ff00 });
|
|
59
|
+
const colorTween = createColorTween(manager, target, 'color', 1000, 0x0000ff);
|
|
60
|
+
|
|
61
|
+
expect(numericTween.complete).toBe(true);
|
|
62
|
+
|
|
63
|
+
stopTweens(manager, target, { color: 0 });
|
|
64
|
+
expect(colorTween.complete).toBe(true);
|
|
65
|
+
|
|
66
|
+
const nextColorTween = createColorTween(manager, target, 'color', 1000, 0xffffff);
|
|
67
|
+
killTweensOfProperty(manager, 'color');
|
|
68
|
+
expect(nextColorTween.complete).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
|
|
42
71
|
it('does not affect the target before any update', () => {
|
|
43
72
|
const manager = createTweenManager();
|
|
44
73
|
const target = { color: 0xabcdef };
|