@remotion/player 3.0.0-lambda.25 → 3.0.0-lambda.274

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.
Files changed (59) hide show
  1. package/dist/Freeze.d.ts +7 -0
  2. package/dist/Freeze.d.ts.map +1 -0
  3. package/dist/Freeze.js +18 -0
  4. package/dist/Freeze.js.map +1 -0
  5. package/dist/Loading.d.ts +0 -3
  6. package/dist/Loading.d.ts.map +1 -1
  7. package/dist/Loading.js +0 -21
  8. package/dist/Loading.js.map +1 -1
  9. package/dist/Player.d.ts +8 -1
  10. package/dist/Player.d.ts.map +1 -1
  11. package/dist/Player.js +24 -9
  12. package/dist/Player.js.map +1 -1
  13. package/dist/PlayerUI.d.ts +10 -0
  14. package/dist/PlayerUI.d.ts.map +1 -1
  15. package/dist/PlayerUI.js +24 -8
  16. package/dist/PlayerUI.js.map +1 -1
  17. package/dist/calculate-next-frame.d.ts +15 -0
  18. package/dist/calculate-next-frame.d.ts.map +1 -0
  19. package/dist/calculate-next-frame.js +29 -0
  20. package/dist/calculate-next-frame.js.map +1 -0
  21. package/dist/error-boundary.d.ts +7 -4
  22. package/dist/error-boundary.d.ts.map +1 -1
  23. package/dist/error-boundary.js +6 -4
  24. package/dist/error-boundary.js.map +1 -1
  25. package/dist/event-emitter.d.ts +7 -2
  26. package/dist/event-emitter.d.ts.map +1 -1
  27. package/dist/event-emitter.js +6 -0
  28. package/dist/event-emitter.js.map +1 -1
  29. package/dist/index.d.ts +6 -3
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/player-methods.d.ts +2 -1
  33. package/dist/player-methods.d.ts.map +1 -1
  34. package/dist/test/validate-prop.test.js +36 -6
  35. package/dist/test/validate-prop.test.js.map +1 -1
  36. package/dist/use-playback.d.ts +2 -1
  37. package/dist/use-playback.d.ts.map +1 -1
  38. package/dist/use-playback.js +32 -32
  39. package/dist/use-playback.js.map +1 -1
  40. package/dist/use-player.d.ts.map +1 -1
  41. package/dist/use-player.js +23 -6
  42. package/dist/use-player.js.map +1 -1
  43. package/dist/utils/validate-playbackrate.d.ts +2 -0
  44. package/dist/utils/validate-playbackrate.d.ts.map +1 -0
  45. package/dist/utils/validate-playbackrate.js +19 -0
  46. package/dist/utils/validate-playbackrate.js.map +1 -0
  47. package/package.json +4 -4
  48. package/dist/PredefinedAudioTags.d.ts +0 -11
  49. package/dist/PredefinedAudioTags.d.ts.map +0 -1
  50. package/dist/PredefinedAudioTags.js +0 -98
  51. package/dist/PredefinedAudioTags.js.map +0 -1
  52. package/dist/events.d.ts +0 -1
  53. package/dist/events.d.ts.map +0 -1
  54. package/dist/events.js +0 -2
  55. package/dist/events.js.map +0 -1
  56. package/dist/utils/use-throttle.d.ts +0 -2
  57. package/dist/utils/use-throttle.d.ts.map +0 -1
  58. package/dist/utils/use-throttle.js +0 -24
  59. package/dist/utils/use-throttle.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM9C,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAC,IAAI,EAAC,MAAM,0BAA0B,CAAC;AAE9C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ3B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM5E,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAC,IAAI,EAAC,MAAM,0BAA0B,CAAC;AAE9C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ3B,CAAC;AAEF,YAAY,EAAC,gBAAgB,EAAE,UAAU,EAAC,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;AAAA,uDAAiD;AACjD,uDAA4D;AAC5D,mDAA8C;AAC9C,uDAAgD;AAChD,iDAA2C;AAC3C,6CAAuC;AACvC,+DAAwD;AAExD,mCAAgC;AAAxB,gGAAA,MAAM,OAAA;AAKD,QAAA,eAAe,GAAG;IAC9B,yBAAyB,EAAzB,2CAAyB;IACzB,aAAa,EAAb,6BAAa;IACb,SAAS,EAAT,sBAAS;IACT,WAAW,EAAX,0BAAW;IACX,cAAc,EAAd,iCAAc;IACd,cAAc,EAAd,gCAAc;IACd,aAAa,EAAb,+BAAa;CACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;AAAA,uDAAiD;AACjD,uDAA4D;AAC5D,mDAA4E;AAC5E,uDAAgD;AAChD,iDAA2C;AAC3C,6CAAuC;AACvC,+DAAwD;AAExD,mCAA+C;AAAvC,gGAAA,MAAM,OAAA;AAMD,QAAA,eAAe,GAAG;IAC9B,yBAAyB,EAAzB,2CAAyB;IACzB,aAAa,EAAb,6BAAa;IACb,SAAS,EAAT,sBAAS;IACT,WAAW,EAAX,0BAAW;IACX,cAAc,EAAd,iCAAc;IACd,cAAc,EAAd,gCAAc;IACd,aAAa,EAAb,+BAAa;CACb,CAAC"}
