@remotion/studio 4.0.392 → 4.0.393

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.
@@ -50299,106 +50299,6 @@ var getQualityForWebRendererQuality = (quality) => {
50299
50299
  throw new Error(`Unsupported quality: ${quality}`);
50300
50300
  }
50301
50301
  };
50302
- var parseTransformOrigin = (transformOrigin) => {
50303
- if (transformOrigin.trim() === "") {
50304
- return null;
50305
- }
50306
- const [x, y] = transformOrigin.split(" ");
50307
- return { x: parseFloat(x), y: parseFloat(y) };
50308
- };
50309
- var getInternalTransformOrigin = (transform) => {
50310
- const centerX = transform.boundingClientRect.width / 2;
50311
- const centerY = transform.boundingClientRect.height / 2;
50312
- const origin = parseTransformOrigin(transform.transformOrigin) ?? {
50313
- x: centerX,
50314
- y: centerY
50315
- };
50316
- return origin;
50317
- };
50318
- var getGlobalTransformOrigin = (transform) => {
50319
- const { x: originX, y: originY } = getInternalTransformOrigin(transform);
50320
- return {
50321
- x: originX + transform.boundingClientRect.left,
50322
- y: originY + transform.boundingClientRect.top
50323
- };
50324
- };
50325
- var calculateTransforms = (element) => {
50326
- let parent = element;
50327
- const transforms = [];
50328
- const toReset = [];
50329
- let opacity = 1;
50330
- let elementComputedStyle = null;
50331
- while (parent) {
50332
- const computedStyle = getComputedStyle(parent);
50333
- const parentOpacity = computedStyle.opacity;
50334
- if (parentOpacity && parentOpacity !== "") {
50335
- opacity *= parseFloat(parentOpacity);
50336
- }
50337
- if (parent === element) {
50338
- elementComputedStyle = computedStyle;
50339
- }
50340
- if (computedStyle.transform && computedStyle.transform !== "none" || parent === element) {
50341
- const toParse = computedStyle.transform === "none" || computedStyle.transform === "" ? undefined : computedStyle.transform;
50342
- const matrix = new DOMMatrix(toParse);
50343
- const { transform, scale, rotate: rotate2 } = parent.style;
50344
- const additionalMatrices = [];
50345
- if (rotate2 !== "") {
50346
- additionalMatrices.push(new DOMMatrix(`rotate(${rotate2})`));
50347
- }
50348
- if (scale !== "") {
50349
- additionalMatrices.push(new DOMMatrix(`scale(${scale})`));
50350
- }
50351
- additionalMatrices.push(matrix);
50352
- parent.style.transform = "none";
50353
- parent.style.scale = "none";
50354
- parent.style.rotate = "none";
50355
- transforms.push({
50356
- rect: parent,
50357
- transformOrigin: computedStyle.transformOrigin,
50358
- boundingClientRect: null,
50359
- matrices: additionalMatrices
50360
- });
50361
- const parentRef = parent;
50362
- toReset.push(() => {
50363
- parentRef.style.transform = transform;
50364
- parentRef.style.scale = scale;
50365
- parentRef.style.rotate = rotate2;
50366
- });
50367
- }
50368
- parent = parent.parentElement;
50369
- }
50370
- for (const transform of transforms) {
50371
- transform.boundingClientRect = transform.rect.getBoundingClientRect();
50372
- }
50373
- const dimensions = transforms[0].boundingClientRect;
50374
- const nativeTransformOrigin = getInternalTransformOrigin(transforms[0]);
50375
- const totalMatrix = new DOMMatrix;
50376
- for (const transform of transforms.slice().reverse()) {
50377
- if (!transform.boundingClientRect) {
50378
- throw new Error("Bounding client rect not found");
50379
- }
50380
- for (const matrix of transform.matrices) {
50381
- const globalTransformOrigin = getGlobalTransformOrigin(transform);
50382
- const transformMatrix = new DOMMatrix().translate(globalTransformOrigin.x, globalTransformOrigin.y).multiply(matrix).translate(-globalTransformOrigin.x, -globalTransformOrigin.y);
50383
- totalMatrix.multiplySelf(transformMatrix);
50384
- }
50385
- }
50386
- if (!elementComputedStyle) {
50387
- throw new Error("Element computed style not found");
50388
- }
50389
- return {
50390
- dimensions,
50391
- totalMatrix,
50392
- reset: () => {
50393
- for (const reset of toReset) {
50394
- reset();
50395
- }
50396
- },
50397
- nativeTransformOrigin,
50398
- opacity,
50399
- computedStyle: elementComputedStyle
50400
- };
50401
- };
50402
50302
  function parseValue({
50403
50303
  value,
50404
50304
  reference
@@ -50533,6 +50433,92 @@ function setBorderRadius({
50533
50433
  ctx.restore();
50534
50434
  };
50535
50435
  }
50436
+ var parseTransformOrigin = (transformOrigin) => {
50437
+ if (transformOrigin.trim() === "") {
50438
+ return null;
50439
+ }
50440
+ const [x, y] = transformOrigin.split(" ");
50441
+ return { x: parseFloat(x), y: parseFloat(y) };
50442
+ };
50443
+ var getInternalTransformOrigin = (transform) => {
50444
+ const centerX = transform.boundingClientRect.width / 2;
50445
+ const centerY = transform.boundingClientRect.height / 2;
50446
+ const origin = parseTransformOrigin(transform.transformOrigin) ?? {
50447
+ x: centerX,
50448
+ y: centerY
50449
+ };
50450
+ return origin;
50451
+ };
50452
+ var getGlobalTransformOrigin = (transform) => {
50453
+ const { x: originX, y: originY } = getInternalTransformOrigin(transform);
50454
+ return {
50455
+ x: originX + transform.boundingClientRect.left,
50456
+ y: originY + transform.boundingClientRect.top
50457
+ };
50458
+ };
50459
+ var calculateTransforms = (element) => {
50460
+ let parent = element;
50461
+ const transforms = [];
50462
+ const toReset = [];
50463
+ let opacity = 1;
50464
+ let elementComputedStyle = null;
50465
+ while (parent) {
50466
+ const computedStyle = getComputedStyle(parent);
50467
+ const parentOpacity = computedStyle.opacity;
50468
+ if (parentOpacity && parentOpacity !== "") {
50469
+ opacity *= parseFloat(parentOpacity);
50470
+ }
50471
+ if (parent === element) {
50472
+ elementComputedStyle = computedStyle;
50473
+ }
50474
+ if (computedStyle.transform && computedStyle.transform !== "none" || parent === element) {
50475
+ const toParse = computedStyle.transform === "none" || computedStyle.transform === "" ? undefined : computedStyle.transform;
50476
+ const matrix = new DOMMatrix(toParse);
50477
+ const { transform } = parent.style;
50478
+ parent.style.transform = "none";
50479
+ transforms.push({
50480
+ matrix,
50481
+ rect: parent,
50482
+ transformOrigin: computedStyle.transformOrigin,
50483
+ boundingClientRect: null
50484
+ });
50485
+ const parentRef = parent;
50486
+ toReset.push(() => {
50487
+ parentRef.style.transform = transform;
50488
+ });
50489
+ }
50490
+ parent = parent.parentElement;
50491
+ }
50492
+ for (const transform of transforms) {
50493
+ transform.boundingClientRect = transform.rect.getBoundingClientRect();
50494
+ }
50495
+ const dimensions = transforms[0].boundingClientRect;
50496
+ const nativeTransformOrigin = getInternalTransformOrigin(transforms[0]);
50497
+ const totalMatrix = new DOMMatrix;
50498
+ for (const transform of transforms.slice().reverse()) {
50499
+ if (!transform.boundingClientRect) {
50500
+ throw new Error("Bounding client rect not found");
50501
+ }
50502
+ const globalTransformOrigin = getGlobalTransformOrigin(transform);
50503
+ const transformMatrix = new DOMMatrix().translate(globalTransformOrigin.x, globalTransformOrigin.y).multiply(transform.matrix).translate(-globalTransformOrigin.x, -globalTransformOrigin.y);
50504
+ totalMatrix.multiplySelf(transformMatrix);
50505
+ }
50506
+ if (!elementComputedStyle) {
50507
+ throw new Error("Element computed style not found");
50508
+ }
50509
+ return {
50510
+ dimensions,
50511
+ totalMatrix,
50512
+ reset: () => {
50513
+ for (const reset of toReset) {
50514
+ reset();
50515
+ }
50516
+ },
50517
+ nativeTransformOrigin,
50518
+ opacity,
50519
+ computedStyle: elementComputedStyle
50520
+ };
50521
+ };
50536
50522
  var drawBorder = ({
50537
50523
  ctx,
50538
50524
  x,
@@ -50637,14 +50623,20 @@ var setTransform = ({
50637
50623
  ctx.setTransform(new DOMMatrix);
50638
50624
  };
50639
50625
  };
50640
- var drawElement = async ({
50641
- dimensions,
50642
- computedStyle,
50626
+ var drawElementToCanvas = async ({
50627
+ element,
50643
50628
  context,
50644
- draw,
50645
- opacity,
50646
- totalMatrix
50629
+ draw
50647
50630
  }) => {
50631
+ const { totalMatrix, reset, dimensions, opacity, computedStyle } = calculateTransforms(element);
50632
+ if (opacity === 0) {
50633
+ reset();
50634
+ return;
50635
+ }
50636
+ if (dimensions.width <= 0 || dimensions.height <= 0) {
50637
+ reset();
50638
+ return;
50639
+ }
50648
50640
  const background2 = computedStyle.backgroundColor;
50649
50641
  const borderRadius = parseBorderRadius({
50650
50642
  borderRadius: computedStyle.borderRadius,
@@ -50686,192 +50678,6 @@ var drawElement = async ({
50686
50678
  finishOpacity();
50687
50679
  finishBorderRadius();
50688
50680
  finishTransform();
50689
- };
50690
- function compileShader(shaderGl, source, type) {
50691
- const shader = shaderGl.createShader(type);
50692
- if (!shader) {
50693
- throw new Error("Could not create shader");
50694
- }
50695
- shaderGl.shaderSource(shader, source);
50696
- shaderGl.compileShader(shader);
50697
- if (!shaderGl.getShaderParameter(shader, shaderGl.COMPILE_STATUS)) {
50698
- const log = shaderGl.getShaderInfoLog(shader);
50699
- shaderGl.deleteShader(shader);
50700
- throw new Error("Shader compile error: " + log);
50701
- }
50702
- return shader;
50703
- }
50704
- var transformIn3d = ({
50705
- canvasWidth,
50706
- canvasHeight,
50707
- matrix,
50708
- sourceCanvas,
50709
- offsetLeft,
50710
- offsetTop
50711
- }) => {
50712
- const canvas = new OffscreenCanvas(canvasWidth, canvasHeight);
50713
- const gl = canvas.getContext("webgl");
50714
- if (!gl) {
50715
- throw new Error("WebGL not supported");
50716
- }
50717
- const vsSource = `
50718
- attribute vec2 aPosition;
50719
- attribute vec2 aTexCoord;
50720
- uniform mat4 uTransform;
50721
- uniform mat4 uProjection;
50722
- varying vec2 vTexCoord;
50723
-
50724
- void main() {
50725
- gl_Position = uProjection * uTransform * vec4(aPosition, 0.0, 1.0);
50726
- vTexCoord = aTexCoord;
50727
- }
50728
- `;
50729
- const fsSource = `
50730
- precision mediump float;
50731
- uniform sampler2D uTexture;
50732
- varying vec2 vTexCoord;
50733
-
50734
- void main() {
50735
- gl_FragColor = texture2D(uTexture, vTexCoord);
50736
- }
50737
- `;
50738
- const vertexShader = compileShader(gl, vsSource, gl.VERTEX_SHADER);
50739
- const fragmentShader = compileShader(gl, fsSource, gl.FRAGMENT_SHADER);
50740
- const program = gl.createProgram();
50741
- gl.attachShader(program, vertexShader);
50742
- gl.attachShader(program, fragmentShader);
50743
- gl.linkProgram(program);
50744
- if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
50745
- throw new Error("Program link error: " + gl.getProgramInfoLog(program));
50746
- }
50747
- gl.useProgram(program);
50748
- const vertices = new Float32Array([
50749
- offsetLeft,
50750
- offsetTop,
50751
- 0,
50752
- 0,
50753
- canvasWidth + offsetLeft,
50754
- offsetTop,
50755
- 1,
50756
- 0,
50757
- offsetLeft,
50758
- canvasHeight + offsetTop,
50759
- 0,
50760
- 1,
50761
- offsetLeft,
50762
- canvasHeight + offsetTop,
50763
- 0,
50764
- 1,
50765
- canvasWidth + offsetLeft,
50766
- offsetTop,
50767
- 1,
50768
- 0,
50769
- canvasWidth + offsetLeft,
50770
- canvasHeight + offsetTop,
50771
- 1,
50772
- 1
50773
- ]);
50774
- const vertexBuffer = gl.createBuffer();
50775
- gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
50776
- gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);
50777
- const aPosition = gl.getAttribLocation(program, "aPosition");
50778
- const aTexCoord = gl.getAttribLocation(program, "aTexCoord");
50779
- gl.enableVertexAttribArray(aPosition);
50780
- gl.vertexAttribPointer(aPosition, 2, gl.FLOAT, false, 4 * 4, 0);
50781
- gl.enableVertexAttribArray(aTexCoord);
50782
- gl.vertexAttribPointer(aTexCoord, 2, gl.FLOAT, false, 4 * 4, 2 * 4);
50783
- const texture = gl.createTexture();
50784
- gl.bindTexture(gl.TEXTURE_2D, texture);
50785
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
50786
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
50787
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
50788
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
50789
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, sourceCanvas);
50790
- const transformMatrix = matrix.toFloat32Array();
50791
- const zScale = 1e9;
50792
- const projectionMatrix = new Float32Array([
50793
- 2 / canvasWidth,
50794
- 0,
50795
- 0,
50796
- 0,
50797
- 0,
50798
- -2 / canvasHeight,
50799
- 0,
50800
- 0,
50801
- 0,
50802
- 0,
50803
- -2 / zScale,
50804
- 0,
50805
- -1,
50806
- 1,
50807
- 0,
50808
- 1
50809
- ]);
50810
- const uTransform = gl.getUniformLocation(program, "uTransform");
50811
- const uProjection = gl.getUniformLocation(program, "uProjection");
50812
- const uTexture = gl.getUniformLocation(program, "uTexture");
50813
- gl.uniformMatrix4fv(uTransform, false, transformMatrix);
50814
- gl.uniformMatrix4fv(uProjection, false, projectionMatrix);
50815
- gl.uniform1i(uTexture, 0);
50816
- gl.clearColor(0, 0, 0, 0);
50817
- gl.clear(gl.COLOR_BUFFER_BIT);
50818
- gl.enable(gl.BLEND);
50819
- gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
50820
- gl.drawArrays(gl.TRIANGLES, 0, 6);
50821
- return canvas;
50822
- };
50823
- var drawElementToCanvas = async ({
50824
- element,
50825
- context,
50826
- draw
50827
- }) => {
50828
- const { totalMatrix, reset, dimensions, opacity, computedStyle } = calculateTransforms(element);
50829
- if (opacity === 0) {
50830
- reset();
50831
- return;
50832
- }
50833
- if (dimensions.width <= 0 || dimensions.height <= 0) {
50834
- reset();
50835
- return;
50836
- }
50837
- if (!totalMatrix.is2D) {
50838
- const offsetLeft = Math.min(dimensions.left, 0);
50839
- const offsetTop = Math.min(dimensions.top, 0);
50840
- const tempCanvasWidth = Math.max(dimensions.width, dimensions.right);
50841
- const tempCanvasHeight = Math.max(dimensions.height, dimensions.bottom);
50842
- const tempCanvas = new OffscreenCanvas(tempCanvasWidth, tempCanvasHeight);
50843
- const context2 = tempCanvas.getContext("2d");
50844
- if (!context2) {
50845
- throw new Error("Could not get context");
50846
- }
50847
- const adjustedDimensions = new DOMRect(dimensions.left - offsetLeft, dimensions.top - offsetTop, dimensions.width, dimensions.height);
50848
- await drawElement({
50849
- dimensions: adjustedDimensions,
50850
- computedStyle,
50851
- context: context2,
50852
- draw,
50853
- opacity,
50854
- totalMatrix: new DOMMatrix
50855
- });
50856
- const transformed = transformIn3d({
50857
- canvasWidth: tempCanvasWidth,
50858
- canvasHeight: tempCanvasHeight,
50859
- matrix: totalMatrix,
50860
- sourceCanvas: tempCanvas,
50861
- offsetLeft,
50862
- offsetTop
50863
- });
50864
- context.drawImage(transformed, 0, 0);
50865
- } else {
50866
- await drawElement({
50867
- dimensions,
50868
- computedStyle,
50869
- context,
50870
- draw,
50871
- opacity,
50872
- totalMatrix
50873
- });
50874
- }
50875
50681
  reset();
50876
50682
  };
50877
50683
  var getCollapsedText = (span) => {