html2canvas-pro 1.6.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +1 -0
  2. package/demo/image-smoothing-demo.html +256 -0
  3. package/demo/refactoring-test.html +602 -0
  4. package/dist/html2canvas-pro.esm.js +2846 -1238
  5. package/dist/html2canvas-pro.esm.js.map +1 -1
  6. package/dist/html2canvas-pro.js +2849 -1237
  7. package/dist/html2canvas-pro.js.map +1 -1
  8. package/dist/html2canvas-pro.min.js +5 -4
  9. package/dist/lib/__tests__/index.js +8 -2
  10. package/dist/lib/__tests__/index.js.map +1 -1
  11. package/dist/lib/config.js +72 -0
  12. package/dist/lib/config.js.map +1 -0
  13. package/dist/lib/core/__tests__/cache-storage.js +6 -3
  14. package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
  15. package/dist/lib/core/__tests__/cache-storage.test.js +158 -0
  16. package/dist/lib/core/__tests__/cache-storage.test.js.map +1 -0
  17. package/dist/lib/core/__tests__/validator.js +296 -0
  18. package/dist/lib/core/__tests__/validator.js.map +1 -0
  19. package/dist/lib/core/cache-storage.js +130 -11
  20. package/dist/lib/core/cache-storage.js.map +1 -1
  21. package/dist/lib/core/context.js +5 -2
  22. package/dist/lib/core/context.js.map +1 -1
  23. package/dist/lib/core/debugger.js +3 -0
  24. package/dist/lib/core/debugger.js.map +1 -1
  25. package/dist/lib/core/origin-checker.js +54 -0
  26. package/dist/lib/core/origin-checker.js.map +1 -0
  27. package/dist/lib/core/performance-monitor.js +208 -0
  28. package/dist/lib/core/performance-monitor.js.map +1 -0
  29. package/dist/lib/core/validator.js +501 -0
  30. package/dist/lib/core/validator.js.map +1 -0
  31. package/dist/lib/css/index.js +2 -0
  32. package/dist/lib/css/index.js.map +1 -1
  33. package/dist/lib/css/property-descriptors/__tests__/background-tests.js +7 -1
  34. package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -1
  35. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js +142 -0
  36. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js.map +1 -0
  37. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js +167 -0
  38. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js.map +1 -0
  39. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js +61 -0
  40. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js.map +1 -0
  41. package/dist/lib/css/property-descriptors/image-rendering.js +34 -0
  42. package/dist/lib/css/property-descriptors/image-rendering.js.map +1 -0
  43. package/dist/lib/css/types/__tests__/image-tests.js +7 -1
  44. package/dist/lib/css/types/__tests__/image-tests.js.map +1 -1
  45. package/dist/lib/css/types/color-math.js +26 -0
  46. package/dist/lib/css/types/color-math.js.map +1 -0
  47. package/dist/lib/css/types/color-spaces/srgb.js +6 -6
  48. package/dist/lib/css/types/color-spaces/srgb.js.map +1 -1
  49. package/dist/lib/css/types/color-utilities.js +13 -22
  50. package/dist/lib/css/types/color-utilities.js.map +1 -1
  51. package/dist/lib/dom/__tests__/dom-normalizer.test.js +113 -0
  52. package/dist/lib/dom/__tests__/dom-normalizer.test.js.map +1 -0
  53. package/dist/lib/dom/__tests__/element-container.test.js +109 -0
  54. package/dist/lib/dom/__tests__/element-container.test.js.map +1 -0
  55. package/dist/lib/dom/document-cloner.js +152 -11
  56. package/dist/lib/dom/document-cloner.js.map +1 -1
  57. package/dist/lib/dom/dom-normalizer.js +80 -0
  58. package/dist/lib/dom/dom-normalizer.js.map +1 -0
  59. package/dist/lib/dom/element-container.js +32 -15
  60. package/dist/lib/dom/element-container.js.map +1 -1
  61. package/dist/lib/dom/node-parser.js +16 -20
  62. package/dist/lib/dom/node-parser.js.map +1 -1
  63. package/dist/lib/dom/node-type-guards.js +44 -0
  64. package/dist/lib/dom/node-type-guards.js.map +1 -0
  65. package/dist/lib/dom/replaced-elements/iframe-element-container.js +5 -4
  66. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
  67. package/dist/lib/index.js +148 -41
  68. package/dist/lib/index.js.map +1 -1
  69. package/dist/lib/render/canvas/__tests__/background-renderer.test.js +65 -0
  70. package/dist/lib/render/canvas/__tests__/background-renderer.test.js.map +1 -0
  71. package/dist/lib/render/canvas/__tests__/border-renderer.test.js +23 -0
  72. package/dist/lib/render/canvas/__tests__/border-renderer.test.js.map +1 -0
  73. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js +30 -0
  74. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js.map +1 -0
  75. package/dist/lib/render/canvas/__tests__/text-renderer.test.js +63 -0
  76. package/dist/lib/render/canvas/__tests__/text-renderer.test.js.map +1 -0
  77. package/dist/lib/render/canvas/background-renderer.js +222 -0
  78. package/dist/lib/render/canvas/background-renderer.js.map +1 -0
  79. package/dist/lib/render/canvas/border-renderer.js +185 -0
  80. package/dist/lib/render/canvas/border-renderer.js.map +1 -0
  81. package/dist/lib/render/canvas/canvas-renderer.js +61 -689
  82. package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
  83. package/dist/lib/render/canvas/effects-renderer.js +89 -0
  84. package/dist/lib/render/canvas/effects-renderer.js.map +1 -0
  85. package/dist/lib/render/canvas/text-renderer.js +508 -0
  86. package/dist/lib/render/canvas/text-renderer.js.map +1 -0
  87. package/dist/lib/render/renderer-interface.js +3 -0
  88. package/dist/lib/render/renderer-interface.js.map +1 -0
  89. package/dist/types/config.d.ts +54 -0
  90. package/dist/types/core/__tests__/cache-storage.test.d.ts +1 -0
  91. package/dist/types/core/__tests__/validator.d.ts +1 -0
  92. package/dist/types/core/cache-storage.d.ts +42 -1
  93. package/dist/types/core/context.d.ts +5 -1
  94. package/dist/types/core/origin-checker.d.ts +33 -0
  95. package/dist/types/core/performance-monitor.d.ts +131 -0
  96. package/dist/types/core/validator.d.ts +132 -0
  97. package/dist/types/css/index.d.ts +2 -0
  98. package/dist/types/css/property-descriptors/__tests__/image-rendering-integration.test.d.ts +1 -0
  99. package/dist/types/css/property-descriptors/__tests__/image-rendering-performance.test.d.ts +1 -0
  100. package/dist/types/css/property-descriptors/__tests__/image-rendering.test.d.ts +1 -0
  101. package/dist/types/css/property-descriptors/image-rendering.d.ts +8 -0
  102. package/dist/types/css/types/color-math.d.ts +12 -0
  103. package/dist/types/css/types/color-utilities.d.ts +2 -3
  104. package/dist/types/dom/__tests__/dom-normalizer.test.d.ts +1 -0
  105. package/dist/types/dom/__tests__/element-container.test.d.ts +1 -0
  106. package/dist/types/dom/document-cloner.d.ts +46 -0
  107. package/dist/types/dom/dom-normalizer.d.ts +43 -0
  108. package/dist/types/dom/element-container.d.ts +20 -1
  109. package/dist/types/dom/node-parser.d.ts +2 -7
  110. package/dist/types/dom/node-type-guards.d.ts +33 -0
  111. package/dist/types/dom/replaced-elements/iframe-element-container.d.ts +4 -1
  112. package/dist/types/index.d.ts +48 -3
  113. package/dist/types/render/canvas/__tests__/background-renderer.test.d.ts +1 -0
  114. package/dist/types/render/canvas/__tests__/border-renderer.test.d.ts +1 -0
  115. package/dist/types/render/canvas/__tests__/effects-renderer.test.d.ts +1 -0
  116. package/dist/types/render/canvas/__tests__/text-renderer.test.d.ts +1 -0
  117. package/dist/types/render/canvas/background-renderer.d.ts +87 -0
  118. package/dist/types/render/canvas/border-renderer.d.ts +67 -0
  119. package/dist/types/render/canvas/canvas-renderer.d.ts +19 -23
  120. package/dist/types/render/canvas/effects-renderer.d.ts +64 -0
  121. package/dist/types/render/canvas/text-renderer.d.ts +57 -0
  122. package/dist/types/render/renderer-interface.d.ts +26 -0
  123. package/package.json +2 -1
