html2canvas-pro 2.1.0 → 2.1.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 (186) hide show
  1. package/dist/html2canvas-pro.esm.js +21 -7
  2. package/dist/html2canvas-pro.esm.js.map +1 -1
  3. package/dist/html2canvas-pro.js +21 -7
  4. package/dist/html2canvas-pro.js.map +1 -1
  5. package/dist/html2canvas-pro.min.js +3 -3
  6. package/dist/lib/core/cache-storage.js +2 -2
  7. package/dist/lib/core/features.js +2 -2
  8. package/dist/lib/render/canvas/background-renderer.js +6 -0
  9. package/dist/lib/render/canvas/canvas-renderer.js +5 -1
  10. package/dist/lib/render/canvas/foreignobject-renderer.js +5 -1
  11. package/package.json +3 -11
  12. package/dist/lib/invariant.js +0 -9
  13. package/dist/types/invariant.d.ts +0 -1
  14. package/src/__tests__/index.ts +0 -99
  15. package/src/config.ts +0 -107
  16. package/src/core/__mocks__/cache-storage.ts +0 -1
  17. package/src/core/__mocks__/context.ts +0 -19
  18. package/src/core/__mocks__/features.ts +0 -8
  19. package/src/core/__mocks__/logger.ts +0 -17
  20. package/src/core/__tests__/cache-storage.test.ts +0 -205
  21. package/src/core/__tests__/cache-storage.ts +0 -278
  22. package/src/core/__tests__/logger.ts +0 -29
  23. package/src/core/__tests__/validator.ts +0 -359
  24. package/src/core/bitwise.ts +0 -1
  25. package/src/core/cache-storage.ts +0 -315
  26. package/src/core/context.ts +0 -31
  27. package/src/core/debugger.ts +0 -32
  28. package/src/core/features.ts +0 -222
  29. package/src/core/logger.ts +0 -64
  30. package/src/core/origin-checker.ts +0 -57
  31. package/src/core/performance-monitor.ts +0 -241
  32. package/src/core/render-element.ts +0 -272
  33. package/src/core/util.ts +0 -1
  34. package/src/core/validator.ts +0 -593
  35. package/src/css/index.ts +0 -427
  36. package/src/css/layout/__mocks__/bounds.ts +0 -6
  37. package/src/css/layout/bounds.ts +0 -79
  38. package/src/css/layout/text.ts +0 -161
  39. package/src/css/property-descriptor.ts +0 -49
  40. package/src/css/property-descriptors/__tests__/background-tests.ts +0 -65
  41. package/src/css/property-descriptors/__tests__/clip-path.test.ts +0 -280
  42. package/src/css/property-descriptors/__tests__/font-family.ts +0 -25
  43. package/src/css/property-descriptors/__tests__/image-rendering-integration.test.ts +0 -153
  44. package/src/css/property-descriptors/__tests__/image-rendering-performance.test.ts +0 -175
  45. package/src/css/property-descriptors/__tests__/image-rendering.test.ts +0 -72
  46. package/src/css/property-descriptors/__tests__/paint-order.ts +0 -87
  47. package/src/css/property-descriptors/__tests__/text-shadow.ts +0 -94
  48. package/src/css/property-descriptors/__tests__/transform-tests.ts +0 -18
  49. package/src/css/property-descriptors/background-clip.ts +0 -30
  50. package/src/css/property-descriptors/background-color.ts +0 -9
  51. package/src/css/property-descriptors/background-image.ts +0 -27
  52. package/src/css/property-descriptors/background-origin.ts +0 -31
  53. package/src/css/property-descriptors/background-position.ts +0 -38
  54. package/src/css/property-descriptors/background-repeat.ts +0 -44
  55. package/src/css/property-descriptors/background-size.ts +0 -27
  56. package/src/css/property-descriptors/border-color.ts +0 -13
  57. package/src/css/property-descriptors/border-radius.ts +0 -19
  58. package/src/css/property-descriptors/border-style.ts +0 -34
  59. package/src/css/property-descriptors/border-width.ts +0 -20
  60. package/src/css/property-descriptors/box-shadow.ts +0 -60
  61. package/src/css/property-descriptors/clip-path.ts +0 -271
  62. package/src/css/property-descriptors/color.ts +0 -9
  63. package/src/css/property-descriptors/content.ts +0 -26
  64. package/src/css/property-descriptors/counter-increment.ts +0 -43
  65. package/src/css/property-descriptors/counter-reset.ts +0 -36
  66. package/src/css/property-descriptors/direction.ts +0 -23
  67. package/src/css/property-descriptors/display.ts +0 -117
  68. package/src/css/property-descriptors/duration.ts +0 -14
  69. package/src/css/property-descriptors/float.ts +0 -29
  70. package/src/css/property-descriptors/font-family.ts +0 -38
  71. package/src/css/property-descriptors/font-size.ts +0 -9
  72. package/src/css/property-descriptors/font-style.ts +0 -25
  73. package/src/css/property-descriptors/font-variant.ts +0 -12
  74. package/src/css/property-descriptors/font-weight.ts +0 -26
  75. package/src/css/property-descriptors/image-rendering.ts +0 -33
  76. package/src/css/property-descriptors/letter-spacing.ts +0 -25
  77. package/src/css/property-descriptors/line-break.ts +0 -22
  78. package/src/css/property-descriptors/line-height.ts +0 -22
  79. package/src/css/property-descriptors/list-style-image.ts +0 -19
  80. package/src/css/property-descriptors/list-style-position.ts +0 -22
  81. package/src/css/property-descriptors/list-style-type.ts +0 -179
  82. package/src/css/property-descriptors/margin.ts +0 -13
  83. package/src/css/property-descriptors/mix-blend-mode.ts +0 -35
  84. package/src/css/property-descriptors/object-fit.ts +0 -39
  85. package/src/css/property-descriptors/opacity.ts +0 -15
  86. package/src/css/property-descriptors/overflow-wrap.ts +0 -22
  87. package/src/css/property-descriptors/overflow.ts +0 -34
  88. package/src/css/property-descriptors/padding.ts +0 -14
  89. package/src/css/property-descriptors/paint-order.ts +0 -42
  90. package/src/css/property-descriptors/position.ts +0 -30
  91. package/src/css/property-descriptors/quotes.ts +0 -57
  92. package/src/css/property-descriptors/rotate.ts +0 -34
  93. package/src/css/property-descriptors/text-align.ts +0 -26
  94. package/src/css/property-descriptors/text-decoration-color.ts +0 -9
  95. package/src/css/property-descriptors/text-decoration-line.ts +0 -38
  96. package/src/css/property-descriptors/text-decoration-style.ts +0 -32
  97. package/src/css/property-descriptors/text-decoration-thickness.ts +0 -30
  98. package/src/css/property-descriptors/text-overflow.ts +0 -23
  99. package/src/css/property-descriptors/text-shadow.ts +0 -52
  100. package/src/css/property-descriptors/text-transform.ts +0 -27
  101. package/src/css/property-descriptors/text-underline-offset.ts +0 -27
  102. package/src/css/property-descriptors/transform-origin.ts +0 -29
  103. package/src/css/property-descriptors/transform.ts +0 -74
  104. package/src/css/property-descriptors/visibility.ts +0 -25
  105. package/src/css/property-descriptors/webkit-line-clamp.ts +0 -30
  106. package/src/css/property-descriptors/webkit-text-stroke-color.ts +0 -8
  107. package/src/css/property-descriptors/webkit-text-stroke-width.ts +0 -15
  108. package/src/css/property-descriptors/word-break.ts +0 -25
  109. package/src/css/property-descriptors/writing-mode.ts +0 -37
  110. package/src/css/property-descriptors/z-index.ts +0 -27
  111. package/src/css/syntax/__tests__/tokernizer-tests.ts +0 -29
  112. package/src/css/syntax/parser.ts +0 -188
  113. package/src/css/syntax/tokenizer.ts +0 -822
  114. package/src/css/type-descriptor.ts +0 -7
  115. package/src/css/types/__tests__/color-tests.ts +0 -147
  116. package/src/css/types/__tests__/image-tests.ts +0 -239
  117. package/src/css/types/angle.ts +0 -86
  118. package/src/css/types/color-math.ts +0 -22
  119. package/src/css/types/color-spaces/a98.ts +0 -86
  120. package/src/css/types/color-spaces/p3.ts +0 -92
  121. package/src/css/types/color-spaces/pro-photo.ts +0 -87
  122. package/src/css/types/color-spaces/rec2020.ts +0 -90
  123. package/src/css/types/color-spaces/srgb.ts +0 -87
  124. package/src/css/types/color-utilities.ts +0 -452
  125. package/src/css/types/color.ts +0 -485
  126. package/src/css/types/functions/-prefix-linear-gradient.ts +0 -35
  127. package/src/css/types/functions/-prefix-radial-gradient.ts +0 -106
  128. package/src/css/types/functions/-webkit-gradient.ts +0 -69
  129. package/src/css/types/functions/__tests__/radial-gradient.ts +0 -69
  130. package/src/css/types/functions/counter.ts +0 -511
  131. package/src/css/types/functions/gradient.ts +0 -206
  132. package/src/css/types/functions/linear-gradient.ts +0 -28
  133. package/src/css/types/functions/radial-gradient.ts +0 -101
  134. package/src/css/types/image.ts +0 -120
  135. package/src/css/types/index.ts +0 -1
  136. package/src/css/types/length-percentage.ts +0 -137
  137. package/src/css/types/length.ts +0 -7
  138. package/src/css/types/time.ts +0 -20
  139. package/src/dom/__mocks__/document-cloner.ts +0 -22
  140. package/src/dom/__tests__/dom-normalizer.test.ts +0 -133
  141. package/src/dom/__tests__/element-container.test.ts +0 -129
  142. package/src/dom/document-cloner.ts +0 -929
  143. package/src/dom/dom-normalizer.ts +0 -133
  144. package/src/dom/element-container.ts +0 -75
  145. package/src/dom/elements/li-element-container.ts +0 -10
  146. package/src/dom/elements/ol-element-container.ts +0 -12
  147. package/src/dom/elements/select-element-container.ts +0 -10
  148. package/src/dom/elements/textarea-element-container.ts +0 -9
  149. package/src/dom/node-parser.ts +0 -177
  150. package/src/dom/node-type-guards.ts +0 -70
  151. package/src/dom/replaced-elements/canvas-element-container.ts +0 -15
  152. package/src/dom/replaced-elements/iframe-element-container.ts +0 -55
  153. package/src/dom/replaced-elements/image-element-container.ts +0 -16
  154. package/src/dom/replaced-elements/index.ts +0 -5
  155. package/src/dom/replaced-elements/input-element-container.ts +0 -105
  156. package/src/dom/replaced-elements/pseudo-elements.ts +0 -0
  157. package/src/dom/replaced-elements/svg-element-container.ts +0 -23
  158. package/src/dom/text-container.ts +0 -42
  159. package/src/global.d.ts +0 -19
  160. package/src/index.ts +0 -82
  161. package/src/invariant.ts +0 -5
  162. package/src/options.ts +0 -55
  163. package/src/render/__tests__/object-fit.test.ts +0 -85
  164. package/src/render/background.ts +0 -298
  165. package/src/render/bezier-curve.ts +0 -47
  166. package/src/render/border.ts +0 -165
  167. package/src/render/bound-curves.ts +0 -388
  168. package/src/render/box-sizing.ts +0 -31
  169. package/src/render/canvas/__tests__/background-renderer.test.ts +0 -72
  170. package/src/render/canvas/__tests__/border-renderer.test.ts +0 -24
  171. package/src/render/canvas/__tests__/effects-renderer.test.ts +0 -32
  172. package/src/render/canvas/__tests__/text-renderer.test.ts +0 -471
  173. package/src/render/canvas/background-renderer.ts +0 -271
  174. package/src/render/canvas/border-renderer.ts +0 -224
  175. package/src/render/canvas/canvas-path.ts +0 -31
  176. package/src/render/canvas/canvas-renderer.ts +0 -641
  177. package/src/render/canvas/effects-renderer.ts +0 -130
  178. package/src/render/canvas/foreignobject-renderer.ts +0 -53
  179. package/src/render/canvas/text-renderer.ts +0 -700
  180. package/src/render/effects.ts +0 -75
  181. package/src/render/font-metrics.ts +0 -72
  182. package/src/render/object-fit.ts +0 -100
  183. package/src/render/path.ts +0 -37
  184. package/src/render/renderer-interface.ts +0 -28
  185. package/src/render/stacking-context.ts +0 -386
  186. package/src/render/vector.ts +0 -19
