@wardic/solid 1.0.0-rc.6 → 1.0.0-rc.8
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/browser/animation-controls.js +1 -1
- package/dist/browser/animation-controls.js.map +1 -1
- package/dist/browser/imperative.js +16 -5
- package/dist/browser/imperative.js.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/presence-controller.js +12 -1
- package/dist/browser/presence-controller.js.map +1 -1
- package/dist/browser/retarget-legs.js +6 -3
- package/dist/browser/retarget-legs.js.map +1 -1
- package/dist/browser/spine.js +37 -13
- package/dist/browser/spine.js.map +1 -1
- package/dist/browser/unstable/v2/ward.js +8 -1
- package/dist/browser/unstable/v2/ward.js.map +1 -1
- package/dist/browser/variant-target.js +6 -1
- package/dist/browser/variant-target.js.map +1 -1
- package/dist/server/animation-controls.js +1 -1
- package/dist/server/animation-controls.js.map +1 -1
- package/dist/server/imperative.js +16 -5
- package/dist/server/imperative.js.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/presence-controller.js +12 -1
- package/dist/server/presence-controller.js.map +1 -1
- package/dist/server/retarget-legs.js +6 -3
- package/dist/server/retarget-legs.js.map +1 -1
- package/dist/server/spine.js +37 -13
- package/dist/server/spine.js.map +1 -1
- package/dist/server/unstable/v2/ward.js +8 -1
- package/dist/server/unstable/v2/ward.js.map +1 -1
- package/dist/server/variant-target.js +6 -1
- package/dist/server/variant-target.js.map +1 -1
- package/dist/solid/animation-controls.d.ts +3 -4
- package/dist/solid/animation-controls.d.ts.map +1 -1
- package/dist/solid/animation-controls.js +1 -1
- package/dist/solid/animation-controls.js.map +1 -1
- package/dist/solid/imperative.d.ts.map +1 -1
- package/dist/solid/imperative.js +17 -5
- package/dist/solid/imperative.js.map +1 -1
- package/dist/solid/index.d.ts +1 -1
- package/dist/solid/index.js +1 -1
- package/dist/solid/presence-controller.d.ts.map +1 -1
- package/dist/solid/presence-controller.js +12 -1
- package/dist/solid/presence-controller.js.map +1 -1
- package/dist/solid/retarget-legs.d.ts.map +1 -1
- package/dist/solid/retarget-legs.js +4 -3
- package/dist/solid/retarget-legs.js.map +1 -1
- package/dist/solid/spine.d.ts +12 -2
- package/dist/solid/spine.d.ts.map +1 -1
- package/dist/solid/spine.js +38 -6
- package/dist/solid/spine.js.map +1 -1
- package/dist/solid/unstable/v2/ward.d.ts.map +1 -1
- package/dist/solid/unstable/v2/ward.jsx +8 -1
- package/dist/solid/unstable/v2/ward.jsx.map +1 -1
- package/dist/solid/variant-target.d.ts +2 -0
- package/dist/solid/variant-target.d.ts.map +1 -1
- package/dist/solid/variant-target.js +3 -1
- package/dist/solid/variant-target.js.map +1 -1
- package/package.json +4 -4
- package/src/animation-controls.ts +4 -2
- package/src/imperative.ts +16 -5
- package/src/index.ts +1 -1
- package/src/presence-controller.ts +13 -2
- package/src/retarget-legs.ts +4 -3
- package/src/spine.ts +47 -9
- package/src/unstable/v2/ward.tsx +8 -1
- package/src/variant-target.ts +7 -1
package/dist/server/spine.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* @module
|
|
16
16
|
*/
|
|
17
17
|
import * as BaseValue from "@wardic/core/BaseValue";
|
|
18
|
+
import * as Frame from "@wardic/core/Frame";
|
|
18
19
|
import * as InterpolatorRegistry from "@wardic/core/InterpolatorRegistry";
|
|
19
20
|
import * as Machine from "@wardic/core/Machine";
|
|
20
21
|
import * as Override from "@wardic/core/Override";
|
|
@@ -484,7 +485,6 @@ const runningOf = (to, resolution, landing, kind) => ({
|
|
|
484
485
|
resolution,
|
|
485
486
|
count: 0,
|
|
486
487
|
values: identity,
|
|
487
|
-
velocities: identity,
|
|
488
488
|
done: false,
|
|
489
489
|
losing: false,
|
|
490
490
|
fiber: undefined,
|
|
@@ -497,7 +497,8 @@ const runningOf = (to, resolution, landing, kind) => ({
|
|
|
497
497
|
lastAt: Number.NEGATIVE_INFINITY,
|
|
498
498
|
last: undefined,
|
|
499
499
|
before: undefined,
|
|
500
|
-
beforeAt: Number.NEGATIVE_INFINITY
|
|
500
|
+
beforeAt: Number.NEGATIVE_INFINITY,
|
|
501
|
+
physics: undefined
|
|
501
502
|
});
|
|
502
503
|
/**
|
|
503
504
|
* A Blend leg's velocity for `key` (#464, Motion's `getVelocity`): its last two frames' change over
|
|
@@ -1318,15 +1319,34 @@ export const emptySnapshotOf = values => ({
|
|
|
1318
1319
|
velocities: {},
|
|
1319
1320
|
drawnAt: {},
|
|
1320
1321
|
owners: undefined,
|
|
1321
|
-
now: frameNow
|
|
1322
|
+
now: frameNow,
|
|
1323
|
+
velocitiesNow: velocitiesNowOf
|
|
1322
1324
|
});
|
|
1323
1325
|
// --- Velocities (#464) ---------------------------------------------------------------------------
|
|
1324
1326
|
/** A leg's velocity for `key`: a Blend leg's from its frames, a Snap's none, a spring's or a follow's as it wrote it. */
|
|
1325
1327
|
const legVelocityOf = (snapshot, running, key) => {
|
|
1326
1328
|
if (running.kind === "Blend") return blendVelocityOf(running, key);
|
|
1327
1329
|
if (running.kind === "Snap") return 0;
|
|
1330
|
+
if (running.kind === "Numbers") return numbersVelocityOf(snapshot, running, key);
|
|
1328
1331
|
return velocityOf(snapshot, key);
|
|
1329
1332
|
};
|
|
1333
|
+
/**
|
|
1334
|
+
* A Numbers leg's velocity for `key` (#663): its last Frame's, as it drew it, by index from a spring's
|
|
1335
|
+
* (whose velocity record it doesn't write), from the record of an inertia's; the Snapshot's before its
|
|
1336
|
+
* first frame, or for a key its Frame doesn't have. Per key, per Retarget: guards.
|
|
1337
|
+
*/
|
|
1338
|
+
const numbersVelocityOf = (snapshot, running, key) => {
|
|
1339
|
+
const last = running.physics;
|
|
1340
|
+
if (Predicate.isUndefined(last)) return velocityOf(snapshot, key);
|
|
1341
|
+
if (Frame.isSpringValues(last)) {
|
|
1342
|
+
const at = last.keys.indexOf(key);
|
|
1343
|
+
if (at < 0) return velocityOf(snapshot, key);
|
|
1344
|
+
return UndefinedOr.getOrThrow(last.velocities[at]);
|
|
1345
|
+
}
|
|
1346
|
+
const velocity = last.velocity[key];
|
|
1347
|
+
if (Predicate.isUndefined(velocity)) return velocityOf(snapshot, key);
|
|
1348
|
+
return velocity;
|
|
1349
|
+
};
|
|
1330
1350
|
/**
|
|
1331
1351
|
* `key`'s velocity at `now` (#464, Motion's `getVelocity`): the leg drawing it, once it has drawn a
|
|
1332
1352
|
* frame, else what the Snapshot holds for it (the last leg to let it go left it, a drag or a seed set
|
|
@@ -1718,7 +1738,6 @@ export const makeElementSpine = options => {
|
|
|
1718
1738
|
if (running.count === 0) return;
|
|
1719
1739
|
const kept = Arr.filter(Rec.keys(running.targets), key => owners.get(key) === running);
|
|
1720
1740
|
running.values = keepingOnly(kept);
|
|
1721
|
-
running.velocities = keepingOnly(kept);
|
|
1722
1741
|
});
|
|
1723
1742
|
losing.length = 0;
|
|
1724
1743
|
};
|
|
@@ -1781,19 +1800,24 @@ export const makeElementSpine = options => {
|
|
|
1781
1800
|
// rather than replacing it, so the drag's direct-set x/y survive alongside the
|
|
1782
1801
|
// spring's keys (drag owns x/y, spring owns the rest) and the post-drag
|
|
1783
1802
|
// handoff continues from the rested position. Only the keys it still draws (#325).
|
|
1803
|
+
// In place, as the Follow sink writes (#659): a spread made two records per element per
|
|
1804
|
+
// frame. The Snapshot's records are always its own (`snapshotOf`, `emptySnapshotOf`), and
|
|
1805
|
+
// whatever keeps one copies it or reads it at once.
|
|
1784
1806
|
const value = running.values(frame.value);
|
|
1785
|
-
snapshot.values
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
snapshot.velocities = {
|
|
1790
|
-
...snapshot.velocities,
|
|
1791
|
-
...running.velocities(frame.velocity)
|
|
1792
|
-
};
|
|
1807
|
+
Object.assign(snapshot.values, value);
|
|
1808
|
+
// Its velocities stay on its Frame (#663), read by index when one is asked for: copied into
|
|
1809
|
+
// the Snapshot each frame, they cost a boxed number a key a frame that only a Retarget read.
|
|
1810
|
+
running.physics = frame;
|
|
1793
1811
|
gate.write(id, value);
|
|
1794
1812
|
recordFrame(value);
|
|
1795
1813
|
drew(running, frame.done, snapshot.now());
|
|
1796
|
-
if (frame.done)
|
|
1814
|
+
if (frame.done) {
|
|
1815
|
+
// Landed, its keys are at rest: the Snapshot says so for whatever reads it after it's gone.
|
|
1816
|
+
Arr.forEach(Rec.keys(value), key => {
|
|
1817
|
+
snapshot.velocities[key] = 0;
|
|
1818
|
+
});
|
|
1819
|
+
landEndsOf(waiting);
|
|
1820
|
+
}
|
|
1797
1821
|
return undefined;
|
|
1798
1822
|
}, running));
|
|
1799
1823
|
}
|