@remotion/web-renderer 4.0.377 → 4.0.379

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.
@@ -1,6 +1,22 @@
1
1
  import { parseTransformOrigin } from './parse-transform-origin';
2
+ const getInternalTransformOrigin = (transform) => {
3
+ var _a;
4
+ const centerX = transform.boundingClientRect.width / 2;
5
+ const centerY = transform.boundingClientRect.height / 2;
6
+ const origin = (_a = parseTransformOrigin(transform.transformOrigin)) !== null && _a !== void 0 ? _a : {
7
+ x: centerX,
8
+ y: centerY,
9
+ };
10
+ return origin;
11
+ };
12
+ const getGlobalTransformOrigin = (transform) => {
13
+ const { x: originX, y: originY } = getInternalTransformOrigin(transform);
14
+ return {
15
+ x: originX + transform.boundingClientRect.left,
16
+ y: originY + transform.boundingClientRect.top,
17
+ };
18
+ };
2
19
  export const calculateTransforms = (element) => {
3
- var _a, _b;
4
20
  // Compute the cumulative transform by traversing parent nodes
5
21
  let parent = element;
6
22
  const transforms = [];
@@ -32,21 +48,18 @@ export const calculateTransforms = (element) => {
32
48
  transform.boundingClientRect = transform.rect.getBoundingClientRect();
33
49
  }
34
50
  const dimensions = transforms[0].boundingClientRect;
35
- const nativeTransformOrigin = (_a = parseTransformOrigin(transforms[0].transformOrigin)) !== null && _a !== void 0 ? _a : { x: dimensions.width / 2, y: dimensions.height / 2 };
36
- let totalMatrix = new DOMMatrix();
51
+ const nativeTransformOrigin = getInternalTransformOrigin(transforms[0]);
52
+ const totalMatrix = new DOMMatrix();
37
53
  for (const transform of transforms.slice().reverse()) {
38
54
  if (!transform.boundingClientRect) {
39
55
  throw new Error('Bounding client rect not found');
40
56
  }
41
- const centerX = transform.boundingClientRect.width / 2;
42
- const centerY = transform.boundingClientRect.height / 2;
43
- const { x: originX, y: originY } = (_b = parseTransformOrigin(transform.transformOrigin)) !== null && _b !== void 0 ? _b : { x: centerX, y: centerY };
44
- const deviationFromX = centerX - originX;
45
- const deviationFromY = centerY - originY;
46
- totalMatrix = totalMatrix
47
- .translate(-deviationFromX, -deviationFromY)
57
+ const globalTransformOrigin = getGlobalTransformOrigin(transform);
58
+ const transformMatrix = new DOMMatrix()
59
+ .translate(globalTransformOrigin.x, globalTransformOrigin.y)
48
60
  .multiply(transform.matrix)
49
- .translate(deviationFromX, deviationFromY);
61
+ .translate(-globalTransformOrigin.x, -globalTransformOrigin.y);
62
+ totalMatrix.multiplySelf(transformMatrix);
50
63
  }
51
64
  return {
52
65
  dimensions,
@@ -2,13 +2,7 @@ import { calculateTransforms } from './calculate-transforms';
2
2
  import { turnSvgIntoDrawable } from './compose-svg';
3
3
  export const composeCanvas = async (canvas, context) => {
4
4
  const { totalMatrix, reset, dimensions } = calculateTransforms(canvas);
5
- const translateX = dimensions.left + dimensions.width / 2;
6
- const translateY = dimensions.top + dimensions.height / 2;
7
- const matrix = new DOMMatrix()
8
- .translate(translateX, translateY)
9
- .multiply(totalMatrix)
10
- .translate(-translateX, -translateY);
11
- context.setTransform(matrix);
5
+ context.setTransform(totalMatrix);
12
6
  const drawable = canvas instanceof SVGSVGElement
13
7
  ? await turnSvgIntoDrawable(canvas)
14
8
  : canvas;
@@ -7368,6 +7368,22 @@ var parseTransformOrigin = (transformOrigin) => {
7368
7368
  };
7369
7369
 
7370
7370
  // src/calculate-transforms.ts
7371
+ var getInternalTransformOrigin = (transform) => {
7372
+ const centerX = transform.boundingClientRect.width / 2;
7373
+ const centerY = transform.boundingClientRect.height / 2;
7374
+ const origin = parseTransformOrigin(transform.transformOrigin) ?? {
7375
+ x: centerX,
7376
+ y: centerY
7377
+ };
7378
+ return origin;
7379
+ };
7380
+ var getGlobalTransformOrigin = (transform) => {
7381
+ const { x: originX, y: originY } = getInternalTransformOrigin(transform);
7382
+ return {
7383
+ x: originX + transform.boundingClientRect.left,
7384
+ y: originY + transform.boundingClientRect.top
7385
+ };
7386
+ };
7371
7387
  var calculateTransforms = (element) => {
7372
7388
  let parent = element;
7373
7389
  const transforms = [];
@@ -7396,18 +7412,15 @@ var calculateTransforms = (element) => {
7396
7412
  transform.boundingClientRect = transform.rect.getBoundingClientRect();
7397
7413
  }
7398
7414
  const dimensions = transforms[0].boundingClientRect;
7399
- const nativeTransformOrigin = parseTransformOrigin(transforms[0].transformOrigin) ?? { x: dimensions.width / 2, y: dimensions.height / 2 };
7400
- let totalMatrix = new DOMMatrix;
7415
+ const nativeTransformOrigin = getInternalTransformOrigin(transforms[0]);
7416
+ const totalMatrix = new DOMMatrix;
7401
7417
  for (const transform of transforms.slice().reverse()) {
7402
7418
  if (!transform.boundingClientRect) {
7403
7419
  throw new Error("Bounding client rect not found");
7404
7420
  }
7405
- const centerX = transform.boundingClientRect.width / 2;
7406
- const centerY = transform.boundingClientRect.height / 2;
7407
- const { x: originX, y: originY } = parseTransformOrigin(transform.transformOrigin) ?? { x: centerX, y: centerY };
7408
- const deviationFromX = centerX - originX;
7409
- const deviationFromY = centerY - originY;
7410
- totalMatrix = totalMatrix.translate(-deviationFromX, -deviationFromY).multiply(transform.matrix).translate(deviationFromX, deviationFromY);
7421
+ const globalTransformOrigin = getGlobalTransformOrigin(transform);
7422
+ const transformMatrix = new DOMMatrix().translate(globalTransformOrigin.x, globalTransformOrigin.y).multiply(transform.matrix).translate(-globalTransformOrigin.x, -globalTransformOrigin.y);
7423
+ totalMatrix.multiplySelf(transformMatrix);
7411
7424
  }
7412
7425
  return {
7413
7426
  dimensions,
@@ -7458,10 +7471,7 @@ var turnSvgIntoDrawable = (svg) => {
7458
7471
  // src/compose-canvas.ts
7459
7472
  var composeCanvas = async (canvas, context) => {
7460
7473
  const { totalMatrix, reset, dimensions } = calculateTransforms(canvas);
7461
- const translateX = dimensions.left + dimensions.width / 2;
7462
- const translateY = dimensions.top + dimensions.height / 2;
7463
- const matrix = new DOMMatrix().translate(translateX, translateY).multiply(totalMatrix).translate(-translateX, -translateY);
7464
- context.setTransform(matrix);
7474
+ context.setTransform(totalMatrix);
7465
7475
  const drawable = canvas instanceof SVGSVGElement ? await turnSvgIntoDrawable(canvas) : canvas;
7466
7476
  context.drawImage(drawable, dimensions.left, dimensions.top, dimensions.width, dimensions.height);
7467
7477
  context.setTransform(new DOMMatrix);
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/web-renderer"
4
4
  },
5
5
  "name": "@remotion/web-renderer",
6
- "version": "4.0.377",
6
+ "version": "4.0.379",
7
7
  "main": "dist/index.js",
8
8
  "sideEffects": false,
9
9
  "scripts": {
@@ -16,13 +16,13 @@
16
16
  "author": "Remotion <jonny@remotion.dev>",
17
17
  "license": "UNLICENSED",
18
18
  "dependencies": {
19
- "remotion": "4.0.377",
19
+ "remotion": "4.0.379",
20
20
  "mediabunny": "1.24.5"
21
21
  },
22
22
  "devDependencies": {
23
- "@remotion/eslint-config-internal": "4.0.377",
24
- "@remotion/player": "4.0.377",
25
- "@remotion/media": "4.0.377",
23
+ "@remotion/eslint-config-internal": "4.0.379",
24
+ "@remotion/player": "4.0.379",
25
+ "@remotion/media": "4.0.379",
26
26
  "@vitejs/plugin-react": "^5.1.0",
27
27
  "@vitest/browser-playwright": "4.0.9",
28
28
  "playwright": "1.55.1",