@remotion/player 3.0.0-lambda.2 → 3.0.0-lambda.203

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 (58) hide show
  1. package/dist/Loading.js +3 -5
  2. package/dist/Loading.js.map +1 -1
  3. package/dist/Player.d.ts +6 -1
  4. package/dist/Player.d.ts.map +1 -1
  5. package/dist/Player.js +20 -8
  6. package/dist/Player.js.map +1 -1
  7. package/dist/PlayerSeekBar.d.ts.map +1 -1
  8. package/dist/PlayerSeekBar.js +2 -1
  9. package/dist/PlayerSeekBar.js.map +1 -1
  10. package/dist/PlayerUI.d.ts +4 -0
  11. package/dist/PlayerUI.d.ts.map +1 -1
  12. package/dist/PlayerUI.js +15 -6
  13. package/dist/PlayerUI.js.map +1 -1
  14. package/dist/PredefinedAudioTags.d.ts +11 -0
  15. package/dist/PredefinedAudioTags.d.ts.map +1 -0
  16. package/dist/PredefinedAudioTags.js +98 -0
  17. package/dist/PredefinedAudioTags.js.map +1 -0
  18. package/dist/calculate-next-frame.d.ts +15 -0
  19. package/dist/calculate-next-frame.d.ts.map +1 -0
  20. package/dist/calculate-next-frame.js +29 -0
  21. package/dist/calculate-next-frame.js.map +1 -0
  22. package/dist/error-boundary.d.ts +7 -4
  23. package/dist/error-boundary.d.ts.map +1 -1
  24. package/dist/error-boundary.js +6 -4
  25. package/dist/error-boundary.js.map +1 -1
  26. package/dist/event-emitter.d.ts +7 -2
  27. package/dist/event-emitter.d.ts.map +1 -1
  28. package/dist/event-emitter.js +6 -0
  29. package/dist/event-emitter.js.map +1 -1
  30. package/dist/events.d.ts +1 -0
  31. package/dist/events.d.ts.map +1 -0
  32. package/dist/events.js +2 -0
  33. package/dist/events.js.map +1 -0
  34. package/dist/index.d.ts +5 -2
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/test/validate-prop.test.js +36 -6
  38. package/dist/test/validate-prop.test.js.map +1 -1
  39. package/dist/use-playback.d.ts +2 -1
  40. package/dist/use-playback.d.ts.map +1 -1
  41. package/dist/use-playback.js +32 -32
  42. package/dist/use-playback.js.map +1 -1
  43. package/dist/use-player.d.ts.map +1 -1
  44. package/dist/use-player.js +6 -6
  45. package/dist/use-player.js.map +1 -1
  46. package/dist/utils/use-throttle.d.ts +2 -0
  47. package/dist/utils/use-throttle.d.ts.map +1 -0
  48. package/dist/utils/use-throttle.js +24 -0
  49. package/dist/utils/use-throttle.js.map +1 -0
  50. package/dist/utils/validate-playbackrate.d.ts +2 -0
  51. package/dist/utils/validate-playbackrate.d.ts.map +1 -0
  52. package/dist/utils/validate-playbackrate.js +19 -0
  53. package/dist/utils/validate-playbackrate.js.map +1 -0
  54. package/package.json +4 -4
  55. package/dist/Freeze.d.ts +0 -7
  56. package/dist/Freeze.d.ts.map +0 -1
  57. package/dist/Freeze.js +0 -18
  58. package/dist/Freeze.js.map +0 -1
