@vuu-ui/vuu-shell 0.8.34 → 0.8.36
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.
- package/README.md +0 -0
- package/cjs/ShellContextProvider.js.map +1 -0
- package/cjs/app-header/AppHeader.js.map +1 -0
- package/cjs/connection-status/ConnectionStatusIcon.js.map +1 -0
- package/cjs/feature/Feature.js.map +1 -0
- package/cjs/feature/FeatureErrorBoundary.js.map +1 -0
- package/cjs/feature/Loader.js.map +1 -0
- package/cjs/feature/css-module-loader.js.map +1 -0
- package/cjs/feature-list/FeatureList.js.map +1 -0
- package/cjs/layout-management/LayoutList.js.map +1 -0
- package/cjs/layout-management/LayoutTile.js.map +1 -0
- package/cjs/layout-management/SaveLayoutPanel.js.map +1 -0
- package/cjs/{packages/vuu-shell/src/layout-management → layout-management}/screenshot-utils.js +2 -2
- package/cjs/layout-management/screenshot-utils.js.map +1 -0
- package/cjs/layout-management/useLayoutContextMenuItems.js.map +1 -0
- package/cjs/layout-management/useLayoutManager.js.map +1 -0
- package/cjs/{packages/vuu-shell/src/left-nav → left-nav}/LeftNav.js +1 -0
- package/cjs/left-nav/LeftNav.js.map +1 -0
- package/cjs/login/LoginPanel.js.map +1 -0
- package/cjs/login/VuuLogo.js.map +1 -0
- package/cjs/login/login-utils.js.map +1 -0
- package/cjs/persistence-management/LocalPersistenceManager.js.map +1 -0
- package/cjs/persistence-management/RemotePersistenceManager.js.map +1 -0
- package/cjs/persistence-management/defaultApplicationJson.js.map +1 -0
- package/cjs/session-editing-form/SessionEditingForm.js.map +1 -0
- package/cjs/shell-layouts/context-panel/ContextPanel.js.map +1 -0
- package/cjs/shell-layouts/side-panel/SidePanel.js.map +1 -0
- package/cjs/shell-layouts/useFullHeightLeftPanel.js.map +1 -0
- package/cjs/shell-layouts/useInlayLeftPanel.js.map +1 -0
- package/cjs/shell-layouts/useShellLayout.js.map +1 -0
- package/cjs/{packages/vuu-shell/src/shell.js → shell.js} +1 -0
- package/cjs/shell.js.map +1 -0
- package/cjs/shellTypes.js.map +1 -0
- package/cjs/theme-switch/ThemeSwitch.js.map +1 -0
- package/esm/ShellContextProvider.js.map +1 -0
- package/esm/app-header/AppHeader.js.map +1 -0
- package/esm/connection-status/ConnectionStatusIcon.js.map +1 -0
- package/esm/feature/Feature.js.map +1 -0
- package/esm/feature/FeatureErrorBoundary.js.map +1 -0
- package/esm/feature/Loader.js.map +1 -0
- package/esm/feature/css-module-loader.js.map +1 -0
- package/esm/feature-list/FeatureList.js.map +1 -0
- package/esm/layout-management/LayoutList.js.map +1 -0
- package/esm/layout-management/LayoutTile.js.map +1 -0
- package/esm/layout-management/SaveLayoutPanel.js.map +1 -0
- package/esm/{packages/vuu-shell/src/layout-management → layout-management}/screenshot-utils.js +1 -1
- package/esm/layout-management/screenshot-utils.js.map +1 -0
- package/esm/layout-management/useLayoutContextMenuItems.js.map +1 -0
- package/esm/layout-management/useLayoutManager.js.map +1 -0
- package/esm/{packages/vuu-shell/src/left-nav → left-nav}/LeftNav.js +1 -0
- package/esm/left-nav/LeftNav.js.map +1 -0
- package/esm/login/LoginPanel.js.map +1 -0
- package/esm/login/VuuLogo.js.map +1 -0
- package/esm/login/login-utils.js.map +1 -0
- package/esm/persistence-management/LocalPersistenceManager.js.map +1 -0
- package/esm/persistence-management/RemotePersistenceManager.js.map +1 -0
- package/esm/persistence-management/defaultApplicationJson.js.map +1 -0
- package/esm/session-editing-form/SessionEditingForm.js.map +1 -0
- package/esm/shell-layouts/context-panel/ContextPanel.js.map +1 -0
- package/esm/shell-layouts/side-panel/SidePanel.js.map +1 -0
- package/esm/shell-layouts/useFullHeightLeftPanel.js.map +1 -0
- package/esm/shell-layouts/useInlayLeftPanel.js.map +1 -0
- package/esm/shell-layouts/useShellLayout.js.map +1 -0
- package/esm/{packages/vuu-shell/src/shell.js → shell.js} +1 -0
- package/esm/shell.js.map +1 -0
- package/esm/shellTypes.js.map +1 -0
- package/esm/theme-switch/ThemeSwitch.js.map +1 -0
- package/package.json +13 -13
- package/cjs/node_modules/html-to-image/es/apply-style.js +0 -24
- package/cjs/node_modules/html-to-image/es/apply-style.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/clone-node.js +0 -185
- package/cjs/node_modules/html-to-image/es/clone-node.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/clone-pseudos.js +0 -48
- package/cjs/node_modules/html-to-image/es/clone-pseudos.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/dataurl.js +0 -83
- package/cjs/node_modules/html-to-image/es/dataurl.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/embed-images.js +0 -68
- package/cjs/node_modules/html-to-image/es/embed-images.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/embed-resources.js +0 -74
- package/cjs/node_modules/html-to-image/es/embed-resources.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/embed-webfonts.js +0 -187
- package/cjs/node_modules/html-to-image/es/embed-webfonts.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/index.js +0 -49
- package/cjs/node_modules/html-to-image/es/index.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/mimes.js +0 -28
- package/cjs/node_modules/html-to-image/es/mimes.js.map +0 -1
- package/cjs/node_modules/html-to-image/es/util.js +0 -166
- package/cjs/node_modules/html-to-image/es/util.js.map +0 -1
- package/cjs/packages/vuu-shell/src/ShellContextProvider.js.map +0 -1
- package/cjs/packages/vuu-shell/src/app-header/AppHeader.js.map +0 -1
- package/cjs/packages/vuu-shell/src/connection-status/ConnectionStatusIcon.js.map +0 -1
- package/cjs/packages/vuu-shell/src/feature/Feature.js.map +0 -1
- package/cjs/packages/vuu-shell/src/feature/FeatureErrorBoundary.js.map +0 -1
- package/cjs/packages/vuu-shell/src/feature/Loader.js.map +0 -1
- package/cjs/packages/vuu-shell/src/feature/css-module-loader.js.map +0 -1
- package/cjs/packages/vuu-shell/src/feature-list/FeatureList.js.map +0 -1
- package/cjs/packages/vuu-shell/src/layout-management/LayoutList.js.map +0 -1
- package/cjs/packages/vuu-shell/src/layout-management/LayoutTile.js.map +0 -1
- package/cjs/packages/vuu-shell/src/layout-management/SaveLayoutPanel.js.map +0 -1
- package/cjs/packages/vuu-shell/src/layout-management/screenshot-utils.js.map +0 -1
- package/cjs/packages/vuu-shell/src/layout-management/useLayoutContextMenuItems.js.map +0 -1
- package/cjs/packages/vuu-shell/src/layout-management/useLayoutManager.js.map +0 -1
- package/cjs/packages/vuu-shell/src/left-nav/LeftNav.js.map +0 -1
- package/cjs/packages/vuu-shell/src/login/LoginPanel.js.map +0 -1
- package/cjs/packages/vuu-shell/src/login/VuuLogo.js.map +0 -1
- package/cjs/packages/vuu-shell/src/login/login-utils.js.map +0 -1
- package/cjs/packages/vuu-shell/src/persistence-management/LocalPersistenceManager.js.map +0 -1
- package/cjs/packages/vuu-shell/src/persistence-management/RemotePersistenceManager.js.map +0 -1
- package/cjs/packages/vuu-shell/src/persistence-management/defaultApplicationJson.js.map +0 -1
- package/cjs/packages/vuu-shell/src/session-editing-form/SessionEditingForm.js.map +0 -1
- package/cjs/packages/vuu-shell/src/shell-layouts/context-panel/ContextPanel.js.map +0 -1
- package/cjs/packages/vuu-shell/src/shell-layouts/side-panel/SidePanel.js.map +0 -1
- package/cjs/packages/vuu-shell/src/shell-layouts/useFullHeightLeftPanel.js.map +0 -1
- package/cjs/packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.js.map +0 -1
- package/cjs/packages/vuu-shell/src/shell-layouts/useShellLayout.js.map +0 -1
- package/cjs/packages/vuu-shell/src/shell.js.map +0 -1
- package/cjs/packages/vuu-shell/src/shellTypes.js.map +0 -1
- package/cjs/packages/vuu-shell/src/theme-switch/ThemeSwitch.js.map +0 -1
- package/esm/node_modules/html-to-image/es/apply-style.js +0 -22
- package/esm/node_modules/html-to-image/es/apply-style.js.map +0 -1
- package/esm/node_modules/html-to-image/es/clone-node.js +0 -183
- package/esm/node_modules/html-to-image/es/clone-node.js.map +0 -1
- package/esm/node_modules/html-to-image/es/clone-pseudos.js +0 -46
- package/esm/node_modules/html-to-image/es/clone-pseudos.js.map +0 -1
- package/esm/node_modules/html-to-image/es/dataurl.js +0 -78
- package/esm/node_modules/html-to-image/es/dataurl.js.map +0 -1
- package/esm/node_modules/html-to-image/es/embed-images.js +0 -66
- package/esm/node_modules/html-to-image/es/embed-images.js.map +0 -1
- package/esm/node_modules/html-to-image/es/embed-resources.js +0 -69
- package/esm/node_modules/html-to-image/es/embed-resources.js.map +0 -1
- package/esm/node_modules/html-to-image/es/embed-webfonts.js +0 -184
- package/esm/node_modules/html-to-image/es/embed-webfonts.js.map +0 -1
- package/esm/node_modules/html-to-image/es/index.js +0 -45
- package/esm/node_modules/html-to-image/es/index.js.map +0 -1
- package/esm/node_modules/html-to-image/es/mimes.js +0 -26
- package/esm/node_modules/html-to-image/es/mimes.js.map +0 -1
- package/esm/node_modules/html-to-image/es/util.js +0 -155
- package/esm/node_modules/html-to-image/es/util.js.map +0 -1
- package/esm/packages/vuu-shell/src/ShellContextProvider.js.map +0 -1
- package/esm/packages/vuu-shell/src/app-header/AppHeader.js.map +0 -1
- package/esm/packages/vuu-shell/src/connection-status/ConnectionStatusIcon.js.map +0 -1
- package/esm/packages/vuu-shell/src/feature/Feature.js.map +0 -1
- package/esm/packages/vuu-shell/src/feature/FeatureErrorBoundary.js.map +0 -1
- package/esm/packages/vuu-shell/src/feature/Loader.js.map +0 -1
- package/esm/packages/vuu-shell/src/feature/css-module-loader.js.map +0 -1
- package/esm/packages/vuu-shell/src/feature-list/FeatureList.js.map +0 -1
- package/esm/packages/vuu-shell/src/layout-management/LayoutList.js.map +0 -1
- package/esm/packages/vuu-shell/src/layout-management/LayoutTile.js.map +0 -1
- package/esm/packages/vuu-shell/src/layout-management/SaveLayoutPanel.js.map +0 -1
- package/esm/packages/vuu-shell/src/layout-management/screenshot-utils.js.map +0 -1
- package/esm/packages/vuu-shell/src/layout-management/useLayoutContextMenuItems.js.map +0 -1
- package/esm/packages/vuu-shell/src/layout-management/useLayoutManager.js.map +0 -1
- package/esm/packages/vuu-shell/src/left-nav/LeftNav.js.map +0 -1
- package/esm/packages/vuu-shell/src/login/LoginPanel.js.map +0 -1
- package/esm/packages/vuu-shell/src/login/VuuLogo.js.map +0 -1
- package/esm/packages/vuu-shell/src/login/login-utils.js.map +0 -1
- package/esm/packages/vuu-shell/src/persistence-management/LocalPersistenceManager.js.map +0 -1
- package/esm/packages/vuu-shell/src/persistence-management/RemotePersistenceManager.js.map +0 -1
- package/esm/packages/vuu-shell/src/persistence-management/defaultApplicationJson.js.map +0 -1
- package/esm/packages/vuu-shell/src/session-editing-form/SessionEditingForm.js.map +0 -1
- package/esm/packages/vuu-shell/src/shell-layouts/context-panel/ContextPanel.js.map +0 -1
- package/esm/packages/vuu-shell/src/shell-layouts/side-panel/SidePanel.js.map +0 -1
- package/esm/packages/vuu-shell/src/shell-layouts/useFullHeightLeftPanel.js.map +0 -1
- package/esm/packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.js.map +0 -1
- package/esm/packages/vuu-shell/src/shell-layouts/useShellLayout.js.map +0 -1
- package/esm/packages/vuu-shell/src/shell.js.map +0 -1
- package/esm/packages/vuu-shell/src/shellTypes.js.map +0 -1
- package/esm/packages/vuu-shell/src/theme-switch/ThemeSwitch.js.map +0 -1
- /package/cjs/{packages/vuu-shell/src/ShellContextProvider.js → ShellContextProvider.js} +0 -0
- /package/cjs/{packages/vuu-shell/src/app-header → app-header}/AppHeader.js +0 -0
- /package/cjs/{packages/vuu-shell/src/connection-status → connection-status}/ConnectionStatusIcon.js +0 -0
- /package/cjs/{packages/vuu-shell/src/feature → feature}/Feature.js +0 -0
- /package/cjs/{packages/vuu-shell/src/feature → feature}/FeatureErrorBoundary.js +0 -0
- /package/cjs/{packages/vuu-shell/src/feature → feature}/Loader.js +0 -0
- /package/cjs/{packages/vuu-shell/src/feature → feature}/css-module-loader.js +0 -0
- /package/cjs/{packages/vuu-shell/src/feature-list → feature-list}/FeatureList.js +0 -0
- /package/cjs/{packages/vuu-shell/src/index.js → index.js} +0 -0
- /package/cjs/{packages/vuu-shell/src/index.js.map → index.js.map} +0 -0
- /package/cjs/{packages/vuu-shell/src/layout-management → layout-management}/LayoutList.js +0 -0
- /package/cjs/{packages/vuu-shell/src/layout-management → layout-management}/LayoutTile.js +0 -0
- /package/cjs/{packages/vuu-shell/src/layout-management → layout-management}/SaveLayoutPanel.js +0 -0
- /package/cjs/{packages/vuu-shell/src/layout-management → layout-management}/useLayoutContextMenuItems.js +0 -0
- /package/cjs/{packages/vuu-shell/src/layout-management → layout-management}/useLayoutManager.js +0 -0
- /package/cjs/{packages/vuu-shell/src/login → login}/LoginPanel.js +0 -0
- /package/cjs/{packages/vuu-shell/src/login → login}/VuuLogo.js +0 -0
- /package/cjs/{packages/vuu-shell/src/login → login}/login-utils.js +0 -0
- /package/cjs/{packages/vuu-shell/src/persistence-management → persistence-management}/LocalPersistenceManager.js +0 -0
- /package/cjs/{packages/vuu-shell/src/persistence-management → persistence-management}/RemotePersistenceManager.js +0 -0
- /package/cjs/{packages/vuu-shell/src/persistence-management → persistence-management}/defaultApplicationJson.js +0 -0
- /package/cjs/{packages/vuu-shell/src/session-editing-form → session-editing-form}/SessionEditingForm.js +0 -0
- /package/cjs/{packages/vuu-shell/src/shell-layouts → shell-layouts}/context-panel/ContextPanel.js +0 -0
- /package/cjs/{packages/vuu-shell/src/shell-layouts → shell-layouts}/side-panel/SidePanel.js +0 -0
- /package/cjs/{packages/vuu-shell/src/shell-layouts → shell-layouts}/useFullHeightLeftPanel.js +0 -0
- /package/cjs/{packages/vuu-shell/src/shell-layouts → shell-layouts}/useInlayLeftPanel.js +0 -0
- /package/cjs/{packages/vuu-shell/src/shell-layouts → shell-layouts}/useShellLayout.js +0 -0
- /package/cjs/{packages/vuu-shell/src/shellTypes.js → shellTypes.js} +0 -0
- /package/cjs/{packages/vuu-shell/src/theme-switch → theme-switch}/ThemeSwitch.js +0 -0
- /package/esm/{packages/vuu-shell/src/ShellContextProvider.js → ShellContextProvider.js} +0 -0
- /package/esm/{packages/vuu-shell/src/app-header → app-header}/AppHeader.js +0 -0
- /package/esm/{packages/vuu-shell/src/connection-status → connection-status}/ConnectionStatusIcon.js +0 -0
- /package/esm/{packages/vuu-shell/src/feature → feature}/Feature.js +0 -0
- /package/esm/{packages/vuu-shell/src/feature → feature}/FeatureErrorBoundary.js +0 -0
- /package/esm/{packages/vuu-shell/src/feature → feature}/Loader.js +0 -0
- /package/esm/{packages/vuu-shell/src/feature → feature}/css-module-loader.js +0 -0
- /package/esm/{packages/vuu-shell/src/feature-list → feature-list}/FeatureList.js +0 -0
- /package/esm/{packages/vuu-shell/src/index.js → index.js} +0 -0
- /package/esm/{packages/vuu-shell/src/index.js.map → index.js.map} +0 -0
- /package/esm/{packages/vuu-shell/src/layout-management → layout-management}/LayoutList.js +0 -0
- /package/esm/{packages/vuu-shell/src/layout-management → layout-management}/LayoutTile.js +0 -0
- /package/esm/{packages/vuu-shell/src/layout-management → layout-management}/SaveLayoutPanel.js +0 -0
- /package/esm/{packages/vuu-shell/src/layout-management → layout-management}/useLayoutContextMenuItems.js +0 -0
- /package/esm/{packages/vuu-shell/src/layout-management → layout-management}/useLayoutManager.js +0 -0
- /package/esm/{packages/vuu-shell/src/login → login}/LoginPanel.js +0 -0
- /package/esm/{packages/vuu-shell/src/login → login}/VuuLogo.js +0 -0
- /package/esm/{packages/vuu-shell/src/login → login}/login-utils.js +0 -0
- /package/esm/{packages/vuu-shell/src/persistence-management → persistence-management}/LocalPersistenceManager.js +0 -0
- /package/esm/{packages/vuu-shell/src/persistence-management → persistence-management}/RemotePersistenceManager.js +0 -0
- /package/esm/{packages/vuu-shell/src/persistence-management → persistence-management}/defaultApplicationJson.js +0 -0
- /package/esm/{packages/vuu-shell/src/session-editing-form → session-editing-form}/SessionEditingForm.js +0 -0
- /package/esm/{packages/vuu-shell/src/shell-layouts → shell-layouts}/context-panel/ContextPanel.js +0 -0
- /package/esm/{packages/vuu-shell/src/shell-layouts → shell-layouts}/side-panel/SidePanel.js +0 -0
- /package/esm/{packages/vuu-shell/src/shell-layouts → shell-layouts}/useFullHeightLeftPanel.js +0 -0
- /package/esm/{packages/vuu-shell/src/shell-layouts → shell-layouts}/useInlayLeftPanel.js +0 -0
- /package/esm/{packages/vuu-shell/src/shell-layouts → shell-layouts}/useShellLayout.js +0 -0
- /package/esm/{packages/vuu-shell/src/shellTypes.js → shellTypes.js} +0 -0
- /package/esm/{packages/vuu-shell/src/theme-switch → theme-switch}/ThemeSwitch.js +0 -0
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { uuid, toArray } from './util.js';
|
|
2
|
-
|
|
3
|
-
function formatCSSText(style) {
|
|
4
|
-
const content = style.getPropertyValue('content');
|
|
5
|
-
return `${style.cssText} content: '${content.replace(/'|"/g, '')}';`;
|
|
6
|
-
}
|
|
7
|
-
function formatCSSProperties(style) {
|
|
8
|
-
return toArray(style)
|
|
9
|
-
.map((name) => {
|
|
10
|
-
const value = style.getPropertyValue(name);
|
|
11
|
-
const priority = style.getPropertyPriority(name);
|
|
12
|
-
return `${name}: ${value}${priority ? ' !important' : ''};`;
|
|
13
|
-
})
|
|
14
|
-
.join(' ');
|
|
15
|
-
}
|
|
16
|
-
function getPseudoElementStyle(className, pseudo, style) {
|
|
17
|
-
const selector = `.${className}:${pseudo}`;
|
|
18
|
-
const cssText = style.cssText
|
|
19
|
-
? formatCSSText(style)
|
|
20
|
-
: formatCSSProperties(style);
|
|
21
|
-
return document.createTextNode(`${selector}{${cssText}}`);
|
|
22
|
-
}
|
|
23
|
-
function clonePseudoElement(nativeNode, clonedNode, pseudo) {
|
|
24
|
-
const style = window.getComputedStyle(nativeNode, pseudo);
|
|
25
|
-
const content = style.getPropertyValue('content');
|
|
26
|
-
if (content === '' || content === 'none') {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const className = uuid();
|
|
30
|
-
try {
|
|
31
|
-
clonedNode.className = `${clonedNode.className} ${className}`;
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const styleElement = document.createElement('style');
|
|
37
|
-
styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));
|
|
38
|
-
clonedNode.appendChild(styleElement);
|
|
39
|
-
}
|
|
40
|
-
function clonePseudoElements(nativeNode, clonedNode) {
|
|
41
|
-
clonePseudoElement(nativeNode, clonedNode, ':before');
|
|
42
|
-
clonePseudoElement(nativeNode, clonedNode, ':after');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export { clonePseudoElements };
|
|
46
|
-
//# sourceMappingURL=clone-pseudos.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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":[],"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,OAAO,OAAO,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,GAAG,IAAI,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]}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
function getContentFromDataUrl(dataURL) {
|
|
2
|
-
return dataURL.split(/,/)[1];
|
|
3
|
-
}
|
|
4
|
-
function isDataUrl(url) {
|
|
5
|
-
return url.search(/^(data:)/) !== -1;
|
|
6
|
-
}
|
|
7
|
-
function makeDataUrl(content, mimeType) {
|
|
8
|
-
return `data:${mimeType};base64,${content}`;
|
|
9
|
-
}
|
|
10
|
-
async function fetchAsDataURL(url, init, process) {
|
|
11
|
-
const res = await fetch(url, init);
|
|
12
|
-
if (res.status === 404) {
|
|
13
|
-
throw new Error(`Resource "${res.url}" not found`);
|
|
14
|
-
}
|
|
15
|
-
const blob = await res.blob();
|
|
16
|
-
return new Promise((resolve, reject) => {
|
|
17
|
-
const reader = new FileReader();
|
|
18
|
-
reader.onerror = reject;
|
|
19
|
-
reader.onloadend = () => {
|
|
20
|
-
try {
|
|
21
|
-
resolve(process({ res, result: reader.result }));
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
reject(error);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
reader.readAsDataURL(blob);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
const cache = {};
|
|
31
|
-
function getCacheKey(url, contentType, includeQueryParams) {
|
|
32
|
-
let key = url.replace(/\?.*/, '');
|
|
33
|
-
if (includeQueryParams) {
|
|
34
|
-
key = url;
|
|
35
|
-
}
|
|
36
|
-
// font resource
|
|
37
|
-
if (/ttf|otf|eot|woff2?/i.test(key)) {
|
|
38
|
-
key = key.replace(/.*\//, '');
|
|
39
|
-
}
|
|
40
|
-
return contentType ? `[${contentType}]${key}` : key;
|
|
41
|
-
}
|
|
42
|
-
async function resourceToDataURL(resourceUrl, contentType, options) {
|
|
43
|
-
const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);
|
|
44
|
-
if (cache[cacheKey] != null) {
|
|
45
|
-
return cache[cacheKey];
|
|
46
|
-
}
|
|
47
|
-
// ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache
|
|
48
|
-
if (options.cacheBust) {
|
|
49
|
-
// eslint-disable-next-line no-param-reassign
|
|
50
|
-
resourceUrl += (/\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime();
|
|
51
|
-
}
|
|
52
|
-
let dataURL;
|
|
53
|
-
try {
|
|
54
|
-
const content = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {
|
|
55
|
-
if (!contentType) {
|
|
56
|
-
// eslint-disable-next-line no-param-reassign
|
|
57
|
-
contentType = res.headers.get('Content-Type') || '';
|
|
58
|
-
}
|
|
59
|
-
return getContentFromDataUrl(result);
|
|
60
|
-
});
|
|
61
|
-
dataURL = makeDataUrl(content, contentType);
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
dataURL = options.imagePlaceholder || '';
|
|
65
|
-
let msg = `Failed to fetch resource: ${resourceUrl}`;
|
|
66
|
-
if (error) {
|
|
67
|
-
msg = typeof error === 'string' ? error : error.message;
|
|
68
|
-
}
|
|
69
|
-
if (msg) {
|
|
70
|
-
console.warn(msg);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
cache[cacheKey] = dataURL;
|
|
74
|
-
return dataURL;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export { fetchAsDataURL, isDataUrl, makeDataUrl, resourceToDataURL };
|
|
78
|
-
//# sourceMappingURL=dataurl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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":"AAAA,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AACM,SAAS,SAAS,CAAC,GAAG,EAAE;AAC/B,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AACM,SAAS,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC/C,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AACM,eAAe,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AACzD,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AAClC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AACxC,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;AAChC,QAAQ,MAAM,CAAC,SAAS,GAAG,MAAM;AACjC,YAAY,IAAI;AAChB,gBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjE,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,CAAC;AACD,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,SAAS,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE;AAC3D,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,IAAI,IAAI,kBAAkB,EAAE;AAC5B,QAAQ,GAAG,GAAG,GAAG,CAAC;AAClB,KAAK;AACL;AACA,IAAI,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACzC,QAAQ,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,OAAO,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACxD,CAAC;AACM,eAAe,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE;AAC3E,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACvF,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;AACjC,QAAQ,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE;AAC3B;AACA,QAAQ,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACnF,KAAK;AACL,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI;AACR,QAAQ,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK;AACzG,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B;AACA,gBAAgB,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AACpE,aAAa;AACb,YAAY,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACjD,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,OAAO,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;AACjD,QAAQ,IAAI,GAAG,GAAG,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7D,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAS;AACT,KAAK;AACL,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;AAC9B,IAAI,OAAO,OAAO,CAAC;AACnB;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { embedResources } from './embed-resources.js';
|
|
2
|
-
import { isInstanceOfElement, toArray } from './util.js';
|
|
3
|
-
import { isDataUrl, resourceToDataURL } from './dataurl.js';
|
|
4
|
-
import { getMimeType } from './mimes.js';
|
|
5
|
-
|
|
6
|
-
async function embedProp(propName, node, options) {
|
|
7
|
-
var _a;
|
|
8
|
-
const propValue = (_a = node.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue(propName);
|
|
9
|
-
if (propValue) {
|
|
10
|
-
const cssString = await embedResources(propValue, null, options);
|
|
11
|
-
node.style.setProperty(propName, cssString, node.style.getPropertyPriority(propName));
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
async function embedBackground(clonedNode, options) {
|
|
17
|
-
if (!(await embedProp('background', clonedNode, options))) {
|
|
18
|
-
await embedProp('background-image', clonedNode, options);
|
|
19
|
-
}
|
|
20
|
-
if (!(await embedProp('mask', clonedNode, options))) {
|
|
21
|
-
await embedProp('mask-image', clonedNode, options);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
async function embedImageNode(clonedNode, options) {
|
|
25
|
-
const isImageElement = isInstanceOfElement(clonedNode, HTMLImageElement);
|
|
26
|
-
if (!(isImageElement && !isDataUrl(clonedNode.src)) &&
|
|
27
|
-
!(isInstanceOfElement(clonedNode, SVGImageElement) &&
|
|
28
|
-
!isDataUrl(clonedNode.href.baseVal))) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal;
|
|
32
|
-
const dataURL = await resourceToDataURL(url, getMimeType(url), options);
|
|
33
|
-
await new Promise((resolve, reject) => {
|
|
34
|
-
clonedNode.onload = resolve;
|
|
35
|
-
clonedNode.onerror = reject;
|
|
36
|
-
const image = clonedNode;
|
|
37
|
-
if (image.decode) {
|
|
38
|
-
image.decode = resolve;
|
|
39
|
-
}
|
|
40
|
-
if (image.loading === 'lazy') {
|
|
41
|
-
image.loading = 'eager';
|
|
42
|
-
}
|
|
43
|
-
if (isImageElement) {
|
|
44
|
-
clonedNode.srcset = '';
|
|
45
|
-
clonedNode.src = dataURL;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
clonedNode.href.baseVal = dataURL;
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
async function embedChildren(clonedNode, options) {
|
|
53
|
-
const children = toArray(clonedNode.childNodes);
|
|
54
|
-
const deferreds = children.map((child) => embedImages(child, options));
|
|
55
|
-
await Promise.all(deferreds).then(() => clonedNode);
|
|
56
|
-
}
|
|
57
|
-
async function embedImages(clonedNode, options) {
|
|
58
|
-
if (isInstanceOfElement(clonedNode, Element)) {
|
|
59
|
-
await embedBackground(clonedNode, options);
|
|
60
|
-
await embedImageNode(clonedNode, options);
|
|
61
|
-
await embedChildren(clonedNode, options);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export { embedImages };
|
|
66
|
-
//# sourceMappingURL=embed-images.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { resolveUrl } from './util.js';
|
|
2
|
-
import { getMimeType } from './mimes.js';
|
|
3
|
-
import { isDataUrl, makeDataUrl, resourceToDataURL } from './dataurl.js';
|
|
4
|
-
|
|
5
|
-
const URL_REGEX = /url\((['"]?)([^'"]+?)\1\)/g;
|
|
6
|
-
const URL_WITH_FORMAT_REGEX = /url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g;
|
|
7
|
-
const FONT_SRC_REGEX = /src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;
|
|
8
|
-
function toRegex(url) {
|
|
9
|
-
// eslint-disable-next-line no-useless-escape
|
|
10
|
-
const escaped = url.replace(/([.*+?^${}()|\[\]\/\\])/g, '\\$1');
|
|
11
|
-
return new RegExp(`(url\\(['"]?)(${escaped})(['"]?\\))`, 'g');
|
|
12
|
-
}
|
|
13
|
-
function parseURLs(cssText) {
|
|
14
|
-
const urls = [];
|
|
15
|
-
cssText.replace(URL_REGEX, (raw, quotation, url) => {
|
|
16
|
-
urls.push(url);
|
|
17
|
-
return raw;
|
|
18
|
-
});
|
|
19
|
-
return urls.filter((url) => !isDataUrl(url));
|
|
20
|
-
}
|
|
21
|
-
async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {
|
|
22
|
-
try {
|
|
23
|
-
const resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL;
|
|
24
|
-
const contentType = getMimeType(resourceURL);
|
|
25
|
-
let dataURL;
|
|
26
|
-
if (getContentFromUrl) {
|
|
27
|
-
const content = await getContentFromUrl(resolvedURL);
|
|
28
|
-
dataURL = makeDataUrl(content, contentType);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
dataURL = await resourceToDataURL(resolvedURL, contentType, options);
|
|
32
|
-
}
|
|
33
|
-
return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
// pass
|
|
37
|
-
}
|
|
38
|
-
return cssText;
|
|
39
|
-
}
|
|
40
|
-
function filterPreferredFontFormat(str, { preferredFontFormat }) {
|
|
41
|
-
return !preferredFontFormat
|
|
42
|
-
? str
|
|
43
|
-
: str.replace(FONT_SRC_REGEX, (match) => {
|
|
44
|
-
// eslint-disable-next-line no-constant-condition
|
|
45
|
-
while (true) {
|
|
46
|
-
const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];
|
|
47
|
-
if (!format) {
|
|
48
|
-
return '';
|
|
49
|
-
}
|
|
50
|
-
if (format === preferredFontFormat) {
|
|
51
|
-
return `src: ${src};`;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
function shouldEmbed(url) {
|
|
57
|
-
return url.search(URL_REGEX) !== -1;
|
|
58
|
-
}
|
|
59
|
-
async function embedResources(cssText, baseUrl, options) {
|
|
60
|
-
if (!shouldEmbed(cssText)) {
|
|
61
|
-
return cssText;
|
|
62
|
-
}
|
|
63
|
-
const filteredCSSText = filterPreferredFontFormat(cssText, options);
|
|
64
|
-
const urls = parseURLs(filteredCSSText);
|
|
65
|
-
return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export { embed, embedResources, parseURLs, shouldEmbed };
|
|
69
|
-
//# sourceMappingURL=embed-resources.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { toArray } from './util.js';
|
|
2
|
-
import { fetchAsDataURL } from './dataurl.js';
|
|
3
|
-
import { embedResources, shouldEmbed } from './embed-resources.js';
|
|
4
|
-
|
|
5
|
-
const cssFetchCache = {};
|
|
6
|
-
async function fetchCSS(url) {
|
|
7
|
-
let cache = cssFetchCache[url];
|
|
8
|
-
if (cache != null) {
|
|
9
|
-
return cache;
|
|
10
|
-
}
|
|
11
|
-
const res = await fetch(url);
|
|
12
|
-
const cssText = await res.text();
|
|
13
|
-
cache = { url, cssText };
|
|
14
|
-
cssFetchCache[url] = cache;
|
|
15
|
-
return cache;
|
|
16
|
-
}
|
|
17
|
-
async function embedFonts(data, options) {
|
|
18
|
-
let cssText = data.cssText;
|
|
19
|
-
const regexUrl = /url\(["']?([^"')]+)["']?\)/g;
|
|
20
|
-
const fontLocs = cssText.match(/url\([^)]+\)/g) || [];
|
|
21
|
-
const loadFonts = fontLocs.map(async (loc) => {
|
|
22
|
-
let url = loc.replace(regexUrl, '$1');
|
|
23
|
-
if (!url.startsWith('https://')) {
|
|
24
|
-
url = new URL(url, data.url).href;
|
|
25
|
-
}
|
|
26
|
-
return fetchAsDataURL(url, options.fetchRequestInit, ({ result }) => {
|
|
27
|
-
cssText = cssText.replace(loc, `url(${result})`);
|
|
28
|
-
return [loc, result];
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
return Promise.all(loadFonts).then(() => cssText);
|
|
32
|
-
}
|
|
33
|
-
function parseCSS(source) {
|
|
34
|
-
if (source == null) {
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
const result = [];
|
|
38
|
-
const commentsRegex = /(\/\*[\s\S]*?\*\/)/gi;
|
|
39
|
-
// strip out comments
|
|
40
|
-
let cssText = source.replace(commentsRegex, '');
|
|
41
|
-
// eslint-disable-next-line prefer-regex-literals
|
|
42
|
-
const keyframesRegex = new RegExp('((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})', 'gi');
|
|
43
|
-
// eslint-disable-next-line no-constant-condition
|
|
44
|
-
while (true) {
|
|
45
|
-
const matches = keyframesRegex.exec(cssText);
|
|
46
|
-
if (matches === null) {
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
result.push(matches[0]);
|
|
50
|
-
}
|
|
51
|
-
cssText = cssText.replace(keyframesRegex, '');
|
|
52
|
-
const importRegex = /@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi;
|
|
53
|
-
// to match css & media queries together
|
|
54
|
-
const combinedCSSRegex = '((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]' +
|
|
55
|
-
'*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})';
|
|
56
|
-
// unified regex
|
|
57
|
-
const unifiedRegex = new RegExp(combinedCSSRegex, 'gi');
|
|
58
|
-
// eslint-disable-next-line no-constant-condition
|
|
59
|
-
while (true) {
|
|
60
|
-
let matches = importRegex.exec(cssText);
|
|
61
|
-
if (matches === null) {
|
|
62
|
-
matches = unifiedRegex.exec(cssText);
|
|
63
|
-
if (matches === null) {
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
importRegex.lastIndex = unifiedRegex.lastIndex;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
unifiedRegex.lastIndex = importRegex.lastIndex;
|
|
72
|
-
}
|
|
73
|
-
result.push(matches[0]);
|
|
74
|
-
}
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
async function getCSSRules(styleSheets, options) {
|
|
78
|
-
const ret = [];
|
|
79
|
-
const deferreds = [];
|
|
80
|
-
// First loop inlines imports
|
|
81
|
-
styleSheets.forEach((sheet) => {
|
|
82
|
-
if ('cssRules' in sheet) {
|
|
83
|
-
try {
|
|
84
|
-
toArray(sheet.cssRules || []).forEach((item, index) => {
|
|
85
|
-
if (item.type === CSSRule.IMPORT_RULE) {
|
|
86
|
-
let importIndex = index + 1;
|
|
87
|
-
const url = item.href;
|
|
88
|
-
const deferred = fetchCSS(url)
|
|
89
|
-
.then((metadata) => embedFonts(metadata, options))
|
|
90
|
-
.then((cssText) => parseCSS(cssText).forEach((rule) => {
|
|
91
|
-
try {
|
|
92
|
-
sheet.insertRule(rule, rule.startsWith('@import')
|
|
93
|
-
? (importIndex += 1)
|
|
94
|
-
: sheet.cssRules.length);
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
console.error('Error inserting rule from remote css', {
|
|
98
|
-
rule,
|
|
99
|
-
error,
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}))
|
|
103
|
-
.catch((e) => {
|
|
104
|
-
console.error('Error loading remote css', e.toString());
|
|
105
|
-
});
|
|
106
|
-
deferreds.push(deferred);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
catch (e) {
|
|
111
|
-
const inline = styleSheets.find((a) => a.href == null) || document.styleSheets[0];
|
|
112
|
-
if (sheet.href != null) {
|
|
113
|
-
deferreds.push(fetchCSS(sheet.href)
|
|
114
|
-
.then((metadata) => embedFonts(metadata, options))
|
|
115
|
-
.then((cssText) => parseCSS(cssText).forEach((rule) => {
|
|
116
|
-
inline.insertRule(rule, sheet.cssRules.length);
|
|
117
|
-
}))
|
|
118
|
-
.catch((err) => {
|
|
119
|
-
console.error('Error loading remote stylesheet', err);
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
console.error('Error inlining remote css file', e);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
return Promise.all(deferreds).then(() => {
|
|
127
|
-
// Second loop parses rules
|
|
128
|
-
styleSheets.forEach((sheet) => {
|
|
129
|
-
if ('cssRules' in sheet) {
|
|
130
|
-
try {
|
|
131
|
-
toArray(sheet.cssRules || []).forEach((item) => {
|
|
132
|
-
ret.push(item);
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
catch (e) {
|
|
136
|
-
console.error(`Error while reading CSS rules from ${sheet.href}`, e);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
return ret;
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
function getWebFontRules(cssRules) {
|
|
144
|
-
return cssRules
|
|
145
|
-
.filter((rule) => rule.type === CSSRule.FONT_FACE_RULE)
|
|
146
|
-
.filter((rule) => shouldEmbed(rule.style.getPropertyValue('src')));
|
|
147
|
-
}
|
|
148
|
-
async function parseWebFontRules(node, options) {
|
|
149
|
-
if (node.ownerDocument == null) {
|
|
150
|
-
throw new Error('Provided element is not within a Document');
|
|
151
|
-
}
|
|
152
|
-
const styleSheets = toArray(node.ownerDocument.styleSheets);
|
|
153
|
-
const cssRules = await getCSSRules(styleSheets, options);
|
|
154
|
-
return getWebFontRules(cssRules);
|
|
155
|
-
}
|
|
156
|
-
async function getWebFontCSS(node, options) {
|
|
157
|
-
const rules = await parseWebFontRules(node, options);
|
|
158
|
-
const cssTexts = await Promise.all(rules.map((rule) => {
|
|
159
|
-
const baseUrl = rule.parentStyleSheet ? rule.parentStyleSheet.href : null;
|
|
160
|
-
return embedResources(rule.cssText, baseUrl, options);
|
|
161
|
-
}));
|
|
162
|
-
return cssTexts.join('\n');
|
|
163
|
-
}
|
|
164
|
-
async function embedWebFonts(clonedNode, options) {
|
|
165
|
-
const cssText = options.fontEmbedCSS != null
|
|
166
|
-
? options.fontEmbedCSS
|
|
167
|
-
: options.skipFonts
|
|
168
|
-
? null
|
|
169
|
-
: await getWebFontCSS(clonedNode, options);
|
|
170
|
-
if (cssText) {
|
|
171
|
-
const styleNode = document.createElement('style');
|
|
172
|
-
const sytleContent = document.createTextNode(cssText);
|
|
173
|
-
styleNode.appendChild(sytleContent);
|
|
174
|
-
if (clonedNode.firstChild) {
|
|
175
|
-
clonedNode.insertBefore(styleNode, clonedNode.firstChild);
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
clonedNode.appendChild(styleNode);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
export { embedWebFonts, getWebFontCSS };
|
|
184
|
-
//# sourceMappingURL=embed-webfonts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embed-webfonts.js","sources":["../../../../../../node_modules/html-to-image/es/embed-webfonts.js"],"sourcesContent":["import { toArray } from './util';\nimport { fetchAsDataURL } from './dataurl';\nimport { shouldEmbed, embedResources } from './embed-resources';\nconst cssFetchCache = {};\nasync function fetchCSS(url) {\n let cache = cssFetchCache[url];\n if (cache != null) {\n return cache;\n }\n const res = await fetch(url);\n const cssText = await res.text();\n cache = { url, cssText };\n cssFetchCache[url] = cache;\n return cache;\n}\nasync function embedFonts(data, options) {\n let cssText = data.cssText;\n const regexUrl = /url\\([\"']?([^\"')]+)[\"']?\\)/g;\n const fontLocs = cssText.match(/url\\([^)]+\\)/g) || [];\n const loadFonts = fontLocs.map(async (loc) => {\n let url = loc.replace(regexUrl, '$1');\n if (!url.startsWith('https://')) {\n url = new URL(url, data.url).href;\n }\n return fetchAsDataURL(url, options.fetchRequestInit, ({ result }) => {\n cssText = cssText.replace(loc, `url(${result})`);\n return [loc, result];\n });\n });\n return Promise.all(loadFonts).then(() => cssText);\n}\nfunction parseCSS(source) {\n if (source == null) {\n return [];\n }\n const result = [];\n const commentsRegex = /(\\/\\*[\\s\\S]*?\\*\\/)/gi;\n // strip out comments\n let cssText = source.replace(commentsRegex, '');\n // eslint-disable-next-line prefer-regex-literals\n const keyframesRegex = new RegExp('((@.*?keyframes [\\\\s\\\\S]*?){([\\\\s\\\\S]*?}\\\\s*?)})', 'gi');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const matches = keyframesRegex.exec(cssText);\n if (matches === null) {\n break;\n }\n result.push(matches[0]);\n }\n cssText = cssText.replace(keyframesRegex, '');\n const importRegex = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi;\n // to match css & media queries together\n const combinedCSSRegex = '((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]' +\n '*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})';\n // unified regex\n const unifiedRegex = new RegExp(combinedCSSRegex, 'gi');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let matches = importRegex.exec(cssText);\n if (matches === null) {\n matches = unifiedRegex.exec(cssText);\n if (matches === null) {\n break;\n }\n else {\n importRegex.lastIndex = unifiedRegex.lastIndex;\n }\n }\n else {\n unifiedRegex.lastIndex = importRegex.lastIndex;\n }\n result.push(matches[0]);\n }\n return result;\n}\nasync function getCSSRules(styleSheets, options) {\n const ret = [];\n const deferreds = [];\n // First loop inlines imports\n styleSheets.forEach((sheet) => {\n if ('cssRules' in sheet) {\n try {\n toArray(sheet.cssRules || []).forEach((item, index) => {\n if (item.type === CSSRule.IMPORT_RULE) {\n let importIndex = index + 1;\n const url = item.href;\n const deferred = fetchCSS(url)\n .then((metadata) => embedFonts(metadata, options))\n .then((cssText) => parseCSS(cssText).forEach((rule) => {\n try {\n sheet.insertRule(rule, rule.startsWith('@import')\n ? (importIndex += 1)\n : sheet.cssRules.length);\n }\n catch (error) {\n console.error('Error inserting rule from remote css', {\n rule,\n error,\n });\n }\n }))\n .catch((e) => {\n console.error('Error loading remote css', e.toString());\n });\n deferreds.push(deferred);\n }\n });\n }\n catch (e) {\n const inline = styleSheets.find((a) => a.href == null) || document.styleSheets[0];\n if (sheet.href != null) {\n deferreds.push(fetchCSS(sheet.href)\n .then((metadata) => embedFonts(metadata, options))\n .then((cssText) => parseCSS(cssText).forEach((rule) => {\n inline.insertRule(rule, sheet.cssRules.length);\n }))\n .catch((err) => {\n console.error('Error loading remote stylesheet', err);\n }));\n }\n console.error('Error inlining remote css file', e);\n }\n }\n });\n return Promise.all(deferreds).then(() => {\n // Second loop parses rules\n styleSheets.forEach((sheet) => {\n if ('cssRules' in sheet) {\n try {\n toArray(sheet.cssRules || []).forEach((item) => {\n ret.push(item);\n });\n }\n catch (e) {\n console.error(`Error while reading CSS rules from ${sheet.href}`, e);\n }\n }\n });\n return ret;\n });\n}\nfunction getWebFontRules(cssRules) {\n return cssRules\n .filter((rule) => rule.type === CSSRule.FONT_FACE_RULE)\n .filter((rule) => shouldEmbed(rule.style.getPropertyValue('src')));\n}\nasync function parseWebFontRules(node, options) {\n if (node.ownerDocument == null) {\n throw new Error('Provided element is not within a Document');\n }\n const styleSheets = toArray(node.ownerDocument.styleSheets);\n const cssRules = await getCSSRules(styleSheets, options);\n return getWebFontRules(cssRules);\n}\nexport async function getWebFontCSS(node, options) {\n const rules = await parseWebFontRules(node, options);\n const cssTexts = await Promise.all(rules.map((rule) => {\n const baseUrl = rule.parentStyleSheet ? rule.parentStyleSheet.href : null;\n return embedResources(rule.cssText, baseUrl, options);\n }));\n return cssTexts.join('\\n');\n}\nexport async function embedWebFonts(clonedNode, options) {\n const cssText = options.fontEmbedCSS != null\n ? options.fontEmbedCSS\n : options.skipFonts\n ? null\n : await getWebFontCSS(clonedNode, options);\n if (cssText) {\n const styleNode = document.createElement('style');\n const sytleContent = document.createTextNode(cssText);\n styleNode.appendChild(sytleContent);\n if (clonedNode.firstChild) {\n clonedNode.insertBefore(styleNode, clonedNode.firstChild);\n }\n else {\n clonedNode.appendChild(styleNode);\n }\n }\n}\n//# sourceMappingURL=embed-webfonts.js.map"],"names":[],"mappings":";;;;AAGA,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,eAAe,QAAQ,CAAC,GAAG,EAAE;AAC7B,IAAI,IAAI,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACrC,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC7B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC/B,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,eAAe,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE;AACzC,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/B,IAAI,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AACnD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC1D,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK;AAClD,QAAQ,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACzC,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC9C,SAAS;AACT,QAAQ,OAAO,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AAC7E,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,YAAY,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACjC,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;AACtD,CAAC;AACD,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACxB,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,aAAa,GAAG,sBAAsB,CAAC;AACjD;AACA,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACpD;AACA,IAAI,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,kDAAkD,EAAE,IAAI,CAAC,CAAC;AAChG;AACA,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AAC9B,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAClD,IAAI,MAAM,WAAW,GAAG,wCAAwC,CAAC;AACjE;AACA,IAAI,MAAM,gBAAgB,GAAG,uDAAuD;AACpF,QAAQ,uDAAuD,CAAC;AAChE;AACA,IAAI,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC5D;AACA,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChD,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AAC9B,YAAY,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjD,YAAY,IAAI,OAAO,KAAK,IAAI,EAAE;AAClC,gBAAgB,MAAM;AACtB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,WAAW,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAC/D,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,YAAY,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;AAC3D,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,eAAe,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE;AACjD,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB;AACA,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACnC,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE;AACjC,YAAY,IAAI;AAChB,gBAAgB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACvE,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,EAAE;AAC3D,wBAAwB,IAAI,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;AACpD,wBAAwB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9C,wBAAwB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;AACtD,6BAA6B,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9E,6BAA6B,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACnF,4BAA4B,IAAI;AAChC,gCAAgC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AACjF,uCAAuC,WAAW,IAAI,CAAC;AACvD,sCAAsC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7D,6BAA6B;AAC7B,4BAA4B,OAAO,KAAK,EAAE;AAC1C,gCAAgC,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE;AACtF,oCAAoC,IAAI;AACxC,oCAAoC,KAAK;AACzC,iCAAiC,CAAC,CAAC;AACnC,6BAA6B;AAC7B,yBAAyB,CAAC,CAAC;AAC3B,6BAA6B,KAAK,CAAC,CAAC,CAAC,KAAK;AAC1C,4BAA4B,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpF,yBAAyB,CAAC,CAAC;AAC3B,wBAAwB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjD,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClG,gBAAgB,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;AACxC,oBAAoB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACvD,yBAAyB,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1E,yBAAyB,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/E,wBAAwB,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvE,qBAAqB,CAAC,CAAC;AACvB,yBAAyB,KAAK,CAAC,CAAC,GAAG,KAAK;AACxC,wBAAwB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;AAC9E,qBAAqB,CAAC,CAAC,CAAC;AACxB,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM;AAC7C;AACA,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACvC,YAAY,IAAI,UAAU,IAAI,KAAK,EAAE;AACrC,gBAAgB,IAAI;AACpB,oBAAoB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACpE,wBAAwB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE;AAC1B,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,mCAAmC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,CAAC,CAAC;AACP,CAAC;AACD,SAAS,eAAe,CAAC,QAAQ,EAAE;AACnC,IAAI,OAAO,QAAQ;AACnB,SAAS,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,cAAc,CAAC;AAC/D,SAAS,MAAM,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AACD,eAAe,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;AAChD,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAChE,IAAI,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC7D,IAAI,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AACM,eAAe,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE;AACnD,IAAI,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACzD,IAAI,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC3D,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC;AAClF,QAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9D,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AACM,eAAe,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE;AACzD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI;AAChD,UAAU,OAAO,CAAC,YAAY;AAC9B,UAAU,OAAO,CAAC,SAAS;AAC3B,cAAc,IAAI;AAClB,cAAc,MAAM,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACvD,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAQ,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAC5C,QAAQ,IAAI,UAAU,CAAC,UAAU,EAAE;AACnC,YAAY,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;AACtE,SAAS;AACT,aAAa;AACb,YAAY,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAS;AACT,KAAK;AACL;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { cloneNode } from './clone-node.js';
|
|
2
|
-
import { embedImages } from './embed-images.js';
|
|
3
|
-
import { applyStyle } from './apply-style.js';
|
|
4
|
-
import { embedWebFonts } from './embed-webfonts.js';
|
|
5
|
-
import { getImageSize, createImage, getPixelRatio, checkCanvasDimensions, nodeToDataURL } from './util.js';
|
|
6
|
-
|
|
7
|
-
async function toSvg(node, options = {}) {
|
|
8
|
-
const { width, height } = getImageSize(node, options);
|
|
9
|
-
const clonedNode = (await cloneNode(node, options, true));
|
|
10
|
-
await embedWebFonts(clonedNode, options);
|
|
11
|
-
await embedImages(clonedNode, options);
|
|
12
|
-
applyStyle(clonedNode, options);
|
|
13
|
-
const datauri = await nodeToDataURL(clonedNode, width, height);
|
|
14
|
-
return datauri;
|
|
15
|
-
}
|
|
16
|
-
async function toCanvas(node, options = {}) {
|
|
17
|
-
const { width, height } = getImageSize(node, options);
|
|
18
|
-
const svg = await toSvg(node, options);
|
|
19
|
-
const img = await createImage(svg);
|
|
20
|
-
const canvas = document.createElement('canvas');
|
|
21
|
-
const context = canvas.getContext('2d');
|
|
22
|
-
const ratio = options.pixelRatio || getPixelRatio();
|
|
23
|
-
const canvasWidth = options.canvasWidth || width;
|
|
24
|
-
const canvasHeight = options.canvasHeight || height;
|
|
25
|
-
canvas.width = canvasWidth * ratio;
|
|
26
|
-
canvas.height = canvasHeight * ratio;
|
|
27
|
-
if (!options.skipAutoScale) {
|
|
28
|
-
checkCanvasDimensions(canvas);
|
|
29
|
-
}
|
|
30
|
-
canvas.style.width = `${canvasWidth}`;
|
|
31
|
-
canvas.style.height = `${canvasHeight}`;
|
|
32
|
-
if (options.backgroundColor) {
|
|
33
|
-
context.fillStyle = options.backgroundColor;
|
|
34
|
-
context.fillRect(0, 0, canvas.width, canvas.height);
|
|
35
|
-
}
|
|
36
|
-
context.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
37
|
-
return canvas;
|
|
38
|
-
}
|
|
39
|
-
async function toPng(node, options = {}) {
|
|
40
|
-
const canvas = await toCanvas(node, options);
|
|
41
|
-
return canvas.toDataURL();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export { toCanvas, toPng, toSvg };
|
|
45
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../node_modules/html-to-image/es/index.js"],"sourcesContent":["import { cloneNode } from './clone-node';\nimport { embedImages } from './embed-images';\nimport { applyStyle } from './apply-style';\nimport { embedWebFonts, getWebFontCSS } from './embed-webfonts';\nimport { getImageSize, getPixelRatio, createImage, canvasToBlob, nodeToDataURL, checkCanvasDimensions, } from './util';\nexport async function toSvg(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const clonedNode = (await cloneNode(node, options, true));\n await embedWebFonts(clonedNode, options);\n await embedImages(clonedNode, options);\n applyStyle(clonedNode, options);\n const datauri = await nodeToDataURL(clonedNode, width, height);\n return datauri;\n}\nexport async function toCanvas(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const svg = await toSvg(node, options);\n const img = await createImage(svg);\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n const ratio = options.pixelRatio || getPixelRatio();\n const canvasWidth = options.canvasWidth || width;\n const canvasHeight = options.canvasHeight || height;\n canvas.width = canvasWidth * ratio;\n canvas.height = canvasHeight * ratio;\n if (!options.skipAutoScale) {\n checkCanvasDimensions(canvas);\n }\n canvas.style.width = `${canvasWidth}`;\n canvas.style.height = `${canvasHeight}`;\n if (options.backgroundColor) {\n context.fillStyle = options.backgroundColor;\n context.fillRect(0, 0, canvas.width, canvas.height);\n }\n context.drawImage(img, 0, 0, canvas.width, canvas.height);\n return canvas;\n}\nexport async function toPixelData(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const canvas = await toCanvas(node, options);\n const ctx = canvas.getContext('2d');\n return ctx.getImageData(0, 0, width, height).data;\n}\nexport async function toPng(node, options = {}) {\n const canvas = await toCanvas(node, options);\n return canvas.toDataURL();\n}\nexport async function toJpeg(node, options = {}) {\n const canvas = await toCanvas(node, options);\n return canvas.toDataURL('image/jpeg', options.quality || 1);\n}\nexport async function toBlob(node, options = {}) {\n const canvas = await toCanvas(node, options);\n const blob = await canvasToBlob(canvas);\n return blob;\n}\nexport async function getFontEmbedCSS(node, options = {}) {\n return getWebFontCSS(node, options);\n}\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":";;;;;;AAKO,eAAe,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;AAChD,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1D,IAAI,MAAM,UAAU,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9D,IAAI,MAAM,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7C,IAAI,MAAM,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC3C,IAAI,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACnE,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC;AACM,eAAe,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;AACnD,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1D,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,IAAI,aAAa,EAAE,CAAC;AACxD,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;AACrD,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;AACxD,IAAI,MAAM,CAAC,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC;AACvC,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC;AACzC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAChC,QAAQ,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE;AACjC,QAAQ,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC;AACpD,QAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9D,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AAOM,eAAe,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;AAChD,IAAI,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD,IAAI,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;AAC9B;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const WOFF = 'application/font-woff';
|
|
2
|
-
const JPEG = 'image/jpeg';
|
|
3
|
-
const mimes = {
|
|
4
|
-
woff: WOFF,
|
|
5
|
-
woff2: WOFF,
|
|
6
|
-
ttf: 'application/font-truetype',
|
|
7
|
-
eot: 'application/vnd.ms-fontobject',
|
|
8
|
-
png: 'image/png',
|
|
9
|
-
jpg: JPEG,
|
|
10
|
-
jpeg: JPEG,
|
|
11
|
-
gif: 'image/gif',
|
|
12
|
-
tiff: 'image/tiff',
|
|
13
|
-
svg: 'image/svg+xml',
|
|
14
|
-
webp: 'image/webp',
|
|
15
|
-
};
|
|
16
|
-
function getExtension(url) {
|
|
17
|
-
const match = /\.([^./]*?)$/g.exec(url);
|
|
18
|
-
return match ? match[1] : '';
|
|
19
|
-
}
|
|
20
|
-
function getMimeType(url) {
|
|
21
|
-
const extension = getExtension(url).toLowerCase();
|
|
22
|
-
return mimes[extension] || '';
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export { getMimeType };
|
|
26
|
-
//# sourceMappingURL=mimes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mimes.js","sources":["../../../../../../node_modules/html-to-image/es/mimes.js"],"sourcesContent":["const WOFF = 'application/font-woff';\nconst JPEG = 'image/jpeg';\nconst mimes = {\n woff: WOFF,\n woff2: WOFF,\n ttf: 'application/font-truetype',\n eot: 'application/vnd.ms-fontobject',\n png: 'image/png',\n jpg: JPEG,\n jpeg: JPEG,\n gif: 'image/gif',\n tiff: 'image/tiff',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n};\nfunction getExtension(url) {\n const match = /\\.([^./]*?)$/g.exec(url);\n return match ? match[1] : '';\n}\nexport function getMimeType(url) {\n const extension = getExtension(url).toLowerCase();\n return mimes[extension] || '';\n}\n//# sourceMappingURL=mimes.js.map"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,uBAAuB,CAAC;AACrC,MAAM,IAAI,GAAG,YAAY,CAAC;AAC1B,MAAM,KAAK,GAAG;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,GAAG,EAAE,2BAA2B;AACpC,IAAI,GAAG,EAAE,+BAA+B;AACxC,IAAI,GAAG,EAAE,WAAW;AACpB,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,GAAG,EAAE,WAAW;AACpB,IAAI,IAAI,EAAE,YAAY;AACtB,IAAI,GAAG,EAAE,eAAe;AACxB,IAAI,IAAI,EAAE,YAAY;AACtB,CAAC,CAAC;AACF,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAI,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACjC,CAAC;AACM,SAAS,WAAW,CAAC,GAAG,EAAE;AACjC,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACtD,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAClC;;;;","x_google_ignoreList":[0]}
|