remotion 3.0.8 → 3.0.11

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 (240) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/Img.js +26 -20
  3. package/dist/config/index.d.ts +2 -2
  4. package/dist/index.d.ts +3 -2
  5. package/dist/index.js +3 -2
  6. package/dist/internals.d.ts +8 -6
  7. package/dist/internals.js +2 -0
  8. package/dist/validate-media-props.d.ts +2 -1
  9. package/dist/video/OffthreadVideo.d.ts +3 -0
  10. package/dist/video/OffthreadVideo.js +25 -0
  11. package/dist/video/OffthreadVideoForRendering.d.ts +3 -0
  12. package/dist/video/OffthreadVideoForRendering.js +87 -0
  13. package/dist/video/Video.d.ts +1 -1
  14. package/dist/video/VideoForRendering.d.ts +1 -1
  15. package/dist/video/get-current-time.d.ts +5 -0
  16. package/dist/video/get-current-time.js +10 -2
  17. package/dist/video/index.d.ts +3 -2
  18. package/dist/video/index.js +5 -12
  19. package/dist/video/props.d.ts +10 -1
  20. package/package.json +2 -2
  21. package/.turbo/turbo-lint.log +0 -11
  22. package/.turbo/turbo-test.log +0 -78
  23. package/dist/AbsoluteFill.d.ts.map +0 -1
  24. package/dist/AbsoluteFill.js.map +0 -1
  25. package/dist/Composition.d.ts.map +0 -1
  26. package/dist/Composition.js.map +0 -1
  27. package/dist/CompositionManager.d.ts.map +0 -1
  28. package/dist/CompositionManager.js.map +0 -1
  29. package/dist/IFrame.d.ts.map +0 -1
  30. package/dist/IFrame.js.map +0 -1
  31. package/dist/Img.d.ts.map +0 -1
  32. package/dist/Img.js.map +0 -1
  33. package/dist/RemotionRoot.d.ts.map +0 -1
  34. package/dist/RemotionRoot.js.map +0 -1
  35. package/dist/Still.d.ts.map +0 -1
  36. package/dist/Still.js.map +0 -1
  37. package/dist/absolute-src.d.ts.map +0 -1
  38. package/dist/absolute-src.js.map +0 -1
  39. package/dist/asset-types.d.ts.map +0 -1
  40. package/dist/asset-types.js.map +0 -1
  41. package/dist/audio/Audio.d.ts.map +0 -1
  42. package/dist/audio/Audio.js.map +0 -1
  43. package/dist/audio/AudioForDevelopment.d.ts.map +0 -1
  44. package/dist/audio/AudioForDevelopment.js.map +0 -1
  45. package/dist/audio/AudioForRendering.d.ts.map +0 -1
  46. package/dist/audio/AudioForRendering.js.map +0 -1
  47. package/dist/audio/index.d.ts.map +0 -1
  48. package/dist/audio/index.js.map +0 -1
  49. package/dist/audio/props.d.ts.map +0 -1
  50. package/dist/audio/props.js.map +0 -1
  51. package/dist/audio/shared-audio-tags.d.ts.map +0 -1
  52. package/dist/audio/shared-audio-tags.js.map +0 -1
  53. package/dist/audio/use-audio-frame.d.ts.map +0 -1
  54. package/dist/audio/use-audio-frame.js.map +0 -1
  55. package/dist/bezier.d.ts.map +0 -1
  56. package/dist/bezier.js.map +0 -1
  57. package/dist/compress-assets.d.ts.map +0 -1
  58. package/dist/compress-assets.js.map +0 -1
  59. package/dist/config/browser-executable.d.ts.map +0 -1
  60. package/dist/config/browser-executable.js.map +0 -1
  61. package/dist/config/browser.d.ts.map +0 -1
  62. package/dist/config/browser.js.map +0 -1
  63. package/dist/config/chromium-flags.d.ts.map +0 -1
  64. package/dist/config/chromium-flags.js.map +0 -1
  65. package/dist/config/codec.d.ts.map +0 -1
  66. package/dist/config/codec.js.map +0 -1
  67. package/dist/config/concurrency.d.ts.map +0 -1
  68. package/dist/config/concurrency.js.map +0 -1
  69. package/dist/config/crf.d.ts.map +0 -1
  70. package/dist/config/crf.js.map +0 -1
  71. package/dist/config/env-file.d.ts.map +0 -1
  72. package/dist/config/env-file.js.map +0 -1
  73. package/dist/config/ffmpeg-executable.d.ts.map +0 -1
  74. package/dist/config/ffmpeg-executable.js.map +0 -1
  75. package/dist/config/frame-range.d.ts.map +0 -1
  76. package/dist/config/frame-range.js.map +0 -1
  77. package/dist/config/image-format.d.ts.map +0 -1
  78. package/dist/config/image-format.js.map +0 -1
  79. package/dist/config/image-sequence.d.ts.map +0 -1
  80. package/dist/config/image-sequence.js.map +0 -1
  81. package/dist/config/index.d.ts.map +0 -1
  82. package/dist/config/index.js.map +0 -1
  83. package/dist/config/input-props.d.ts.map +0 -1
  84. package/dist/config/input-props.js.map +0 -1
  85. package/dist/config/log.d.ts.map +0 -1
  86. package/dist/config/log.js.map +0 -1
  87. package/dist/config/max-timeline-tracks.d.ts.map +0 -1
  88. package/dist/config/max-timeline-tracks.js.map +0 -1
  89. package/dist/config/override-webpack.d.ts.map +0 -1
  90. package/dist/config/override-webpack.js.map +0 -1
  91. package/dist/config/overwrite.d.ts.map +0 -1
  92. package/dist/config/overwrite.js.map +0 -1
  93. package/dist/config/pixel-format.d.ts.map +0 -1
  94. package/dist/config/pixel-format.js.map +0 -1
  95. package/dist/config/preview-server.d.ts.map +0 -1
  96. package/dist/config/preview-server.js.map +0 -1
  97. package/dist/config/prores-profile.d.ts.map +0 -1
  98. package/dist/config/prores-profile.js.map +0 -1
  99. package/dist/config/quality.d.ts.map +0 -1
  100. package/dist/config/quality.js.map +0 -1
  101. package/dist/config/scale.d.ts.map +0 -1
  102. package/dist/config/scale.js.map +0 -1
  103. package/dist/config/still-frame.d.ts.map +0 -1
  104. package/dist/config/still-frame.js.map +0 -1
  105. package/dist/config/timeout.d.ts.map +0 -1
  106. package/dist/config/timeout.js.map +0 -1
  107. package/dist/config/webpack-caching.d.ts.map +0 -1
  108. package/dist/config/webpack-caching.js.map +0 -1
  109. package/dist/default-css.d.ts.map +0 -1
  110. package/dist/default-css.js.map +0 -1
  111. package/dist/delay-render.d.ts.map +0 -1
  112. package/dist/delay-render.js.map +0 -1
  113. package/dist/easing.d.ts.map +0 -1
  114. package/dist/easing.js.map +0 -1
  115. package/dist/feature-flags.d.ts.map +0 -1
  116. package/dist/feature-flags.js.map +0 -1
  117. package/dist/freeze.d.ts.map +0 -1
  118. package/dist/freeze.js.map +0 -1
  119. package/dist/get-asset-file-name.d.ts.map +0 -1
  120. package/dist/get-asset-file-name.js.map +0 -1
  121. package/dist/get-environment.d.ts.map +0 -1
  122. package/dist/get-environment.js.map +0 -1
  123. package/dist/get-preview-dom-element.d.ts.map +0 -1
  124. package/dist/get-preview-dom-element.js.map +0 -1
  125. package/dist/get-timeline-clip-name.d.ts.map +0 -1
  126. package/dist/get-timeline-clip-name.js.map +0 -1
  127. package/dist/index.d.ts.map +0 -1
  128. package/dist/index.js.map +0 -1
  129. package/dist/initial-frame.d.ts.map +0 -1
  130. package/dist/initial-frame.js.map +0 -1
  131. package/dist/internals.d.ts.map +0 -1
  132. package/dist/internals.js.map +0 -1
  133. package/dist/interpolate.d.ts.map +0 -1
  134. package/dist/interpolate.js.map +0 -1
  135. package/dist/interpolateColors.d.ts.map +0 -1
  136. package/dist/interpolateColors.js.map +0 -1
  137. package/dist/is-approximately-the-same.d.ts.map +0 -1
  138. package/dist/is-approximately-the-same.js.map +0 -1
  139. package/dist/is-audio-codec.d.ts.map +0 -1
  140. package/dist/is-audio-codec.js.map +0 -1
  141. package/dist/loop/index.d.ts.map +0 -1
  142. package/dist/loop/index.js.map +0 -1
  143. package/dist/multiple-versions-warning.d.ts.map +0 -1
  144. package/dist/multiple-versions-warning.js.map +0 -1
  145. package/dist/nonce.d.ts.map +0 -1
  146. package/dist/nonce.js.map +0 -1
  147. package/dist/perf/index.d.ts.map +0 -1
  148. package/dist/perf/index.js.map +0 -1
  149. package/dist/play-and-handle-not-allowed-error.d.ts.map +0 -1
  150. package/dist/play-and-handle-not-allowed-error.js.map +0 -1
  151. package/dist/random.d.ts.map +0 -1
  152. package/dist/random.js.map +0 -1
  153. package/dist/register-root.d.ts.map +0 -1
  154. package/dist/register-root.js.map +0 -1
  155. package/dist/sequencing/index.d.ts.map +0 -1
  156. package/dist/sequencing/index.js.map +0 -1
  157. package/dist/series/flatten-children.d.ts.map +0 -1
  158. package/dist/series/flatten-children.js.map +0 -1
  159. package/dist/series/index.d.ts.map +0 -1
  160. package/dist/series/index.js.map +0 -1
  161. package/dist/setup-env-variables.d.ts.map +0 -1
  162. package/dist/setup-env-variables.js.map +0 -1
  163. package/dist/spring/index.d.ts.map +0 -1
  164. package/dist/spring/index.js.map +0 -1
  165. package/dist/spring/measure-spring.d.ts.map +0 -1
  166. package/dist/spring/measure-spring.js.map +0 -1
  167. package/dist/spring/spring-utils.d.ts.map +0 -1
  168. package/dist/spring/spring-utils.js.map +0 -1
  169. package/dist/static-file.d.ts.map +0 -1
  170. package/dist/static-file.js.map +0 -1
  171. package/dist/timeline-inout-position-state.d.ts.map +0 -1
  172. package/dist/timeline-inout-position-state.js.map +0 -1
  173. package/dist/timeline-position-state.d.ts.map +0 -1
  174. package/dist/timeline-position-state.js.map +0 -1
  175. package/dist/timeout.d.ts.map +0 -1
  176. package/dist/timeout.js.map +0 -1
  177. package/dist/truthy.d.ts.map +0 -1
  178. package/dist/truthy.js.map +0 -1
  179. package/dist/use-frame.d.ts.map +0 -1
  180. package/dist/use-frame.js.map +0 -1
  181. package/dist/use-lazy-component.d.ts.map +0 -1
  182. package/dist/use-lazy-component.js.map +0 -1
  183. package/dist/use-media-in-timeline.d.ts.map +0 -1
  184. package/dist/use-media-in-timeline.js.map +0 -1
  185. package/dist/use-media-playback.d.ts.map +0 -1
  186. package/dist/use-media-playback.js.map +0 -1
  187. package/dist/use-media-tag-volume.d.ts.map +0 -1
  188. package/dist/use-media-tag-volume.js.map +0 -1
  189. package/dist/use-sync-volume-with-media-tag.d.ts.map +0 -1
  190. package/dist/use-sync-volume-with-media-tag.js.map +0 -1
  191. package/dist/use-unsafe-video-config.d.ts.map +0 -1
  192. package/dist/use-unsafe-video-config.js.map +0 -1
  193. package/dist/use-video-config.d.ts.map +0 -1
  194. package/dist/use-video-config.js.map +0 -1
  195. package/dist/use-video.d.ts.map +0 -1
  196. package/dist/use-video.js.map +0 -1
  197. package/dist/validate-media-props.d.ts.map +0 -1
  198. package/dist/validate-media-props.js.map +0 -1
  199. package/dist/validate-start-from-props.d.ts.map +0 -1
  200. package/dist/validate-start-from-props.js.map +0 -1
  201. package/dist/validation/validate-composition-id.d.ts.map +0 -1
  202. package/dist/validation/validate-composition-id.js.map +0 -1
  203. package/dist/validation/validate-dimensions.d.ts.map +0 -1
  204. package/dist/validation/validate-dimensions.js.map +0 -1
  205. package/dist/validation/validate-duration-in-frames.d.ts.map +0 -1
  206. package/dist/validation/validate-duration-in-frames.js.map +0 -1
  207. package/dist/validation/validate-folder-name.d.ts.map +0 -1
  208. package/dist/validation/validate-folder-name.js.map +0 -1
  209. package/dist/validation/validate-fps.d.ts.map +0 -1
  210. package/dist/validation/validate-fps.js.map +0 -1
  211. package/dist/validation/validate-frame.d.ts.map +0 -1
  212. package/dist/validation/validate-frame.js.map +0 -1
  213. package/dist/validation/validate-image-format.d.ts.map +0 -1
  214. package/dist/validation/validate-image-format.js.map +0 -1
  215. package/dist/validation/validate-opengl-renderer.d.ts.map +0 -1
  216. package/dist/validation/validate-opengl-renderer.js.map +0 -1
  217. package/dist/validation/validate-quality.d.ts.map +0 -1
  218. package/dist/validation/validate-quality.js.map +0 -1
  219. package/dist/video/Video.d.ts.map +0 -1
  220. package/dist/video/Video.js.map +0 -1
  221. package/dist/video/VideoForDevelopment.d.ts.map +0 -1
  222. package/dist/video/VideoForDevelopment.js.map +0 -1
  223. package/dist/video/VideoForRendering.d.ts.map +0 -1
  224. package/dist/video/VideoForRendering.js.map +0 -1
  225. package/dist/video/get-current-time.d.ts.map +0 -1
  226. package/dist/video/get-current-time.js.map +0 -1
  227. package/dist/video/index.d.ts.map +0 -1
  228. package/dist/video/index.js.map +0 -1
  229. package/dist/video/props.d.ts.map +0 -1
  230. package/dist/video/props.js.map +0 -1
  231. package/dist/video-config.d.ts.map +0 -1
  232. package/dist/video-config.js.map +0 -1
  233. package/dist/volume-position-state.d.ts.map +0 -1
  234. package/dist/volume-position-state.js.map +0 -1
  235. package/dist/volume-prop.d.ts.map +0 -1
  236. package/dist/volume-prop.js.map +0 -1
  237. package/dist/warn-about-non-seekable-media.d.ts.map +0 -1
  238. package/dist/warn-about-non-seekable-media.js.map +0 -1
  239. package/dist/wrap-remotion-context.d.ts.map +0 -1
  240. package/dist/wrap-remotion-context.js.map +0 -1
