html2canvas-pro 2.0.0 → 2.0.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 (31) hide show
  1. package/dist/html2canvas-pro.esm.js +524 -91
  2. package/dist/html2canvas-pro.esm.js.map +1 -1
  3. package/dist/html2canvas-pro.js +524 -91
  4. package/dist/html2canvas-pro.js.map +1 -1
  5. package/dist/html2canvas-pro.min.js +5 -5
  6. package/dist/lib/css/index.js +2 -0
  7. package/dist/lib/css/index.js.map +1 -1
  8. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js +273 -0
  9. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js.map +1 -0
  10. package/dist/lib/css/property-descriptors/clip-path.js +190 -0
  11. package/dist/lib/css/property-descriptors/clip-path.js.map +1 -0
  12. package/dist/lib/dom/dom-normalizer.js +57 -21
  13. package/dist/lib/dom/dom-normalizer.js.map +1 -1
  14. package/dist/lib/render/canvas/__tests__/text-renderer.test.js +283 -36
  15. package/dist/lib/render/canvas/__tests__/text-renderer.test.js.map +1 -1
  16. package/dist/lib/render/canvas/effects-renderer.js +11 -6
  17. package/dist/lib/render/canvas/effects-renderer.js.map +1 -1
  18. package/dist/lib/render/canvas/text-renderer.js +131 -64
  19. package/dist/lib/render/canvas/text-renderer.js.map +1 -1
  20. package/dist/lib/render/effects.js +17 -1
  21. package/dist/lib/render/effects.js.map +1 -1
  22. package/dist/lib/render/stacking-context.js +131 -0
  23. package/dist/lib/render/stacking-context.js.map +1 -1
  24. package/dist/types/css/index.d.ts +2 -0
  25. package/dist/types/css/property-descriptors/__tests__/clip-path.test.d.ts +1 -0
  26. package/dist/types/css/property-descriptors/clip-path.d.ts +62 -0
  27. package/dist/types/dom/dom-normalizer.d.ts +30 -11
  28. package/dist/types/render/canvas/effects-renderer.d.ts +2 -1
  29. package/dist/types/render/canvas/text-renderer.d.ts +20 -2
  30. package/dist/types/render/effects.d.ts +15 -1
  31. package/package.json +1 -1
@@ -12,12 +12,29 @@
12
12
  * - Font styles
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.TextRenderer = void 0;
15
+ exports.TextRenderer = exports.hasCJKCharacters = void 0;
16
16
  const text_1 = require("../../css/layout/text");
17
17
  const color_utilities_1 = require("../../css/types/color-utilities");
18
18
  const parser_1 = require("../../css/syntax/parser");
19
19
  // iOS font fix - see https://github.com/niklasvh/html2canvas/pull/2645
20
20
  const iOSBrokenFonts = ['-apple-system', 'system-ui'];
