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
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  parse
4
- } from "./chunk-MP6CLG5T.js";
4
+ } from "./chunk-MMZUWRH6.js";
5
5
  import {
6
6
  classifyError,
7
7
  sanitizeError,
8
8
  toArrayBuffer
9
- } from "./chunk-X6GHZRPS.js";
9
+ } from "./chunk-WQC4XWVT.js";
10
10
 
11
11
  // src/cli/worker-parse.ts
12
12
  import { readFileSync, statSync } from "fs";
@@ -26,4 +26,4 @@ async function parseWorkerFile(absPath, options) {
26
26
  export {
27
27
  parseWorkerFile
28
28
  };
29
- //# sourceMappingURL=chunk-TATLMLLJ.js.map
29
+ //# sourceMappingURL=chunk-MGCIQ43Y.js.map
@@ -51,10 +51,10 @@ import {
51
51
  resolveParaHeading,
52
52
  simulateWrap,
53
53
  takeTocLeaders
54
- } from "./chunk-DCEXKPBH.js";
54
+ } from "./chunk-MYDHNNPA.js";
55
55
  import {
56
56
  blocksToPages
57
- } from "./chunk-UTDQAY35.js";
57
+ } from "./chunk-BTBFKDPH.js";
58
58
  import {
59
59
  bmpToPng,
60
60
  inlineImagesIntoMarkdown
@@ -76,7 +76,7 @@ import {
76
76
  tidyScriptTags,
77
77
  unframeLayoutTables,
78
78
  wrapScript
79
- } from "./chunk-EEJKU5SD.js";
79
+ } from "./chunk-F4GZFIUJ.js";
80
80
  import {
81
81
  MAX_COLS,
82
82
  MAX_ROWS,
@@ -100,7 +100,7 @@ import {
100
100
  noteTableHtml,
101
101
  sanitizeText,
102
102
  visibleText
103
- } from "./chunk-IXCXFGYB.js";
103
+ } from "./chunk-B3POEH7X.js";
104
104
  import {
105
105
  ANNOTATION_BLANK_RE,
106
106
  ValueCursor,
@@ -133,7 +133,7 @@ import {
133
133
  resolveUnmatched,
134
134
  scanInlineSegments,
135
135
  scanSectionXml
136
- } from "./chunk-WUU63RFU.js";
136
+ } from "./chunk-N45RCYBL.js";
137
137
  import {
138
138
  MAX_DECOMPRESS_SIZE,
139
139
  MAX_XML_DEPTH,
@@ -150,7 +150,7 @@ import {
150
150
  localName,
151
151
  rawTextContent,
152
152
  readZipEntry
153
- } from "./chunk-QQAANXHZ.js";
153
+ } from "./chunk-IZN5BTCW.js";
154
154
  import {
155
155
  KordocError,
156
156
  VERSION,
@@ -167,7 +167,7 @@ import {
167
167
  toArrayBuffer,
168
168
  unescapeHtml,
169
169
  unzipLimitBytes
170
- } from "./chunk-X6GHZRPS.js";
170
+ } from "./chunk-WQC4XWVT.js";
171
171
 
172
172
  // src/table/visual.ts
173
173
  import { readFile as readFile2 } from "fs/promises";