@@ -1,5 +1,5 @@
1
- remotion:build: cache hit, replaying output 4747262c86874f85
1
+ remotion:build: cache hit, replaying output 04bd579a81ce84e9
2
2
  remotion:build: 
3
- remotion:build: > remotion@3.0.7 build /Users/jonathanburger/remotion/packages/core
3
+ remotion:build: > remotion@3.0.10 build /Users/jonathanburger/remotion/packages/core
4
4
  remotion:build: > tsc -d
5
5
  remotion:build: 
package/dist/Img.js CHANGED
@@ -4,33 +4,39 @@ exports.Img = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const delay_render_1 = require("./delay-render");
7
- const ImgRefForwarding = ({ onLoad, onError, ...props }, ref) => {
8
- const [handle] = (0, react_1.useState)(() => (0, delay_render_1.delayRender)('Loading <Img> with src=' + props.src));
9
- (0, react_1.useEffect)(() => {
10
- if (ref &&
11
- ref.current.complete) {
12
- (0, delay_render_1.continueRender)(handle);
13
- }
14
- }, [handle, ref]);
15
- const didLoad = (0, react_1.useCallback)((e) => {
16
- (0, delay_render_1.continueRender)(handle);
17
- onLoad === null || onLoad === void 0 ? void 0 : onLoad(e);
18
- }, [handle, onLoad]);
7
+ const ImgRefForwarding = ({ onError, ...props }, ref) => {
8
+ const imageRef = (0, react_1.useRef)(null);
9
+ (0, react_1.useImperativeHandle)(ref, () => {
10
+ return imageRef.current;
11
+ });
19
12
  const didGetError = (0, react_1.useCallback)((e) => {
20
- (0, delay_render_1.continueRender)(handle);
13
+ var _a;
21
14
  if (onError) {
22
15
  onError(e);
23
16
  }
24
17
  else {
25
- console.error('Error loading image:', e, 'Handle the event using the onError() prop to make this message disappear.');
18
+ console.error('Error loading image with src:', (_a = imageRef.current) === null || _a === void 0 ? void 0 : _a.src, e, 'Handle the event using the onError() prop to make this message disappear.');
19
+ }
20
+ }, [onError]);
21
+ // If image source switches, make new handle
22
+ (0, react_1.useLayoutEffect)(() => {
23
+ const newHandle = (0, delay_render_1.delayRender)('Loading <Img> with src=' + props.src);
24
+ const { current } = imageRef;
25
+ const didLoad = () => {
26
+ (0, delay_render_1.continueRender)(newHandle);
27
+ };
28
+ if (current === null || current === void 0 ? void 0 : current.complete) {
29
+ (0, delay_render_1.continueRender)(newHandle);
30
+ }
31
+ else {
32
+ current === null || current === void 0 ? void 0 : current.addEventListener('load', didLoad, { once: true });
26
33
  }
27
- }, [handle, onError]);
28
- // If tag gets unmounted, clear pending handles because image is not going to load
29
- (0, react_1.useEffect)(() => {
34
+ // If tag gets unmounted, clear pending handles because image is not going to load
30
35
  return () => {
31
- (0, delay_render_1.continueRender)(handle);
36
+ current === null || current === void 0 ? void 0 : current.removeEventListener('load', didLoad);
37
+ (0, delay_render_1.continueRender)(newHandle);
32
38
  };
33
- }, [handle]);
34
- return (0, jsx_runtime_1.jsx)("img", { ...props, ref: ref, onLoad: didLoad, onError: didGetError }, void 0);
39
+ }, [props.src]);
40
+ return (0, jsx_runtime_1.jsx)("img", { ...props, ref: imageRef, onError: didGetError }, void 0);
35
41
  };
