@vuu-ui/vuu-shell 0.8.33 → 0.8.34

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 (191) hide show
  1. package/cjs/app-header/AppHeader.css +24 -0
  2. package/cjs/connection-status/ConnectionStatusIcon.css +68 -0
  3. package/cjs/feature-list/FeatureList.css +21 -0
  4. package/cjs/layout-management/LayoutList.css +86 -0
  5. package/cjs/layout-management/LayoutTile.css +28 -0
  6. package/cjs/layout-management/SaveLayoutPanel.css +130 -0
  7. package/cjs/left-nav/LeftNav.css +178 -0
  8. package/cjs/login/LoginPanel.css +70 -0
  9. package/cjs/node_modules/html-to-image/es/apply-style.js +24 -0
  10. package/cjs/node_modules/html-to-image/es/apply-style.js.map +1 -0
  11. package/cjs/node_modules/html-to-image/es/clone-node.js +185 -0
  12. package/cjs/node_modules/html-to-image/es/clone-node.js.map +1 -0
  13. package/cjs/node_modules/html-to-image/es/clone-pseudos.js +48 -0
  14. package/cjs/node_modules/html-to-image/es/clone-pseudos.js.map +1 -0
  15. package/cjs/node_modules/html-to-image/es/dataurl.js +83 -0
  16. package/cjs/node_modules/html-to-image/es/dataurl.js.map +1 -0
  17. package/cjs/node_modules/html-to-image/es/embed-images.js +68 -0
  18. package/cjs/node_modules/html-to-image/es/embed-images.js.map +1 -0
  19. package/cjs/node_modules/html-to-image/es/embed-resources.js +74 -0
  20. package/cjs/node_modules/html-to-image/es/embed-resources.js.map +1 -0
  21. package/cjs/node_modules/html-to-image/es/embed-webfonts.js +187 -0
  22. package/cjs/node_modules/html-to-image/es/embed-webfonts.js.map +1 -0
  23. package/cjs/node_modules/html-to-image/es/index.js +49 -0
  24. package/cjs/node_modules/html-to-image/es/index.js.map +1 -0
  25. package/cjs/node_modules/html-to-image/es/mimes.js +28 -0
  26. package/cjs/node_modules/html-to-image/es/mimes.js.map +1 -0
  27. package/cjs/node_modules/html-to-image/es/util.js +166 -0
  28. package/cjs/node_modules/html-to-image/es/util.js.map +1 -0
  29. package/cjs/packages/vuu-shell/src/ShellContextProvider.js +31 -0
  30. package/cjs/packages/vuu-shell/src/ShellContextProvider.js.map +1 -0
  31. package/cjs/packages/vuu-shell/src/app-header/AppHeader.js +57 -0
  32. package/cjs/packages/vuu-shell/src/app-header/AppHeader.js.map +1 -0
  33. package/cjs/packages/vuu-shell/src/connection-status/ConnectionStatusIcon.js +42 -0
  34. package/cjs/packages/vuu-shell/src/connection-status/ConnectionStatusIcon.js.map +1 -0
  35. package/cjs/packages/vuu-shell/src/feature/Feature.js +56 -0
  36. package/cjs/packages/vuu-shell/src/feature/Feature.js.map +1 -0
  37. package/cjs/packages/vuu-shell/src/feature/FeatureErrorBoundary.js +30 -0
  38. package/cjs/packages/vuu-shell/src/feature/FeatureErrorBoundary.js.map +1 -0
  39. package/cjs/packages/vuu-shell/src/feature/Loader.js +8 -0
  40. package/cjs/packages/vuu-shell/src/feature/Loader.js.map +1 -0
  41. package/cjs/packages/vuu-shell/src/feature/css-module-loader.js +9 -0
  42. package/cjs/packages/vuu-shell/src/feature/css-module-loader.js.map +1 -0
  43. package/cjs/packages/vuu-shell/src/feature-list/FeatureList.js +43 -0
  44. package/cjs/packages/vuu-shell/src/feature-list/FeatureList.js.map +1 -0
  45. package/cjs/packages/vuu-shell/src/index.js +51 -0
  46. package/cjs/packages/vuu-shell/src/index.js.map +1 -0
  47. package/cjs/packages/vuu-shell/src/layout-management/LayoutList.js +66 -0
  48. package/cjs/packages/vuu-shell/src/layout-management/LayoutList.js.map +1 -0
  49. package/cjs/packages/vuu-shell/src/layout-management/LayoutTile.js +27 -0
  50. package/cjs/packages/vuu-shell/src/layout-management/LayoutTile.js.map +1 -0
  51. package/cjs/packages/vuu-shell/src/layout-management/SaveLayoutPanel.js +140 -0
  52. package/cjs/packages/vuu-shell/src/layout-management/SaveLayoutPanel.js.map +1 -0
  53. package/cjs/packages/vuu-shell/src/layout-management/screenshot-utils.js +25 -0
  54. package/cjs/packages/vuu-shell/src/layout-management/screenshot-utils.js.map +1 -0
  55. package/cjs/packages/vuu-shell/src/layout-management/useLayoutContextMenuItems.js +72 -0
  56. package/cjs/packages/vuu-shell/src/layout-management/useLayoutContextMenuItems.js.map +1 -0
  57. package/cjs/packages/vuu-shell/src/layout-management/useLayoutManager.js +218 -0
  58. package/cjs/packages/vuu-shell/src/layout-management/useLayoutManager.js.map +1 -0
  59. package/cjs/packages/vuu-shell/src/left-nav/LeftNav.js +156 -0
  60. package/cjs/packages/vuu-shell/src/left-nav/LeftNav.js.map +1 -0
  61. package/cjs/packages/vuu-shell/src/login/LoginPanel.js +99 -0
  62. package/cjs/packages/vuu-shell/src/login/LoginPanel.js.map +1 -0
  63. package/cjs/packages/vuu-shell/src/login/VuuLogo.js +134 -0
  64. package/cjs/packages/vuu-shell/src/login/VuuLogo.js.map +1 -0
  65. package/cjs/packages/vuu-shell/src/login/login-utils.js +31 -0
  66. package/cjs/packages/vuu-shell/src/login/login-utils.js.map +1 -0
  67. package/cjs/packages/vuu-shell/src/persistence-management/LocalPersistenceManager.js +183 -0
  68. package/cjs/packages/vuu-shell/src/persistence-management/LocalPersistenceManager.js.map +1 -0
  69. package/cjs/packages/vuu-shell/src/persistence-management/RemotePersistenceManager.js +162 -0
  70. package/cjs/packages/vuu-shell/src/persistence-management/RemotePersistenceManager.js.map +1 -0
  71. package/cjs/packages/vuu-shell/src/persistence-management/defaultApplicationJson.js +42 -0
  72. package/cjs/packages/vuu-shell/src/persistence-management/defaultApplicationJson.js.map +1 -0
  73. package/cjs/packages/vuu-shell/src/session-editing-form/SessionEditingForm.js +271 -0
  74. package/cjs/packages/vuu-shell/src/session-editing-form/SessionEditingForm.js.map +1 -0
  75. package/cjs/packages/vuu-shell/src/shell-layouts/context-panel/ContextPanel.js +61 -0
  76. package/cjs/packages/vuu-shell/src/shell-layouts/context-panel/ContextPanel.js.map +1 -0
  77. package/cjs/packages/vuu-shell/src/shell-layouts/side-panel/SidePanel.js +27 -0
  78. package/cjs/packages/vuu-shell/src/shell-layouts/side-panel/SidePanel.js.map +1 -0
  79. package/cjs/packages/vuu-shell/src/shell-layouts/useFullHeightLeftPanel.js +41 -0
  80. package/cjs/packages/vuu-shell/src/shell-layouts/useFullHeightLeftPanel.js.map +1 -0
  81. package/cjs/packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.js +78 -0
  82. package/cjs/packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.js.map +1 -0
  83. package/cjs/packages/vuu-shell/src/shell-layouts/useShellLayout.js +15 -0
  84. package/cjs/packages/vuu-shell/src/shell-layouts/useShellLayout.js.map +1 -0
  85. package/cjs/packages/vuu-shell/src/shell.js +129 -0
  86. package/cjs/packages/vuu-shell/src/shell.js.map +1 -0
  87. package/cjs/packages/vuu-shell/src/shellTypes.js +8 -0
  88. package/cjs/packages/vuu-shell/src/shellTypes.js.map +1 -0
  89. package/cjs/packages/vuu-shell/src/theme-switch/ThemeSwitch.js +47 -0
  90. package/cjs/packages/vuu-shell/src/theme-switch/ThemeSwitch.js.map +1 -0
  91. package/cjs/session-editing-form/SessionEditingForm.css +53 -0
  92. package/cjs/shell-layouts/context-panel/ContextPanel.css +58 -0
  93. package/cjs/shell-layouts/side-panel/SidePanel.css +4 -0
  94. package/cjs/shell.css +49 -0
  95. package/cjs/theme-switch/ThemeSwitch.css +30 -0
  96. package/esm/app-header/AppHeader.css +24 -0
  97. package/esm/connection-status/ConnectionStatusIcon.css +68 -0
  98. package/esm/feature-list/FeatureList.css +21 -0
  99. package/esm/layout-management/LayoutList.css +86 -0
  100. package/esm/layout-management/LayoutTile.css +28 -0
  101. package/esm/layout-management/SaveLayoutPanel.css +130 -0
  102. package/esm/left-nav/LeftNav.css +178 -0
  103. package/esm/login/LoginPanel.css +70 -0
  104. package/esm/node_modules/html-to-image/es/apply-style.js +22 -0
  105. package/esm/node_modules/html-to-image/es/apply-style.js.map +1 -0
  106. package/esm/node_modules/html-to-image/es/clone-node.js +183 -0
  107. package/esm/node_modules/html-to-image/es/clone-node.js.map +1 -0
  108. package/esm/node_modules/html-to-image/es/clone-pseudos.js +46 -0
  109. package/esm/node_modules/html-to-image/es/clone-pseudos.js.map +1 -0
  110. package/esm/node_modules/html-to-image/es/dataurl.js +78 -0
  111. package/esm/node_modules/html-to-image/es/dataurl.js.map +1 -0
  112. package/esm/node_modules/html-to-image/es/embed-images.js +66 -0
  113. package/esm/node_modules/html-to-image/es/embed-images.js.map +1 -0
  114. package/esm/node_modules/html-to-image/es/embed-resources.js +69 -0
  115. package/esm/node_modules/html-to-image/es/embed-resources.js.map +1 -0
  116. package/esm/node_modules/html-to-image/es/embed-webfonts.js +184 -0
  117. package/esm/node_modules/html-to-image/es/embed-webfonts.js.map +1 -0
  118. package/esm/node_modules/html-to-image/es/index.js +45 -0
  119. package/esm/node_modules/html-to-image/es/index.js.map +1 -0
  120. package/esm/node_modules/html-to-image/es/mimes.js +26 -0
  121. package/esm/node_modules/html-to-image/es/mimes.js.map +1 -0
  122. package/esm/node_modules/html-to-image/es/util.js +155 -0
  123. package/esm/node_modules/html-to-image/es/util.js.map +1 -0
  124. package/esm/packages/vuu-shell/src/ShellContextProvider.js +28 -0
  125. package/esm/packages/vuu-shell/src/ShellContextProvider.js.map +1 -0
  126. package/esm/packages/vuu-shell/src/app-header/AppHeader.js +55 -0
  127. package/esm/packages/vuu-shell/src/app-header/AppHeader.js.map +1 -0
  128. package/esm/packages/vuu-shell/src/connection-status/ConnectionStatusIcon.js +40 -0
  129. package/esm/packages/vuu-shell/src/connection-status/ConnectionStatusIcon.js.map +1 -0
  130. package/esm/packages/vuu-shell/src/feature/Feature.js +54 -0
  131. package/esm/packages/vuu-shell/src/feature/Feature.js.map +1 -0
  132. package/esm/packages/vuu-shell/src/feature/FeatureErrorBoundary.js +28 -0
  133. package/esm/packages/vuu-shell/src/feature/FeatureErrorBoundary.js.map +1 -0
  134. package/esm/packages/vuu-shell/src/feature/Loader.js +6 -0
  135. package/esm/packages/vuu-shell/src/feature/Loader.js.map +1 -0
  136. package/esm/packages/vuu-shell/src/feature/css-module-loader.js +7 -0
  137. package/esm/packages/vuu-shell/src/feature/css-module-loader.js.map +1 -0
  138. package/esm/packages/vuu-shell/src/feature-list/FeatureList.js +41 -0
  139. package/esm/packages/vuu-shell/src/feature-list/FeatureList.js.map +1 -0
  140. package/esm/packages/vuu-shell/src/index.js +20 -0
  141. package/esm/packages/vuu-shell/src/index.js.map +1 -0
  142. package/esm/packages/vuu-shell/src/layout-management/LayoutList.js +64 -0
  143. package/esm/packages/vuu-shell/src/layout-management/LayoutList.js.map +1 -0
  144. package/esm/packages/vuu-shell/src/layout-management/LayoutTile.js +25 -0
  145. package/esm/packages/vuu-shell/src/layout-management/LayoutTile.js.map +1 -0
  146. package/esm/packages/vuu-shell/src/layout-management/SaveLayoutPanel.js +138 -0
  147. package/esm/packages/vuu-shell/src/layout-management/SaveLayoutPanel.js.map +1 -0
  148. package/esm/packages/vuu-shell/src/layout-management/screenshot-utils.js +23 -0
  149. package/esm/packages/vuu-shell/src/layout-management/screenshot-utils.js.map +1 -0
  150. package/esm/packages/vuu-shell/src/layout-management/useLayoutContextMenuItems.js +70 -0
  151. package/esm/packages/vuu-shell/src/layout-management/useLayoutContextMenuItems.js.map +1 -0
  152. package/esm/packages/vuu-shell/src/layout-management/useLayoutManager.js +214 -0
  153. package/esm/packages/vuu-shell/src/layout-management/useLayoutManager.js.map +1 -0
  154. package/esm/packages/vuu-shell/src/left-nav/LeftNav.js +154 -0
  155. package/esm/packages/vuu-shell/src/left-nav/LeftNav.js.map +1 -0
  156. package/esm/packages/vuu-shell/src/login/LoginPanel.js +97 -0
  157. package/esm/packages/vuu-shell/src/login/LoginPanel.js.map +1 -0
  158. package/esm/packages/vuu-shell/src/login/VuuLogo.js +132 -0
  159. package/esm/packages/vuu-shell/src/login/VuuLogo.js.map +1 -0
  160. package/esm/packages/vuu-shell/src/login/login-utils.js +26 -0
  161. package/esm/packages/vuu-shell/src/login/login-utils.js.map +1 -0
  162. package/esm/packages/vuu-shell/src/persistence-management/LocalPersistenceManager.js +181 -0
  163. package/esm/packages/vuu-shell/src/persistence-management/LocalPersistenceManager.js.map +1 -0
  164. package/esm/packages/vuu-shell/src/persistence-management/RemotePersistenceManager.js +160 -0
  165. package/esm/packages/vuu-shell/src/persistence-management/RemotePersistenceManager.js.map +1 -0
  166. package/esm/packages/vuu-shell/src/persistence-management/defaultApplicationJson.js +39 -0
  167. package/esm/packages/vuu-shell/src/persistence-management/defaultApplicationJson.js.map +1 -0
  168. package/esm/packages/vuu-shell/src/session-editing-form/SessionEditingForm.js +269 -0
  169. package/esm/packages/vuu-shell/src/session-editing-form/SessionEditingForm.js.map +1 -0
  170. package/esm/packages/vuu-shell/src/shell-layouts/context-panel/ContextPanel.js +59 -0
  171. package/esm/packages/vuu-shell/src/shell-layouts/context-panel/ContextPanel.js.map +1 -0
  172. package/esm/packages/vuu-shell/src/shell-layouts/side-panel/SidePanel.js +25 -0
  173. package/esm/packages/vuu-shell/src/shell-layouts/side-panel/SidePanel.js.map +1 -0
  174. package/esm/packages/vuu-shell/src/shell-layouts/useFullHeightLeftPanel.js +39 -0
  175. package/esm/packages/vuu-shell/src/shell-layouts/useFullHeightLeftPanel.js.map +1 -0
  176. package/esm/packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.js +76 -0
  177. package/esm/packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.js.map +1 -0
  178. package/esm/packages/vuu-shell/src/shell-layouts/useShellLayout.js +13 -0
  179. package/esm/packages/vuu-shell/src/shell-layouts/useShellLayout.js.map +1 -0
  180. package/esm/packages/vuu-shell/src/shell.js +127 -0
  181. package/esm/packages/vuu-shell/src/shell.js.map +1 -0
  182. package/esm/packages/vuu-shell/src/shellTypes.js +5 -0
  183. package/esm/packages/vuu-shell/src/shellTypes.js.map +1 -0
  184. package/esm/packages/vuu-shell/src/theme-switch/ThemeSwitch.js +45 -0
  185. package/esm/packages/vuu-shell/src/theme-switch/ThemeSwitch.js.map +1 -0
  186. package/esm/session-editing-form/SessionEditingForm.css +53 -0
  187. package/esm/shell-layouts/context-panel/ContextPanel.css +58 -0
  188. package/esm/shell-layouts/side-panel/SidePanel.css +4 -0
  189. package/esm/shell.css +49 -0
  190. package/esm/theme-switch/ThemeSwitch.css +30 -0
  191. package/package.json +14 -12