package/dist/lib/index.js CHANGED
@@ -1,32 +1,101 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setCspNonce = exports.html2canvas = void 0;
3
+ exports.IMAGE_RENDERING = exports.PerformanceMonitor = exports.createDefaultValidator = exports.Validator = exports.Html2CanvasConfig = exports.setCspNonce = exports.html2canvas = void 0;
4
4
  const bounds_1 = require("./css/layout/bounds");
5
5
  const color_1 = require("./css/types/color");
6
6
  const color_utilities_1 = require("./css/types/color-utilities");
7
7
  const document_cloner_1 = require("./dom/document-cloner");
8
8
  const node_parser_1 = require("./dom/node-parser");
9
- const cache_storage_1 = require("./core/cache-storage");
10
9
  const canvas_renderer_1 = require("./render/canvas/canvas-renderer");
11
10
  const foreignobject_renderer_1 = require("./render/canvas/foreignobject-renderer");
12
11
  const context_1 = require("./core/context");
13
- let cspNonce;
12
+ const config_1 = require("./config");
13
+ Object.defineProperty(exports, "Html2CanvasConfig", { enumerable: true, get: function () { return config_1.Html2CanvasConfig; } });
14
+ const validator_1 = require("./core/validator");
15
+ Object.defineProperty(exports, "createDefaultValidator", { enumerable: true, get: function () { return validator_1.createDefaultValidator; } });
16
+ Object.defineProperty(exports, "Validator", { enumerable: true, get: function () { return validator_1.Validator; } });
17
+ const performance_monitor_1 = require("./core/performance-monitor");
18
+ Object.defineProperty(exports, "PerformanceMonitor", { enumerable: true, get: function () { return performance_monitor_1.PerformanceMonitor; } });
19
+ /**
20
+ * Main html2canvas function with improved configuration management
21
+ *
22
+ * @param element - Element to render
23
+ * @param options - Rendering options
24
+ * @param config - Optional configuration (for advanced use cases)
25
+ * @returns Promise resolving to rendered canvas
26
+ */
27
+ const html2canvas = (element, options = {}, config) => {
28
+ // Create configuration from element if not provided
29
+ const finalConfig = config ||
30
+ config_1.Html2CanvasConfig.fromElement(element, {
31
+ cspNonce: options.cspNonce,
32
+ cache: options.cache
33
+ });
34
+ return renderElement(element, options, finalConfig);
35
+ };
36
+ exports.html2canvas = html2canvas;
37
+ /**
38
+ * Set CSP nonce for inline styles
39
+ * @deprecated Use options.cspNonce instead
40
+ */
14
41
  const setCspNonce = (nonce) => {
15
- cspNonce = nonce;
42
+ console.warn('[html2canvas-pro] setCspNonce is deprecated. ' +
43
+ 'Pass cspNonce in options instead: html2canvas(element, { cspNonce: "..." })');
44
+ // For backward compatibility, set default config
45
+ if (typeof window !== 'undefined') {
46
+ (0, config_1.setDefaultConfig)(new config_1.Html2CanvasConfig({ window, cspNonce: nonce }));
47
+ }
16
48
  };
