html2canvas-pro 1.5.13 → 1.6.1
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/.eslintrc.old +27 -0
- package/README.md +20 -0
- package/dist/html2canvas-pro.esm.js +2616 -3010
- package/dist/html2canvas-pro.esm.js.map +1 -1
- package/dist/html2canvas-pro.js +2616 -3010
- package/dist/html2canvas-pro.js.map +1 -1
- package/dist/html2canvas-pro.min.js +6 -2
- package/dist/lib/__tests__/index.js +57 -122
- package/dist/lib/__tests__/index.js.map +1 -1
- package/dist/lib/core/__mocks__/cache-storage.js +2 -5
- package/dist/lib/core/__mocks__/cache-storage.js.map +1 -1
- package/dist/lib/core/__mocks__/context.js +7 -10
- package/dist/lib/core/__mocks__/context.js.map +1 -1
- package/dist/lib/core/__mocks__/logger.js +9 -17
- package/dist/lib/core/__mocks__/logger.js.map +1 -1
- package/dist/lib/core/__tests__/cache-storage.js +153 -351
- package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
- package/dist/lib/core/__tests__/logger.js +12 -13
- package/dist/lib/core/__tests__/logger.js.map +1 -1
- package/dist/lib/core/bitwise.js +1 -1
- package/dist/lib/core/bitwise.js.map +1 -1
- package/dist/lib/core/cache-storage.js +92 -155
- package/dist/lib/core/cache-storage.js.map +1 -1
- package/dist/lib/core/context.js +8 -10
- package/dist/lib/core/context.js.map +1 -1
- package/dist/lib/core/debugger.js +5 -5
- package/dist/lib/core/debugger.js.map +1 -1
- package/dist/lib/core/features.js +65 -68
- package/dist/lib/core/features.js.map +1 -1
- package/dist/lib/core/logger.js +21 -56
- package/dist/lib/core/logger.js.map +1 -1
- package/dist/lib/css/index.js +98 -103
- package/dist/lib/css/index.js.map +1 -1
- package/dist/lib/css/layout/__mocks__/bounds.js +1 -1
- package/dist/lib/css/layout/__mocks__/bounds.js.map +1 -1
- package/dist/lib/css/layout/bounds.js +30 -19
- package/dist/lib/css/layout/bounds.js.map +1 -1
- package/dist/lib/css/layout/text.js +50 -58
- package/dist/lib/css/layout/text.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js +24 -29
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/font-family.js +14 -20
- package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js +61 -83
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +75 -87
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +9 -13
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-clip.js +3 -3
- package/dist/lib/css/property-descriptors/background-clip.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-color.js +1 -1
- package/dist/lib/css/property-descriptors/background-image.js +6 -6
- package/dist/lib/css/property-descriptors/background-image.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-origin.js +3 -3
- package/dist/lib/css/property-descriptors/background-origin.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-position.js +17 -4
- package/dist/lib/css/property-descriptors/background-position.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-repeat.js +7 -9
- package/dist/lib/css/property-descriptors/background-repeat.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-size.js +5 -7
- package/dist/lib/css/property-descriptors/background-size.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-color.js +3 -3
- package/dist/lib/css/property-descriptors/border-color.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-radius.js +5 -7
- package/dist/lib/css/property-descriptors/border-radius.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-style.js +4 -4
- package/dist/lib/css/property-descriptors/border-style.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-width.js +5 -5
- package/dist/lib/css/property-descriptors/border-width.js.map +1 -1
- package/dist/lib/css/property-descriptors/box-shadow.js +10 -10
- package/dist/lib/css/property-descriptors/box-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/color.js +1 -1
- package/dist/lib/css/property-descriptors/content.js +2 -2
- package/dist/lib/css/property-descriptors/content.js.map +1 -1
- package/dist/lib/css/property-descriptors/counter-increment.js +10 -10
- package/dist/lib/css/property-descriptors/counter-increment.js.map +1 -1
- package/dist/lib/css/property-descriptors/counter-reset.js +9 -9
- package/dist/lib/css/property-descriptors/counter-reset.js.map +1 -1
- package/dist/lib/css/property-descriptors/direction.js +1 -1
- package/dist/lib/css/property-descriptors/direction.js.map +1 -1
- package/dist/lib/css/property-descriptors/display.js +4 -4
- package/dist/lib/css/property-descriptors/display.js.map +1 -1
- package/dist/lib/css/property-descriptors/duration.js +4 -4
- package/dist/lib/css/property-descriptors/duration.js.map +1 -1
- package/dist/lib/css/property-descriptors/float.js +1 -1
- package/dist/lib/css/property-descriptors/float.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-family.js +6 -6
- package/dist/lib/css/property-descriptors/font-family.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-size.js +1 -1
- package/dist/lib/css/property-descriptors/font-style.js +1 -1
- package/dist/lib/css/property-descriptors/font-style.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-variant.js +3 -3
- package/dist/lib/css/property-descriptors/font-variant.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-weight.js +2 -2
- package/dist/lib/css/property-descriptors/font-weight.js.map +1 -1
- package/dist/lib/css/property-descriptors/letter-spacing.js +1 -1
- package/dist/lib/css/property-descriptors/letter-spacing.js.map +1 -1
- package/dist/lib/css/property-descriptors/line-break.js +1 -1
- package/dist/lib/css/property-descriptors/line-break.js.map +1 -1
- package/dist/lib/css/property-descriptors/line-height.js +3 -3
- package/dist/lib/css/property-descriptors/line-height.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-image.js +2 -2
- package/dist/lib/css/property-descriptors/list-style-image.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-position.js +1 -1
- package/dist/lib/css/property-descriptors/list-style-position.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-type.js +1 -1
- package/dist/lib/css/property-descriptors/list-style-type.js.map +1 -1
- package/dist/lib/css/property-descriptors/margin.js +3 -3
- package/dist/lib/css/property-descriptors/margin.js.map +1 -1
- package/dist/lib/css/property-descriptors/object-fit.js +4 -4
- package/dist/lib/css/property-descriptors/object-fit.js.map +1 -1
- package/dist/lib/css/property-descriptors/opacity.js +2 -2
- package/dist/lib/css/property-descriptors/opacity.js.map +1 -1
- package/dist/lib/css/property-descriptors/overflow-wrap.js +1 -1
- package/dist/lib/css/property-descriptors/overflow-wrap.js.map +1 -1
- package/dist/lib/css/property-descriptors/overflow.js +3 -3
- package/dist/lib/css/property-descriptors/overflow.js.map +1 -1
- package/dist/lib/css/property-descriptors/padding.js +3 -3
- package/dist/lib/css/property-descriptors/padding.js.map +1 -1
- package/dist/lib/css/property-descriptors/paint-order.js +6 -6
- package/dist/lib/css/property-descriptors/paint-order.js.map +1 -1
- package/dist/lib/css/property-descriptors/position.js +1 -1
- package/dist/lib/css/property-descriptors/position.js.map +1 -1
- package/dist/lib/css/property-descriptors/quotes.js +11 -11
- package/dist/lib/css/property-descriptors/quotes.js.map +1 -1
- package/dist/lib/css/property-descriptors/rotate.js +3 -3
- package/dist/lib/css/property-descriptors/rotate.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-align.js +1 -1
- package/dist/lib/css/property-descriptors/text-align.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-decoration-color.js +1 -1
- package/dist/lib/css/property-descriptors/text-decoration-line.js +4 -4
- package/dist/lib/css/property-descriptors/text-decoration-line.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-shadow.js +10 -10
- package/dist/lib/css/property-descriptors/text-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-transform.js +1 -1
- package/dist/lib/css/property-descriptors/text-transform.js.map +1 -1
- package/dist/lib/css/property-descriptors/transform-origin.js +6 -6
- package/dist/lib/css/property-descriptors/transform-origin.js.map +1 -1
- package/dist/lib/css/property-descriptors/transform.js +15 -15
- package/dist/lib/css/property-descriptors/transform.js.map +1 -1
- package/dist/lib/css/property-descriptors/visibility.js +1 -1
- package/dist/lib/css/property-descriptors/visibility.js.map +1 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +1 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +3 -3
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +1 -1
- package/dist/lib/css/property-descriptors/word-break.js +1 -1
- package/dist/lib/css/property-descriptors/word-break.js.map +1 -1
- package/dist/lib/css/property-descriptors/z-index.js +3 -3
- package/dist/lib/css/property-descriptors/z-index.js.map +1 -1
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +17 -25
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +1 -1
- package/dist/lib/css/syntax/parser.js +50 -55
- package/dist/lib/css/syntax/parser.js.map +1 -1
- package/dist/lib/css/syntax/tokenizer.js +205 -214
- package/dist/lib/css/syntax/tokenizer.js.map +1 -1
- package/dist/lib/css/types/__tests__/color-tests.js +103 -167
- package/dist/lib/css/types/__tests__/color-tests.js.map +1 -1
- package/dist/lib/css/types/__tests__/image-tests.js +192 -217
- package/dist/lib/css/types/__tests__/image-tests.js.map +1 -1
- package/dist/lib/css/types/angle.js +13 -13
- package/dist/lib/css/types/angle.js.map +1 -1
- package/dist/lib/css/types/color-spaces/a98.js +18 -22
- package/dist/lib/css/types/color-spaces/a98.js.map +1 -1
- package/dist/lib/css/types/color-spaces/p3.js +17 -22
- package/dist/lib/css/types/color-spaces/p3.js.map +1 -1
- package/dist/lib/css/types/color-spaces/pro-photo.js +17 -21
- package/dist/lib/css/types/color-spaces/pro-photo.js.map +1 -1
- package/dist/lib/css/types/color-spaces/rec2020.js +15 -19
- package/dist/lib/css/types/color-spaces/rec2020.js.map +1 -1
- package/dist/lib/css/types/color-spaces/srgb.js +17 -23
- package/dist/lib/css/types/color-spaces/srgb.js.map +1 -1
- package/dist/lib/css/types/color-utilities.js +80 -103
- package/dist/lib/css/types/color-utilities.js.map +1 -1
- package/dist/lib/css/types/color.js +72 -66
- package/dist/lib/css/types/color.js.map +1 -1
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js +11 -11
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js +16 -16
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/-webkit-gradient.js +26 -26
- package/dist/lib/css/types/functions/-webkit-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js +57 -65
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/counter.js +59 -65
- package/dist/lib/css/types/functions/counter.js.map +1 -1
- package/dist/lib/css/types/functions/gradient.js +51 -52
- package/dist/lib/css/types/functions/gradient.js.map +1 -1
- package/dist/lib/css/types/functions/linear-gradient.js +10 -10
- package/dist/lib/css/types/functions/linear-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/radial-gradient.js +17 -17
- package/dist/lib/css/types/functions/radial-gradient.js.map +1 -1
- package/dist/lib/css/types/image.js +14 -14
- package/dist/lib/css/types/image.js.map +1 -1
- package/dist/lib/css/types/length-percentage.js +94 -12
- package/dist/lib/css/types/length-percentage.js.map +1 -1
- package/dist/lib/css/types/length.js +1 -3
- package/dist/lib/css/types/length.js.map +1 -1
- package/dist/lib/css/types/time.js +2 -2
- package/dist/lib/css/types/time.js.map +1 -1
- package/dist/lib/dom/__mocks__/document-cloner.js +7 -8
- package/dist/lib/dom/__mocks__/document-cloner.js.map +1 -1
- package/dist/lib/dom/document-cloner.js +195 -219
- package/dist/lib/dom/document-cloner.js.map +1 -1
- package/dist/lib/dom/element-container.js +8 -9
- package/dist/lib/dom/element-container.js.map +1 -1
- package/dist/lib/dom/elements/li-element-container.js +6 -24
- package/dist/lib/dom/elements/li-element-container.js.map +1 -1
- package/dist/lib/dom/elements/ol-element-container.js +7 -25
- package/dist/lib/dom/elements/ol-element-container.js.map +1 -1
- package/dist/lib/dom/elements/select-element-container.js +7 -25
- package/dist/lib/dom/elements/select-element-container.js.map +1 -1
- package/dist/lib/dom/elements/textarea-element-container.js +6 -24
- package/dist/lib/dom/elements/textarea-element-container.js.map +1 -1
- package/dist/lib/dom/node-parser.js +54 -45
- package/dist/lib/dom/node-parser.js.map +1 -1
- package/dist/lib/dom/replaced-elements/canvas-element-container.js +8 -26
- package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/iframe-element-container.js +17 -35
- package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/image-element-container.js +9 -27
- package/dist/lib/dom/replaced-elements/image-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/input-element-container.js +47 -59
- package/dist/lib/dom/replaced-elements/input-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/svg-element-container.js +14 -32
- package/dist/lib/dom/replaced-elements/svg-element-container.js.map +1 -1
- package/dist/lib/dom/text-container.js +7 -8
- package/dist/lib/dom/text-container.js.map +1 -1
- package/dist/lib/index.js +99 -156
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/invariant.js +1 -1
- package/dist/lib/invariant.js.map +1 -1
- package/dist/lib/render/background.js +44 -47
- package/dist/lib/render/background.js.map +1 -1
- package/dist/lib/render/bezier-curve.js +18 -19
- package/dist/lib/render/bezier-curve.js.map +1 -1
- package/dist/lib/render/border.js +9 -9
- package/dist/lib/render/border.js.map +1 -1
- package/dist/lib/render/bound-curves.js +35 -36
- package/dist/lib/render/bound-curves.js.map +1 -1
- package/dist/lib/render/box-sizing.js +11 -11
- package/dist/lib/render/box-sizing.js.map +1 -1
- package/dist/lib/render/canvas/canvas-renderer.js +642 -915
- package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
- package/dist/lib/render/canvas/foreignobject-renderer.js +35 -101
- package/dist/lib/render/canvas/foreignobject-renderer.js.map +1 -1
- package/dist/lib/render/effects.js +12 -17
- package/dist/lib/render/effects.js.map +1 -1
- package/dist/lib/render/font-metrics.js +17 -18
- package/dist/lib/render/font-metrics.js.map +1 -1
- package/dist/lib/render/path.js +4 -4
- package/dist/lib/render/path.js.map +1 -1
- package/dist/lib/render/renderer.js +3 -4
- package/dist/lib/render/renderer.js.map +1 -1
- package/dist/lib/render/stacking-context.js +71 -70
- package/dist/lib/render/stacking-context.js.map +1 -1
- package/dist/lib/render/vector.js +6 -7
- package/dist/lib/render/vector.js.map +1 -1
- package/dist/types/css/types/length-percentage.d.ts +11 -1
- package/dist/types/dom/replaced-elements/input-element-container.d.ts +2 -0
- package/eslint.config.js +35 -0
- package/jest.config.cjs +5 -0
- package/karma.conf.cjs +295 -0
- package/package.json +19 -15
- package/test-punctuation.html +0 -77
package/karma.conf.cjs
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
// Karma configuration
|
|
2
|
+
// Generated on Sat Aug 05 2017 23:42:26 GMT+0800 (Malay Peninsula Standard Time)
|
|
3
|
+
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const simctl = require('node-simctl');
|
|
6
|
+
const iosSimulator = require('appium-ios-simulator');
|
|
7
|
+
const listenAddress = 'localhost';
|
|
8
|
+
const port = 9876;
|
|
9
|
+
|
|
10
|
+
const log = require('karma/lib/logger').create('launcher:MobileSafari');
|
|
11
|
+
|
|
12
|
+
module.exports = function(config) {
|
|
13
|
+
// https://github.com/actions/virtual-environments/blob/master/images/macos/macos-10.15-Readme.md
|
|
14
|
+
const launchers = {
|
|
15
|
+
Safari_IOS_9: {
|
|
16
|
+
base: 'MobileSafari',
|
|
17
|
+
name: 'iPhone 5s',
|
|
18
|
+
platform: 'iOS',
|
|
19
|
+
sdk: '9.0'
|
|
20
|
+
},
|
|
21
|
+
Safari_IOS_10: {
|
|
22
|
+
base: 'MobileSafari',
|
|
23
|
+
name: 'iPhone 5s',
|
|
24
|
+
platform: 'iOS',
|
|
25
|
+
sdk: '10.0'
|
|
26
|
+
},
|
|
27
|
+
Safari_IOS_12: {
|
|
28
|
+
base: 'MobileSafari',
|
|
29
|
+
name: 'iPhone 5s',
|
|
30
|
+
platform: 'iOS',
|
|
31
|
+
sdk: '12.4'
|
|
32
|
+
},
|
|
33
|
+
Safari_IOS_13: {
|
|
34
|
+
base: 'MobileSafari',
|
|
35
|
+
name: 'iPhone 8',
|
|
36
|
+
platform: 'iOS',
|
|
37
|
+
sdk: '13.7'
|
|
38
|
+
},
|
|
39
|
+
Safari_IOS_14: {
|
|
40
|
+
base: 'MobileSafari',
|
|
41
|
+
name: 'iPhone 8',
|
|
42
|
+
platform: 'iOS',
|
|
43
|
+
sdk: '14.4'
|
|
44
|
+
},
|
|
45
|
+
Safari_IOS_15_0: {
|
|
46
|
+
base: 'MobileSafari',
|
|
47
|
+
name: 'iPhone 13',
|
|
48
|
+
platform: 'iOS',
|
|
49
|
+
sdk: '15.0'
|
|
50
|
+
},
|
|
51
|
+
Safari_IOS_15: {
|
|
52
|
+
base: 'MobileSafari',
|
|
53
|
+
name: 'iPhone 13',
|
|
54
|
+
platform: 'iOS',
|
|
55
|
+
sdk: '15.2'
|
|
56
|
+
},
|
|
57
|
+
SauceLabs_IE9: {
|
|
58
|
+
base: 'SauceLabs',
|
|
59
|
+
browserName: 'internet explorer',
|
|
60
|
+
version: '9.0',
|
|
61
|
+
platform: 'Windows 7'
|
|
62
|
+
},
|
|
63
|
+
SauceLabs_IE10: {
|
|
64
|
+
base: 'SauceLabs',
|
|
65
|
+
browserName: 'internet explorer',
|
|
66
|
+
version: '10.0',
|
|
67
|
+
platform: 'Windows 7'
|
|
68
|
+
},
|
|
69
|
+
SauceLabs_IE11: {
|
|
70
|
+
base: 'SauceLabs',
|
|
71
|
+
browserName: 'internet explorer',
|
|
72
|
+
version: '11.0',
|
|
73
|
+
platform: 'Windows 7'
|
|
74
|
+
},
|
|
75
|
+
SauceLabs_Edge18: {
|
|
76
|
+
base: 'SauceLabs',
|
|
77
|
+
browserName: 'MicrosoftEdge',
|
|
78
|
+
version: '18.17763',
|
|
79
|
+
platform: 'Windows 10'
|
|
80
|
+
},
|
|
81
|
+
SauceLabs_Android4: {
|
|
82
|
+
base: 'SauceLabs',
|
|
83
|
+
browserName: 'Browser',
|
|
84
|
+
platform: 'Android',
|
|
85
|
+
version: '4.4',
|
|
86
|
+
device: 'Android Emulator',
|
|
87
|
+
},
|
|
88
|
+
SauceLabs_iOS10_3: {
|
|
89
|
+
base: 'SauceLabs',
|
|
90
|
+
browserName: 'Safari',
|
|
91
|
+
platform: 'iOS',
|
|
92
|
+
version: '10.3',
|
|
93
|
+
device: 'iPhone 7 Plus Simulator'
|
|
94
|
+
},
|
|
95
|
+
SauceLabs_iOS9_3: {
|
|
96
|
+
base: 'SauceLabs',
|
|
97
|
+
browserName: 'Safari',
|
|
98
|
+
platform: 'iOS',
|
|
99
|
+
version: '9.3',
|
|
100
|
+
device: 'iPhone 6 Plus Simulator'
|
|
101
|
+
},
|
|
102
|
+
IE_9: {
|
|
103
|
+
base: 'IE',
|
|
104
|
+
'x-ua-compatible': 'IE=EmulateIE9',
|
|
105
|
+
flags: ['-extoff']
|
|
106
|
+
},
|
|
107
|
+
IE_10: {
|
|
108
|
+
base: 'IE',
|
|
109
|
+
'x-ua-compatible': 'IE=EmulateIE10',
|
|
110
|
+
flags: ['-extoff']
|
|
111
|
+
},
|
|
112
|
+
IE_11: {
|
|
113
|
+
base: 'IE',
|
|
114
|
+
flags: ['-extoff']
|
|
115
|
+
},
|
|
116
|
+
Safari_Stable: {
|
|
117
|
+
base: 'SafariNative'
|
|
118
|
+
},
|
|
119
|
+
Chrome_Stable: {
|
|
120
|
+
base: 'ChromeHeadless'
|
|
121
|
+
},
|
|
122
|
+
Firefox_Stable: {
|
|
123
|
+
base: 'Firefox'
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
const ciLauncher = launchers[process.env.TARGET_BROWSER];
|
|
128
|
+
|
|
129
|
+
const customLaunchers = ciLauncher ? {target_browser: ciLauncher} : {
|
|
130
|
+
stable_chrome: {
|
|
131
|
+
base: 'ChromeHeadless'
|
|
132
|
+
},
|
|
133
|
+
stable_firefox: {
|
|
134
|
+
base: 'Firefox'
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
const injectTypedArrayPolyfills = function(files) {
|
|
139
|
+
files.unshift({
|
|
140
|
+
pattern: path.resolve(__dirname, './node_modules/js-polyfills/typedarray.js'),
|
|
141
|
+
included: true,
|
|
142
|
+
served: true,
|
|
143
|
+
watched: false
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
injectTypedArrayPolyfills.$inject = ['config.files'];
|
|
148
|
+
|
|
149
|
+
const MobileSafari = function(baseBrowserDecorator, args) {
|
|
150
|
+
if(process.platform !== "darwin"){
|
|
151
|
+
log.error("This launcher only works in MacOS.");
|
|
152
|
+
this._process.kill();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
baseBrowserDecorator(this);
|
|
156
|
+
this.on('start', url => {
|
|
157
|
+
simctl.getDevices(args.sdk, args.platform).then(devices => {
|
|
158
|
+
const d = devices.find(d => {
|
|
159
|
+
return d.name === args.name;
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
if (!d) {
|
|
163
|
+
log.error(`No device found for sdk ${args.sdk} with name ${args.name}`);
|
|
164
|
+
log.info(`Available devices:`, devices);
|
|
165
|
+
this._process.kill();
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return iosSimulator.getSimulator(d.udid).then(device => {
|
|
170
|
+
return simctl.bootDevice(d.udid).then(() => device);
|
|
171
|
+
}).then(device => {
|
|
172
|
+
return device.waitForBoot(60 * 5 * 1000).then(() => {
|
|
173
|
+
return device.openUrl(url);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}).catch(e => {
|
|
177
|
+
console.log('err,', e);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
MobileSafari.prototype = {
|
|
183
|
+
name: 'MobileSafari',
|
|
184
|
+
DEFAULT_CMD: {
|
|
185
|
+
darwin: '/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator',
|
|
186
|
+
},
|
|
187
|
+
ENV_CMD: null,
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
MobileSafari.$inject = ['baseBrowserDecorator', 'args'];
|
|
191
|
+
|
|
192
|
+
config.set({
|
|
193
|
+
|
|
194
|
+
// base path that will be used to resolve all patterns (eg. files, exclude)
|
|
195
|
+
basePath: '',
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
// frameworks to use
|
|
199
|
+
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
|
|
200
|
+
frameworks: ['mocha', 'inline-mocha-fix'],
|
|
201
|
+
|
|
202
|
+
// list of files / patterns to load in the browser
|
|
203
|
+
files: [
|
|
204
|
+
'build/testrunner.js',
|
|
205
|
+
{ pattern: './tests/**/*', 'watched': true, 'included': false, 'served': true},
|
|
206
|
+
{ pattern: './dist/**/*', 'watched': true, 'included': false, 'served': true},
|
|
207
|
+
{ pattern: './node_modules/**/*', 'watched': true, 'included': false, 'served': true},
|
|
208
|
+
],
|
|
209
|
+
|
|
210
|
+
plugins: [
|
|
211
|
+
'karma-*',
|
|
212
|
+
{
|
|
213
|
+
'framework:inline-mocha-fix': ['factory', injectTypedArrayPolyfills]
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
'launcher:MobileSafari': ['type', MobileSafari]
|
|
217
|
+
}
|
|
218
|
+
],
|
|
219
|
+
|
|
220
|
+
// list of files to exclude
|
|
221
|
+
exclude: [
|
|
222
|
+
],
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
// preprocess matching files before serving them to the browser
|
|
226
|
+
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
|
|
227
|
+
preprocessors: {
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
// test results reporter to use
|
|
232
|
+
// possible values: 'dots', 'progress'
|
|
233
|
+
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
|
|
234
|
+
reporters: ['dots', 'junit'],
|
|
235
|
+
|
|
236
|
+
junitReporter: {
|
|
237
|
+
outputDir: 'tmp/junit/'
|
|
238
|
+
},
|
|
239
|
+
|
|
240
|
+
// web server listen address,
|
|
241
|
+
listenAddress,
|
|
242
|
+
|
|
243
|
+
// web server port
|
|
244
|
+
port,
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
// enable / disable colors in the output (reporters and logs)
|
|
248
|
+
colors: true,
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
// level of logging
|
|
252
|
+
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
|
|
253
|
+
logLevel: config.LOG_INFO,
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
// enable / disable watching file and executing tests whenever any file changes
|
|
257
|
+
autoWatch: true,
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
// start these browsers
|
|
261
|
+
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
|
|
262
|
+
browsers: Object.keys(customLaunchers),
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
customLaunchers,
|
|
266
|
+
|
|
267
|
+
// Continuous Integration mode
|
|
268
|
+
// if true, Karma captures browsers, runs the tests and exits
|
|
269
|
+
singleRun: true,
|
|
270
|
+
|
|
271
|
+
// Concurrency level
|
|
272
|
+
// how many browser should be started simultaneous
|
|
273
|
+
concurrency: 5,
|
|
274
|
+
|
|
275
|
+
proxies: {
|
|
276
|
+
'/dist': `http://localhost:${port}/base/dist`,
|
|
277
|
+
'/node_modules': `http://localhost:${port}/base/node_modules`,
|
|
278
|
+
'/tests': `http://localhost:${port}/base/tests`,
|
|
279
|
+
'/assets': `http://localhost:${port}/base/tests/assets`
|
|
280
|
+
},
|
|
281
|
+
|
|
282
|
+
client: {
|
|
283
|
+
mocha: {
|
|
284
|
+
// change Karma's debug.html to the mocha web reporter
|
|
285
|
+
reporter: 'html'
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
|
|
289
|
+
captureTimeout: 300000,
|
|
290
|
+
|
|
291
|
+
browserDisconnectTimeout: 60000,
|
|
292
|
+
|
|
293
|
+
browserNoActivityTimeout: 1200000
|
|
294
|
+
})
|
|
295
|
+
};
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "html2canvas-pro",
|
|
3
3
|
"description": "Screenshots with JavaScript. Next generation!",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"main": "dist/html2canvas-pro.js",
|
|
5
6
|
"module": "dist/html2canvas-pro.esm.js",
|
|
6
7
|
"typings": "dist/types/index.d.ts",
|
|
7
8
|
"browser": "dist/html2canvas-pro.js",
|
|
8
|
-
"version": "1.
|
|
9
|
+
"version": "1.6.1",
|
|
9
10
|
"author": {
|
|
10
11
|
"name": "yorickshan",
|
|
11
12
|
"email": "yorickshan@gmail.com",
|
|
@@ -33,16 +34,19 @@
|
|
|
33
34
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
34
35
|
"@types/chai": "^4.1.7",
|
|
35
36
|
"@types/express": "^4.17.13",
|
|
37
|
+
"@types/filenamify-url": "^1.0.0",
|
|
36
38
|
"@types/glob": "^8.1.0",
|
|
37
39
|
"@types/jest": "^29.5.12",
|
|
38
40
|
"@types/jest-image-snapshot": "^6.4.0",
|
|
39
41
|
"@types/karma": "^6.3.0",
|
|
42
|
+
"@types/mkdirp": "^1.0.2",
|
|
40
43
|
"@types/mocha": "^10.0.7",
|
|
41
44
|
"@types/node": "^20.14.12",
|
|
42
45
|
"@types/platform": "^1.3.4",
|
|
43
46
|
"@types/promise-polyfill": "^6.0.3",
|
|
44
|
-
"@
|
|
45
|
-
"@typescript-eslint/
|
|
47
|
+
"@types/serve-index": "^1.9.4",
|
|
48
|
+
"@typescript-eslint/eslint-plugin": "^8.50.0",
|
|
49
|
+
"@typescript-eslint/parser": "^8.50.0",
|
|
46
50
|
"appium-ios-simulator": "^6.1.10",
|
|
47
51
|
"base64-arraybuffer": "1.0.2",
|
|
48
52
|
"body-parser": "^1.19.0",
|
|
@@ -51,11 +55,11 @@
|
|
|
51
55
|
"cors": "^2.8.5",
|
|
52
56
|
"cz-conventional-changelog": "^3.3.0",
|
|
53
57
|
"es6-promise": "^4.2.8",
|
|
54
|
-
"eslint": "^
|
|
58
|
+
"eslint": "^9.13.0",
|
|
55
59
|
"eslint-config-prettier": "^9.1.0",
|
|
56
|
-
"eslint-plugin-prettier": "
|
|
60
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
57
61
|
"express": "^4.17.1",
|
|
58
|
-
"filenamify-url": "1.0
|
|
62
|
+
"filenamify-url": "3.1.0",
|
|
59
63
|
"glob": "^11.0.0",
|
|
60
64
|
"husky": "^8.0.0",
|
|
61
65
|
"jest": "^29.7.0",
|
|
@@ -76,11 +80,11 @@
|
|
|
76
80
|
"mocha": "^10.7.0",
|
|
77
81
|
"node-simctl": "^7.5.3",
|
|
78
82
|
"platform": "^1.3.6",
|
|
79
|
-
"prettier": "^
|
|
83
|
+
"prettier": "^3.3.3",
|
|
80
84
|
"puppeteer": "^22.12.1",
|
|
81
85
|
"replace-in-file": "^3.0.0",
|
|
82
86
|
"rimraf": "^6.0.1",
|
|
83
|
-
"rollup": "^
|
|
87
|
+
"rollup": "^4.24.2",
|
|
84
88
|
"rollup-plugin-sourcemaps": "^0.6.3",
|
|
85
89
|
"serve-index": "^1.9.1",
|
|
86
90
|
"slash": "1.0.0",
|
|
@@ -95,21 +99,21 @@
|
|
|
95
99
|
},
|
|
96
100
|
"scripts": {
|
|
97
101
|
"prebuild": "rimraf dist/ && rimraf build/ && mkdirp dist && mkdirp build",
|
|
98
|
-
"build": "tsc --module commonjs && rollup -c rollup.config.ts && npm run build:create-reftest-list &&
|
|
99
|
-
"build:testrunner": "rollup -c tests/rollup.config.ts",
|
|
102
|
+
"build": "tsc --module commonjs && npx tsx --tsconfig tsconfig.json ./node_modules/.bin/rollup -c rollup.config.ts && npm run build:create-reftest-list && npx tsx --tsconfig tests/tsconfig.json ./node_modules/.bin/rollup -c tests/rollup.config.ts && npm run build:minify",
|
|
103
|
+
"build:testrunner": "npx tsx --tsconfig tests/tsconfig.json ./node_modules/.bin/rollup -c tests/rollup.config.ts",
|
|
100
104
|
"build:minify": "uglifyjs --compress --comments /^!/ -o dist/html2canvas-pro.min.js --mangle -- dist/html2canvas-pro.js",
|
|
101
|
-
"build:reftest-result-list": "
|
|
102
|
-
"build:create-reftest-list": "
|
|
105
|
+
"build:reftest-result-list": "npx tsx scripts/create-reftest-result-list.ts",
|
|
106
|
+
"build:create-reftest-list": "npx tsx scripts/create-reftest-list.ts tests/reftests/ignore.txt build/reftests.ts",
|
|
103
107
|
"release": "sh scripts/version-upgrade.sh",
|
|
104
108
|
"format": "prettier --write \"{src,tests,scripts}/**/*.ts\"",
|
|
105
109
|
"lint": "eslint src/**/*.ts --max-warnings 0",
|
|
106
110
|
"test": "npm run lint && npm run unittest && npm run karma",
|
|
107
111
|
"unittest": "jest",
|
|
108
112
|
"reftests-diff": "mkdirp tmp/snapshots && jest --roots=tests --testMatch=**/reftest-diff.ts",
|
|
109
|
-
"karma": "
|
|
113
|
+
"karma": "npx tsx tests/karma",
|
|
110
114
|
"watch": "rollup -c rollup.config.ts -w",
|
|
111
|
-
"watch:unittest": "mocha --require
|
|
112
|
-
"start": "
|
|
115
|
+
"watch:unittest": "mocha --require tsx/register --watch-extensions ts -w src/**/__tests__/*.ts",
|
|
116
|
+
"start": "npx tsx tests/server --port=8080 --cors=8081",
|
|
113
117
|
"commitlint": "commitlint --config .commitlintrc.json -e -V",
|
|
114
118
|
"tag": "sh scripts/create-tag.sh",
|
|
115
119
|
"prepare": "if [ \"$SKIP_PREPARE\" != \"true\" ]; then husky install; fi",
|
package/test-punctuation.html
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-CN">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>中文标点符号测试</title>
|
|
7
|
-
<style>
|
|
8
|
-
body {
|
|
9
|
-
padding: 20px;
|
|
10
|
-
font-family: "Microsoft YaHei", "SimSun", sans-serif;
|
|
11
|
-
}
|
|
12
|
-
.test-case {
|
|
13
|
-
margin-bottom: 30px;
|
|
14
|
-
padding: 20px;
|
|
15
|
-
border: 1px solid #ccc;
|
|
16
|
-
}
|
|
17
|
-
.test-text {
|
|
18
|
-
font-size: 24px;
|
|
19
|
-
line-height: 1.5;
|
|
20
|
-
}
|
|
21
|
-
.result {
|
|
22
|
-
margin-top: 20px;
|
|
23
|
-
border: 1px solid #999;
|
|
24
|
-
}
|
|
25
|
-
</style>
|
|
26
|
-
</head>
|
|
27
|
-
<body>
|
|
28
|
-
<h1>中文标点符号错位测试</h1>
|
|
29
|
-
|
|
30
|
-
<div class="test-case">
|
|
31
|
-
<h3>测试1:连续中文标点符号</h3>
|
|
32
|
-
<div class="test-text" id="test1">
|
|
33
|
-
《他的故事》《传世不朽》(收到的方式)
|
|
34
|
-
</div>
|
|
35
|
-
<canvas class="result" id="canvas1"></canvas>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
<div class="test-case">
|
|
39
|
-
<h3>测试2:混合中文标点和文字</h3>
|
|
40
|
-
<div class="test-text" id="test2">
|
|
41
|
-
「你好」、「世界」、「测试」——这些都是中文标点。
|
|
42
|
-
</div>
|
|
43
|
-
<canvas class="result" id="canvas2"></canvas>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<div class="test-case">
|
|
47
|
-
<h3>测试3:带 letter-spacing 的中文标点</h3>
|
|
48
|
-
<div class="test-text" id="test3" style="letter-spacing: 2px;">
|
|
49
|
-
测试,,,连续标点。。。问题!!!
|
|
50
|
-
</div>
|
|
51
|
-
<canvas class="result" id="canvas3"></canvas>
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
<script src="dist/html2canvas-pro.js"></script>
|
|
55
|
-
<script>
|
|
56
|
-
async function runTest(elementId, canvasId) {
|
|
57
|
-
const element = document.getElementById(elementId);
|
|
58
|
-
const canvas = await html2canvas(element, {
|
|
59
|
-
logging: true,
|
|
60
|
-
scale: 2
|
|
61
|
-
});
|
|
62
|
-
const resultCanvas = document.getElementById(canvasId);
|
|
63
|
-
resultCanvas.width = canvas.width;
|
|
64
|
-
resultCanvas.height = canvas.height;
|
|
65
|
-
const ctx = resultCanvas.getContext('2d');
|
|
66
|
-
ctx.drawImage(canvas, 0, 0);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
window.addEventListener('load', async () => {
|
|
70
|
-
await runTest('test1', 'canvas1');
|
|
71
|
-
await runTest('test2', 'canvas2');
|
|
72
|
-
await runTest('test3', 'canvas3');
|
|
73
|
-
});
|
|
74
|
-
</script>
|
|
75
|
-
</body>
|
|
76
|
-
</html>
|
|
77
|
-
|