@percy/dom 1.0.0-beta.76 → 1.0.0

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 (2) hide show
  1. package/dist/bundle.js +11 -6
  2. package/package.json +2 -2
package/dist/bundle.js CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
 
15
15
  function prepareDOM(dom) {
16
- for (let elem of dom.querySelectorAll('input, textarea, select, iframe, canvas, video')) {
16
+ for (let elem of dom.querySelectorAll('input, textarea, select, iframe, canvas, video, style')) {
17
17
  if (!elem.getAttribute('data-percy-element-id')) {
18
18
  elem.setAttribute('data-percy-element-id', uid());
19
19
  }
@@ -116,10 +116,12 @@
116
116
  for (let styleSheet of dom.styleSheets) {
117
117
  if (isCSSOM(styleSheet)) {
118
118
  let style = clone.createElement('style');
119
+ let styleId = styleSheet.ownerNode.getAttribute('data-percy-element-id');
120
+ let cloneOwnerNode = clone.querySelector(`[data-percy-element-id="${styleId}"]`);
119
121
  style.type = 'text/css';
120
122
  style.setAttribute('data-percy-cssom-serialized', 'true');
121
123
  style.innerHTML = Array.from(styleSheet.cssRules).reduce((prev, cssRule) => prev + cssRule.cssText, '');
122
- clone.head.appendChild(style);
124
+ cloneOwnerNode.parentNode.insertBefore(style, cloneOwnerNode.nextSibling);
123
125
  }
124
126
  }
125
127
  }
@@ -167,8 +169,13 @@
167
169
  let canvas = document.createElement('canvas');
168
170
  let width = canvas.width = video.videoWidth;
169
171
  let height = canvas.height = video.videoHeight;
172
+ let dataUrl;
170
173
  canvas.getContext('2d').drawImage(video, 0, 0, width, height);
171
- let dataUrl = canvas.toDataURL(); // If the canvas produces a blank image, skip
174
+
175
+ try {
176
+ dataUrl = canvas.toDataURL();
177
+ } catch {} // If the canvas produces a blank image, skip
178
+
172
179
 
173
180
  if (!dataUrl || dataUrl === 'data:,') continue;
174
181
  cloneEl.setAttribute('poster', dataUrl);
@@ -176,13 +183,11 @@
176
183
  }
177
184
 
178
185
  function doctype(dom) {
179
- var _dom$doctype;
180
-
181
186
  let {
182
187
  name = 'html',
183
188
  publicId = '',
184
189
  systemId = ''
185
- } = (_dom$doctype = dom === null || dom === void 0 ? void 0 : dom.doctype) !== null && _dom$doctype !== void 0 ? _dom$doctype : {};
190
+ } = (dom === null || dom === void 0 ? void 0 : dom.doctype) ?? {};
186
191
  let deprecated = '';
187
192
 
188
193
  if (publicId && systemId) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@percy/dom",
3
- "version": "1.0.0-beta.76",
3
+ "version": "1.0.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,5 +34,5 @@
34
34
  "devDependencies": {
35
35
  "interactor.js": "^2.0.0-beta.10"
36
36
  },
37
- "gitHead": "445af68d8e270e2a35fc74e26422ed5d3c91d2ae"
37
+ "gitHead": "6df509421a60144e4f9f5d59dc57a5675372a0b2"
38
38
  }