kordoc 4.19.1 → 4.20.0
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.
- package/NOTICE +25 -0
- package/README.md +3 -1
- package/THIRD_PARTY/hwp-auto-docfit.LICENSE +23 -0
- package/dist/{-LYUUVVQF.js → -TTRGLREH.js} +11 -11
- package/dist/{chunk-4WTJS6ES.js → chunk-2U475PJF.js} +2 -2
- package/dist/{chunk-FEGRQA3Q.js → chunk-4DIMX2KU.js} +4 -4
- package/dist/{chunk-7XRI4FL4.js → chunk-4WOG2SLT.js} +2 -2
- package/dist/{chunk-5AZQEMMG.js → chunk-527NBMUE.js} +51 -20
- package/dist/chunk-527NBMUE.js.map +1 -0
- package/dist/{chunk-MSUGYK6A.js → chunk-7H5GT7HM.js} +22 -3
- package/dist/{chunk-MSUGYK6A.js.map → chunk-7H5GT7HM.js.map} +1 -1
- package/dist/{chunk-GPNPYBXJ.cjs → chunk-AXQDWE42.cjs} +12 -12
- package/dist/{chunk-GPNPYBXJ.cjs.map → chunk-AXQDWE42.cjs.map} +1 -1
- package/dist/{chunk-W5NXOMCD.cjs → chunk-CJFIHH2N.cjs} +6 -6
- package/dist/{chunk-W5NXOMCD.cjs.map → chunk-CJFIHH2N.cjs.map} +1 -1
- package/dist/{chunk-ZTGTFO52.js → chunk-CKFKC22O.js} +4 -4
- package/dist/{chunk-BDTWXJNM.js → chunk-CPZ2LLZA.js} +2 -2
- package/dist/{chunk-JA5B4NPF.js → chunk-CS2VWXDS.js} +2 -2
- package/dist/{chunk-CL3CJ7X5.js → chunk-DPD2L5UK.js} +3 -3
- package/dist/{chunk-L5N5UQBP.js → chunk-GHAJHXYA.js} +2 -2
- package/dist/{chunk-KYFP5LDC.js → chunk-JYV3XQYW.js} +2 -2
- package/dist/{chunk-RHMIEEAZ.cjs → chunk-K5GCIB2I.cjs} +2 -2
- package/dist/{chunk-RHMIEEAZ.cjs.map → chunk-K5GCIB2I.cjs.map} +1 -1
- package/dist/{chunk-FNX3ZAYB.cjs → chunk-KDCPBF4X.cjs} +22 -22
- package/dist/{chunk-FNX3ZAYB.cjs.map → chunk-KDCPBF4X.cjs.map} +1 -1
- package/dist/{chunk-6KOQPPLX.js → chunk-LQ4IDHET.js} +251 -35
- package/dist/chunk-LQ4IDHET.js.map +1 -0
- package/dist/{chunk-DQHDI567.js → chunk-MNPPMJBN.js} +2 -2
- package/dist/{chunk-Z2WI3E4N.js → chunk-MXADBQ7E.js} +2 -2
- package/dist/{chunk-TRUR4RUJ.js → chunk-NVBX2NKZ.js} +2 -2
- package/dist/{chunk-JNIJPP4B.js → chunk-OX5FA2MU.js} +2 -2
- package/dist/{chunk-HMJXB7ZE.cjs → chunk-RMDFN5ZF.cjs} +3 -3
- package/dist/{chunk-HMJXB7ZE.cjs.map → chunk-RMDFN5ZF.cjs.map} +1 -1
- package/dist/{chunk-UAAYIEIK.js → chunk-TM7IOP4P.js} +30 -2
- package/dist/chunk-TM7IOP4P.js.map +1 -0
- package/dist/{chunk-7L5GY54Q.js → chunk-URQM5TBD.js} +2 -2
- package/dist/{chunk-X6ME7YYS.js → chunk-VVKMBLG2.js} +2 -2
- package/dist/{chunk-ADBES5QJ.js → chunk-WLNEQGQC.js} +3 -3
- package/dist/{chunk-XFZMRCGJ.js → chunk-WLWWODBQ.js} +2 -2
- package/dist/{chunk-UOXOYZU4.cjs → chunk-WWOU6ZQ3.cjs} +3 -3
- package/dist/{chunk-UOXOYZU4.cjs.map → chunk-WWOU6ZQ3.cjs.map} +1 -1
- package/dist/{chunk-YLST4S4P.js → chunk-X5YHJHWB.js} +2 -2
- package/dist/chunks-3NIFJFRQ.js +10 -0
- package/dist/cli.js +366 -44
- package/dist/cli.js.map +1 -1
- package/dist/{formula-G4YA7SNQ.js → formula-D6GGALWI.js} +3 -3
- package/dist/{formula-J3UUIPCX.cjs → formula-FE6LEZTT.cjs} +9 -9
- package/dist/{formula-J3UUIPCX.cjs.map → formula-FE6LEZTT.cjs.map} +1 -1
- package/dist/{formula-QSZRYZ44.js → formula-KWOAYEOG.js} +4 -4
- package/dist/{image-ocr-ZP3F4MUY.js → image-ocr-XDODV43Y.js} +9 -9
- package/dist/{image-ocr-467KLV3F.cjs → image-ocr-XGGIYCZ2.cjs} +15 -15
- package/dist/{image-ocr-467KLV3F.cjs.map → image-ocr-XGGIYCZ2.cjs.map} +1 -1
- package/dist/{image-ocr-I52GBXRE.js → image-ocr-YYTFOUSY.js} +6 -6
- package/dist/index.cjs +1068 -782
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +331 -45
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +22 -22
- package/dist/{model-bundle-FEUM7XXS.js → model-bundle-WPFLIKYM.js} +5 -5
- package/dist/{models-6QCNX5YR.js → models-WJ5QYELV.js} +5 -5
- package/dist/{parser-BIJBX2D5.cjs → parser-6P5ZRWXG.cjs} +132 -132
- package/dist/{parser-BIJBX2D5.cjs.map → parser-6P5ZRWXG.cjs.map} +1 -1
- package/dist/{parser-YX4LGKIK.js → parser-LY67CB7A.js} +8 -8
- package/dist/{parser-6EIBURDE.js → parser-QKLUIMHG.js} +11 -11
- package/dist/pdf-ocr-6L4EDRVO.js +20 -0
- package/dist/pdf-ocr-J7DHJJ3I.js +16 -0
- package/dist/pdf-ocr-MODN6GBT.cjs +17 -0
- package/dist/{pdf-ocr-DXQIMO77.cjs.map → pdf-ocr-MODN6GBT.cjs.map} +1 -1
- package/dist/{profile-io-ATHFEUAP.js → profile-io-I4ORJOE4.js} +3 -3
- package/dist/{rasterize-SG3CLXMQ.js → rasterize-MZU5LIA5.js} +3 -3
- package/dist/{redact-doc-K3S4HFHU.js → redact-doc-NEUEBXFH.js} +11 -11
- package/dist/{render-6CQJM7VE.js → render-IL2DYXDP.js} +7 -7
- package/dist/seal-O5DKZGTR.js +10 -0
- package/dist/{setup-CZ5KHGPI.js → setup-PGOCB7YG.js} +3 -3
- package/dist/visual-PYV4ZMLH.js +20 -0
- package/dist/{watch-RQRIGLFF.js → watch-2F5AMHCW.js} +12 -12
- package/package.json +1 -1
- package/dist/chunk-5AZQEMMG.js.map +0 -1
- package/dist/chunk-6KOQPPLX.js.map +0 -1
- package/dist/chunk-UAAYIEIK.js.map +0 -1
- package/dist/chunks-T67OQGPJ.js +0 -10
- package/dist/pdf-ocr-DXQIMO77.cjs +0 -17
- package/dist/pdf-ocr-MESGGING.js +0 -20
- package/dist/pdf-ocr-YSRBRIPR.js +0 -16
- package/dist/seal-SMO4544N.js +0 -10
- package/dist/visual-UWYGQLOU.js +0 -20
- /package/dist/{-LYUUVVQF.js.map → -TTRGLREH.js.map} +0 -0
- /package/dist/{chunk-4WTJS6ES.js.map → chunk-2U475PJF.js.map} +0 -0
- /package/dist/{chunk-FEGRQA3Q.js.map → chunk-4DIMX2KU.js.map} +0 -0
- /package/dist/{chunk-7XRI4FL4.js.map → chunk-4WOG2SLT.js.map} +0 -0
- /package/dist/{chunk-ZTGTFO52.js.map → chunk-CKFKC22O.js.map} +0 -0
- /package/dist/{chunk-BDTWXJNM.js.map → chunk-CPZ2LLZA.js.map} +0 -0
- /package/dist/{chunk-JA5B4NPF.js.map → chunk-CS2VWXDS.js.map} +0 -0
- /package/dist/{chunk-CL3CJ7X5.js.map → chunk-DPD2L5UK.js.map} +0 -0
- /package/dist/{chunk-L5N5UQBP.js.map → chunk-GHAJHXYA.js.map} +0 -0
- /package/dist/{chunk-KYFP5LDC.js.map → chunk-JYV3XQYW.js.map} +0 -0
- /package/dist/{chunk-DQHDI567.js.map → chunk-MNPPMJBN.js.map} +0 -0
- /package/dist/{chunk-Z2WI3E4N.js.map → chunk-MXADBQ7E.js.map} +0 -0
- /package/dist/{chunk-TRUR4RUJ.js.map → chunk-NVBX2NKZ.js.map} +0 -0
- /package/dist/{chunk-JNIJPP4B.js.map → chunk-OX5FA2MU.js.map} +0 -0
- /package/dist/{chunk-7L5GY54Q.js.map → chunk-URQM5TBD.js.map} +0 -0
- /package/dist/{chunk-X6ME7YYS.js.map → chunk-VVKMBLG2.js.map} +0 -0
- /package/dist/{chunk-ADBES5QJ.js.map → chunk-WLNEQGQC.js.map} +0 -0
- /package/dist/{chunk-XFZMRCGJ.js.map → chunk-WLWWODBQ.js.map} +0 -0
- /package/dist/{chunk-YLST4S4P.js.map → chunk-X5YHJHWB.js.map} +0 -0
- /package/dist/{chunks-T67OQGPJ.js.map → chunks-3NIFJFRQ.js.map} +0 -0
- /package/dist/{formula-G4YA7SNQ.js.map → formula-D6GGALWI.js.map} +0 -0
- /package/dist/{formula-QSZRYZ44.js.map → formula-KWOAYEOG.js.map} +0 -0
- /package/dist/{image-ocr-ZP3F4MUY.js.map → image-ocr-XDODV43Y.js.map} +0 -0
- /package/dist/{image-ocr-I52GBXRE.js.map → image-ocr-YYTFOUSY.js.map} +0 -0
- /package/dist/{model-bundle-FEUM7XXS.js.map → model-bundle-WPFLIKYM.js.map} +0 -0
- /package/dist/{models-6QCNX5YR.js.map → models-WJ5QYELV.js.map} +0 -0
- /package/dist/{parser-YX4LGKIK.js.map → parser-LY67CB7A.js.map} +0 -0
- /package/dist/{parser-6EIBURDE.js.map → parser-QKLUIMHG.js.map} +0 -0
- /package/dist/{pdf-ocr-MESGGING.js.map → pdf-ocr-6L4EDRVO.js.map} +0 -0
- /package/dist/{pdf-ocr-YSRBRIPR.js.map → pdf-ocr-J7DHJJ3I.js.map} +0 -0
- /package/dist/{profile-io-ATHFEUAP.js.map → profile-io-I4ORJOE4.js.map} +0 -0
- /package/dist/{rasterize-SG3CLXMQ.js.map → rasterize-MZU5LIA5.js.map} +0 -0
- /package/dist/{redact-doc-K3S4HFHU.js.map → redact-doc-NEUEBXFH.js.map} +0 -0
- /package/dist/{render-6CQJM7VE.js.map → render-IL2DYXDP.js.map} +0 -0
- /package/dist/{seal-SMO4544N.js.map → seal-O5DKZGTR.js.map} +0 -0
- /package/dist/{setup-CZ5KHGPI.js.map → setup-PGOCB7YG.js.map} +0 -0
- /package/dist/{visual-UWYGQLOU.js.map → visual-PYV4ZMLH.js.map} +0 -0
- /package/dist/{watch-RQRIGLFF.js.map → watch-2F5AMHCW.js.map} +0 -0
package/NOTICE
CHANGED
|
@@ -174,3 +174,28 @@ Used in:
|
|
|
174
174
|
|
|
175
175
|
You may obtain a copy of the MIT License at:
|
|
176
176
|
https://opensource.org/licenses/MIT
|
|
177
|
+
|
|
178
|
+
================================================================================
|
|
179
|
+
|
|
180
|
+
hwp-auto-docfit
|
|
181
|
+
https://github.com/haijun93/hwp-auto-docfit
|
|
182
|
+
|
|
183
|
+
Copyright (c) 2026 haijun93 (마포구청 공혁준)
|
|
184
|
+
Licensed under the MIT License
|
|
185
|
+
|
|
186
|
+
Used in:
|
|
187
|
+
- src/hwpx/gongmun-lint.ts — 기간 대시·요일·"끝."/붙임 2타 규칙 착안, 공공언어 쉬운 말·맞춤법
|
|
188
|
+
낱말표와 조사 경계식 (document_rules.py·writing_aids.py·korean_proofread.py)
|
|
189
|
+
- src/hwpx/paste-clean.ts — 생성형 AI 붙여넣기 흔적(보이지 않는 글자·† 인용 표시·이스케이프된 굵게) 정리 규칙 착안 (pasted_text.py)
|
|
190
|
+
- src/hwpx/gongmun-typo.ts — 열거 뒤 '등'·'낱말 숫자,' 열거 묶음 빈칸 규칙 착안
|
|
191
|
+
- src/hwpx/number-lint.ts — 본문 수치 ↔ 표 수치 대조 범위·임계값 (number_check.py)
|
|
192
|
+
- src/hwpx/level-styles.ts — 단계별 대표 서식 투표 임계값과 편차 검수 (style_unify.py·document_review.py)
|
|
193
|
+
- src/roundtrip/integrity.ts — 패치 결과 다층 무결성 검사 착안 (fidelity/verify.py)
|
|
194
|
+
|
|
195
|
+
Modifications:
|
|
196
|
+
- TypeScript 재구현(규칙·임계값은 kordoc 코퍼스로 다시 확인), 한/글 COM 의존 없음
|
|
197
|
+
|
|
198
|
+
라이선스 전문: THIRD_PARTY/hwp-auto-docfit.LICENSE
|
|
199
|
+
|
|
200
|
+
You may obtain a copy of the MIT License at:
|
|
201
|
+
https://opensource.org/licenses/MIT
|
package/README.md
CHANGED
|
@@ -111,10 +111,12 @@ await writeFile("보고서.hwpx", Buffer.from(hwpx))
|
|
|
111
111
|
|
|
112
112
|
## 최근 업데이트
|
|
113
113
|
|
|
114
|
-
최신 배포: **[4.
|
|
114
|
+
최신 배포: **[4.20.0](https://github.com/chrisryugj/kordoc/releases/tag/v4.20.0)** · 2026-10-08
|
|
115
115
|
|
|
116
116
|
| 버전 | 주요 변경 |
|
|
117
117
|
| --- | --- |
|
|
118
|
+
| 4.20.0 | 표기법 검수 7룰(기간 대시·요일·금액 한글·공공언어·맞춤법·2타)과 문서 직접 검수·수치 대조·단계별 서식 편차, 견본 HWPX 단계별 서식 학습(`levels`·`--levels-from`), `compare`·`patch --json`, 패치 무결성 검사, 붙여넣기 흔적 정리 |
|
|
119
|
+
| 4.19.2 | rhwp v0.8.7 파서 수정 반영 — HWP3 체크박스 □, HWP5 짝 없는 서로게이트 □, 손상 CFB 복구의 본문 경로 오인 수정, HWPX 압축 해제 상한을 엔트리 읽는 도중에 적용 |
|
|
118
120
|
| 4.19.1 | PDF 쪽별 마크다운(`pages`)에서 쪽 넘김 표를 쪽마다 다시 갈라 뒤 쪽 행·상자가 앞 쪽에 붙거나 쪽 항목이 빠지지 않게 (#136) |
|
|
119
121
|
| 4.19.0 | RAG 색인용 `tableFormat: "gfm"` — 병합·중첩 표도 HTML 없이 GFM 파이프 표로, 셀 안 표는 부모·자식 관계 표지와 함께 독립 표로 (#138) |
|
|
120
122
|
| 4.18.12–13 | PDF 쪽 넘김 문단 잇기 판정을 HWPX·DOCX 원문 대조로 재조정 — 문장 끝·들여쓰기·나열 기호·탭 행 근거 (HWPX 쌍 오판 50 → 5) |
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 haijun93 (마포구청 공혁준)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
Third-party components keep their own licenses. See THIRD_PARTY_NOTICES.md.
|
|
@@ -51,17 +51,17 @@ import {
|
|
|
51
51
|
unknownFontWarnings,
|
|
52
52
|
usesGaejosikMunche,
|
|
53
53
|
validateHwpx
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-LQ4IDHET.js";
|
|
55
55
|
import {
|
|
56
56
|
blocksToPages
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-VVKMBLG2.js";
|
|
58
58
|
import {
|
|
59
59
|
applySplices,
|
|
60
60
|
buildParagraphSplices,
|
|
61
61
|
buildRangeSplices,
|
|
62
62
|
placeSealHwpx,
|
|
63
63
|
scanSectionXml
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-7H5GT7HM.js";
|
|
65
65
|
import {
|
|
66
66
|
DEFAULT_REDACT_RULES,
|
|
67
67
|
redactMarkdown,
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
} from "./chunk-3WSNLH4B.js";
|
|
70
70
|
import {
|
|
71
71
|
blocksToChunks
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-OX5FA2MU.js";
|
|
73
73
|
import {
|
|
74
74
|
SPACE_EM_FIXED,
|
|
75
75
|
SPACE_EM_FONT,
|
|
@@ -94,20 +94,20 @@ import {
|
|
|
94
94
|
renderSceneToHtml,
|
|
95
95
|
simulateWrap,
|
|
96
96
|
simulateWrapKeepWord
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-527NBMUE.js";
|
|
98
98
|
import "./chunk-7FCNOKOR.js";
|
|
99
|
-
import "./chunk-
|
|
99
|
+
import "./chunk-GHAJHXYA.js";
|
|
100
100
|
import "./chunk-VQFA55IC.js";
|
|
101
|
-
import "./chunk-
|
|
101
|
+
import "./chunk-TM7IOP4P.js";
|
|
102
102
|
import {
|
|
103
103
|
blocksToMarkdown,
|
|
104
104
|
flattenLayoutTables,
|
|
105
105
|
hasStructuredCellContent
|
|
106
|
-
} from "./chunk-
|
|
107
|
-
import "./chunk-
|
|
106
|
+
} from "./chunk-NVBX2NKZ.js";
|
|
107
|
+
import "./chunk-CS2VWXDS.js";
|
|
108
108
|
import {
|
|
109
109
|
VERSION
|
|
110
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-URQM5TBD.js";
|
|
111
111
|
export {
|
|
112
112
|
BUILTIN_TEMPLATES,
|
|
113
113
|
DEFAULT_REDACT_RULES,
|
|
@@ -198,4 +198,4 @@ export {
|
|
|
198
198
|
usesGaejosikMunche,
|
|
199
199
|
validateHwpx
|
|
200
200
|
};
|
|
201
|
-
//# sourceMappingURL=-
|
|
201
|
+
//# sourceMappingURL=-TTRGLREH.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
KordocError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-URQM5TBD.js";
|
|
5
5
|
|
|
6
6
|
// src/shared/offline.ts
|
|
7
7
|
import { realpathSync } from "fs";
|
|
@@ -49,4 +49,4 @@ export {
|
|
|
49
49
|
getAccessRoot,
|
|
50
50
|
assertWithinRoot
|
|
51
51
|
};
|
|
52
|
-
//# sourceMappingURL=chunk-
|
|
52
|
+
//# sourceMappingURL=chunk-2U475PJF.js.map
|
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
HEADING_RATIO_H2,
|
|
5
5
|
HEADING_RATIO_H3,
|
|
6
6
|
tidyScriptTags
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-X5YHJHWB.js";
|
|
8
8
|
import {
|
|
9
9
|
ensureModelsIn,
|
|
10
10
|
getModelsDir
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-4WOG2SLT.js";
|
|
12
12
|
import {
|
|
13
13
|
safeMax,
|
|
14
14
|
safeMin
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-MXADBQ7E.js";
|
|
16
16
|
|
|
17
17
|
// src/ocr/models.ts
|
|
18
18
|
import { join } from "path";
|
|
@@ -8378,4 +8378,4 @@ export {
|
|
|
8378
8378
|
removeSideTabs,
|
|
8379
8379
|
extractPageBlocksWithLines
|
|
8380
8380
|
};
|
|
8381
|
-
//# sourceMappingURL=chunk-
|
|
8381
|
+
//# sourceMappingURL=chunk-4DIMX2KU.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
KordocError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MXADBQ7E.js";
|
|
4
4
|
|
|
5
5
|
// src/pdf/formula/models.ts
|
|
6
6
|
import { createHash as createHash2 } from "crypto";
|
|
@@ -308,4 +308,4 @@ export {
|
|
|
308
308
|
ensureFormulaModels,
|
|
309
309
|
ensureSingleModel
|
|
310
310
|
};
|
|
311
|
-
//# sourceMappingURL=chunk-
|
|
311
|
+
//# sourceMappingURL=chunk-4WOG2SLT.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
HEADING_RATIO_H3,
|
|
10
10
|
tidyScriptTags,
|
|
11
11
|
unframeLayoutTables
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GHAJHXYA.js";
|
|
13
13
|
import {
|
|
14
14
|
parsePageRange
|
|
15
15
|
} from "./chunk-VQFA55IC.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
findChildByLocalName,
|
|
23
23
|
hwpFaceToCssStack,
|
|
24
24
|
parseRenderStyles
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-TM7IOP4P.js";
|
|
26
26
|
import {
|
|
27
27
|
MAX_COLS,
|
|
28
28
|
MAX_ROWS,
|
|
@@ -33,18 +33,18 @@ import {
|
|
|
33
33
|
flattenLayoutTables,
|
|
34
34
|
mapPuaText,
|
|
35
35
|
markNonLayoutTable
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-NVBX2NKZ.js";
|
|
37
37
|
import {
|
|
38
38
|
loadSharp,
|
|
39
39
|
rasterizePageSvg
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-CS2VWXDS.js";
|
|
41
41
|
import {
|
|
42
42
|
KordocError,
|
|
43
43
|
escapeHtml,
|
|
44
44
|
precheckZipSize,
|
|
45
45
|
sanitizeHref,
|
|
46
46
|
toArrayBuffer
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-URQM5TBD.js";
|
|
48
48
|
|
|
49
49
|
// src/render/svg-render.ts
|
|
50
50
|
import JSZip from "jszip";
|
|
@@ -3386,6 +3386,14 @@ function appendParaText(state, data, resolveControl) {
|
|
|
3386
3386
|
if (want) result += `<${want}>`;
|
|
3387
3387
|
state.script = want;
|
|
3388
3388
|
};
|
|
3389
|
+
if (state.loneHighAt !== void 0) {
|
|
3390
|
+
const lo = data.length >= 2 ? data.readUInt16LE(0) : 0;
|
|
3391
|
+
if (lo >= 56320 && lo <= 57343 && state.loneHighAt === state.text.length - 1) {
|
|
3392
|
+
state.text = state.text.slice(0, -1) + String.fromCharCode(state.loneHigh, lo);
|
|
3393
|
+
i = 2;
|
|
3394
|
+
}
|
|
3395
|
+
state.loneHighAt = void 0;
|
|
3396
|
+
}
|
|
3389
3397
|
const base = state.text.length;
|
|
3390
3398
|
const resolveAt = (byteOffset, extended) => {
|
|
3391
3399
|
const ctrlId = data.readUInt32LE(byteOffset);
|
|
@@ -3465,6 +3473,14 @@ function appendParaText(state, data, resolveControl) {
|
|
|
3465
3473
|
break;
|
|
3466
3474
|
}
|
|
3467
3475
|
}
|
|
3476
|
+
if (ch >= 55296 && ch <= 57343) {
|
|
3477
|
+
result += "\u25A1";
|
|
3478
|
+
if (ch <= 56319 && i >= data.length) {
|
|
3479
|
+
state.loneHigh = ch;
|
|
3480
|
+
state.loneHighAt = base + result.length - 1;
|
|
3481
|
+
}
|
|
3482
|
+
break;
|
|
3483
|
+
}
|
|
3468
3484
|
result += !state.dollarMark ? String.fromCharCode(ch) : ch === 36 ? LITERAL_DOLLAR_MARK : ch === 60 ? LITERAL_LT_MARK : String.fromCharCode(ch);
|
|
3469
3485
|
}
|
|
3470
3486
|
break;
|
|
@@ -3636,7 +3652,7 @@ function collectHwp5BinDataLenient(lcfb, readStream = lcfb.findStream) {
|
|
|
3636
3652
|
const match = e.name.match(binRe);
|
|
3637
3653
|
if (!match) continue;
|
|
3638
3654
|
const idx = parseInt(match[1], 16);
|
|
3639
|
-
const raw = readStream(e.name);
|
|
3655
|
+
const raw = readStream(`/BinData/${e.name}`) ?? readStream(e.name);
|
|
3640
3656
|
if (!raw) continue;
|
|
3641
3657
|
binDataMap.set(idx, { data: normalizeBinPayload(raw), name: e.name });
|
|
3642
3658
|
}
|
|
@@ -4465,7 +4481,7 @@ function parseLenientCfb(data) {
|
|
|
4465
4481
|
for (let offset = 0; offset + 128 <= dirData.length && dirEntries.length < MAX_DIR_ENTRIES; offset += 128) {
|
|
4466
4482
|
const nameLen = dirData.readUInt16LE(offset + 64);
|
|
4467
4483
|
if (nameLen <= 0 || nameLen > 64) {
|
|
4468
|
-
dirEntries.push({ name: "", type: 0, startSector: 0, size: 0 });
|
|
4484
|
+
dirEntries.push({ name: "", type: 0, startSector: 0, size: 0, left: FREE_SECT, right: FREE_SECT, child: FREE_SECT });
|
|
4469
4485
|
continue;
|
|
4470
4486
|
}
|
|
4471
4487
|
const nameBytes = nameLen - 2;
|
|
@@ -4473,7 +4489,7 @@ function parseLenientCfb(data) {
|
|
|
4473
4489
|
const type = dirData[offset + 66];
|
|
4474
4490
|
const startSector = dirData.readUInt32LE(offset + 116);
|
|
4475
4491
|
const size = dirData.readUInt32LE(offset + 120);
|
|
4476
|
-
dirEntries.push({ name, type, startSector, size });
|
|
4492
|
+
dirEntries.push({ name, type, startSector, size, left: dirData.readUInt32LE(offset + 68), right: dirData.readUInt32LE(offset + 72), child: dirData.readUInt32LE(offset + 76) });
|
|
4477
4493
|
}
|
|
4478
4494
|
let miniStreamData = null;
|
|
4479
4495
|
function getMiniStream() {
|
|
@@ -4517,20 +4533,35 @@ function parseLenientCfb(data) {
|
|
|
4517
4533
|
}
|
|
4518
4534
|
return readChain(entry.startSector, entry.size);
|
|
4519
4535
|
}
|
|
4536
|
+
function findChild(parent, name) {
|
|
4537
|
+
const pending = [parent.child];
|
|
4538
|
+
const visited = /* @__PURE__ */ new Set();
|
|
4539
|
+
while (pending.length) {
|
|
4540
|
+
const id = pending.pop();
|
|
4541
|
+
if (id === END_OF_CHAIN || id === FREE_SECT || id >= dirEntries.length || visited.has(id)) continue;
|
|
4542
|
+
visited.add(id);
|
|
4543
|
+
const e = dirEntries[id];
|
|
4544
|
+
if (e.name === name) return e;
|
|
4545
|
+
pending.push(e.left, e.right);
|
|
4546
|
+
}
|
|
4547
|
+
return null;
|
|
4548
|
+
}
|
|
4520
4549
|
function findEntryByPath(path) {
|
|
4521
|
-
const parts = path.replace(/^\//, "").split("/");
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
|
|
4550
|
+
const parts = path.replace(/^\//, "").split("/").filter(Boolean);
|
|
4551
|
+
const last = parts.pop();
|
|
4552
|
+
if (last === void 0) return null;
|
|
4553
|
+
const root = dirEntries.find((e) => e.type === 5);
|
|
4554
|
+
if (root) {
|
|
4555
|
+
let current = root;
|
|
4556
|
+
for (const part of parts) {
|
|
4557
|
+
const next = current ? findChild(current, part) : null;
|
|
4558
|
+
current = next && next.type === 1 ? next : null;
|
|
4530
4559
|
}
|
|
4560
|
+
const hit = current ? findChild(current, last) : null;
|
|
4561
|
+
if (hit && (hit.type === 1 || hit.type === 2 || hit.type === 5)) return hit;
|
|
4531
4562
|
}
|
|
4532
|
-
const
|
|
4533
|
-
return
|
|
4563
|
+
const named = dirEntries.filter((e) => e.name === last && (e.type === 1 || e.type === 2 || e.type === 5));
|
|
4564
|
+
return named.length === 1 ? named[0] : null;
|
|
4534
4565
|
}
|
|
4535
4566
|
return {
|
|
4536
4567
|
findStream(path) {
|
|
@@ -7770,4 +7801,4 @@ export {
|
|
|
7770
7801
|
cropRect,
|
|
7771
7802
|
extractRenderedRegions
|
|
7772
7803
|
};
|
|
7773
|
-
//# sourceMappingURL=chunk-
|
|
7804
|
+
//# sourceMappingURL=chunk-527NBMUE.js.map
|