36
42
  exports.Img = (0, react_1.forwardRef)(ImgRefForwarding);
@@ -99,7 +99,7 @@ export declare const Config: {
99
99
  /** Decide in which image format to render. Can be either 'jpeg' or 'png'.
100
100
  * PNG is slower, but supports transparency.
101
101
  */
102
- readonly setImageFormat: (format: "png" | "jpeg" | "none") => void;
102
+ readonly setImageFormat: (format: "none" | "png" | "jpeg") => void;
103
103
  /**
104
104
  * Render only a subset of a video.
105
105
  * Pass in a tuple [20, 30] to only render frames 20-30 into a video.
@@ -156,7 +156,7 @@ export declare const Config: {
156
156
  * Possible values: 4444-xq, 4444, hq, standard, light, proxy. Default: 'hq'
157
157
  * See https://avpres.net/FFmpeg/im_ProRes.html for meaning of possible values.
158
158
  */
159
- readonly setProResProfile: (profile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined) => void;
159
+ readonly setProResProfile: (profile: "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined) => void;
160
160
  };
161
161
  };
162
162
  export type { PixelFormat, Concurrency, WebpackConfiguration, WebpackOverrideFn, BrowserExecutable, FfmpegExecutable, ImageFormat, Codec, Browser, FrameRange, LogLevel, StillImageFormat, };