21
+ /**
22
+ * Detect CJK (Chinese, Japanese, Korean) characters in a string.
23
+ * CJK characters use the ideographic baseline in browsers, which differs
24
+ * from the alphabetic baseline used for Latin script.
25
+ *
26
+ * Covers:
27
+ * U+2E80–U+2FFF CJK Radicals Supplement, Kangxi Radicals
28
+ * U+3000–U+30FF CJK Symbols & Punctuation (。、「」…), Hiragana, Katakana
29
+ * U+3400–U+4DBF CJK Extension A
30
+ * U+4E00–U+9FFF CJK Unified Ideographs (most common Chinese/Japanese/Korean)
31
+ * U+AC00–U+D7AF Hangul Syllables
32
+ * U+F900–U+FAFF CJK Compatibility Ideographs
33
+ * U+FF01–U+FFEF Halfwidth and Fullwidth Forms (A B 1 2 ! ? etc.)
34
+ */
35
+ const CJK_CHAR_REGEX = /[\u2E80-\u2FFF\u3000-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uAC00-\uD7AF\uF900-\uFAFF\uFF01-\uFFEF]/;
36
+ const hasCJKCharacters = (text) => CJK_CHAR_REGEX.test(text);
37
+ exports.hasCJKCharacters = hasCJKCharacters;
21
38
  /**
22
39
  * Detect iOS version from user agent
23
40
  * Returns null if not iOS or version cannot be determined
@@ -75,21 +92,50 @@ class TextRenderer {
75
92
  this.options = deps.options;
76
93
  }
77
94
  /**
78
- * Render text with letter spacing
79
- * Public method used by list rendering
95
+ * Iterate grapheme clusters one-by-one, applying correct letter-spacing and
96
+ * per-script baseline for each character.
97
+ *
98
+ * Issue #73: When letter-spacing is non-zero, text must be rendered character by
99
+ * character. This helper centralises two fixes applied during that iteration:
100
+ * 1. Add `letterSpacing` to each character's advance width (was previously
101
+ * omitted, causing characters to render without any spacing).
102
+ * 2. Switch to the ideographic baseline for CJK glyphs so their vertical
103
+ * position matches how browsers lay them out in the DOM.
104
+ *
105
+ * The `renderFn` callback receives (letter, x, y) and performs the actual draw
106
+ * call (fillText or strokeText), allowing fill and stroke paths to share one
107
+ * implementation.
108
+ */
109
+ iterateLettersWithLetterSpacing(text, letterSpacing, baseline, renderFn) {
110
+ const letters = (0, text_1.segmentGraphemes)(text.text);
111
+ const y = text.bounds.top + baseline;
112
+ let left = text.bounds.left;
113
+ for (const letter of letters) {
114
+ if ((0, exports.hasCJKCharacters)(letter)) {
115
+ const savedBaseline = this.ctx.textBaseline;
116
+ this.ctx.textBaseline = 'ideographic';
117
+ renderFn(letter, left, y);
118
+ this.ctx.textBaseline = savedBaseline;
119
+ }
120
+ else {
121
+ renderFn(letter, left, y);
122
+ }
123
+ left += this.ctx.measureText(letter).width + letterSpacing;
124
+ }
125
+ }
126
+ /**
127
+ * Render text with letter-spacing applied (fill pass).
128
+ * When letterSpacing is 0 the whole string is drawn in one call; otherwise each
129
+ * grapheme is drawn individually so spacing and CJK baseline are applied correctly.
80
130
  */
81
131
  renderTextWithLetterSpacing(text, letterSpacing, baseline) {
82
132
  if (letterSpacing === 0) {
83
- // Use alphabetic baseline for consistent text positioning across browsers
84
- // Issue #129: text.bounds.top + text.bounds.height causes text to render too low
85
133
  this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);
86
134
  }
87
135
  else {
88
- const letters = (0, text_1.segmentGraphemes)(text.text);
89
- letters.reduce((left, letter) => {
90
- this.ctx.fillText(letter, left, text.bounds.top + baseline);
91
- return left + this.ctx.measureText(letter).width;
92
- }, text.bounds.left);
136
+ this.iterateLettersWithLetterSpacing(text, letterSpacing, baseline, (letter, x, y) => {
137
+ this.ctx.fillText(letter, x, y);
138
+ });
93
139
  }
94
140
  }
