@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.
@@ -399,6 +399,8 @@ const COPY_CANVAS_ON_VOLUME_GREATER_THAN = 25e4;
399
399
  function getReadableCanvasContext(canvas) {
400
400
  if (canvas.width * canvas.height < COPY_CANVAS_ON_VOLUME_GREATER_THAN)
401
401
  return canvas.getContext("2d");
402
+ console.log("cloning canvas for is2DCanvasBlank");
403
+ const start = performance.now();
402
404
  const offscreen = document.createElement("canvas");
403
405
  offscreen.width = canvas.width;
404
406
  offscreen.height = canvas.height;
@@ -406,6 +408,11 @@ function getReadableCanvasContext(canvas) {
406
408
  if (ctx) {
407
409
  ctx.drawImage(canvas, 0, 0);
408
410
  }
411
+ console.log(
412
+ "cloned canvas for is2DCanvasBlank took",
413
+ performance.now() - start,
414
+ "ms"
415
+ );
409
416
  return offscreen.getContext("2d", { willReadFrequently: true });
410
417
  }
411
418
  function is2DCanvasBlank(canvas) {
@@ -1039,27 +1046,39 @@ function serializeElementNode(n2, options) {
1039
1046
  }
1040
1047
  if (tagName === "canvas" && recordCanvas) {
1041
1048
  if (n2.__context === "2d") {
1049
+ const start2dCanvas = performance.now();
1042
1050
  if (!is2DCanvasBlank(n2)) {
1043
1051
  attributes.rr_dataURL = n2.toDataURL(
1044
1052
  dataURLOptions.type,
1045
1053
  dataURLOptions.quality
1046
1054
  );
1047
1055
  }
1056
+ console.log("2d canvas took", performance.now() - start2dCanvas, "ms");
1048
1057
  } else if (!("__context" in n2)) {
1049
1058
  const canvasDataURL = n2.toDataURL(
1050
1059
  dataURLOptions.type,
1051
1060
  dataURLOptions.quality
1052
1061
  );
1053
- const blankCanvas = doc.createElement("canvas");
1054
- blankCanvas.width = n2.width;
1055
- blankCanvas.height = n2.height;
1056
- const blankCanvasDataURL = blankCanvas.toDataURL(
1057
- dataURLOptions.type,
1058
- dataURLOptions.quality
1059
- );
1060
- if (canvasDataURL !== blankCanvasDataURL) {
1061
- attributes.rr_dataURL = canvasDataURL;
1062
- }
1062
+ attributes.rr_dataURL = canvasDataURL;
1063
+ requestIdleCallback(() => {
1064
+ try {
1065
+ const blankCanvas = doc.createElement("canvas");
1066
+ blankCanvas.width = n2.width;
1067
+ blankCanvas.height = n2.height;
1068
+ const blankCanvasDataURL = blankCanvas.toDataURL(
1069
+ dataURLOptions.type,
1070
+ dataURLOptions.quality
1071
+ );
1072
+ if (canvasDataURL === blankCanvasDataURL) {
1073
+ console.log(
1074
+ "deleting dataURL because it's the same as blank canvas"
1075
+ );
1076
+ delete attributes.rr_dataURL;
1077
+ }
1078
+ } catch (e2) {
1079
+ console.log("did get context canvas error", e2);
1080
+ }
1081
+ });
1063
1082
  }
1064
1083
  }
1065
1084
  if (tagName === "img" && inlineImages) {