html2canvas-pro 1.6.7 → 2.0.1

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 (133) hide show
  1. package/README.md +1 -0
  2. package/demo/image-smoothing-demo.html +256 -0
  3. package/demo/refactoring-test.html +602 -0
  4. package/dist/html2canvas-pro.esm.js +3391 -1491
  5. package/dist/html2canvas-pro.esm.js.map +1 -1
  6. package/dist/html2canvas-pro.js +3394 -1490
  7. package/dist/html2canvas-pro.js.map +1 -1
  8. package/dist/html2canvas-pro.min.js +5 -4
  9. package/dist/lib/__tests__/index.js +8 -2
  10. package/dist/lib/__tests__/index.js.map +1 -1
  11. package/dist/lib/config.js +72 -0
  12. package/dist/lib/config.js.map +1 -0
  13. package/dist/lib/core/__tests__/cache-storage.js +6 -3
  14. package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
  15. package/dist/lib/core/__tests__/cache-storage.test.js +158 -0
  16. package/dist/lib/core/__tests__/cache-storage.test.js.map +1 -0
  17. package/dist/lib/core/__tests__/validator.js +296 -0
  18. package/dist/lib/core/__tests__/validator.js.map +1 -0
  19. package/dist/lib/core/cache-storage.js +130 -11
  20. package/dist/lib/core/cache-storage.js.map +1 -1
  21. package/dist/lib/core/context.js +5 -2
  22. package/dist/lib/core/context.js.map +1 -1
  23. package/dist/lib/core/debugger.js +3 -0
  24. package/dist/lib/core/debugger.js.map +1 -1
  25. package/dist/lib/core/origin-checker.js +54 -0
  26. package/dist/lib/core/origin-checker.js.map +1 -0
  27. package/dist/lib/core/performance-monitor.js +208 -0
  28. package/dist/lib/core/performance-monitor.js.map +1 -0
  29. package/dist/lib/core/validator.js +501 -0
  30. package/dist/lib/core/validator.js.map +1 -0
  31. package/dist/lib/css/index.js +4 -0
  32. package/dist/lib/css/index.js.map +1 -1
  33. package/dist/lib/css/property-descriptors/__tests__/background-tests.js +7 -1
  34. package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -1
  35. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js +273 -0
  36. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js.map +1 -0
  37. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js +142 -0
  38. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js.map +1 -0
  39. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js +167 -0
  40. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js.map +1 -0
  41. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js +61 -0
  42. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js.map +1 -0
  43. package/dist/lib/css/property-descriptors/clip-path.js +190 -0
  44. package/dist/lib/css/property-descriptors/clip-path.js.map +1 -0
  45. package/dist/lib/css/property-descriptors/image-rendering.js +34 -0
  46. package/dist/lib/css/property-descriptors/image-rendering.js.map +1 -0
  47. package/dist/lib/css/types/__tests__/image-tests.js +7 -1
  48. package/dist/lib/css/types/__tests__/image-tests.js.map +1 -1
  49. package/dist/lib/css/types/color-math.js +26 -0
  50. package/dist/lib/css/types/color-math.js.map +1 -0
  51. package/dist/lib/css/types/color-spaces/srgb.js +6 -6
  52. package/dist/lib/css/types/color-spaces/srgb.js.map +1 -1
  53. package/dist/lib/css/types/color-utilities.js +13 -22
  54. package/dist/lib/css/types/color-utilities.js.map +1 -1
  55. package/dist/lib/dom/__tests__/dom-normalizer.test.js +113 -0
  56. package/dist/lib/dom/__tests__/dom-normalizer.test.js.map +1 -0
  57. package/dist/lib/dom/__tests__/element-container.test.js +109 -0
  58. package/dist/lib/dom/__tests__/element-container.test.js.map +1 -0
  59. package/dist/lib/dom/document-cloner.js +3 -3
  60. package/dist/lib/dom/document-cloner.js.map +1 -1
  61. package/dist/lib/dom/dom-normalizer.js +116 -0
  62. package/dist/lib/dom/dom-normalizer.js.map +1 -0
  63. package/dist/lib/dom/element-container.js +32 -15
  64. package/dist/lib/dom/element-container.js.map +1 -1
  65. package/dist/lib/dom/node-parser.js +16 -20
  66. package/dist/lib/dom/node-parser.js.map +1 -1
  67. package/dist/lib/dom/node-type-guards.js +44 -0
  68. package/dist/lib/dom/node-type-guards.js.map +1 -0
  69. package/dist/lib/dom/replaced-elements/iframe-element-container.js +5 -4
  70. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
  71. package/dist/lib/index.js +148 -41
  72. package/dist/lib/index.js.map +1 -1
  73. package/dist/lib/render/canvas/__tests__/background-renderer.test.js +65 -0
  74. package/dist/lib/render/canvas/__tests__/background-renderer.test.js.map +1 -0
  75. package/dist/lib/render/canvas/__tests__/border-renderer.test.js +23 -0
  76. package/dist/lib/render/canvas/__tests__/border-renderer.test.js.map +1 -0
  77. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js +30 -0
  78. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js.map +1 -0
  79. package/dist/lib/render/canvas/__tests__/text-renderer.test.js +310 -0
  80. package/dist/lib/render/canvas/__tests__/text-renderer.test.js.map +1 -0
  81. package/dist/lib/render/canvas/background-renderer.js +222 -0
  82. package/dist/lib/render/canvas/background-renderer.js.map +1 -0
  83. package/dist/lib/render/canvas/border-renderer.js +185 -0
  84. package/dist/lib/render/canvas/border-renderer.js.map +1 -0
  85. package/dist/lib/render/canvas/canvas-renderer.js +61 -689
  86. package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
  87. package/dist/lib/render/canvas/effects-renderer.js +94 -0
  88. package/dist/lib/render/canvas/effects-renderer.js.map +1 -0
  89. package/dist/lib/render/canvas/text-renderer.js +575 -0
  90. package/dist/lib/render/canvas/text-renderer.js.map +1 -0
  91. package/dist/lib/render/effects.js +17 -1
  92. package/dist/lib/render/effects.js.map +1 -1
  93. package/dist/lib/render/renderer-interface.js +3 -0
  94. package/dist/lib/render/renderer-interface.js.map +1 -0
  95. package/dist/lib/render/stacking-context.js +131 -0
  96. package/dist/lib/render/stacking-context.js.map +1 -1
  97. package/dist/types/config.d.ts +54 -0
  98. package/dist/types/core/__tests__/cache-storage.test.d.ts +1 -0
  99. package/dist/types/core/__tests__/validator.d.ts +1 -0
  100. package/dist/types/core/cache-storage.d.ts +42 -1
  101. package/dist/types/core/context.d.ts +5 -1
  102. package/dist/types/core/origin-checker.d.ts +33 -0
  103. package/dist/types/core/performance-monitor.d.ts +131 -0
  104. package/dist/types/core/validator.d.ts +132 -0
  105. package/dist/types/css/index.d.ts +4 -0
  106. package/dist/types/css/property-descriptors/__tests__/clip-path.test.d.ts +1 -0
  107. package/dist/types/css/property-descriptors/__tests__/image-rendering-integration.test.d.ts +1 -0
  108. package/dist/types/css/property-descriptors/__tests__/image-rendering-performance.test.d.ts +1 -0
  109. package/dist/types/css/property-descriptors/__tests__/image-rendering.test.d.ts +1 -0
  110. package/dist/types/css/property-descriptors/clip-path.d.ts +62 -0
  111. package/dist/types/css/property-descriptors/image-rendering.d.ts +8 -0
  112. package/dist/types/css/types/color-math.d.ts +12 -0
  113. package/dist/types/css/types/color-utilities.d.ts +2 -3
  114. package/dist/types/dom/__tests__/dom-normalizer.test.d.ts +1 -0
  115. package/dist/types/dom/__tests__/element-container.test.d.ts +1 -0
  116. package/dist/types/dom/dom-normalizer.d.ts +62 -0
  117. package/dist/types/dom/element-container.d.ts +20 -1
  118. package/dist/types/dom/node-parser.d.ts +2 -7
  119. package/dist/types/dom/node-type-guards.d.ts +33 -0
  120. package/dist/types/dom/replaced-elements/iframe-element-container.d.ts +4 -1
  121. package/dist/types/index.d.ts +48 -3
  122. package/dist/types/render/canvas/__tests__/background-renderer.test.d.ts +1 -0
  123. package/dist/types/render/canvas/__tests__/border-renderer.test.d.ts +1 -0
  124. package/dist/types/render/canvas/__tests__/effects-renderer.test.d.ts +1 -0
  125. package/dist/types/render/canvas/__tests__/text-renderer.test.d.ts +1 -0
  126. package/dist/types/render/canvas/background-renderer.d.ts +87 -0
  127. package/dist/types/render/canvas/border-renderer.d.ts +67 -0
  128. package/dist/types/render/canvas/canvas-renderer.d.ts +19 -23
  129. package/dist/types/render/canvas/effects-renderer.d.ts +65 -0
  130. package/dist/types/render/canvas/text-renderer.d.ts +75 -0
  131. package/dist/types/render/effects.d.ts +15 -1
  132. package/dist/types/render/renderer-interface.d.ts +26 -0
  133. package/package.json +2 -1
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ElementContainer = void 0;
4
4
  const index_1 = require("../css/index");
