@glimt/record 0.0.23 → 0.0.25

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.
package/dist/record.cjs CHANGED
@@ -367,6 +367,8 @@ const COPY_CANVAS_ON_VOLUME_GREATER_THAN = 25e4;
367
367
  function getReadableCanvasContext(canvas) {
368
368
  if (canvas.width * canvas.height < COPY_CANVAS_ON_VOLUME_GREATER_THAN)
369
369
  return canvas.getContext("2d");
370
+ console.log("cloning canvas for is2DCanvasBlank");
371
+ const start = performance.now();
370
372
  const offscreen = document.createElement("canvas");
371
373
  offscreen.width = canvas.width;
372
374
  offscreen.height = canvas.height;
@@ -374,6 +376,11 @@ function getReadableCanvasContext(canvas) {
374
376
  if (ctx) {
375
377
  ctx.drawImage(canvas, 0, 0);
376
378
  }
379
+ console.log(
380
+ "cloned canvas for is2DCanvasBlank took",
381
+ performance.now() - start,
382
+ "ms"
383
+ );
377
384
  return offscreen.getContext("2d", { willReadFrequently: true });
378
385
  }
379
386
  function is2DCanvasBlank(canvas) {
@@ -1006,27 +1013,39 @@ function serializeElementNode(n2, options) {
1006
1013
  }
1007
1014
  if (tagName === "canvas" && recordCanvas) {
1008
1015
  if (n2.__context === "2d") {
1016
+ const start2dCanvas = performance.now();
1009
1017
  if (!is2DCanvasBlank(n2)) {
1010
1018
  attributes.rr_dataURL = n2.toDataURL(
1011
1019
  dataURLOptions.type,
1012
1020
  dataURLOptions.quality
1013
1021
  );
1014
1022
  }
1023
+ console.log("2d canvas took", performance.now() - start2dCanvas, "ms");
1015
1024
  } else if (!("__context" in n2)) {
1016
1025
  const canvasDataURL = n2.toDataURL(
1017
1026
  dataURLOptions.type,
1018
1027
  dataURLOptions.quality
1019
1028
  );
1020
- const blankCanvas = doc.createElement("canvas");
1021
- blankCanvas.width = n2.width;
1022
- blankCanvas.height = n2.height;
1023
- const blankCanvasDataURL = blankCanvas.toDataURL(
1024
- dataURLOptions.type,
1025
- dataURLOptions.quality
1026
- );
1027
- if (canvasDataURL !== blankCanvasDataURL) {
1028
- attributes.rr_dataURL = canvasDataURL;
1029
- }
1029
+ attributes.rr_dataURL = canvasDataURL;
1030
+ requestIdleCallback(() => {
1031
+ try {
1032
+ const blankCanvas = doc.createElement("canvas");
1033
+ blankCanvas.width = n2.width;
1034
+ blankCanvas.height = n2.height;
1035
+ const blankCanvasDataURL = blankCanvas.toDataURL(
1036
+ dataURLOptions.type,
1037
+ dataURLOptions.quality
1038
+ );
1039
+ if (canvasDataURL === blankCanvasDataURL) {
1040
+ console.log(
1041
+ "deleting dataURL because it's the same as blank canvas"
1042
+ );
1043
+ delete attributes.rr_dataURL;
1044
+ }
1045
+ } catch (e2) {
1046
+ console.log("did get context canvas error", e2);
1047
+ }
1048
+ });
1030
1049
  }
1031
1050
  }
1032
1051
  if (tagName === "img" && inlineImages) {