@@ -19351,7 +19351,7 @@ var MIN_SIDE = 24;
19351
19351
  async function ocrEmbeddedImages(blocks, options, warnings) {
19352
19352
  const ocr = options?.ocr;
19353
19353
  if (ocr !== true && ocr !== "force" && typeof ocr !== "function") return false;
19354
- const { parseImageDocument } = await import("./image-ocr-AVMUMNAV.js");
19354
+ const { parseImageDocument } = await import("./image-ocr-QUVBGNWD.js");
19355
19355
  let inserted = false, unreadable = 0;
19356
19356
  let failed = null;
19357
19357
  const walk = async (list, depth) => {
@@ -34072,7 +34072,7 @@ function scriptsOff(r, off) {
34072
34072
  }
34073
34073
  async function parseImage(buffer, options) {
34074
34074
  try {
34075
- const { parseImageDocument } = await import("./image-ocr-AVMUMNAV.js");
34075
+ const { parseImageDocument } = await import("./image-ocr-QUVBGNWD.js");
34076
34076
  const { blocks, warnings, lines } = await parseImageDocument(buffer, options);
34077
34077
  stripScriptTags({ blocks });
34078
34078
  return {
@@ -34136,7 +34136,7 @@ async function parseHwp(buffer, options) {
34136
34136
  async function parsePdf(buffer, options) {
34137
34137
  let parsePdfDocument;
34138
34138
  try {
34139
- const mod = await import("./parser-E7VENFW7.js");
34139
+ const mod = await import("./parser-I2C5DUXC.js");
34140
34140
  parsePdfDocument = mod.parsePdfDocument;
34141
34141
  } catch {
34142
34142
  return {
@@ -34375,4 +34375,4 @@ export {
34375
34375
  parseHwpml,
34376
34376
  fillForm
34377
34377
  };
34378
- //# sourceMappingURL=chunk-MP6CLG5T.js.map
34378
+ //# sourceMappingURL=chunk-MMZUWRH6.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  loadSharp,
4
4
  rasterizePageSvg
5
- } from "./chunk-OI4LVKFX.js";
5
+ } from "./chunk-NRCG3ASU.js";
6
6
  import {
7
7
  inlineImagesIntoMarkdown
8
8
  } from "./chunk-VKVDMH7X.js";
@@ -16,7 +16,7 @@ import {
16
16
  HEADING_RATIO_H3,
17
17
  tidyScriptTags,
18
18
  unframeLayoutTables
19
- } from "./chunk-EEJKU5SD.js";
19
+ } from "./chunk-F4GZFIUJ.js";
20
20
  import {
21
21
  MAX_COLS,
22
22
  MAX_ROWS,
@@ -33,7 +33,7 @@ import {
33
33
  mapPuaText,
34
34
  markNonLayoutTable,
35
35
  romanNumeral
36
- } from "./chunk-IXCXFGYB.js";
36
+ } from "./chunk-B3POEH7X.js";
37
37
  import {
38
38
  DEFAULT_CHAR,
39
39
  DEFAULT_PARA_GEOM,
@@ -47,7 +47,7 @@ import {
47
47
  hwpxAppMajor,
48
48
  parseRenderStyles,
49
49
  readZipEntry
50
- } from "./chunk-QQAANXHZ.js";
50
+ } from "./chunk-IZN5BTCW.js";
51
51
  import {
52
52
  KordocError,
53
53
  compareSectionPaths,
@@ -56,7 +56,7 @@ import {
56
56
  sanitizeHref,
57
57
  stripDtd,
58
58
  toArrayBuffer
59
- } from "./chunk-X6GHZRPS.js";
59
+ } from "./chunk-WQC4XWVT.js";
60
60
 
61
61
  // src/render/svg-render.ts
62
62
  import JSZip from "jszip";
@@ -177,9 +177,10 @@ function solveRowHeights(cells, rowCount, maxTotal = Number.POSITIVE_INFINITY, s
177
177
  }
178
178
  for (let k = 0; k < spans.length; k++) if (!done.has(k)) solve(k, false);
179
179
  let total = h.reduce((s, x) => s + x, 0);
180
+ const overSz = total > maxTotal;
180
181
  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])) {
181
182
  const known = rows.reduce((s, r) => s + h[r], 0);
182
- const add = Math.min(c.height - known, maxTotal - total);
183
+ const add = Math.min(c.height - known, overSz && c.contentH != null && c.contentH >= c.height ? Number.POSITIVE_INFINITY : maxTotal - total);
183
184
  if (rows.length && add > 0) {
184
185
  h[rows[rows.length - 1]] += add;
185
186
  total += add;
@@ -13252,12 +13253,24 @@ function footNoteStories(root, paraPages, geom) {
13252
13253
  const above = num(sp, "aboveLine", 850), below = num(sp, "belowLine", 567), between = num(sp, "betweenNotes", 283);
13253
13254
  const byPage = /* @__PURE__ */ new Map();
13254
13255
  for (const p of elements(root)) if (ln(p) === "p") {
13255
- const page = paraPages.get(p)?.[0] ?? 0;
13256
+ const pages = paraPages.get(p) ?? [];
13257
+ const m = pages.length > 1 ? buildPara(p) : null;
13256
13258
  for (const run of elements(p)) if (ln(run) === "run") {
13257
13259
  for (const ctrl of elements(run)) if (ln(ctrl) === "ctrl") {
13258
13260
  const fn = findChildByLocalName(ctrl, "footNote");
13259
13261
  const sub = fn && !isDeletedControl(fn) ? findChildByLocalName(fn, "subList") : null;
13260
13262
  if (!sub) continue;
13263
+ let page = pages[0] ?? 0;
13264
+ if (m) {
13265
+ const at = m.chars.findIndex((c) => c.note === fn);
13266
+ if (at >= 0) {
13267
+ let k = 0;
13268
+ m.segs.forEach((sg, i) => {
13269
+ if (sg.textpos <= at) k = i;
13270
+ });
13271
+ page = pages[k] ?? page;
13272
+ }
13273
+ }
13261
13274
  let h = 0;
13262
13275
  for (const q of elements(sub)) if (ln(q) === "p") {
13263
13276
  const lsa = findChildByLocalName(q, "linesegarray");
@@ -13369,18 +13382,30 @@ function stackedFloats(c) {
13369
13382
  }
13370
13383
  return out;
13371
13384
  }
13372
- function cellLineBoxes(c) {
13385
+ function cellLineBoxes(c, bodyH) {
13373
13386
  const out = [];
13374
13387
  let shift = 0, prevV = Number.NEGATIVE_INFINITY, prevH = 0, prevSavedEnd = 0, prevEnd = 0, part = 0;
13375
13388
  const cols = cellColumns(c.sub);
13389
+ let floatBottom = Number.NEGATIVE_INFINITY;
13390
+ let nestedCell = false;
13391
+ for (let a = c.el.parentNode; a; a = a.parentNode) if (a !== c.el && a.nodeType === 1 && ln(a) === "tc") {
13392
+ nestedCell = true;
13393
+ break;
13394
+ }
13376
13395
  for (const p of c.sub ? elements(c.sub) : []) if (ln(p) === "p") {
13377
13396
  const lsa = findChildByLocalName(p, "linesegarray");
13397
+ let first = true, pTop = 0;
13378
13398
  for (const sg of lsa ? elements(lsa) : []) if (ln(sg) === "lineseg") {
13379
13399
  const v = num(sg, "vertpos"), hz = num(sg, "horzpos");
13380
13400
  if ((v < prevV || v === prevV && hz <= prevH && prevSavedEnd > v) && !cols) {
13381
13401
  shift = prevEnd - v;
13382
13402
  part++;
13403
+ } else if (!nestedCell && bodyH !== void 0 && floatBottom > bodyH && first && !cols && v >= prevV && v < floatBottom - 1e3) {
13404
+ shift = prevEnd - v;
13405
+ part++;
13383
13406
  }
13407
+ if (first) pTop = prevSavedEnd > 0 && prevSavedEnd <= v ? prevSavedEnd : v;
13408
+ first = false;
13384
13409
  prevV = v;
13385
13410
  prevH = hz;
13386
13411
  prevSavedEnd = v + num(sg, "vertsize") + num(sg, "spacing");
@@ -13388,17 +13413,26 @@ function cellLineBoxes(c) {
13388
13413
  prevEnd = bottom + num(sg, "spacing");
13389
13414
  out.push({ seg: sg, top, bottom, part, origin: shift });
13390
13415
  }
13416
+ floatBottom = Number.NEGATIVE_INFINITY;
13417
+ for (const run of elements(p)) if (ln(run) === "run") for (const o of elements(run)) {
13418
+ if (ln(o) !== "tbl" || (o.getAttribute("textWrap") ?? "TOP_AND_BOTTOM") !== "TOP_AND_BOTTOM") continue;
13419
+ const pos = findChildByLocalName(o, "pos");
13420
+ if (!pos || pos.getAttribute("treatAsChar") === "1" || (pos.getAttribute("vertRelTo") ?? "PARA") !== "PARA") continue;
13421
+ const om = findChildByLocalName(o, "outMargin"), vo = num(pos, "vertOffset"), sz = num(findChildByLocalName(o, "sz"), "height"), full = measureTableHeight(o);
13422
+ const top = pTop + (vo < 2 ** 31 ? vo : 0) + num(om, "top");
13423
+ if (full > sz + 1e3 && (bodyH === void 0 || top + (measureTableRowHeights(o)[0] ?? 0) <= bodyH)) floatBottom = Math.max(floatBottom, top + full + num(om, "bottom"));
13424
+ }
13391
13425
  }
13392
13426
  return out;
13393
13427
  }
13394
- function cellLines(c) {
13395
- return cellLineBoxes(c).map((b) => [b.top, b.bottom]);
13428
+ function cellLines(c, bodyH) {
13429
+ return cellLineBoxes(c, bodyH).map((b) => [b.top, b.bottom]);
13396
13430
  }
13397
- function spanPartRows(cells, rowY) {
13431
+ function spanPartRows(cells, rowY, bodyH) {
13398
13432
  const out = /* @__PURE__ */ new Set();
13399
13433
  for (const c of cells) {
13400
13434
  if (c.rs < 2) continue;
13401
- const bs = cellLineBoxes(c);
13435
+ const bs = cellLineBoxes(c, bodyH);
13402
13436
  const parts = bs.length ? bs[bs.length - 1].part : 0;
13403
13437
  let s = c.ra;
13404
13438
  for (let k = 0; k < parts; k++) {
@@ -13442,12 +13476,12 @@ function planTableRows(tbl, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan, n
13442
13476
  const st = stackedFloats(rc[0]);
13443
13477
  return st.length >= 2 && st.reduce((a, f) => a + f.h, 0) > h;
13444
13478
  });
13445
- if (slack > 0 && ty + rowY[nRows] > pageBottom && ty + rowY[nRows] <= pageBottom + slack && cells.some((c) => cellLineBoxes(c).some((b) => b.part > 0))) slack = 0;
13479
+ 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;
13446
13480
  if (slack > 0 && ty + rowY[nRows] > pageBottom && ty + rowY[nRows] <= pageBottom + slack) {
13447
13481
  const declared = num(findChildByLocalName(tbl, "sz"), "height");
13448
13482
  if (rowY.some((v, k) => k > 0 && k < nRows && Math.abs(v - declared) <= 2)) slack = 0;
13449
13483
  }
13450
- const savedParts = tbl.getAttribute("pageBreak") === "CELL" && cells.some((c) => c.h > rowY[nRows] && cellLineBoxes(c).some((b) => b.part > 0));
13484
+ const savedParts = tbl.getAttribute("pageBreak") === "CELL" && cells.some((c) => c.h > rowY[nRows] && cellLineBoxes(c, BODY_H).some((b) => b.part > 0));
13451
13485
  if (BODY_H <= 0 || ty + rowY[nRows] <= pageBottom + slack && !stackOver && !savedParts) return plain();
13452
13486
  if (findChildByLocalName(tbl, "pos")?.getAttribute("treatAsChar") === "1") {
13453
13487
  const declared = num(findChildByLocalName(tbl, "sz"), "height") || rowY[nRows];
@@ -13462,11 +13496,15 @@ function planTableRows(tbl, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan, n
13462
13496
  const out = [];
13463
13497
  const flows = (findChildByLocalName(tbl, "pos")?.getAttribute("vertRelTo") ?? "PARA") === "PARA";
13464
13498
  let page = 0, y = ty, first = !flows || ty - MT < 2e3;
13499
+ if (!first && (tbl.getAttribute("pageBreak") ?? "NONE") === "NONE") {
13500
+ const outT = num(findChildByLocalName(tbl, "outMargin"), "top");
13501
+ if (outT + rowY[nRows] + outB <= BODY_H) return rowH.map((h, r) => [{ page: 1, y: contMT + outT + rowY[r], h }]);
13502
+ }
13465
13503
  if (!first && coAnchoredFollower(tbl)) {
13466
13504
  const outT = num(findChildByLocalName(tbl, "outMargin"), "top");
13467
13505
  if (outT + rowY[nRows] + outB <= BODY_H) return rowH.map((h, r) => [{ page: 1, y: contMT + outT + rowY[r], h }]);
13468
13506
  }
13469
- const spanStarts = cellSplit ? spanPartRows(cells, rowY) : /* @__PURE__ */ new Set();
13507
+ const spanStarts = cellSplit ? spanPartRows(cells, rowY, BODY_H) : /* @__PURE__ */ new Set();
13470
13508
  for (let r = 0; r < nRows; r++) {
13471
13509
  let h = rowH[r];
13472
13510
  const pieces = [];
@@ -13505,7 +13543,7 @@ function planTableRows(tbl, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan, n
13505
13543
  continue;
13506
13544
  }
13507
13545
  }
13508
- const boxes = splittable ? new Map(rowCells.map((c) => [c.el, cellLineBoxes(c)])) : void 0;
13546
+ const boxes = splittable ? new Map(rowCells.map((c) => [c.el, cellLineBoxes(c, BODY_H)])) : void 0;
13509
13547
  const hParts = boxes ? Math.max(0, ...[...boxes.values()].flatMap((bs) => bs.map((b) => b.part))) : 0;
13510
13548
  if (boxes && hParts > 0) {
13511
13549
  if (!first && rowCells.some((c) => {
@@ -13615,9 +13653,9 @@ function planTableRows(tbl, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan, n
13615
13653
  }
13616
13654
  if (splittable && y + h + outB > pageBottom) {
13617
13655
  const from = /* @__PURE__ */ new Map();
13618
- const lines = new Map(rowCells.map((c) => [c.el, cellLines(c)]));
13656
+ const lines = new Map(rowCells.map((c) => [c.el, cellLines(c, BODY_H)]));
13619
13657
  const sp0 = new Map(rowCells.map((c) => {
13620
- const b = cellLineBoxes(c)[0];
13658
+ const b = cellLineBoxes(c, BODY_H)[0];
13621
13659
  return [c.el, b ? num(b.seg, "spacing") : 0];
13622
13660
  }));
13623
13661
  while (y + h + outB > pageBottom && BODY_H > rowY[hdrRows]) {
@@ -13646,7 +13684,7 @@ function planTableRows(tbl, cells, rowH, ty, MT, BODY_H, slack = 0, floatSpan, n
13646
13684
  if (allFit) {
13647
13685
  const spanCells = cells.filter((c) => c.ra === r && c.rs > 1);
13648
13686
  const spanExt = (c) => {
13649
- const bs = cellLineBoxes(c);
13687
+ const bs = cellLineBoxes(c, BODY_H);
13650
13688
  return bs.some((b) => b.part > 0) ? Math.max(...bs.filter((b) => b.part === 0).map((b) => b.bottom)) : cellContentExtent(c);
13651
13689
  };
13652
13690
  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)) {
@@ -15333,7 +15371,7 @@ function drawTable(tbl, tx, ty, ctx, depth) {
15333
15371
  const span = plan.slice(c.ra, Math.min(c.ra + c.rs, nRows)).flat();
15334
15372
  const pages = [...new Set(span.map((pc) => pc.page))];
15335
15373
  if (pages.length > 1) {
15336
- const bs = cellLineBoxes(c);
15374
+ const bs = cellLineBoxes(c, ctx.geom.BODY_H);
15337
15375
  const partTop = (k) => bs.find((b) => b.part === k);
15338
15376
  const groups = pages.map((pg, k) => {
15339
15377
  const on = span.filter((pc) => pc.page === pg);
@@ -15366,7 +15404,7 @@ function drawTable(tbl, tx, ty, ctx, depth) {
15366
15404
  ctx.page = g.page;
15367
15405
  if (g.pieces) {
15368
15406
  const base = g.pieces[0].y + c.marginT;
15369
- const boxes = cellLineBoxes(c);
15407
+ const boxes = cellLineBoxes(c, ctx.geom.BODY_H);
15370
15408
  const contV = new Map(boxes.map((b) => [b.seg, b.top]));
15371
15409
  const pieceOf = (v) => Math.max(0, g.pieces.findIndex((pc) => {
15372
15410
  const r = pc.range?.get(c.el);
@@ -15569,6 +15607,19 @@ function staleTopCache(root, BODY_H) {
15569
15607
  }
15570
15608
  return false;
15571
15609
  }
15610
+ function overrunTopCache(root, BODY_H) {
15611
+ if (BODY_H <= 0) return false;
15612
+ let over = 0;
15613
+ for (const p of elements(root)) {
15614
+ if (ln(p) !== "p") continue;
15615
+ const lsa = findChildByLocalName(p, "linesegarray");
15616
+ for (const sg of lsa ? elements(lsa) : []) if (ln(sg) === "lineseg") {
15617
+ over = num(sg, "vertpos") > BODY_H ? over + 1 : 0;
15618
+ if (over >= 3) return true;
15619
+ }
15620
+ }
15621
+ return false;
15622
+ }
15572
15623
  function absoluteTopCache(root, ML, BODY_W) {
15573
15624
  let tot = 0, over = 0;
15574
15625
  for (const p of elements(root)) {
@@ -15586,7 +15637,7 @@ function absoluteTopCache(root, ML, BODY_W) {
15586
15637
  function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters = [], hasDeletionMarkers = true, lastSection = true) {
15587
15638
  const { PW, PH, ML, MT, BODY_W, BODY_H } = geom;
15588
15639
  if (hasDeletionMarkers) prepareDeletedRanges(root);
15589
- const degenerate = staleTopCache(root, BODY_H);
15640
+ const degenerate = staleTopCache(root, BODY_H) || overrunTopCache(root, BODY_H);
15590
15641
  if (degenerate) {
15591
15642
  for (const p of elements(root)) if (ln(p) === "p") {
15592
15643
  const lsa = findChildByLocalName(p, "linesegarray");
@@ -15594,6 +15645,19 @@ function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters
15594
15645
  }
15595
15646
  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");
15596
15647
  }
15648
+ for (const tc of Array.from(root.getElementsByTagName("*")).filter((e) => ln(e) === "tc")) {
15649
+ const sub = findChildByLocalName(tc, "subList");
15650
+ const paras = sub ? elements(sub).filter((q) => ln(q) === "p") : [];
15651
+ const vs = [];
15652
+ for (const q of paras) {
15653
+ const lsa = findChildByLocalName(q, "linesegarray");
15654
+ for (const sg of lsa ? elements(lsa) : []) if (ln(sg) === "lineseg") vs.push(num(sg, "vertpos"));
15655
+ }
15656
+ 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) {
15657
+ const lsa = findChildByLocalName(q, "linesegarray");
15658
+ if (lsa) q.removeChild(lsa);
15659
+ }
15660
+ }
15597
15661
  const absolute = !degenerate && absoluteTopCache(root, ML, BODY_W);
15598
15662
  if (absolute) {
15599
15663
  for (const lsa of Array.from(root.getElementsByTagName("*")).filter((e) => ln(e) === "linesegarray")) lsa.parentNode?.removeChild(lsa);
@@ -15627,7 +15691,7 @@ function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters
15627
15691
  let prevH = Number.NEGATIVE_INFINITY;
15628
15692
  let prevEnd = Number.NEGATIVE_INFINITY;
15629
15693
  let cur = 0, col = 0;
15630
- let pendingEnd = 0, pendingEndY = 0;
15694
+ let pendingEnd = 0, pendingEndY = 0, pendingTopY = -1;
15631
15695
  let lastEnd = 0, lastPage = -1;
15632
15696
  let lastSA = 0;
15633
15697
  let prevSeg;
@@ -15652,7 +15716,7 @@ function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters
15652
15716
  }
15653
15717
  if (col > 0) s.setAttribute("horzpos", String(h + Math.round(col * (colW + colGap))));
15654
15718
  } else {
15655
- if (paraFirst && pendingEnd > cur) {
15719
+ if (paraFirst && pendingEnd > cur && !(v > prevV && v < pendingTopY - 100)) {
15656
15720
  cur = v < pendingEndY - 100 ? pendingEnd + 1 : pendingEnd;
15657
15721
  pendingEnd = 0;
15658
15722
  } else {
@@ -15724,9 +15788,10 @@ function renderSectionToPages(root, geom, ctxBase, doReflow, reflowMode, masters
15724
15788
  lastPage = pagesOf[pagesOf.length - 1];
15725
15789
  continue;
15726
15790
  }
15727
- if (span.pages > 0 && (pagesOf[0] ?? cur) + span.pages > pendingEnd) {
15791
+ if (span.pages > 0 && o.el.getAttribute("pageBreak") !== "NONE" && (pagesOf[0] ?? cur) + span.pages > pendingEnd) {
15728
15792
  pendingEnd = (pagesOf[0] ?? cur) + span.pages;
15729
15793
  pendingEndY = span.endY - MT;
15794
+ pendingTopY = below && voP > 0 && ty - MT < BODY_H ? ty - MT : -1;
15730
15795
  }
15731
15796
  }
15732
15797
  }
@@ -15961,7 +16026,7 @@ function renderSectionRoots(sections, input) {
15961
16026
  return pm.objs.length > 0 || pm.chars.some((c) => c.ch.trim() !== "" || !!c.ctrlText);
15962
16027
  });
15963
16028
  let lastIdx = sections.length - 1;
15964
- while (lastIdx > 0 && !hasContent(sections[lastIdx].root)) lastIdx--;
16029
+ while (lastIdx > 0 && !hasContent(sections[lastIdx].root) && !sections[lastIdx].masterPages?.length) lastIdx--;
15965
16030
  for (const [k, { root, index, masterPages, hasDeletionMarkers }] of sections.entries()) {
15966
16031
  if (k > lastIdx) break;
15967
16032
  const geom = readSectionGeom(root);
@@ -20266,4 +20331,4 @@ export {
20266
20331
  cropRect,
20267
20332
  extractRenderedRegions
20268
20333
  };
20269
- //# sourceMappingURL=chunk-DCEXKPBH.js.map
20334
+ //# sourceMappingURL=chunk-MYDHNNPA.js.map