@@ -0,0 +1,185 @@
1
+ 'use strict';
2
+
3
+ var clonePseudos = require('./clone-pseudos.js');
4
+ var util = require('./util.js');
5
+ var mimes = require('./mimes.js');
6
+ var dataurl = require('./dataurl.js');
7
+
8
+ async function cloneCanvasElement(canvas) {
9
+ const dataURL = canvas.toDataURL();
10
+ if (dataURL === 'data:,') {
11
+ return canvas.cloneNode(false);
12
+ }
13
+ return util.createImage(dataURL);
14
+ }
15
+ async function cloneVideoElement(video, options) {
16
+ if (video.currentSrc) {
17
+ const canvas = document.createElement('canvas');
18
+ const ctx = canvas.getContext('2d');
19
+ canvas.width = video.clientWidth;
20
+ canvas.height = video.clientHeight;
21
+ ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
22
+ const dataURL = canvas.toDataURL();
23
+ return util.createImage(dataURL);
24
+ }
25
+ const poster = video.poster;
26
+ const contentType = mimes.getMimeType(poster);
27
+ const dataURL = await dataurl.resourceToDataURL(poster, contentType, options);
28
+ return util.createImage(dataURL);
29
+ }
30
+ async function cloneIFrameElement(iframe) {
31
+ var _a;
32
+ try {
33
+ if ((_a = iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.body) {
34
+ return (await cloneNode(iframe.contentDocument.body, {}, true));
35
+ }
36
+ }
37
+ catch (_b) {
38
+ // Failed to clone iframe
39
+ }
40
+ return iframe.cloneNode(false);
41
+ }
42
+ async function cloneSingleNode(node, options) {
43
+ if (util.isInstanceOfElement(node, HTMLCanvasElement)) {
44
+ return cloneCanvasElement(node);
45
+ }
46
+ if (util.isInstanceOfElement(node, HTMLVideoElement)) {
47
+ return cloneVideoElement(node, options);
48
+ }
49
+ if (util.isInstanceOfElement(node, HTMLIFrameElement)) {
50
+ return cloneIFrameElement(node);
51
+ }
52
+ return node.cloneNode(false);
53
+ }
54
+ const isSlotElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SLOT';
55
+ async function cloneChildren(nativeNode, clonedNode, options) {
56
+ var _a, _b;
57
+ let children = [];
58
+ if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {
59
+ children = util.toArray(nativeNode.assignedNodes());
60
+ }
61
+ else if (util.isInstanceOfElement(nativeNode, HTMLIFrameElement) &&
62
+ ((_a = nativeNode.contentDocument) === null || _a === void 0 ? void 0 : _a.body)) {
63
+ children = util.toArray(nativeNode.contentDocument.body.childNodes);
64
+ }
65
+ else {
66
+ children = util.toArray(((_b = nativeNode.shadowRoot) !== null && _b !== void 0 ? _b : nativeNode).childNodes);
67
+ }
68
+ if (children.length === 0 ||
69
+ util.isInstanceOfElement(nativeNode, HTMLVideoElement)) {
70
+ return clonedNode;
71
+ }
72
+ await children.reduce((deferred, child) => deferred
73
+ .then(() => cloneNode(child, options))
74
+ .then((clonedChild) => {
75
+ if (clonedChild) {
76
+ clonedNode.appendChild(clonedChild);
77
+ }
78
+ }), Promise.resolve());
79
+ return clonedNode;
80
+ }
81
+ function cloneCSSStyle(nativeNode, clonedNode) {
82
+ const targetStyle = clonedNode.style;
83
+ if (!targetStyle) {
84
+ return;
85
+ }
86
+ const sourceStyle = window.getComputedStyle(nativeNode);
87
+ if (sourceStyle.cssText) {
88
+ targetStyle.cssText = sourceStyle.cssText;
89
+ targetStyle.transformOrigin = sourceStyle.transformOrigin;
90
+ }
91
+ else {
92
+ util.toArray(sourceStyle).forEach((name) => {
93
+ let value = sourceStyle.getPropertyValue(name);
94
+ if (name === 'font-size' && value.endsWith('px')) {
95
+ const reducedFont = Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1;
96
+ value = `${reducedFont}px`;
97
+ }
98
+ if (util.isInstanceOfElement(nativeNode, HTMLIFrameElement) &&
99
+ name === 'display' &&
100
+ value === 'inline') {
101
+ value = 'block';
102
+ }
103
+ if (name === 'd' && clonedNode.getAttribute('d')) {
104
+ value = `path(${clonedNode.getAttribute('d')})`;
105
+ }
106
+ targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));
107
+ });
108
+ }
109
+ }
110
+ function cloneInputValue(nativeNode, clonedNode) {
111
+ if (util.isInstanceOfElement(nativeNode, HTMLTextAreaElement)) {
112
+ clonedNode.innerHTML = nativeNode.value;
113
+ }
114
+ if (util.isInstanceOfElement(nativeNode, HTMLInputElement)) {
115
+ clonedNode.setAttribute('value', nativeNode.value);
116
+ }
117
+ }
118
+ function cloneSelectValue(nativeNode, clonedNode) {
119
+ if (util.isInstanceOfElement(nativeNode, HTMLSelectElement)) {
120
+ const clonedSelect = clonedNode;
121
+ const selectedOption = Array.from(clonedSelect.children).find((child) => nativeNode.value === child.getAttribute('value'));
122
+ if (selectedOption) {
123
+ selectedOption.setAttribute('selected', '');
124
+ }
125
+ }
126
+ }
127
+ function decorate(nativeNode, clonedNode) {
128
+ if (util.isInstanceOfElement(clonedNode, Element)) {
129
+ cloneCSSStyle(nativeNode, clonedNode);
130
+ clonePseudos.clonePseudoElements(nativeNode, clonedNode);
131
+ cloneInputValue(nativeNode, clonedNode);
132
+ cloneSelectValue(nativeNode, clonedNode);
133
+ }
134
+ return clonedNode;
135
+ }
136
+ async function ensureSVGSymbols(clone, options) {
137
+ const uses = clone.querySelectorAll ? clone.querySelectorAll('use') : [];
138
+ if (uses.length === 0) {
139
+ return clone;
140
+ }
141
+ const processedDefs = {};
142
+ for (let i = 0; i < uses.length; i++) {
143
+ const use = uses[i];
144
+ const id = use.getAttribute('xlink:href');
145
+ if (id) {
146
+ const exist = clone.querySelector(id);
147
+ const definition = document.querySelector(id);
148
+ if (!exist && definition && !processedDefs[id]) {
149
+ // eslint-disable-next-line no-await-in-loop
150
+ processedDefs[id] = (await cloneNode(definition, options, true));
151
+ }
152
+ }
153
+ }
154
+ const nodes = Object.values(processedDefs);
155
+ if (nodes.length) {
156
+ const ns = 'http://www.w3.org/1999/xhtml';
157
+ const svg = document.createElementNS(ns, 'svg');
158
+ svg.setAttribute('xmlns', ns);
159
+ svg.style.position = 'absolute';
160
+ svg.style.width = '0';
161
+ svg.style.height = '0';
162
+ svg.style.overflow = 'hidden';
163
+ svg.style.display = 'none';
164
+ const defs = document.createElementNS(ns, 'defs');
165
+ svg.appendChild(defs);
166
+ for (let i = 0; i < nodes.length; i++) {
167
+ defs.appendChild(nodes[i]);
168
+ }
169
+ clone.appendChild(svg);
170
+ }
171
+ return clone;
172
+ }
173
+ async function cloneNode(node, options, isRoot) {
174
+ if (!isRoot && options.filter && !options.filter(node)) {
175
+ return null;
176
+ }
177
+ return Promise.resolve(node)
178
+ .then((clonedNode) => cloneSingleNode(clonedNode, options))
179
+ .then((clonedNode) => cloneChildren(node, clonedNode, options))
180
+ .then((clonedNode) => decorate(node, clonedNode))
181
+ .then((clonedNode) => ensureSVGSymbols(clonedNode, options));
182
+ }
183
+
184
+ exports.cloneNode = cloneNode;
185
+ //# sourceMappingURL=clone-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone-node.js","sources":["../../../../../../node_modules/html-to-image/es/clone-node.js"],"sourcesContent":["import { clonePseudoElements } from './clone-pseudos';\nimport { createImage, toArray, isInstanceOfElement } from './util';\nimport { getMimeType } from './mimes';\nimport { resourceToDataURL } from './dataurl';\nasync function cloneCanvasElement(canvas) {\n const dataURL = canvas.toDataURL();\n if (dataURL === 'data:,') {\n return canvas.cloneNode(false);\n }\n return createImage(dataURL);\n}\nasync function cloneVideoElement(video, options) {\n if (video.currentSrc) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = video.clientWidth;\n canvas.height = video.clientHeight;\n ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL();\n return createImage(dataURL);\n }\n const poster = video.poster;\n const contentType = getMimeType(poster);\n const dataURL = await resourceToDataURL(poster, contentType, options);\n return createImage(dataURL);\n}\nasync function cloneIFrameElement(iframe) {\n var _a;\n try {\n if ((_a = iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.body) {\n return (await cloneNode(iframe.contentDocument.body, {}, true));\n }\n }\n catch (_b) {\n // Failed to clone iframe\n }\n return iframe.cloneNode(false);\n}\nasync function cloneSingleNode(node, options) {\n if (isInstanceOfElement(node, HTMLCanvasElement)) {\n return cloneCanvasElement(node);\n }\n if (isInstanceOfElement(node, HTMLVideoElement)) {\n return cloneVideoElement(node, options);\n }\n if (isInstanceOfElement(node, HTMLIFrameElement)) {\n return cloneIFrameElement(node);\n }\n return node.cloneNode(false);\n}\nconst isSlotElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SLOT';\nasync function cloneChildren(nativeNode, clonedNode, options) {\n var _a, _b;\n let children = [];\n if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {\n children = toArray(nativeNode.assignedNodes());\n }\n else if (isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n ((_a = nativeNode.contentDocument) === null || _a === void 0 ? void 0 : _a.body)) {\n children = toArray(nativeNode.contentDocument.body.childNodes);\n }\n else {\n children = toArray(((_b = nativeNode.shadowRoot) !== null && _b !== void 0 ? _b : nativeNode).childNodes);\n }\n if (children.length === 0 ||\n isInstanceOfElement(nativeNode, HTMLVideoElement)) {\n return clonedNode;\n }\n await children.reduce((deferred, child) => deferred\n .then(() => cloneNode(child, options))\n .then((clonedChild) => {\n if (clonedChild) {\n clonedNode.appendChild(clonedChild);\n }\n }), Promise.resolve());\n return clonedNode;\n}\nfunction cloneCSSStyle(nativeNode, clonedNode) {\n const targetStyle = clonedNode.style;\n if (!targetStyle) {\n return;\n }\n const sourceStyle = window.getComputedStyle(nativeNode);\n if (sourceStyle.cssText) {\n targetStyle.cssText = sourceStyle.cssText;\n targetStyle.transformOrigin = sourceStyle.transformOrigin;\n }\n else {\n toArray(sourceStyle).forEach((name) => {\n let value = sourceStyle.getPropertyValue(name);\n if (name === 'font-size' && value.endsWith('px')) {\n const reducedFont = Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1;\n value = `${reducedFont}px`;\n }\n if (isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n name === 'display' &&\n value === 'inline') {\n value = 'block';\n }\n if (name === 'd' && clonedNode.getAttribute('d')) {\n value = `path(${clonedNode.getAttribute('d')})`;\n }\n targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));\n });\n }\n}\nfunction cloneInputValue(nativeNode, clonedNode) {\n if (isInstanceOfElement(nativeNode, HTMLTextAreaElement)) {\n clonedNode.innerHTML = nativeNode.value;\n }\n if (isInstanceOfElement(nativeNode, HTMLInputElement)) {\n clonedNode.setAttribute('value', nativeNode.value);\n }\n}\nfunction cloneSelectValue(nativeNode, clonedNode) {\n if (isInstanceOfElement(nativeNode, HTMLSelectElement)) {\n const clonedSelect = clonedNode;\n const selectedOption = Array.from(clonedSelect.children).find((child) => nativeNode.value === child.getAttribute('value'));\n if (selectedOption) {\n selectedOption.setAttribute('selected', '');\n }\n }\n}\nfunction decorate(nativeNode, clonedNode) {\n if (isInstanceOfElement(clonedNode, Element)) {\n cloneCSSStyle(nativeNode, clonedNode);\n clonePseudoElements(nativeNode, clonedNode);\n cloneInputValue(nativeNode, clonedNode);\n cloneSelectValue(nativeNode, clonedNode);\n }\n return clonedNode;\n}\nasync function ensureSVGSymbols(clone, options) {\n const uses = clone.querySelectorAll ? clone.querySelectorAll('use') : [];\n if (uses.length === 0) {\n return clone;\n }\n const processedDefs = {};\n for (let i = 0; i < uses.length; i++) {\n const use = uses[i];\n const id = use.getAttribute('xlink:href');\n if (id) {\n const exist = clone.querySelector(id);\n const definition = document.querySelector(id);\n if (!exist && definition && !processedDefs[id]) {\n // eslint-disable-next-line no-await-in-loop\n processedDefs[id] = (await cloneNode(definition, options, true));\n }\n }\n }\n const nodes = Object.values(processedDefs);\n if (nodes.length) {\n const ns = 'http://www.w3.org/1999/xhtml';\n const svg = document.createElementNS(ns, 'svg');\n svg.setAttribute('xmlns', ns);\n svg.style.position = 'absolute';\n svg.style.width = '0';\n svg.style.height = '0';\n svg.style.overflow = 'hidden';\n svg.style.display = 'none';\n const defs = document.createElementNS(ns, 'defs');\n svg.appendChild(defs);\n for (let i = 0; i < nodes.length; i++) {\n defs.appendChild(nodes[i]);\n }\n clone.appendChild(svg);\n }\n return clone;\n}\nexport async function cloneNode(node, options, isRoot) {\n if (!isRoot && options.filter && !options.filter(node)) {\n return null;\n }\n return Promise.resolve(node)\n .then((clonedNode) => cloneSingleNode(clonedNode, options))\n .then((clonedNode) => cloneChildren(node, clonedNode, options))\n .then((clonedNode) => decorate(node, clonedNode))\n .then((clonedNode) => ensureSVGSymbols(clonedNode, options));\n}\n//# sourceMappingURL=clone-node.js.map"],"names":["createImage","getMimeType","resourceToDataURL","isInstanceOfElement","toArray","clonePseudoElements"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var util = require('./util.js');
4
+
5
+ function formatCSSText(style) {
6
+ const content = style.getPropertyValue('content');
7
+ return `${style.cssText} content: '${content.replace(/'|"/g, '')}';`;
8
+ }
9
+ function formatCSSProperties(style) {
10
+ return util.toArray(style)
11
+ .map((name) => {
12
+ const value = style.getPropertyValue(name);
13
+ const priority = style.getPropertyPriority(name);
14
+ return `${name}: ${value}${priority ? ' !important' : ''};`;
15
+ })
16
+ .join(' ');
17
+ }
18
+ function getPseudoElementStyle(className, pseudo, style) {
19
+ const selector = `.${className}:${pseudo}`;
20
+ const cssText = style.cssText
21
+ ? formatCSSText(style)
22
+ : formatCSSProperties(style);
23
+ return document.createTextNode(`${selector}{${cssText}}`);
24
+ }
25
+ function clonePseudoElement(nativeNode, clonedNode, pseudo) {
26
+ const style = window.getComputedStyle(nativeNode, pseudo);
27
+ const content = style.getPropertyValue('content');
28
+ if (content === '' || content === 'none') {
29
+ return;
30
+ }
31
+ const className = util.uuid();
32
+ try {
33
+ clonedNode.className = `${clonedNode.className} ${className}`;
34
+ }
35
+ catch (err) {
36
+ return;
37
+ }
38
+ const styleElement = document.createElement('style');
39
+ styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));
40
+ clonedNode.appendChild(styleElement);
41
+ }
42
+ function clonePseudoElements(nativeNode, clonedNode) {
43
+ clonePseudoElement(nativeNode, clonedNode, ':before');
44
+ clonePseudoElement(nativeNode, clonedNode, ':after');
45
+ }
46
+
47
+ exports.clonePseudoElements = clonePseudoElements;
48
+ //# sourceMappingURL=clone-pseudos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone-pseudos.js","sources":["../../../../../../node_modules/html-to-image/es/clone-pseudos.js"],"sourcesContent":["import { uuid, toArray } from './util';\nfunction formatCSSText(style) {\n const content = style.getPropertyValue('content');\n return `${style.cssText} content: '${content.replace(/'|\"/g, '')}';`;\n}\nfunction formatCSSProperties(style) {\n return toArray(style)\n .map((name) => {\n const value = style.getPropertyValue(name);\n const priority = style.getPropertyPriority(name);\n return `${name}: ${value}${priority ? ' !important' : ''};`;\n })\n .join(' ');\n}\nfunction getPseudoElementStyle(className, pseudo, style) {\n const selector = `.${className}:${pseudo}`;\n const cssText = style.cssText\n ? formatCSSText(style)\n : formatCSSProperties(style);\n return document.createTextNode(`${selector}{${cssText}}`);\n}\nfunction clonePseudoElement(nativeNode, clonedNode, pseudo) {\n const style = window.getComputedStyle(nativeNode, pseudo);\n const content = style.getPropertyValue('content');\n if (content === '' || content === 'none') {\n return;\n }\n const className = uuid();\n try {\n clonedNode.className = `${clonedNode.className} ${className}`;\n }\n catch (err) {\n return;\n }\n const styleElement = document.createElement('style');\n styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));\n clonedNode.appendChild(styleElement);\n}\nexport function clonePseudoElements(nativeNode, clonedNode) {\n clonePseudoElement(nativeNode, clonedNode, ':before');\n clonePseudoElement(nativeNode, clonedNode, ':after');\n}\n//# sourceMappingURL=clone-pseudos.js.map"],"names":["toArray","uuid"],"mappings":";;;;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACtD,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AACD,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,IAAI,OAAOA,YAAO,CAAC,KAAK,CAAC;AACzB,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK;AACvB,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACnD,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACzD,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,KAAK,CAAC;AACN,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AACD,SAAS,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE;AACzD,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;AACjC,UAAU,aAAa,CAAC,KAAK,CAAC;AAC9B,UAAU,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AACD,SAAS,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE;AAC5D,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC9D,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACtD,IAAI,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC9C,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,SAAS,GAAGC,SAAI,EAAE,CAAC;AAC7B,IAAI,IAAI;AACR,QAAQ,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,OAAO,GAAG,EAAE;AAChB,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzD,IAAI,YAAY,CAAC,WAAW,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9E,IAAI,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACzC,CAAC;AACM,SAAS,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE;AAC5D,IAAI,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAC1D,IAAI,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACzD;;;;","x_google_ignoreList":[0]}
@@ -0,0 +1,83 @@
1
+ 'use strict';
2
+
3
+ function getContentFromDataUrl(dataURL) {
4
+ return dataURL.split(/,/)[1];
5
+ }
6
+ function isDataUrl(url) {
7
+ return url.search(/^(data:)/) !== -1;
8
+ }
9
+ function makeDataUrl(content, mimeType) {
10
+ return `data:${mimeType};base64,${content}`;
11
+ }
12
+ async function fetchAsDataURL(url, init, process) {
13
+ const res = await fetch(url, init);
14
+ if (res.status === 404) {
15
+ throw new Error(`Resource "${res.url}" not found`);
16
+ }
17
+ const blob = await res.blob();
18
+ return new Promise((resolve, reject) => {
19
+ const reader = new FileReader();
20
+ reader.onerror = reject;
21
+ reader.onloadend = () => {
22
+ try {
23
+ resolve(process({ res, result: reader.result }));
24
+ }
25
+ catch (error) {
26
+ reject(error);
27
+ }
28
+ };
29
+ reader.readAsDataURL(blob);
30
+ });
31
+ }
32
+ const cache = {};
33
+ function getCacheKey(url, contentType, includeQueryParams) {
34
+ let key = url.replace(/\?.*/, '');
35
+ if (includeQueryParams) {
36
+ key = url;
37
+ }
38
+ // font resource
39
+ if (/ttf|otf|eot|woff2?/i.test(key)) {
40
+ key = key.replace(/.*\//, '');
41
+ }
42
+ return contentType ? `[${contentType}]${key}` : key;
43
+ }
44
+ async function resourceToDataURL(resourceUrl, contentType, options) {
45
+ const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);
46
+ if (cache[cacheKey] != null) {
47
+ return cache[cacheKey];
48
+ }
49
+ // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache
50
+ if (options.cacheBust) {
51
+ // eslint-disable-next-line no-param-reassign
52
+ resourceUrl += (/\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime();
53
+ }
54
+ let dataURL;
55
+ try {
56
+ const content = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {
57
+ if (!contentType) {
58
+ // eslint-disable-next-line no-param-reassign
59
+ contentType = res.headers.get('Content-Type') || '';
60
+ }
61
+ return getContentFromDataUrl(result);
62
+ });
63
+ dataURL = makeDataUrl(content, contentType);
64
+ }
65
+ catch (error) {
66
+ dataURL = options.imagePlaceholder || '';
67
+ let msg = `Failed to fetch resource: ${resourceUrl}`;
68
+ if (error) {
69
+ msg = typeof error === 'string' ? error : error.message;
70
+ }
71
+ if (msg) {
72
+ console.warn(msg);
73
+ }
74
+ }
75
+ cache[cacheKey] = dataURL;
76
+ return dataURL;
77
+ }
78
+
79
+ exports.fetchAsDataURL = fetchAsDataURL;
80
+ exports.isDataUrl = isDataUrl;
81
+ exports.makeDataUrl = makeDataUrl;
82
+ exports.resourceToDataURL = resourceToDataURL;
83
+ //# sourceMappingURL=dataurl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataurl.js","sources":["../../../../../../node_modules/html-to-image/es/dataurl.js"],"sourcesContent":["function getContentFromDataUrl(dataURL) {\n return dataURL.split(/,/)[1];\n}\nexport function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n}\nexport function makeDataUrl(content, mimeType) {\n return `data:${mimeType};base64,${content}`;\n}\nexport async function fetchAsDataURL(url, init, process) {\n const res = await fetch(url, init);\n if (res.status === 404) {\n throw new Error(`Resource \"${res.url}\" not found`);\n }\n const blob = await res.blob();\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = () => {\n try {\n resolve(process({ res, result: reader.result }));\n }\n catch (error) {\n reject(error);\n }\n };\n reader.readAsDataURL(blob);\n });\n}\nconst cache = {};\nfunction getCacheKey(url, contentType, includeQueryParams) {\n let key = url.replace(/\\?.*/, '');\n if (includeQueryParams) {\n key = url;\n }\n // font resource\n if (/ttf|otf|eot|woff2?/i.test(key)) {\n key = key.replace(/.*\\//, '');\n }\n return contentType ? `[${contentType}]${key}` : key;\n}\nexport async function resourceToDataURL(resourceUrl, contentType, options) {\n const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);\n if (cache[cacheKey] != null) {\n return cache[cacheKey];\n }\n // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n if (options.cacheBust) {\n // eslint-disable-next-line no-param-reassign\n resourceUrl += (/\\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime();\n }\n let dataURL;\n try {\n const content = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {\n if (!contentType) {\n // eslint-disable-next-line no-param-reassign\n contentType = res.headers.get('Content-Type') || '';\n }\n return getContentFromDataUrl(result);\n });\n dataURL = makeDataUrl(content, contentType);\n }\n catch (error) {\n dataURL = options.imagePlaceholder || '';\n let msg = `Failed to fetch resource: ${resourceUrl}`;\n if (error) {\n msg = typeof error === 'string' ? error : error.message;\n }\n if (msg) {\n console.warn(msg);\n }\n }\n cache[cacheKey] = dataURL;\n return dataURL;\n}\n//# sourceMappingURL=dataurl.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ var embedResources = require('./embed-resources.js');
4
+ var util = require('./util.js');
5
+ var dataurl = require('./dataurl.js');
6
+ var mimes = require('./mimes.js');
7
+
8
+ async function embedProp(propName, node, options) {
9
+ var _a;
10
+ const propValue = (_a = node.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue(propName);
11
+ if (propValue) {
12
+ const cssString = await embedResources.embedResources(propValue, null, options);
13
+ node.style.setProperty(propName, cssString, node.style.getPropertyPriority(propName));
14
+ return true;
15
+ }
16
+ return false;
17
+ }
18
+ async function embedBackground(clonedNode, options) {
19
+ if (!(await embedProp('background', clonedNode, options))) {
20
+ await embedProp('background-image', clonedNode, options);
21
+ }
22
+ if (!(await embedProp('mask', clonedNode, options))) {
23
+ await embedProp('mask-image', clonedNode, options);
24
+ }
25
+ }
26
+ async function embedImageNode(clonedNode, options) {
27
+ const isImageElement = util.isInstanceOfElement(clonedNode, HTMLImageElement);
28
+ if (!(isImageElement && !dataurl.isDataUrl(clonedNode.src)) &&
29
+ !(util.isInstanceOfElement(clonedNode, SVGImageElement) &&
30
+ !dataurl.isDataUrl(clonedNode.href.baseVal))) {
31
+ return;
32
+ }
33
+ const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal;
34
+ const dataURL = await dataurl.resourceToDataURL(url, mimes.getMimeType(url), options);
35
+ await new Promise((resolve, reject) => {
36
+ clonedNode.onload = resolve;
37
+ clonedNode.onerror = reject;
38
+ const image = clonedNode;
39
+ if (image.decode) {
40
+ image.decode = resolve;
41
+ }
42
+ if (image.loading === 'lazy') {
43
+ image.loading = 'eager';
44
+ }
45
+ if (isImageElement) {
46
+ clonedNode.srcset = '';
47
+ clonedNode.src = dataURL;
48
+ }
49
+ else {
50
+ clonedNode.href.baseVal = dataURL;
51
+ }
52
+ });
53
+ }
54
+ async function embedChildren(clonedNode, options) {
55
+ const children = util.toArray(clonedNode.childNodes);
56
+ const deferreds = children.map((child) => embedImages(child, options));
57
+ await Promise.all(deferreds).then(() => clonedNode);
58
+ }
59
+ async function embedImages(clonedNode, options) {
60
+ if (util.isInstanceOfElement(clonedNode, Element)) {
61
+ await embedBackground(clonedNode, options);
62
+ await embedImageNode(clonedNode, options);
63
+ await embedChildren(clonedNode, options);
64
+ }
65
+ }
66
+
67
+ exports.embedImages = embedImages;
68
+ //# sourceMappingURL=embed-images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed-images.js","sources":["../../../../../../node_modules/html-to-image/es/embed-images.js"],"sourcesContent":["import { embedResources } from './embed-resources';\nimport { toArray, isInstanceOfElement } from './util';\nimport { isDataUrl, resourceToDataURL } from './dataurl';\nimport { getMimeType } from './mimes';\nasync function embedProp(propName, node, options) {\n var _a;\n const propValue = (_a = node.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue(propName);\n if (propValue) {\n const cssString = await embedResources(propValue, null, options);\n node.style.setProperty(propName, cssString, node.style.getPropertyPriority(propName));\n return true;\n }\n return false;\n}\nasync function embedBackground(clonedNode, options) {\n if (!(await embedProp('background', clonedNode, options))) {\n await embedProp('background-image', clonedNode, options);\n }\n if (!(await embedProp('mask', clonedNode, options))) {\n await embedProp('mask-image', clonedNode, options);\n }\n}\nasync function embedImageNode(clonedNode, options) {\n const isImageElement = isInstanceOfElement(clonedNode, HTMLImageElement);\n if (!(isImageElement && !isDataUrl(clonedNode.src)) &&\n !(isInstanceOfElement(clonedNode, SVGImageElement) &&\n !isDataUrl(clonedNode.href.baseVal))) {\n return;\n }\n const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal;\n const dataURL = await resourceToDataURL(url, getMimeType(url), options);\n await new Promise((resolve, reject) => {\n clonedNode.onload = resolve;\n clonedNode.onerror = reject;\n const image = clonedNode;\n if (image.decode) {\n image.decode = resolve;\n }\n if (image.loading === 'lazy') {\n image.loading = 'eager';\n }\n if (isImageElement) {\n clonedNode.srcset = '';\n clonedNode.src = dataURL;\n }\n else {\n clonedNode.href.baseVal = dataURL;\n }\n });\n}\nasync function embedChildren(clonedNode, options) {\n const children = toArray(clonedNode.childNodes);\n const deferreds = children.map((child) => embedImages(child, options));\n await Promise.all(deferreds).then(() => clonedNode);\n}\nexport async function embedImages(clonedNode, options) {\n if (isInstanceOfElement(clonedNode, Element)) {\n await embedBackground(clonedNode, options);\n await embedImageNode(clonedNode, options);\n await embedChildren(clonedNode, options);\n }\n}\n//# sourceMappingURL=embed-images.js.map"],"names":["embedResources","isInstanceOfElement","isDataUrl","resourceToDataURL","getMimeType","toArray"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ var util = require('./util.js');
4
+ var mimes = require('./mimes.js');
5
+ var dataurl = require('./dataurl.js');
6
+
7
+ const URL_REGEX = /url\((['"]?)([^'"]+?)\1\)/g;
8
+ const URL_WITH_FORMAT_REGEX = /url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g;
9
+ const FONT_SRC_REGEX = /src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;
10
+ function toRegex(url) {
11
+ // eslint-disable-next-line no-useless-escape
12
+ const escaped = url.replace(/([.*+?^${}()|\[\]\/\\])/g, '\\$1');
13
+ return new RegExp(`(url\\(['"]?)(${escaped})(['"]?\\))`, 'g');
14
+ }
15
+ function parseURLs(cssText) {
16
+ const urls = [];
17
+ cssText.replace(URL_REGEX, (raw, quotation, url) => {
18
+ urls.push(url);
19
+ return raw;
20
+ });
21
+ return urls.filter((url) => !dataurl.isDataUrl(url));
22
+ }
23
+ async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {
24
+ try {
25
+ const resolvedURL = baseURL ? util.resolveUrl(resourceURL, baseURL) : resourceURL;
26
+ const contentType = mimes.getMimeType(resourceURL);
27
+ let dataURL;
28
+ if (getContentFromUrl) {
29
+ const content = await getContentFromUrl(resolvedURL);
30
+ dataURL = dataurl.makeDataUrl(content, contentType);
31
+ }
32
+ else {
33
+ dataURL = await dataurl.resourceToDataURL(resolvedURL, contentType, options);
34
+ }
35
+ return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);
36
+ }
37
+ catch (error) {
38
+ // pass
39
+ }
40
+ return cssText;
41
+ }
42
+ function filterPreferredFontFormat(str, { preferredFontFormat }) {
43
+ return !preferredFontFormat
44
+ ? str
45
+ : str.replace(FONT_SRC_REGEX, (match) => {
46
+ // eslint-disable-next-line no-constant-condition
47
+ while (true) {
48
+ const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];
49
+ if (!format) {
50
+ return '';
51
+ }
52
+ if (format === preferredFontFormat) {
53
+ return `src: ${src};`;
54
+ }
55
+ }
56
+ });
57
+ }
58
+ function shouldEmbed(url) {
59
+ return url.search(URL_REGEX) !== -1;
60
+ }
61
+ async function embedResources(cssText, baseUrl, options) {
62
+ if (!shouldEmbed(cssText)) {
63
+ return cssText;
64
+ }
65
+ const filteredCSSText = filterPreferredFontFormat(cssText, options);
66
+ const urls = parseURLs(filteredCSSText);
67
+ return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));
68
+ }
69
+
70
+ exports.embed = embed;
71
+ exports.embedResources = embedResources;
72
+ exports.parseURLs = parseURLs;
73
+ exports.shouldEmbed = shouldEmbed;
74
+ //# sourceMappingURL=embed-resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed-resources.js","sources":["../../../../../../node_modules/html-to-image/es/embed-resources.js"],"sourcesContent":["import { resolveUrl } from './util';\nimport { getMimeType } from './mimes';\nimport { isDataUrl, makeDataUrl, resourceToDataURL } from './dataurl';\nconst URL_REGEX = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nconst URL_WITH_FORMAT_REGEX = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g;\nconst FONT_SRC_REGEX = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;\nfunction toRegex(url) {\n // eslint-disable-next-line no-useless-escape\n const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, 'g');\n}\nexport function parseURLs(cssText) {\n const urls = [];\n cssText.replace(URL_REGEX, (raw, quotation, url) => {\n urls.push(url);\n return raw;\n });\n return urls.filter((url) => !isDataUrl(url));\n}\nexport async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {\n try {\n const resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL;\n const contentType = getMimeType(resourceURL);\n let dataURL;\n if (getContentFromUrl) {\n const content = await getContentFromUrl(resolvedURL);\n dataURL = makeDataUrl(content, contentType);\n }\n else {\n dataURL = await resourceToDataURL(resolvedURL, contentType, options);\n }\n return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);\n }\n catch (error) {\n // pass\n }\n return cssText;\n}\nfunction filterPreferredFontFormat(str, { preferredFontFormat }) {\n return !preferredFontFormat\n ? str\n : str.replace(FONT_SRC_REGEX, (match) => {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];\n if (!format) {\n return '';\n }\n if (format === preferredFontFormat) {\n return `src: ${src};`;\n }\n }\n });\n}\nexport function shouldEmbed(url) {\n return url.search(URL_REGEX) !== -1;\n}\nexport async function embedResources(cssText, baseUrl, options) {\n if (!shouldEmbed(cssText)) {\n return cssText;\n }\n const filteredCSSText = filterPreferredFontFormat(cssText, options);\n const urls = parseURLs(filteredCSSText);\n return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));\n}\n//# sourceMappingURL=embed-resources.js.map"],"names":["isDataUrl","resolveUrl","getMimeType","makeDataUrl","resourceToDataURL"],"mappings":"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","x_google_ignoreList":[0]}