kordoc 4.24.7 → 4.24.9

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 (142) hide show
  1. package/README.md +8 -9
  2. package/dist/{-GQDQXRQN.js → -6LXREJIR.js} +11 -11
  3. package/dist/{chunk-OMJPCWKS.js → chunk-2A54AIAG.js} +2 -2
  4. package/dist/{chunk-AYGMF6H5.cjs → chunk-2WWQ6NU5.cjs} +3 -3
  5. package/dist/chunk-2WWQ6NU5.cjs.map +1 -0
  6. package/dist/{chunk-7BZBMXWD.cjs → chunk-4BPHV36H.cjs} +6 -6
  7. package/dist/chunk-4BPHV36H.cjs.map +1 -0
  8. package/dist/{chunk-C4AY47C5.js → chunk-7NEBICPS.js} +2 -2
  9. package/dist/{chunk-7ICC55XY.js → chunk-A4TUSLGL.js} +2 -2
  10. package/dist/{chunk-FIS3WY5Q.js → chunk-BEPBXIKP.js} +2 -2
  11. package/dist/{chunk-E35YPWOX.js → chunk-C6QK3PY2.js} +2 -2
  12. package/dist/{chunk-MLFPEETP.js → chunk-D5S5S6OP.js} +2 -2
  13. package/dist/{chunk-JKZY6FX5.js → chunk-DF3YCAK6.js} +2 -2
  14. package/dist/{chunk-DZRXJEOF.js → chunk-EF4MEYFE.js} +3 -3
  15. package/dist/{chunk-ZQQGV7K2.js → chunk-ESSLFMY3.js} +6 -6
  16. package/dist/{chunk-BLWDQEBY.js → chunk-GINSLCL7.js} +2 -2
  17. package/dist/chunk-GS7T56RP.cjs.map +1 -1
  18. package/dist/chunk-J55UQC5H.cjs.map +1 -1
  19. package/dist/{chunk-WVZXPEHX.js → chunk-LVEY2XHM.js} +7 -5
  20. package/dist/chunk-LVEY2XHM.js.map +1 -0
  21. package/dist/{chunk-FQVWYJNM.js → chunk-MSPBBDR5.js} +2 -2
  22. package/dist/{chunk-EIGCAAVM.js → chunk-NDC4AGLX.js} +61 -16
  23. package/dist/chunk-NDC4AGLX.js.map +1 -0
  24. package/dist/{chunk-YQB3LPKQ.cjs → chunk-NSCYUL4P.cjs} +2 -2
  25. package/dist/chunk-NSCYUL4P.cjs.map +1 -0
  26. package/dist/{chunk-OPNMXBUR.js → chunk-O34AXZ4G.js} +2 -2
  27. package/dist/{chunk-EJPPVB2Y.js → chunk-R3DNJRDD.js} +2 -2
  28. package/dist/{chunk-GMKFXPEI.js → chunk-SB4VN4TR.js} +7 -5
  29. package/dist/chunk-SB4VN4TR.js.map +1 -0
  30. package/dist/{chunk-O4RQCDN2.js → chunk-SQCECEOH.js} +62 -17
  31. package/dist/chunk-SQCECEOH.js.map +1 -0
  32. package/dist/chunk-TK3FDAEE.cjs.map +1 -1
  33. package/dist/{chunk-MNG25FK4.cjs → chunk-TMHPNZ37.cjs} +222 -177
  34. package/dist/chunk-TMHPNZ37.cjs.map +1 -0
  35. package/dist/{chunk-EIUXBJZP.js → chunk-TO4T2M7R.js} +3 -3
  36. package/dist/{chunk-CG2Z6NB3.js → chunk-TY4PED6S.js} +2 -2
  37. package/dist/{chunk-VHAOAQZZ.cjs → chunk-UVMVLE3M.cjs} +3 -3
  38. package/dist/chunk-UVMVLE3M.cjs.map +1 -0
  39. package/dist/{chunk-DEDUWANG.js → chunk-VAR3NCSE.js} +151 -20
  40. package/dist/chunk-VAR3NCSE.js.map +1 -0
  41. package/dist/{chunk-N2JZGYFK.js → chunk-W6R7HH2Q.js} +4 -4
  42. package/dist/chunk-W6R7HH2Q.js.map +1 -0
  43. package/dist/{chunk-UDUEOBS5.js → chunk-WPA45TPL.js} +2 -2
  44. package/dist/{chunk-BNIXSB6D.js → chunk-YAKEEIR2.js} +2 -2
  45. package/dist/{chunk-V4PS653P.cjs → chunk-ZFM7UP72.cjs} +59 -57
  46. package/dist/chunk-ZFM7UP72.cjs.map +1 -0
  47. package/dist/chunks-L66VMJHU.js +10 -0
  48. package/dist/cli.js +30 -30
  49. package/dist/{formula-C55TRBHH.cjs → formula-3SARACGW.cjs} +9 -9
  50. package/dist/formula-3SARACGW.cjs.map +1 -0
  51. package/dist/{formula-6XLWGUCB.js → formula-MDHYCNKI.js} +4 -4
  52. package/dist/{formula-DCC5EOSX.js → formula-S7CTLTGZ.js} +3 -3
  53. package/dist/{image-ocr-EV7GVD3W.cjs → image-ocr-2T4NBJ73.cjs} +17 -17
  54. package/dist/image-ocr-2T4NBJ73.cjs.map +1 -0
  55. package/dist/{image-ocr-K3ZXDUNU.js → image-ocr-V6AQ4IAY.js} +6 -6
  56. package/dist/{image-ocr-L736MGYD.js → image-ocr-VDMEI7TD.js} +9 -9
  57. package/dist/index.cjs +826 -695
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.js +146 -15
  60. package/dist/index.js.map +1 -1
  61. package/dist/mcp.js +23 -23
  62. package/dist/{model-bundle-OOOJFMGR.js → model-bundle-HCTCHMA2.js} +5 -5
  63. package/dist/{models-ELFZII4R.js → models-NJROM7JD.js} +5 -5
  64. package/dist/page-range-QHHFTL7X.cjs.map +1 -1
  65. package/dist/{parse-worker-v2-WS35WZY5.js → parse-worker-v2-ALTGW2J3.js} +12 -12
  66. package/dist/{parser-K7Y44QHS.js → parser-6J5HFER5.js} +13 -12
  67. package/dist/parser-6J5HFER5.js.map +1 -0
  68. package/dist/{parser-X6P3JBT2.cjs → parser-L3G6ON4U.cjs} +160 -159
  69. package/dist/parser-L3G6ON4U.cjs.map +1 -0
  70. package/dist/{parser-CNRI55MG.js → parser-MY4WE64G.js} +10 -9
  71. package/dist/parser-MY4WE64G.js.map +1 -0
  72. package/dist/{pdf-ocr-QQPZLIHM.js → pdf-ocr-3VVSR4LN.js} +9 -9
  73. package/dist/{pdf-ocr-MVNHXGPS.js → pdf-ocr-HUSU2XMV.js} +6 -6
  74. package/dist/pdf-ocr-RF2SCGXD.cjs +31 -0
  75. package/dist/pdf-ocr-RF2SCGXD.cjs.map +1 -0
  76. package/dist/{profile-io-GSRLMU4D.js → profile-io-SQI3X7MD.js} +3 -3
  77. package/dist/{rasterize-3H5QKDH2.js → rasterize-BHW5UZY2.js} +3 -3
  78. package/dist/{redact-doc-TLBF7J7W.js → redact-doc-KJ6M63BP.js} +11 -11
  79. package/dist/{render-FTCOQ6WO.js → render-Z6N2GGKL.js} +7 -7
  80. package/dist/seal-PM4624BB.js +10 -0
  81. package/dist/{setup-WVZ47AKV.js → setup-MUBZ674O.js} +3 -3
  82. package/dist/visual-AV46N5ZN.js +21 -0
  83. package/dist/{watch-CA32Z7XB.js → watch-D4AUDKVN.js} +12 -12
  84. package/package.json +4 -4
  85. package/dist/chunk-7BZBMXWD.cjs.map +0 -1
  86. package/dist/chunk-AYGMF6H5.cjs.map +0 -1
  87. package/dist/chunk-DEDUWANG.js.map +0 -1
  88. package/dist/chunk-EIGCAAVM.js.map +0 -1
  89. package/dist/chunk-GMKFXPEI.js.map +0 -1
  90. package/dist/chunk-MNG25FK4.cjs.map +0 -1
  91. package/dist/chunk-N2JZGYFK.js.map +0 -1
  92. package/dist/chunk-O4RQCDN2.js.map +0 -1
  93. package/dist/chunk-V4PS653P.cjs.map +0 -1
  94. package/dist/chunk-VHAOAQZZ.cjs.map +0 -1
  95. package/dist/chunk-WVZXPEHX.js.map +0 -1
  96. package/dist/chunk-YQB3LPKQ.cjs.map +0 -1
  97. package/dist/chunks-XURCANPP.js +0 -10
  98. package/dist/formula-C55TRBHH.cjs.map +0 -1
  99. package/dist/image-ocr-EV7GVD3W.cjs.map +0 -1
  100. package/dist/parser-CNRI55MG.js.map +0 -1
  101. package/dist/parser-K7Y44QHS.js.map +0 -1
  102. package/dist/parser-X6P3JBT2.cjs.map +0 -1
  103. package/dist/pdf-ocr-S6GSKOPT.cjs +0 -31
  104. package/dist/pdf-ocr-S6GSKOPT.cjs.map +0 -1
  105. package/dist/seal-74R7KDRY.js +0 -10
  106. package/dist/visual-TEW6Y3NH.js +0 -21
  107. /package/dist/{-GQDQXRQN.js.map → -6LXREJIR.js.map} +0 -0
  108. /package/dist/{chunk-OMJPCWKS.js.map → chunk-2A54AIAG.js.map} +0 -0
  109. /package/dist/{chunk-C4AY47C5.js.map → chunk-7NEBICPS.js.map} +0 -0
  110. /package/dist/{chunk-7ICC55XY.js.map → chunk-A4TUSLGL.js.map} +0 -0
  111. /package/dist/{chunk-FIS3WY5Q.js.map → chunk-BEPBXIKP.js.map} +0 -0
  112. /package/dist/{chunk-E35YPWOX.js.map → chunk-C6QK3PY2.js.map} +0 -0
  113. /package/dist/{chunk-MLFPEETP.js.map → chunk-D5S5S6OP.js.map} +0 -0
  114. /package/dist/{chunk-JKZY6FX5.js.map → chunk-DF3YCAK6.js.map} +0 -0
  115. /package/dist/{chunk-DZRXJEOF.js.map → chunk-EF4MEYFE.js.map} +0 -0
  116. /package/dist/{chunk-ZQQGV7K2.js.map → chunk-ESSLFMY3.js.map} +0 -0
  117. /package/dist/{chunk-BLWDQEBY.js.map → chunk-GINSLCL7.js.map} +0 -0
  118. /package/dist/{chunk-FQVWYJNM.js.map → chunk-MSPBBDR5.js.map} +0 -0
  119. /package/dist/{chunk-OPNMXBUR.js.map → chunk-O34AXZ4G.js.map} +0 -0
  120. /package/dist/{chunk-EJPPVB2Y.js.map → chunk-R3DNJRDD.js.map} +0 -0
  121. /package/dist/{chunk-EIUXBJZP.js.map → chunk-TO4T2M7R.js.map} +0 -0
  122. /package/dist/{chunk-CG2Z6NB3.js.map → chunk-TY4PED6S.js.map} +0 -0
  123. /package/dist/{chunk-UDUEOBS5.js.map → chunk-WPA45TPL.js.map} +0 -0
  124. /package/dist/{chunk-BNIXSB6D.js.map → chunk-YAKEEIR2.js.map} +0 -0
  125. /package/dist/{chunks-XURCANPP.js.map → chunks-L66VMJHU.js.map} +0 -0
  126. /package/dist/{formula-6XLWGUCB.js.map → formula-MDHYCNKI.js.map} +0 -0
  127. /package/dist/{formula-DCC5EOSX.js.map → formula-S7CTLTGZ.js.map} +0 -0
  128. /package/dist/{image-ocr-K3ZXDUNU.js.map → image-ocr-V6AQ4IAY.js.map} +0 -0
  129. /package/dist/{image-ocr-L736MGYD.js.map → image-ocr-VDMEI7TD.js.map} +0 -0
  130. /package/dist/{model-bundle-OOOJFMGR.js.map → model-bundle-HCTCHMA2.js.map} +0 -0
  131. /package/dist/{models-ELFZII4R.js.map → models-NJROM7JD.js.map} +0 -0
  132. /package/dist/{parse-worker-v2-WS35WZY5.js.map → parse-worker-v2-ALTGW2J3.js.map} +0 -0
  133. /package/dist/{pdf-ocr-MVNHXGPS.js.map → pdf-ocr-3VVSR4LN.js.map} +0 -0
  134. /package/dist/{pdf-ocr-QQPZLIHM.js.map → pdf-ocr-HUSU2XMV.js.map} +0 -0
  135. /package/dist/{profile-io-GSRLMU4D.js.map → profile-io-SQI3X7MD.js.map} +0 -0
  136. /package/dist/{rasterize-3H5QKDH2.js.map → rasterize-BHW5UZY2.js.map} +0 -0
  137. /package/dist/{redact-doc-TLBF7J7W.js.map → redact-doc-KJ6M63BP.js.map} +0 -0
  138. /package/dist/{render-FTCOQ6WO.js.map → render-Z6N2GGKL.js.map} +0 -0
  139. /package/dist/{seal-74R7KDRY.js.map → seal-PM4624BB.js.map} +0 -0
  140. /package/dist/{setup-WVZ47AKV.js.map → setup-MUBZ674O.js.map} +0 -0
  141. /package/dist/{visual-TEW6Y3NH.js.map → visual-AV46N5ZN.js.map} +0 -0
  142. /package/dist/{watch-CA32Z7XB.js.map → watch-D4AUDKVN.js.map} +0 -0
