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.
Files changed (265) hide show
  1. package/.eslintrc.old +27 -0
  2. package/README.md +20 -0
  3. package/dist/html2canvas-pro.esm.js +2616 -3010
  4. package/dist/html2canvas-pro.esm.js.map +1 -1
  5. package/dist/html2canvas-pro.js +2616 -3010
  6. package/dist/html2canvas-pro.js.map +1 -1
  7. package/dist/html2canvas-pro.min.js +6 -2
  8. package/dist/lib/__tests__/index.js +57 -122
  9. package/dist/lib/__tests__/index.js.map +1 -1
  10. package/dist/lib/core/__mocks__/cache-storage.js +2 -5
  11. package/dist/lib/core/__mocks__/cache-storage.js.map +1 -1
  12. package/dist/lib/core/__mocks__/context.js +7 -10
  13. package/dist/lib/core/__mocks__/context.js.map +1 -1
  14. package/dist/lib/core/__mocks__/logger.js +9 -17
  15. package/dist/lib/core/__mocks__/logger.js.map +1 -1
  16. package/dist/lib/core/__tests__/cache-storage.js +153 -351
  17. package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
  18. package/dist/lib/core/__tests__/logger.js +12 -13
  19. package/dist/lib/core/__tests__/logger.js.map +1 -1
  20. package/dist/lib/core/bitwise.js +1 -1
  21. package/dist/lib/core/bitwise.js.map +1 -1
  22. package/dist/lib/core/cache-storage.js +92 -155
  23. package/dist/lib/core/cache-storage.js.map +1 -1
  24. package/dist/lib/core/context.js +8 -10
  25. package/dist/lib/core/context.js.map +1 -1
  26. package/dist/lib/core/debugger.js +5 -5
  27. package/dist/lib/core/debugger.js.map +1 -1
  28. package/dist/lib/core/features.js +65 -68
  29. package/dist/lib/core/features.js.map +1 -1
  30. package/dist/lib/core/logger.js +21 -56
  31. package/dist/lib/core/logger.js.map +1 -1
  32. package/dist/lib/css/index.js +98 -103
  33. package/dist/lib/css/index.js.map +1 -1
  34. package/dist/lib/css/layout/__mocks__/bounds.js +1 -1
  35. package/dist/lib/css/layout/__mocks__/bounds.js.map +1 -1
  36. package/dist/lib/css/layout/bounds.js +30 -19
  37. package/dist/lib/css/layout/bounds.js.map +1 -1
  38. package/dist/lib/css/layout/text.js +50 -58
  39. package/dist/lib/css/layout/text.js.map +1 -1
  40. package/dist/lib/css/property-descriptors/__tests__/background-tests.js +24 -29
  41. package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -1
  42. package/dist/lib/css/property-descriptors/__tests__/font-family.js +14 -20
  43. package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +1 -1
  44. package/dist/lib/css/property-descriptors/__tests__/paint-order.js +61 -83
  45. package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +1 -1
  46. package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +75 -87
  47. package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +1 -1
  48. package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +9 -13
  49. package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +1 -1
  50. package/dist/lib/css/property-descriptors/background-clip.js +3 -3
  51. package/dist/lib/css/property-descriptors/background-clip.js.map +1 -1
  52. package/dist/lib/css/property-descriptors/background-color.js +1 -1
  53. package/dist/lib/css/property-descriptors/background-image.js +6 -6
  54. package/dist/lib/css/property-descriptors/background-image.js.map +1 -1
  55. package/dist/lib/css/property-descriptors/background-origin.js +3 -3
  56. package/dist/lib/css/property-descriptors/background-origin.js.map +1 -1
  57. package/dist/lib/css/property-descriptors/background-position.js +17 -4
  58. package/dist/lib/css/property-descriptors/background-position.js.map +1 -1
  59. package/dist/lib/css/property-descriptors/background-repeat.js +7 -9
  60. package/dist/lib/css/property-descriptors/background-repeat.js.map +1 -1
  61. package/dist/lib/css/property-descriptors/background-size.js +5 -7
  62. package/dist/lib/css/property-descriptors/background-size.js.map +1 -1
  63. package/dist/lib/css/property-descriptors/border-color.js +3 -3
  64. package/dist/lib/css/property-descriptors/border-color.js.map +1 -1
  65. package/dist/lib/css/property-descriptors/border-radius.js +5 -7
  66. package/dist/lib/css/property-descriptors/border-radius.js.map +1 -1
  67. package/dist/lib/css/property-descriptors/border-style.js +4 -4
  68. package/dist/lib/css/property-descriptors/border-style.js.map +1 -1
  69. package/dist/lib/css/property-descriptors/border-width.js +5 -5
  70. package/dist/lib/css/property-descriptors/border-width.js.map +1 -1
  71. package/dist/lib/css/property-descriptors/box-shadow.js +10 -10
  72. package/dist/lib/css/property-descriptors/box-shadow.js.map +1 -1
  73. package/dist/lib/css/property-descriptors/color.js +1 -1
  74. package/dist/lib/css/property-descriptors/content.js +2 -2
  75. package/dist/lib/css/property-descriptors/content.js.map +1 -1
  76. package/dist/lib/css/property-descriptors/counter-increment.js +10 -10
  77. package/dist/lib/css/property-descriptors/counter-increment.js.map +1 -1
  78. package/dist/lib/css/property-descriptors/counter-reset.js +9 -9
  79. package/dist/lib/css/property-descriptors/counter-reset.js.map +1 -1
  80. package/dist/lib/css/property-descriptors/direction.js +1 -1
  81. package/dist/lib/css/property-descriptors/direction.js.map +1 -1
  82. package/dist/lib/css/property-descriptors/display.js +4 -4
  83. package/dist/lib/css/property-descriptors/display.js.map +1 -1
  84. package/dist/lib/css/property-descriptors/duration.js +4 -4
  85. package/dist/lib/css/property-descriptors/duration.js.map +1 -1
  86. package/dist/lib/css/property-descriptors/float.js +1 -1
  87. package/dist/lib/css/property-descriptors/float.js.map +1 -1
  88. package/dist/lib/css/property-descriptors/font-family.js +6 -6
  89. package/dist/lib/css/property-descriptors/font-family.js.map +1 -1
  90. package/dist/lib/css/property-descriptors/font-size.js +1 -1
  91. package/dist/lib/css/property-descriptors/font-style.js +1 -1
  92. package/dist/lib/css/property-descriptors/font-style.js.map +1 -1
  93. package/dist/lib/css/property-descriptors/font-variant.js +3 -3
  94. package/dist/lib/css/property-descriptors/font-variant.js.map +1 -1
  95. package/dist/lib/css/property-descriptors/font-weight.js +2 -2
  96. package/dist/lib/css/property-descriptors/font-weight.js.map +1 -1
  97. package/dist/lib/css/property-descriptors/letter-spacing.js +1 -1
  98. package/dist/lib/css/property-descriptors/letter-spacing.js.map +1 -1
  99. package/dist/lib/css/property-descriptors/line-break.js +1 -1
  100. package/dist/lib/css/property-descriptors/line-break.js.map +1 -1
  101. package/dist/lib/css/property-descriptors/line-height.js +3 -3
  102. package/dist/lib/css/property-descriptors/line-height.js.map +1 -1
  103. package/dist/lib/css/property-descriptors/list-style-image.js +2 -2
  104. package/dist/lib/css/property-descriptors/list-style-image.js.map +1 -1
  105. package/dist/lib/css/property-descriptors/list-style-position.js +1 -1
  106. package/dist/lib/css/property-descriptors/list-style-position.js.map +1 -1
  107. package/dist/lib/css/property-descriptors/list-style-type.js +1 -1
  108. package/dist/lib/css/property-descriptors/list-style-type.js.map +1 -1
  109. package/dist/lib/css/property-descriptors/margin.js +3 -3
  110. package/dist/lib/css/property-descriptors/margin.js.map +1 -1
  111. package/dist/lib/css/property-descriptors/object-fit.js +4 -4
  112. package/dist/lib/css/property-descriptors/object-fit.js.map +1 -1
  113. package/dist/lib/css/property-descriptors/opacity.js +2 -2
  114. package/dist/lib/css/property-descriptors/opacity.js.map +1 -1
  115. package/dist/lib/css/property-descriptors/overflow-wrap.js +1 -1
  116. package/dist/lib/css/property-descriptors/overflow-wrap.js.map +1 -1
  117. package/dist/lib/css/property-descriptors/overflow.js +3 -3
  118. package/dist/lib/css/property-descriptors/overflow.js.map +1 -1
  119. package/dist/lib/css/property-descriptors/padding.js +3 -3
  120. package/dist/lib/css/property-descriptors/padding.js.map +1 -1
  121. package/dist/lib/css/property-descriptors/paint-order.js +6 -6
  122. package/dist/lib/css/property-descriptors/paint-order.js.map +1 -1
  123. package/dist/lib/css/property-descriptors/position.js +1 -1
  124. package/dist/lib/css/property-descriptors/position.js.map +1 -1
  125. package/dist/lib/css/property-descriptors/quotes.js +11 -11
  126. package/dist/lib/css/property-descriptors/quotes.js.map +1 -1
  127. package/dist/lib/css/property-descriptors/rotate.js +3 -3
  128. package/dist/lib/css/property-descriptors/rotate.js.map +1 -1
  129. package/dist/lib/css/property-descriptors/text-align.js +1 -1
  130. package/dist/lib/css/property-descriptors/text-align.js.map +1 -1
  131. package/dist/lib/css/property-descriptors/text-decoration-color.js +1 -1
  132. package/dist/lib/css/property-descriptors/text-decoration-line.js +4 -4
  133. package/dist/lib/css/property-descriptors/text-decoration-line.js.map +1 -1
  134. package/dist/lib/css/property-descriptors/text-shadow.js +10 -10
  135. package/dist/lib/css/property-descriptors/text-shadow.js.map +1 -1
  136. package/dist/lib/css/property-descriptors/text-transform.js +1 -1
  137. package/dist/lib/css/property-descriptors/text-transform.js.map +1 -1
  138. package/dist/lib/css/property-descriptors/transform-origin.js +6 -6
  139. package/dist/lib/css/property-descriptors/transform-origin.js.map +1 -1
  140. package/dist/lib/css/property-descriptors/transform.js +15 -15
  141. package/dist/lib/css/property-descriptors/transform.js.map +1 -1
  142. package/dist/lib/css/property-descriptors/visibility.js +1 -1
  143. package/dist/lib/css/property-descriptors/visibility.js.map +1 -1
  144. package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +1 -1
  145. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +3 -3
  146. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +1 -1
  147. package/dist/lib/css/property-descriptors/word-break.js +1 -1
  148. package/dist/lib/css/property-descriptors/word-break.js.map +1 -1
  149. package/dist/lib/css/property-descriptors/z-index.js +3 -3
  150. package/dist/lib/css/property-descriptors/z-index.js.map +1 -1
  151. package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +17 -25
  152. package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +1 -1
  153. package/dist/lib/css/syntax/parser.js +50 -55
  154. package/dist/lib/css/syntax/parser.js.map +1 -1
  155. package/dist/lib/css/syntax/tokenizer.js +205 -214
  156. package/dist/lib/css/syntax/tokenizer.js.map +1 -1
  157. package/dist/lib/css/types/__tests__/color-tests.js +103 -167
  158. package/dist/lib/css/types/__tests__/color-tests.js.map +1 -1
  159. package/dist/lib/css/types/__tests__/image-tests.js +192 -217
  160. package/dist/lib/css/types/__tests__/image-tests.js.map +1 -1
  161. package/dist/lib/css/types/angle.js +13 -13
  162. package/dist/lib/css/types/angle.js.map +1 -1
  163. package/dist/lib/css/types/color-spaces/a98.js +18 -22
  164. package/dist/lib/css/types/color-spaces/a98.js.map +1 -1
  165. package/dist/lib/css/types/color-spaces/p3.js +17 -22
  166. package/dist/lib/css/types/color-spaces/p3.js.map +1 -1
  167. package/dist/lib/css/types/color-spaces/pro-photo.js +17 -21
  168. package/dist/lib/css/types/color-spaces/pro-photo.js.map +1 -1
  169. package/dist/lib/css/types/color-spaces/rec2020.js +15 -19
  170. package/dist/lib/css/types/color-spaces/rec2020.js.map +1 -1
  171. package/dist/lib/css/types/color-spaces/srgb.js +17 -23
  172. package/dist/lib/css/types/color-spaces/srgb.js.map +1 -1
  173. package/dist/lib/css/types/color-utilities.js +80 -103
  174. package/dist/lib/css/types/color-utilities.js.map +1 -1
  175. package/dist/lib/css/types/color.js +72 -66
  176. package/dist/lib/css/types/color.js.map +1 -1
  177. package/dist/lib/css/types/functions/-prefix-linear-gradient.js +11 -11
  178. package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +1 -1
  179. package/dist/lib/css/types/functions/-prefix-radial-gradient.js +16 -16
  180. package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +1 -1
  181. package/dist/lib/css/types/functions/-webkit-gradient.js +26 -26
  182. package/dist/lib/css/types/functions/-webkit-gradient.js.map +1 -1
  183. package/dist/lib/css/types/functions/__tests__/radial-gradient.js +57 -65
  184. package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +1 -1
  185. package/dist/lib/css/types/functions/counter.js +59 -65
  186. package/dist/lib/css/types/functions/counter.js.map +1 -1
  187. package/dist/lib/css/types/functions/gradient.js +51 -52
  188. package/dist/lib/css/types/functions/gradient.js.map +1 -1
  189. package/dist/lib/css/types/functions/linear-gradient.js +10 -10
  190. package/dist/lib/css/types/functions/linear-gradient.js.map +1 -1
  191. package/dist/lib/css/types/functions/radial-gradient.js +17 -17
  192. package/dist/lib/css/types/functions/radial-gradient.js.map +1 -1
  193. package/dist/lib/css/types/image.js +14 -14
  194. package/dist/lib/css/types/image.js.map +1 -1
  195. package/dist/lib/css/types/length-percentage.js +94 -12
  196. package/dist/lib/css/types/length-percentage.js.map +1 -1
  197. package/dist/lib/css/types/length.js +1 -3
  198. package/dist/lib/css/types/length.js.map +1 -1
  199. package/dist/lib/css/types/time.js +2 -2
  200. package/dist/lib/css/types/time.js.map +1 -1
  201. package/dist/lib/dom/__mocks__/document-cloner.js +7 -8
  202. package/dist/lib/dom/__mocks__/document-cloner.js.map +1 -1
  203. package/dist/lib/dom/document-cloner.js +195 -219
  204. package/dist/lib/dom/document-cloner.js.map +1 -1
  205. package/dist/lib/dom/element-container.js +8 -9
  206. package/dist/lib/dom/element-container.js.map +1 -1
  207. package/dist/lib/dom/elements/li-element-container.js +6 -24
  208. package/dist/lib/dom/elements/li-element-container.js.map +1 -1
  209. package/dist/lib/dom/elements/ol-element-container.js +7 -25
  210. package/dist/lib/dom/elements/ol-element-container.js.map +1 -1
  211. package/dist/lib/dom/elements/select-element-container.js +7 -25
  212. package/dist/lib/dom/elements/select-element-container.js.map +1 -1
  213. package/dist/lib/dom/elements/textarea-element-container.js +6 -24
  214. package/dist/lib/dom/elements/textarea-element-container.js.map +1 -1
  215. package/dist/lib/dom/node-parser.js +54 -45
  216. package/dist/lib/dom/node-parser.js.map +1 -1
  217. package/dist/lib/dom/replaced-elements/canvas-element-container.js +8 -26
  218. package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +1 -1
  219. package/dist/lib/dom/replaced-elements/iframe-element-container.js +17 -35
  220. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
  221. package/dist/lib/dom/replaced-elements/image-element-container.js +9 -27
  222. package/dist/lib/dom/replaced-elements/image-element-container.js.map +1 -1
  223. package/dist/lib/dom/replaced-elements/input-element-container.js +47 -59
  224. package/dist/lib/dom/replaced-elements/input-element-container.js.map +1 -1
  225. package/dist/lib/dom/replaced-elements/svg-element-container.js +14 -32
  226. package/dist/lib/dom/replaced-elements/svg-element-container.js.map +1 -1
  227. package/dist/lib/dom/text-container.js +7 -8
  228. package/dist/lib/dom/text-container.js.map +1 -1
  229. package/dist/lib/index.js +99 -156
  230. package/dist/lib/index.js.map +1 -1
  231. package/dist/lib/invariant.js +1 -1
  232. package/dist/lib/invariant.js.map +1 -1
  233. package/dist/lib/render/background.js +44 -47
  234. package/dist/lib/render/background.js.map +1 -1
  235. package/dist/lib/render/bezier-curve.js +18 -19
  236. package/dist/lib/render/bezier-curve.js.map +1 -1
  237. package/dist/lib/render/border.js +9 -9
  238. package/dist/lib/render/border.js.map +1 -1
  239. package/dist/lib/render/bound-curves.js +35 -36
  240. package/dist/lib/render/bound-curves.js.map +1 -1
  241. package/dist/lib/render/box-sizing.js +11 -11
  242. package/dist/lib/render/box-sizing.js.map +1 -1
  243. package/dist/lib/render/canvas/canvas-renderer.js +642 -915
  244. package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
  245. package/dist/lib/render/canvas/foreignobject-renderer.js +35 -101
  246. package/dist/lib/render/canvas/foreignobject-renderer.js.map +1 -1
  247. package/dist/lib/render/effects.js +12 -17
  248. package/dist/lib/render/effects.js.map +1 -1
  249. package/dist/lib/render/font-metrics.js +17 -18
  250. package/dist/lib/render/font-metrics.js.map +1 -1
  251. package/dist/lib/render/path.js +4 -4
  252. package/dist/lib/render/path.js.map +1 -1
  253. package/dist/lib/render/renderer.js +3 -4
  254. package/dist/lib/render/renderer.js.map +1 -1
  255. package/dist/lib/render/stacking-context.js +71 -70
  256. package/dist/lib/render/stacking-context.js.map +1 -1
  257. package/dist/lib/render/vector.js +6 -7
  258. package/dist/lib/render/vector.js.map +1 -1
  259. package/dist/types/css/types/length-percentage.d.ts +11 -1
  260. package/dist/types/dom/replaced-elements/input-element-container.d.ts +2 -0
  261. package/eslint.config.js +35 -0
  262. package/jest.config.cjs +5 -0
  263. package/karma.conf.cjs +295 -0
  264. package/package.json +19 -15
  265. 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.5.13",
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
- "@typescript-eslint/eslint-plugin": "^4.33.0",
45
- "@typescript-eslint/parser": "^4.33.0",
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": "^7.32.0",
58
+ "eslint": "^9.13.0",
55
59
  "eslint-config-prettier": "^9.1.0",
56
- "eslint-plugin-prettier": "4.2.1",
60
+ "eslint-plugin-prettier": "^5.5.4",
57
61
  "express": "^4.17.1",
58
- "filenamify-url": "1.0.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": "^2.3.2",
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": "^2.79.1",
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 && npm run build:testrunner && npm run build:minify",
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": "ts-node scripts/create-reftest-result-list.ts",
102
- "build:create-reftest-list": "ts-node scripts/create-reftest-list.ts tests/reftests/ignore.txt build/reftests.ts",
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": "ts-node tests/karma",
113
+ "karma": "npx tsx tests/karma",
110
114
  "watch": "rollup -c rollup.config.ts -w",
111
- "watch:unittest": "mocha --require ts-node/register --watch-extensions ts -w src/**/__tests__/*.ts",
112
- "start": "ts-node tests/server --port=8080 --cors=8081",
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",
@@ -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
-