@flighthq/timeline 0.3.0-next.1220.6982c21 → 0.3.0-next.1248.f867198

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 CHANGED
@@ -1,2 +1,2 @@
1
- export { addTimelineFrameScript, createTimeline, createTimelineSource, disposeTimelineSignals, enableTimelineSignals, findTimelineLabel, getTimelineCurrentLabel, getTimelineFrameScript, gotoAndPlayTimeline, gotoAndStopTimeline, nextFrameTimeline, playTimeline, prevFrameTimeline, removeTimelineFrameScript, stopTimeline, updateTimeline, } from './contract';
1
+ export { addTimelineFrameScript, clearTimelineFrameScripts, createTimeline, createTimelineSource, disposeTimelineSignals, enableTimelineSignals, findTimelineLabel, getTimelineCurrentLabel, getTimelineFrameScript, getTimelineFrameScriptFrames, getTimelineLabels, gotoAndPlayTimeline, gotoAndStopTimeline, nextFrameTimeline, playTimeline, prevFrameTimeline, removeTimelineFrameScript, stopTimeline, updateTimeline, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { addTimelineFrameScript, createTimeline, createTimelineSource, disposeTimelineSignals, enableTimelineSignals, findTimelineLabel, getTimelineCurrentLabel, getTimelineFrameScript, gotoAndPlayTimeline, gotoAndStopTimeline, nextFrameTimeline, playTimeline, prevFrameTimeline, removeTimelineFrameScript, stopTimeline, updateTimeline, } from './contract';
1
+ export { addTimelineFrameScript, clearTimelineFrameScripts, createTimeline, createTimelineSource, disposeTimelineSignals, enableTimelineSignals, findTimelineLabel, getTimelineCurrentLabel, getTimelineFrameScript, getTimelineFrameScriptFrames, getTimelineLabels, gotoAndPlayTimeline, gotoAndStopTimeline, nextFrameTimeline, playTimeline, prevFrameTimeline, removeTimelineFrameScript, stopTimeline, updateTimeline, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Node2D, FrameScript, Timeline, TimelineLabel, TimelineSignals, TimelineSource } from '@flighthq/types/contract';
2
2
  export declare function addTimelineFrameScript(timeline: Timeline, frame: number | string, script: FrameScript): void;
3
+ export declare function clearTimelineFrameScripts(timeline: Timeline): void;
3
4
  export declare function createTimeline(obj?: Partial<Timeline>): Timeline;
4
5
  export declare function createTimelineSource(obj: {
5
6
  totalFrames?: number;
@@ -12,6 +13,8 @@ export declare function enableTimelineSignals(timeline: Timeline): TimelineSigna
12
13
  export declare function findTimelineLabel(timeline: Readonly<Timeline>, name: string): TimelineLabel | null;
13
14
  export declare function getTimelineCurrentLabel(timeline: Readonly<Timeline>): TimelineLabel | null;
14
15
  export declare function getTimelineFrameScript(timeline: Readonly<Timeline>, frame: number | string): FrameScript | null;
16
+ export declare function getTimelineFrameScriptFrames(timeline: Readonly<Timeline>): readonly number[];
17
+ export declare function getTimelineLabels(timeline: Readonly<Timeline>): readonly TimelineLabel[];
15
18
  export declare function gotoAndPlayTimeline(timeline: Timeline, frame: number | string): void;
16
19
  export declare function gotoAndStopTimeline(timeline: Timeline, frame: number | string): void;
17
20
  export declare function nextFrameTimeline(timeline: Timeline): void;
@@ -19,5 +22,5 @@ export declare function playTimeline(timeline: Timeline): void;
19
22
  export declare function prevFrameTimeline(timeline: Timeline): void;
20
23
  export declare function removeTimelineFrameScript(timeline: Timeline, frame: number | string): void;
21
24
  export declare function stopTimeline(timeline: Timeline): void;
22
- export declare function updateTimeline(timeline: Timeline, deltaTime: number): void;
25
+ export declare function updateTimeline(timeline: Timeline, deltaTime: number): boolean;
23
26
  //# sourceMappingURL=timeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,QAAQ,EAER,aAAa,EACb,eAAe,EACf,cAAc,EACf,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAG5G;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAYhE;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D,GAAG,cAAc,CAOjB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/D;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAEzE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAElG;AAID,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,aAAa,GAAG,IAAI,CAU1F;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAI/G;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAG1D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAIrD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAG1D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK1F;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAErD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAS1E"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,QAAQ,EAER,aAAa,EACb,eAAe,EACf,cAAc,EACf,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAG5G;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElE;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAYhE;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D,GAAG,cAAc,CAOjB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/D;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAEzE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAElG;AAID,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,aAAa,GAAG,IAAI,CAU1F;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAI/G;AAID,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,MAAM,EAAE,CAE5F;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,aAAa,EAAE,CAExF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAG1D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAIrD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAG1D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK1F;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAErD;AAMD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAU7E"}
package/dist/timeline.js CHANGED
@@ -3,6 +3,9 @@ export function addTimelineFrameScript(timeline, frame, script) {
3
3
  const resolved = resolveFrame(timeline, frame);
4
4
  (timeline.frameScripts ??= new Map()).set(resolved, script);
5
5
  }
6
+ export function clearTimelineFrameScripts(timeline) {
7
+ timeline.frameScripts = null;
8
+ }
6
9
  export function createTimeline(obj) {
7
10
  return {
8
11
  source: obj?.source ?? null,
@@ -59,6 +62,14 @@ export function getTimelineFrameScript(timeline, frame) {
59
62
  const resolved = resolveFrame(timeline, frame);
60
63
  return timeline.frameScripts.get(resolved) ?? null;
61
64
  }
65
+ // Lists authored script frames in their insertion order. Returns a shared empty-array sentinel when
66
+ // none are attached; the returned non-empty array is a snapshot and cannot mutate the timeline's Map.
67
+ export function getTimelineFrameScriptFrames(timeline) {
68
+ return timeline.frameScripts === null ? EMPTY_FRAMES : [...timeline.frameScripts.keys()];
69
+ }
70
+ export function getTimelineLabels(timeline) {
71
+ return timeline.source?.labels ?? EMPTY_LABELS;
72
+ }
62
73
  export function gotoAndPlayTimeline(timeline, frame) {
63
74
  playTimeline(timeline);
64
75
  seekTimeline(timeline, resolveFrame(timeline, frame));
@@ -92,16 +103,22 @@ export function removeTimelineFrameScript(timeline, frame) {
92
103
  export function stopTimeline(timeline) {
93
104
  timeline.isPlaying = false;
94
105
  }
106
+ // Returns whether this call realized a new frame (constructFrame/scripts/signals), not merely whether
107
+ // the numeric playhead was advanced. Timed sources advance before realization, so currentFrame is the
108
+ // realized frame on return. A frameRate-null source realizes currentFrame first and then advances its
109
+ // playhead for the next call, so currentFrame reads one ahead of lastFrameUpdate between updates.
95
110
  export function updateTimeline(timeline, deltaTime) {
96
111
  const frameRate = getTimelineFrameRate(timeline);
97
112
  if (timeline.isPlaying && frameRate !== null) {
98
113
  timeline.currentFrame = advanceFrame(timeline, deltaTime);
99
114
  }
100
- fireConstructFrame(timeline);
115
+ const changed = fireConstructFrame(timeline);
101
116
  if (timeline.isPlaying && frameRate === null) {
102
117
  timeline.currentFrame = advanceFrame(timeline, deltaTime);
103
118
  }
119
+ return changed;
104
120
  }
121
+ const EMPTY_FRAMES = [];
105
122
  const EMPTY_LABELS = [];
106
123
  function noopConstructFrame() { }
107
124
  // Frame accounting matches Flash/OpenFL: when accumulated time spans multiple frames in one update,
@@ -167,7 +184,7 @@ function fireConstructFrame(timeline) {
167
184
  const previous = timeline.lastFrameUpdate;
168
185
  const current = timeline.currentFrame;
169
186
  if (current === previous)
170
- return;
187
+ return false;
171
188
  const signals = timeline.signals;
172
189
  const target = timeline.target;
173
190
  const frameEvent = { frame: current, previousFrame: previous };
@@ -185,13 +202,11 @@ function fireConstructFrame(timeline) {
185
202
  }
186
203
  if (signals !== null)
187
204
  emitSignal(signals.onFrameConstructed, frameEvent);
205
+ return true;
188
206
  }
189
207
  function getTimelineFrameRate(timeline) {
190
208
  return timeline.source?.frameRate ?? null;
191
209
  }
192
- function getTimelineLabels(timeline) {
193
- return timeline.source?.labels ?? EMPTY_LABELS;
194
- }
195
210
  function getTimelineTotalFrames(timeline) {
196
211
  return timeline.source?.totalFrames ?? 1;
197
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/timeline",
3
- "version": "0.3.0-next.1220.6982c21",
3
+ "version": "0.3.0-next.1248.f867198",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -36,8 +36,8 @@
36
36
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
37
37
  },
38
38
  "dependencies": {
39
- "@flighthq/signals": "0.3.0-next.1220.6982c21",
40
- "@flighthq/types": "0.3.0-next.1220.6982c21"
39
+ "@flighthq/signals": "0.3.0-next.1248.f867198",
40
+ "@flighthq/types": "0.3.0-next.1248.f867198"
41
41
  },
42
42
  "devDependencies": {
43
43
  "typescript": "^5.3.0"
@@ -2,6 +2,7 @@ import type { Node2D, Timeline } from '@flighthq/types/contract';
2
2
 
3
3
  import {
4
4
  addTimelineFrameScript,
5
+ clearTimelineFrameScripts,
5
6
  createTimeline,
6
7
  createTimelineSource,
7
8
  disposeTimelineSignals,
@@ -9,6 +10,8 @@ import {
9
10
  findTimelineLabel,
10
11
  getTimelineCurrentLabel,
11
12
  getTimelineFrameScript,
13
+ getTimelineFrameScriptFrames,
14
+ getTimelineLabels,
12
15
  gotoAndPlayTimeline,
13
16
  gotoAndStopTimeline,
14
17
  nextFrameTimeline,
@@ -77,6 +80,25 @@ describe('addTimelineFrameScript', () => {
77
80
  });
78
81
  });
79
82
 
83
+ describe('clearTimelineFrameScripts', () => {
84
+ it('is an idempotent no-op when no scripts are attached', () => {
85
+ const t = make();
86
+ clearTimelineFrameScripts(t);
87
+ expect(t.frameScripts).toBeNull();
88
+ });
89
+
90
+ it('clears every attached script and restores the null storage sentinel', () => {
91
+ const t = make();
92
+ addTimelineFrameScript(t, 1, () => {});
93
+ addTimelineFrameScript(t, 3, () => {});
94
+ clearTimelineFrameScripts(t);
95
+ expect(t.frameScripts).toBeNull();
96
+ expect(getTimelineFrameScriptFrames(t)).toEqual([]);
97
+ expect(getTimelineFrameScript(t, 1)).toBeNull();
98
+ expect(getTimelineFrameScript(t, 3)).toBeNull();
99
+ });
100
+ });
101
+
80
102
  describe('createTimeline', () => {
81
103
  it('starts at frame 1, stopped, lastFrameUpdate -1', () => {
82
104
  const t = make();
@@ -300,6 +322,37 @@ describe('getTimelineFrameScript', () => {
300
322
  });
301
323
  });
302
324
 
325
+ describe('getTimelineFrameScriptFrames', () => {
326
+ it('returns an empty-array sentinel when no scripts are attached', () => {
327
+ expect(getTimelineFrameScriptFrames(make())).toEqual([]);
328
+ });
329
+
330
+ it('returns a snapshot of authored frames in insertion order', () => {
331
+ const t = make();
332
+ addTimelineFrameScript(t, 3, () => {});
333
+ addTimelineFrameScript(t, 1, () => {});
334
+ const frames = getTimelineFrameScriptFrames(t) as number[];
335
+ expect(frames).toEqual([3, 1]);
336
+ frames.push(2);
337
+ expect(getTimelineFrameScriptFrames(t)).toEqual([3, 1]);
338
+ });
339
+ });
340
+
341
+ describe('getTimelineLabels', () => {
342
+ it('returns an empty-array sentinel when the timeline has no labels', () => {
343
+ expect(getTimelineLabels(createTimeline())).toEqual([]);
344
+ });
345
+
346
+ it('returns the source label list as a read-only view', () => {
347
+ const labels = [
348
+ { name: 'idle', frame: 1 },
349
+ { name: 'run', frame: 3 },
350
+ ];
351
+ const t = make({ labels });
352
+ expect(getTimelineLabels(t)).toBe(labels);
353
+ });
354
+ });
355
+
303
356
  describe('gotoAndPlayTimeline', () => {
304
357
  it('seeks to frame and starts playing', () => {
305
358
  const t = make();
@@ -438,18 +491,39 @@ describe('updateTimeline', () => {
438
491
  it('fires constructFrame for frame 1 on first update even when stopped', () => {
439
492
  const frames: number[] = [];
440
493
  const t = make({ constructFrame: (f) => frames.push(f) });
441
- updateTimeline(t, 0);
494
+ expect(updateTimeline(t, 0)).toBe(true);
442
495
  expect(frames).toEqual([1]);
443
496
  });
444
497
 
445
498
  it('does not double-fire constructFrame on repeated stopped updates', () => {
446
499
  const frames: number[] = [];
447
500
  const t = make({ constructFrame: (f) => frames.push(f) });
448
- updateTimeline(t, 0);
449
- updateTimeline(t, 0);
501
+ expect(updateTimeline(t, 0)).toBe(true);
502
+ expect(updateTimeline(t, 0)).toBe(false);
450
503
  expect(frames).toEqual([1]);
451
504
  });
452
505
 
506
+ it('returns false when a timed update accumulates time without realizing another frame', () => {
507
+ const t = make({ frameRate: 10 }); // 100ms/frame
508
+ playTimeline(t);
509
+ expect(updateTimeline(t, 0)).toBe(true); // realizes the initial frame
510
+ expect(updateTimeline(t, 50)).toBe(false);
511
+ expect(updateTimeline(t, 50)).toBe(true);
512
+ });
513
+
514
+ it('reports the realized frame before frameRate-null advances its next-call playhead', () => {
515
+ const frames: number[] = [];
516
+ const t = make({ frameRate: null, constructFrame: (f) => frames.push(f) });
517
+ playTimeline(t);
518
+ expect(updateTimeline(t, 0)).toBe(true);
519
+ expect(t.lastFrameUpdate).toBe(1);
520
+ expect(t.currentFrame).toBe(2);
521
+ expect(updateTimeline(t, 0)).toBe(true);
522
+ expect(t.lastFrameUpdate).toBe(2);
523
+ expect(t.currentFrame).toBe(3);
524
+ expect(frames).toEqual([1, 2]);
525
+ });
526
+
453
527
  it('advances one frame per update when frameRate is null', () => {
454
528
  const frames: number[] = [];
455
529
  const t = make({ frameRate: null, constructFrame: (f) => frames.push(f) });