95
141
  /**
@@ -107,8 +153,17 @@ class TextRenderer {
107
153
  if (styles.webkitTextStrokeWidth && textBound.text.trim().length) {
108
154
  this.ctx.strokeStyle = (0, color_utilities_1.asString)(styles.webkitTextStrokeColor);
109
155
  this.ctx.lineWidth = styles.webkitTextStrokeWidth;
110
- this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';
111
- this.renderTextWithLetterSpacing(textBound, styles.letterSpacing, styles.fontSize.number);
156
+ this.ctx.lineJoin =
157
+ typeof window !== 'undefined' && !!window.chrome ? 'miter' : 'round';
158
+ if (styles.letterSpacing === 0) {
159
+ this.ctx.strokeText(textBound.text, textBound.bounds.left, textBound.bounds.top + styles.fontSize.number);
160
+ }
161
+ else {
162
+ this.iterateLettersWithLetterSpacing(textBound, styles.letterSpacing, styles.fontSize.number, (letter, x, y) => this.ctx.strokeText(letter, x, y));
163
+ }
164
+ this.ctx.strokeStyle = '';
165
+ this.ctx.lineWidth = 0;
166
+ this.ctx.lineJoin = 'miter';
112
167
  }
113
168
  break;
114
169
  }
@@ -218,26 +273,47 @@ class TextRenderer {
218
273
  }
219
274
  // Helper method to truncate text and add ellipsis if needed
220
275
  truncateTextWithEllipsis(text, maxWidth, letterSpacing) {
221
- const ellipsis = '...';
276
+ // Use the Unicode ellipsis character (U+2026) whose width the browser measures
277
+ // as a single glyph, matching native text-overflow behaviour more closely.
278
+ const ellipsis = '\u2026';
222
279
  const ellipsisWidth = this.ctx.measureText(ellipsis).width;
280
+ // Segment into grapheme clusters so multi-byte characters (emoji, composed
281
+ // sequences) are never split mid-character.
282
+ const graphemes = (0, text_1.segmentGraphemes)(text);
223
283
  if (letterSpacing === 0) {
224
- let truncated = text;
225
- while (this.ctx.measureText(truncated).width + ellipsisWidth > maxWidth && truncated.length > 0) {
226
- truncated = truncated.slice(0, -1);
284
+ // Measure the whole candidate string for accuracy: the browser applies
285
+ // kerning and ligatures when rendering multiple glyphs together, so
286
+ // measuring them as one string is more precise than summing individual widths.
287
+ // Binary search reduces measurements from O(n) to O(log n).
288
+ const fits = (n) => this.ctx.measureText(graphemes.slice(0, n).join('')).width + ellipsisWidth <= maxWidth;
289
+ let lo = 0;
290
+ let hi = graphemes.length;
291
+ while (lo < hi) {
292
+ const mid = (lo + hi + 1) >> 1;
293
+ if (fits(mid)) {
294
+ lo = mid;
295
+ }
296
+ else {
297
+ hi = mid - 1;
298
+ }
227
299
  }
228
- return truncated + ellipsis;
300
+ return graphemes.slice(0, lo).join('') + ellipsis;
229
301
  }
230
302
  else {
231
- const letters = (0, text_1.segmentGraphemes)(text);
232
303
  let width = ellipsisWidth;
233
- let result = [];
234
- for (const letter of letters) {
235
- const letterWidth = this.ctx.measureText(letter).width + letterSpacing;
236
- if (width + letterWidth > maxWidth) {
304
+ const result = [];
305
+ for (const letter of graphemes) {
306
+ const glyphWidth = this.ctx.measureText(letter).width;
307
+ // Check against glyph width only (no trailing spacing): letter-spacing
308
+ // is applied *between* characters, not after the final glyph. Using
309
+ // `glyphWidth + letterSpacing` would incorrectly discard letters that
310
+ // fit as the last character before the ellipsis.
311
+ if (width + glyphWidth > maxWidth) {
237
312
  break;
238
313
  }
239
314
  result.push(letter);
240
- width += letterWidth;
315
+ // Accumulate glyph + inter-character spacing for the *next* iteration.
316
+ width += glyphWidth + letterSpacing;
241
317
  }
242
318
  return result.join('') + ellipsis;
243
319
  }
@@ -313,6 +389,8 @@ class TextRenderer {
313
389
  const firstBound = lastLine[0];
314
390
  const availableWidth = containerBounds.width - (firstBound.bounds.left - containerBounds.left);
315
391
  const truncatedText = this.truncateTextWithEllipsis(lastLineText, availableWidth, styles.letterSpacing);
392
+ // Build TextBounds once; reused for fill and stroke without re-allocating.
393
+ const truncatedBounds = new text_1.TextBounds(truncatedText, firstBound.bounds);
316
394
  paintOrder.forEach((paintOrderLayer) => {
317
395
  switch (paintOrderLayer) {
318
396
  case 0 /* PAINT_ORDER_LAYER.FILL */:
@@ -321,28 +399,24 @@ class TextRenderer {
321
399
  this.ctx.fillText(truncatedText, firstBound.bounds.left, firstBound.bounds.top + styles.fontSize.number);
322
400
  }
323
401
  else {
324
- const letters = (0, text_1.segmentGraphemes)(truncatedText);
325
- letters.reduce((left, letter) => {
326
- this.ctx.fillText(letter, left, firstBound.bounds.top + styles.fontSize.number);
327
- return left + this.ctx.measureText(letter).width + styles.letterSpacing;
328
- }, firstBound.bounds.left);
402
+ this.iterateLettersWithLetterSpacing(truncatedBounds, styles.letterSpacing, styles.fontSize.number, (letter, x, y) => this.ctx.fillText(letter, x, y));
329
403
  }
330
404
  break;
331
405
  case 1 /* PAINT_ORDER_LAYER.STROKE */:
