remotion 4.0.537 → 4.0.539

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 (179) hide show
  1. package/dist/cjs/AbsoluteFill.d.ts +62 -62
  2. package/dist/cjs/AbsoluteFill.js +3 -3
  3. package/dist/cjs/AbsoluteFillElement.d.ts +1 -1
  4. package/dist/cjs/AbsoluteFillElement.js +43 -5
  5. package/dist/cjs/CanUseRemotionHooks.js +1 -1
  6. package/dist/cjs/Composition.js +5 -11
  7. package/dist/cjs/CompositionErrorBoundary.js +5 -2
  8. package/dist/cjs/CompositionManager.d.ts +1 -0
  9. package/dist/cjs/CompositionManagerProvider.d.ts +1 -1
  10. package/dist/cjs/CompositionManagerProvider.js +1 -1
  11. package/dist/cjs/CompositionRegistryProvider.d.ts +1 -1
  12. package/dist/cjs/CompositionRegistryProvider.js +1 -1
  13. package/dist/cjs/EditorProps.d.ts +2 -2
  14. package/dist/cjs/EditorProps.js +1 -1
  15. package/dist/cjs/Folder.js +1 -1
  16. package/dist/cjs/HtmlInCanvas.d.ts +58 -67
  17. package/dist/cjs/HtmlInCanvas.js +22 -9
  18. package/dist/cjs/HtmlInCanvasFallback.d.ts +6 -0
  19. package/dist/cjs/HtmlInCanvasFallback.js +39 -0
  20. package/dist/cjs/IFrame.d.ts +2 -2
  21. package/dist/cjs/IFrame.js +1 -1
  22. package/dist/cjs/Img.d.ts +62 -62
  23. package/dist/cjs/Img.js +160 -132
  24. package/dist/cjs/Interactive.d.ts +147 -145
  25. package/dist/cjs/Interactive.js +2 -2
  26. package/dist/cjs/RemotionRoot.js +1 -1
  27. package/dist/cjs/RenderAssetManager.js +1 -1
  28. package/dist/cjs/Sequence.js +37 -27
  29. package/dist/cjs/SequenceActivityBoundary.js +1 -1
  30. package/dist/cjs/SequenceActivityBudget.js +1 -1
  31. package/dist/cjs/SequenceActivitySuspensionProvider.js +1 -1
  32. package/dist/cjs/SequenceManager.d.ts +6 -0
  33. package/dist/cjs/SequenceManager.js +71 -27
  34. package/dist/cjs/SequenceRegistryProvider.js +16 -3
  35. package/dist/cjs/TimelineContext.js +1 -1
  36. package/dist/cjs/Track.js +2 -2
  37. package/dist/cjs/animated-image/AnimatedImage.d.ts +69 -69
  38. package/dist/cjs/animated-image/AnimatedImage.js +6 -6
  39. package/dist/cjs/animated-image/canvas.d.ts +6 -5
  40. package/dist/cjs/animated-image/canvas.js +1 -1
  41. package/dist/cjs/animated-image/create-image-decoder.d.ts +1 -1
  42. package/dist/cjs/animated-image/decode-image.d.ts +1 -1
  43. package/dist/cjs/animated-image/decode-image.js +2 -0
  44. package/dist/cjs/animated-image/get-duration-in-seconds.d.ts +1 -1
  45. package/dist/cjs/animated-image/index.js +1 -1
  46. package/dist/cjs/audio/AudioForPreview.js +5 -28
  47. package/dist/cjs/audio/AudioForRendering.d.ts +5 -20
  48. package/dist/cjs/audio/AudioForRendering.js +44 -5
  49. package/dist/cjs/audio/html5-audio.d.ts +36 -36
  50. package/dist/cjs/audio/html5-audio.js +8 -10
  51. package/dist/cjs/audio/index.js +1 -1
  52. package/dist/cjs/audio/shared-audio-tags.js +10 -16
  53. package/dist/cjs/audio/shared-element-source-node.d.ts +1 -1
  54. package/dist/cjs/audio/use-audio-context.d.ts +2 -1
  55. package/dist/cjs/audio/wait-until-actually-resumed.d.ts +2 -1
  56. package/dist/cjs/buffer-until-first-frame.d.ts +4 -3
  57. package/dist/cjs/buffering.js +1 -1
  58. package/dist/cjs/cancel-render.js +3 -0
  59. package/dist/cjs/canvas-image/CanvasImage.d.ts +71 -71
  60. package/dist/cjs/canvas-image/CanvasImage.js +27 -24
  61. package/dist/cjs/canvas-image/index.js +1 -1
  62. package/dist/cjs/codec.d.ts +1 -1
  63. package/dist/cjs/committed-metadata.d.ts +4 -2
  64. package/dist/cjs/composition-registry-fallback.d.ts +4 -2
  65. package/dist/cjs/composition-registry-fallback.js +12 -10
  66. package/dist/cjs/create-element-source-proxy.js +46 -6
  67. package/dist/cjs/default-css.d.ts +1 -1
  68. package/dist/cjs/delay-render.d.ts +2 -1
  69. package/dist/cjs/delay-render.js +4 -2
  70. package/dist/cjs/easing.js +3 -1
  71. package/dist/cjs/effects/Solid.d.ts +60 -60
  72. package/dist/cjs/effects/Solid.js +2 -2
  73. package/dist/cjs/effects/canvas-pool.js +6 -9
  74. package/dist/cjs/effects/create-curve-sampler.d.ts +1 -0
  75. package/dist/cjs/effects/create-curve-sampler.js +100 -0
  76. package/dist/cjs/effects/effect-source-observer.d.ts +13 -0
  77. package/dist/cjs/effects/effect-source-observer.js +177 -0
  78. package/dist/cjs/effects/index.js +1 -1
  79. package/dist/cjs/effects/run-effect-chain.js +3 -0
  80. package/dist/cjs/effects/use-memoized-effects.d.ts +2 -1
  81. package/dist/cjs/effects/use-memoized-effects.js +29 -13
  82. package/dist/cjs/freeze.js +2 -2
  83. package/dist/cjs/get-cross-origin-value.d.ts +1 -1
  84. package/dist/cjs/get-effective-visual-mode-value.d.ts +2 -2
  85. package/dist/cjs/index.d.ts +3 -1
  86. package/dist/cjs/index.js +32 -32
  87. package/dist/cjs/interactivity-schema.d.ts +286 -286
  88. package/dist/cjs/internals.d.ts +412 -595
  89. package/dist/cjs/internals.js +11 -0
  90. package/dist/cjs/interpolate-colors.d.ts +1 -1
  91. package/dist/cjs/interpolate-colors.js +28 -23
  92. package/dist/cjs/interpolate.d.ts +2 -9
  93. package/dist/cjs/interpolate.js +37 -33
  94. package/dist/cjs/is-player.js +1 -1
  95. package/dist/cjs/loading-indicator.js +2 -6
  96. package/dist/cjs/log-level-context.d.ts +1 -1
  97. package/dist/cjs/log.d.ts +12 -7
  98. package/dist/cjs/loop/index.js +1 -1
  99. package/dist/cjs/media-resource-manager.d.ts +1 -1
  100. package/dist/cjs/media-tag-current-time-timestamp.d.ts +1 -1
  101. package/dist/cjs/no-react.d.ts +85 -91
  102. package/dist/cjs/no-react.js +2 -2
  103. package/dist/cjs/nonce.d.ts +11 -0
  104. package/dist/cjs/nonce.js +42 -0
  105. package/dist/cjs/play-and-handle-not-allowed-error.d.ts +5 -4
  106. package/dist/cjs/playback-logging.d.ts +2 -1
  107. package/dist/cjs/playback-pitch-context.d.ts +1 -0
  108. package/dist/cjs/playback-pitch-context.js +5 -0
  109. package/dist/cjs/prefetch-state.js +1 -1
  110. package/dist/cjs/prefetch.d.ts +7 -6
  111. package/dist/cjs/prefetch.js +30 -5
  112. package/dist/cjs/props-if-has-props.d.ts +2 -1
  113. package/dist/cjs/prores-profile.d.ts +1 -1
  114. package/dist/cjs/register-root.d.ts +2 -2
  115. package/dist/cjs/render-resource-manager.d.ts +1 -1
  116. package/dist/cjs/render-types.d.ts +2 -2
  117. package/dist/cjs/resolve-video-config.d.ts +8 -8
  118. package/dist/cjs/runtime-value-store.d.ts +1 -1
  119. package/dist/cjs/scale-value.d.ts +1 -1
  120. package/dist/cjs/seek.d.ts +3 -2
  121. package/dist/cjs/sequence-activity-context.js +1 -1
  122. package/dist/cjs/sequence-crop.js +1 -4
  123. package/dist/cjs/sequence-order-marker.d.ts +58 -0
  124. package/dist/cjs/sequence-order-marker.js +44 -0
  125. package/dist/cjs/series/flatten-children.d.ts +3 -1
  126. package/dist/cjs/series/index.js +4 -5
  127. package/dist/cjs/series/is-inside-series.js +2 -2
  128. package/dist/cjs/spring/index.d.ts +1 -1
  129. package/dist/cjs/spring/index.js +2 -4
  130. package/dist/cjs/spring/measure-spring.d.ts +1 -1
  131. package/dist/cjs/spring/spring-utils.d.ts +1 -1
  132. package/dist/cjs/spring/spring-utils.js +11 -5
  133. package/dist/cjs/timeline-position-state.d.ts +1 -1
  134. package/dist/cjs/timeline-position-state.js +2 -2
  135. package/dist/cjs/use-amplification.d.ts +4 -7
  136. package/dist/cjs/use-current-scale.d.ts +2 -2
  137. package/dist/cjs/use-delay-render.d.ts +2 -1
  138. package/dist/cjs/use-lazy-component.d.ts +1 -1
  139. package/dist/cjs/use-lazy-component.js +20 -9
  140. package/dist/cjs/use-media-buffering.d.ts +3 -2
  141. package/dist/cjs/use-media-duration.d.ts +4 -0
  142. package/dist/cjs/use-media-duration.js +36 -0
  143. package/dist/cjs/use-media-enabled.d.ts +1 -1
  144. package/dist/cjs/use-media-enabled.js +1 -1
  145. package/dist/cjs/use-media-in-timeline.d.ts +1 -1
  146. package/dist/cjs/use-media-playback.d.ts +3 -3
  147. package/dist/cjs/use-media-tag.d.ts +2 -2
  148. package/dist/cjs/use-pixel-density.d.ts +1 -1
  149. package/dist/cjs/use-premounting.d.ts +1 -1
  150. package/dist/cjs/use-premounting.js +6 -2
  151. package/dist/cjs/use-request-video-callback-time.d.ts +3 -3
  152. package/dist/cjs/use-schema.d.ts +4 -4
  153. package/dist/cjs/use-video.js +1 -1
  154. package/dist/cjs/validate-media-props.d.ts +1 -1
  155. package/dist/cjs/validation/validate-default-props.d.ts +1 -1
  156. package/dist/cjs/version.d.ts +1 -1
  157. package/dist/cjs/version.js +1 -1
  158. package/dist/cjs/video/MediaPlaybackError.js +0 -1
  159. package/dist/cjs/video/OffthreadVideo.js +5 -5
  160. package/dist/cjs/video/OffthreadVideoForRendering.js +9 -7
  161. package/dist/cjs/video/VideoForPreview.js +6 -28
  162. package/dist/cjs/video/VideoForRendering.d.ts +5 -3
  163. package/dist/cjs/video/VideoForRendering.js +4 -2
  164. package/dist/cjs/video/duration-state.d.ts +1 -0
  165. package/dist/cjs/video/duration-state.js +8 -2
  166. package/dist/cjs/video/emit-video-frame.d.ts +1 -1
  167. package/dist/cjs/video/html5-video.d.ts +36 -36
  168. package/dist/cjs/video/html5-video.js +8 -10
  169. package/dist/cjs/video/index.js +2 -2
  170. package/dist/cjs/video/seek-until-right.d.ts +3 -2
  171. package/dist/cjs/warn-about-non-seekable-media.d.ts +1 -1
  172. package/dist/cjs/with-interactivity-schema.d.ts +1 -1
  173. package/dist/cjs/with-interactivity-schema.js +3 -8
  174. package/dist/cjs/wrap-remotion-context.d.ts +4 -4
  175. package/dist/cjs/wrap-remotion-context.js +2 -2
  176. package/dist/esm/index.mjs +1304 -819
  177. package/dist/esm/no-react.mjs +74 -52
  178. package/dist/esm/version.mjs +1 -1
  179. package/package.json +4 -4