17
49
  exports.setCspNonce = setCspNonce;
18
- const html2canvas = (element, options = {}) => {
19
- return renderElement(element, options);
20
- };
21
- exports.html2canvas = html2canvas;
22
50
  html2canvas.setCspNonce = setCspNonce;
23
51
  exports.default = html2canvas;
24
- if (typeof window !== 'undefined') {
25
- cache_storage_1.CacheStorage.setContext(window);
26
- }
27
- const renderElement = async (element, opts) => {
52
+ var image_rendering_1 = require("./css/property-descriptors/image-rendering");
53
+ Object.defineProperty(exports, "IMAGE_RENDERING", { enumerable: true, get: function () { return image_rendering_1.IMAGE_RENDERING; } });
54
+ /**
55
+ * Coerce number-like option values for backward compatibility (e.g. string "2" from form/query).
56
+ * Mutates opts in place; callers should avoid reusing the same options object if they rely on original types.
57
+ */
58
+ const coerceNumberOptions = (opts) => {
59
+ const numKeys = [
60
+ 'scale',
61
+ 'width',
62
+ 'height',
63
+ 'imageTimeout',
64
+ 'x',
65
+ 'y',
66
+ 'windowWidth',
67
+ 'windowHeight',
68
+ 'scrollX',
69
+ 'scrollY'
70
+ ];
71
+ numKeys.forEach((key) => {
72
+ const v = opts[key];
73
+ if (v !== undefined && v !== null && typeof v !== 'number') {
74
+ const n = Number(v);
75
+ if (!Number.isNaN(n)) {
76
+ opts[key] = n;
77
+ }
78
+ }
79
+ });
80
+ };
81
+ const renderElement = async (element, opts, config) => {
82
+ coerceNumberOptions(opts);
83
+ // Input validation (unless explicitly skipped)
84
+ if (!opts.skipValidation) {
85
+ const validator = opts.validator || (0, validator_1.createDefaultValidator)();
86
+ // Validate element
87
+ const elementValidation = validator.validateElement(element);
88
+ if (!elementValidation.valid) {
89
+ throw new Error(elementValidation.error);
90
+ }
91
+ // Validate options
92
+ const optionsValidation = validator.validateOptions(opts);
93
+ if (!optionsValidation.valid) {
94
+ throw new Error(`Invalid options: ${optionsValidation.error}`);
95
+ }
96
+ }
28
97
  if (!element || typeof element !== 'object') {
29
- return Promise.reject('Invalid element provided as first argument');
98
+ throw new Error('Invalid element provided as first argument');
30
99
  }
31
100
  const ownerDocument = element.ownerDocument;
32
101
  if (!ownerDocument) {
@@ -45,17 +114,29 @@ const renderElement = async (element, opts) => {
45
114
  };
46
115
  const contextOptions = {
47
116
  logging: opts.logging ?? true,
48
- cache: opts.cache,
117
+ cache: opts.cache ?? config.cache,
49
118
  ...resourceOptions
50
119
  };
120
+ // Fallbacks for minimal window (e.g. element-like mocks) so we don't get NaN
121
+ const DEFAULT_WINDOW_WIDTH = 800;
122
+ const DEFAULT_WINDOW_HEIGHT = 600;
123
+ const DEFAULT_SCROLL = 0;
124
+ const win = defaultView;
51
125
  const windowOptions = {
52
- windowWidth: opts.windowWidth ?? defaultView.innerWidth,
53
- windowHeight: opts.windowHeight ?? defaultView.innerHeight,
54
- scrollX: opts.scrollX ?? defaultView.pageXOffset,
55
- scrollY: opts.scrollY ?? defaultView.pageYOffset
126
+ windowWidth: opts.windowWidth ?? win.innerWidth ?? DEFAULT_WINDOW_WIDTH,
127
+ windowHeight: opts.windowHeight ?? win.innerHeight ?? DEFAULT_WINDOW_HEIGHT,
128
+ scrollX: opts.scrollX ?? win.pageXOffset ?? DEFAULT_SCROLL,
129
+ scrollY: opts.scrollY ?? win.pageYOffset ?? DEFAULT_SCROLL
56
130
  };
57
131
  const windowBounds = new bounds_1.Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
58
- const context = new context_1.Context(contextOptions, windowBounds);
132
+ const context = new context_1.Context(contextOptions, windowBounds, config);
133
+ // Initialize performance monitoring if enabled
134
+ const performanceMonitoring = opts.enablePerformanceMonitoring ?? opts.logging ?? false;
135
+ const perfMonitor = new performance_monitor_1.PerformanceMonitor(context, performanceMonitoring);
136
+ perfMonitor.start('total', {
137
+ width: windowOptions.windowWidth,
138
+ height: windowOptions.windowHeight
139
+ });
59
140
  const foreignObjectRendering = opts.foreignObjectRendering ?? false;
60
141
  const cloneOptions = {
61
142
  allowTaint: opts.allowTaint ?? false,
@@ -64,15 +145,17 @@ const renderElement = async (element, opts) => {
64
145
  iframeContainer: opts.iframeContainer,
65
146
  inlineImages: foreignObjectRendering,
66
147
  copyStyles: foreignObjectRendering,
67
- cspNonce
148
+ cspNonce: opts.cspNonce ?? config.cspNonce
68
149
  };
69
150
  context.logger.debug(`Starting document clone with size ${windowBounds.width}x${windowBounds.height} scrolled to ${-windowBounds.left},${-windowBounds.top}`);
151
+ perfMonitor.start('clone');
70
152
  const documentCloner = new document_cloner_1.DocumentCloner(context, element, cloneOptions);
71
153
  const clonedElement = documentCloner.clonedReferenceElement;
72
154
  if (!clonedElement) {
73
- return Promise.reject(`Unable to find element in cloned iframe`);
155
+ throw new Error('Unable to find element in cloned iframe');
74
156
  }
75
157
  const container = await documentCloner.toIFrame(ownerDocument, windowBounds);
158
+ perfMonitor.end('clone');
76
159
  const { width, height, left, top } = (0, node_parser_1.isBodyElement)(clonedElement) || (0, node_parser_1.isHTMLElement)(clonedElement)
77
160
  ? (0, bounds_1.parseDocumentSize)(clonedElement.ownerDocument)
78
161
  : (0, bounds_1.parseBounds)(context, clonedElement);
@@ -84,32 +167,56 @@ const renderElement = async (element, opts) => {
84
167
  x: (opts.x ?? 0) + left,
85
168
  y: (opts.y ?? 0) + top,
86
169
  width: opts.width ?? Math.ceil(width),
87
- height: opts.height ?? Math.ceil(height)
170
+ height: opts.height ?? Math.ceil(height),
171
+ imageSmoothing: opts.imageSmoothing,
172
+ imageSmoothingQuality: opts.imageSmoothingQuality
88
173
  };
89
174
  let canvas;
90
- if (foreignObjectRendering) {
91
- context.logger.debug(`Document cloned, using foreign object rendering`);
92
- const renderer = new foreignobject_renderer_1.ForeignObjectRenderer(context, renderOptions);
93
- canvas = await renderer.render(clonedElement);
94
- }
95
- else {
96
- context.logger.debug(`Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`);
97
- context.logger.debug(`Starting DOM parsing`);
98
- const root = (0, node_parser_1.parseTree)(context, clonedElement);
99
- if (backgroundColor === root.styles.backgroundColor) {
100
- root.styles.backgroundColor = color_1.COLORS.TRANSPARENT;
175
+ let root;
176
+ try {
177
+ if (foreignObjectRendering) {
178
+ context.logger.debug(`Document cloned, using foreign object rendering`);
179
+ perfMonitor.start('render-foreignobject');
180
+ const renderer = new foreignobject_renderer_1.ForeignObjectRenderer(context, renderOptions);
181
+ canvas = await renderer.render(clonedElement);
182
+ perfMonitor.end('render-foreignobject');
183
+ }
184
+ else {
185
+ context.logger.debug(`Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`);
186
+ context.logger.debug(`Starting DOM parsing`);
187
+ perfMonitor.start('parse');
188
+ root = (0, node_parser_1.parseTree)(context, clonedElement);
189
+ perfMonitor.end('parse');
190
+ if (backgroundColor === root.styles.backgroundColor) {
191
+ root.styles.backgroundColor = color_1.COLORS.TRANSPARENT;
192
+ }
193
+ context.logger.debug(`Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`);
194
+ perfMonitor.start('render');
195
+ const renderer = new canvas_renderer_1.CanvasRenderer(context, renderOptions);
196
+ canvas = await renderer.render(root);
197
+ perfMonitor.end('render');
198
+ }
199
+ perfMonitor.start('cleanup');
200
+ if (opts.removeContainer ?? true) {
201
+ if (!document_cloner_1.DocumentCloner.destroy(container)) {
202
+ context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);
203
+ }
204
+ }
205
+ perfMonitor.end('cleanup');
206
+ perfMonitor.end('total');
207
+ context.logger.debug(`Finished rendering`);
208
+ // Log performance summary if monitoring is enabled
209
+ if (performanceMonitoring) {
210
+ perfMonitor.logSummary();
101
211
  }
102
- context.logger.debug(`Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`);
103
- const renderer = new canvas_renderer_1.CanvasRenderer(context, renderOptions);
104
- canvas = await renderer.render(root);
212
+ return canvas;
105
213
  }
106
- if (opts.removeContainer ?? true) {
107
- if (!document_cloner_1.DocumentCloner.destroy(container)) {
108
- context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);
214
+ finally {
215
+ // Restore DOM modifications (animations, transforms) in cloned document
216
+ if (root) {
217
+ root.restoreTree();
109
218
  }
110
219
  }
111
- context.logger.debug(`Finished rendering`);
112
- return canvas;
113
220
  };
114
221
  const parseBackgroundColor = (context, element, backgroundColorOverride) => {
115
222
  const ownerDocument = element.ownerDocument;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
4
+ const background_renderer_1 = require("../background-renderer");
5
+ const context_1 = require("../../../core/context");
6
+ const bounds_1 = require("../../../css/layout/bounds");
7
+ const config_1 = require("../../../config");
8
+ describe('BackgroundRenderer', () => {
9
+ it('should be instantiated', () => {
10
+ const mockWindow = {
11
+ document: {
12
+ createElement: (_name) => {
13
+ let _href = '';
14
+ return {
15
+ set href(value) {
16
+ _href = value;
17
+ },
18
+ get href() {
19
+ return _href;
20
+ },
21
+ get protocol() {
22
+ return 'http:';
23
+ },
24
+ get hostname() {
25
+ return 'localhost';
26
+ },
27
+ get port() {
28
+ return '';
29
+ }
30
+ };
31
+ }
32
+ },
33
+ location: { href: 'http://localhost/' }
34
+ };
35
+ const config = new config_1.Html2CanvasConfig({ window: mockWindow });
36
+ const context = new context_1.Context({
37
+ logging: false,
38
+ imageTimeout: 15000,
39
+ useCORS: false,
40
+ allowTaint: false
41
+ }, new bounds_1.Bounds(0, 0, 800, 600), config);
42
+ const canvas = {
43
+ width: 800,
44
+ height: 600
45
+ };
46
+ const ctx = {
47
+ fillStyle: '',
48
+ save: () => { },
49
+ restore: () => { }
50
+ };
51
+ const deps = {
52
+ ctx,
53
+ context,
54
+ canvas,
55
+ options: {
56
+ width: 800,
57
+ height: 600,
58
+ scale: 1
59
+ }
60
+ };
61
+ const renderer = new background_renderer_1.BackgroundRenderer(deps);
62
+ (0, assert_1.ok)(renderer);
63
+ });
64
+ });
65
+ //# sourceMappingURL=background-renderer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-renderer.test.js","sourceRoot":"","sources":["../../../../../src/render/canvas/__tests__/background-renderer.test.ts"],"names":[],"mappings":";;AAAA,mCAA4B;AAC5B,gEAA4F;AAC5F,mDAAgD;AAChD,uDAAoD;AACpD,4CAAoD;AAEpD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,UAAU,GAAG;YACf,QAAQ,EAAE;gBACN,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC7B,IAAI,KAAK,GAAG,EAAE,CAAC;oBACf,OAAO;wBACH,IAAI,IAAI,CAAC,KAAa;4BAClB,KAAK,GAAG,KAAK,CAAC;wBAClB,CAAC;wBACD,IAAI,IAAI;4BACJ,OAAO,KAAK,CAAC;wBACjB,CAAC;wBACD,IAAI,QAAQ;4BACR,OAAO,OAAO,CAAC;wBACnB,CAAC;wBACD,IAAI,QAAQ;4BACR,OAAO,WAAW,CAAC;wBACvB,CAAC;wBACD,IAAI,IAAI;4BACJ,OAAO,EAAE,CAAC;wBACd,CAAC;qBACJ,CAAC;gBACN,CAAC;aACJ;YACD,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACrB,CAAC;QAEvB,MAAM,MAAM,GAAG,IAAI,0BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,iBAAO,CACvB;YACI,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;SACpB,EACD,IAAI,eAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAC1B,MAAM,CACT,CAAC;QAEF,MAAM,MAAM,GAAG;YACX,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACkB,CAAC;QAElC,MAAM,GAAG,GAAG;YACR,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SACmB,CAAC;QAEzC,MAAM,IAAI,GAAmC;YACzC,GAAG;YACH,OAAO;YACP,MAAM;YACN,OAAO,EAAE;gBACL,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,CAAC;aACX;SACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,wCAAkB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAA,WAAE,EAAC,QAAQ,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
4
+ const border_renderer_1 = require("../border-renderer");
5
+ describe('BorderRenderer', () => {
6
+ it('should be instantiated', () => {
7
+ const ctx = {
8
+ strokeStyle: '',
9
+ save: () => { },
10
+ restore: () => { }
11
+ };
12
+ const deps = {
13
+ ctx
14
+ };
15
+ const pathCallbacks = {
16
+ path: () => { },
17
+ formatPath: () => { }
18
+ };
19
+ const renderer = new border_renderer_1.BorderRenderer(deps, pathCallbacks);
20
+ (0, assert_1.ok)(renderer);
21
+ });
22
+ });
23
+ //# sourceMappingURL=border-renderer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"border-renderer.test.js","sourceRoot":"","sources":["../../../../../src/render/canvas/__tests__/border-renderer.test.ts"],"names":[],"mappings":";;AAAA,mCAA4B;AAC5B,wDAA+F;AAE/F,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG;YACR,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SACmB,CAAC;QAEzC,MAAM,IAAI,GAA+B;YACrC,GAAG;SACN,CAAC;QAEF,MAAM,aAAa,GAAkB;YACjC,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;SACvB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,gCAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACzD,IAAA,WAAE,EAAC,QAAQ,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
4
+ const effects_renderer_1 = require("../effects-renderer");
5
+ describe('EffectsRenderer', () => {
6
+ it('should be instantiated', () => {
7
+ const ctx = {
8
+ shadowOffsetX: 0,
9
+ shadowOffsetY: 0,
10
+ shadowBlur: 0,
11
+ shadowColor: '',
12
+ globalAlpha: 1,
13
+ save: () => { },
14
+ restore: () => { }
15
+ };
16
+ const deps = {
17
+ ctx
18
+ };
19
+ const pathCallback = {
20
+ path: () => { }
21
+ };
22
+ const renderer = new effects_renderer_1.EffectsRenderer(deps, pathCallback);
23
+ (0, assert_1.ok)(renderer);
24
+ // Test public methods exist
25
+ (0, assert_1.strictEqual)(typeof renderer.applyEffects, 'function');
26
+ (0, assert_1.strictEqual)(typeof renderer.applyEffect, 'function');
27
+ (0, assert_1.strictEqual)(typeof renderer.popEffect, 'function');
28
+ });
29
+ });
30
+ //# sourceMappingURL=effects-renderer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects-renderer.test.js","sourceRoot":"","sources":["../../../../../src/render/canvas/__tests__/effects-renderer.test.ts"],"names":[],"mappings":";;AAAA,mCAAyC;AACzC,0DAAwG;AAExG,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG;YACR,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SACmB,CAAC;QAEzC,MAAM,IAAI,GAAgC;YACtC,GAAG;SACN,CAAC;QAEF,MAAM,YAAY,GAAwB;YACtC,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;SACjB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,kCAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACzD,IAAA,WAAE,EAAC,QAAQ,CAAC,CAAC;QAEb,4BAA4B;QAC5B,IAAA,oBAAW,EAAC,OAAO,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACtD,IAAA,oBAAW,EAAC,OAAO,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACrD,IAAA,oBAAW,EAAC,OAAO,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
4
+ const text_renderer_1 = require("../text-renderer");
5
+ const context_1 = require("../../../core/context");
6
+ const bounds_1 = require("../../../css/layout/bounds");
7
+ const config_1 = require("../../../config");
8
+ describe('TextRenderer', () => {
9
+ it('should be instantiated', () => {
10
+ const mockWindow = {
11
+ document: {
12
+ createElement: (_name) => {
13
+ let _href = '';
14
+ return {
15
+ set href(value) {
16
+ _href = value;
17
+ },
18
+ get href() {
19
+ return _href;
20
+ },
21
+ get protocol() {
22
+ return 'http:';
23
+ },
24
+ get hostname() {
25
+ return 'localhost';
26
+ },
27
+ get port() {
28
+ return '';
29
+ }
30
+ };
31
+ }
32
+ },
33
+ location: { href: 'http://localhost/' }
34
+ };
35
+ const config = new config_1.Html2CanvasConfig({ window: mockWindow });
36
+ const context = new context_1.Context({
37
+ logging: false,
38
+ imageTimeout: 15000,
39
+ useCORS: false,
40
+ allowTaint: false
41
+ }, new bounds_1.Bounds(0, 0, 800, 600), config);
42
+ const ctx = {
43
+ fillStyle: '',
44
+ font: '',
45
+ save: () => { },
46
+ restore: () => { }
47
+ };
48
+ const deps = {
49
+ ctx,
50
+ context,
51
+ options: {
52
+ scale: 1
53
+ }
54
+ };
55
+ const renderer = new text_renderer_1.TextRenderer(deps);
56
+ (0, assert_1.ok)(renderer);
57
+ // Test public methods exist
58
+ (0, assert_1.strictEqual)(typeof renderer.renderTextNode, 'function');
59
+ (0, assert_1.strictEqual)(typeof renderer.renderTextWithLetterSpacing, 'function');
60
+ (0, assert_1.strictEqual)(typeof renderer.createFontStyle, 'function');
61
+ });
62
+ });
63
+ //# sourceMappingURL=text-renderer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-renderer.test.js","sourceRoot":"","sources":["../../../../../src/render/canvas/__tests__/text-renderer.test.ts"],"names":[],"mappings":";;AAAA,mCAAyC;AACzC,oDAA0E;AAC1E,mDAAgD;AAChD,uDAAoD;AACpD,4CAAoD;AAEpD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,UAAU,GAAG;YACf,QAAQ,EAAE;gBACN,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC7B,IAAI,KAAK,GAAG,EAAE,CAAC;oBACf,OAAO;wBACH,IAAI,IAAI,CAAC,KAAa;4BAClB,KAAK,GAAG,KAAK,CAAC;wBAClB,CAAC;wBACD,IAAI,IAAI;4BACJ,OAAO,KAAK,CAAC;wBACjB,CAAC;wBACD,IAAI,QAAQ;4BACR,OAAO,OAAO,CAAC;wBACnB,CAAC;wBACD,IAAI,QAAQ;4BACR,OAAO,WAAW,CAAC;wBACvB,CAAC;wBACD,IAAI,IAAI;4BACJ,OAAO,EAAE,CAAC;wBACd,CAAC;qBACJ,CAAC;gBACN,CAAC;aACJ;YACD,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACrB,CAAC;QAEvB,MAAM,MAAM,GAAG,IAAI,0BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,iBAAO,CACvB;YACI,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;SACpB,EACD,IAAI,eAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAC1B,MAAM,CACT,CAAC;QAEF,MAAM,GAAG,GAAG;YACR,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SACmB,CAAC;QAEzC,MAAM,IAAI,GAA6B;YACnC,GAAG;YACH,OAAO;YACP,OAAO,EAAE;gBACL,KAAK,EAAE,CAAC;aACX;SACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,4BAAY,CAAC,IAAI,CAAC,CAAC;QACxC,IAAA,WAAE,EAAC,QAAQ,CAAC,CAAC;QAEb,4BAA4B;QAC5B,IAAA,oBAAW,EAAC,OAAO,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACxD,IAAA,oBAAW,EAAC,OAAO,QAAQ,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;QACrE,IAAA,oBAAW,EAAC,OAAO,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}