5
5
  const bounds_1 = require("../css/layout/bounds");
6
- const node_parser_1 = require("./node-parser");
6
+ const node_type_guards_1 = require("./node-type-guards");
7
7
  const debugger_1 = require("../core/debugger");
8
+ const dom_normalizer_1 = require("./dom-normalizer");
8
9
  class ElementContainer {
9
- constructor(context, element) {
10
+ constructor(context, element, options = {}) {
10
11
  this.context = context;
11
12
  this.textNodes = [];
12
13
  this.elements = [];
@@ -14,25 +15,41 @@ class ElementContainer {
14
15
  if ((0, debugger_1.isDebugging)(element, 3 /* DebuggerType.PARSE */)) {
15
16
  debugger;
16
17
  }
17
- this.styles = new index_1.CSSParsedDeclaration(context, window.getComputedStyle(element, null));
18
- if ((0, node_parser_1.isHTMLElementNode)(element)) {
19
- if (this.styles.animationDuration.some((duration) => duration > 0)) {
20
- element.style.animationDuration = '0s';
21
- }
22
- if (this.styles.transform !== null) {
23
- // getBoundingClientRect takes transforms into account
24
- element.style.transform = 'none';
25
- }
26
- if (this.styles.rotate !== null) {
27
- // Handle rotate property similarly to transform
28
- element.style.rotate = 'none';
29
- }
18
+ this.styles = new index_1.CSSParsedDeclaration(context, context.config.window.getComputedStyle(element, null));
19
+ // Side effects moved to DOMNormalizer (can be disabled via options)
20
+ const shouldNormalize = options.normalizeDom !== false; // Default: true
21
+ if (shouldNormalize && (0, node_type_guards_1.isHTMLElementNode)(element)) {
22
+ this.originalStyles = dom_normalizer_1.DOMNormalizer.normalizeElement(element, this.styles);
23
+ this.originalElement = element; // Save reference for restoration
30
24
  }
31
25
  this.bounds = (0, bounds_1.parseBounds)(this.context, element);
32
26
  if ((0, debugger_1.isDebugging)(element, 4 /* DebuggerType.RENDER */)) {
33
27
  this.flags |= 16 /* FLAGS.DEBUG_RENDER */;
34
28
  }
35
29
  }
30
+ /**
31
+ * Restore original element styles (if normalized)
32
+ * Call this after rendering is complete to clean up DOM state
33
+ */
34
+ restore() {
35
+ if (this.originalStyles && this.originalElement) {
36
+ dom_normalizer_1.DOMNormalizer.restoreElement(this.originalElement, this.originalStyles);
37
+ // Clear references to prevent memory leaks
38
+ this.originalStyles = undefined;
39
+ this.originalElement = undefined;
40
+ }
41
+ }
42
+ /**
43
+ * Recursively restore all elements in the tree
44
+ * Call this on the root container after rendering is complete
45
+ */
46
+ restoreTree() {
47
+ this.restore();
48
+ // Recursively restore all child elements
49
+ for (const child of this.elements) {
50
+ child.restoreTree();
51
+ }
52
+ }
36
53
  }
37
54
  exports.ElementContainer = ElementContainer;
38
55
  //# sourceMappingURL=element-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"element-container.js","sourceRoot":"","sources":["../../../src/dom/element-container.ts"],"names":[],"mappings":";;;AAAA,wCAAoD;AAEpD,iDAA2D;AAC3D,+CAAkD;AAElD,+CAA6D;AAS7D,MAAa,gBAAgB;IAOzB,YACuB,OAAgB,EACnC,OAAgB;QADG,YAAO,GAAP,OAAO,CAAS;QAN9B,cAAS,GAAoB,EAAE,CAAC;QAChC,aAAQ,GAAuB,EAAE,CAAC;QAE3C,UAAK,GAAG,CAAC,CAAC;QAMN,IAAI,IAAA,sBAAW,EAAC,OAAO,6BAAqB,EAAE,CAAC;YAC3C,QAAQ,CAAC;QACb,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExF,IAAI,IAAA,+BAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC3C,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBACjC,sDAAsD;gBACtD,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;YACrC,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC9B,gDAAgD;gBAChD,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAClC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEjD,IAAI,IAAA,sBAAW,EAAC,OAAO,8BAAsB,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,+BAAsB,CAAC;QACrC,CAAC;IACL,CAAC;CACJ;AAvCD,4CAuCC"}
1
+ {"version":3,"file":"element-container.js","sourceRoot":"","sources":["../../../src/dom/element-container.ts"],"names":[],"mappings":";;;AAAA,wCAAoD;AAEpD,iDAA2D;AAC3D,yDAAuD;AAEvD,+CAA6D;AAC7D,qDAAiE;AAiBjE,MAAa,gBAAgB;IASzB,YACuB,OAAgB,EACnC,OAAgB,EAChB,UAAmC,EAAE;QAFlB,YAAO,GAAP,OAAO,CAAS;QAR9B,cAAS,GAAoB,EAAE,CAAC;QAChC,aAAQ,GAAuB,EAAE,CAAC;QAE3C,UAAK,GAAG,CAAC,CAAC;QASN,IAAI,IAAA,sBAAW,EAAC,OAAO,6BAAqB,EAAE,CAAC;YAC3C,QAAQ,CAAC;QACb,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvG,oEAAoE;QACpE,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,gBAAgB;QACxE,IAAI,eAAe,IAAI,IAAA,oCAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,cAAc,GAAG,8BAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,CAAC,iCAAiC;QACrE,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEjD,IAAI,IAAA,sBAAW,EAAC,OAAO,8BAAsB,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,+BAAsB,CAAC;QACrC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,OAAO;QACH,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9C,8BAAa,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACxE,2CAA2C;YAC3C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAChC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,WAAW;QACP,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,yCAAyC;QACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,KAAK,CAAC,WAAW,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;CACJ;AA1DD,4CA0DC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isCustomElement = exports.isSlotElement = exports.isSelectElement = exports.isTextareaElement = exports.isScriptElement = exports.isStyleElement = exports.isIFrameElement = exports.isImageElement = exports.isVideoElement = exports.isCanvasElement = exports.isBodyElement = exports.isSVGElement = exports.isHTMLElement = exports.isInputElement = exports.isOLElement = exports.isLIElement = exports.isSVGElementNode = exports.isHTMLElementNode = exports.isElementNode = exports.isTextNode = exports.parseTree = void 0;
3
+ exports.isSlotElement = exports.isSelectElement = exports.isTextareaElement = exports.isScriptElement = exports.isStyleElement = exports.isIFrameElement = exports.isImageElement = exports.isVideoElement = exports.isCanvasElement = exports.isBodyElement = exports.isSVGElement = exports.isHTMLElement = exports.isInputElement = exports.parseTree = exports.isCustomElement = exports.isOLElement = exports.isLIElement = exports.isHTMLElementNode = exports.isSVGElementNode = exports.isTextNode = exports.isElementNode = void 0;
4
4
  const element_container_1 = require("./element-container");
5
5
  const text_container_1 = require("./text-container");
6
6
  const image_element_container_1 = require("./replaced-elements/image-element-container");
@@ -13,15 +13,23 @@ const select_element_container_1 = require("./elements/select-element-container"
13
13
  const textarea_element_container_1 = require("./elements/textarea-element-container");
14
14
  const iframe_element_container_1 = require("./replaced-elements/iframe-element-container");
15
15
  const bitwise_1 = require("../core/bitwise");
16
+ const node_type_guards_1 = require("./node-type-guards");
17
+ Object.defineProperty(exports, "isElementNode", { enumerable: true, get: function () { return node_type_guards_1.isElementNode; } });
18
+ Object.defineProperty(exports, "isTextNode", { enumerable: true, get: function () { return node_type_guards_1.isTextNode; } });
19
+ Object.defineProperty(exports, "isSVGElementNode", { enumerable: true, get: function () { return node_type_guards_1.isSVGElementNode; } });
20
+ Object.defineProperty(exports, "isHTMLElementNode", { enumerable: true, get: function () { return node_type_guards_1.isHTMLElementNode; } });
21
+ Object.defineProperty(exports, "isLIElement", { enumerable: true, get: function () { return node_type_guards_1.isLIElement; } });
22
+ Object.defineProperty(exports, "isOLElement", { enumerable: true, get: function () { return node_type_guards_1.isOLElement; } });
23
+ Object.defineProperty(exports, "isCustomElement", { enumerable: true, get: function () { return node_type_guards_1.isCustomElement; } });
16
24
  const LIST_OWNERS = ['OL', 'UL', 'MENU'];
17
25
  const parseNodeTree = (context, node, parent, root) => {
18
26
  for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {
19
27
  nextNode = childNode.nextSibling;
20
28
  // Fixes #2238 #1624 - Fix the issue of TextNode content being overlooked in rendering due to being perceived as blank by trim().
21
- if ((0, exports.isTextNode)(childNode) && childNode.data.length > 0) {
29
+ if ((0, node_type_guards_1.isTextNode)(childNode) && childNode.data.length > 0) {
22
30
  parent.textNodes.push(new text_container_1.TextContainer(context, childNode, parent.styles));
23
31
  }
24
- else if ((0, exports.isElementNode)(childNode)) {
32
+ else if ((0, node_type_guards_1.isElementNode)(childNode)) {
25
33
  if ((0, exports.isSlotElement)(childNode) && childNode.assignedNodes) {
26
34
  childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));
27
35
  }
@@ -62,10 +70,10 @@ const createContainer = (context, element) => {
62
70
  if ((0, exports.isSVGElement)(element)) {
63
71
  return new svg_element_container_1.SVGElementContainer(context, element);
64
72
  }
65
- if ((0, exports.isLIElement)(element)) {
73
+ if ((0, node_type_guards_1.isLIElement)(element)) {
66
74
  return new li_element_container_1.LIElementContainer(context, element);
67
75
  }
68
- if ((0, exports.isOLElement)(element)) {
76
+ if ((0, node_type_guards_1.isOLElement)(element)) {
69
77
  return new ol_element_container_1.OLElementContainer(context, element);
70
78
  }
71
79
  if ((0, exports.isInputElement)(element)) {
@@ -78,7 +86,7 @@ const createContainer = (context, element) => {
78
86
  return new textarea_element_container_1.TextareaElementContainer(context, element);
79
87
  }
80
88
  if ((0, exports.isIFrameElement)(element)) {
81
- return new iframe_element_container_1.IFrameElementContainer(context, element);
89
+ return new iframe_element_container_1.IFrameElementContainer(context, element, exports.parseTree);
82
90
  }
83
91
  return new element_container_1.ElementContainer(context, element);
84
92
  };
@@ -108,18 +116,7 @@ const createsStackingContext = (styles) => {
108
116
  (0, bitwise_1.contains)(styles.display, 536870912 /* DISPLAY.INLINE_GRID */) ||
109
117
  (0, bitwise_1.contains)(styles.display, 134217728 /* DISPLAY.INLINE_TABLE */));
110
118
  };
111
- const isTextNode = (node) => node.nodeType === Node.TEXT_NODE;
112
- exports.isTextNode = isTextNode;
113
- const isElementNode = (node) => node.nodeType === Node.ELEMENT_NODE;
114
- exports.isElementNode = isElementNode;
115
- const isHTMLElementNode = (node) => (0, exports.isElementNode)(node) && typeof node.style !== 'undefined' && !(0, exports.isSVGElementNode)(node);
116
- exports.isHTMLElementNode = isHTMLElementNode;
117
- const isSVGElementNode = (element) => typeof element.className === 'object';
118
- exports.isSVGElementNode = isSVGElementNode;
119
- const isLIElement = (node) => node.tagName === 'LI';
120
- exports.isLIElement = isLIElement;
121
- const isOLElement = (node) => node.tagName === 'OL';
122
- exports.isOLElement = isOLElement;
119
+ // Type guards moved to node-type-guards.ts and re-exported above
123
120
  const isInputElement = (node) => node.tagName === 'INPUT';
124
121
  exports.isInputElement = isInputElement;
125
122
  const isHTMLElement = (node) => node.tagName === 'HTML';
@@ -147,6 +144,5 @@ exports.isSelectElement = isSelectElement;
147
144
  const isSlotElement = (node) => node.tagName === 'SLOT';
148
145
  exports.isSlotElement = isSlotElement;
149
146
  // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name
150
- const isCustomElement = (node) => node.tagName.indexOf('-') > 0;
151
- exports.isCustomElement = isCustomElement;
147
+ // isCustomElement moved to node-type-guards.ts and re-exported above
152
148
  //# sourceMappingURL=node-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-parser.js","sourceRoot":"","sources":["../../../src/dom/node-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-parser.js","sourceRoot":"","sources":["../../../src/dom/node-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * DOM Node Type Guards
4
+ * Extracted to break circular dependencies
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.isCustomElement = exports.isOLElement = exports.isLIElement = exports.isHTMLElementNode = exports.isSVGElementNode = exports.isTextNode = exports.isElementNode = void 0;
8
+ /**
9
+ * Check if node is an Element
10
+ */
11
+ const isElementNode = (node) => node.nodeType === Node.ELEMENT_NODE;
12
+ exports.isElementNode = isElementNode;
13
+ /**
14
+ * Check if node is a Text node
15
+ */
16
+ const isTextNode = (node) => node.nodeType === Node.TEXT_NODE;
17
+ exports.isTextNode = isTextNode;
18
+ /**
19
+ * Check if element is an SVG element
20
+ */
21
+ const isSVGElementNode = (element) => typeof element.className === 'object';
22
+ exports.isSVGElementNode = isSVGElementNode;
23
+ /**
24
+ * Check if node is an HTML element
25
+ */
26
+ const isHTMLElementNode = (node) => (0, exports.isElementNode)(node) && typeof node.style !== 'undefined' && !(0, exports.isSVGElementNode)(node);
27
+ exports.isHTMLElementNode = isHTMLElementNode;
28
+ /**
29
+ * Check if node is an LI element
30
+ */
31
+ const isLIElement = (node) => node.tagName === 'LI';
32
+ exports.isLIElement = isLIElement;
33
+ /**
34
+ * Check if node is an OL element
35
+ */
36
+ const isOLElement = (node) => node.tagName === 'OL';
37
+ exports.isOLElement = isOLElement;
38
+ /**
39
+ * Check if element is a custom element
40
+ * Custom elements must have a hyphen and cannot be SVG elements
41
+ */
42
+ const isCustomElement = (element) => !(0, exports.isSVGElementNode)(element) && element.tagName.indexOf('-') > 0;
43
+ exports.isCustomElement = isCustomElement;
44
+ //# sourceMappingURL=node-type-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-type-guards.js","sourceRoot":"","sources":["../../../src/dom/node-type-guards.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,IAAU,EAAmB,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;AAArF,QAAA,aAAa,iBAAwE;AAElG;;GAEG;AACI,MAAM,UAAU,GAAG,CAAC,IAAU,EAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC;AAA5E,QAAA,UAAU,cAAkE;AAEzF;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAyB,EAAE,CACxE,OAAQ,OAAsB,CAAC,SAAS,KAAK,QAAQ,CAAC;AAD7C,QAAA,gBAAgB,oBAC6B;AAE1D;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAAuB,EAAE,CACjE,IAAA,qBAAa,EAAC,IAAI,CAAC,IAAI,OAAQ,IAAoB,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;AAD5F,QAAA,iBAAiB,qBAC2E;AAEzG;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,IAAa,EAAyB,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;AAA9E,QAAA,WAAW,eAAmE;AAE3F;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,IAAa,EAA4B,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;AAAjF,QAAA,WAAW,eAAsE;AAE9F;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,OAAgB,EAA0B,EAAE,CACxE,CAAC,IAAA,wBAAgB,EAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AADtD,QAAA,eAAe,mBACuC"}
@@ -2,21 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IFrameElementContainer = void 0;
4
4
  const element_container_1 = require("../element-container");
5
- const node_parser_1 = require("../node-parser");
6
5
  const color_1 = require("../../css/types/color");
7
6
  const color_utilities_1 = require("../../css/types/color-utilities");
8
7
  class IFrameElementContainer extends element_container_1.ElementContainer {
9
- constructor(context, iframe) {
8
+ constructor(context, iframe, parseTreeFn) {
10
9
  super(context, iframe);
11
10
  this.src = iframe.src;
12
11
  this.width = parseInt(iframe.width, 10) || 0;
13
12
  this.height = parseInt(iframe.height, 10) || 0;
14
13
  this.backgroundColor = this.styles.backgroundColor;
14
+ this.parseTreeFn = parseTreeFn;
15
15
  try {
16
16
  if (iframe.contentWindow &&
17
17
  iframe.contentWindow.document &&
18
- iframe.contentWindow.document.documentElement) {
19
- this.tree = (0, node_parser_1.parseTree)(context, iframe.contentWindow.document.documentElement);
18
+ iframe.contentWindow.document.documentElement &&
19
+ this.parseTreeFn) {
20
+ this.tree = this.parseTreeFn(context, iframe.contentWindow.document.documentElement);
20
21
  // http://www.w3.org/TR/css3-background/#special-backgrounds
21
22
  const documentBackgroundColor = iframe.contentWindow.document.documentElement
22
23
  ? (0, color_1.parseColor)(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)
@@ -1 +1 @@
1
- {"version":3,"file":"iframe-element-container.js","sourceRoot":"","sources":["../../../../src/dom/replaced-elements/iframe-element-container.ts"],"names":[],"mappings":";;;AAAA,4DAAwD;AACxD,gDAA2C;AAC3C,iDAAkE;AAClE,qEAAgE;AAGhE,MAAa,sBAAuB,SAAQ,oCAAgB;IAOxD,YAAY,OAAgB,EAAE,MAAyB;QACnD,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QACnD,IAAI,CAAC;YACD,IACI,MAAM,CAAC,aAAa;gBACpB,MAAM,CAAC,aAAa,CAAC,QAAQ;gBAC7B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,EAC/C,CAAC;gBACC,IAAI,CAAC,IAAI,GAAG,IAAA,uBAAS,EAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE9E,4DAA4D;gBAC5D,MAAM,uBAAuB,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe;oBACzE,CAAC,CAAC,IAAA,kBAAU,EACN,OAAO,EACP,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,eAAyB,CAC5F;oBACH,CAAC,CAAC,cAAM,CAAC,WAAW,CAAC;gBACzB,MAAM,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI;oBAC1D,CAAC,CAAC,IAAA,kBAAU,EACN,OAAO,EACP,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAyB,CACjF;oBACH,CAAC,CAAC,cAAM,CAAC,WAAW,CAAC;gBAEzB,IAAI,CAAC,eAAe,GAAG,IAAA,+BAAa,EAAC,uBAAuB,CAAC;oBACzD,CAAC,CAAC,IAAA,+BAAa,EAAC,mBAAmB,CAAC;wBAChC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe;wBAC7B,CAAC,CAAC,mBAAmB;oBACzB,CAAC,CAAC,uBAAuB,CAAC;YAClC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAClB,CAAC;CACJ;AA3CD,wDA2CC"}
1
+ {"version":3,"file":"iframe-element-container.js","sourceRoot":"","sources":["../../../../src/dom/replaced-elements/iframe-element-container.ts"],"names":[],"mappings":";;;AAAA,4DAAwD;AACxD,iDAAkE;AAClE,qEAAgE;AAMhE,MAAa,sBAAuB,SAAQ,oCAAgB;IAQxD,YAAY,OAAgB,EAAE,MAAyB,EAAE,WAA+B;QACpF,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC;YACD,IACI,MAAM,CAAC,aAAa;gBACpB,MAAM,CAAC,aAAa,CAAC,QAAQ;gBAC7B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe;gBAC7C,IAAI,CAAC,WAAW,EAClB,CAAC;gBACC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAErF,4DAA4D;gBAC5D,MAAM,uBAAuB,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe;oBACzE,CAAC,CAAC,IAAA,kBAAU,EACN,OAAO,EACP,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,eAAyB,CAC5F;oBACH,CAAC,CAAC,cAAM,CAAC,WAAW,CAAC;gBACzB,MAAM,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI;oBAC1D,CAAC,CAAC,IAAA,kBAAU,EACN,OAAO,EACP,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAyB,CACjF;oBACH,CAAC,CAAC,cAAM,CAAC,WAAW,CAAC;gBAEzB,IAAI,CAAC,eAAe,GAAG,IAAA,+BAAa,EAAC,uBAAuB,CAAC;oBACzD,CAAC,CAAC,IAAA,+BAAa,EAAC,mBAAmB,CAAC;wBAChC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe;wBAC7B,CAAC,CAAC,mBAAmB;oBACzB,CAAC,CAAC,uBAAuB,CAAC;YAClC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAClB,CAAC;CACJ;AA9CD,wDA8CC"}
package/dist/lib/index.js CHANGED
@@ -1,32 +1,101 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setCspNonce = exports.html2canvas = void 0;
3
+ exports.IMAGE_RENDERING = exports.PerformanceMonitor = exports.createDefaultValidator = exports.Validator = exports.Html2CanvasConfig = exports.setCspNonce = exports.html2canvas = void 0;
4
4
  const bounds_1 = require("./css/layout/bounds");
5
5
  const color_1 = require("./css/types/color");
6
6
  const color_utilities_1 = require("./css/types/color-utilities");
7
7
  const document_cloner_1 = require("./dom/document-cloner");
8
8
  const node_parser_1 = require("./dom/node-parser");
9
- const cache_storage_1 = require("./core/cache-storage");
10
9
  const canvas_renderer_1 = require("./render/canvas/canvas-renderer");
11
10
  const foreignobject_renderer_1 = require("./render/canvas/foreignobject-renderer");
12
11
  const context_1 = require("./core/context");
13
- let cspNonce;
12
+ const config_1 = require("./config");
13
+ Object.defineProperty(exports, "Html2CanvasConfig", { enumerable: true, get: function () { return config_1.Html2CanvasConfig; } });
14
+ const validator_1 = require("./core/validator");
15
+ Object.defineProperty(exports, "createDefaultValidator", { enumerable: true, get: function () { return validator_1.createDefaultValidator; } });
16
+ Object.defineProperty(exports, "Validator", { enumerable: true, get: function () { return validator_1.Validator; } });
17
+ const performance_monitor_1 = require("./core/performance-monitor");
18
+ Object.defineProperty(exports, "PerformanceMonitor", { enumerable: true, get: function () { return performance_monitor_1.PerformanceMonitor; } });
19
+ /**
20
+ * Main html2canvas function with improved configuration management
21
+ *
22
+ * @param element - Element to render
23
+ * @param options - Rendering options
24
+ * @param config - Optional configuration (for advanced use cases)
25
+ * @returns Promise resolving to rendered canvas
26
+ */
27
+ const html2canvas = (element, options = {}, config) => {
28
+ // Create configuration from element if not provided
29
+ const finalConfig = config ||
30
+ config_1.Html2CanvasConfig.fromElement(element, {
31
+ cspNonce: options.cspNonce,
32
+ cache: options.cache
33
+ });
34
+ return renderElement(element, options, finalConfig);
35
+ };
36
+ exports.html2canvas = html2canvas;
37
+ /**
38
+ * Set CSP nonce for inline styles
39
+ * @deprecated Use options.cspNonce instead
40
+ */
14
41
  const setCspNonce = (nonce) => {
15
- cspNonce = nonce;
42
+ console.warn('[html2canvas-pro] setCspNonce is deprecated. ' +
43
+ 'Pass cspNonce in options instead: html2canvas(element, { cspNonce: "..." })');
44
+ // For backward compatibility, set default config
45
+ if (typeof window !== 'undefined') {
46
+ (0, config_1.setDefaultConfig)(new config_1.Html2CanvasConfig({ window, cspNonce: nonce }));
47
+ }
16
48
  };
17
49
  exports.setCspNonce = setCspNonce;
18
- const html2canvas = (element, options = {}) => {
19
- return renderElement(element, options);
20
- };
21
- exports.html2canvas = html2canvas;
22
50
  html2canvas.setCspNonce = setCspNonce;
23
51
  exports.default = html2canvas;
24
- if (typeof window !== 'undefined') {
25
- cache_storage_1.CacheStorage.setContext(window);
26
- }
27
- const renderElement = async (element, opts) => {
52
+ var image_rendering_1 = require("./css/property-descriptors/image-rendering");
53
+ Object.defineProperty(exports, "IMAGE_RENDERING", { enumerable: true, get: function () { return image_rendering_1.IMAGE_RENDERING; } });
54
+ /**
55
+ * Coerce number-like option values for backward compatibility (e.g. string "2" from form/query).
56
+ * Mutates opts in place; callers should avoid reusing the same options object if they rely on original types.
57
+ */
58
+ const coerceNumberOptions = (opts) => {
59
+ const numKeys = [
60
+ 'scale',
61
+ 'width',
62
+ 'height',
63
+ 'imageTimeout',
64
+ 'x',
65
+ 'y',
66
+ 'windowWidth',
67
+ 'windowHeight',
68
+ 'scrollX',
69
+ 'scrollY'
70
+ ];
71
+ numKeys.forEach((key) => {
72
+ const v = opts[key];
73
+ if (v !== undefined && v !== null && typeof v !== 'number') {
74
+ const n = Number(v);
75
+ if (!Number.isNaN(n)) {
76
+ opts[key] = n;
77
+ }
78
+ }
79
+ });
80
+ };
81
+ const renderElement = async (element, opts, config) => {
82
+ coerceNumberOptions(opts);
83
+ // Input validation (unless explicitly skipped)
84
+ if (!opts.skipValidation) {
85
+ const validator = opts.validator || (0, validator_1.createDefaultValidator)();
86
+ // Validate element
87
+ const elementValidation = validator.validateElement(element);
88
+ if (!elementValidation.valid) {
89
+ throw new Error(elementValidation.error);
90
+ }
91
+ // Validate options
92
+ const optionsValidation = validator.validateOptions(opts);
93
+ if (!optionsValidation.valid) {
94
+ throw new Error(`Invalid options: ${optionsValidation.error}`);
95
+ }
96
+ }
28
97
  if (!element || typeof element !== 'object') {
29
- return Promise.reject('Invalid element provided as first argument');
98
+ throw new Error('Invalid element provided as first argument');
30
99
  }
31
100
  const ownerDocument = element.ownerDocument;
32
101
  if (!ownerDocument) {
@@ -45,17 +114,29 @@ const renderElement = async (element, opts) => {
45
114
  };
46
115
  const contextOptions = {
47
116
  logging: opts.logging ?? true,
48
- cache: opts.cache,
117
+ cache: opts.cache ?? config.cache,
49
118
  ...resourceOptions
50
119
  };
120
+ // Fallbacks for minimal window (e.g. element-like mocks) so we don't get NaN
121
+ const DEFAULT_WINDOW_WIDTH = 800;
122
+ const DEFAULT_WINDOW_HEIGHT = 600;
123
+ const DEFAULT_SCROLL = 0;
124
+ const win = defaultView;
51
125
  const windowOptions = {
52
- windowWidth: opts.windowWidth ?? defaultView.innerWidth,
53
- windowHeight: opts.windowHeight ?? defaultView.innerHeight,
54
- scrollX: opts.scrollX ?? defaultView.pageXOffset,
55
- scrollY: opts.scrollY ?? defaultView.pageYOffset
126
+ windowWidth: opts.windowWidth ?? win.innerWidth ?? DEFAULT_WINDOW_WIDTH,
127
+ windowHeight: opts.windowHeight ?? win.innerHeight ?? DEFAULT_WINDOW_HEIGHT,
128
+ scrollX: opts.scrollX ?? win.pageXOffset ?? DEFAULT_SCROLL,
129
+ scrollY: opts.scrollY ?? win.pageYOffset ?? DEFAULT_SCROLL
56
130
  };
57
131
  const windowBounds = new bounds_1.Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
58
- const context = new context_1.Context(contextOptions, windowBounds);
132
+ const context = new context_1.Context(contextOptions, windowBounds, config);
133
+ // Initialize performance monitoring if enabled
134
+ const performanceMonitoring = opts.enablePerformanceMonitoring ?? opts.logging ?? false;
135
+ const perfMonitor = new performance_monitor_1.PerformanceMonitor(context, performanceMonitoring);
136
+ perfMonitor.start('total', {
137
+ width: windowOptions.windowWidth,
138
+ height: windowOptions.windowHeight
139
+ });
59
140
  const foreignObjectRendering = opts.foreignObjectRendering ?? false;
60
141
  const cloneOptions = {
61
142
  allowTaint: opts.allowTaint ?? false,
@@ -64,15 +145,17 @@ const renderElement = async (element, opts) => {
64
145
  iframeContainer: opts.iframeContainer,
65
146
  inlineImages: foreignObjectRendering,
66
147
  copyStyles: foreignObjectRendering,
67
- cspNonce
148
+ cspNonce: opts.cspNonce ?? config.cspNonce
68
149
  };
69
150
  context.logger.debug(`Starting document clone with size ${windowBounds.width}x${windowBounds.height} scrolled to ${-windowBounds.left},${-windowBounds.top}`);
151
+ perfMonitor.start('clone');
70
152
  const documentCloner = new document_cloner_1.DocumentCloner(context, element, cloneOptions);
71
153
  const clonedElement = documentCloner.clonedReferenceElement;
72
154
  if (!clonedElement) {
73
- return Promise.reject(`Unable to find element in cloned iframe`);
155
+ throw new Error('Unable to find element in cloned iframe');
74
156
  }
75
157
  const container = await documentCloner.toIFrame(ownerDocument, windowBounds);
158
+ perfMonitor.end('clone');
76
159
  const { width, height, left, top } = (0, node_parser_1.isBodyElement)(clonedElement) || (0, node_parser_1.isHTMLElement)(clonedElement)
77
160
  ? (0, bounds_1.parseDocumentSize)(clonedElement.ownerDocument)
78
161
  : (0, bounds_1.parseBounds)(context, clonedElement);
@@ -84,32 +167,56 @@ const renderElement = async (element, opts) => {
84
167
  x: (opts.x ?? 0) + left,
85
168
  y: (opts.y ?? 0) + top,
86
169
  width: opts.width ?? Math.ceil(width),
87
- height: opts.height ?? Math.ceil(height)
170
+ height: opts.height ?? Math.ceil(height),
171
+ imageSmoothing: opts.imageSmoothing,
172
+ imageSmoothingQuality: opts.imageSmoothingQuality
88
173
  };
89
174
  let canvas;
90
- if (foreignObjectRendering) {
91
- context.logger.debug(`Document cloned, using foreign object rendering`);
92
- const renderer = new foreignobject_renderer_1.ForeignObjectRenderer(context, renderOptions);
93
- canvas = await renderer.render(clonedElement);
94
- }
95
- else {
96
- context.logger.debug(`Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`);
97
- context.logger.debug(`Starting DOM parsing`);
98
- const root = (0, node_parser_1.parseTree)(context, clonedElement);
99
- if (backgroundColor === root.styles.backgroundColor) {
100
- root.styles.backgroundColor = color_1.COLORS.TRANSPARENT;
175
+ let root;
176
+ try {
177
+ if (foreignObjectRendering) {
178
+ context.logger.debug(`Document cloned, using foreign object rendering`);
179
+ perfMonitor.start('render-foreignobject');
180
+ const renderer = new foreignobject_renderer_1.ForeignObjectRenderer(context, renderOptions);
181
+ canvas = await renderer.render(clonedElement);
182
+ perfMonitor.end('render-foreignobject');
183
+ }
184
+ else {
185
+ context.logger.debug(`Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`);
186
+ context.logger.debug(`Starting DOM parsing`);
187
+ perfMonitor.start('parse');
188
+ root = (0, node_parser_1.parseTree)(context, clonedElement);
189
+ perfMonitor.end('parse');
190
+ if (backgroundColor === root.styles.backgroundColor) {
191
+ root.styles.backgroundColor = color_1.COLORS.TRANSPARENT;
192
+ }
193
+ context.logger.debug(`Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`);
194
+ perfMonitor.start('render');
195
+ const renderer = new canvas_renderer_1.CanvasRenderer(context, renderOptions);
196
+ canvas = await renderer.render(root);
197
+ perfMonitor.end('render');
198
+ }
199
+ perfMonitor.start('cleanup');
200
+ if (opts.removeContainer ?? true) {
201
+ if (!document_cloner_1.DocumentCloner.destroy(container)) {
202
+ context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);
203
+ }
204
+ }
205
+ perfMonitor.end('cleanup');
206
+ perfMonitor.end('total');
207
+ context.logger.debug(`Finished rendering`);
208
+ // Log performance summary if monitoring is enabled
209
+ if (performanceMonitoring) {
210
+ perfMonitor.logSummary();
101
211
  }
102
- context.logger.debug(`Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`);
103
- const renderer = new canvas_renderer_1.CanvasRenderer(context, renderOptions);
104
- canvas = await renderer.render(root);
212
+ return canvas;
105
213
  }
106
- if (opts.removeContainer ?? true) {
107
- if (!document_cloner_1.DocumentCloner.destroy(container)) {
108
- context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);
214
+ finally {
215
+ // Restore DOM modifications (animations, transforms) in cloned document
216
+ if (root) {
217
+ root.restoreTree();
109
218
  }
110
219
  }
111
- context.logger.debug(`Finished rendering`);
112
- return canvas;
113
220
  };
114
221
  const parseBackgroundColor = (context, element, backgroundColorOverride) => {
115
222
  const ownerDocument = element.ownerDocument;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,gDAA6E;AAC7E,6CAAuD;AACvD,iEAA4D;AAC5D,2DAAyG;AACzG,mDAA4E;AAC5E,wDAAoD;AACpD,qEAAsG;AACtG,mFAA+E;AAC/E,4CAAyD;AAWzD,IAAI,QAA4B,CAAC;AAEjC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;IAClC,QAAQ,GAAG,KAAK,CAAC;AACrB,CAAC,CAAC;AASoB,kCAAW;AAPjC,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAE,UAA4B,EAAE,EAA8B,EAAE;IACrG,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC;AAKO,kCAAW;AAHpB,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;AAEtC,kBAAe,WAAW,CAAC;AAG3B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAChC,4BAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,aAAa,GAAG,KAAK,EAAE,OAAoB,EAAE,IAAsB,EAA8B,EAAE;IACrG,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAE5C,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,eAAe,GAAG;QACpB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;QACpC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK;QACxC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;QAC9B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;KAC9C,CAAC;IAEF,MAAM,cAAc,GAAG;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,eAAe;KACrB,CAAC;IAEF,MAAM,aAAa,GAAG;QAClB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU;QACvD,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC,WAAW;QAC1D,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,WAAW;QAChD,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,WAAW;KACnD,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,eAAM,CAC3B,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,WAAW,EACzB,aAAa,CAAC,YAAY,CAC7B,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAE1D,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC;IAEpE,MAAM,YAAY,GAAwB;QACtC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;QACpC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,YAAY,EAAE,sBAAsB;QACpC,UAAU,EAAE,sBAAsB;QAClC,QAAQ;KACX,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,qCAAqC,YAAY,CAAC,KAAK,IACnD,YAAY,CAAC,MACjB,gBAAgB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAC5D,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,gCAAc,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,cAAc,CAAC,sBAAsB,CAAC;IAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE7E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAC9B,IAAA,2BAAa,EAAC,aAAa,CAAC,IAAI,IAAA,2BAAa,EAAC,aAAa,CAAC;QACxD,CAAC,CAAC,IAAA,0BAAiB,EAAC,aAAa,CAAC,aAAa,CAAC;QAChD,CAAC,CAAC,IAAA,oBAAW,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAE9C,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAE3F,MAAM,aAAa,GAAyB;QACxC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,eAAe;QACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,gBAAgB,IAAI,CAAC;QACtD,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;QACvB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG;QACtB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;KAC3C,CAAC;IAEF,IAAI,MAAM,CAAC;IAEX,IAAI,sBAAsB,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,8CAAqB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACnE,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,uCAAuC,IAAI,IAAI,GAAG,cAAc,KAAK,IAAI,MAAM,2BAA2B,CAC7G,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAA,uBAAS,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE/C,IAAI,eAAe,KAAK,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,cAAM,CAAC,WAAW,CAAC;QACrD,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,oCAAoC,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,cAAc,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,CACpI,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,gCAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC5D,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,gCAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACxF,CAAC;IACL,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,OAAoB,EAAE,uBAAuC,EAAE,EAAE;IAC7G,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,4DAA4D;IAC5D,MAAM,uBAAuB,GAAG,aAAa,CAAC,eAAe;QACzD,CAAC,CAAC,IAAA,kBAAU,EAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,eAAyB,CAAC;QAChG,CAAC,CAAC,cAAM,CAAC,WAAW,CAAC;IACzB,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI;QAC1C,CAAC,CAAC,IAAA,kBAAU,EAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,eAAyB,CAAC;QACrF,CAAC,CAAC,cAAM,CAAC,WAAW,CAAC;IAEzB,MAAM,sBAAsB,GACxB,OAAO,uBAAuB,KAAK,QAAQ;QACvC,CAAC,CAAC,IAAA,kBAAU,EAAC,OAAO,EAAE,uBAAuB,CAAC;QAC9C,CAAC,CAAC,uBAAuB,KAAK,IAAI;YAChC,CAAC,CAAC,cAAM,CAAC,WAAW;YACpB,CAAC,CAAC,UAAU,CAAC;IAEvB,OAAO,OAAO,KAAK,aAAa,CAAC,eAAe;QAC5C,CAAC,CAAC,IAAA,+BAAa,EAAC,uBAAuB,CAAC;YACpC,CAAC,CAAC,IAAA,+BAAa,EAAC,mBAAmB,CAAC;gBAChC,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,mBAAmB;YACzB,CAAC,CAAC,uBAAuB;QAC7B,CAAC,CAAC,sBAAsB,CAAC;AACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
4
+ const background_renderer_1 = require("../background-renderer");
5
+ const context_1 = require("../../../core/context");
6
+ const bounds_1 = require("../../../css/layout/bounds");
7
+ const config_1 = require("../../../config");
8
+ describe('BackgroundRenderer', () => {
9
+ it('should be instantiated', () => {
10
+ const mockWindow = {
11
+ document: {
12
+ createElement: (_name) => {
13
+ let _href = '';
14
+ return {
15
+ set href(value) {
16
+ _href = value;
17
+ },
18
+ get href() {
19
+ return _href;
20
+ },
21
+ get protocol() {
22
+ return 'http:';
23
+ },
24
+ get hostname() {
25
+ return 'localhost';
26
+ },
27
+ get port() {
28
+ return '';
29
+ }
30
+ };
31
+ }
32
+ },
33
+ location: { href: 'http://localhost/' }
34
+ };
35
+ const config = new config_1.Html2CanvasConfig({ window: mockWindow });
36
+ const context = new context_1.Context({
37
+ logging: false,
38
+ imageTimeout: 15000,
39
+ useCORS: false,
40
+ allowTaint: false
41
+ }, new bounds_1.Bounds(0, 0, 800, 600), config);
42
+ const canvas = {
43
+ width: 800,
44
+ height: 600
45
+ };
46
+ const ctx = {
47
+ fillStyle: '',
48
+ save: () => { },
49
+ restore: () => { }
50
+ };
51
+ const deps = {
52
+ ctx,
53
+ context,
54
+ canvas,
55
+ options: {
56
+ width: 800,
57
+ height: 600,
58
+ scale: 1
59
+ }
60
+ };
61
+ const renderer = new background_renderer_1.BackgroundRenderer(deps);
62
+ (0, assert_1.ok)(renderer);
63
+ });
64
+ });
65
+ //# sourceMappingURL=background-renderer.test.js.map