html2canvas-pro 2.3.4 → 2.3.5

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,5 +1,5 @@
1
1
  /*!
2
- * html2canvas-pro 2.3.4 <https://yorickshan.github.io/html2canvas-pro/>
2
+ * html2canvas-pro 2.3.5 <https://yorickshan.github.io/html2canvas-pro/>
3
3
  * Copyright (c) 2024-present yorickshan and html2canvas-pro contributors
4
4
  * Released under MIT License
5
5
  */
@@ -8179,18 +8179,29 @@ const LIST_OWNERS = [
8179
8179
  const parseNodeTree = (context, node, parent, root) => {
8180
8180
  for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {
8181
8181
  nextNode = childNode.nextSibling;
8182
- if (isTextNode(childNode) && childNode.data.length > 0) parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
8183
- else if (isElementNode(childNode)) if (isSlotElement(childNode) && childNode.assignedNodes) childNode.assignedNodes().forEach((assignedNode) => parseNodeTree(context, assignedNode, parent, root));
8184
- else {
8185
- const container = createContainer(context, childNode);
8186
- if (container.styles.isVisible()) {
8187
- if (createsRealStackingContext(childNode, container, root)) container.createsRealStackingContext = true;
8188
- else if (createsStackingContext(container.styles)) container.createsStackingContext = true;
8189
- if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) container.isListOwner = true;
8190
- parent.elements.push(container);
8191
- if (childNode.shadowRoot) parseNodeTree(context, childNode.shadowRoot, container, root);
8192
- else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) parseNodeTree(context, childNode, container, root);
8193
- }
8182
+ parseChildNode(context, childNode, parent, root);
8183
+ }
8184
+ };
8185
+ /**
8186
+ * Parse a single node as a child of `parent`.
8187
+ *
8188
+ * Separated from the tree walk so that nodes assigned to a `<slot>` (including
8189
+ * bare text nodes, which have no child nodes) can be parsed directly. Without
8190
+ * this, slotted shadow-DOM content such as web component labels was silently
8191
+ * dropped because `parseNodeTree` only iterates `node.firstChild` (issue #226).
8192
+ */
8193
+ const parseChildNode = (context, childNode, parent, root) => {
8194
+ if (isTextNode(childNode) && childNode.data.length > 0) parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
8195
+ else if (isElementNode(childNode)) if (isSlotElement(childNode) && childNode.assignedNodes) childNode.assignedNodes().forEach((assignedNode) => parseChildNode(context, assignedNode, parent, root));
8196
+ else {
8197
+ const container = createContainer(context, childNode);
8198
+ if (container.styles.isVisible()) {
8199
+ if (createsRealStackingContext(childNode, container, root)) container.createsRealStackingContext = true;
8200
+ else if (createsStackingContext(container.styles)) container.createsStackingContext = true;
8201
+ if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) container.isListOwner = true;
8202
+ parent.elements.push(container);
8203
+ if (childNode.shadowRoot) parseNodeTree(context, childNode.shadowRoot, container, root);
8204
+ else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) parseNodeTree(context, childNode, container, root);
8194
8205
  }
8195
8206
  }
8196
8207
  };