@@ -58,7 +58,9 @@ const CSSUtils = __importStar(require("./default-css.js"));
58
58
  const default_css_js_1 = require("./default-css.js");
59
59
  const DefaultPremountContext_js_1 = require("./DefaultPremountContext.js");
60
60
  const EditorProps_js_1 = require("./EditorProps.js");
61
+ const create_curve_sampler_js_1 = require("./effects/create-curve-sampler.js");
61
62
  const create_effect_js_1 = require("./effects/create-effect.js");
63
+ const effect_source_observer_js_1 = require("./effects/effect-source-observer.js");
62
64
  const run_effect_chain_js_1 = require("./effects/run-effect-chain.js");
63
65
  const use_effect_chain_state_js_1 = require("./effects/use-effect-chain-state.js");
64
66
  const use_memoized_effects_js_1 = require("./effects/use-memoized-effects.js");
@@ -72,6 +74,8 @@ const get_asset_file_name_js_1 = require("./get-asset-file-name.js");
72
74
  const get_effective_visual_mode_value_js_1 = require("./get-effective-visual-mode-value.js");
73
75
  const get_preview_dom_element_js_1 = require("./get-preview-dom-element.js");
74
76
  const get_remotion_environment_js_1 = require("./get-remotion-environment.js");
77
+ const HtmlInCanvas_js_1 = require("./HtmlInCanvas.js");
78
+ const HtmlInCanvasFallback_js_1 = require("./HtmlInCanvasFallback.js");
75
79
  const input_props_override_js_1 = require("./input-props-override.js");