332
406
  if (styles.webkitTextStrokeWidth && truncatedText.trim().length) {
333
407
  this.ctx.strokeStyle = (0, color_utilities_1.asString)(styles.webkitTextStrokeColor);
334
408
  this.ctx.lineWidth = styles.webkitTextStrokeWidth;
335
- this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';
409
+ this.ctx.lineJoin =
410
+ typeof window !== 'undefined' && !!window.chrome ? 'miter' : 'round';
336
411
  if (styles.letterSpacing === 0) {
337
412
  this.ctx.strokeText(truncatedText, firstBound.bounds.left, firstBound.bounds.top + styles.fontSize.number);
338
413
  }
339
414
  else {
340
- const letters = (0, text_1.segmentGraphemes)(truncatedText);
341
- letters.reduce((left, letter) => {
342
- this.ctx.strokeText(letter, left, firstBound.bounds.top + styles.fontSize.number);
343
- return left + this.ctx.measureText(letter).width + styles.letterSpacing;
344
- }, firstBound.bounds.left);
415
+ this.iterateLettersWithLetterSpacing(truncatedBounds, styles.letterSpacing, styles.fontSize.number, (letter, x, y) => this.ctx.strokeText(letter, x, y));
345
416
  }
417
+ this.ctx.strokeStyle = '';
418
+ this.ctx.lineWidth = 0;
419
+ this.ctx.lineJoin = 'miter';
346
420
  }
347
421
  break;
348
422
  }