@@ -3,7 +3,7 @@ import { PlayerEmitter } from './event-emitter';
3
3
  export declare type PlayerMethods = {
4
4
  play: (e?: SyntheticEvent) => void;
5
5
  pause: () => void;
6
- toggle: () => void;
6
+ toggle: (e?: SyntheticEvent) => void;
7
7
  seekTo: (frame: number) => void;
8
8
  getContainerNode: () => HTMLDivElement | null;
9
9
  getCurrentFrame: () => number;
@@ -13,6 +13,7 @@ export declare type PlayerMethods = {
13
13
  setVolume: (num: number) => void;
14
14
  getVolume: () => number;
15
15
  isMuted: () => boolean;
16
+ isPlaying: () => boolean;
16
17
  mute: () => void;
17
18
  unmute: () => void;
18
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"player-methods.d.ts","sourceRoot":"","sources":["../src/player-methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,oBAAY,aAAa,GAAG;IAC3B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAC9C,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,oBAAY,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"player-methods.d.ts","sourceRoot":"","sources":["../src/player-methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,oBAAY,aAAa,GAAG;IAC3B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAC9C,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,oBAAY,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC"}
@@ -9,7 +9,7 @@ test('no compositionWidth should give errors', () => {
9
9
  // @ts-expect-error
10
10
  , {
11
11
  // @ts-expect-error
12
- compositionWidth: null, compositionHeight: 400, fps: 30, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true }, void 0));
12
+ compositionWidth: null, errorFallback: () => 'something went wrong', compositionHeight: 400, fps: 30, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true }, void 0));
13
13
  }
14
14
  catch (e) {
15
15
  expect(e.message).toMatch(/'compositionWidth' must be a number but got 'object' instead/);
@@ -17,7 +17,7 @@ test('no compositionWidth should give errors', () => {
17
17
  });
18
18
  test('no compositionHeight should give errors', () => {
19
19
  try {
20
- (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 400,
20
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 400, errorFallback: () => 'something went wrong',
21
21
  // @ts-expect-error
22
22
  compositionHeight: undefined, fps: 30, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true }, void 0));
23
23
  }
@@ -27,7 +27,7 @@ test('no compositionHeight should give errors', () => {
27
27
  });
28
28
  test('No fps should give errors', () => {
29
29
  try {
30
- (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400,
30
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400, errorFallback: () => 'something went wrong',
31
31
  // @ts-expect-error
32
32
  fps: null, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true }, void 0));
33
33
  }
@@ -35,7 +35,7 @@ test('No fps should give errors', () => {
35
35
  expect(e.message).toMatch(/"fps" must be a number, but you passed a value of type object/);
36
36
  }
37
37
  try {
38
- (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400,
38
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400, errorFallback: () => 'something went wrong',
39
39
  // @ts-expect-error
40
40
  fps: undefined, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true }, void 0));
41
41
  }