76
80
  const interactivity_schema_js_1 = require("./interactivity-schema.js");
77
81
  const interpolate_keyframed_status_js_1 = require("./interpolate-keyframed-status.js");
@@ -82,6 +86,7 @@ const max_video_cache_size_js_1 = require("./max-video-cache-size.js");
82
86
  const media_resource_manager_js_1 = require("./media-resource-manager.js");
83
87
  const optimistic_sequence_deletion_js_1 = require("./optimistic-sequence-deletion.js");
84
88
  const playback_logging_js_1 = require("./playback-logging.js");
89
+ const playback_pitch_context_1 = require("./playback-pitch-context");
85
90
  const portal_node_js_1 = require("./portal-node.js");
86
91
  const prefetch_state_js_1 = require("./prefetch-state.js");
87
92
  const prefetch_js_1 = require("./prefetch.js");
@@ -146,6 +151,8 @@ const compositionSelectorRef = (0, react_1.createRef)();
146
151
  // Mark them as Internals so use don't assume this is public
147
152
  // API and are less likely to use it
148
153
  exports.Internals = {
154
+ HtmlInCanvasFallback: HtmlInCanvasFallback_js_1.HtmlInCanvasFallback,
155
+ useHtmlInCanvasUnsupportedMessage: HtmlInCanvas_js_1.useHtmlInCanvasUnsupportedMessage,
149
156
  OptimisticSequenceDeletion: optimistic_sequence_deletion_js_1.OptimisticSequenceDeletion,
150
157
  usePendingSequenceDeletions: optimistic_sequence_deletion_js_1.usePendingSequenceDeletions,
151
158
  createElementSourceProxy: create_element_source_proxy_js_1.createElementSourceProxy,
@@ -184,6 +191,7 @@ exports.Internals = {
184
191
  CompositionSetters: CompositionManagerContext_js_1.CompositionSetters,
185
192
  VisualModePropStatusesContext: SequenceManager_js_1.VisualModePropStatusesContext,
186
193
  VisualModePropStatusesRefContext: SequenceManager_js_1.VisualModePropStatusesRefContext,
194
+ VisualModePropStatusesSubscriptionContext: SequenceManager_js_1.VisualModePropStatusesSubscriptionContext,
187
195
  VisualModeBatchSettersContext: SequenceManager_js_1.VisualModeBatchSettersContext,
188
196
  VisualModeDragOverridesContext: SequenceManager_js_1.VisualModeDragOverridesContext,
189
197
  VisualModeDragOverridesRefContext: SequenceManager_js_1.VisualModeDragOverridesRefContext,
@@ -321,6 +329,7 @@ exports.Internals = {
321
329
  DelayRenderContextType: use_delay_render_js_1.DelayRenderContextType,
322
330
  TimelineContext: TimelineContext_js_1.TimelineContext,
323
331
  usePlaying: use_playing_js_1.usePlaying,
332
+ PlaybackPitchContext: playback_pitch_context_1.PlaybackPitchContext,
324
333
  PlaybackRateContext: TimelineContext_js_1.PlaybackRateContext,
325
334
  AbsoluteTimeContext: TimelineContext_js_1.AbsoluteTimeContext,
326
335
  RenderAssetManagerProvider: RenderAssetManager_js_1.RenderAssetManagerProvider,
@@ -331,8 +340,10 @@ exports.Internals = {
331
340
  cleanupEffectChainState: run_effect_chain_js_1.cleanupEffectChainState,
332
341
  runEffectChain: run_effect_chain_js_1.runEffectChain,
333
342
  useMemoizedEffects: use_memoized_effects_js_1.useMemoizedEffects,
343
+ subscribeToEffectSource: effect_source_observer_js_1.subscribeToEffectSource,
334
344
  useMemoizedEffectDefinitions: use_memoized_effects_js_1.useMemoizedEffectDefinitions,
335
345
  createEffect: create_effect_js_1.createEffect,
346
+ createCurveSampler: create_curve_sampler_js_1.createCurveSampler,
336
347
  createWebGLContextError: webgl2_context_error_js_1.createWebGLContextError,
337
348
  createWebGL2ContextError: webgl2_context_error_js_1.createWebGL2ContextError,
338
349
  computeEffectiveSchemaValuesDotNotation: use_schema_js_1.computeEffectiveSchemaValuesDotNotation,
@@ -8,4 +8,4 @@ export declare const colorNames: {
8
8
  [key: string]: number;
9
9
  };
10
10
  export declare function processColor(color: string): number;
11
- export declare const interpolateColors: (input: number, inputRange: readonly number[], outputRange: readonly string[], options?: InterpolateColorsOptions | undefined) => string;
11
+ export declare const interpolateColors: (input: number, inputRange: readonly number[], outputRange: readonly string[], options?: InterpolateColorsOptions) => string;
@@ -27,23 +27,24 @@ function modernColorCall(name) {
27
27
  MODERN_VALUE +
28
28
  '))?\\s*\\)');
29
29
  }
30
+ const cachedMatchers = {
31
+ rgb: undefined,
32
+ rgba: undefined,
33
+ hsl: undefined,
34
+ hsla: undefined,
35
+ hex3: undefined,
36
+ hex4: undefined,
37
+ hex5: undefined,
38
+ hex6: undefined,
39
+ hex8: undefined,
40
+ oklch: undefined,
41
+ oklab: undefined,
42
+ lab: undefined,
43
+ lch: undefined,
44
+ hwb: undefined,
45
+ };
30
46
  function getMatchers() {
31
- const cachedMatchers = {
32
- rgb: undefined,
33
- rgba: undefined,
34
- hsl: undefined,
35
- hsla: undefined,
36
- hex3: undefined,
37
- hex4: undefined,
38
- hex5: undefined,
39
- hex6: undefined,
40
- hex8: undefined,
41
- oklch: undefined,
42
- oklab: undefined,
43
- lab: undefined,
44
- lch: undefined,
45
- hwb: undefined,
46
- };
47
+ // These expressions have no global or sticky flags, so exec() can reuse them.
47
48
  if (cachedMatchers.rgb === undefined) {
48
49
  cachedMatchers.rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));
49
50
  cachedMatchers.rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));
@@ -137,15 +138,19 @@ function parseModernComponent(str, percentScale) {
137
138
  function parseHueAngle(str) {
138
139
  if (str === 'none')
139
140
  return 0;
140
- if (str.endsWith('rad')) {
141
- return (Number.parseFloat(str) * 180) / Math.PI;
141
+ let degrees = Number.parseFloat(str);
142
+ if (str.endsWith('grad')) {
143
+ degrees *= 0.9;
144
+ }
145
+ else if (str.endsWith('rad')) {
146
+ degrees = (degrees * 180) / Math.PI;
147
+ }
148
+ else if (str.endsWith('turn')) {
149
+ degrees *= 360;
142
150
  }
143
- if (str.endsWith('grad'))
144
- return Number.parseFloat(str) * 0.9;
145
- if (str.endsWith('turn'))
146
- return Number.parseFloat(str) * 360;
147
151
  // 'deg' suffix or plain number = degrees
148
- return Number.parseFloat(str);
152
+ const normalized = degrees % 360;
153
+ return normalized < 0 ? (normalized + 360) % 360 : normalized;
149
154
  }
150
155
  function parseModernAlpha(str) {
151
156
  if (str === undefined || str === 'none')
@@ -35,13 +35,6 @@ export declare function interpolate(input: number, inputRange: readonly number[]
35
35
  export declare const prepareNumericInterpolation: ({ inputRange, outputRange, options, }: {
36
36
  inputRange: readonly number[];
37
37
  outputRange: readonly number[];
38
- options: Omit<Partial<{
39
- easing: readonly EasingFunction[] | EasingFunction;
40
- extrapolateLeft: ExtrapolateType;
41
- extrapolateRight: ExtrapolateType;
42
- output: InterpolateOutputOption;
43
- outputType: InterpolateOutputType;
44
- posterize: number;
45
- }>, "outputType">;
46
- }) => (input: number) => number;
38
+ options: Omit<InterpolateOptions, 'outputType'>;
39
+ }) => ((input: number) => number);
47
40
  export {};
@@ -456,6 +456,21 @@ const interpolateSegment = ({ input, inputRange, outputRange, easing, extrapolat
456
456
  output,
457
457
  });
458
458
  };
459
+ const getInputForInterpolation = ({ input, inputRange, options, }) => {
460
+ const posterizedInput = (options === null || options === void 0 ? void 0 : options.posterize) === undefined
461
+ ? input
462
+ : Math.floor(input / options.posterize) * options.posterize;
463
+ const inputMin = inputRange[0];
464
+ const inputMax = inputRange[inputRange.length - 1];
465
+ if (inputRange.length === 1 ||
466
+ !((posterizedInput < inputMin && (options === null || options === void 0 ? void 0 : options.extrapolateLeft) === 'wrap') ||
467
+ (posterizedInput > inputMax && (options === null || options === void 0 ? void 0 : options.extrapolateRight) === 'wrap'))) {
468
+ return posterizedInput;
469
+ }
470
+ // Wrap before choosing a segment so the entire keyframe range repeats.
471
+ const range = inputMax - inputMin;
472
+ return ((((posterizedInput - inputMin) % range) + range) % range) + inputMin;
473
+ };
459
474
  const interpolateNumber = ({ input, inputRange, outputRange, options, }) => {
460
475
  const output = resolveOutputOption(options === null || options === void 0 ? void 0 : options.output);
461
476
  if (inputRange.length === 1) {
@@ -470,16 +485,18 @@ const interpolateNumber = ({ input, inputRange, outputRange, options, }) => {
470
485
  if ((options === null || options === void 0 ? void 0 : options.extrapolateRight) !== undefined) {
471
486
  extrapolateRight = options.extrapolateRight;
472
487
  }
473
- const posterizedInput = (options === null || options === void 0 ? void 0 : options.posterize) === undefined
474
- ? input
475
- : Math.floor(input / options.posterize) * options.posterize;
476
- const range = findRange(posterizedInput, inputRange);
488
+ const resolvedInput = getInputForInterpolation({
489
+ input,
490
+ inputRange,
491
+ options: options !== null && options !== void 0 ? options : null,
492
+ });
493
+ const range = findRange(resolvedInput, inputRange);
477
494
  const easing = resolveEasingForSegment({
478
495
  easing: easingOption,
479
496
  segmentIndex: range,
480
497
  });
481
498
  let result = interpolateSegment({
482
- input: posterizedInput,
499
+ input: resolvedInput,
483
500
  inputRange: [inputRange[range], inputRange[range + 1]],
484
501
  outputRange: [outputRange[range], outputRange[range + 1]],
485
502
  easing,
@@ -496,11 +513,11 @@ const interpolateNumber = ({ input, inputRange, outputRange, options, }) => {
496
513
  continue;
497
514
  }
498
515
  const previousSegmentEnd = inputRange[segmentIndex + 1];
499
- if (posterizedInput <= previousSegmentEnd) {
516
+ if (resolvedInput <= previousSegmentEnd) {
500
517
  continue;
501
518
  }
502
519
  const continuedSegmentValue = interpolateSegment({
503
- input: posterizedInput,
520
+ input: resolvedInput,
504
521
  inputRange: [inputRange[segmentIndex], previousSegmentEnd],
505
522
  outputRange: [outputRange[segmentIndex], outputRange[segmentIndex + 1]],
506
523
  easing: previousEasing,
@@ -516,10 +533,12 @@ const interpolateString = ({ input, inputRange, outputRange, options, outputType
516
533
  var _a;
517
534
  const initiallyParsedOutputRange = outputRange.map((output) => parseStringInterpolationValue(output, outputType));
518
535
  const hasAxisRotation = initiallyParsedOutputRange.some((parsed) => parsed.axisRotation);
519
- const posterizedInput = (options === null || options === void 0 ? void 0 : options.posterize) === undefined
520
- ? input
521
- : Math.floor(input / options.posterize) * options.posterize;
522
- const segmentIndex = inputRange.length === 1 ? 0 : findRange(posterizedInput, inputRange);
536
+ const resolvedInput = getInputForInterpolation({
537
+ input,
538
+ inputRange,
539
+ options: options !== null && options !== void 0 ? options : null,
540
+ });
541
+ const segmentIndex = inputRange.length === 1 ? 0 : findRange(resolvedInput, inputRange);
523
542
  const parsedOutputRange = hasAxisRotation
524
543
  ? initiallyParsedOutputRange.map((parsed, index) => {
525
544
  if (parsed.kind !== 'rotate') {
@@ -658,27 +677,20 @@ const interpolateDiscreteValue = ({ input, inputRange, outputRange, options, })
658
677
  : 'Non-numeric strings can only be interpolated using Easing.step1');
659
678
  }
660
679
  }
661
- const posterizedInput = (options === null || options === void 0 ? void 0 : options.posterize) === undefined
662
- ? input
663
- : Math.floor(input / options.posterize) * options.posterize;
680
+ const resolvedInput = getInputForInterpolation({
681
+ input,
682
+ inputRange,
683
+ options: options !== null && options !== void 0 ? options : null,
684
+ });
664
685
  const inputMin = inputRange[0];
665
686
  const inputMax = inputRange[inputRange.length - 1];
666
- let resolvedInput = posterizedInput;
667
687
  if (resolvedInput < inputMin) {
668
688
  if ((options === null || options === void 0 ? void 0 : options.extrapolateLeft) === 'identity') {
669
689
  throw new TypeError(typeof outputRange[0] === 'boolean'
670
690
  ? 'extrapolateLeft: "identity" is not supported for booleans'
671
691
  : 'extrapolateLeft: "identity" is not supported for non-numeric strings');
672
692
  }
673
- if ((options === null || options === void 0 ? void 0 : options.extrapolateLeft) === 'wrap') {
674
- const wrapRange = inputMax - inputMin;
675
- resolvedInput =
676
- ((((resolvedInput - inputMin) % wrapRange) + wrapRange) % wrapRange) +
677
- inputMin;
678
- }
679
- else {
680
- return outputRange[0];
681
- }
693
+ return outputRange[0];
682
694
  }
683
695
  if (resolvedInput > inputMax) {
684
696
  if ((options === null || options === void 0 ? void 0 : options.extrapolateRight) === 'identity') {
@@ -686,15 +698,7 @@ const interpolateDiscreteValue = ({ input, inputRange, outputRange, options, })
686
698
  ? 'extrapolateRight: "identity" is not supported for booleans'
687
699
  : 'extrapolateRight: "identity" is not supported for non-numeric strings');
688
700
  }
689
- if ((options === null || options === void 0 ? void 0 : options.extrapolateRight) === 'wrap') {
690
- const wrapRange = inputMax - inputMin;
691
- resolvedInput =
692
- ((((resolvedInput - inputMin) % wrapRange) + wrapRange) % wrapRange) +
693
- inputMin;
694
- }
695
- else {
696
- return outputRange[outputRange.length - 1];
697
- }
701
+ return outputRange[outputRange.length - 1];
698
702
  }
699
703
  const range = findRange(resolvedInput, inputRange);
700
704
  return resolvedInput >= inputRange[range + 1]
@@ -5,7 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const IsPlayerContext = (0, react_1.createContext)(false);
7
7
  const IsPlayerContextProvider = ({ children, }) => {
8
- return jsx_runtime_1.jsx(IsPlayerContext.Provider, { value: true, children: children });
8
+ return (0, jsx_runtime_1.jsx)(IsPlayerContext.Provider, { value: true, children: children });
9
9
  };
10
10
  exports.IsPlayerContextProvider = IsPlayerContextProvider;
11
11
  const useIsPlayer = () => {
@@ -27,8 +27,7 @@ const content = {
27
27
  };
28
28
  const Loading = () => {
29
29
  const scale = (0, use_current_scale_js_1.useCurrentScale)({ dontThrowIfOutsideOfRemotion: true });
30
- return (jsx_runtime_1.jsxs(AbsoluteFillElement_js_1.AbsoluteFillElement, { style: container, id: "remotion-comp-loading", children: [
31
- jsx_runtime_1.jsx("style", { type: "text/css", children: `
30
+ return ((0, jsx_runtime_1.jsxs)(AbsoluteFillElement_js_1.AbsoluteFillElement, { style: container, id: "remotion-comp-loading", children: [(0, jsx_runtime_1.jsx)("style", { type: "text/css", children: `
32
31
  @keyframes anim {
33
32
  from {
34
33
  opacity: 0
@@ -37,9 +36,6 @@ const Loading = () => {
37
36
  opacity: 1
38
37
  }
39
38
  }
40
- ` }), jsx_runtime_1.jsxs("div", { id: "remotion-comp-loading-content", style: content, children: [
41
- jsx_runtime_1.jsx("svg", { width: ICON_SIZE / scale, height: ICON_SIZE / scale, viewBox: "-100 -100 400 400", style: rotate, children: jsx_runtime_1.jsx("path", { fill: "#555", stroke: "#555", strokeWidth: "100", strokeLinejoin: "round", d: "M 2 172 a 196 100 0 0 0 195 5 A 196 240 0 0 0 100 2.259 A 196 240 0 0 0 2 172 z" }) }), jsx_runtime_1.jsxs("p", { style: { ...label, fontSize: LABEL_SIZE / scale }, children: ["Resolving ", '<Suspense>', "..."] })
42
- ] })
43
- ] }));
39
+ ` }), (0, jsx_runtime_1.jsxs)("div", { id: "remotion-comp-loading-content", style: content, children: [(0, jsx_runtime_1.jsx)("svg", { width: ICON_SIZE / scale, height: ICON_SIZE / scale, viewBox: "-100 -100 400 400", style: rotate, children: (0, jsx_runtime_1.jsx)("path", { fill: "#555", stroke: "#555", strokeWidth: "100", strokeLinejoin: "round", d: "M 2 172 a 196 100 0 0 0 195 5 A 196 240 0 0 0 100 2.259 A 196 240 0 0 0 2 172 z" }) }), (0, jsx_runtime_1.jsxs)("p", { style: { ...label, fontSize: LABEL_SIZE / scale }, children: ["Resolving ", '<Suspense>', "..."] })] })] }));
44
40
  };
45
41
  exports.Loading = Loading;
@@ -5,5 +5,5 @@ export type LoggingContextValue = {
5
5
  mountTime: number;
6
6
  };
7
7
  export declare const LogLevelContext: React.Context<LoggingContextValue>;
8
- export declare const useLogLevel: () => "error" | "info" | "trace" | "verbose" | "warn";
8
+ export declare const useLogLevel: () => LogLevel;
9
9
  export declare const useMountTime: () => number;
package/dist/cjs/log.d.ts CHANGED
@@ -1,15 +1,20 @@
1
- export declare const logLevels: readonly ["trace", "verbose", "info", "warn", "error"];
1
+ export declare const logLevels: readonly ['trace', 'verbose', 'info', 'warn', 'error'];
2
2
  export type LogLevel = (typeof logLevels)[number];
3
- export declare const isEqualOrBelowLogLevel: (currentLevel: "error" | "info" | "trace" | "verbose" | "warn", level: "error" | "info" | "trace" | "verbose" | "warn") => boolean;
3
+ export declare const isEqualOrBelowLogLevel: (currentLevel: LogLevel, level: LogLevel) => boolean;
4
4
  type Options = {
5
5
  logLevel: LogLevel;
6
6
  tag: string | null;
7
7
  };
8
+ declare const verbose: (options: Options, ...args: Parameters<typeof console.log>) => void;
9
+ declare const trace: (options: Options, ...args: Parameters<typeof console.log>) => void;
10
+ declare const info: (options: Options, ...args: Parameters<typeof console.log>) => void;
11
+ declare const warn: (options: Options, ...args: Parameters<typeof console.log>) => void;
12
+ declare const error: (options: Options, ...args: Parameters<typeof console.log>) => void;
8
13
  export declare const Log: {
9
- trace: (options: Options, message?: any, ...optionalParams: any[]) => void;
10
- verbose: (options: Options, message?: any, ...optionalParams: any[]) => void;
11
- info: (options: Options, message?: any, ...optionalParams: any[]) => void;
12
- warn: (options: Options, message?: any, ...optionalParams: any[]) => void;
13
- error: (options: Options, message?: any, ...optionalParams: any[]) => void;
14
+ trace: typeof trace;
15
+ verbose: typeof verbose;
16
+ info: typeof info;
17
+ warn: typeof warn;
18
+ error: typeof error;
14
19
  };
15
20
  export {};
@@ -115,7 +115,7 @@ const Loop = ({ durationInFrames, times = Infinity, children, name, showInTimeli
115
115
  if (actualTimes === 0) {
116
116
  return null;
117
117
  }
118
- return (jsx_runtime_1.jsx(exports.LoopTimelineContext.Provider, { value: timelineContext, children: jsx_runtime_1.jsx(loop_context_js_1.LoopContext.Provider, { value: loopContext, children: jsx_runtime_1.jsx(Sequence_js_1.Sequence, { durationInFrames: durationInFrames, from: from, name: name !== null && name !== void 0 ? name : '<Loop>', _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/loop", _remotionInternalLoopDisplay: loopDisplay, ...props, showInTimeline: showInTimeline, playbackRate: playbackRate, children: children }) }) }));
118
+ return ((0, jsx_runtime_1.jsx)(exports.LoopTimelineContext.Provider, { value: timelineContext, children: (0, jsx_runtime_1.jsx)(loop_context_js_1.LoopContext.Provider, { value: loopContext, children: (0, jsx_runtime_1.jsx)(Sequence_js_1.Sequence, { durationInFrames: durationInFrames, from: from, name: name !== null && name !== void 0 ? name : '<Loop>', _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/loop", _remotionInternalLoopDisplay: loopDisplay, ...props, showInTimeline: showInTimeline, playbackRate: playbackRate, children: children }) }) }));
119
119
  };
120
120
  exports.Loop = Loop;
121
121
  exports.Loop.useLoop = useLoop;
@@ -4,7 +4,7 @@ export type MediaResourceLease<T> = {
4
4
  release: () => void;
5
5
  };
6
6
  export type MediaResourceManager = {
7
- acquire: <T>({ key, create }: {
7
+ acquire: <T>({ key, create, }: {
8
8
  key: string;
9
9
  create: () => {
10
10
  resource: T;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- export declare const useCurrentTimeOfMediaTagWithUpdateTimeStamp: (mediaRef: React.RefObject<HTMLAudioElement | HTMLVideoElement | null>) => React.RefObject<{
2
+ export declare const useCurrentTimeOfMediaTagWithUpdateTimeStamp: (mediaRef: React.RefObject<HTMLVideoElement | HTMLAudioElement | null>) => React.RefObject<{
3
3
  time: number;
4
4
  lastUpdate: number;
5
5
  }>;