@@ -7,16 +7,20 @@ declare type ErrorPayload = {
7
7
  declare type TimeUpdateEventPayload = {
8
8
  frame: number;
9
9
  };
10
+ declare type RateChangeEventPayload = {
11
+ playbackRate: number;
12
+ };
10
13
  declare type StateEventMap = {
11
14
  seeked: SeekPayload;
12
15
  pause: undefined;
13
16
  play: undefined;
17
+ ratechange: RateChangeEventPayload;
14
18
  ended: undefined;
15
19
  error: ErrorPayload;
16
20
  timeupdate: TimeUpdateEventPayload;
17
21
  };
18
- declare type EventTypes = keyof StateEventMap;
19
- declare type CallbackListener<T extends EventTypes> = (data: {
22
+ export declare type EventTypes = keyof StateEventMap;
23
+ export declare type CallbackListener<T extends EventTypes> = (data: {
20
24
  detail: StateEventMap[T];
21
25
  }) => void;
22
26
  declare type Listeners = {
@@ -31,6 +35,7 @@ export declare class PlayerEmitter {
31
35
  dispatchPause(): void;
32
36
  dispatchPlay(): void;
33
37
  dispatchEnded(): void;
38
+ dispatchRatechange(playbackRate: number): void;
34
39
  dispatchError(error: Error): void;
35
40
  dispatchTimeUpdate(event: TimeUpdateEventPayload): void;
36
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":"AAAA,aAAK,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,aAAK,YAAY,GAAG;IACnB,KAAK,EAAE,KAAK,CAAC;CACb,CAAC;AAEF,aAAK,sBAAsB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,aAAK,aAAa,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,aAAK,UAAU,GAAG,MAAM,aAAa,CAAC;AAEtC,aAAK,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,EAAE;IACpD,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB,KAAK,IAAI,CAAC;AAEX,aAAK,SAAS,GAAG;KAAE,SAAS,IAAI,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE;CAAC,CAAC;AAE5E,qBAAa,aAAa;IACzB,SAAS,EAAE,SAAS,CAOlB;IAEF,gBAAgB,CAAC,CAAC,SAAS,UAAU,EACpC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAK9B,mBAAmB,CAAC,CAAC,SAAS,UAAU,EACvC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAO9B,OAAO,CAAC,aAAa;IAWrB,YAAY,CAAC,KAAK,EAAE,MAAM;IAM1B,aAAa;IAIb,YAAY;IAIZ,aAAa;IAIb,aAAa,CAAC,KAAK,EAAE,KAAK;IAM1B,kBAAkB,CAAC,KAAK,EAAE,sBAAsB;CAGhD"}
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":"AAAA,aAAK,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,aAAK,YAAY,GAAG;IACnB,KAAK,EAAE,KAAK,CAAC;CACb,CAAC;AAEF,aAAK,sBAAsB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,aAAK,sBAAsB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,aAAK,aAAa,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,oBAAY,UAAU,GAAG,MAAM,aAAa,CAAC;AAE7C,oBAAY,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,IAAI,EAAE;IAC3D,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB,KAAK,IAAI,CAAC;AAEX,aAAK,SAAS,GAAG;KAAE,SAAS,IAAI,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE;CAAC,CAAC;AAE5E,qBAAa,aAAa;IACzB,SAAS,EAAE,SAAS,CAQlB;IAEF,gBAAgB,CAAC,CAAC,SAAS,UAAU,EACpC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAK9B,mBAAmB,CAAC,CAAC,SAAS,UAAU,EACvC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAO9B,OAAO,CAAC,aAAa;IAWrB,YAAY,CAAC,KAAK,EAAE,MAAM;IAM1B,aAAa;IAIb,YAAY;IAIZ,aAAa;IAIb,kBAAkB,CAAC,YAAY,EAAE,MAAM;IAMvC,aAAa,CAAC,KAAK,EAAE,KAAK;IAM1B,kBAAkB,CAAC,KAAK,EAAE,sBAAsB;CAGhD"}
@@ -8,6 +8,7 @@ class PlayerEmitter {
8
8
  error: [],
9
9
  pause: [],
10
10
  play: [],
11
+ ratechange: [],
11
12
  seeked: [],
12
13
  timeupdate: [],
13
14
  };
@@ -37,6 +38,11 @@ class PlayerEmitter {
37
38
  dispatchEnded() {
38
39
  this.dispatchEvent('ended', undefined);
39
40
  }
41
+ dispatchRatechange(playbackRate) {
42
+ this.dispatchEvent('ratechange', {
43
+ playbackRate,
44
+ });
45
+ }
40
46
  dispatchError(error) {
41
47
  this.dispatchEvent('error', {
42
48
  error,
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":";;;AA6BA,MAAa,aAAa;IAA1B;QACC,cAAS,GAAc;YACtB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE;SACd,CAAC;IAwDH,CAAC;IAtDA,gBAAgB,CACf,IAAO,EACP,QAA6B;QAE5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,mBAAmB,CAClB,IAAO,EACP,QAA6B;QAE7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC,SAAS,CACrC,IAAI,CAC+B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IACpE,CAAC;IAEO,aAAa,CACpB,YAAe,EACf,OAAyB;QAExB,IAAI,CAAC,SAAS,CAAC,YAAY,CAA2B,CAAC,OAAO,CAC9D,CAAC,QAAQ,EAAE,EAAE;YACZ,QAAQ,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;QAC7B,CAAC,CACD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAa;QACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC5B,KAAK;SACL,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,YAAY;QACX,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,aAAa,CAAC,KAAY;QACzB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAC3B,KAAK;SACL,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,KAA6B;QAC/C,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;CACD;AAhED,sCAgEC"}
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":";;;AAkCA,MAAa,aAAa;IAA1B;QACC,cAAS,GAAc;YACtB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE;SACd,CAAC;IA8DH,CAAC;IA5DA,gBAAgB,CACf,IAAO,EACP,QAA6B;QAE5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,mBAAmB,CAClB,IAAO,EACP,QAA6B;QAE7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CACnB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEO,aAAa,CACpB,YAAe,EACf,OAAyB;QAExB,IAAI,CAAC,SAAS,CAAC,YAAY,CAA2B,CAAC,OAAO,CAC9D,CAAC,QAAQ,EAAE,EAAE;YACZ,QAAQ,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;QAC7B,CAAC,CACD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAa;QACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC5B,KAAK;SACL,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,YAAY;QACX,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,YAAoB;QACtC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YAChC,YAAY;SACZ,CAAC,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,KAAY;QACzB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAC3B,KAAK;SACL,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,KAA6B;QAC/C,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;CACD;AAvED,sCAuEC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":""}
package/dist/events.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { PlayerEmitter } from './event-emitter';
2
+ import { CallbackListener, EventTypes, PlayerEmitter } from './event-emitter';
3
+ import { ErrorFallback } from './Player';
3
4
  export { Player } from './Player';
4
5
  export { PlayerMethods, PlayerRef } from './player-methods';
5
6
  export { PreviewSize } from './utils/preview-size';
@@ -19,8 +20,9 @@ export declare const PlayerInternals: {
19
20
  getCurrentFrame: () => number;
20
21
  isPlaying: () => boolean;
21
22
  };
22
- usePlayback: ({ loop }: {
23
+ usePlayback: ({ loop, playbackRate, }: {
23
24
  loop: boolean;
25
+ playbackRate: number;
24
26
  }) => void;
25
27
  useElementSize: (ref: import("react").RefObject<HTMLElement>, options: {
26
28
  triggerOnWindowResize: boolean;
@@ -39,4 +41,5 @@ export declare const PlayerInternals: {
39
41
  };
40
42
  useHoverState: (ref: import("react").RefObject<HTMLDivElement>) => boolean;
41
43
  };
44
+ export type { ErrorFallback, CallbackListener, EventTypes };
42
45
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAC5E,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAMvC,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;AAEF,YAAY,EAAC,aAAa,EAAE,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;AAE5E,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"}
@@ -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;CAwHxB,CAAC"}
@@ -6,8 +6,7 @@ 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();
@@ -39,14 +38,14 @@ const usePlayer = () => {
39
38
  imperativePlaying.current = true;
40
39
  setPlaying(true);
41
40
  emitter.dispatchPlay();
42
- }, [isLastFrame, audioContext, setPlaying, emitter, seek]);
41
+ }, [imperativePlaying, isLastFrame, audioContext, setPlaying, emitter, seek]);
43
42
  const pause = (0, react_1.useCallback)(() => {
44
43
  if (imperativePlaying.current) {
45
44
  imperativePlaying.current = false;
46
45
  setPlaying(false);
47
46
  emitter.dispatchPause();
48
47
  }
49
- }, [emitter, setPlaying]);
48
+ }, [emitter, imperativePlaying, setPlaying]);
50
49
  const hasVideo = Boolean(video);
51
50
  const frameBack = (0, react_1.useCallback)((frames) => {
52
51
  if (!hasVideo) {
@@ -58,7 +57,7 @@ const usePlayer = () => {
58
57
  setFrame((f) => {
59
58
  return Math.max(0, f - frames);
60
59
  });
61
- }, [hasVideo, setFrame]);
60
+ }, [hasVideo, imperativePlaying, setFrame]);
62
61
  const frameForward = (0, react_1.useCallback)((frames) => {
63
62
  if (!hasVideo) {
64
63
  return null;
@@ -67,7 +66,7 @@ const usePlayer = () => {
67
66
  return;
68
67
  }
69
68
  setFrame((f) => Math.min(lastFrame, f + frames));
70
- }, [hasVideo, lastFrame, setFrame]);
69
+ }, [hasVideo, imperativePlaying, lastFrame, setFrame]);
71
70
  const returnValue = (0, react_1.useMemo)(() => {
72
71
  return {
73
72
  frameBack,
@@ -85,6 +84,7 @@ const usePlayer = () => {
85
84
  emitter,
86
85
  frameBack,
87
86
  frameForward,
87
+ imperativePlaying,
88
88
  isLastFrame,
89
89
  pause,
90
90
  play,
@@ -1 +1 @@
1
- {"version":3,"file":"use-player.js","sourceRoot":"","sources":["../src/use-player.ts"],"names":[],"mappings":";;;AAAA,iCAA+E;AAC/E,uCAAmC;AACnC,uDAA4D;AAGrD,MAAM,SAAS,GAAG,GAWvB,EAAE;;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,oBAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IACnE,MAAM,iBAAiB,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,oBAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAG,oBAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IAC1D,MAAM,mBAAmB,GAAG,oBAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IACrE,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,oBAAS,CAAC,kBAAkB,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,IAAA,cAAM,GAAU,CAAC;IAClC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,MAAM,KAAK,GAAG,oBAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,oBAAS,CAAC,oBAAoB,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,2CAAyB,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,KAAK,KAAK,SAAS,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE;QACb,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;KAC7D;IAED,MAAM,IAAI,GAAG,IAAA,mBAAW,EACvB,CAAC,QAAgB,EAAE,EAAE;QACpB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,EACD,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAC9B,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,mBAAW,EACvB,CAAC,CAAkB,EAAE,EAAE;QACtB,IAAI,iBAAiB,CAAC,OAAO,EAAE;YAC9B,OAAO;SACP;QAED,IAAI,WAAW,EAAE;YAChB,IAAI,CAAC,CAAC,CAAC,CAAC;SACR;QAED,IAAI,YAAY,IAAI,YAAY,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE;YAC5D,YAAY,CAAC,aAAa,EAAE,CAAC;SAC7B;QAED,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;QACjC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC,EACD,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CACtD,CAAC;IAEF,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC9B,IAAI,iBAAiB,CAAC,OAAO,EAAE;YAC9B,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;YAElC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,CAAC,aAAa,EAAE,CAAC;SACxB;IACF,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,SAAS,GAAG,IAAA,mBAAW,EAC5B,CAAC,MAAc,EAAE,EAAE;QAClB,IAAI,CAAC,QAAQ,EAAE;YACd,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,iBAAiB,CAAC,OAAO,EAAE;YAC9B,OAAO;SACP;QAED,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC,EACD,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACpB,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC/B,CAAC,MAAc,EAAE,EAAE;QAClB,IAAI,CAAC,QAAQ,EAAE;YACd,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,iBAAiB,CAAC,OAAO,EAAE;YAC9B,OAAO;SACP;QAED,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC,EACD,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAC/B,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAChC,OAAO;YACN,SAAS;YACT,YAAY;YACZ,WAAW;YACX,OAAO;YACP,OAAO;YACP,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAiB;YACjD,SAAS,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAkB;SACrD,CAAC;IACH,CAAC,EAAE;QACF,OAAO;QACP,SAAS;QACT,YAAY;QACZ,WAAW;QACX,KAAK;QACL,IAAI;QACJ,OAAO;QACP,IAAI;KACJ,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAjIW,QAAA,SAAS,aAiIpB"}
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 useThrottle: <T>(value: T, interval?: number) => T;
2
+ //# sourceMappingURL=use-throttle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-throttle.d.ts","sourceRoot":"","sources":["../../src/utils/use-throttle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,uCAmBvB,CAAC"}
@@ -0,0 +1,24 @@
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
@@ -0,0 +1 @@
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"}
@@ -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.2+a97302554",
3
+ "version": "3.0.0-lambda.203+6e2dfd14e",
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.2+a97302554"
27
+ "remotion": "3.0.0-lambda.203+6e2dfd14e"
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": "a97302554ea1cc85a8682345f2ace2c30e4a9e8b"
52
+ "gitHead": "6e2dfd14e68f5537f527a5fae8b988db0596fac4"
53
53
  }
package/dist/Freeze.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- declare type FreezeProps = {
3
- frame: number;
4
- };
5
- export declare const Freeze: React.FC<FreezeProps>;
6
- export {};
7
- //# sourceMappingURL=Freeze.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Freeze.d.ts","sourceRoot":"","sources":["../src/Freeze.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,aAAK,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAcxC,CAAC"}
package/dist/Freeze.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Freeze = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const remotion_1 = require("remotion");
7
- const Freeze = (props) => {
8
- const context = react_1.useContext(remotion_1.Internals.Timeline.TimelineContext);
9
- const value = react_1.useMemo(() => {
10
- return {
11
- ...context,
12
- frame: props.frame,
13
- };
14
- }, [context, props.frame]);
15
- return (jsx_runtime_1.jsx(remotion_1.Internals.Timeline.TimelineContext.Provider, Object.assign({ value: value }, { children: props.children }), void 0));
16
- };
17
- exports.Freeze = Freeze;
18
- //# sourceMappingURL=Freeze.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Freeze.js","sourceRoot":"","sources":["../src/Freeze.tsx"],"names":[],"mappings":";;;;AAAA,iCAAiD;AACjD,uCAAyD;AAMlD,MAAM,MAAM,GAA0B,CAAC,KAAK,EAAE,EAAE;IACtD,MAAM,OAAO,GAAG,kBAAU,CAAC,oBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAyB,eAAO,CAAC,GAAG,EAAE;QAChD,OAAO;YACN,GAAG,OAAO;YACV,KAAK,EAAE,KAAK,CAAC,KAAK;SAClB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3B,OAAO,CACN,kBAAC,oBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,kBAAC,KAAK,EAAE,KAAK,gBACvD,KAAK,CAAC,QAAQ,YAC8B,CAC9C,CAAC;AACH,CAAC,CAAC;AAdW,QAAA,MAAM,UAcjB"}