@glissade/player 0.11.0-pre.0 → 0.11.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/index.d.ts +4 -1
- package/dist/index.js +15 -3
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Marker, Playhead, Timeline } from "@glissade/core";
|
|
1
|
+
import { Marker, Playhead, ReadonlySignal, Timeline } from "@glissade/core";
|
|
2
2
|
import { Scene } from "@glissade/scene";
|
|
3
3
|
import { Canvas2DBackend } from "@glissade/backend-canvas2d";
|
|
4
4
|
|
|
@@ -116,6 +116,9 @@ interface Player {
|
|
|
116
116
|
readonly playhead: Playhead;
|
|
117
117
|
readonly duration: number;
|
|
118
118
|
readonly playing: boolean;
|
|
119
|
+
/** Reactive `playing` — observers re-render on a play/pause/settle transition
|
|
120
|
+
* (the playhead doesn't move on pause, so the `playing` getter alone goes stale). */
|
|
121
|
+
readonly playingSignal: ReadonlySignal<boolean>;
|
|
119
122
|
rate: number;
|
|
120
123
|
play(opts?: {
|
|
121
124
|
range?: [number, number];
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buildFontRegistry, compileTimeline } from "@glissade/core";
|
|
1
|
+
import { buildFontRegistry, compileTimeline, signal } from "@glissade/core";
|
|
2
2
|
import { evaluate, validateSceneFonts } from "@glissade/scene";
|
|
3
3
|
import { Canvas2DBackend } from "@glissade/backend-canvas2d";
|
|
4
4
|
//#region src/driver.ts
|
|
@@ -61,6 +61,12 @@ function scrollDriver(opts) {
|
|
|
61
61
|
}
|
|
62
62
|
//#endregion
|
|
63
63
|
//#region src/player.ts
|
|
64
|
+
/**
|
|
65
|
+
* The Player (DESIGN.md §4.2): composes a clock Driver with playback policy.
|
|
66
|
+
* The only stateful object in the runtime; its state is rate, loop mode, and
|
|
67
|
+
* a base-time offset. Time-based, never frame-counted — a dropped frame skips
|
|
68
|
+
* ahead, it never drifts.
|
|
69
|
+
*/
|
|
64
70
|
/** §A.1: machine and Player track-target sets must be statically disjoint. */
|
|
65
71
|
var TargetOverlapError = class extends Error {
|
|
66
72
|
constructor(overlaps) {
|
|
@@ -80,6 +86,11 @@ function createPlayer(init, opts = {}) {
|
|
|
80
86
|
const cueCallbacks = /* @__PURE__ */ new Map();
|
|
81
87
|
let rate = opts.rate ?? 1;
|
|
82
88
|
let playing = false;
|
|
89
|
+
const playingSig = signal(false);
|
|
90
|
+
const setPlaying = (v) => {
|
|
91
|
+
playing = v;
|
|
92
|
+
playingSig.set(v);
|
|
93
|
+
};
|
|
83
94
|
let driverRunning = false;
|
|
84
95
|
let ownTargets = new Set(init.targets ?? []);
|
|
85
96
|
const machines = [];
|
|
@@ -100,7 +111,7 @@ function createPlayer(init, opts = {}) {
|
|
|
100
111
|
}
|
|
101
112
|
}
|
|
102
113
|
function settle(completed) {
|
|
103
|
-
|
|
114
|
+
setPlaying(false);
|
|
104
115
|
elapsedOrigin = null;
|
|
105
116
|
const resolve = resolveFinished;
|
|
106
117
|
resolveFinished = null;
|
|
@@ -163,6 +174,7 @@ function createPlayer(init, opts = {}) {
|
|
|
163
174
|
get playing() {
|
|
164
175
|
return playing;
|
|
165
176
|
},
|
|
177
|
+
playingSignal: playingSig,
|
|
166
178
|
get rate() {
|
|
167
179
|
return rate;
|
|
168
180
|
},
|
|
@@ -180,7 +192,7 @@ function createPlayer(init, opts = {}) {
|
|
|
180
192
|
playhead.set(base);
|
|
181
193
|
elapsedOrigin = null;
|
|
182
194
|
loopsDone = 0;
|
|
183
|
-
|
|
195
|
+
setPlaying(true);
|
|
184
196
|
ensureDriver();
|
|
185
197
|
return { finished: new Promise((resolve) => {
|
|
186
198
|
resolveFinished = resolve;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glissade/player",
|
|
3
|
-
"version": "0.11.0
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "glissade embed runtime: Player, Drivers (clock, scroll), mount().",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"engines": {
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"dist"
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@glissade/backend-canvas2d": "0.11.0
|
|
22
|
-
"@glissade/core": "0.11.0
|
|
23
|
-
"@glissade/scene": "0.11.0
|
|
21
|
+
"@glissade/backend-canvas2d": "0.11.0",
|
|
22
|
+
"@glissade/core": "0.11.0",
|
|
23
|
+
"@glissade/scene": "0.11.0"
|
|
24
24
|
},
|
|
25
25
|
"repository": {
|
|
26
26
|
"type": "git",
|