@@ -6,11 +6,11 @@ import {
6
6
  HEADING_RATIO_H3,
7
7
  tidyScriptTags,
8
8
  toTex
9
- } from "./chunk-BLWDQEBY.js";
9
+ } from "./chunk-GINSLCL7.js";
10
10
  import {
11
11
  safeMax,
12
12
  safeMin
13
- } from "./chunk-E35YPWOX.js";
13
+ } from "./chunk-C6QK3PY2.js";
14
14
 
15
15
  // src/ocr/line-split.ts
16
16
  function grayCrop(rgba, pageW, box) {
@@ -482,6 +482,7 @@ function gapGlyphs(gray, w, h, ink) {
482
482
  if (ch >= bh * 0.9 && cw <= bh * 0.15) continue;
483
483
  const others = comps.filter((o) => o !== c && inBand(o) && !(o.x0 >= c.x0 && o.x1 <= c.x1 && o.y0 >= c.y0 && o.y1 <= c.y1));
484
484
  const apart = !others.some((o) => o.x0 < c.x1 + 1 && o.x1 > c.x0 - 1);
485
+ const abut = !apart && ch >= bh * 0.3 && ch <= bh * 0.65 && !others.some((o) => o.x0 < c.x1 && o.x1 > c.x0);
485
486
  const nearlyApart = !others.some((o) => Math.min(o.x1, c.x1) - Math.max(o.x0, c.x0) > 2);
486
487
  const spans = [], runs = [];
487
488
  let n = 0;
@@ -506,18 +507,11 @@ function gapGlyphs(gray, w, h, ink) {
506
507
  const speck = Math.max(3, bh * 0.08);
507
508
  const dot = ch <= bh * 0.25 && cw <= bh * 0.25 && ch >= speck && cw >= speck && cw >= ch * 0.6 && cw <= ch * 1.6;
508
509
  const small = ch <= bh * 0.25 && cw <= bh * 0.25 && ch >= 2 && cw >= 2 && cw >= ch * 0.6 && cw <= ch * 1.6 && fill >= 0.6 && cy >= 0.3 && cy <= 0.7;
509
- if (!apart && !(nearlyApart && ch >= bh * 0.6)) {
510
+ if (!apart && !abut && !(nearlyApart && ch >= bh * 0.6)) {
510
511
  if (small) out.push({ x0: c.x0, x1: c.x1, mark: "\xB7" });
511
512
  continue;
512
513
  }
513
- if (!apart) {
514
- } else if (dot && fill >= 0.6 && cy >= 0.3 && cy <= 0.7) mark = "\xB7";
515
- else if (small) mark = "\xB7";
516
- else if (dot && fill >= 0.6 && cy >= 0.75 && cw >= ch * 0.8) mark = ".";
517
- else if (ch <= bh * 0.4 && ch >= speck && cw >= ch * 0.75 && cw <= ch * 1.3 && fill < 0.6 && runs[ch >> 1] === 2 && cy >= 0.6) mark = "\u3002";
518
- else if (ch <= bh * 0.15 && cw >= ch * 2 && cw <= bh * 0.8 && fill >= 0.7 && cy >= 0.35 && cy <= 0.75) mark = "-";
519
- else if (ch >= bh * 0.5 && cw >= ch * 0.9 && cw <= ch * 1.4 && fill >= 0.4 && runs.every((r) => r <= 1) && top <= 0.4 && bottom >= 0.8) mark = "\u25B2";
520
- else if (ch >= bh * 0.3 && ch <= bh * 0.65 && fill < 0.5) {
514
+ const bracket = () => {
521
515
  const stem = (from, to) => {
522
516
  let sx = 0, k = 0;
523
517
  for (let y = from; y < to; y++) for (let x = c.x0; x < c.x1; x++) if (label[y * w + x] === c.id) {
@@ -526,9 +520,21 @@ function gapGlyphs(gray, w, h, ink) {
526
520
  }
527
521
  return k ? sx / k / cw : 0.5;
528
522
  };
529
- if (c.y0 <= bandT + bh * 0.15 && top >= 0.7 && bottom <= 0.5 && stem(c.y0 + band, c.y1) <= 0.35) mark = "\u300C";
530
- else if (c.y1 >= bandB - bh * 0.15 && bottom >= 0.7 && top <= 0.5 && stem(c.y0, c.y1 - band) >= 0.65) mark = "\u300D";
531
- } else if (ch >= charH * 0.6 && cw >= ch * 0.8 && cw <= ch * 1.25 && fill < 0.5 && top >= 0.8 && bottom >= 0.8 && runs[ch >> 1] === 2) mark = ch <= charH * 0.92 ? "\u25A1" : "\u25A1\0";
523
+ if (c.y0 <= bandT + bh * 0.15 && top >= 0.7 && bottom <= 0.5 && stem(c.y0 + band, c.y1) <= 0.35) return "\u300C";
524
+ if (c.y1 >= bandB - bh * 0.15 && bottom >= 0.7 && top <= 0.5 && stem(c.y0, c.y1 - band) >= 0.65) return "\u300D";
525
+ return null;
526
+ };
527
+ if (!apart && !abut) {
528
+ } else if (abut) {
529
+ if (fill < 0.5) mark = bracket();
530
+ } else if (dot && fill >= 0.6 && cy >= 0.3 && cy <= 0.7) mark = "\xB7";
531
+ else if (small) mark = "\xB7";
532
+ else if (dot && fill >= 0.6 && cy >= 0.75 && cw >= ch * 0.8) mark = ".";
533
+ else if (ch <= bh * 0.4 && ch >= speck && cw >= ch * 0.75 && cw <= ch * 1.3 && fill < 0.6 && runs[ch >> 1] === 2 && cy >= 0.6) mark = "\u3002";
534
+ else if (ch <= bh * 0.15 && cw >= ch * 2 && cw <= bh * 0.8 && fill >= 0.7 && cy >= 0.35 && cy <= 0.75) mark = "-";
535
+ else if (ch >= bh * 0.5 && cw >= ch * 0.9 && cw <= ch * 1.4 && fill >= 0.4 && runs.every((r) => r <= 1) && top <= 0.4 && bottom >= 0.8) mark = "\u25B2";
536
+ else if (ch >= bh * 0.3 && ch <= bh * 0.65 && fill < 0.5) mark = bracket();
537
+ else if (ch >= charH * 0.6 && cw >= ch * 0.8 && cw <= ch * 1.25 && fill < 0.5 && top >= 0.8 && bottom >= 0.8 && runs[ch >> 1] === 2) mark = ch <= charH * 0.92 ? "\u25A1" : "\u25A1\0";
532
538
  if (!mark && ch >= bh * 0.6 && cw >= ch * 0.25 && cw <= ch * 0.7 && fill <= 0.4 && runs.every((r) => r <= 1)) {
533
539
  const mx = (y) => {
534
540
  let sx = 0, k = 0;
@@ -598,6 +604,34 @@ function dashRatio(gray, w, h, ink, cx) {
598
604
  const dash = comps.filter((c) => c.y1 - c.y0 <= bh * 0.25 && c.x1 - c.x0 >= (c.y1 - c.y0) * 2 && Math.abs((c.x0 + c.x1) / 2 - cx) <= bh * 0.6).sort((a, b) => Math.abs((a.x0 + a.x1) / 2 - cx) - Math.abs((b.x0 + b.x1) / 2 - cx))[0];
599
605
  return dash ? (dash.x1 - dash.x0) / bh : null;
600
606
  }
607
+ function leadingRing(gray, w, h, ink, firstX) {
608
+ if (firstX < h * 0.8) return false;
609
+ const isInk = (v) => ink.darkInk ? v <= ink.threshold : v > ink.threshold;
610
+ let left = -1;
611
+ for (let x = 0; x < w && left < 0; x++) for (let y = 0; y < h; y++) if (isInk(gray[y * w + x])) {
612
+ left = x;
613
+ break;
614
+ }
615
+ if (left < 0 || ringBullet(gray, w, h, ink, left + h * 0.25) !== "\u25CB") return false;
616
+ const colInk = (x) => {
617
+ for (let y = 0; y < h; y++) if (isInk(gray[y * w + x])) return true;
618
+ return false;
619
+ };
620
+ let right = left;
621
+ while (right + 1 < w && colInk(right + 1)) right++;
622
+ let top = h, bottom = -1;
623
+ for (let y = 0; y < h; y++) for (let x = left; x <= right; x++) if (isInk(gray[y * w + x])) {
624
+ top = Math.min(top, y);
625
+ bottom = Math.max(bottom, y);
626
+ break;
627
+ }
628
+ const cw = right - left + 1, ch = bottom - top + 1, kx = Math.max(1, Math.round(cw * 0.1)), ky = Math.max(1, Math.round(ch * 0.1));
629
+ const corner = (x0, y0) => {
630
+ for (let y = y0; y < y0 + ky; y++) for (let x = x0; x < x0 + kx; x++) if (isInk(gray[y * w + x])) return true;
631
+ return false;
632
+ };
633
+ return !corner(left, top) && !corner(right + 1 - kx, top) && !corner(left, bottom + 1 - ky) && !corner(right + 1 - kx, bottom + 1 - ky);
634
+ }
601
635
  function discAt(gray, w, h, ink, cx) {
602
636
  const { comps, label } = components(gray, w, h, ink);
603
637
  let charH = 0;
@@ -1873,7 +1907,17 @@ function dropHeadBandClipGrids(clipGrids, lineGrids) {
1873
1907
  if (clipGrids.length === 0 || lineGrids.length === 0) return clipGrids;
1874
1908
  const near2 = (a, b) => Math.abs(a - b) <= SHADE_CLIP_TOL;
1875
1909
  const overlaps = (a, b) => Math.min(a.x2, b.x2) > Math.max(a.x1, b.x1) && Math.min(a.y2, b.y2) > Math.max(a.y1, b.y1);
1876
- return clipGrids.filter((c) => c.clipParent || !c.cells?.length || !lineGrids.some((l) => l.rowYs.length > c.rowYs.length && l.colXs.length === c.colXs.length && c.colXs.every((x, k) => near2(x, l.colXs[k])) && c.rowYs.every((y, k) => near2(y, l.rowYs[k])) && !clipGrids.some((o) => o !== c && overlaps(o.bbox, l.bbox))));
1910
+ const kept = clipGrids.filter((c) => c.clipParent || !c.cells?.length || !lineGrids.some((l) => l.rowYs.length > c.rowYs.length && l.colXs.length === c.colXs.length && c.colXs.every((x, k) => near2(x, l.colXs[k])) && c.rowYs.every((y, k) => near2(y, l.rowYs[k])) && !clipGrids.some((o) => o !== c && overlaps(o.bbox, l.bbox))));
1911
+ return kept.filter((c) => !lineGrids.some((l) => headBandTiles(kept, l, near2, overlaps).includes(c)));
1912
+ }
1913
+ function headBandTiles(clips, l, near2, overlaps) {
1914
+ const onRow = (y) => l.rowYs.some((r) => near2(r, y));
1915
+ const band = clips.filter((c) => !c.clipParent && c.cells?.length && near2(c.bbox.y2, l.bbox.y2) && c.bbox.y1 > l.bbox.y1 + SHADE_CLIP_TOL && c.bbox.x1 >= l.bbox.x1 - SHADE_CLIP_TOL && c.bbox.x2 <= l.bbox.x2 + SHADE_CLIP_TOL && c.rowYs.every(onRow)).sort((a, b) => a.bbox.x1 - b.bbox.x1);
1916
+ if (band.length < 2 || !near2(band[0].bbox.x1, l.bbox.x1) || !near2(band[band.length - 1].bbox.x2, l.bbox.x2)) return [];
1917
+ if (band.some((c, k) => k > 0 && c.bbox.x1 > band[k - 1].bbox.x2 + SHADE_CLIP_TOL)) return [];
1918
+ const bottom = Math.min(...band.map((c) => c.bbox.y1));
1919
+ const body = { ...l.bbox, y2: bottom };
1920
+ return clips.some((o) => !band.includes(o) && overlaps(o.bbox, body)) ? [] : band;
1877
1921
  }
1878
1922
  function enforceMinWidth(colXs, minWidth, narrowRuns = true) {
1879
1923
  if (colXs.length <= 2) return colXs;
@@ -9988,6 +10032,7 @@ export {
9988
10032
  gapGlyphs,
9989
10033
  ringBullet,
9990
10034
  dashRatio,
10035
+ leadingRing,
9991
10036
  discAt,
9992
10037
  serifOne,
9993
10038
  starRun,
@@ -10050,4 +10095,4 @@ export {
10050
10095
  UNRULED_REGION_TABLES,
10051
10096
  mergeOcrImageRegions
10052
10097
  };
10053
- //# sourceMappingURL=chunk-EIGCAAVM.js.map
10098
+ //# sourceMappingURL=chunk-NDC4AGLX.js.map