remotion 4.0.481 → 4.0.483

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 (41) hide show
  1. package/dist/cjs/CompositionManager.d.ts +1 -0
  2. package/dist/cjs/HtmlInCanvas.d.ts +74 -0
  3. package/dist/cjs/HtmlInCanvas.js +68 -26
  4. package/dist/cjs/Img.d.ts +7 -0
  5. package/dist/cjs/Img.js +5 -5
  6. package/dist/cjs/Interactive.d.ts +86 -1
  7. package/dist/cjs/Interactive.js +4 -2
  8. package/dist/cjs/Sequence.d.ts +1 -0
  9. package/dist/cjs/Sequence.js +25 -6
  10. package/dist/cjs/audio/AudioForPreview.js +3 -3
  11. package/dist/cjs/audio/html5-audio.js +6 -2
  12. package/dist/cjs/canvas-image/CanvasImage.d.ts +7 -0
  13. package/dist/cjs/canvas-image/CanvasImage.js +2 -2
  14. package/dist/cjs/easing.d.ts +5 -2
  15. package/dist/cjs/easing.js +19 -3
  16. package/dist/cjs/effects/Solid.d.ts +95 -0
  17. package/dist/cjs/effects/Solid.js +14 -5
  18. package/dist/cjs/effects/use-memoized-effects.js +1 -0
  19. package/dist/cjs/get-effective-visual-mode-value.js +2 -0
  20. package/dist/cjs/interactivity-schema.d.ts +116 -1
  21. package/dist/cjs/interactivity-schema.js +81 -1
  22. package/dist/cjs/internals.d.ts +88 -2
  23. package/dist/cjs/internals.js +2 -1
  24. package/dist/cjs/interpolate-keyframed-status.d.ts +2 -1
  25. package/dist/cjs/interpolate-keyframed-status.js +14 -11
  26. package/dist/cjs/interpolate.d.ts +3 -1
  27. package/dist/cjs/interpolate.js +56 -12
  28. package/dist/cjs/no-react.d.ts +7 -0
  29. package/dist/cjs/prefetch.js +15 -10
  30. package/dist/cjs/use-media-in-timeline.js +1 -0
  31. package/dist/cjs/use-schema.d.ts +2 -0
  32. package/dist/cjs/use-schema.js +20 -0
  33. package/dist/cjs/version.d.ts +1 -1
  34. package/dist/cjs/version.js +1 -1
  35. package/dist/cjs/video/VideoForPreview.js +2 -2
  36. package/dist/cjs/volume-position-state.d.ts +4 -4
  37. package/dist/cjs/volume-position-state.js +9 -9
  38. package/dist/esm/index.mjs +351 -79
  39. package/dist/esm/no-react.mjs +70 -11
  40. package/dist/esm/version.mjs +1 -1
  41. package/package.json +2 -2
@@ -296,6 +296,35 @@ function findRange(input, inputRange) {
296
296
  return i - 1;
297
297
  }
298
298
  var defaultEasing = (num) => num;
