kordoc 4.24.19 → 4.24.21

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 (121) hide show
  1. package/README.md +5 -5
  2. package/dist/{-IFNBZFGR.js → -IS4RXPEZ.js} +11 -11
  3. package/dist/{chunk-2IFSM7ZE.js → chunk-3RVASM4C.js} +4 -4
  4. package/dist/{chunk-MHBJAY2T.js → chunk-4OF7DHIT.js} +4 -4
  5. package/dist/{chunk-IXCXFGYB.js → chunk-B3POEH7X.js} +2 -2
  6. package/dist/{chunk-XQJNL7TD.cjs → chunk-B5M676H3.cjs} +6 -6
  7. package/dist/{chunk-XQJNL7TD.cjs.map → chunk-B5M676H3.cjs.map} +1 -1
  8. package/dist/{chunk-XGUX3JDV.js → chunk-BMXWY36E.js} +4 -4
  9. package/dist/{chunk-DIDPIFGO.js → chunk-BNEKESI4.js} +2 -2
  10. package/dist/{chunk-UTDQAY35.js → chunk-BTBFKDPH.js} +2 -2
  11. package/dist/{chunk-OJL4V7WL.cjs → chunk-BUFGW3UJ.cjs} +25 -25
  12. package/dist/{chunk-OJL4V7WL.cjs.map → chunk-BUFGW3UJ.cjs.map} +1 -1
  13. package/dist/{chunk-Q6XWPGGB.js → chunk-BV2YG7M6.js} +2 -2
  14. package/dist/{chunk-MRFBERH2.js → chunk-CPVXUEKF.js} +2 -2
  15. package/dist/{chunk-UNTBPUY5.js → chunk-E6G4B457.js} +2 -2
  16. package/dist/{chunk-EEJKU5SD.js → chunk-F4GZFIUJ.js} +2 -2
  17. package/dist/{chunk-752MQ7LI.js → chunk-F6OHQLN7.js} +3 -3
  18. package/dist/{chunk-QQAANXHZ.js → chunk-IZN5BTCW.js} +2 -2
  19. package/dist/{chunk-RPHURU2B.cjs → chunk-L556KKBU.cjs} +79 -79
  20. package/dist/{chunk-RPHURU2B.cjs.map → chunk-L556KKBU.cjs.map} +1 -1
  21. package/dist/{chunk-TATLMLLJ.js → chunk-MGCIQ43Y.js} +3 -3
  22. package/dist/{chunk-MP6CLG5T.js → chunk-MMZUWRH6.js} +11 -11
  23. package/dist/{chunk-DCEXKPBH.js → chunk-MYDHNNPA.js} +92 -27
  24. package/dist/chunk-MYDHNNPA.js.map +1 -0
  25. package/dist/{chunk-WUU63RFU.js → chunk-N45RCYBL.js} +3 -3
  26. package/dist/{chunk-DTNNWOBN.js → chunk-NE75RO62.js} +2 -2
  27. package/dist/{chunk-OI4LVKFX.js → chunk-NRCG3ASU.js} +2 -2
  28. package/dist/{chunk-B4X2Q5MK.js → chunk-O5ZCJEZ4.js} +2 -2
  29. package/dist/{chunk-U4QSRBEV.cjs → chunk-OMGCVZ4W.cjs} +2 -2
  30. package/dist/{chunk-U4QSRBEV.cjs.map → chunk-OMGCVZ4W.cjs.map} +1 -1
  31. package/dist/{chunk-JQJYIYMJ.js → chunk-PDOWSDNM.js} +2 -2
  32. package/dist/{chunk-RQCGVE3R.js → chunk-UNYH6MTO.js} +2 -2
  33. package/dist/{chunk-4OWHKA6D.cjs → chunk-V7S36XCU.cjs} +3 -3
  34. package/dist/{chunk-4OWHKA6D.cjs.map → chunk-V7S36XCU.cjs.map} +1 -1
  35. package/dist/{chunk-X6GHZRPS.js → chunk-WQC4XWVT.js} +2 -2
  36. package/dist/{chunk-7RVG2IVX.cjs → chunk-WVZSTMCZ.cjs} +3 -3
  37. package/dist/{chunk-7RVG2IVX.cjs.map → chunk-WVZSTMCZ.cjs.map} +1 -1
  38. package/dist/{chunk-S4EPR2Q4.js → chunk-Z6ONQ63K.js} +2 -2
  39. package/dist/chunks-FYCQOIWO.js +10 -0
  40. package/dist/cli.js +30 -30
  41. package/dist/{formula-IYTV7SBF.js → formula-DHBBWQLC.js} +3 -3
  42. package/dist/{formula-WSK7DHQS.cjs → formula-G3FQTUOY.cjs} +9 -9
  43. package/dist/{formula-WSK7DHQS.cjs.map → formula-G3FQTUOY.cjs.map} +1 -1
  44. package/dist/{formula-WSFS7D7Z.js → formula-I4EA7ULD.js} +4 -4
  45. package/dist/{image-ocr-Y75JNXPZ.js → image-ocr-5YWVBRY6.js} +6 -6
  46. package/dist/{image-ocr-AVMUMNAV.js → image-ocr-QUVBGNWD.js} +9 -9
  47. package/dist/{image-ocr-LWWF4HEE.cjs → image-ocr-THUO6YRG.cjs} +17 -17
  48. package/dist/{image-ocr-LWWF4HEE.cjs.map → image-ocr-THUO6YRG.cjs.map} +1 -1
  49. package/dist/index.cjs +510 -445
  50. package/dist/index.cjs.map +1 -1
  51. package/dist/index.js +92 -27
  52. package/dist/index.js.map +1 -1
  53. package/dist/mcp.js +23 -23
  54. package/dist/{model-bundle-JOACGE6A.js → model-bundle-6RG5PO3R.js} +5 -5
  55. package/dist/{models-RTSOF7XB.js → models-CGYIGN6D.js} +5 -5
  56. package/dist/{parse-worker-v2-GHCIS7RI.js → parse-worker-v2-F5NXYBU6.js} +12 -12
  57. package/dist/{parser-4NF5BGSC.js → parser-G5QTRKII.js} +9 -9
  58. package/dist/{parser-GJWAT5YG.cjs → parser-GJ4PKW7I.cjs} +159 -159
  59. package/dist/{parser-GJWAT5YG.cjs.map → parser-GJ4PKW7I.cjs.map} +1 -1
  60. package/dist/{parser-E7VENFW7.js → parser-I2C5DUXC.js} +12 -12
  61. package/dist/pdf-ocr-LJKCUXTE.cjs +35 -0
  62. package/dist/{pdf-ocr-J74A2ZQW.cjs.map → pdf-ocr-LJKCUXTE.cjs.map} +1 -1
  63. package/dist/{pdf-ocr-CJSC4DLZ.js → pdf-ocr-TNW6YOPX.js} +6 -6
  64. package/dist/{pdf-ocr-K4MHY4KP.js → pdf-ocr-U3I74Q4O.js} +9 -9
  65. package/dist/{profile-io-LA4LFEFV.js → profile-io-5YZCFK7B.js} +3 -3
  66. package/dist/{rasterize-PZ6VCPOZ.js → rasterize-7VRHPOQX.js} +3 -3
  67. package/dist/{redact-doc-HHDDIIV7.js → redact-doc-VK6VGBK3.js} +11 -11
  68. package/dist/{render-QIWXWLYC.js → render-Y7J6DPRL.js} +7 -7
  69. package/dist/seal-4QIZ3ZNI.js +10 -0
  70. package/dist/{setup-Y6EZH34Z.js → setup-4XTUDU4X.js} +3 -3
  71. package/dist/visual-VEMQJ52W.js +21 -0
  72. package/dist/{watch-LBRW6NAG.js → watch-SPZRLTKG.js} +12 -12
  73. package/package.json +1 -1
  74. package/dist/chunk-DCEXKPBH.js.map +0 -1
  75. package/dist/chunks-7ACTVPJJ.js +0 -10
  76. package/dist/pdf-ocr-J74A2ZQW.cjs +0 -35
  77. package/dist/seal-SBA3CFCC.js +0 -10
  78. package/dist/visual-PN3PUVDG.js +0 -21
  79. /package/dist/{-IFNBZFGR.js.map → -IS4RXPEZ.js.map} +0 -0
  80. /package/dist/{chunk-2IFSM7ZE.js.map → chunk-3RVASM4C.js.map} +0 -0
  81. /package/dist/{chunk-MHBJAY2T.js.map → chunk-4OF7DHIT.js.map} +0 -0
  82. /package/dist/{chunk-IXCXFGYB.js.map → chunk-B3POEH7X.js.map} +0 -0
  83. /package/dist/{chunk-XGUX3JDV.js.map → chunk-BMXWY36E.js.map} +0 -0
  84. /package/dist/{chunk-DIDPIFGO.js.map → chunk-BNEKESI4.js.map} +0 -0
  85. /package/dist/{chunk-UTDQAY35.js.map → chunk-BTBFKDPH.js.map} +0 -0
  86. /package/dist/{chunk-Q6XWPGGB.js.map → chunk-BV2YG7M6.js.map} +0 -0
  87. /package/dist/{chunk-MRFBERH2.js.map → chunk-CPVXUEKF.js.map} +0 -0
  88. /package/dist/{chunk-UNTBPUY5.js.map → chunk-E6G4B457.js.map} +0 -0
  89. /package/dist/{chunk-EEJKU5SD.js.map → chunk-F4GZFIUJ.js.map} +0 -0
  90. /package/dist/{chunk-752MQ7LI.js.map → chunk-F6OHQLN7.js.map} +0 -0
  91. /package/dist/{chunk-QQAANXHZ.js.map → chunk-IZN5BTCW.js.map} +0 -0
  92. /package/dist/{chunk-TATLMLLJ.js.map → chunk-MGCIQ43Y.js.map} +0 -0
  93. /package/dist/{chunk-MP6CLG5T.js.map → chunk-MMZUWRH6.js.map} +0 -0
  94. /package/dist/{chunk-WUU63RFU.js.map → chunk-N45RCYBL.js.map} +0 -0
  95. /package/dist/{chunk-DTNNWOBN.js.map → chunk-NE75RO62.js.map} +0 -0
  96. /package/dist/{chunk-OI4LVKFX.js.map → chunk-NRCG3ASU.js.map} +0 -0
  97. /package/dist/{chunk-B4X2Q5MK.js.map → chunk-O5ZCJEZ4.js.map} +0 -0
  98. /package/dist/{chunk-JQJYIYMJ.js.map → chunk-PDOWSDNM.js.map} +0 -0
  99. /package/dist/{chunk-RQCGVE3R.js.map → chunk-UNYH6MTO.js.map} +0 -0
  100. /package/dist/{chunk-X6GHZRPS.js.map → chunk-WQC4XWVT.js.map} +0 -0
  101. /package/dist/{chunk-S4EPR2Q4.js.map → chunk-Z6ONQ63K.js.map} +0 -0
  102. /package/dist/{chunks-7ACTVPJJ.js.map → chunks-FYCQOIWO.js.map} +0 -0
  103. /package/dist/{formula-IYTV7SBF.js.map → formula-DHBBWQLC.js.map} +0 -0
  104. /package/dist/{formula-WSFS7D7Z.js.map → formula-I4EA7ULD.js.map} +0 -0
  105. /package/dist/{image-ocr-Y75JNXPZ.js.map → image-ocr-5YWVBRY6.js.map} +0 -0
  106. /package/dist/{image-ocr-AVMUMNAV.js.map → image-ocr-QUVBGNWD.js.map} +0 -0
  107. /package/dist/{model-bundle-JOACGE6A.js.map → model-bundle-6RG5PO3R.js.map} +0 -0
  108. /package/dist/{models-RTSOF7XB.js.map → models-CGYIGN6D.js.map} +0 -0
  109. /package/dist/{parse-worker-v2-GHCIS7RI.js.map → parse-worker-v2-F5NXYBU6.js.map} +0 -0
  110. /package/dist/{parser-4NF5BGSC.js.map → parser-G5QTRKII.js.map} +0 -0
  111. /package/dist/{parser-E7VENFW7.js.map → parser-I2C5DUXC.js.map} +0 -0
  112. /package/dist/{pdf-ocr-CJSC4DLZ.js.map → pdf-ocr-TNW6YOPX.js.map} +0 -0
  113. /package/dist/{pdf-ocr-K4MHY4KP.js.map → pdf-ocr-U3I74Q4O.js.map} +0 -0
  114. /package/dist/{profile-io-LA4LFEFV.js.map → profile-io-5YZCFK7B.js.map} +0 -0
  115. /package/dist/{rasterize-PZ6VCPOZ.js.map → rasterize-7VRHPOQX.js.map} +0 -0
  116. /package/dist/{redact-doc-HHDDIIV7.js.map → redact-doc-VK6VGBK3.js.map} +0 -0
  117. /package/dist/{render-QIWXWLYC.js.map → render-Y7J6DPRL.js.map} +0 -0
  118. /package/dist/{seal-SBA3CFCC.js.map → seal-4QIZ3ZNI.js.map} +0 -0
  119. /package/dist/{setup-Y6EZH34Z.js.map → setup-4XTUDU4X.js.map} +0 -0
  120. /package/dist/{visual-PN3PUVDG.js.map → visual-VEMQJ52W.js.map} +0 -0
  121. /package/dist/{watch-LBRW6NAG.js.map → watch-SPZRLTKG.js.map} +0 -0
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  blocksToPages,
3
3
  bmpToPng,