@@ -45,7 +45,7 @@ test('No fps should give errors', () => {
45
45
  });
46
46
  test('No durationInFrames should give errors', () => {
47
47
  try {
48
- (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400, fps: 30,
48
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400, errorFallback: () => 'something went wrong', fps: 30,
49
49
  // @ts-expect-error
50
50
  durationInFrames: undefined, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true }, void 0));
51
51
  }
@@ -53,6 +53,36 @@ test('No durationInFrames should give errors', () => {
53
53
  expect(e.message).toMatch(/The "durationInFrames" prop of the <Player\/> component must be a number, but you passed a value of type undefined/);
54
54
  }
55
55
  });
56
+ test('Invalid playbackRate should give error', () => {
57
+ try {
58
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400, fps: 30, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true, playbackRate: -5 }, void 0));
59
+ }
60
+ catch (e) {
61
+ expect(e.message).toMatch(/The lowest possible playback rate is -4. You passed: -5/);
62
+ }
63
+ });
64
+ test('playbackRate of 0 should not be possible', () => {
65
+ try {
66
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400, fps: 30, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true, playbackRate: 0 }, void 0));
67
+ }
68
+ catch (e) {
69
+ expect(e.message).toMatch(/A playback rate of 0 is not supported./);
70
+ }
71
+ });
72
+ test('playbackRate of wrong type should not be possible', () => {
73
+ try {
74
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400, fps: 30, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true,
75
+ // @ts-expect-error
76
+ playbackRate: 'hi' }, void 0));
77
+ }
78
+ catch (e) {
79
+ expect(e.message).toMatch(/A playback rate of 0 is not supported./);
80
+ }
81
+ });
82
+ test('playbackRate of undefined should be okay', () => {
83
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, { compositionWidth: 500, compositionHeight: 400, fps: 30, durationInFrames: 500, component: test_utils_1.HelloWorld, controls: true, showVolumeControls: true }, void 0));
84
+ expect(true).toBe(true);
85
+ });
56
86
  test.each([
57
87
  ['controls'],
58
88
  ['loop'],
@@ -65,7 +95,7 @@ test.each([
65
95
  const props = {};
66
96
  props[a] = 'hey';
67
97
  try {
68
- (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, Object.assign({ compositionWidth: 500, compositionHeight: 400, fps: 30, durationInFrames: 100, component: test_utils_1.HelloWorld }, props), void 0));
98
+ (0, test_utils_1.render)((0, jsx_runtime_1.jsx)(index_1.Player, Object.assign({ compositionWidth: 500, compositionHeight: 400, errorFallback: () => 'something went wrong', fps: 30, durationInFrames: 100, component: test_utils_1.HelloWorld }, props), void 0));
69
99
  }
70
100
  catch (e) {
71
101
  expect(e.message).toMatch(`'${a}' must be a boolean or undefined but got 'string' instead`);
@@ -1 +1 @@
1
- {"version":3,"file":"validate-prop.test.js","sourceRoot":"","sources":["../../src/test/validate-prop.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-prop.test.js","sourceRoot":"","sources":["../../src/test/validate-prop.test.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- export declare const usePlayback: ({ loop }: {
1
+ export declare const usePlayback: ({ loop, playbackRate, }: {
2
2
  loop: boolean;
3
+ playbackRate: number;
3
4
  }) => void;
4
5
  //# sourceMappingURL=use-playback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-playback.d.ts","sourceRoot":"","sources":["../src/use-playback.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW;UAAmB,OAAO;UA4GjD,CAAC"}
1
+ {"version":3,"file":"use-playback.d.ts","sourceRoot":"","sources":["../src/use-playback.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW;UAIjB,OAAO;kBACC,MAAM;UAiGpB,CAAC"}
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.usePlayback = void 0;
4
4
  const react_1 = require("react");
5
5
  const remotion_1 = require("remotion");
6
+ const calculate_next_frame_1 = require("./calculate-next-frame");
6
7
  const use_player_1 = require("./use-player");
7
- const usePlayback = ({ loop }) => {
8
+ const usePlayback = ({ loop, playbackRate, }) => {
8
9
  const frame = remotion_1.Internals.Timeline.useTimelinePosition();
9
10
  const config = remotion_1.Internals.useUnsafeVideoConfig();
10
11
  const { playing, pause, emitter } = (0, use_player_1.usePlayer)();
11
12
  const setFrame = remotion_1.Internals.Timeline.useTimelineSetFrame();
12
- const { inFrame, outFrame, } = remotion_1.Internals.Timeline.useTimelineInOutFramePosition();
13
+ const { inFrame, outFrame } = remotion_1.Internals.Timeline.useTimelineInOutFramePosition();
13
14
  const frameRef = (0, react_1.useRef)(frame);
14
15
  frameRef.current = frame;
15
16
  const lastTimeUpdateEvent = (0, react_1.useRef)(null);
@@ -20,32 +21,10 @@ const usePlayback = ({ loop }) => {
20
21
  if (!playing) {
21
22
  return;
22
23
  }
23
- const getFrameInRange = (nextFrame) => {
24
- if ((inFrame && nextFrame < inFrame) ||
25
- (inFrame && outFrame && nextFrame > outFrame)) {
26
- return inFrame;
27
- }
28
- if (outFrame && nextFrame > outFrame) {
29
- return 0;
30
- }
31
- return nextFrame;
32
- };
33
24
  let hasBeenStopped = false;
34
25
  let reqAnimFrameCall = null;
35
26
  const startedTime = performance.now();
36
- const startedFrame = getFrameInRange(frameRef.current);
37
- const durationInFrames = (() => {
38
- if (inFrame !== null && outFrame !== null) {
39
- return outFrame - inFrame + 1;
40
- }
41
- if (inFrame !== null) {
42
- return config.durationInFrames - inFrame;
43
- }
44
- if (outFrame !== null) {
45
- return outFrame + 1;
46
- }
47
- return config.durationInFrames;
48
- })();
27
+ let framesAdvanced = 0;
49
28
  const stop = () => {
50
29
  hasBeenStopped = true;
51
30
  if (reqAnimFrameCall !== null) {
@@ -54,17 +33,28 @@ const usePlayback = ({ loop }) => {
54
33
  };
55
34
  const callback = () => {
56
35
  const time = performance.now() - startedTime;
57
- const nextFrame = Math.round(time / (1000 / config.fps)) + startedFrame - (inFrame !== null && inFrame !== void 0 ? inFrame : 0);
58
- if (nextFrame === config.durationInFrames && !loop) {
36
+ const actualLastFrame = outFrame !== null && outFrame !== void 0 ? outFrame : config.durationInFrames - 1;
37
+ const actualFirstFrame = inFrame !== null && inFrame !== void 0 ? inFrame : 0;
38
+ const { nextFrame, framesToAdvance, hasEnded } = (0, calculate_next_frame_1.calculateNextFrame)({
39
+ time,
40
+ currentFrame: frameRef.current,
41
+ playbackSpeed: playbackRate,
42
+ fps: config.fps,
43
+ actualFirstFrame,
44
+ actualLastFrame,
45
+ framesAdvanced,
46
+ shouldLoop: loop,
47
+ });
48
+ framesAdvanced += framesToAdvance;
49
+ if (nextFrame !== frameRef.current) {
50
+ setFrame(nextFrame);
51
+ }
52
+ if (hasEnded) {
59
53
  stop();
60
54
  pause();
61
55
  emitter.dispatchEnded();
62
56
  return;
63
57
  }
64
- const actualNextFrame = (nextFrame % durationInFrames) + (inFrame !== null && inFrame !== void 0 ? inFrame : 0);
65
- if (actualNextFrame !== frameRef.current) {
66
- setFrame(actualNextFrame);
67
- }
68
58
  if (!hasBeenStopped) {
69
59
  reqAnimFrameCall = requestAnimationFrame(callback);
70
60
  }
@@ -73,7 +63,17 @@ const usePlayback = ({ loop }) => {
73
63
  return () => {
74
64
  stop();
75
65
  };
76
- }, [config, loop, pause, playing, setFrame, emitter, inFrame, outFrame]);
66
+ }, [
67
+ config,
68
+ loop,
69
+ pause,
70
+ playing,
71
+ setFrame,
72
+ emitter,
73
+ playbackRate,
74
+ inFrame,
75
+ outFrame,
76
+ ]);
77
77
  (0, react_1.useEffect)(() => {
78
78
  const interval = setInterval(() => {
79
79
  if (lastTimeUpdateEvent.current === frameRef.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"use-playback.js","sourceRoot":"","sources":["../src/use-playback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-playback.js","sourceRoot":"","sources":["../src/use-playback.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-player.d.ts","sourceRoot":"","sources":["../src/use-player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAA2C,MAAM,OAAO,CAAC;AAG/E,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,eAAO,MAAM,SAAS;wBACD,MAAM,KAAK,IAAI;2BACZ,MAAM,KAAK,IAAI;iBACzB,OAAO;aACX,aAAa;aACb,OAAO;8DACc,IAAI;WAC3B,MAAM,IAAI;qBACA,MAAM,KAAK,IAAI;qBACf,MAAM,MAAM;eAClB,MAAM,OAAO;CAuHxB,CAAC"}
1
+ {"version":3,"file":"use-player.d.ts","sourceRoot":"","sources":["../src/use-player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAA2C,MAAM,OAAO,CAAC;AAG/E,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,eAAO,MAAM,SAAS;wBACD,MAAM,KAAK,IAAI;2BACZ,MAAM,KAAK,IAAI;iBACzB,OAAO;aACX,aAAa;aACb,OAAO;8DACc,IAAI;WAC3B,MAAM,IAAI;qBACA,MAAM,KAAK,IAAI;qBACf,MAAM,MAAM;eAClB,MAAM,OAAO;CA0IxB,CAAC"}
@@ -6,12 +6,12 @@ const remotion_1 = require("remotion");
6
6
  const emitter_context_1 = require("./emitter-context");
7
7
  const usePlayer = () => {
8
8
  var _a;
9
- const [playing, setPlaying] = remotion_1.Internals.Timeline.usePlayingState();
10
- const imperativePlaying = (0, react_1.useRef)(false);
9
+ const [playing, setPlaying, imperativePlaying] = remotion_1.Internals.Timeline.usePlayingState();
11
10
  const frame = remotion_1.Internals.Timeline.useTimelinePosition();
12
11
  const setFrame = remotion_1.Internals.Timeline.useTimelineSetFrame();
13
12
  const setTimelinePosition = remotion_1.Internals.Timeline.useTimelineSetFrame();
14
13
  const audioContext = (0, react_1.useContext)(remotion_1.Internals.SharedAudioContext);
14
+ const { audioAndVideoTags } = (0, react_1.useContext)(remotion_1.Internals.Timeline.TimelineContext);
15
15
  const frameRef = (0, react_1.useRef)();
16
16
  frameRef.current = frame;
17
17
  const video = remotion_1.Internals.useVideo();
@@ -33,20 +33,36 @@ const usePlayer = () => {
33
33
  if (isLastFrame) {
34
34
  seek(0);
35
35
  }
36
+ /**
37
+ * Play silent audio tags to warm them up for autoplay
38
+ */
36
39
  if (audioContext && audioContext.numberOfAudioTags > 0 && e) {
37
40
  audioContext.playAllAudios();
38
41
  }
42
+ /**
43
+ * Play audios and videos directly here so they can benefit from
44
+ * being triggered by a click
45
+ */
46
+ audioAndVideoTags.current.forEach((a) => a.play());
39
47
  imperativePlaying.current = true;
40
48
  setPlaying(true);
41
49
  emitter.dispatchPlay();
42
- }, [isLastFrame, audioContext, setPlaying, emitter, seek]);
50
+ }, [
51
+ imperativePlaying,
52
+ isLastFrame,
53
+ audioContext,
54
+ setPlaying,
55
+ emitter,
56
+ seek,
57
+ audioAndVideoTags,
58
+ ]);
43
59
  const pause = (0, react_1.useCallback)(() => {
44
60
  if (imperativePlaying.current) {
45
61
  imperativePlaying.current = false;
46
62
  setPlaying(false);
47
63
  emitter.dispatchPause();
48
64
  }
49
- }, [emitter, setPlaying]);
65
+ }, [emitter, imperativePlaying, setPlaying]);
50
66
  const hasVideo = Boolean(video);
51
67
  const frameBack = (0, react_1.useCallback)((frames) => {
52
68
  if (!hasVideo) {
@@ -58,7 +74,7 @@ const usePlayer = () => {
58
74
  setFrame((f) => {
59
75
  return Math.max(0, f - frames);
60
76
  });
61
- }, [hasVideo, setFrame]);
77
+ }, [hasVideo, imperativePlaying, setFrame]);
62
78
  const frameForward = (0, react_1.useCallback)((frames) => {
63
79
  if (!hasVideo) {
64
80
  return null;
@@ -67,7 +83,7 @@ const usePlayer = () => {
67
83
  return;
68
84
  }
69
85
  setFrame((f) => Math.min(lastFrame, f + frames));
70
- }, [hasVideo, lastFrame, setFrame]);
86
+ }, [hasVideo, imperativePlaying, lastFrame, setFrame]);
71
87
  const returnValue = (0, react_1.useMemo)(() => {
72
88
  return {
73
89
  frameBack,
@@ -85,6 +101,7 @@ const usePlayer = () => {
85
101
  emitter,
86
102
  frameBack,
87
103
  frameForward,
104
+ imperativePlaying,
88
105
  isLastFrame,
89
106
  pause,
90
107
  play,
@@ -1 +1 @@
1
- {"version":3,"file":"use-player.js","sourceRoot":"","sources":["../src/use-player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-player.js","sourceRoot":"","sources":["../src/use-player.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const validatePlaybackRate: (playbackRate: number | undefined) => void;
2
+ //# sourceMappingURL=validate-playbackrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-playbackrate.d.ts","sourceRoot":"","sources":["../../src/utils/validate-playbackrate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,iBAAkB,MAAM,GAAG,SAAS,SAoBpE,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validatePlaybackRate = void 0;
4
+ const validatePlaybackRate = (playbackRate) => {
5
+ if (playbackRate === undefined) {
6
+ return;
7
+ }
8
+ if (playbackRate > 4) {
9
+ throw new Error(`The highest possible playback rate is 4. You passed: ${playbackRate}`);
10
+ }
11
+ if (playbackRate < -4) {
12
+ throw new Error(`The lowest possible playback rate is -4. You passed: ${playbackRate}`);
13
+ }
14
+ if (playbackRate === 0) {
15
+ throw new Error(`A playback rate of 0 is not supported.`);
16
+ }
17
+ };
18
+ exports.validatePlaybackRate = validatePlaybackRate;
19
+ //# sourceMappingURL=validate-playbackrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-playbackrate.js","sourceRoot":"","sources":["../../src/utils/validate-playbackrate.ts"],"names":[],"mappings":";;;AAAO,MAAM,oBAAoB,GAAG,CAAC,YAAgC,EAAE,EAAE;IACxE,IAAI,YAAY,KAAK,SAAS,EAAE;QAC/B,OAAO;KACP;IAED,IAAI,YAAY,GAAG,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,CACd,wDAAwD,YAAY,EAAE,CACtE,CAAC;KACF;IAED,IAAI,YAAY,GAAG,CAAC,CAAC,EAAE;QACtB,MAAM,IAAI,KAAK,CACd,wDAAwD,YAAY,EAAE,CACtE,CAAC;KACF;IAED,IAAI,YAAY,KAAK,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC1D;AACF,CAAC,CAAC;AApBW,QAAA,oBAAoB,wBAoB/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/player",
3
- "version": "3.0.0-lambda.25+9573ee628",
3
+ "version": "3.0.0-lambda.274+a3183304a",
4
4
  "description": "Remotion Player",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -24,7 +24,7 @@
24
24
  ],
25
25
  "license": "SEE LICENSE IN LICENSE.md",
26
26
  "dependencies": {
27
- "remotion": "3.0.0-lambda.25+9573ee628"
27
+ "remotion": "3.0.0-lambda.274+a3183304a"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "react": ">=16.8.0",
@@ -44,10 +44,10 @@
44
44
  "prettier-plugin-organize-imports": "^1.1.1",
45
45
  "ts-jest": "^27.0.5",
46
46
  "typescript": "^4.4.2",
47
- "webpack": "^5.21.2"
47
+ "webpack": "5.60.0"
48
48
  },
49
49
  "publishConfig": {
50
50
  "access": "public"
51
51
  },
52
- "gitHead": "9573ee62895a25e1aecd13ae2221ca2ea16495f6"
52
+ "gitHead": "a3183304a37b03504e6192bb9a05624da48a3bd0"
53
53
  }
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import { RemotionAudioProps } from 'remotion';
3
- declare type AudioElem = {
4
- id: number;
5
- props: RemotionAudioProps;
6
- el: React.RefObject<HTMLAudioElement>;
7
- };
8
- export declare const SharedAudioContextProvider: React.FC;
9
- export declare const useSharedAudio: (aud: RemotionAudioProps) => AudioElem;
10
- export {};
11
- //# sourceMappingURL=PredefinedAudioTags.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PredefinedAudioTags.d.ts","sourceRoot":"","sources":["../src/PredefinedAudioTags.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AACf,OAAO,EAAC,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAE5C,aAAK,SAAS,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,kBAAkB,CAAC;IAC1B,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;CACtC,CAAC;AAsBF,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EA4F9C,CAAC;AAEF,eAAO,MAAM,cAAc,QAAS,kBAAkB,cAgBrD,CAAC"}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useSharedAudio = exports.SharedAudioContextProvider = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const SharedAudioContext = react_1.createContext({
7
- registerAudio: () => {
8
- throw new Error('sharedaudiocontext not mounted');
9
- },
10
- unregisterAudio: () => {
11
- throw new Error('sharedaudiocontext not mounted');
12
- },
13
- updateAudio: () => {
14
- throw new Error('sharedaudiocontext not mounted');
15
- },
16
- });
17
- const numberOfAudios = 5;
18
- const SharedAudioContextProvider = ({ children }) => {
19
- const [, setAudios] = react_1.useState([]);
20
- const refs = react_1.useMemo(() => {
21
- return new Array(numberOfAudios).fill(true).map(() => {
22
- return { id: Math.random(), ref: react_1.createRef() };
23
- });
24
- }, []);
25
- const [takenAudios, setTakenAudios] = react_1.useState(() => new Array(numberOfAudios).fill(false));
26
- const registerAudio = react_1.useCallback((aud) => {
27
- const firstFreeAudio = takenAudios.findIndex((a) => a === false);
28
- if (firstFreeAudio === -1) {
29
- throw new Error('Trying to register more than XXX audio elements at the same time');
30
- }
31
- setTakenAudios((prevTaken) => {
32
- const cloned = [...prevTaken];
33
- cloned[firstFreeAudio] = true;
34
- return cloned;
35
- });
36
- const { id, ref } = refs[firstFreeAudio];
37
- const newElem = {
38
- props: aud,
39
- id,
40
- el: ref,
41
- };
42
- setAudios((prevAudios) => [...prevAudios, newElem]);
43
- return newElem;
44
- }, [refs, takenAudios]);
45
- const unregisterAudio = react_1.useCallback((id) => {
46
- setTakenAudios((prevTaken) => {
47
- const cloned = [...prevTaken];
48
- const index = refs.findIndex((r) => r.id === id);
49
- if (index === -1) {
50
- throw new TypeError('unregister audio');
51
- }
52
- cloned[index] = false;
53
- return cloned;
54
- });
55
- setAudios((prevAudios) => {
56
- return prevAudios.filter((a) => a.id !== id);
57
- });
58
- }, [refs]);
59
- const updateAudio = react_1.useCallback((id, aud) => {
60
- setAudios((prevAudios) => {
61
- return prevAudios.map((prevA) => {
62
- if (prevA.id === id) {
63
- return {
64
- ...prevA,
65
- props: aud,
66
- };
67
- }
68
- return prevA;
69
- });
70
- });
71
- }, []);
72
- const value = react_1.useMemo(() => {
73
- return {
74
- registerAudio,
75
- unregisterAudio,
76
- updateAudio,
77
- };
78
- }, [registerAudio, unregisterAudio, updateAudio]);
79
- return (jsx_runtime_1.jsxs(SharedAudioContext.Provider, Object.assign({ value: value }, { children: [refs.map(({ id, ref }) => {
80
- return jsx_runtime_1.jsx("audio", { ref: ref }, id);
81
- }), children] }), void 0));
82
- };
83
- exports.SharedAudioContextProvider = SharedAudioContextProvider;
84
- const useSharedAudio = (aud) => {
85
- const ctx = react_1.useContext(SharedAudioContext);
86
- const [elem] = react_1.useState(() => ctx.registerAudio(aud));
87
- react_1.useLayoutEffect(() => {
88
- return () => {
89
- ctx.unregisterAudio(elem.id);
90
- };
91
- }, [ctx, elem.id]);
92
- react_1.useLayoutEffect(() => {
93
- ctx.updateAudio(elem.id, aud);
94
- }, [aud, ctx, elem.id]);
95
- return elem;
96
- };
97
- exports.useSharedAudio = useSharedAudio;
98
- //# sourceMappingURL=PredefinedAudioTags.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PredefinedAudioTags.js","sourceRoot":"","sources":["../src/PredefinedAudioTags.tsx"],"names":[],"mappings":"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"}
package/dist/events.d.ts DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":""}
package/dist/events.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export declare const useThrottle: <T>(value: T, interval?: number) => T;
2
- //# sourceMappingURL=use-throttle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-throttle.d.ts","sourceRoot":"","sources":["../../src/utils/use-throttle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,uCAmBvB,CAAC"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useThrottle = void 0;
4
- const react_1 = require("react");
5
- const useThrottle = (value, interval = 250) => {
6
- const [throttledValue, setThrottledValue] = react_1.useState(value);
7
- const lastExecuted = react_1.useRef(Date.now());
8
- react_1.useEffect(() => {
9
- if (Date.now() >= lastExecuted.current + interval) {
10
- lastExecuted.current = Date.now();
11
- setThrottledValue(value);
12
- }
13
- else {
14
- const timerId = setTimeout(() => {
15
- lastExecuted.current = Date.now();
16
- setThrottledValue(value);
17
- }, interval);
18
- return () => clearTimeout(timerId);
19
- }
20
- }, [value, interval]);
21
- return throttledValue;
22
- };
23
- exports.useThrottle = useThrottle;
24
- //# sourceMappingURL=use-throttle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-throttle.js","sourceRoot":"","sources":["../../src/utils/use-throttle.ts"],"names":[],"mappings":";;;AAAA,iCAAkD;AAE3C,MAAM,WAAW,GAAG,CAAI,KAAQ,EAAE,QAAQ,GAAG,GAAG,EAAK,EAAE;IAC7D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,gBAAQ,CAAI,KAAK,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,cAAM,CAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEhD,iBAAS,CAAC,GAAG,EAAE;QACd,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC,OAAO,GAAG,QAAQ,EAAE;YAClD,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACzB;aAAM;YACN,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEb,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACnC;IACF,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtB,OAAO,cAAc,CAAC;AACvB,CAAC,CAAC;AAnBW,QAAA,WAAW,eAmBtB"}