@@ -1,388 +0,0 @@
1
- import { ElementContainer } from '../dom/element-container';
2
- import { getAbsoluteValue, getAbsoluteValueForTuple } from '../css/types/length-percentage';
3
- import { Vector } from './vector';
4
- import { BezierCurve } from './bezier-curve';
5
- import { Path } from './path';
6
-
7
- export class BoundCurves {
8
- readonly topLeftBorderDoubleOuterBox: Path;
9
- readonly topRightBorderDoubleOuterBox: Path;
10
- readonly bottomRightBorderDoubleOuterBox: Path;
11
- readonly bottomLeftBorderDoubleOuterBox: Path;
12
- readonly topLeftBorderDoubleInnerBox: Path;
13
- readonly topRightBorderDoubleInnerBox: Path;
14
- readonly bottomRightBorderDoubleInnerBox: Path;
15
- readonly bottomLeftBorderDoubleInnerBox: Path;
16
- readonly topLeftBorderStroke: Path;
17
- readonly topRightBorderStroke: Path;
18
- readonly bottomRightBorderStroke: Path;
19
- readonly bottomLeftBorderStroke: Path;
20
- readonly topLeftBorderBox: Path;
21
- readonly topRightBorderBox: Path;
22
- readonly bottomRightBorderBox: Path;
23
- readonly bottomLeftBorderBox: Path;
24
- readonly topLeftPaddingBox: Path;
25
- readonly topRightPaddingBox: Path;
26
- readonly bottomRightPaddingBox: Path;
27
- readonly bottomLeftPaddingBox: Path;
28
- readonly topLeftContentBox: Path;
29
- readonly topRightContentBox: Path;
30
- readonly bottomRightContentBox: Path;
31
- readonly bottomLeftContentBox: Path;
32
-
33
- constructor(element: ElementContainer) {
34
- const styles = element.styles;
35
- const bounds = element.bounds;
36
-
37
- let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);
38
- let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);
39
- let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);
40
- let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);
41
-
42
- const factors = [];
43
- factors.push((tlh + trh) / bounds.width);
44
- factors.push((blh + brh) / bounds.width);
45
- factors.push((tlv + blv) / bounds.height);
46
- factors.push((trv + brv) / bounds.height);
47
- const maxFactor = Math.max(...factors);
48
-
49
- if (maxFactor > 1) {
50
- tlh /= maxFactor;
51
- tlv /= maxFactor;
52
- trh /= maxFactor;
53
- trv /= maxFactor;
54
- brh /= maxFactor;
55
- brv /= maxFactor;
56
- blh /= maxFactor;
57
- blv /= maxFactor;
58
- }
59
-
60
- const topWidth = bounds.width - trh;
61
- const rightHeight = bounds.height - brv;
62
- const bottomWidth = bounds.width - brh;
63
- const leftHeight = bounds.height - blv;
64
-
65
- const borderTopWidth = styles.borderTopWidth;
66
- const borderRightWidth = styles.borderRightWidth;
67
- const borderBottomWidth = styles.borderBottomWidth;
68
- const borderLeftWidth = styles.borderLeftWidth;
69
-
70
- const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);
71
- const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);
72
- const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
73
- const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
74
-
75
- this.topLeftBorderDoubleOuterBox =
76
- tlh > 0 || tlv > 0
77
- ? getCurvePoints(
78
- bounds.left + borderLeftWidth / 3,
79
- bounds.top + borderTopWidth / 3,
80
- tlh - borderLeftWidth / 3,
81
- tlv - borderTopWidth / 3,
82
- CORNER.TOP_LEFT
83
- )
84
- : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);
85
- this.topRightBorderDoubleOuterBox =
86
- tlh > 0 || tlv > 0
87
- ? getCurvePoints(
88
- bounds.left + topWidth,
89
- bounds.top + borderTopWidth / 3,
90
- trh - borderRightWidth / 3,
91
- trv - borderTopWidth / 3,
92
- CORNER.TOP_RIGHT
93
- )
94
- : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);
95
- this.bottomRightBorderDoubleOuterBox =
96
- brh > 0 || brv > 0
97
- ? getCurvePoints(
98
- bounds.left + bottomWidth,
99
- bounds.top + rightHeight,
100
- brh - borderRightWidth / 3,
101
- brv - borderBottomWidth / 3,
102
- CORNER.BOTTOM_RIGHT
103
- )
104
- : new Vector(
105
- bounds.left + bounds.width - borderRightWidth / 3,
106
- bounds.top + bounds.height - borderBottomWidth / 3
107
- );
108
- this.bottomLeftBorderDoubleOuterBox =
109
- blh > 0 || blv > 0
110
- ? getCurvePoints(
111
- bounds.left + borderLeftWidth / 3,
112
- bounds.top + leftHeight,
113
- blh - borderLeftWidth / 3,
114
- blv - borderBottomWidth / 3,
115
- CORNER.BOTTOM_LEFT
116
- )
117
- : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);
118
- this.topLeftBorderDoubleInnerBox =
119
- tlh > 0 || tlv > 0
120
- ? getCurvePoints(
121
- bounds.left + (borderLeftWidth * 2) / 3,
122
- bounds.top + (borderTopWidth * 2) / 3,
123
- tlh - (borderLeftWidth * 2) / 3,
124
- tlv - (borderTopWidth * 2) / 3,
125
- CORNER.TOP_LEFT
126
- )
127
- : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);
128
- this.topRightBorderDoubleInnerBox =
129
- tlh > 0 || tlv > 0
130
- ? getCurvePoints(
131
- bounds.left + topWidth,
132
- bounds.top + (borderTopWidth * 2) / 3,
133
- trh - (borderRightWidth * 2) / 3,
134
- trv - (borderTopWidth * 2) / 3,
135
- CORNER.TOP_RIGHT
136
- )
137
- : new Vector(
138
- bounds.left + bounds.width - (borderRightWidth * 2) / 3,
139
- bounds.top + (borderTopWidth * 2) / 3
140
- );
141
- this.bottomRightBorderDoubleInnerBox =
142
- brh > 0 || brv > 0
143
- ? getCurvePoints(
144
- bounds.left + bottomWidth,
145
- bounds.top + rightHeight,
146
- brh - (borderRightWidth * 2) / 3,
147
- brv - (borderBottomWidth * 2) / 3,
148
- CORNER.BOTTOM_RIGHT
149
- )
150
- : new Vector(
151
- bounds.left + bounds.width - (borderRightWidth * 2) / 3,
152
- bounds.top + bounds.height - (borderBottomWidth * 2) / 3
153
- );
154
- this.bottomLeftBorderDoubleInnerBox =
155
- blh > 0 || blv > 0
156
- ? getCurvePoints(
157
- bounds.left + (borderLeftWidth * 2) / 3,
158
- bounds.top + leftHeight,
159
- blh - (borderLeftWidth * 2) / 3,
160
- blv - (borderBottomWidth * 2) / 3,
161
- CORNER.BOTTOM_LEFT
162
- )
163
- : new Vector(
164
- bounds.left + (borderLeftWidth * 2) / 3,
165
- bounds.top + bounds.height - (borderBottomWidth * 2) / 3
166
- );
167
- this.topLeftBorderStroke =
168
- tlh > 0 || tlv > 0
169
- ? getCurvePoints(
170
- bounds.left + borderLeftWidth / 2,
171
- bounds.top + borderTopWidth / 2,
172
- tlh - borderLeftWidth / 2,
173
- tlv - borderTopWidth / 2,
174
- CORNER.TOP_LEFT
175
- )
176
- : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);
177
- this.topRightBorderStroke =
178
- tlh > 0 || tlv > 0
179
- ? getCurvePoints(
180
- bounds.left + topWidth,
181
- bounds.top + borderTopWidth / 2,
182
- trh - borderRightWidth / 2,
183
- trv - borderTopWidth / 2,
184
- CORNER.TOP_RIGHT
185
- )
186
- : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);
187
- this.bottomRightBorderStroke =
188
- brh > 0 || brv > 0
189
- ? getCurvePoints(
190
- bounds.left + bottomWidth,
191
- bounds.top + rightHeight,
192
- brh - borderRightWidth / 2,
193
- brv - borderBottomWidth / 2,
194
- CORNER.BOTTOM_RIGHT
195
- )
196
- : new Vector(
197
- bounds.left + bounds.width - borderRightWidth / 2,
198
- bounds.top + bounds.height - borderBottomWidth / 2
199
- );
200
- this.bottomLeftBorderStroke =
201
- blh > 0 || blv > 0
202
- ? getCurvePoints(
203
- bounds.left + borderLeftWidth / 2,
204
- bounds.top + leftHeight,
205
- blh - borderLeftWidth / 2,
206
- blv - borderBottomWidth / 2,
207
- CORNER.BOTTOM_LEFT
208
- )
209
- : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);
210
- this.topLeftBorderBox =
211
- tlh > 0 || tlv > 0
212
- ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)
213
- : new Vector(bounds.left, bounds.top);
214
- this.topRightBorderBox =
215
- trh > 0 || trv > 0
216
- ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)
217
- : new Vector(bounds.left + bounds.width, bounds.top);
218
- this.bottomRightBorderBox =
219
- brh > 0 || brv > 0
220
- ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)
221
- : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);
222
- this.bottomLeftBorderBox =
223
- blh > 0 || blv > 0
224
- ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)
225
- : new Vector(bounds.left, bounds.top + bounds.height);
226
- this.topLeftPaddingBox =
227
- tlh > 0 || tlv > 0
228
- ? getCurvePoints(
229
- bounds.left + borderLeftWidth,
230
- bounds.top + borderTopWidth,
231
- Math.max(0, tlh - borderLeftWidth),
232
- Math.max(0, tlv - borderTopWidth),
233
- CORNER.TOP_LEFT
234
- )
235
- : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);
236
- this.topRightPaddingBox =
237
- trh > 0 || trv > 0
238
- ? getCurvePoints(
239
- bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),
240
- bounds.top + borderTopWidth,
241
- topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),
242
- Math.max(0, trv - borderTopWidth),
243
- CORNER.TOP_RIGHT
244
- )
245
- : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);
246
- this.bottomRightPaddingBox =
247
- brh > 0 || brv > 0
248
- ? getCurvePoints(
249
- bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),
250
- bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),
251
- Math.max(0, brh - borderRightWidth),
252
- Math.max(0, brv - borderBottomWidth),
253
- CORNER.BOTTOM_RIGHT
254
- )
255
- : new Vector(
256
- bounds.left + bounds.width - borderRightWidth,
257
- bounds.top + bounds.height - borderBottomWidth
258
- );
259
- this.bottomLeftPaddingBox =
260
- blh > 0 || blv > 0
261
- ? getCurvePoints(
262
- bounds.left + borderLeftWidth,
263
- bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),
264
- Math.max(0, blh - borderLeftWidth),
265
- Math.max(0, blv - borderBottomWidth),
266
- CORNER.BOTTOM_LEFT
267
- )
268
- : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);
269
- this.topLeftContentBox =
270
- tlh > 0 || tlv > 0
271
- ? getCurvePoints(
272
- bounds.left + borderLeftWidth + paddingLeft,
273
- bounds.top + borderTopWidth + paddingTop,
274
- Math.max(0, tlh - (borderLeftWidth + paddingLeft)),
275
- Math.max(0, tlv - (borderTopWidth + paddingTop)),
276
- CORNER.TOP_LEFT
277
- )
278
- : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);
279
- this.topRightContentBox =
280
- trh > 0 || trv > 0
281
- ? getCurvePoints(
282
- bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),
283
- bounds.top + borderTopWidth + paddingTop,
284
- topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,
285
- trv - (borderTopWidth + paddingTop),
286
- CORNER.TOP_RIGHT
287
- )
288
- : new Vector(
289
- bounds.left + bounds.width - (borderRightWidth + paddingRight),
290
- bounds.top + borderTopWidth + paddingTop
291
- );
292
- this.bottomRightContentBox =
293
- brh > 0 || brv > 0
294
- ? getCurvePoints(
295
- bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),
296
- bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),
297
- Math.max(0, brh - (borderRightWidth + paddingRight)),
298
- brv - (borderBottomWidth + paddingBottom),
299
- CORNER.BOTTOM_RIGHT
300
- )
301
- : new Vector(
302
- bounds.left + bounds.width - (borderRightWidth + paddingRight),
303
- bounds.top + bounds.height - (borderBottomWidth + paddingBottom)
304
- );
305
- this.bottomLeftContentBox =
306
- blh > 0 || blv > 0
307
- ? getCurvePoints(
308
- bounds.left + borderLeftWidth + paddingLeft,
309
- bounds.top + leftHeight,
310
- Math.max(0, blh - (borderLeftWidth + paddingLeft)),
311
- blv - (borderBottomWidth + paddingBottom),
312
- CORNER.BOTTOM_LEFT
313
- )
314
- : new Vector(
315
- bounds.left + borderLeftWidth + paddingLeft,
316
- bounds.top + bounds.height - (borderBottomWidth + paddingBottom)
317
- );
318
- }
319
- }
320
-
321
- enum CORNER {
322
- TOP_LEFT = 0,
323
- TOP_RIGHT = 1,
324
- BOTTOM_RIGHT = 2,
325
- BOTTOM_LEFT = 3
326
- }
327
-
328
- const getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {
329
- const kappa = 4 * ((Math.sqrt(2) - 1) / 3);
330
- const ox = r1 * kappa; // control point offset horizontal
331
- const oy = r2 * kappa; // control point offset vertical
332
- const xm = x + r1; // x-middle
333
- const ym = y + r2; // y-middle
334
-
335
- switch (position) {
336
- case CORNER.TOP_LEFT:
337
- return new BezierCurve(
338
- new Vector(x, ym),
339
- new Vector(x, ym - oy),
340
- new Vector(xm - ox, y),
341
- new Vector(xm, y)
342
- );
343
- case CORNER.TOP_RIGHT:
344
- return new BezierCurve(
345
- new Vector(x, y),
346
- new Vector(x + ox, y),
347
- new Vector(xm, ym - oy),
348
- new Vector(xm, ym)
349
- );
350
- case CORNER.BOTTOM_RIGHT:
351
- return new BezierCurve(
352
- new Vector(xm, y),
353
- new Vector(xm, y + oy),
354
- new Vector(x + ox, ym),
355
- new Vector(x, ym)
356
- );
357
- case CORNER.BOTTOM_LEFT:
358
- default:
359
- return new BezierCurve(
360
- new Vector(xm, ym),
361
- new Vector(xm - ox, ym),
362
- new Vector(x, y + oy),
363
- new Vector(x, y)
364
- );
365
- }
366
- };
367
-
368
- export const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {
369
- return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];
370
- };
371
-
372
- export const calculateContentBoxPath = (curves: BoundCurves): Path[] => {
373
- return [
374
- curves.topLeftContentBox,
375
- curves.topRightContentBox,
376
- curves.bottomRightContentBox,
377
- curves.bottomLeftContentBox
378
- ];
379
- };
380
-
381
- export const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {
382
- return [
383
- curves.topLeftPaddingBox,
384
- curves.topRightPaddingBox,
385
- curves.bottomRightPaddingBox,
386
- curves.bottomLeftPaddingBox
387
- ];
388
- };
@@ -1,31 +0,0 @@
1
- import { getAbsoluteValue } from '../css/types/length-percentage';
2
- import { Bounds } from '../css/layout/bounds';
3
- import { ElementContainer } from '../dom/element-container';
4
-
5
- export const paddingBox = (element: ElementContainer): Bounds => {
6
- const bounds = element.bounds;
7
- const styles = element.styles;
8
- return bounds.add(
9
- styles.borderLeftWidth,
10
- styles.borderTopWidth,
11
- -(styles.borderRightWidth + styles.borderLeftWidth),
12
- -(styles.borderTopWidth + styles.borderBottomWidth)
13
- );
14
- };
15
-
16
- export const contentBox = (element: ElementContainer): Bounds => {
17
- const styles = element.styles;
18
- const bounds = element.bounds;
19
-
20
- const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);
21
- const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);
22
- const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);
23
- const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);
24
-
25
- return bounds.add(
26
- paddingLeft + styles.borderLeftWidth,
27
- paddingTop + styles.borderTopWidth,
28
- -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),
29
- -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)
30
- );
31
- };
@@ -1,72 +0,0 @@
1
- import { ok } from 'assert';
2
- import { BackgroundRenderer, BackgroundRendererDependencies } from '../background-renderer';
3
- import { Context } from '../../../core/context';
4
- import { Bounds } from '../../../css/layout/bounds';
5
- import { Html2CanvasConfig } from '../../../config';
6
-
7
- describe('BackgroundRenderer', () => {
8
- it('should be instantiated', () => {
9
- const mockWindow = {
10
- document: {
11
- createElement: (_name: string) => {
12
- let _href = '';
13
- return {
14
- set href(value: string) {
15
- _href = value;
16
- },
17
- get href() {
18
- return _href;
19
- },
20
- get protocol() {
21
- return 'http:';
22
- },
23
- get hostname() {
24
- return 'localhost';
25
- },
26
- get port() {
27
- return '';
28
- }
29
- };
30
- }
31
- },
32
- location: { href: 'http://localhost/' }
33
- } as unknown as Window;
34
-
35
- const config = new Html2CanvasConfig({ window: mockWindow });
36
- const context = new Context(
37
- {
38
- logging: false,
39
- imageTimeout: 15000,
40
- useCORS: false,
41
- allowTaint: false
42
- },
43
- new Bounds(0, 0, 800, 600),
44
- config
45
- );
46
-
47
- const canvas = {
48
- width: 800,
49
- height: 600
50
- } as unknown as HTMLCanvasElement;
51
-
52
- const ctx = {
53
- fillStyle: '',
54
- save: () => {},
55
- restore: () => {}
56
- } as unknown as CanvasRenderingContext2D;
57
-
58
- const deps: BackgroundRendererDependencies = {
59
- ctx,
60
- context,
61
- canvas,
62
- options: {
63
- width: 800,
64
- height: 600,
65
- scale: 1
66
- }
67
- };
68
-
69
- const renderer = new BackgroundRenderer(deps);
70
- ok(renderer);
71
- });
72
- });
@@ -1,24 +0,0 @@
1
- import { ok } from 'assert';
2
- import { BorderRenderer, BorderRendererDependencies, PathCallbacks } from '../border-renderer';
3
-
4
- describe('BorderRenderer', () => {
5
- it('should be instantiated', () => {
6
- const ctx = {
7
- strokeStyle: '',
8
- save: () => {},
9
- restore: () => {}
10
- } as unknown as CanvasRenderingContext2D;
11
-
12
- const deps: BorderRendererDependencies = {
13
- ctx
14
- };
15
-
16
- const pathCallbacks: PathCallbacks = {
17
- path: () => {},
18
- formatPath: () => {}
19
- };
20
-
21
- const renderer = new BorderRenderer(deps, pathCallbacks);
22
- ok(renderer);
23
- });
24
- });
@@ -1,32 +0,0 @@
1
- import { ok, strictEqual } from 'assert';
2
- import { EffectsRenderer, EffectsRendererDependencies, EffectsPathCallback } from '../effects-renderer';
3
-
4
- describe('EffectsRenderer', () => {
5
- it('should be instantiated', () => {
6
- const ctx = {
7
- shadowOffsetX: 0,
8
- shadowOffsetY: 0,
9
- shadowBlur: 0,
10
- shadowColor: '',
11
- globalAlpha: 1,
12
- save: () => {},
13
- restore: () => {}
14
- } as unknown as CanvasRenderingContext2D;
15
-
16
- const deps: EffectsRendererDependencies = {
17
- ctx
18
- };
19
-
20
- const pathCallback: EffectsPathCallback = {
21
- path: () => {}
22
- };
23
-
24
- const renderer = new EffectsRenderer(deps, pathCallback);
25
- ok(renderer);
26
-
27
- // Test public methods exist
28
- strictEqual(typeof renderer.applyEffects, 'function');
29
- strictEqual(typeof renderer.applyEffect, 'function');
30
- strictEqual(typeof renderer.popEffect, 'function');
31
- });
32
- });