@@ -386,19 +460,18 @@ class TextRenderer {
386
460
  // If ellipsis is needed, render the truncated text once
387
461
  if (needsEllipsis) {
388
462
  const firstBound = text.textBounds[0];
463
+ // Build TextBounds once; reused across paint layers and every shadow pass
464
+ // to avoid repeated allocation inside forEach callbacks.
465
+ const truncatedBounds = new text_1.TextBounds(truncatedText, firstBound.bounds);
389
466
  paintOrder.forEach((paintOrderLayer) => {
390
467
  switch (paintOrderLayer) {
391
- case 0 /* PAINT_ORDER_LAYER.FILL */:
468
+ case 0 /* PAINT_ORDER_LAYER.FILL */: {
392
469
  this.ctx.fillStyle = (0, color_utilities_1.asString)(styles.color);
393
470
  if (styles.letterSpacing === 0) {
394
471
  this.ctx.fillText(truncatedText, firstBound.bounds.left, firstBound.bounds.top + styles.fontSize.number);
395
472
  }
396
473
  else {
397
- const letters = (0, text_1.segmentGraphemes)(truncatedText);
398
- letters.reduce((left, letter) => {
399
- this.ctx.fillText(letter, left, firstBound.bounds.top + styles.fontSize.number);
400
- return left + this.ctx.measureText(letter).width + styles.letterSpacing;
401
- }, firstBound.bounds.left);
474
+ this.iterateLettersWithLetterSpacing(truncatedBounds, styles.letterSpacing, styles.fontSize.number, (letter, x, y) => this.ctx.fillText(letter, x, y));
402
475
  }
403
476
  const textShadows = styles.textShadow;
404
477
  if (textShadows.length && truncatedText.trim().length) {
@@ -414,11 +487,7 @@ class TextRenderer {
414
487
  this.ctx.fillText(truncatedText, firstBound.bounds.left, firstBound.bounds.top + styles.fontSize.number);
415
488
  }
416
489
  else {
417
- const letters = (0, text_1.segmentGraphemes)(truncatedText);
418
- letters.reduce((left, letter) => {
419
- this.ctx.fillText(letter, left, firstBound.bounds.top + styles.fontSize.number);
420
- return left + this.ctx.measureText(letter).width + styles.letterSpacing;
421
- }, firstBound.bounds.left);
490
+ this.iterateLettersWithLetterSpacing(truncatedBounds, styles.letterSpacing, styles.fontSize.number, (letter, x, y) => this.ctx.fillText(letter, x, y));
422
491
  }
423
492
  });
424
493
  this.ctx.shadowColor = '';
@@ -427,21 +496,22 @@ class TextRenderer {
427
496
  this.ctx.shadowBlur = 0;
428
497
  }
429
498
  break;
499
+ }
430
500
  case 1 /* PAINT_ORDER_LAYER.STROKE */:
431
501
  if (styles.webkitTextStrokeWidth && truncatedText.trim().length) {
432
502
  this.ctx.strokeStyle = (0, color_utilities_1.asString)(styles.webkitTextStrokeColor);
433
503
  this.ctx.lineWidth = styles.webkitTextStrokeWidth;
434
- this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';
504
+ this.ctx.lineJoin =
505
+ typeof window !== 'undefined' && !!window.chrome ? 'miter' : 'round';
435
506
  if (styles.letterSpacing === 0) {
436
507
  this.ctx.strokeText(truncatedText, firstBound.bounds.left, firstBound.bounds.top + styles.fontSize.number);
437
508
  }
438
509
  else {
439
- const letters = (0, text_1.segmentGraphemes)(truncatedText);
440
- letters.reduce((left, letter) => {
441
- this.ctx.strokeText(letter, left, firstBound.bounds.top + styles.fontSize.number);
442
- return left + this.ctx.measureText(letter).width + styles.letterSpacing;
443
- }, firstBound.bounds.left);
510
+ this.iterateLettersWithLetterSpacing(truncatedBounds, styles.letterSpacing, styles.fontSize.number, (letter, x, y) => this.ctx.strokeText(letter, x, y));
444
511
  }
512
+ this.ctx.strokeStyle = '';
513
+ this.ctx.lineWidth = 0;
514
+ this.ctx.lineJoin = 'miter';
445
515
  }
446
516
  break;
447
517
  }
@@ -452,7 +522,7 @@ class TextRenderer {
452
522
  text.textBounds.forEach((text) => {
453
523
  paintOrder.forEach((paintOrderLayer) => {
454
524
  switch (paintOrderLayer) {
455
- case 0 /* PAINT_ORDER_LAYER.FILL */:
525
+ case 0 /* PAINT_ORDER_LAYER.FILL */: {
456
526
  this.ctx.fillStyle = (0, color_utilities_1.asString)(styles.color);
457
527
  this.renderTextWithLetterSpacing(text, styles.letterSpacing, styles.fontSize.number);
458
528
  const textShadows = styles.textShadow;
@@ -476,29 +546,26 @@ class TextRenderer {
476
546
  this.renderTextDecoration(text.bounds, styles);
477
547
  }
478
548
  break;
479
- case 1 /* PAINT_ORDER_LAYER.STROKE */:
549
+ }
550
+ case 1 /* PAINT_ORDER_LAYER.STROKE */: {
480
551
  if (styles.webkitTextStrokeWidth && text.text.trim().length) {
481
552
  this.ctx.strokeStyle = (0, color_utilities_1.asString)(styles.webkitTextStrokeColor);
482
553
  this.ctx.lineWidth = styles.webkitTextStrokeWidth;
483
- this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';
484
- // Issue #110: Use baseline (fontSize) for consistent positioning with fill
485
- // Previously used text.bounds.height which caused stroke to render too low
554
+ this.ctx.lineJoin =
555
+ typeof window !== 'undefined' && !!window.chrome ? 'miter' : 'round';
486
556
  const baseline = styles.fontSize.number;
487
557
  if (styles.letterSpacing === 0) {
488
558
  this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);
489
559
  }
490
560
  else {
491
- const letters = (0, text_1.segmentGraphemes)(text.text);
492
- letters.reduce((left, letter) => {
493
- this.ctx.strokeText(letter, left, text.bounds.top + baseline);
494
- return left + this.ctx.measureText(letter).width;
495
- }, text.bounds.left);
561
+ this.iterateLettersWithLetterSpacing(text, styles.letterSpacing, baseline, (letter, x, y) => this.ctx.strokeText(letter, x, y));
496
562
  }
563
+ this.ctx.strokeStyle = '';
564
+ this.ctx.lineWidth = 0;
565
+ this.ctx.lineJoin = 'miter';
497
566
  }
498
- this.ctx.strokeStyle = '';
499
- this.ctx.lineWidth = 0;
500
- this.ctx.lineJoin = 'miter';
501
567
  break;
568
+ }
502
569
  }
503
570
  });
504
571
  });
@@ -1 +1 @@
1
- {"version":3,"file":"text-renderer.js","sourceRoot":"","sources":["../../../../src/render/canvas/text-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-renderer.js","sourceRoot":"","sources":["../../../../src/render/canvas/text-renderer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isOpacityEffect = exports.isClipEffect = exports.isTransformEffect = exports.OpacityEffect = exports.ClipEffect = exports.TransformEffect = void 0;
3
+ exports.isClipPathEffect = exports.isOpacityEffect = exports.isClipEffect = exports.isTransformEffect = exports.ClipPathEffect = exports.OpacityEffect = exports.ClipEffect = exports.TransformEffect = void 0;
4
4
  class TransformEffect {
5
5
  constructor(offsetX, offsetY, matrix) {
6
6
  this.offsetX = offsetX;
@@ -27,10 +27,26 @@ class OpacityEffect {
27
27
  }
28
28
  }
29
29
  exports.OpacityEffect = OpacityEffect;
30
+ /**
31
+ * Clips the element and all its descendants to an arbitrary canvas-drawn shape.
32
+ * The `applyClip` callback is responsible for calling beginPath, the shape
33
+ * operations, and ctx.clip() — giving each shape type full control over how
34
+ * the path is constructed (arc, ellipse, lineTo, Path2D, etc.).
35
+ */
36
+ class ClipPathEffect {
37
+ constructor(applyClip) {
38
+ this.applyClip = applyClip;
39
+ this.type = 3 /* EffectType.CLIP_PATH */;
40
+ this.target = 2 /* EffectTarget.BACKGROUND_BORDERS */ | 4 /* EffectTarget.CONTENT */;
41
+ }
42
+ }
43
+ exports.ClipPathEffect = ClipPathEffect;
30
44
  const isTransformEffect = (effect) => effect.type === 0 /* EffectType.TRANSFORM */;
31
45
  exports.isTransformEffect = isTransformEffect;
32
46
  const isClipEffect = (effect) => effect.type === 1 /* EffectType.CLIP */;
33
47
  exports.isClipEffect = isClipEffect;
34
48
  const isOpacityEffect = (effect) => effect.type === 2 /* EffectType.OPACITY */;
35
49
  exports.isOpacityEffect = isOpacityEffect;
50
+ const isClipPathEffect = (effect) => effect.type === 3 /* EffectType.CLIP_PATH */;
51
+ exports.isClipPathEffect = isClipPathEffect;
36
52
  //# sourceMappingURL=effects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/render/effects.ts"],"names":[],"mappings":";;;AAmBA,MAAa,eAAe;IAIxB,YACa,OAAe,EACf,OAAe,EACf,MAAc;QAFd,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QANlB,SAAI,gCAAoC;QACxC,WAAM,GAAW,sEAAsD,CAAC;IAM9E,CAAC;CACP;AATD,0CASC;AAED,MAAa,UAAU;IAGnB,YACa,IAAY,EACZ,MAAoB;QADpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAc;QAJxB,SAAI,2BAA+B;IAKzC,CAAC;CACP;AAPD,gCAOC;AAED,MAAa,aAAa;IAItB,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAH3B,SAAI,8BAAkC;QACtC,WAAM,GAAW,sEAAsD,CAAC;IAE1C,CAAC;CAC3C;AALD,sCAKC;AAEM,MAAM,iBAAiB,GAAG,CAAC,MAAsB,EAA6B,EAAE,CACnF,MAAM,CAAC,IAAI,iCAAyB,CAAC;AAD5B,QAAA,iBAAiB,qBACW;AAClC,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAwB,EAAE,CAAC,MAAM,CAAC,IAAI,4BAAoB,CAAC;AAAjG,QAAA,YAAY,gBAAqF;AACvG,MAAM,eAAe,GAAG,CAAC,MAAsB,EAA2B,EAAE,CAAC,MAAM,CAAC,IAAI,+BAAuB,CAAC;AAA1G,QAAA,eAAe,mBAA2F"}
1
+ {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/render/effects.ts"],"names":[],"mappings":";;;AAoBA,MAAa,eAAe;IAIxB,YACa,OAAe,EACf,OAAe,EACf,MAAc;QAFd,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QANlB,SAAI,gCAAoC;QACxC,WAAM,GAAW,sEAAsD,CAAC;IAM9E,CAAC;CACP;AATD,0CASC;AAED,MAAa,UAAU;IAGnB,YACa,IAAY,EACZ,MAAoB;QADpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAc;QAJxB,SAAI,2BAA+B;IAKzC,CAAC;CACP;AAPD,gCAOC;AAED,MAAa,aAAa;IAItB,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAH3B,SAAI,8BAAkC;QACtC,WAAM,GAAW,sEAAsD,CAAC;IAE1C,CAAC;CAC3C;AALD,sCAKC;AAED;;;;;GAKG;AACH,MAAa,cAAc;IAIvB,YAAqB,SAAkD;QAAlD,cAAS,GAAT,SAAS,CAAyC;QAH9D,SAAI,gCAAoC;QACxC,WAAM,GAAW,sEAAsD,CAAC;IAEP,CAAC;CAC9E;AALD,wCAKC;AAEM,MAAM,iBAAiB,GAAG,CAAC,MAAsB,EAA6B,EAAE,CACnF,MAAM,CAAC,IAAI,iCAAyB,CAAC;AAD5B,QAAA,iBAAiB,qBACW;AAClC,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAwB,EAAE,CAAC,MAAM,CAAC,IAAI,4BAAoB,CAAC;AAAjG,QAAA,YAAY,gBAAqF;AACvG,MAAM,eAAe,GAAG,CAAC,MAAsB,EAA2B,EAAE,CAAC,MAAM,CAAC,IAAI,+BAAuB,CAAC;AAA1G,QAAA,eAAe,mBAA2F;AAChH,MAAM,gBAAgB,GAAG,CAAC,MAAsB,EAA4B,EAAE,CACjF,MAAM,CAAC,IAAI,iCAAyB,CAAC;AAD5B,QAAA,gBAAgB,oBACY"}
@@ -61,6 +61,12 @@ class ElementPaint {
61
61
  this.effects.push(new effects_1.ClipEffect(paddingBox, 4 /* EffectTarget.CONTENT */));
62
62
  }
63
63
  }
64
+ if (this.container.styles.clipPath.type !== 0 /* CLIP_PATH_TYPE.NONE */) {
65
+ const clipPathEffect = buildClipPathEffect(this.container.styles.clipPath, this.container.bounds);
66
+ if (clipPathEffect) {
67
+ this.effects.push(clipPathEffect);
68
+ }
69
+ }
64
70
  }
65
71
  getEffects(target) {
66
72
  let inFlow = [2 /* POSITION.ABSOLUTE */, 3 /* POSITION.FIXED */].indexOf(this.container.styles.position) === -1;
@@ -88,6 +94,131 @@ class ElementPaint {
88
94
  }
89
95
  }
90
96
  exports.ElementPaint = ElementPaint;
97
+ /**
98
+ * Resolve a `closest-side` or `farthest-side` shape-radius keyword to pixels
99
+ * for a single axis. Used by both `circle()` (per-axis) and `ellipse()`.
100
+ *
101
+ * @param r - The ShapeRadius (keyword or length-percentage).
102
+ * @param center - Absolute center coordinate on this axis (cx or cy).
103
+ * @param start - Absolute start of the reference box on this axis.
104
+ * @param end - Absolute end of the reference box on this axis.
105
+ * @param dimRef - Reference dimension for resolving a length-percentage value.
106
+ */
107
+ const resolveAxisRadius = (r, center, start, end, dimRef) => {
108
+ if (r === 'closest-side')
109
+ return Math.min(center - start, end - center);
110
+ if (r === 'farthest-side')
111
+ return Math.max(center - start, end - center);
112
+ return (0, length_percentage_1.getAbsoluteValue)(r, dimRef);
113
+ };
114
+ /**
115
+ * Convert a parsed ClipPathValue + element bounds into a ClipPathEffect whose
116
+ * `applyClip` callback draws the clip shape directly onto the canvas context.
117
+ *
118
+ * All coordinates are computed in page-absolute space at construction time so
119
+ * the callback itself is allocation-free and executes synchronously.
120
+ */
121
+ const buildClipPathEffect = (clipPath, bounds) => {
122
+ const { left: bLeft, top: bTop, width: bWidth, height: bHeight } = bounds;
123
+ switch (clipPath.type) {
124
+ case 1 /* CLIP_PATH_TYPE.INSET */: {
125
+ const iLeft = (0, length_percentage_1.getAbsoluteValue)(clipPath.left, bWidth);
126
+ const iTop = (0, length_percentage_1.getAbsoluteValue)(clipPath.top, bHeight);
127
+ const x = bLeft + iLeft;
128
+ const y = bTop + iTop;
129
+ // Clamp to zero: per CSS spec, overlapping insets produce an empty shape.
130
+ const w = Math.max(0, bWidth - iLeft - (0, length_percentage_1.getAbsoluteValue)(clipPath.right, bWidth));
131
+ const h = Math.max(0, bHeight - iTop - (0, length_percentage_1.getAbsoluteValue)(clipPath.bottom, bHeight));
132
+ return new effects_1.ClipPathEffect((ctx) => {
133
+ ctx.beginPath();
134
+ ctx.rect(x, y, w, h);
135
+ ctx.clip();
136
+ });
137
+ }
138
+ case 2 /* CLIP_PATH_TYPE.CIRCLE */: {
139
+ const cx = bLeft + (0, length_percentage_1.getAbsoluteValue)(clipPath.cx, bWidth);
140
+ const cy = bTop + (0, length_percentage_1.getAbsoluteValue)(clipPath.cy, bHeight);
141
+ let r;
142
+ if (clipPath.radius === 'closest-side') {
143
+ r = Math.min(cx - bLeft, cy - bTop, bLeft + bWidth - cx, bTop + bHeight - cy);
144
+ }
145
+ else if (clipPath.radius === 'farthest-side') {
146
+ r = Math.max(cx - bLeft, cy - bTop, bLeft + bWidth - cx, bTop + bHeight - cy);
147
+ }
148
+ else {
149
+ // Per CSS spec, percentage is relative to sqrt(w² + h²) / sqrt(2).
150
+ r = (0, length_percentage_1.getAbsoluteValue)(clipPath.radius, Math.sqrt(bWidth * bWidth + bHeight * bHeight) / Math.SQRT2);
151
+ }
152
+ return new effects_1.ClipPathEffect((ctx) => {
153
+ ctx.beginPath();
154
+ ctx.arc(cx, cy, Math.max(0, r), 0, Math.PI * 2);
155
+ ctx.clip();
156
+ });
157
+ }
158
+ case 3 /* CLIP_PATH_TYPE.ELLIPSE */: {
159
+ const cx = bLeft + (0, length_percentage_1.getAbsoluteValue)(clipPath.cx, bWidth);
160
+ const cy = bTop + (0, length_percentage_1.getAbsoluteValue)(clipPath.cy, bHeight);
161
+ const rx = resolveAxisRadius(clipPath.rx, cx, bLeft, bLeft + bWidth, bWidth);
162
+ const ry = resolveAxisRadius(clipPath.ry, cy, bTop, bTop + bHeight, bHeight);
163
+ return new effects_1.ClipPathEffect((ctx) => {
164
+ ctx.beginPath();
165
+ ctx.ellipse(cx, cy, Math.max(0, rx), Math.max(0, ry), 0, 0, Math.PI * 2);
166
+ ctx.clip();
167
+ });
168
+ }
169
+ case 4 /* CLIP_PATH_TYPE.POLYGON */: {
170
+ // Pre-compute all vertices in page-absolute coordinates.
171
+ const absPoints = clipPath.points.map(([px, py]) => [bLeft + (0, length_percentage_1.getAbsoluteValue)(px, bWidth), bTop + (0, length_percentage_1.getAbsoluteValue)(py, bHeight)]);
172
+ return new effects_1.ClipPathEffect((ctx) => {
173
+ ctx.beginPath();
174
+ if (absPoints.length > 0) {
175
+ ctx.moveTo(absPoints[0][0], absPoints[0][1]);
176
+ for (let i = 1; i < absPoints.length; i++) {
177
+ ctx.lineTo(absPoints[i][0], absPoints[i][1]);
178
+ }
179
+ ctx.closePath();
180
+ }
181
+ // Calling clip() with an empty path (zero points) is intentional:
182
+ // it clips the entire region to nothing, which is the correct
183
+ // behaviour for a degenerate polygon() per the CSS spec.
184
+ ctx.clip();
185
+ });
186
+ }
187
+ case 5 /* CLIP_PATH_TYPE.PATH */: {
188
+ // path() coordinates are in the element's local space (0,0 = element top-left).
189
+ // We temporarily translate the canvas origin to the element's position, clip
190
+ // with the Path2D, then restore only the transform matrix (not the clipping
191
+ // region) via setTransform so the clip persists for the enclosing
192
+ // ctx.save() / ctx.restore() pair managed by EffectsRenderer.
193
+ //
194
+ // When the element also has a CSS transform, that transform was already applied
195
+ // by a preceding TransformEffect, so the path coordinates end up correctly in
196
+ // the element's transformed local space — matching browser behaviour.
197
+ const { d } = clipPath;
198
+ return new effects_1.ClipPathEffect((ctx) => {
199
+ try {
200
+ const savedTransform = ctx.getTransform();
201
+ ctx.translate(bLeft, bTop);
202
+ ctx.clip(new Path2D(d));
203
+ ctx.setTransform(savedTransform);
204
+ }
205
+ catch (_e) {
206
+ // Path2D or getTransform/setTransform not supported in this environment.
207
+ }
208
+ });
209
+ }
210
+ case 0 /* CLIP_PATH_TYPE.NONE */:
211
+ return null;
212
+ default: {
213
+ // Exhaustiveness guard: if a new CLIP_PATH_TYPE is added in the future
214
+ // without a corresponding case above, TypeScript will raise a compile-time
215
+ // error here rather than silently falling through.
216
+ const _exhaustive = clipPath;
217
+ void _exhaustive;
218
+ return null;
219
+ }
220
+ }
221
+ };
91
222
  const parseStackTree = (parent, stackingContext, realStackingContext, listItems) => {
92
223
  parent.container.elements.forEach((child) => {
93
224
  const treatAsRealStackingContext = (0, bitwise_1.contains)(child.flags, 4 /* FLAGS.CREATES_REAL_STACKING_CONTEXT */);