299
+ var shouldExtendRightForEasing = (easing) => {
300
+ return easing.remotionShouldExtendRight === true;
301
+ };
302
+ var resolveEasingForSegment = ({
303
+ easing,
304
+ segmentIndex
305
+ }) => {
306
+ if (easing === undefined) {
307
+ return defaultEasing;
308
+ }
309
+ if (typeof easing === "function") {
310
+ return easing;
311
+ }
312
+ return easing[segmentIndex];
313
+ };
314
+ var interpolateSegment = ({
315
+ input,
316
+ inputRange,
317
+ outputRange,
318
+ easing,
319
+ extrapolateLeft,
320
+ extrapolateRight
321
+ }) => {
322
+ return interpolateFunction(input, inputRange, outputRange, {
323
+ easing,
324
+ extrapolateLeft,
325
+ extrapolateRight: input > inputRange[1] && extrapolateRight === "clamp" && shouldExtendRightForEasing(easing) ? "extend" : extrapolateRight
326
+ });
327
+ };
299
328
  var interpolateNumber = ({
300
329
  input,
301
330
  inputRange,
@@ -306,15 +335,6 @@ var interpolateNumber = ({
306
335
  return outputRange[0];
307
336
  }
308
337
  const easingOption = options?.easing;
309
- const resolveEasingForSegment = (segmentIndex) => {
310
- if (easingOption === undefined) {
311
- return defaultEasing;
312
- }
313
- if (typeof easingOption === "function") {
314
- return easingOption;
315
- }
316
- return easingOption[segmentIndex];
317
- };
318
338
  let extrapolateLeft = "extend";
319
339
  if (options?.extrapolateLeft !== undefined) {
320
340
  extrapolateLeft = options.extrapolateLeft;
@@ -325,11 +345,41 @@ var interpolateNumber = ({
325
345
  }
326
346
  const posterizedInput = options?.posterize === undefined ? input : Math.floor(input / options.posterize) * options.posterize;
327
347
  const range = findRange(posterizedInput, inputRange);
328
- return interpolateFunction(posterizedInput, [inputRange[range], inputRange[range + 1]], [outputRange[range], outputRange[range + 1]], {
329
- easing: resolveEasingForSegment(range),
348
+ const easing = resolveEasingForSegment({
349
+ easing: easingOption,
350
+ segmentIndex: range
351
+ });
352
+ let result = interpolateSegment({
353
+ input: posterizedInput,
354
+ inputRange: [inputRange[range], inputRange[range + 1]],
355
+ outputRange: [outputRange[range], outputRange[range + 1]],
356
+ easing,
330
357
  extrapolateLeft,
331
358
  extrapolateRight
332
359
  });
360
+ for (let segmentIndex = 0;segmentIndex < range; segmentIndex++) {
361
+ const previousEasing = resolveEasingForSegment({
362
+ easing: easingOption,
363
+ segmentIndex
364
+ });
365
+ if (!shouldExtendRightForEasing(previousEasing)) {
366
+ continue;
367
+ }
368
+ const previousSegmentEnd = inputRange[segmentIndex + 1];
369
+ if (posterizedInput <= previousSegmentEnd) {
370
+ continue;
371
+ }
372
+ const continuedSegmentValue = interpolateSegment({
373
+ input: posterizedInput,
374
+ inputRange: [inputRange[segmentIndex], previousSegmentEnd],
375
+ outputRange: [outputRange[segmentIndex], outputRange[segmentIndex + 1]],
376
+ easing: previousEasing,
377
+ extrapolateLeft,
378
+ extrapolateRight: "extend"
379
+ });
380
+ result += continuedSegmentValue - outputRange[segmentIndex + 1];
381
+ }
382
+ return result;
333
383
  };
334
384
  var interpolateString = ({
335
385
  input,
@@ -724,6 +774,13 @@ var fromField = {
724
774
  step: 1,
725
775
  hiddenFromList: true
726
776
  };
777
+ var trimBeforeField = {
778
+ type: "number",
779
+ default: 0,
780
+ min: 0,
781
+ step: 1,
782
+ hiddenFromList: true
783
+ };
727
784
  var freezeField = {
728
785
  type: "number",
729
786
  default: null,
@@ -733,6 +790,7 @@ var freezeField = {
733
790
  var baseSchema = {
734
791
  durationInFrames: durationInFramesField,
735
792
  from: fromField,
793
+ trimBefore: trimBeforeField,
736
794
  freeze: freezeField,
737
795
  hidden: hiddenField,
738
796
  name: sequenceNameField,
@@ -752,6 +810,7 @@ var sequenceSchema = {
752
810
  };
753
811
  var baseSchemaWithoutFrom = {
754
812
  durationInFrames: durationInFramesField,
813
+ trimBefore: trimBeforeField,
755
814
  freeze: freezeField,
756
815
  hidden: hiddenField,
757
816
  name: sequenceNameField,
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var VERSION = "4.0.481";
2
+ var VERSION = "4.0.483";
3
3
  export {
4
4
  VERSION
5
5
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/core"
4
4
  },
5
5
  "name": "remotion",
6
- "version": "4.0.481",
6
+ "version": "4.0.483",
7
7
  "description": "Make videos programmatically",
8
8
  "main": "dist/cjs/index.js",
9
9
  "types": "dist/cjs/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "react-dom": "19.2.3",
36
36
  "webpack": "5.105.0",
37
37
  "zod": "4.3.6",
38
- "@remotion/eslint-config-internal": "4.0.481",
38
+ "@remotion/eslint-config-internal": "4.0.483",
39
39
  "eslint": "9.19.0",
40
40
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
41
41
  },