4
4
  inlineImagesIntoMarkdown
5
- } from "./chunk-MRFBERH2.js";
5
+ } from "./chunk-CPVXUEKF.js";
6
6
  import {
7
7
  parsePageRange
8
8
  } from "./chunk-V4BH5SRQ.js";
@@ -44,7 +44,7 @@ import {
44
44
  validateOcrOptions,
45
45
  visibleText,
46
46
  wrapScript
47
- } from "./chunk-JQJYIYMJ.js";
47
+ } from "./chunk-PDOWSDNM.js";
48
48
  import {
49
49
  KordocError,
50
50
  OPTIONAL_DEP_INSTALL_HINT,
@@ -62,7 +62,7 @@ import {
62
62
  toArrayBuffer,
63
63
  unescapeHtml,
64
64
  unzipLimitBytes
65
- } from "./chunk-RQCGVE3R.js";
65
+ } from "./chunk-UNYH6MTO.js";
66
66
 
67
67
  // src/plain-markdown.ts
68
68
  function toPlainMarkdown(md2) {
@@ -24645,7 +24645,7 @@ var MIN_SIDE = 24;
24645
24645
  async function ocrEmbeddedImages(blocks, options, warnings) {
24646
24646
  const ocr = options?.ocr;
24647
24647
  if (ocr !== true && ocr !== "force" && typeof ocr !== "function") return false;
24648
- const { parseImageDocument } = await import("./image-ocr-Y75JNXPZ.js");
24648
+ const { parseImageDocument } = await import("./image-ocr-5YWVBRY6.js");
24649
24649
  let inserted = false, unreadable = 0;
24650
24650
  let failed = null;
24651
24651
  const walk = async (list, depth) => {
@@ -53524,9 +53524,10 @@ function solveRowHeights(cells, rowCount, maxTotal = Number.POSITIVE_INFINITY, s
53524
53524
  }
53525
53525
  for (let k = 0; k < spans.length; k++) if (!done.has(k)) solve(k, false);
53526
53526
  let total = h.reduce((s, x) => s + x, 0);
53527
+ const overSz = total > maxTotal;
53527
53528
  for (const { c, rows } of [...spans].sort((a, b) => a.rows[a.rows.length - 1] - b.rows[b.rows.length - 1] || b.rows[0] - a.rows[0])) {
53528
53529
  const known = rows.reduce((s, r) => s + h[r], 0);
53529
- const add = Math.min(c.height - known, maxTotal - total);
53530
+ const add = Math.min(c.height - known, overSz && c.contentH != null && c.contentH >= c.height ? Number.POSITIVE_INFINITY : maxTotal - total);
53530
53531
  if (rows.length && add > 0) {
53531
53532
  h[rows[rows.length - 1]] += add;
53532
53533
  total += add;
@@ -55596,12 +55597,24 @@ function footNoteStories(root, paraPages, geom) {
55596
55597
  const above = num2(sp, "aboveLine", 850), below = num2(sp, "belowLine", 567), between = num2(sp, "betweenNotes", 283);
55597
55598
  const byPage = /* @__PURE__ */ new Map();
55598
55599
  for (const p of elements(root)) if (ln(p) === "p") {
55599
- const page = paraPages.get(p)?.[0] ?? 0;
55600
+ const pages = paraPages.get(p) ?? [];
55601
+ const m = pages.length > 1 ? buildPara(p) : null;
55600
55602
  for (const run of elements(p)) if (ln(run) === "run") {
55601
55603
  for (const ctrl of elements(run)) if (ln(ctrl) === "ctrl") {
55602
55604
  const fn = findChildByLocalName(ctrl, "footNote");
55603
55605
  const sub = fn && !isDeletedControl(fn) ? findChildByLocalName(fn, "subList") : null;
55604
55606
  if (!sub) continue;
55607
+ let page = pages[0] ?? 0;
55608
+ if (m) {
55609
+ const at = m.chars.findIndex((c) => c.note === fn);
55610
+ if (at >= 0) {
55611
+ let k = 0;
55612
+ m.segs.forEach((sg, i) => {
55613
+ if (sg.textpos <= at) k = i;
55614
+ });
55615
+ page = pages[k] ?? page;
55616
+ }
55617
+ }
55605
55618
  let h = 0;
55606
55619
  for (const q of elements(sub)) if (ln(q) === "p") {
55607
55620
  const lsa = findChildByLocalName(q, "linesegarray");
@@ -55713,18 +55726,30 @@ function stackedFloats(c) {
55713
55726
  }
55714
55727
  return out;
55715
55728
  }
55716
- function cellLineBoxes(c) {
55729
+ function cellLineBoxes(c, bodyH) {
55717
55730
  const out = [];
55718
55731
  let shift = 0, prevV = Number.NEGATIVE_INFINITY, prevH = 0, prevSavedEnd = 0, prevEnd = 0, part = 0;
55719
55732
  const cols = cellColumns(c.sub);
55733
+ let floatBottom = Number.NEGATIVE_INFINITY;
55734
+ let nestedCell = false;
55735
+ for (let a = c.el.parentNode; a; a = a.parentNode) if (a !== c.el && a.nodeType === 1 && ln(a) === "tc") {
55736
+ nestedCell = true;
55737
+ break;
55738
+ }
55720
55739
  for (const p of c.sub ? elements(c.sub) : []) if (ln(p) === "p") {
55721
55740
  const lsa = findChildByLocalName(p, "linesegarray");
55741
+ let first = true, pTop = 0;
55722
55742
  for (const sg of lsa ? elements(lsa) : []) if (ln(sg) === "lineseg") {
55723
55743
  const v = num2(sg, "vertpos"), hz = num2(sg, "horzpos");
55724
55744
  if ((v < prevV || v === prevV && hz <= prevH && prevSavedEnd > v) && !cols) {
55725
55745
  shift = prevEnd - v;
55726
55746
  part++;
55747
+ } else if (!nestedCell && bodyH !== void 0 && floatBottom > bodyH && first && !cols && v >= prevV && v < floatBottom - 1e3) {
55748
+ shift = prevEnd - v;
55749
+ part++;
55727
55750
  }
55751
+ if (first) pTop = prevSavedEnd > 0 && prevSavedEnd <= v ? prevSavedEnd : v;
55752
+ first = false;
55728
55753
  prevV = v;
55729
55754
  prevH = hz;
55730
55755
  prevSavedEnd = v + num2(sg, "vertsize") + num2(sg, "spacing");
@@ -55732,17 +55757,26 @@ function cellLineBoxes(c) {
55732
55757
  prevEnd = bottom + num2(sg, "spacing");
55733
55758
  out.push({ seg: sg, top, bottom, part, origin: shift });
55734
55759
  }
55760
+ floatBottom = Number.NEGATIVE_INFINITY;
55761
+ for (const run of elements(p)) if (ln(run) === "run") for (const o of elements(run)) {
55762
+ if (ln(o) !== "tbl" || (o.getAttribute("textWrap") ?? "TOP_AND_BOTTOM") !== "TOP_AND_BOTTOM") continue;
55763
+ const pos = findChildByLocalName(o, "pos");
55764
+ if (!pos || pos.getAttribute("treatAsChar") === "1" || (pos.getAttribute("vertRelTo") ?? "PARA") !== "PARA") continue;
55765
+ const om = findChildByLocalName(o, "outMargin"), vo = num2(pos, "vertOffset"), sz = num2(findChildByLocalName(o, "sz"), "height"), full = measureTableHeight(o);
55766
+ const top = pTop + (vo < 2 ** 31 ? vo : 0) + num2(om, "top");
55767
+ if (full > sz + 1e3 && (bodyH === void 0 || top + (measureTableRowHeights(o)[0] ?? 0) <= bodyH)) floatBottom = Math.max(floatBottom, top + full + num2(om, "bottom"));
55768
+ }
55735
55769
  }
55736
55770
  return out;
55737
55771
  }
55738
- function cellLines(c) {
55739
- return cellLineBoxes(c).map((b) => [b.top, b.bottom]);
55772
+ function cellLines(c, bodyH) {
55773
+ return cellLineBoxes(c, bodyH).map((b) => [b.top, b.bottom]);
55740
55774
  }
55741
- function spanPartRows(cells, rowY) {
55775
+ function spanPartRows(cells, rowY, bodyH) {
55742
55776
  const out = /* @__PURE__ */ new Set();
55743
55777
  for (const c of cells) {
55744
55778
  if (c.rs < 2) continue;
55745
- const bs = cellLineBoxes(c);
55779
+ const bs = cellLineBoxes(c, bodyH);
55746
55780
  const parts = bs.length ? bs[bs.length - 1].part : 0;
55747
55781
  let s = c.ra;
55748
55782
  for (let k = 0; k < parts; k++) {
@@ -55786,12 +55820,12 @@ function planTableRows(tbl2, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan,
55786
55820
  const st = stackedFloats(rc[0]);
55787
55821
  return st.length >= 2 && st.reduce((a, f) => a + f.h, 0) > h;
55788
55822
  });
55789
- if (slack > 0 && ty + rowY[nRows] > pageBottom && ty + rowY[nRows] <= pageBottom + slack && cells.some((c) => cellLineBoxes(c).some((b) => b.part > 0))) slack = 0;
55823
+ if (slack > 0 && ty + rowY[nRows] > pageBottom && ty + rowY[nRows] <= pageBottom + slack && cells.some((c) => cellLineBoxes(c, BODY_H).some((b) => b.part > 0))) slack = 0;
55790
55824
  if (slack > 0 && ty + rowY[nRows] > pageBottom && ty + rowY[nRows] <= pageBottom + slack) {
55791
55825
  const declared = num2(findChildByLocalName(tbl2, "sz"), "height");
55792
55826
  if (rowY.some((v, k) => k > 0 && k < nRows && Math.abs(v - declared) <= 2)) slack = 0;
55793
55827
  }
55794
- const savedParts = tbl2.getAttribute("pageBreak") === "CELL" && cells.some((c) => c.h > rowY[nRows] && cellLineBoxes(c).some((b) => b.part > 0));
55828
+ const savedParts = tbl2.getAttribute("pageBreak") === "CELL" && cells.some((c) => c.h > rowY[nRows] && cellLineBoxes(c, BODY_H).some((b) => b.part > 0));
55795
55829
  if (BODY_H <= 0 || ty + rowY[nRows] <= pageBottom + slack && !stackOver && !savedParts) return plain4();
55796
55830
  if (findChildByLocalName(tbl2, "pos")?.getAttribute("treatAsChar") === "1") {
55797
55831
  const declared = num2(findChildByLocalName(tbl2, "sz"), "height") || rowY[nRows];
@@ -55806,11 +55840,15 @@ function planTableRows(tbl2, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan,
55806
55840
  const out = [];
55807
55841
  const flows = (findChildByLocalName(tbl2, "pos")?.getAttribute("vertRelTo") ?? "PARA") === "PARA";
55808
55842
  let page = 0, y = ty, first = !flows || ty - MT < 2e3;
55843
+ if (!first && (tbl2.getAttribute("pageBreak") ?? "NONE") === "NONE") {
55844
+ const outT = num2(findChildByLocalName(tbl2, "outMargin"), "top");
55845
+ if (outT + rowY[nRows] + outB <= BODY_H) return rowH.map((h, r) => [{ page: 1, y: contMT + outT + rowY[r], h }]);
55846
+ }
55809
55847
  if (!first && coAnchoredFollower(tbl2)) {
55810
55848
  const outT = num2(findChildByLocalName(tbl2, "outMargin"), "top");
55811
55849
  if (outT + rowY[nRows] + outB <= BODY_H) return rowH.map((h, r) => [{ page: 1, y: contMT + outT + rowY[r], h }]);
55812
55850
  }
55813
- const spanStarts = cellSplit ? spanPartRows(cells, rowY) : /* @__PURE__ */ new Set();
55851
+ const spanStarts = cellSplit ? spanPartRows(cells, rowY, BODY_H) : /* @__PURE__ */ new Set();
55814
55852
  for (let r = 0; r < nRows; r++) {
55815
55853
  let h = rowH[r];
55816
55854
  const pieces = [];
@@ -55849,7 +55887,7 @@ function planTableRows(tbl2, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan,
55849
55887
  continue;
55850
55888
  }
55851
55889
  }
55852
- const boxes = splittable ? new Map(rowCells.map((c) => [c.el, cellLineBoxes(c)])) : void 0;
55890
+ const boxes = splittable ? new Map(rowCells.map((c) => [c.el, cellLineBoxes(c, BODY_H)])) : void 0;
55853
55891
  const hParts = boxes ? Math.max(0, ...[...boxes.values()].flatMap((bs) => bs.map((b) => b.part))) : 0;
55854
55892
  if (boxes && hParts > 0) {
55855
55893
  if (!first && rowCells.some((c) => {
@@ -55959,9 +55997,9 @@ function planTableRows(tbl2, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan,
55959
55997
  }
55960
55998
  if (splittable && y + h + outB > pageBottom) {
55961
55999
  const from = /* @__PURE__ */ new Map();
55962
- const lines = new Map(rowCells.map((c) => [c.el, cellLines(c)]));
56000
+ const lines = new Map(rowCells.map((c) => [c.el, cellLines(c, BODY_H)]));
55963
56001
  const sp0 = new Map(rowCells.map((c) => {
55964
- const b = cellLineBoxes(c)[0];
56002
+ const b = cellLineBoxes(c, BODY_H)[0];
55965
56003
  return [c.el, b ? num2(b.seg, "spacing") : 0];
55966
56004
  }));
55967
56005
  while (y + h + outB > pageBottom && BODY_H > rowY[hdrRows]) {
@@ -55990,7 +56028,7 @@ function planTableRows(tbl2, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan,
55990
56028
  if (allFit) {
55991
56029
  const spanCells = cells.filter((c) => c.ra === r && c.rs > 1);
55992
56030
  const spanExt = (c) => {
55993
- const bs = cellLineBoxes(c);
56031
+ const bs = cellLineBoxes(c, BODY_H);
55994
56032
  return bs.some((b) => b.part > 0) ? Math.max(...bs.filter((b) => b.part === 0).map((b) => b.bottom)) : cellContentExtent(c);
55995
56033
  };
55996
56034
  if (!first && h <= pageBottom - contTop && [...rowCells.map((c) => cellContentExtent(c) + c.marginT + c.marginB), ...spanCells.map((c) => spanExt(c) + c.marginT + c.marginB)].some((e) => e > avail)) {
@@ -57140,7 +57178,7 @@ function drawTable(tbl2, tx, ty, ctx, depth) {
57140
57178
  const span2 = plan.slice(c.ra, Math.min(c.ra + c.rs, nRows)).flat();
57141
57179
  const pages = [...new Set(span2.map((pc) => pc.page))];
57142
57180
  if (pages.length > 1) {
57143
- const bs = cellLineBoxes(c);
57181
+ const bs = cellLineBoxes(c, ctx.geom.BODY_H);
57144
57182
  const partTop = (k) => bs.find((b) => b.part === k);
57145
57183
  const groups = pages.map((pg, k) => {
57146
57184
  const on = span2.filter((pc) => pc.page === pg);
@@ -57173,7 +57211,7 @@ function drawTable(tbl2, tx, ty, ctx, depth) {
57173
57211
  ctx.page = g3.page;
57174
57212
  if (g3.pieces) {
57175
57213
  const base = g3.pieces[0].y + c.marginT;
57176
- const boxes = cellLineBoxes(c);
57214
+ const boxes = cellLineBoxes(c, ctx.geom.BODY_H);
57177
57215
  const contV = new Map(boxes.map((b) => [b.seg, b.top]));
57178
57216
  const pieceOf = (v) => Math.max(0, g3.pieces.findIndex((pc) => {
57179
57217
  const r = pc.range?.get(c.el);
@@ -57376,6 +57414,19 @@ function staleTopCache(root, BODY_H) {
57376
57414
  }
57377
57415
  return false;
57378
57416
  }
57417
+ function overrunTopCache(root, BODY_H) {
57418
+ if (BODY_H <= 0) return false;
57419
+ let over = 0;
57420
+ for (const p of elements(root)) {
57421
+ if (ln(p) !== "p") continue;
57422
+ const lsa = findChildByLocalName(p, "linesegarray");
57423
+ for (const sg of lsa ? elements(lsa) : []) if (ln(sg) === "lineseg") {
57424
+ over = num2(sg, "vertpos") > BODY_H ? over + 1 : 0;
57425
+ if (over >= 3) return true;
57426
+ }
57427
+ }
57428
+ return false;
57429
+ }
57379
57430
  function absoluteTopCache(root, ML, BODY_W) {
57380
57431
  let tot = 0, over = 0;
57381
57432
  for (const p of elements(root)) {
@@ -57393,7 +57444,7 @@ function absoluteTopCache(root, ML, BODY_W) {
57393
57444
  function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters = [], hasDeletionMarkers = true, lastSection = true) {
57394
57445
  const { PW, PH, ML, MT, BODY_W, BODY_H } = geom;
57395
57446
  if (hasDeletionMarkers) prepareDeletedRanges(root);
57396
- const degenerate = staleTopCache(root, BODY_H);
57447
+ const degenerate = staleTopCache(root, BODY_H) || overrunTopCache(root, BODY_H);
57397
57448
  if (degenerate) {
57398
57449
  for (const p of elements(root)) if (ln(p) === "p") {
57399
57450
  const lsa = findChildByLocalName(p, "linesegarray");
@@ -57401,6 +57452,19 @@ function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters
57401
57452
  }
57402
57453
  ctxBase.warnings.push("\uC870\uD310 \uCE90\uC2DC\uAC00 \uB9DE\uC9C0 \uC54A\uC544(\uCD5C\uC0C1\uC704 \uBB38\uB2E8\uC774 \uBAA8\uB450 \uAC19\uC740 \uC790\uB9AC) \uB2E4\uC2DC \uC870\uD310\uD574 \uB80C\uB354");
57403
57454
  }
57455
+ for (const tc2 of Array.from(root.getElementsByTagName("*")).filter((e) => ln(e) === "tc")) {
57456
+ const sub = findChildByLocalName(tc2, "subList");
57457
+ const paras = sub ? elements(sub).filter((q) => ln(q) === "p") : [];
57458
+ const vs = [];
57459
+ for (const q of paras) {
57460
+ const lsa = findChildByLocalName(q, "linesegarray");
57461
+ for (const sg of lsa ? elements(lsa) : []) if (ln(sg) === "lineseg") vs.push(num2(sg, "vertpos"));
57462
+ }
57463
+ if (vs.length >= 3 && (vs.every((v) => v === vs[0]) || vs.some((v, i) => i >= 2 && v === vs[i - 1] && v === vs[i - 2]))) for (const q of paras) {
57464
+ const lsa = findChildByLocalName(q, "linesegarray");
57465
+ if (lsa) q.removeChild(lsa);
57466
+ }
57467
+ }
57404
57468
  const absolute = !degenerate && absoluteTopCache(root, ML, BODY_W);
57405
57469
  if (absolute) {
57406
57470
  for (const lsa of Array.from(root.getElementsByTagName("*")).filter((e) => ln(e) === "linesegarray")) lsa.parentNode?.removeChild(lsa);
@@ -57434,7 +57498,7 @@ function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters
57434
57498
  let prevH = Number.NEGATIVE_INFINITY;
57435
57499
  let prevEnd = Number.NEGATIVE_INFINITY;
57436
57500
  let cur = 0, col = 0;
57437
- let pendingEnd = 0, pendingEndY = 0;
57501
+ let pendingEnd = 0, pendingEndY = 0, pendingTopY = -1;
57438
57502
  let lastEnd = 0, lastPage = -1;
57439
57503
  let lastSA = 0;
57440
57504
  let prevSeg;
@@ -57459,7 +57523,7 @@ function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters
57459
57523
  }
57460
57524
  if (col > 0) s.setAttribute("horzpos", String(h + Math.round(col * (colW + colGap))));
57461
57525
  } else {
57462
- if (paraFirst && pendingEnd > cur) {
57526
+ if (paraFirst && pendingEnd > cur && !(v > prevV && v < pendingTopY - 100)) {
57463
57527
  cur = v < pendingEndY - 100 ? pendingEnd + 1 : pendingEnd;
57464
57528
  pendingEnd = 0;
57465
57529
  } else {
@@ -57531,9 +57595,10 @@ function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters
57531
57595
  lastPage = pagesOf[pagesOf.length - 1];
57532
57596
  continue;
57533
57597
  }
57534
- if (span2.pages > 0 && (pagesOf[0] ?? cur) + span2.pages > pendingEnd) {
57598
+ if (span2.pages > 0 && o.el.getAttribute("pageBreak") !== "NONE" && (pagesOf[0] ?? cur) + span2.pages > pendingEnd) {
57535
57599
  pendingEnd = (pagesOf[0] ?? cur) + span2.pages;
57536
57600
  pendingEndY = span2.endY - MT;
57601
+ pendingTopY = below && voP > 0 && ty - MT < BODY_H ? ty - MT : -1;
57537
57602
  }
57538
57603
  }
57539
57604
  }
@@ -57768,7 +57833,7 @@ function renderSectionRoots(sections, input) {
57768
57833
  return pm.objs.length > 0 || pm.chars.some((c) => c.ch.trim() !== "" || !!c.ctrlText);
57769
57834
  });
57770
57835
  let lastIdx = sections.length - 1;
57771
- while (lastIdx > 0 && !hasContent(sections[lastIdx].root)) lastIdx--;
57836
+ while (lastIdx > 0 && !hasContent(sections[lastIdx].root) && !sections[lastIdx].masterPages?.length) lastIdx--;
57772
57837
  for (const [k, { root, index, masterPages, hasDeletionMarkers }] of sections.entries()) {
57773
57838
  if (k > lastIdx) break;
57774
57839
  const geom = readSectionGeom(root);
@@ -58920,7 +58985,7 @@ function scriptsOff(r, off) {
58920
58985
  }
58921
58986
  async function parseImage(buffer, options) {
58922
58987
  try {
58923
- const { parseImageDocument } = await import("./image-ocr-Y75JNXPZ.js");
58988
+ const { parseImageDocument } = await import("./image-ocr-5YWVBRY6.js");
58924
58989
  const { blocks, warnings, lines } = await parseImageDocument(buffer, options);
58925
58990
  stripScriptTags({ blocks });
58926
58991
  return {
@@ -58984,7 +59049,7 @@ async function parseHwp(buffer, options) {
58984
59049
  async function parsePdf(buffer, options) {
58985
59050
  let parsePdfDocument;
58986
59051
  try {
58987
- const mod = await import("./parser-4NF5BGSC.js");
59052
+ const mod = await import("./parser-G5QTRKII.js");
58988
59053
  parsePdfDocument = mod.parsePdfDocument;
58989
59054
  } catch {
58990
59055
  return {