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
  */
@@ -8186,18 +8186,29 @@
8186
8186
  const parseNodeTree = (context, node, parent, root) => {
8187
8187
  for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {
8188
8188
  nextNode = childNode.nextSibling;
8189
- if (isTextNode(childNode) && childNode.data.length > 0) parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
8190
- else if (isElementNode(childNode)) if (isSlotElement(childNode) && childNode.assignedNodes) childNode.assignedNodes().forEach((assignedNode) => parseNodeTree(context, assignedNode, parent, root));
8191
- else {
8192
- const container = createContainer(context, childNode);
8193
- if (container.styles.isVisible()) {
8194
- if (createsRealStackingContext(childNode, container, root)) container.createsRealStackingContext = true;
8195
- else if (createsStackingContext(container.styles)) container.createsStackingContext = true;
8196
- if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) container.isListOwner = true;
8197
- parent.elements.push(container);
8198
- if (childNode.shadowRoot) parseNodeTree(context, childNode.shadowRoot, container, root);
8199
- else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) parseNodeTree(context, childNode, container, root);
8200
- }
8189
+ parseChildNode(context, childNode, parent, root);
8190
+ }
8191
+ };
8192
+ /**
8193
+ * Parse a single node as a child of `parent`.
8194
+ *
8195
+ * Separated from the tree walk so that nodes assigned to a `<slot>` (including
8196
+ * bare text nodes, which have no child nodes) can be parsed directly. Without
8197
+ * this, slotted shadow-DOM content such as web component labels was silently
8198
+ * dropped because `parseNodeTree` only iterates `node.firstChild` (issue #226).
8199
+ */
8200
+ const parseChildNode = (context, childNode, parent, root) => {
8201
+ if (isTextNode(childNode) && childNode.data.length > 0) parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
8202
+ else if (isElementNode(childNode)) if (isSlotElement(childNode) && childNode.assignedNodes) childNode.assignedNodes().forEach((assignedNode) => parseChildNode(context, assignedNode, parent, root));
8203
+ else {
8204
+ const container = createContainer(context, childNode);
8205
+ if (container.styles.isVisible()) {
8206
+ if (createsRealStackingContext(childNode, container, root)) container.createsRealStackingContext = true;
8207
+ else if (createsStackingContext(container.styles)) container.createsStackingContext = true;
8208
+ if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) container.isListOwner = true;
8209
+ parent.elements.push(container);
8210
+ if (childNode.shadowRoot) parseNodeTree(context, childNode.shadowRoot, container, root);
8211
+ else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) parseNodeTree(context, childNode, container, root);
8201
8212
  }
8202
8213
  }
8203
8214
  };