@motion-script/core 0.2.5 → 1.0.0
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/dist/assets/index.d.ts +2 -1
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js.map +1 -1
- package/dist/assets/manager.d.ts +15 -0
- package/dist/assets/manager.d.ts.map +1 -1
- package/dist/assets/manager.js +61 -0
- package/dist/assets/manager.js.map +1 -1
- package/dist/assets/record.d.ts +22 -2
- package/dist/assets/record.d.ts.map +1 -1
- package/dist/assets/tracker.d.ts +10 -8
- package/dist/assets/tracker.d.ts.map +1 -1
- package/dist/assets/tracker.js +16 -8
- package/dist/assets/tracker.js.map +1 -1
- package/dist/attributes/index.d.ts +1 -1
- package/dist/attributes/index.d.ts.map +1 -1
- package/dist/attributes/index.js +1 -1
- package/dist/attributes/index.js.map +1 -1
- package/dist/attributes/shape/fill/blend.d.ts +3 -3
- package/dist/attributes/shape/fill/blend.d.ts.map +1 -1
- package/dist/attributes/shape/fill/blend.js +2 -2
- package/dist/attributes/shape/fill/blend.js.map +1 -1
- package/dist/attributes/shape/fill/index.d.ts +1 -1
- package/dist/attributes/shape/fill/index.d.ts.map +1 -1
- package/dist/attributes/shape/fill/index.js +1 -1
- package/dist/attributes/shape/fill/index.js.map +1 -1
- package/dist/attributes/shape/stroke/index.d.ts +2 -2
- package/dist/attributes/shape/stroke/index.d.ts.map +1 -1
- package/dist/attributes/shape/stroke/index.js +1 -1
- package/dist/attributes/shape/stroke/index.js.map +1 -1
- package/dist/attributes/shape/stroke/lerp.d.ts.map +1 -1
- package/dist/attributes/shape/stroke/lerp.js +1 -0
- package/dist/attributes/shape/stroke/lerp.js.map +1 -1
- package/dist/attributes/shape/stroke/mapper.d.ts +18 -0
- package/dist/attributes/shape/stroke/mapper.d.ts.map +1 -1
- package/dist/attributes/shape/stroke/mapper.js +14 -0
- package/dist/attributes/shape/stroke/mapper.js.map +1 -1
- package/dist/layout/flex.d.ts +12 -0
- package/dist/layout/flex.d.ts.map +1 -1
- package/dist/layout/flex.js +31 -18
- package/dist/layout/flex.js.map +1 -1
- package/dist/layout/grid.d.ts +1 -1
- package/dist/layout/grid.d.ts.map +1 -1
- package/dist/layout/grid.js +24 -6
- package/dist/layout/grid.js.map +1 -1
- package/dist/nodes/base/node.d.ts +28 -0
- package/dist/nodes/base/node.d.ts.map +1 -1
- package/dist/nodes/base/node.js +40 -1
- package/dist/nodes/base/node.js.map +1 -1
- package/dist/nodes/base/scene-node.d.ts +11 -0
- package/dist/nodes/base/scene-node.d.ts.map +1 -1
- package/dist/nodes/base/scene-node.js +31 -0
- package/dist/nodes/base/scene-node.js.map +1 -1
- package/dist/nodes/geometry/grid-node.d.ts.map +1 -1
- package/dist/nodes/geometry/grid-node.js +8 -4
- package/dist/nodes/geometry/grid-node.js.map +1 -1
- package/dist/nodes/geometry/rect-node.d.ts +2 -0
- package/dist/nodes/geometry/rect-node.d.ts.map +1 -1
- package/dist/nodes/geometry/rect-node.js +35 -15
- package/dist/nodes/geometry/rect-node.js.map +1 -1
- package/dist/nodes/geometry/shape-node.d.ts +2 -0
- package/dist/nodes/geometry/shape-node.d.ts.map +1 -1
- package/dist/nodes/geometry/shape-node.js +19 -7
- package/dist/nodes/geometry/shape-node.js.map +1 -1
- package/dist/platform/storage-adapter.d.ts.map +1 -1
- package/dist/platform/storage-adapter.js +4 -0
- package/dist/platform/storage-adapter.js.map +1 -1
- package/dist/runtime/playback-controller.d.ts +2 -0
- package/dist/runtime/playback-controller.d.ts.map +1 -1
- package/dist/runtime/playback-controller.js +17 -0
- package/dist/runtime/playback-controller.js.map +1 -1
- package/dist/runtime/precompisition.js +10 -0
- package/dist/runtime/precompisition.js.map +1 -1
- package/package.json +6 -5
- package/dist/assets/manager.test.d.ts +0 -2
- package/dist/assets/manager.test.d.ts.map +0 -1
- package/dist/assets/manager.test.js +0 -133
- package/dist/assets/manager.test.js.map +0 -1
- package/dist/attributes/layout/padding.test.d.ts +0 -2
- package/dist/attributes/layout/padding.test.d.ts.map +0 -1
- package/dist/attributes/layout/padding.test.js +0 -32
- package/dist/attributes/layout/padding.test.js.map +0 -1
- package/dist/attributes/layout/vector2.test.d.ts +0 -2
- package/dist/attributes/layout/vector2.test.d.ts.map +0 -1
- package/dist/attributes/layout/vector2.test.js +0 -23
- package/dist/attributes/layout/vector2.test.js.map +0 -1
- package/dist/attributes/properties/decorator.test.d.ts +0 -2
- package/dist/attributes/properties/decorator.test.d.ts.map +0 -1
- package/dist/attributes/properties/decorator.test.js +0 -52
- package/dist/attributes/properties/decorator.test.js.map +0 -1
- package/dist/attributes/shape/corners/border-radius.test.d.ts +0 -2
- package/dist/attributes/shape/corners/border-radius.test.d.ts.map +0 -1
- package/dist/attributes/shape/corners/border-radius.test.js +0 -52
- package/dist/attributes/shape/corners/border-radius.test.js.map +0 -1
- package/dist/attributes/shape/effects/chain.test.d.ts +0 -2
- package/dist/attributes/shape/effects/chain.test.d.ts.map +0 -1
- package/dist/attributes/shape/effects/chain.test.js +0 -63
- package/dist/attributes/shape/effects/chain.test.js.map +0 -1
- package/dist/attributes/shape/fill/blend.test.d.ts +0 -2
- package/dist/attributes/shape/fill/blend.test.d.ts.map +0 -1
- package/dist/attributes/shape/fill/blend.test.js +0 -18
- package/dist/attributes/shape/fill/blend.test.js.map +0 -1
- package/dist/attributes/shape/fill/chain.test.d.ts +0 -2
- package/dist/attributes/shape/fill/chain.test.d.ts.map +0 -1
- package/dist/attributes/shape/fill/chain.test.js +0 -92
- package/dist/attributes/shape/fill/chain.test.js.map +0 -1
- package/dist/attributes/shape/fill/color/parser.test.d.ts +0 -2
- package/dist/attributes/shape/fill/color/parser.test.d.ts.map +0 -1
- package/dist/attributes/shape/fill/color/parser.test.js +0 -99
- package/dist/attributes/shape/fill/color/parser.test.js.map +0 -1
- package/dist/attributes/shape/fill/lerp.test.d.ts +0 -2
- package/dist/attributes/shape/fill/lerp.test.d.ts.map +0 -1
- package/dist/attributes/shape/fill/lerp.test.js +0 -18
- package/dist/attributes/shape/fill/lerp.test.js.map +0 -1
- package/dist/attributes/shape/filters/chain.test.d.ts +0 -2
- package/dist/attributes/shape/filters/chain.test.d.ts.map +0 -1
- package/dist/attributes/shape/filters/chain.test.js +0 -49
- package/dist/attributes/shape/filters/chain.test.js.map +0 -1
- package/dist/attributes/shape/filters/registry.test.d.ts +0 -5
- package/dist/attributes/shape/filters/registry.test.d.ts.map +0 -1
- package/dist/attributes/shape/filters/registry.test.js +0 -75
- package/dist/attributes/shape/filters/registry.test.js.map +0 -1
- package/dist/attributes/shape/path/bezier.test.d.ts +0 -2
- package/dist/attributes/shape/path/bezier.test.d.ts.map +0 -1
- package/dist/attributes/shape/path/bezier.test.js +0 -85
- package/dist/attributes/shape/path/bezier.test.js.map +0 -1
- package/dist/attributes/shape/path/dash.test.d.ts +0 -2
- package/dist/attributes/shape/path/dash.test.d.ts.map +0 -1
- package/dist/attributes/shape/path/dash.test.js +0 -36
- package/dist/attributes/shape/path/dash.test.js.map +0 -1
- package/dist/attributes/shape/path/length.test.d.ts +0 -2
- package/dist/attributes/shape/path/length.test.d.ts.map +0 -1
- package/dist/attributes/shape/path/length.test.js +0 -56
- package/dist/attributes/shape/path/length.test.js.map +0 -1
- package/dist/attributes/shape/path/subpath.test.d.ts +0 -2
- package/dist/attributes/shape/path/subpath.test.d.ts.map +0 -1
- package/dist/attributes/shape/path/subpath.test.js +0 -54
- package/dist/attributes/shape/path/subpath.test.js.map +0 -1
- package/dist/attributes/text/lerp.test.d.ts +0 -2
- package/dist/attributes/text/lerp.test.d.ts.map +0 -1
- package/dist/attributes/text/lerp.test.js +0 -39
- package/dist/attributes/text/lerp.test.js.map +0 -1
- package/dist/layout/flex.test.d.ts +0 -2
- package/dist/layout/flex.test.d.ts.map +0 -1
- package/dist/layout/flex.test.js +0 -336
- package/dist/layout/flex.test.js.map +0 -1
- package/dist/layout/padding.test.d.ts +0 -2
- package/dist/layout/padding.test.d.ts.map +0 -1
- package/dist/layout/padding.test.js +0 -39
- package/dist/layout/padding.test.js.map +0 -1
- package/dist/layout/size-resolver.test.d.ts +0 -2
- package/dist/layout/size-resolver.test.d.ts.map +0 -1
- package/dist/layout/size-resolver.test.js +0 -24
- package/dist/layout/size-resolver.test.js.map +0 -1
- package/dist/layout/tweens.test.d.ts +0 -2
- package/dist/layout/tweens.test.d.ts.map +0 -1
- package/dist/layout/tweens.test.js +0 -26
- package/dist/layout/tweens.test.js.map +0 -1
- package/dist/project/config.test.d.ts +0 -2
- package/dist/project/config.test.d.ts.map +0 -1
- package/dist/project/config.test.js +0 -28
- package/dist/project/config.test.js.map +0 -1
- package/dist/render/descriptors/path.test.d.ts +0 -2
- package/dist/render/descriptors/path.test.d.ts.map +0 -1
- package/dist/render/descriptors/path.test.js +0 -40
- package/dist/render/descriptors/path.test.js.map +0 -1
- package/dist/runtime/playback-controller.test.d.ts +0 -2
- package/dist/runtime/playback-controller.test.d.ts.map +0 -1
- package/dist/runtime/playback-controller.test.js +0 -148
- package/dist/runtime/playback-controller.test.js.map +0 -1
- package/dist/runtime/precompisition.test.d.ts +0 -2
- package/dist/runtime/precompisition.test.d.ts.map +0 -1
- package/dist/runtime/precompisition.test.js +0 -138
- package/dist/runtime/precompisition.test.js.map +0 -1
- package/dist/runtime/runtime.fixtures.d.ts +0 -158
- package/dist/runtime/runtime.fixtures.d.ts.map +0 -1
- package/dist/runtime/runtime.fixtures.js +0 -264
- package/dist/runtime/runtime.fixtures.js.map +0 -1
- package/dist/runtime/state-evaluator.test.d.ts +0 -2
- package/dist/runtime/state-evaluator.test.d.ts.map +0 -1
- package/dist/runtime/state-evaluator.test.js +0 -122
- package/dist/runtime/state-evaluator.test.js.map +0 -1
- package/dist/signals/create.test.d.ts +0 -2
- package/dist/signals/create.test.d.ts.map +0 -1
- package/dist/signals/create.test.js +0 -81
- package/dist/signals/create.test.js.map +0 -1
- package/dist/signals/signal-cell.test.d.ts +0 -2
- package/dist/signals/signal-cell.test.d.ts.map +0 -1
- package/dist/signals/signal-cell.test.js +0 -202
- package/dist/signals/signal-cell.test.js.map +0 -1
- package/dist/signals/signal.test.d.ts +0 -2
- package/dist/signals/signal.test.d.ts.map +0 -1
- package/dist/signals/signal.test.js +0 -192
- package/dist/signals/signal.test.js.map +0 -1
- package/dist/tween/eases.test.d.ts +0 -2
- package/dist/tween/eases.test.d.ts.map +0 -1
- package/dist/tween/eases.test.js +0 -91
- package/dist/tween/eases.test.js.map +0 -1
- package/dist/tween/lerp.test.d.ts +0 -2
- package/dist/tween/lerp.test.d.ts.map +0 -1
- package/dist/tween/lerp.test.js +0 -22
- package/dist/tween/lerp.test.js.map +0 -1
- package/dist/tween/prepare.test.d.ts +0 -2
- package/dist/tween/prepare.test.d.ts.map +0 -1
- package/dist/tween/prepare.test.js +0 -44
- package/dist/tween/prepare.test.js.map +0 -1
- package/dist/tween/sequence.test.d.ts +0 -2
- package/dist/tween/sequence.test.d.ts.map +0 -1
- package/dist/tween/sequence.test.js +0 -68
- package/dist/tween/sequence.test.js.map +0 -1
- package/dist/tween/tests/batched-parallel.test.d.ts +0 -2
- package/dist/tween/tests/batched-parallel.test.d.ts.map +0 -1
- package/dist/tween/tests/batched-parallel.test.js +0 -76
- package/dist/tween/tests/batched-parallel.test.js.map +0 -1
- package/dist/tween/tests/parallel.test.d.ts +0 -2
- package/dist/tween/tests/parallel.test.d.ts.map +0 -1
- package/dist/tween/tests/parallel.test.js +0 -129
- package/dist/tween/tests/parallel.test.js.map +0 -1
- package/dist/tween/tests/realtime.test.d.ts +0 -2
- package/dist/tween/tests/realtime.test.d.ts.map +0 -1
- package/dist/tween/tests/realtime.test.js +0 -76
- package/dist/tween/tests/realtime.test.js.map +0 -1
- package/dist/tween/tween.test.d.ts +0 -2
- package/dist/tween/tween.test.d.ts.map +0 -1
- package/dist/tween/tween.test.js +0 -38
- package/dist/tween/tween.test.js.map +0 -1
- package/dist/tween/wait.test.d.ts +0 -2
- package/dist/tween/wait.test.d.ts.map +0 -1
- package/dist/tween/wait.test.js +0 -35
- package/dist/tween/wait.test.js.map +0 -1
- package/dist/util/clamp.test.d.ts +0 -2
- package/dist/util/clamp.test.d.ts.map +0 -1
- package/dist/util/clamp.test.js +0 -31
- package/dist/util/clamp.test.js.map +0 -1
- package/dist/util/random.test.d.ts +0 -2
- package/dist/util/random.test.d.ts.map +0 -1
- package/dist/util/random.test.js +0 -42
- package/dist/util/random.test.js.map +0 -1
- package/dist/util/reference.test.d.ts +0 -2
- package/dist/util/reference.test.d.ts.map +0 -1
- package/dist/util/reference.test.js +0 -32
- package/dist/util/reference.test.js.map +0 -1
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
-
import { Signal, isTracking } from './signal';
|
|
3
|
-
import { getSignal, getOrCreateSignal } from './host';
|
|
4
|
-
import { Rect } from '../nodes/geometry/rect-node';
|
|
5
|
-
describe('Signal – basic get/set', () => {
|
|
6
|
-
it('returns the initial value', () => {
|
|
7
|
-
const cell = new Signal(42);
|
|
8
|
-
expect(cell.get()).toBe(42);
|
|
9
|
-
});
|
|
10
|
-
it('set() updates the value', () => {
|
|
11
|
-
const cell = new Signal(0);
|
|
12
|
-
cell.set(10);
|
|
13
|
-
expect(cell.get()).toBe(10);
|
|
14
|
-
});
|
|
15
|
-
it('set() is a no-op when value is identical (Object.is)', () => {
|
|
16
|
-
const cell = new Signal(5);
|
|
17
|
-
const peekBefore = cell.peek();
|
|
18
|
-
cell.set(5); // same value
|
|
19
|
-
expect(cell.peek()).toBe(peekBefore);
|
|
20
|
-
});
|
|
21
|
-
it('peek() returns value without entering tracking', () => {
|
|
22
|
-
const cell = new Signal(99);
|
|
23
|
-
expect(cell.peek()).toBe(99);
|
|
24
|
-
});
|
|
25
|
-
it('isBound() is false for plain cells', () => {
|
|
26
|
-
const cell = new Signal(0);
|
|
27
|
-
expect(cell.isBound()).toBe(false);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
describe('Signal – bind / reactive computation', () => {
|
|
31
|
-
it('bind() makes isBound() return true', () => {
|
|
32
|
-
const cell = new Signal(0);
|
|
33
|
-
cell.bind(() => 1);
|
|
34
|
-
expect(cell.isBound()).toBe(true);
|
|
35
|
-
});
|
|
36
|
-
it('get() after bind() returns computed value', () => {
|
|
37
|
-
const cell = new Signal(0);
|
|
38
|
-
cell.bind(() => 42);
|
|
39
|
-
expect(cell.get()).toBe(42);
|
|
40
|
-
});
|
|
41
|
-
it('recomputes when a dependency changes', () => {
|
|
42
|
-
const source = new Signal(10);
|
|
43
|
-
const derived = new Signal(0);
|
|
44
|
-
derived.bind(() => source.get() * 2);
|
|
45
|
-
expect(derived.get()).toBe(20);
|
|
46
|
-
source.set(5);
|
|
47
|
-
expect(derived.get()).toBe(10);
|
|
48
|
-
});
|
|
49
|
-
it('does not recompute unnecessarily (no dirty)', () => {
|
|
50
|
-
const source = new Signal(1);
|
|
51
|
-
let computations = 0;
|
|
52
|
-
const derived = new Signal(0);
|
|
53
|
-
derived.bind(() => { computations++; return source.get(); });
|
|
54
|
-
derived.get(); // computes once
|
|
55
|
-
derived.get(); // should not recompute (not dirty)
|
|
56
|
-
expect(computations).toBe(1);
|
|
57
|
-
source.set(2); // marks dirty
|
|
58
|
-
derived.get(); // recomputes
|
|
59
|
-
expect(computations).toBe(2);
|
|
60
|
-
});
|
|
61
|
-
it('chains of derived cells propagate dirty', () => {
|
|
62
|
-
const a = new Signal(1);
|
|
63
|
-
const b = new Signal(0);
|
|
64
|
-
const c = new Signal(0);
|
|
65
|
-
b.bind(() => a.get() + 1);
|
|
66
|
-
c.bind(() => b.get() + 1);
|
|
67
|
-
expect(c.get()).toBe(3);
|
|
68
|
-
a.set(10);
|
|
69
|
-
expect(c.get()).toBe(12);
|
|
70
|
-
});
|
|
71
|
-
it('unbind() detaches computation and reverts to plain value', () => {
|
|
72
|
-
const source = new Signal(5);
|
|
73
|
-
const cell = new Signal(0);
|
|
74
|
-
cell.bind(() => source.get() * 2);
|
|
75
|
-
expect(cell.get()).toBe(10);
|
|
76
|
-
cell.unbind();
|
|
77
|
-
expect(cell.isBound()).toBe(false);
|
|
78
|
-
// Value is the last computed value, now stored as plain
|
|
79
|
-
expect(cell.get()).toBe(10);
|
|
80
|
-
// Changing source no longer affects cell
|
|
81
|
-
source.set(99);
|
|
82
|
-
expect(cell.get()).toBe(10);
|
|
83
|
-
});
|
|
84
|
-
it('set() on a bound cell detaches and uses the new value', () => {
|
|
85
|
-
const source = new Signal(5);
|
|
86
|
-
const cell = new Signal(0);
|
|
87
|
-
cell.bind(() => source.get() * 2);
|
|
88
|
-
cell.set(77);
|
|
89
|
-
expect(cell.isBound()).toBe(false);
|
|
90
|
-
expect(cell.get()).toBe(77);
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
describe('Signal – dependency re-subscription on recompute', () => {
|
|
94
|
-
it('drops stale dependencies when recomputing', () => {
|
|
95
|
-
const toggle = new Signal(true);
|
|
96
|
-
const a = new Signal(1);
|
|
97
|
-
const b = new Signal(100);
|
|
98
|
-
const derived = new Signal(0);
|
|
99
|
-
derived.bind(() => toggle.get() ? a.get() : b.get());
|
|
100
|
-
expect(derived.get()).toBe(1); // reads a
|
|
101
|
-
toggle.set(false);
|
|
102
|
-
expect(derived.get()).toBe(100); // reads b now
|
|
103
|
-
// Changing a should no longer dirty derived
|
|
104
|
-
a.set(999);
|
|
105
|
-
// derived is not dirty (a is no longer a dep), peek should still be 100
|
|
106
|
-
expect(derived.peek()).toBe(100);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
describe('Signal – dispose', () => {
|
|
110
|
-
it('dispose() removes cell from upstream _subs (no leak upstream → this)', () => {
|
|
111
|
-
const source = new Signal(1);
|
|
112
|
-
const derived = new Signal(0);
|
|
113
|
-
derived.bind(() => source.get() * 2);
|
|
114
|
-
derived.get(); // registers derived in source._subs
|
|
115
|
-
derived.dispose();
|
|
116
|
-
// source should no longer dirty derived — we verify by checking that
|
|
117
|
-
// setting source doesn't throw and derived stays inert.
|
|
118
|
-
expect(() => source.set(99)).not.toThrow();
|
|
119
|
-
});
|
|
120
|
-
it('dispose() removes cell from downstream _deps (no leak this → sub)', () => {
|
|
121
|
-
const source = new Signal(1);
|
|
122
|
-
const derived = new Signal(0);
|
|
123
|
-
derived.bind(() => source.get() * 2);
|
|
124
|
-
derived.get();
|
|
125
|
-
// Create another cell that reads derived.
|
|
126
|
-
const consumer = new Signal(0);
|
|
127
|
-
consumer.bind(() => derived.get() + 10);
|
|
128
|
-
consumer.get(); // consumer._deps now contains derived
|
|
129
|
-
source.dispose();
|
|
130
|
-
// consumer should not have source in its deps anymore (source cleared _subs → removed from consumer._deps)
|
|
131
|
-
// At minimum: no throw when consumer tries to recompute.
|
|
132
|
-
expect(() => consumer.get()).not.toThrow();
|
|
133
|
-
});
|
|
134
|
-
it('dispose() clears external listeners', () => {
|
|
135
|
-
const cell = new Signal(0);
|
|
136
|
-
const spy = vi.fn();
|
|
137
|
-
cell.subscribe(spy);
|
|
138
|
-
cell.dispose();
|
|
139
|
-
// After dispose, no listener should fire (listeners were cleared).
|
|
140
|
-
// We reach into the cell via set — but cell is inert after dispose,
|
|
141
|
-
// so just verify no callback fires from a prior subscriber.
|
|
142
|
-
expect(spy).not.toHaveBeenCalled();
|
|
143
|
-
});
|
|
144
|
-
it('dispose() on a bound cell stops upstream propagation', () => {
|
|
145
|
-
const source = new Signal(10);
|
|
146
|
-
const derived = new Signal(0);
|
|
147
|
-
derived.bind(() => source.get() + 1);
|
|
148
|
-
expect(derived.get()).toBe(11);
|
|
149
|
-
derived.dispose();
|
|
150
|
-
// Mutating source must not cause errors from stale subscriptions.
|
|
151
|
-
source.set(20);
|
|
152
|
-
expect(() => source.set(30)).not.toThrow();
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
describe('isTracking', () => {
|
|
156
|
-
it('returns false outside of any bound computation', () => {
|
|
157
|
-
expect(isTracking()).toBe(false);
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
describe('applyProp integration', () => {
|
|
161
|
-
it('stores and retrieves plain values', () => {
|
|
162
|
-
const node = new Rect({ x: 5 });
|
|
163
|
-
expect(node.x).toBe(5);
|
|
164
|
-
});
|
|
165
|
-
it('allows direct assignment', () => {
|
|
166
|
-
const node = new Rect({ x: 0 });
|
|
167
|
-
node.set({ x: 42 });
|
|
168
|
-
expect(node.x).toBe(42);
|
|
169
|
-
});
|
|
170
|
-
it('exposes a cell via getSignal once applyProp registers the field', () => {
|
|
171
|
-
const node = new Rect({ x: 7 });
|
|
172
|
-
const cell = getSignal(node, 'x');
|
|
173
|
-
expect(cell).toBeDefined();
|
|
174
|
-
expect(cell.get()).toBe(7);
|
|
175
|
-
});
|
|
176
|
-
it('cell writes propagate to the public accessor', () => {
|
|
177
|
-
const node = new Rect({ x: 3 });
|
|
178
|
-
const cell = getSignal(node, 'x');
|
|
179
|
-
cell.set(99);
|
|
180
|
-
expect(node.x).toBe(99);
|
|
181
|
-
});
|
|
182
|
-
it('binding the cell reactively tracks a source signal', () => {
|
|
183
|
-
const node = new Rect({ x: 0 });
|
|
184
|
-
const source = new Signal(10);
|
|
185
|
-
const cell = getOrCreateSignal(node, 'x');
|
|
186
|
-
cell.bind(() => source.get());
|
|
187
|
-
expect(node.x).toBe(10);
|
|
188
|
-
source.set(20);
|
|
189
|
-
expect(node.x).toBe(20);
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
describe('getSignal / getOrCreateSignal', () => {
|
|
193
|
-
it('returns the cell for a registered field', () => {
|
|
194
|
-
const node = new Rect({});
|
|
195
|
-
expect(getSignal(node, 'x')).toBeDefined();
|
|
196
|
-
});
|
|
197
|
-
it('returns undefined for unknown property name', () => {
|
|
198
|
-
const node = new Rect({});
|
|
199
|
-
expect(getOrCreateSignal(node, 'nonexistent')).toBeUndefined();
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
//# sourceMappingURL=signal-cell.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal-cell.test.js","sourceRoot":"","sources":["../../src/signals/signal-cell.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal.test.d.ts","sourceRoot":"","sources":["../../src/signals/signal.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
-
import { createSignal } from '../signals/create';
|
|
3
|
-
import { Signal } from '../signals/signal';
|
|
4
|
-
import { linear } from '../tween/ease/constants';
|
|
5
|
-
function drive(gen, dt = 1 / 60) {
|
|
6
|
-
let frames = 0;
|
|
7
|
-
let result = gen.next();
|
|
8
|
-
while (!result.done) {
|
|
9
|
-
result = gen.next(dt);
|
|
10
|
-
if (++frames > 100_000)
|
|
11
|
-
throw new Error('generator did not terminate');
|
|
12
|
-
}
|
|
13
|
-
return frames;
|
|
14
|
-
}
|
|
15
|
-
describe('createSignal – basic read/write', () => {
|
|
16
|
-
it('returns the initial value via get()', () => {
|
|
17
|
-
const s = createSignal(10);
|
|
18
|
-
expect(s.get()).toBe(10);
|
|
19
|
-
});
|
|
20
|
-
it('zero-arg call is sugar for get()', () => {
|
|
21
|
-
const s = createSignal(42);
|
|
22
|
-
expect(s()).toBe(42);
|
|
23
|
-
});
|
|
24
|
-
it('set() updates the value', () => {
|
|
25
|
-
const s = createSignal(0);
|
|
26
|
-
s.set(5);
|
|
27
|
-
expect(s.get()).toBe(5);
|
|
28
|
-
});
|
|
29
|
-
it('single-arg call writes the value', () => {
|
|
30
|
-
const s = createSignal(0);
|
|
31
|
-
s(7);
|
|
32
|
-
expect(s.get()).toBe(7);
|
|
33
|
-
});
|
|
34
|
-
it('updater function receives previous value', () => {
|
|
35
|
-
const s = createSignal(10);
|
|
36
|
-
s.set((prev) => prev + 5);
|
|
37
|
-
expect(s.get()).toBe(15);
|
|
38
|
-
});
|
|
39
|
-
it('updater via single-arg call works the same', () => {
|
|
40
|
-
const s = createSignal(10);
|
|
41
|
-
s((prev) => prev * 2);
|
|
42
|
-
expect(s.get()).toBe(20);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
describe('createSignal – reactive binding', () => {
|
|
46
|
-
it('binds to a zero-arity function and tracks dependencies', () => {
|
|
47
|
-
const source = createSignal(1);
|
|
48
|
-
const derived = createSignal(0);
|
|
49
|
-
derived.set(() => source.get() * 10);
|
|
50
|
-
expect(derived.get()).toBe(10);
|
|
51
|
-
source.set(3);
|
|
52
|
-
expect(derived.get()).toBe(30);
|
|
53
|
-
});
|
|
54
|
-
it('chain of derived signals propagates updates', () => {
|
|
55
|
-
const a = createSignal(1);
|
|
56
|
-
const b = createSignal(0);
|
|
57
|
-
const c = createSignal(0);
|
|
58
|
-
b.set(() => a.get() + 1);
|
|
59
|
-
c.set(() => b.get() + 1);
|
|
60
|
-
expect(c.get()).toBe(3);
|
|
61
|
-
a.set(10);
|
|
62
|
-
expect(c.get()).toBe(12);
|
|
63
|
-
});
|
|
64
|
-
it('plain value initializer is non-reactive', () => {
|
|
65
|
-
const source = createSignal(5);
|
|
66
|
-
const independent = createSignal(source.get());
|
|
67
|
-
source.set(99);
|
|
68
|
-
expect(independent.get()).toBe(5);
|
|
69
|
-
});
|
|
70
|
-
it('passing an existing signal returns the same signal', () => {
|
|
71
|
-
const a = createSignal(1);
|
|
72
|
-
const b = createSignal(a);
|
|
73
|
-
expect(b).toBe(a);
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
describe('createSignal – subscribe', () => {
|
|
77
|
-
it('fires the subscriber when the value changes', () => {
|
|
78
|
-
const s = createSignal(0);
|
|
79
|
-
const fn = vi.fn();
|
|
80
|
-
s.subscribe(fn);
|
|
81
|
-
s.set(1);
|
|
82
|
-
expect(fn).toHaveBeenCalledWith(1);
|
|
83
|
-
});
|
|
84
|
-
it('does not fire for set with identical value', () => {
|
|
85
|
-
const s = createSignal(5);
|
|
86
|
-
const fn = vi.fn();
|
|
87
|
-
s.subscribe(fn);
|
|
88
|
-
s.set(5);
|
|
89
|
-
expect(fn).not.toHaveBeenCalled();
|
|
90
|
-
});
|
|
91
|
-
it('unsubscribe stops notifications', () => {
|
|
92
|
-
const s = createSignal(0);
|
|
93
|
-
const fn = vi.fn();
|
|
94
|
-
const off = s.subscribe(fn);
|
|
95
|
-
off();
|
|
96
|
-
s.set(99);
|
|
97
|
-
expect(fn).not.toHaveBeenCalled();
|
|
98
|
-
});
|
|
99
|
-
it('subscriber sees recomputed value when an upstream signal changes', () => {
|
|
100
|
-
const source = createSignal(1);
|
|
101
|
-
const derived = createSignal(0);
|
|
102
|
-
derived.set(() => source.get() * 2);
|
|
103
|
-
const fn = vi.fn();
|
|
104
|
-
derived.subscribe(fn);
|
|
105
|
-
// Ensure first compute happened
|
|
106
|
-
derived.get();
|
|
107
|
-
source.set(5);
|
|
108
|
-
// The signal cell propagates eagerly to listened-to derived cells.
|
|
109
|
-
expect(fn).toHaveBeenLastCalledWith(10);
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
describe('createSignal – tween', () => {
|
|
113
|
-
it('returns a FrameGenerator from tween()', () => {
|
|
114
|
-
const s = createSignal(0);
|
|
115
|
-
const gen = s.tween(10, 0.1, linear);
|
|
116
|
-
expect(typeof gen.next).toBe('function');
|
|
117
|
-
});
|
|
118
|
-
it('arity ≥ 2 with numeric duration via call form delegates to tween', () => {
|
|
119
|
-
const s = createSignal(0);
|
|
120
|
-
const gen = s(10, 0.1, linear);
|
|
121
|
-
expect(typeof gen.next).toBe('function');
|
|
122
|
-
});
|
|
123
|
-
it('tween advances numeric value to target by the end', () => {
|
|
124
|
-
const s = createSignal(0);
|
|
125
|
-
drive(s.tween(100, 0.2, linear));
|
|
126
|
-
expect(s.get()).toBe(100);
|
|
127
|
-
});
|
|
128
|
-
it('intermediate value is between from and to', () => {
|
|
129
|
-
const s = createSignal(0);
|
|
130
|
-
const gen = s.tween(100, 0.5, linear);
|
|
131
|
-
gen.next();
|
|
132
|
-
gen.next(0.1);
|
|
133
|
-
expect(s.get()).toBeGreaterThan(0);
|
|
134
|
-
expect(s.get()).toBeLessThan(100);
|
|
135
|
-
});
|
|
136
|
-
it('applies easing function', () => {
|
|
137
|
-
const s = createSignal(0);
|
|
138
|
-
const seen = [];
|
|
139
|
-
const easing = (t) => {
|
|
140
|
-
seen.push(t);
|
|
141
|
-
return t;
|
|
142
|
-
};
|
|
143
|
-
drive(s.tween(10, 0.05, easing));
|
|
144
|
-
expect(seen.length).toBeGreaterThan(0);
|
|
145
|
-
expect(s.get()).toBe(10);
|
|
146
|
-
});
|
|
147
|
-
it('uses defaultLerp when provided to createSignal', () => {
|
|
148
|
-
const lerp = (from, to, t) => ({
|
|
149
|
-
x: from.x + (to.x - from.x) * t,
|
|
150
|
-
});
|
|
151
|
-
const s = createSignal({ x: 0 }, lerp);
|
|
152
|
-
drive(s.tween({ x: 100 }, 0.1, linear));
|
|
153
|
-
expect(s.get().x).toBe(100);
|
|
154
|
-
});
|
|
155
|
-
it('custom lerp overrides default for a single tween', () => {
|
|
156
|
-
const s = createSignal(0);
|
|
157
|
-
const captured = [];
|
|
158
|
-
const lerp = (from, to, t) => {
|
|
159
|
-
captured.push(t);
|
|
160
|
-
return from + (to - from) * t;
|
|
161
|
-
};
|
|
162
|
-
drive(s.tween(10, 0.05, linear, lerp));
|
|
163
|
-
expect(captured.length).toBeGreaterThan(0);
|
|
164
|
-
expect(s.get()).toBe(10);
|
|
165
|
-
});
|
|
166
|
-
it('non-numeric values without lerp snap at t=1', () => {
|
|
167
|
-
const s = createSignal('a');
|
|
168
|
-
drive(s.tween('b', 0.05, linear));
|
|
169
|
-
expect(s.get()).toBe('b');
|
|
170
|
-
});
|
|
171
|
-
it('lerpNullable handles initial null', () => {
|
|
172
|
-
const s = createSignal(null);
|
|
173
|
-
drive(s.tween(50, 0.1, linear));
|
|
174
|
-
expect(s.get()).toBe(50);
|
|
175
|
-
});
|
|
176
|
-
it('lerpNullable handles null target (returns from)', () => {
|
|
177
|
-
const s = createSignal(10);
|
|
178
|
-
drive(s.tween(null, 0.1, linear));
|
|
179
|
-
expect(s.get()).toBe(10);
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
describe('createSignal – interaction with Signal', () => {
|
|
183
|
-
it('binding the underlying cell still drives the signal', () => {
|
|
184
|
-
const upstream = new Signal(7);
|
|
185
|
-
const s = createSignal(0);
|
|
186
|
-
s.set(() => upstream.get() + 1);
|
|
187
|
-
expect(s.get()).toBe(8);
|
|
188
|
-
upstream.set(20);
|
|
189
|
-
expect(s.get()).toBe(21);
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
//# sourceMappingURL=signal.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal.test.js","sourceRoot":"","sources":["../../src/signals/signal.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eases.test.d.ts","sourceRoot":"","sources":["../../src/tween/eases.test.ts"],"names":[],"mappings":""}
|
package/dist/tween/eases.test.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { linear, easeInQuad, easeOutQuad, easeOutQuart, easeInOutQuad, easeOutBack, easeInBack, easeInOutBack, easeOutElastic, easeInElastic, easeInOutElastic, } from '../tween/ease/constants';
|
|
3
|
-
function endpoints(fn, atOne = 1) {
|
|
4
|
-
expect(fn(0)).toBeCloseTo(0, 5);
|
|
5
|
-
expect(fn(1)).toBeCloseTo(atOne, 5);
|
|
6
|
-
}
|
|
7
|
-
describe('linear', () => {
|
|
8
|
-
it('is identity in [0,1]', () => {
|
|
9
|
-
expect(linear(0)).toBe(0);
|
|
10
|
-
expect(linear(0.5)).toBe(0.5);
|
|
11
|
-
expect(linear(1)).toBe(1);
|
|
12
|
-
});
|
|
13
|
-
it('clamps below 0 and above 1', () => {
|
|
14
|
-
expect(linear(-0.5)).toBe(0);
|
|
15
|
-
expect(linear(2)).toBe(1);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
describe('easeInQuad / easeOutQuad', () => {
|
|
19
|
-
it('endpoints', () => {
|
|
20
|
-
endpoints(easeInQuad);
|
|
21
|
-
endpoints(easeOutQuad);
|
|
22
|
-
});
|
|
23
|
-
it('easeInQuad(0.5) < 0.5', () => {
|
|
24
|
-
expect(easeInQuad(0.5)).toBeLessThan(0.5);
|
|
25
|
-
});
|
|
26
|
-
it('easeOutQuad(0.5) > 0.5', () => {
|
|
27
|
-
expect(easeOutQuad(0.5)).toBeGreaterThan(0.5);
|
|
28
|
-
});
|
|
29
|
-
it('clamps to [0,1] range', () => {
|
|
30
|
-
expect(easeInQuad(-1)).toBe(0);
|
|
31
|
-
expect(easeOutQuad(2)).toBe(1);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
describe('easeOutQuart', () => {
|
|
35
|
-
it('endpoints', () => endpoints(easeOutQuart));
|
|
36
|
-
it('decelerates strongly (f(0.5) > easeOutQuad(0.5))', () => {
|
|
37
|
-
expect(easeOutQuart(0.5)).toBeGreaterThan(easeOutQuad(0.5));
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
describe('easeInOutQuad', () => {
|
|
41
|
-
it('endpoints', () => endpoints(easeInOutQuad));
|
|
42
|
-
it('symmetric around 0.5', () => {
|
|
43
|
-
expect(easeInOutQuad(0.5)).toBeCloseTo(0.5, 5);
|
|
44
|
-
expect(easeInOutQuad(0.25)).toBeCloseTo(1 - easeInOutQuad(0.75), 5);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
describe('easeOutBack', () => {
|
|
48
|
-
it('endpoints (default overshoot)', () => endpoints(easeOutBack()));
|
|
49
|
-
it('overshoots above 1 before reaching endpoint', () => {
|
|
50
|
-
const fn = easeOutBack();
|
|
51
|
-
let overshot = false;
|
|
52
|
-
for (let t = 0; t <= 1; t += 0.02) {
|
|
53
|
-
if (fn(t) > 1.01)
|
|
54
|
-
overshot = true;
|
|
55
|
-
}
|
|
56
|
-
expect(overshot).toBe(true);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
describe('easeInBack', () => {
|
|
60
|
-
it('endpoints', () => endpoints(easeInBack()));
|
|
61
|
-
it('dips below 0 before settling', () => {
|
|
62
|
-
const fn = easeInBack();
|
|
63
|
-
let dipped = false;
|
|
64
|
-
for (let t = 0; t <= 1; t += 0.02) {
|
|
65
|
-
if (fn(t) < -0.01)
|
|
66
|
-
dipped = true;
|
|
67
|
-
}
|
|
68
|
-
expect(dipped).toBe(true);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
describe('easeInOutBack', () => {
|
|
72
|
-
it('endpoints', () => endpoints(easeInOutBack()));
|
|
73
|
-
it('midpoint is ~0.5', () => {
|
|
74
|
-
expect(easeInOutBack()(0.5)).toBeCloseTo(0.5, 5);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
describe('elastic eases', () => {
|
|
78
|
-
it('endpoints for easeOutElastic', () => endpoints(easeOutElastic()));
|
|
79
|
-
it('endpoints for easeInElastic', () => endpoints(easeInElastic()));
|
|
80
|
-
it('endpoints for easeInOutElastic', () => endpoints(easeInOutElastic()));
|
|
81
|
-
it('oscillates somewhere in the middle', () => {
|
|
82
|
-
const fn = easeOutElastic();
|
|
83
|
-
let above1 = false;
|
|
84
|
-
for (let t = 0; t <= 1; t += 0.01) {
|
|
85
|
-
if (fn(t) > 1.001)
|
|
86
|
-
above1 = true;
|
|
87
|
-
}
|
|
88
|
-
expect(above1).toBe(true);
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
//# sourceMappingURL=eases.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eases.test.js","sourceRoot":"","sources":["../../src/tween/eases.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lerp.test.d.ts","sourceRoot":"","sources":["../../src/tween/lerp.test.ts"],"names":[],"mappings":""}
|
package/dist/tween/lerp.test.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { lerpNumber } from '../tween/lerp';
|
|
3
|
-
describe('lerpNumber', () => {
|
|
4
|
-
it('returns from at t=0 and to at t=1', () => {
|
|
5
|
-
expect(lerpNumber(10, 20, 0)).toBe(10);
|
|
6
|
-
expect(lerpNumber(10, 20, 1)).toBe(20);
|
|
7
|
-
});
|
|
8
|
-
it('interpolates the midpoint at t=0.5', () => {
|
|
9
|
-
expect(lerpNumber(0, 10, 0.5)).toBe(5);
|
|
10
|
-
});
|
|
11
|
-
it('works with descending ranges', () => {
|
|
12
|
-
expect(lerpNumber(20, 0, 0.25)).toBe(15);
|
|
13
|
-
});
|
|
14
|
-
it('extrapolates outside [0,1] (no clamping)', () => {
|
|
15
|
-
expect(lerpNumber(0, 10, 2)).toBe(20);
|
|
16
|
-
expect(lerpNumber(0, 10, -1)).toBe(-10);
|
|
17
|
-
});
|
|
18
|
-
it('handles negative endpoints', () => {
|
|
19
|
-
expect(lerpNumber(-10, 10, 0.5)).toBe(0);
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=lerp.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lerp.test.js","sourceRoot":"","sources":["../../src/tween/lerp.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.test.d.ts","sourceRoot":"","sources":["../../src/tween/prepare.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { prepareNumericTween } from '../tween/prepare';
|
|
3
|
-
describe('prepareNumericTween', () => {
|
|
4
|
-
it('snapshots the start values and interpolates toward the target', () => {
|
|
5
|
-
const target = { x: 0, y: 100 };
|
|
6
|
-
const apply = prepareNumericTween(target, { x: 10, y: 0 });
|
|
7
|
-
apply(0.5);
|
|
8
|
-
expect(target.x).toBe(5);
|
|
9
|
-
expect(target.y).toBe(50);
|
|
10
|
-
});
|
|
11
|
-
it('writes the exact target at t=1', () => {
|
|
12
|
-
const target = { x: 0 };
|
|
13
|
-
const apply = prepareNumericTween(target, { x: 42 });
|
|
14
|
-
apply(1);
|
|
15
|
-
expect(target.x).toBe(42);
|
|
16
|
-
});
|
|
17
|
-
it('leaves the start value at t=0', () => {
|
|
18
|
-
const target = { x: 7 };
|
|
19
|
-
const apply = prepareNumericTween(target, { x: 100 });
|
|
20
|
-
apply(0);
|
|
21
|
-
expect(target.x).toBe(7);
|
|
22
|
-
});
|
|
23
|
-
it('captures the start value at preparation time, not call time', () => {
|
|
24
|
-
const target = { x: 0 };
|
|
25
|
-
const apply = prepareNumericTween(target, { x: 10 });
|
|
26
|
-
// Mutating after prepare must not change the interpolation baseline.
|
|
27
|
-
target.x = 1000;
|
|
28
|
-
apply(0.5);
|
|
29
|
-
expect(target.x).toBe(5);
|
|
30
|
-
});
|
|
31
|
-
it('only touches keys present in the target spec', () => {
|
|
32
|
-
const target = { x: 0, y: 0 };
|
|
33
|
-
const apply = prepareNumericTween(target, { x: 10 });
|
|
34
|
-
apply(1);
|
|
35
|
-
expect(target.y).toBe(0);
|
|
36
|
-
});
|
|
37
|
-
it('ignores undefined target values', () => {
|
|
38
|
-
const target = { x: 5 };
|
|
39
|
-
const apply = prepareNumericTween(target, { x: undefined });
|
|
40
|
-
apply(1);
|
|
41
|
-
expect(target.x).toBe(5);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
//# sourceMappingURL=prepare.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.test.js","sourceRoot":"","sources":["../../src/tween/prepare.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sequence.test.d.ts","sourceRoot":"","sources":["../../src/tween/sequence.test.ts"],"names":[],"mappings":""}
|