package/dist/index.d.ts CHANGED
@@ -11,13 +11,14 @@ declare global {
11
11
  remotion_cwd: string;
12
12
  remotion_setFrame: (frame: number) => void;
13
13
  remotion_initialFrame: number;
14
+ remotion_proxyPort: number;
14
15
  remotion_puppeteerTimeout: number;
15
16
  remotion_inputProps: string;
16
17
  remotion_envVariables: string;
17
18
  remotion_collectAssets: () => TAsset[];
18
19
  remotion_isPlayer: boolean;
19
20
  remotion_imported: boolean;
20
- siteVersion: '2';
21
+ siteVersion: '3';
21
22
  }
22
23
  }
23
24
  export declare type BundleState = {
@@ -51,7 +52,7 @@ export * from './spring';
51
52
  export { staticFile } from './static-file';
52
53
  export * from './Still';
53
54
  export type { PlayableMediaTag } from './timeline-position-state';
54
- export * from './use-frame';
55
+ export { useCurrentFrame } from './use-frame';
55
56
  export * from './use-video-config';
56
57
  export * from './video';
57
58
  export * from './video-config';
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.staticFile = exports.Series = exports.Sequence = exports.registerRoot = exports.Loop = exports.interpolateColors = exports.getInputProps = void 0;
13
+ exports.useCurrentFrame = exports.staticFile = exports.Series = exports.Sequence = exports.registerRoot = exports.Loop = exports.interpolateColors = exports.getInputProps = void 0;
14
14
  require("./asset-types");
15
15
  const multiple_versions_warning_1 = require("./multiple-versions-warning");
16
16
  (0, multiple_versions_warning_1.checkMultipleRemotionVersions)();
@@ -42,7 +42,8 @@ __exportStar(require("./spring"), exports);
42
42
  var static_file_1 = require("./static-file");
43
43
  Object.defineProperty(exports, "staticFile", { enumerable: true, get: function () { return static_file_1.staticFile; } });
44
44
  __exportStar(require("./Still"), exports);
45
- __exportStar(require("./use-frame"), exports);
45
+ var use_frame_1 = require("./use-frame");
46
+ Object.defineProperty(exports, "useCurrentFrame", { enumerable: true, get: function () { return use_frame_1.useCurrentFrame; } });
46
47
  __exportStar(require("./use-video-config"), exports);
47
48
  __exportStar(require("./video"), exports);
48
49
  __exportStar(require("./video-config"), exports);
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { CompProps } from './Composition';
2
3
  import { CompositionManagerContext, RenderAssetInfo, TAsset, TCompMetadata, TComposition, TSequence } from './CompositionManager';
3
4
  import * as AssetCompression from './compress-assets';
@@ -75,11 +76,11 @@ export declare const Internals: {
75
76
  getDefaultCrfForCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv") => number;
76
77
  getActualCrf: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv") => number;
77
78
  setFrameRangeFromCli: (newFrameRange: string | number) => void;
78
- getUserPreferredImageFormat: () => "png" | "jpeg" | "none" | undefined;
79
- validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", imageFormat: "png" | "jpeg" | "none") => "none" | "valid";
79
+ getUserPreferredImageFormat: () => "none" | "png" | "jpeg" | undefined;
80
+ validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", imageFormat: "none" | "png" | "jpeg") => "none" | "valid";
80
81
  validateSelectedPixelFormatAndCodecCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv") => void;
81
82
  validateFrameRange: (frameRange: import("./config/frame-range").FrameRange | null) => void;
82
- validateNonNullImageFormat: (imageFormat: "png" | "jpeg" | "none") => void;
83
+ validateNonNullImageFormat: (imageFormat: "none" | "png" | "jpeg") => void;
83
84
  getWebpackCaching: () => boolean;
84
85
  useLazyComponent: <T>(compProps: CompProps<T>) => import("react").ExoticComponent<(import("react").PropsWithoutRef<T> & import("react").RefAttributes<import("react").Component<T, any, any>>) | import("react").PropsWithRef<T>> & {
85
86
  readonly _result: import("react").ComponentType<T>;
@@ -101,9 +102,9 @@ export declare const Internals: {
101
102
  validateFps: (fps: number, location: string) => void;
102
103
  validateDimension: (amount: number, nameOfProp: string, location: string) => void;
103
104
  getRemotionEnvironment: () => RemotionEnvironment;
104
- getProResProfile: () => "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined;
105
- setProResProfile: (profile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined) => void;
106
- validateSelectedCodecAndProResCombination: (actualCodec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv", actualProResProfile: "4444-xq" | "4444" | "hq" | "standard" | "light" | "proxy" | undefined) => void;
105
+ getProResProfile: () => "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined;
106
+ setProResProfile: (profile: "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined) => void;
107
+ validateSelectedCodecAndProResCombination: (actualCodec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv", actualProResProfile: "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined) => void;
107
108
  getMaxTimelineTracks: () => number;
108
109
  SharedAudioContext: import("react").Context<{
109
110
  registerAudio: (aud: import("./audio").RemotionAudioProps) => {
@@ -144,5 +145,6 @@ export declare const Internals: {
144
145
  getCompositions: () => TCompMetadata[];
145
146
  }>;
146
147
  DELAY_RENDER_CALLSTACK_TOKEN: string;
148
+ useAbsoluteCurrentFrame: () => number;
147
149
  };
148
150
  export type { TComposition, Timeline, TCompMetadata, TSequence, WebpackOverrideFn, TAsset, RenderAssetInfo, TimelineContextValue, SetTimelineContextValue, TimelineInOutContextValue, SetTimelineInOutContextValue, CompProps, CompositionManagerContext, MediaVolumeContextValue, SetMediaVolumeContextValue, RemotionEnvironment, ProResProfile, OpenGlRenderer, };
package/dist/internals.js CHANGED
@@ -61,6 +61,7 @@ const TimelineInOutPosition = __importStar(require("./timeline-inout-position-st
61
61
  const TimelinePosition = __importStar(require("./timeline-position-state"));
62
62
  const timeout_2 = require("./timeout");
63
63
  const truthy_1 = require("./truthy");
64
+ const use_frame_1 = require("./use-frame");
64
65
  const use_lazy_component_1 = require("./use-lazy-component");
65
66
  const use_unsafe_video_config_1 = require("./use-unsafe-video-config");
66
67
  const use_video_1 = require("./use-video");
@@ -161,4 +162,5 @@ exports.Internals = {
161
162
  getPreviewDomElement: get_preview_dom_element_1.getPreviewDomElement,
162
163
  compositionsRef: CompositionManager_1.compositionsRef,
163
164
  DELAY_RENDER_CALLSTACK_TOKEN: delay_render_1.DELAY_RENDER_CALLSTACK_TOKEN,
165
+ useAbsoluteCurrentFrame: use_frame_1.useAbsoluteCurrentFrame,
164
166
  };
@@ -1,3 +1,4 @@
1
1
  import { RemotionAudioProps } from './audio';
2
2
  import { RemotionVideoProps } from './video';
3
- export declare const validateMediaProps: (props: RemotionVideoProps | RemotionAudioProps, component: 'Video' | 'Audio') => void;
3
+ import { OffthreadVideoProps } from './video/props';
4
+ export declare const validateMediaProps: (props: RemotionVideoProps | RemotionAudioProps | OffthreadVideoProps, component: 'Video' | 'Audio') => void;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { OffthreadVideoProps, RemotionMainVideoProps } from './props';
3
+ export declare const OffthreadVideo: React.FC<OffthreadVideoProps & RemotionMainVideoProps>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OffthreadVideo = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const get_environment_1 = require("../get-environment");
6
+ const sequencing_1 = require("../sequencing");
7
+ const validate_media_props_1 = require("../validate-media-props");
8
+ const validate_start_from_props_1 = require("../validate-start-from-props");
9
+ const OffthreadVideoForRendering_1 = require("./OffthreadVideoForRendering");
10
+ const VideoForDevelopment_1 = require("./VideoForDevelopment");
11
+ const OffthreadVideo = (props) => {
12
+ const { startFrom, endAt, ...otherProps } = props;
13
+ if (typeof startFrom !== 'undefined' || typeof endAt !== 'undefined') {
14
+ (0, validate_start_from_props_1.validateStartFromProps)(startFrom, endAt);
15
+ const startFromFrameNo = startFrom !== null && startFrom !== void 0 ? startFrom : 0;
16
+ const endAtFrameNo = endAt !== null && endAt !== void 0 ? endAt : Infinity;
17
+ return ((0, jsx_runtime_1.jsx)(sequencing_1.Sequence, { layout: "none", from: 0 - startFromFrameNo, showInTimeline: false, durationInFrames: endAtFrameNo, children: (0, jsx_runtime_1.jsx)(exports.OffthreadVideo, { ...otherProps }, void 0) }, void 0));
18
+ }
19
+ (0, validate_media_props_1.validateMediaProps)(props, 'Video');
20
+ if ((0, get_environment_1.getRemotionEnvironment)() === 'rendering') {
21
+ return (0, jsx_runtime_1.jsx)(OffthreadVideoForRendering_1.OffthreadVideoForRendering, { ...otherProps }, void 0);
22
+ }
23
+ return (0, jsx_runtime_1.jsx)(VideoForDevelopment_1.VideoForDevelopment, { ...otherProps }, void 0);
24
+ };
25
+ exports.OffthreadVideo = OffthreadVideo;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { OffthreadVideoProps } from './props';
3
+ export declare const OffthreadVideoForRendering: React.FC<OffthreadVideoProps>;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OffthreadVideoForRendering = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const absolute_src_1 = require("../absolute-src");
7
+ const use_audio_frame_1 = require("../audio/use-audio-frame");
8
+ const CompositionManager_1 = require("../CompositionManager");
9
+ const Img_1 = require("../Img");
10
+ const random_1 = require("../random");
11
+ const sequencing_1 = require("../sequencing");
12
+ const use_frame_1 = require("../use-frame");
13
+ const use_unsafe_video_config_1 = require("../use-unsafe-video-config");
14
+ const volume_prop_1 = require("../volume-prop");
15
+ const get_current_time_1 = require("./get-current-time");
16
+ const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate, src, muted, ...props }) => {
17
+ const absoluteFrame = (0, use_frame_1.useAbsoluteCurrentFrame)();
18
+ const frame = (0, use_frame_1.useCurrentFrame)();
19
+ const volumePropsFrame = (0, use_audio_frame_1.useFrameForVolumeProp)();
20
+ const videoConfig = (0, use_unsafe_video_config_1.useUnsafeVideoConfig)();
21
+ const sequenceContext = (0, react_1.useContext)(sequencing_1.SequenceContext);
22
+ const mediaStartsAt = (0, use_audio_frame_1.useMediaStartsAt)();
23
+ const { registerAsset, unregisterAsset } = (0, react_1.useContext)(CompositionManager_1.CompositionManager);
24
+ if (!src) {
25
+ throw new TypeError('No `src` was passed to <OffthreadVideo>.');
26
+ }
27
+ // Generate a string that's as unique as possible for this asset
28
+ // but at the same time the same on all threads
29
+ const id = (0, react_1.useMemo)(() => `video-${(0, random_1.random)(src !== null && src !== void 0 ? src : '')}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.relativeFrom}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames}-muted:${muted}`, [
30
+ src,
31
+ muted,
32
+ sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom,
33
+ sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.relativeFrom,
34
+ sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames,
35
+ ]);
36
+ if (!videoConfig) {
37
+ throw new Error('No video config found');
38
+ }
39
+ const volume = (0, volume_prop_1.evaluateVolume)({
40
+ volume: volumeProp,
41
+ frame: volumePropsFrame,
42
+ mediaVolume: 1,
43
+ });
44
+ (0, react_1.useEffect)(() => {
45
+ if (!src) {
46
+ throw new Error('No src passed');
47
+ }
48
+ if (muted) {
49
+ return;
50
+ }
51
+ registerAsset({
52
+ type: 'video',
53
+ src: (0, absolute_src_1.getAbsoluteSrc)(src),
54
+ id,
55
+ frame: absoluteFrame,
56
+ volume,
57
+ mediaFrame: frame,
58
+ playbackRate: playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1,
59
+ });
60
+ return () => unregisterAsset(id);
61
+ }, [
62
+ muted,
63
+ src,
64
+ registerAsset,
65
+ id,
66
+ unregisterAsset,
67
+ volume,
68
+ frame,
69
+ absoluteFrame,
70
+ playbackRate,
71
+ ]);
72
+ const currentTime = (0, react_1.useMemo)(() => {
73
+ return ((0, get_current_time_1.getExpectedMediaFrameUncorrected)({
74
+ frame,
75
+ playbackRate: playbackRate || 1,
76
+ startFrom: -mediaStartsAt,
77
+ }) / videoConfig.fps);
78
+ }, [frame, mediaStartsAt, playbackRate, videoConfig.fps]);
79
+ const actualSrc = (0, react_1.useMemo)(() => {
80
+ return `http://localhost:${window.remotion_proxyPort}/proxy?src=${encodeURIComponent((0, absolute_src_1.getAbsoluteSrc)(src))}&time=${encodeURIComponent(currentTime)}`;
81
+ }, [currentTime, src]);
82
+ const onErr = (0, react_1.useCallback)((e) => {
83
+ onError === null || onError === void 0 ? void 0 : onError(e);
84
+ }, [onError]);
85
+ return (0, jsx_runtime_1.jsx)(Img_1.Img, { src: actualSrc, ...props, onError: onErr }, void 0);
86
+ };
87
+ exports.OffthreadVideoForRendering = OffthreadVideoForRendering;
@@ -3,4 +3,4 @@ import { RemotionMainVideoProps } from './props';
3
3
  export declare const Video: React.ForwardRefExoticComponent<Pick<Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "onEnded" | "autoPlay" | "controls" | "loop"> & {
4
4
  volume?: import("../volume-prop").VolumeProp | undefined;
5
5
  playbackRate?: number | undefined;
6
- } & RemotionMainVideoProps, "crossOrigin" | "height" | "src" | "width" | "onLoad" | "onError" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoadCapture" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "playsInline" | "poster" | "disablePictureInPicture" | "disableRemotePlayback" | "controlsList" | "mediaGroup" | "muted" | "preload" | "volume" | "playbackRate" | keyof RemotionMainVideoProps> & React.RefAttributes<HTMLVideoElement>>;
6
+ } & RemotionMainVideoProps, "style" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "height" | "width" | "src" | "volume" | "playbackRate" | "controlsList" | "crossOrigin" | "mediaGroup" | "muted" | "playsInline" | "preload" | "key" | "poster" | "disablePictureInPicture" | "disableRemotePlayback" | keyof RemotionMainVideoProps> & React.RefAttributes<HTMLVideoElement>>;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { RemotionVideoProps } from './props';
3
- export declare const VideoForRendering: React.ForwardRefExoticComponent<Pick<RemotionVideoProps, "crossOrigin" | "height" | "src" | "width" | "onLoad" | "onError" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoadCapture" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "playsInline" | "poster" | "disablePictureInPicture" | "disableRemotePlayback" | "controlsList" | "mediaGroup" | "muted" | "preload" | "volume" | "playbackRate"> & React.RefAttributes<HTMLVideoElement>>;
3
+ export declare const VideoForRendering: React.ForwardRefExoticComponent<Pick<RemotionVideoProps, "style" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "height" | "width" | "src" | "volume" | "playbackRate" | "controlsList" | "crossOrigin" | "mediaGroup" | "muted" | "playsInline" | "preload" | "key" | "poster" | "disablePictureInPicture" | "disableRemotePlayback"> & React.RefAttributes<HTMLVideoElement>>;
@@ -1,3 +1,8 @@
1
+ export declare const getExpectedMediaFrameUncorrected: ({ frame, playbackRate, startFrom, }: {
2
+ frame: number;
3
+ playbackRate: number;
4
+ startFrom: number;
5
+ }) => number;
1
6
  export declare const getMediaTime: ({ fps, frame, src, playbackRate, startFrom, }: {
2
7
  fps: number;
3
8
  frame: number;
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  // Calculate the `.currentTime` of a video or audio element
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getMediaTime = void 0;
4
+ exports.getMediaTime = exports.getExpectedMediaFrameUncorrected = void 0;
5
5
  const interpolate_1 = require("../interpolate");
6
+ const getExpectedMediaFrameUncorrected = ({ frame, playbackRate, startFrom, }) => {
7
+ return (0, interpolate_1.interpolate)(frame, [-1, startFrom, startFrom + 1], [-1, startFrom, startFrom + playbackRate]);
8
+ };
9
+ exports.getExpectedMediaFrameUncorrected = getExpectedMediaFrameUncorrected;
6
10
  const getMediaTime = ({ fps, frame, src, playbackRate, startFrom, }) => {
7
- const expectedFrame = (0, interpolate_1.interpolate)(frame, [-1, startFrom, startFrom + 1], [-1, startFrom, startFrom + playbackRate]);
11
+ const expectedFrame = (0, exports.getExpectedMediaFrameUncorrected)({
12
+ frame,
13
+ playbackRate,
14
+ startFrom,
15
+ });
8
16
  if (src.endsWith('mp4')) {
9
17
  // In Chrome, for MP4s, if 30fps, the first frame is still displayed at 0.033333
10
18
  // even though after that it increases by 0.033333333 each.
@@ -1,2 +1,3 @@
1
- export * from './props';
2
- export * from './Video';
1
+ export { OffthreadVideo } from './OffthreadVideo';
2
+ export { OffthreadVideoProps as RemotionOffthreadVideoProps, RemotionMainVideoProps, RemotionVideoProps, } from './props';
3
+ export { Video } from './Video';
@@ -1,14 +1,7 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
2
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./props"), exports);
14
- __exportStar(require("./Video"), exports);
3
+ exports.Video = exports.OffthreadVideo = void 0;
4
+ var OffthreadVideo_1 = require("./OffthreadVideo");
5
+ Object.defineProperty(exports, "OffthreadVideo", { enumerable: true, get: function () { return OffthreadVideo_1.OffthreadVideo; } });
6
+ var Video_1 = require("./Video");
7
+ Object.defineProperty(exports, "Video", { enumerable: true, get: function () { return Video_1.Video; } });
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { VolumeProp } from '../volume-prop';
3
3
  export declare type RemotionMainVideoProps = {
4
4
  startFrom?: number;
@@ -8,3 +8,12 @@ export declare type RemotionVideoProps = Omit<React.DetailedHTMLProps<React.Vide
8
8
  volume?: VolumeProp;
9
9
  playbackRate?: number;
10
10
  };
11
+ export declare type OffthreadVideoProps = {
12
+ src: string;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ volume?: VolumeProp;
16
+ playbackRate?: number;
17
+ muted?: boolean;
18
+ onError?: React.ReactEventHandler<HTMLVideoElement | HTMLImageElement>;
19
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remotion",
3
- "version": "3.0.8",
3
+ "version": "3.0.11",
4
4
  "description": "Render videos in React",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -55,5 +55,5 @@
55
55
  "publishConfig": {
56
56
  "access": "public"
57
57
  },
58
- "gitHead": "7baac590c7109d516ac5e0222f8a39b42ded1bbf"
58
+ "gitHead": "7bdd2de3305f669cefecfdbda7f555df1480d9c9"
59
59
  }
@@ -1,11 +0,0 @@
1
- remotion:lint: cache hit, replaying output cfd1b8e3d4bfaf71
2
- remotion:lint: 
3
- remotion:lint: > remotion@2.6.15 lint /Users/jonathanburger/remotion/packages/core
4
- remotion:lint: > eslint src --ext ts,tsx
5
- remotion:lint: 
6
- remotion:lint: 
7
- remotion:lint: /Users/jonathanburger/remotion/packages/core/src/use-lazy-component.ts
8
- remotion:lint:  9:50 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
9
- remotion:lint: 
10
- remotion:lint: ✖ 1 problem (0 errors, 1 warning)
11
- remotion:lint: 
@@ -1,78 +0,0 @@
1
- remotion:test: cache hit, replaying output d00af95c326f9762
2
- remotion:test: 
3
- remotion:test: > remotion@2.6.15 test /Users/jonathanburger/remotion/packages/core
4
- remotion:test: > jest --coverage && node generate-badges.js
5
- remotion:test: 
6
- remotion:test: Browserslist: caniuse-lite is outdated. Please run:
7
- remotion:test:  npx browserslist@latest --update-db
8
- remotion:test:  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
9
- remotion:test: Browserslist: caniuse-lite is outdated. Please run:
10
- remotion:test:  npx browserslist@latest --update-db
11
- remotion:test:  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
12
- remotion:test: Browserslist: caniuse-lite is outdated. Please run:
13
- remotion:test:  npx browserslist@latest --update-db
14
- remotion:test:  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
15
- remotion:test: Browserslist: caniuse-lite is outdated. Please run:
16
- remotion:test:  npx browserslist@latest --update-db
17
- remotion:test:  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
18
- remotion:test: PASS src/test/crf.test.ts (22.562 s)
19
- remotion:test: PASS src/test/easing.test.ts (23.331 s)
20
- remotion:test: PASS src/test/interpolate.test.ts (23.825 s)
21
- remotion:test: Browserslist: caniuse-lite is outdated. Please run:
22
- remotion:test:  npx browserslist@latest --update-db
23
- remotion:test:  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
24
- remotion:test: PASS src/test/volume-prop.test.ts
25
- remotion:test: Browserslist: caniuse-lite is outdated. Please run:
26
- remotion:test:  npx browserslist@latest --update-db
27
- remotion:test:  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
28
- remotion:test: PASS src/test/interpolateColors.test.ts
29
- remotion:test: PASS src/test/pixel-format.test.ts
30
- remotion:test: Browserslist: caniuse-lite is outdated. Please run:
31
- remotion:test:  npx browserslist@latest --update-db
32
- remotion:test:  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
33
- remotion:test: PASS src/test/nested-sequences.test.tsx (30.022 s)
34
- remotion:test: PASS src/test/media-validation.test.tsx
35
- remotion:test: PASS src/test/image-format.test.ts
36
- remotion:test: PASS src/test/random.test.ts
37
- remotion:test: PASS src/test/codec.test.ts
38
- remotion:test: PASS src/test/get-current-time.test.ts
39
- remotion:test: PASS src/test/sequence-validation.test.tsx
40
- remotion:test: PASS src/test/range.test.tsx (13.571 s)
41
- remotion:test: PASS src/test/audio-for-rendering.test.tsx (11.012 s)
42
- remotion:test: PASS src/test/use-audio-frame.test.tsx
43
- remotion:test: PASS src/test/validate-start-from-props.test.ts
44
- remotion:test: PASS src/test/composition-rules.test.tsx (5.238 s)
45
- remotion:test: PASS src/test/freeze.test.tsx (8.949 s)
46
- remotion:test: PASS src/test/loop-validation.test.tsx (42.302 s)
47
- remotion:test: PASS src/test/series.test.tsx (42.599 s)
48
- remotion:test: PASS src/test/composition-validation.test.tsx (43.496 s)
49
- remotion:test: PASS src/test/use-sync-volume-with-media-tag.test.ts
50
- remotion:test: PASS src/test/log.test.ts
51
- remotion:test: PASS src/test/audio.test.tsx (6.1 s)
52
- remotion:test: PASS src/test/measure-spring.test.ts
53
- remotion:test: PASS src/test/use-media-tag-volume.test.tsx
54
- remotion:test: PASS src/test/bezier.test.ts
55
- remotion:test: PASS src/test/video.test.tsx (7.679 s)
56
- remotion:test: PASS src/test/pro-res-profile.test.ts
57
- remotion:test: PASS src/test/quality.test.ts
58
- remotion:test: PASS src/test/overwrite.test.ts
59
- remotion:test: PASS src/test/image-sequence.test.ts
60
- remotion:test: PASS src/test/concurrency.test.ts
61
- remotion:test: PASS src/test/use-media-in-timeline.test.tsx
62
- remotion:test: PASS src/test/webpack-caching.test.ts
63
- remotion:test: PASS src/test/input-props.test.ts
64
- remotion:test: PASS src/test/validate-frame.test.ts
65
- remotion:test: PASS src/test/preview-server.test.ts
66
- remotion:test: PASS src/test/spring.test.ts
67
- remotion:test: PASS src/test/ready-manager.test.ts
68
- remotion:test: PASS src/test/validate-image-format.test.ts
69
- remotion:test: PASS src/test/get-asset-file-name.test.ts
70
- remotion:test: PASS src/test/truthy.test.ts
71
- remotion:test: PASS src/test/absolute-src.test.ts
72
- remotion:test: PASS src/test/Img.test.tsx
73
- remotion:test: 
74
- remotion:test: Test Suites: 46 passed, 46 total
75
- remotion:test: Tests: 474 passed, 474 total
76
- remotion:test: Snapshots: 0 total
77
- remotion:test: Time: 50.985 s
78
- remotion:test: Ran all test suites.
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbsoluteFill.d.ts","sourceRoot":"","sources":["../src/AbsoluteFill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,cAAc,EAAU,MAAM,OAAO,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAoBjE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbsoluteFill.js","sourceRoot":"","sources":["../src/AbsoluteFill.tsx"],"names":[],"mappings":";;;;AAAA,iCAAqD;AAE9C,MAAM,YAAY,GAA6C,CACrE,KAAK,EACJ,EAAE;IACH,MAAM,EAAC,KAAK,EAAE,GAAG,KAAK,EAAC,GAAG,KAAK,CAAC;IAChC,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAwB,EAAE;QACrD,OAAO;YACN,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,KAAK;SACR,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,gCAAK,KAAK,EAAE,WAAW,KAAM,KAAK,WAAI,CAAC;AAC/C,CAAC,CAAC;AApBW,QAAA,YAAY,gBAoBvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Composition.d.ts","sourceRoot":"","sources":["../src/Composition.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACb,aAAa,EAEb,EAAE,EAIF,MAAM,OAAO,CAAC;AAqBf,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAC,CAgChE,CAAC;AAEF,aAAK,kBAAkB,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AAEhF,oBAAY,SAAS,CAAC,CAAC,IACpB;IACA,aAAa,EAAE,MAAM,OAAO,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;KAAC,CAAC,CAAC;CAC9D,GACD;IACA,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC;AAEL,oBAAY,UAAU,CAAC,CAAC,IAAI;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,CAAC,CAAC;CACjB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAEjB,aAAK,gBAAgB,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,WAAW,4GAgEvB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Composition.js","sourceRoot":"","sources":["../src/Composition.tsx"],"names":[],"mappings":";;;;AAAA,iCAOe;AACf,6DAAwD;AACxD,mCAAiC;AACjC,qCAAgC;AAChC,6DAAsD;AACtD,kFAA2E;AAC3E,0EAAmE;AACnE,0FAAkF;AAClF,4EAAqE;AACrE,4DAAsD;AAOtD,MAAM,aAAa,GAAG,IAAA,qBAAa,EAAoB;IACtD,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;CAChB,CAAC,CAAC;AAEI,MAAM,MAAM,GAAkD,CAAC,EACrE,IAAI,EACJ,QAAQ,GACR,EAAE,EAAE;IACJ,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,aAAa,CAAC,CAAC;IACzC,MAAM,EAAC,cAAc,EAAE,gBAAgB,EAAC,GAAG,IAAA,kBAAU,EAAC,uCAAkB,CAAC,CAAC;IAE1E,IAAA,yCAAkB,EAAC,IAAI,CAAC,CAAC;IAEzB,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,eAAM,CAAC,CAAC;IAE5E,MAAM,UAAU,GACf,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,GAAsB,EAAE;QAC7C,OAAO;YACN,UAAU,EAAE,IAAI;YAChB,UAAU;SACV,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEjC,OAAO,GAAG,EAAE;YACX,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE5E,OAAO,CACN,uBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,WAA0B,CACzE,CAAC;AACH,CAAC,CAAC;AAhCW,QAAA,MAAM,UAgCjB;AAwBK,MAAM,WAAW,GAAG,CAAK,EAC/B,KAAK,EACL,MAAM,EACN,GAAG,EACH,gBAAgB,EAChB,EAAE,EACF,YAAY,EACZ,GAAG,SAAS,EACS,EAAE,EAAE;IACzB,MAAM,EAAC,mBAAmB,EAAE,qBAAqB,EAAC,GACjD,IAAA,kBAAU,EAAC,uCAAkB,CAAC,CAAC;IAEhC,MAAM,IAAI,GAAG,IAAA,qCAAgB,EAAC,SAAS,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAEzB,MAAM,EAAC,UAAU,EAAE,UAAU,EAAC,GAAG,IAAA,kBAAU,EAAC,aAAa,CAAC,CAAC;IAE3D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,4BAA4B;QAC5B,IAAI,CAAC,EAAE,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SACjD;QAED,IAAA,+CAAqB,EAAC,EAAE,CAAC,CAAC;QAC1B,IAAA,uCAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,iCAAiC,CAAC,CAAC;QACrE,IAAA,uCAAiB,EAAC,MAAM,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACvE,IAAA,sDAAwB,EACvB,gBAAgB,EAChB,iCAAiC,CACjC,CAAC;QAEF,IAAA,0BAAW,EAAC,GAAG,EAAE,2CAA2C,CAAC,CAAC;QAC9D,mBAAmB,CAAI;YACtB,gBAAgB;YAChB,GAAG;YACH,MAAM;YACN,KAAK;YACL,EAAE;YACF,UAAU;YACV,SAAS,EAAE,IAAI;YACf,YAAY;YACZ,KAAK;YACL,gBAAgB,EAAE,UAAU;SAC5B,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACX,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC;IACH,CAAC,EAAE;QACF,gBAAgB;QAChB,GAAG;QACH,MAAM;QACN,IAAI;QACJ,EAAE;QACF,UAAU;QACV,YAAY;QACZ,mBAAmB;QACnB,qBAAqB;QACrB,KAAK;QACL,KAAK;QACL,UAAU;KACV,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAhEW,QAAA,WAAW,eAgEtB"}