@simplysm/excel 14.0.100 → 14.0.101
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/dist/biff/biff-model-factory.d.ts +32 -0
- package/dist/biff/biff-model-factory.d.ts.map +1 -0
- package/dist/biff/biff-model-factory.js +88 -0
- package/dist/biff/biff-model-factory.js.map +1 -0
- package/dist/biff/biff-ptg.d.ts +14 -0
- package/dist/biff/biff-ptg.d.ts.map +1 -0
- package/dist/biff/biff-ptg.js +277 -0
- package/dist/biff/biff-ptg.js.map +1 -0
- package/dist/biff/biff-records.d.ts +163 -0
- package/dist/biff/biff-records.d.ts.map +1 -0
- package/dist/biff/biff-records.js +579 -0
- package/dist/biff/biff-records.js.map +1 -0
- package/dist/biff/biff-shared-string-model.d.ts +13 -0
- package/dist/biff/biff-shared-string-model.d.ts.map +1 -0
- package/dist/biff/biff-shared-string-model.js +41 -0
- package/dist/biff/biff-shared-string-model.js.map +1 -0
- package/dist/biff/biff-style-model.d.ts +39 -0
- package/dist/biff/biff-style-model.d.ts.map +1 -0
- package/dist/biff/biff-style-model.js +182 -0
- package/dist/biff/biff-style-model.js.map +1 -0
- package/dist/biff/biff-workbook-model.d.ts +17 -0
- package/dist/biff/biff-workbook-model.d.ts.map +1 -0
- package/dist/biff/biff-workbook-model.js +64 -0
- package/dist/biff/biff-workbook-model.js.map +1 -0
- package/dist/biff/biff-worksheet-model.d.ts +69 -0
- package/dist/biff/biff-worksheet-model.d.ts.map +1 -0
- package/dist/biff/biff-worksheet-model.js +495 -0
- package/dist/biff/biff-worksheet-model.js.map +1 -0
- package/dist/biff/biff12-codec.d.ts +149 -0
- package/dist/biff/biff12-codec.d.ts.map +1 -0
- package/dist/biff/biff12-codec.js +262 -0
- package/dist/biff/biff12-codec.js.map +1 -0
- package/dist/excel-cell.d.ts +0 -6
- package/dist/excel-cell.d.ts.map +1 -1
- package/dist/excel-cell.js +2 -24
- package/dist/excel-cell.js.map +1 -1
- package/dist/excel-col.js.map +1 -1
- package/dist/excel-row.js.map +1 -1
- package/dist/excel-workbook.d.ts +4 -21
- package/dist/excel-workbook.d.ts.map +1 -1
- package/dist/excel-workbook.js +16 -49
- package/dist/excel-workbook.js.map +1 -1
- package/dist/excel-worksheet.d.ts +0 -11
- package/dist/excel-worksheet.d.ts.map +1 -1
- package/dist/excel-worksheet.js +9 -46
- package/dist/excel-worksheet.js.map +1 -1
- package/dist/excel-wrapper.d.ts +0 -10
- package/dist/excel-wrapper.d.ts.map +1 -1
- package/dist/excel-wrapper.js +0 -10
- package/dist/excel-wrapper.js.map +1 -1
- package/dist/models/excel-format.d.ts +3 -0
- package/dist/models/excel-format.d.ts.map +1 -0
- package/dist/models/excel-format.js +2 -0
- package/dist/models/excel-format.js.map +1 -0
- package/dist/models/excel-model-factory.d.ts +33 -0
- package/dist/models/excel-model-factory.d.ts.map +1 -0
- package/dist/models/excel-model-factory.js +2 -0
- package/dist/models/excel-model-factory.js.map +1 -0
- package/dist/models/excel-model.d.ts +12 -0
- package/dist/models/excel-model.d.ts.map +1 -0
- package/dist/models/excel-model.js +2 -0
- package/dist/models/excel-model.js.map +1 -0
- package/dist/models/i-content-type-model.d.ts +7 -0
- package/dist/models/i-content-type-model.d.ts.map +1 -0
- package/dist/models/i-content-type-model.js +2 -0
- package/dist/models/i-content-type-model.js.map +1 -0
- package/dist/models/i-drawing-model.d.ts +23 -0
- package/dist/models/i-drawing-model.d.ts.map +1 -0
- package/dist/models/i-drawing-model.js +2 -0
- package/dist/models/i-drawing-model.js.map +1 -0
- package/dist/models/i-relationship-model.d.ts +16 -0
- package/dist/models/i-relationship-model.d.ts.map +1 -0
- package/dist/models/i-relationship-model.js +2 -0
- package/dist/models/i-relationship-model.js.map +1 -0
- package/dist/models/i-shared-string-model.d.ts +9 -0
- package/dist/models/i-shared-string-model.d.ts.map +1 -0
- package/dist/models/i-shared-string-model.js +2 -0
- package/dist/models/i-shared-string-model.js.map +1 -0
- package/dist/models/i-style-model.d.ts +18 -0
- package/dist/models/i-style-model.d.ts.map +1 -0
- package/dist/models/i-style-model.js +2 -0
- package/dist/models/i-style-model.js.map +1 -0
- package/dist/models/i-workbook-model.d.ts +17 -0
- package/dist/models/i-workbook-model.d.ts.map +1 -0
- package/dist/models/i-workbook-model.js +2 -0
- package/dist/models/i-workbook-model.js.map +1 -0
- package/dist/models/i-worksheet-model.d.ts +39 -0
- package/dist/models/i-worksheet-model.d.ts.map +1 -0
- package/dist/models/i-worksheet-model.js +2 -0
- package/dist/models/i-worksheet-model.js.map +1 -0
- package/dist/models/shared/excel-cf-spec.d.ts +13 -0
- package/dist/models/shared/excel-cf-spec.d.ts.map +1 -0
- package/dist/models/shared/excel-cf-spec.js +2 -0
- package/dist/models/shared/excel-cf-spec.js.map +1 -0
- package/dist/models/shared/excel-style.d.ts +24 -0
- package/dist/models/shared/excel-style.d.ts.map +1 -0
- package/dist/models/shared/excel-style.js +38 -0
- package/dist/models/shared/excel-style.js.map +1 -0
- package/dist/types.d.ts +0 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/excel-style-data.d.ts +3 -5
- package/dist/utils/excel-style-data.d.ts.map +1 -1
- package/dist/utils/excel-style-data.js +2 -16
- package/dist/utils/excel-style-data.js.map +1 -1
- package/dist/utils/zip-cache.d.ts +46 -9
- package/dist/utils/zip-cache.d.ts.map +1 -1
- package/dist/utils/zip-cache.js +138 -52
- package/dist/utils/zip-cache.js.map +1 -1
- package/dist/xml/excel-xml-content-type.d.ts +8 -4
- package/dist/xml/excel-xml-content-type.d.ts.map +1 -1
- package/dist/xml/excel-xml-content-type.js +13 -6
- package/dist/xml/excel-xml-content-type.js.map +1 -1
- package/dist/xml/excel-xml-drawing.d.ts +8 -4
- package/dist/xml/excel-xml-drawing.d.ts.map +1 -1
- package/dist/xml/excel-xml-drawing.js +14 -7
- package/dist/xml/excel-xml-drawing.js.map +1 -1
- package/dist/xml/excel-xml-relationship.d.ts +12 -4
- package/dist/xml/excel-xml-relationship.d.ts.map +1 -1
- package/dist/xml/excel-xml-relationship.js +22 -12
- package/dist/xml/excel-xml-relationship.js.map +1 -1
- package/dist/xml/excel-xml-shared-string.d.ts +8 -4
- package/dist/xml/excel-xml-shared-string.d.ts.map +1 -1
- package/dist/xml/excel-xml-shared-string.js +16 -9
- package/dist/xml/excel-xml-shared-string.js.map +1 -1
- package/dist/xml/excel-xml-style.d.ts +11 -22
- package/dist/xml/excel-xml-style.d.ts.map +1 -1
- package/dist/xml/excel-xml-style.js +66 -92
- package/dist/xml/excel-xml-style.js.map +1 -1
- package/dist/xml/excel-xml-unknown.d.ts +6 -5
- package/dist/xml/excel-xml-unknown.d.ts.map +1 -1
- package/dist/xml/excel-xml-unknown.js +7 -4
- package/dist/xml/excel-xml-unknown.js.map +1 -1
- package/dist/xml/excel-xml-workbook.d.ts +9 -4
- package/dist/xml/excel-xml-workbook.d.ts.map +1 -1
- package/dist/xml/excel-xml-workbook.js +28 -20
- package/dist/xml/excel-xml-workbook.js.map +1 -1
- package/dist/xml/excel-xml-worksheet.d.ts +12 -7
- package/dist/xml/excel-xml-worksheet.d.ts.map +1 -1
- package/dist/xml/excel-xml-worksheet.js +65 -50
- package/dist/xml/excel-xml-worksheet.js.map +1 -1
- package/dist/xml/xml-model-factory.d.ts +25 -0
- package/dist/xml/xml-model-factory.d.ts.map +1 -0
- package/dist/xml/xml-model-factory.js +66 -0
- package/dist/xml/xml-model-factory.js.map +1 -0
- package/package.json +2 -2
- package/src/biff/biff-model-factory.ts +101 -0
- package/src/biff/biff-ptg.ts +289 -0
- package/src/biff/biff-records.ts +686 -0
- package/src/biff/biff-shared-string-model.ts +52 -0
- package/src/biff/biff-style-model.ts +219 -0
- package/src/biff/biff-workbook-model.ts +83 -0
- package/src/biff/biff-worksheet-model.ts +545 -0
- package/src/biff/biff12-codec.ts +286 -0
- package/src/excel-cell.ts +12 -46
- package/src/excel-col.ts +3 -3
- package/src/excel-row.ts +3 -3
- package/src/excel-workbook.ts +26 -69
- package/src/excel-worksheet.ts +36 -107
- package/src/excel-wrapper.ts +0 -10
- package/src/models/excel-format.ts +2 -0
- package/src/models/excel-model-factory.ts +33 -0
- package/src/models/excel-model.ts +12 -0
- package/src/models/i-content-type-model.ts +7 -0
- package/src/models/i-drawing-model.ts +13 -0
- package/src/models/i-relationship-model.ts +13 -0
- package/src/models/i-shared-string-model.ts +9 -0
- package/src/models/i-style-model.ts +18 -0
- package/src/models/i-workbook-model.ts +17 -0
- package/src/models/i-worksheet-model.ts +40 -0
- package/src/models/shared/excel-cf-spec.ts +24 -0
- package/src/models/shared/excel-style.ts +65 -0
- package/src/types.ts +0 -13
- package/src/utils/excel-style-data.ts +4 -25
- package/src/utils/zip-cache.ts +189 -58
- package/src/xml/excel-xml-content-type.ts +18 -8
- package/src/xml/excel-xml-drawing.ts +19 -9
- package/src/xml/excel-xml-relationship.ts +28 -14
- package/src/xml/excel-xml-shared-string.ts +20 -11
- package/src/xml/excel-xml-style.ts +74 -116
- package/src/xml/excel-xml-unknown.ts +8 -4
- package/src/xml/excel-xml-workbook.ts +34 -22
- package/src/xml/excel-xml-worksheet.ts +73 -53
- package/src/xml/xml-model-factory.ts +83 -0
package/dist/utils/zip-cache.js
CHANGED
|
@@ -1,82 +1,168 @@
|
|
|
1
|
-
import { ZipArchive
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ExcelXmlRelationship } from "../xml/excel-xml-relationship.js";
|
|
5
|
-
import { ExcelXmlSharedString } from "../xml/excel-xml-shared-string.js";
|
|
6
|
-
import { ExcelXmlStyle } from "../xml/excel-xml-style.js";
|
|
7
|
-
import { ExcelXmlUnknown } from "../xml/excel-xml-unknown.js";
|
|
8
|
-
import { ExcelXmlWorkbook } from "../xml/excel-xml-workbook.js";
|
|
9
|
-
import { ExcelXmlWorksheet } from "../xml/excel-xml-worksheet.js";
|
|
1
|
+
import { ZipArchive } from "@simplysm/core-common";
|
|
2
|
+
import { BiffModelFactory } from "../biff/biff-model-factory.js";
|
|
3
|
+
import { XmlModelFactory } from "../xml/xml-model-factory.js";
|
|
10
4
|
/**
|
|
11
5
|
* Excel ZIP 아카이브의 파일 캐시를 관리하는 클래스.
|
|
12
|
-
*
|
|
6
|
+
* 모델 파트는 포맷별 팩토리로 파싱/직렬화하고, 기타 파일(media 등)은 바이트 배열로 캐싱한다.
|
|
13
7
|
*
|
|
14
8
|
* @remarks
|
|
15
|
-
* ##
|
|
9
|
+
* ## 포맷 판별·경로 정규화
|
|
16
10
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
11
|
+
* 기존 파일은 `xl/workbook.bin` 존재 여부로 xlsx/xlsb 를 1회 판별한다(없으면 xlsx).
|
|
12
|
+
* 상위 레이어는 `xl/workbook.xml` 같은 OOXML(.xml) 경로를 사용하므로, xlsb 워크북에서는
|
|
13
|
+
* 이를 `.bin` 경로로 정규화하여 상위 레이어가 포맷을 모르게 한다.
|
|
14
|
+
*
|
|
15
|
+
* ## Lazy Loading
|
|
16
|
+
*
|
|
17
|
+
* 파일은 최초 접근 시에만 ZIP 에서 읽고 파싱하며, 이후 접근은 캐싱된 객체를 반환한다.
|
|
20
18
|
*/
|
|
21
19
|
export class ZipCache {
|
|
22
20
|
_cache = new Map();
|
|
23
21
|
_zip;
|
|
24
|
-
|
|
22
|
+
_factory;
|
|
23
|
+
constructor(arg, format) {
|
|
25
24
|
this._zip = new ZipArchive(arg);
|
|
25
|
+
if (format != null) {
|
|
26
|
+
this._factory = format === "xlsb" ? new BiffModelFactory() : new XmlModelFactory();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/** 워크북 포맷. 미판별 시 xlsx 로 간주. */
|
|
30
|
+
get format() {
|
|
31
|
+
return (this._factory ??= new XmlModelFactory()).format;
|
|
32
|
+
}
|
|
33
|
+
/** 기존 파일 포맷을 1회 판별해 팩토리 확정 (async). */
|
|
34
|
+
async _resolveFactory() {
|
|
35
|
+
if (this._factory == null) {
|
|
36
|
+
const isXlsb = (await this._zip.get("xl/workbook.bin")) != null;
|
|
37
|
+
this._factory = isXlsb ? new BiffModelFactory() : new XmlModelFactory();
|
|
38
|
+
}
|
|
39
|
+
return this._factory;
|
|
40
|
+
}
|
|
41
|
+
/** 새(빈) 워크북의 동기 생성 경로용 팩토리. 빈 워크북은 xlsx 로 본다. */
|
|
42
|
+
get _syncFactory() {
|
|
43
|
+
return (this._factory ??= new XmlModelFactory());
|
|
44
|
+
}
|
|
45
|
+
/** 상위 레이어의 .xml 고정 경로를 xlsb 의 실제 .bin 경로로 정규화. */
|
|
46
|
+
_resolvePath(filePath) {
|
|
47
|
+
if (this._factory?.format !== "xlsb")
|
|
48
|
+
return filePath;
|
|
49
|
+
switch (filePath) {
|
|
50
|
+
case "xl/workbook.xml":
|
|
51
|
+
return "xl/workbook.bin";
|
|
52
|
+
case "xl/sharedStrings.xml":
|
|
53
|
+
return "xl/sharedStrings.bin";
|
|
54
|
+
case "xl/styles.xml":
|
|
55
|
+
return "xl/styles.bin";
|
|
56
|
+
case "xl/_rels/workbook.xml.rels":
|
|
57
|
+
return "xl/_rels/workbook.bin.rels";
|
|
58
|
+
default: {
|
|
59
|
+
const m = /^(xl\/worksheets\/_rels\/sheet\d+)\.xml\.rels$/.exec(filePath);
|
|
60
|
+
return m != null ? `${m[1]}.bin.rels` : filePath;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
26
63
|
}
|
|
27
64
|
async get(filePath) {
|
|
28
|
-
|
|
29
|
-
|
|
65
|
+
const factory = await this._resolveFactory();
|
|
66
|
+
const path = this._resolvePath(filePath);
|
|
67
|
+
if (this._cache.has(path)) {
|
|
68
|
+
return this._cache.get(path);
|
|
30
69
|
}
|
|
31
|
-
const fileData = await this._zip.get(
|
|
70
|
+
const fileData = await this._zip.get(path);
|
|
32
71
|
if (fileData == null) {
|
|
33
|
-
this._cache.set(
|
|
72
|
+
this._cache.set(path, undefined);
|
|
34
73
|
return undefined;
|
|
35
74
|
}
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
const xml = xmlU.parse(fileText, { stripTagPrefix: true });
|
|
39
|
-
if (filePath.endsWith(".rels")) {
|
|
40
|
-
this._cache.set(filePath, new ExcelXmlRelationship(xml));
|
|
41
|
-
}
|
|
42
|
-
else if (filePath === "[Content_Types].xml") {
|
|
43
|
-
this._cache.set(filePath, new ExcelXmlContentType(xml));
|
|
44
|
-
}
|
|
45
|
-
else if (filePath === "xl/workbook.xml") {
|
|
46
|
-
this._cache.set(filePath, new ExcelXmlWorkbook(xml));
|
|
47
|
-
}
|
|
48
|
-
else if (filePath.startsWith("xl/worksheets/sheet") && filePath.endsWith(".xml")) {
|
|
49
|
-
this._cache.set(filePath, new ExcelXmlWorksheet(xml));
|
|
50
|
-
}
|
|
51
|
-
else if (filePath.startsWith("xl/drawings/drawing") && filePath.endsWith(".xml")) {
|
|
52
|
-
this._cache.set(filePath, new ExcelXmlDrawing(xml));
|
|
53
|
-
}
|
|
54
|
-
else if (filePath === "xl/sharedStrings.xml") {
|
|
55
|
-
this._cache.set(filePath, new ExcelXmlSharedString(xml));
|
|
56
|
-
}
|
|
57
|
-
else if (filePath === "xl/styles.xml") {
|
|
58
|
-
this._cache.set(filePath, new ExcelXmlStyle(xml));
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
this._cache.set(filePath, new ExcelXmlUnknown(xml));
|
|
62
|
-
}
|
|
75
|
+
if (factory.isModelPart(path)) {
|
|
76
|
+
this._cache.set(path, factory.parse(path, fileData));
|
|
63
77
|
}
|
|
64
78
|
else {
|
|
65
|
-
this._cache.set(
|
|
79
|
+
this._cache.set(path, fileData);
|
|
66
80
|
}
|
|
67
|
-
return this._cache.get(
|
|
81
|
+
return this._cache.get(path);
|
|
68
82
|
}
|
|
69
83
|
set(filePath, content) {
|
|
70
|
-
this._cache.set(filePath, content);
|
|
84
|
+
this._cache.set(this._resolvePath(filePath), content);
|
|
85
|
+
}
|
|
86
|
+
//#region Factory Delegation (빈 모델 생성)
|
|
87
|
+
createWorkbook() {
|
|
88
|
+
return this._syncFactory.createWorkbook();
|
|
89
|
+
}
|
|
90
|
+
createWorksheet() {
|
|
91
|
+
return this._syncFactory.createWorksheet();
|
|
92
|
+
}
|
|
93
|
+
createStyle() {
|
|
94
|
+
return this._syncFactory.createStyle();
|
|
95
|
+
}
|
|
96
|
+
createSharedString() {
|
|
97
|
+
return this._syncFactory.createSharedString();
|
|
98
|
+
}
|
|
99
|
+
createContentType() {
|
|
100
|
+
return this._syncFactory.createContentType();
|
|
101
|
+
}
|
|
102
|
+
createRelationship() {
|
|
103
|
+
return this._syncFactory.createRelationship();
|
|
104
|
+
}
|
|
105
|
+
createDrawing() {
|
|
106
|
+
return this._syncFactory.createDrawing();
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region Part 등록 (포맷별 content-type·rel·part 생성)
|
|
110
|
+
/**
|
|
111
|
+
* 워크시트 파트를 등록한다. content-type override, workbook rels, 빈 worksheet 모델을 포맷에 맞게 생성하고
|
|
112
|
+
* worksheet 파일명(`sheetN.xml` | `sheetN.bin`)을 반환한다.
|
|
113
|
+
*/
|
|
114
|
+
async registerWorksheet(relId) {
|
|
115
|
+
const xlsb = this.format === "xlsb";
|
|
116
|
+
const fileName = `sheet${relId}.${xlsb ? "bin" : "xml"}`;
|
|
117
|
+
const typeXml = (await this.get("[Content_Types].xml"));
|
|
118
|
+
typeXml.add(`/xl/worksheets/${fileName}`, xlsb
|
|
119
|
+
? "application/vnd.ms-excel.worksheet"
|
|
120
|
+
: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml");
|
|
121
|
+
const wbRel = (await this.get("xl/_rels/workbook.xml.rels"));
|
|
122
|
+
wbRel.insert(relId, `worksheets/${fileName}`, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet");
|
|
123
|
+
this.set(`xl/worksheets/${fileName}`, this.createWorksheet());
|
|
124
|
+
return fileName;
|
|
125
|
+
}
|
|
126
|
+
/** sharedStrings 파트를 보장(없으면 생성+등록)하고 모델을 반환한다. */
|
|
127
|
+
async ensureSharedStrings() {
|
|
128
|
+
let ss = (await this.get("xl/sharedStrings.xml"));
|
|
129
|
+
if (ss == null) {
|
|
130
|
+
const xlsb = this.format === "xlsb";
|
|
131
|
+
ss = this.createSharedString();
|
|
132
|
+
this.set("xl/sharedStrings.xml", ss);
|
|
133
|
+
const typeXml = (await this.get("[Content_Types].xml"));
|
|
134
|
+
typeXml.add(`/xl/sharedStrings.${xlsb ? "bin" : "xml"}`, xlsb
|
|
135
|
+
? "application/vnd.ms-excel.sharedStrings"
|
|
136
|
+
: "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml");
|
|
137
|
+
const wbRel = (await this.get("xl/_rels/workbook.xml.rels"));
|
|
138
|
+
wbRel.add(`sharedStrings.${xlsb ? "bin" : "xml"}`, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings");
|
|
139
|
+
}
|
|
140
|
+
return ss;
|
|
141
|
+
}
|
|
142
|
+
/** styles 파트를 보장(없으면 생성+등록)하고 모델을 반환한다. */
|
|
143
|
+
async ensureStyles() {
|
|
144
|
+
let st = (await this.get("xl/styles.xml"));
|
|
145
|
+
if (st == null) {
|
|
146
|
+
const xlsb = this.format === "xlsb";
|
|
147
|
+
st = this.createStyle();
|
|
148
|
+
this.set("xl/styles.xml", st);
|
|
149
|
+
const typeXml = (await this.get("[Content_Types].xml"));
|
|
150
|
+
typeXml.add(`/xl/styles.${xlsb ? "bin" : "xml"}`, xlsb
|
|
151
|
+
? "application/vnd.ms-excel.styles"
|
|
152
|
+
: "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml");
|
|
153
|
+
const wbRel = (await this.get("xl/_rels/workbook.xml.rels"));
|
|
154
|
+
wbRel.add(`styles.${xlsb ? "bin" : "xml"}`, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles");
|
|
155
|
+
}
|
|
156
|
+
return st;
|
|
71
157
|
}
|
|
158
|
+
//#endregion
|
|
72
159
|
async toBytes() {
|
|
73
160
|
for (const filePath of this._cache.keys()) {
|
|
74
161
|
const content = this._cache.get(filePath);
|
|
75
162
|
if (content == null)
|
|
76
163
|
continue;
|
|
77
|
-
if ("
|
|
78
|
-
content.
|
|
79
|
-
this._zip.write(filePath, new TextEncoder().encode(xmlU.stringify(content.data)));
|
|
164
|
+
if ("serialize" in content) {
|
|
165
|
+
this._zip.write(filePath, content.serialize());
|
|
80
166
|
}
|
|
81
167
|
else {
|
|
82
168
|
this._zip.write(filePath, content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-cache.js","sourceRoot":"","sources":["../../src/utils/zip-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"zip-cache.js","sourceRoot":"","sources":["../../src/utils/zip-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Bytes } from "@simplysm/core-common";
|
|
2
|
+
import type { IContentTypeModel } from "../models/i-content-type-model";
|
|
3
|
+
import type { ExcelXmlContentTypeData } from "../types";
|
|
2
4
|
/**
|
|
3
5
|
* [Content_Types].xml을 관리하는 클래스.
|
|
4
6
|
* 파일별 MIME 타입 정보를 관리한다.
|
|
5
7
|
*/
|
|
6
|
-
export declare class ExcelXmlContentType implements
|
|
7
|
-
|
|
8
|
+
export declare class ExcelXmlContentType implements IContentTypeModel {
|
|
9
|
+
private readonly _data;
|
|
8
10
|
constructor(data?: ExcelXmlContentTypeData);
|
|
11
|
+
/** @internal 테스트·디버그용 내부 트리 접근. 상위 레이어는 인터페이스만 사용. */
|
|
12
|
+
get data(): ExcelXmlContentTypeData;
|
|
9
13
|
add(partName: string, contentType: string): this;
|
|
10
|
-
|
|
14
|
+
serialize(): Bytes;
|
|
11
15
|
}
|
|
12
16
|
//# sourceMappingURL=excel-xml-content-type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-xml-content-type.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-content-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"excel-xml-content-type.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-content-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;gBAEpC,IAAI,CAAC,EAAE,uBAAuB;IAqC1C,sDAAsD;IACtD,IAAI,IAAI,IAAI,uBAAuB,CAElC;IAED,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAiBhD,SAAS,IAAI,KAAK;CAGnB"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { xml as xmlU } from "@simplysm/core-common";
|
|
1
2
|
/**
|
|
2
3
|
* [Content_Types].xml을 관리하는 클래스.
|
|
3
4
|
* 파일별 MIME 타입 정보를 관리한다.
|
|
4
5
|
*/
|
|
5
6
|
export class ExcelXmlContentType {
|
|
6
|
-
|
|
7
|
+
_data;
|
|
7
8
|
constructor(data) {
|
|
8
9
|
if (data == null) {
|
|
9
|
-
this.
|
|
10
|
+
this._data = {
|
|
10
11
|
Types: {
|
|
11
12
|
$: {
|
|
12
13
|
xmlns: "http://schemas.openxmlformats.org/package/2006/content-types",
|
|
@@ -37,16 +38,20 @@ export class ExcelXmlContentType {
|
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
else {
|
|
40
|
-
this.
|
|
41
|
+
this._data = data;
|
|
41
42
|
}
|
|
42
43
|
}
|
|
44
|
+
/** @internal 테스트·디버그용 내부 트리 접근. 상위 레이어는 인터페이스만 사용. */
|
|
45
|
+
get data() {
|
|
46
|
+
return this._data;
|
|
47
|
+
}
|
|
43
48
|
add(partName, contentType) {
|
|
44
49
|
// 중복 검사
|
|
45
|
-
const exists = this.
|
|
50
|
+
const exists = this._data.Types.Override.some((item) => item.$.PartName === partName);
|
|
46
51
|
if (exists) {
|
|
47
52
|
return this;
|
|
48
53
|
}
|
|
49
|
-
this.
|
|
54
|
+
this._data.Types.Override.push({
|
|
50
55
|
$: {
|
|
51
56
|
PartName: partName,
|
|
52
57
|
ContentType: contentType,
|
|
@@ -54,6 +59,8 @@ export class ExcelXmlContentType {
|
|
|
54
59
|
});
|
|
55
60
|
return this;
|
|
56
61
|
}
|
|
57
|
-
|
|
62
|
+
serialize() {
|
|
63
|
+
return new TextEncoder().encode(xmlU.stringify(this._data));
|
|
64
|
+
}
|
|
58
65
|
}
|
|
59
66
|
//# sourceMappingURL=excel-xml-content-type.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-xml-content-type.js","sourceRoot":"","sources":["../../src/xml/excel-xml-content-type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"excel-xml-content-type.js","sourceRoot":"","sources":["../../src/xml/excel-xml-content-type.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAIpD;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACb,KAAK,CAA0B;IAEhD,YAAY,IAA8B;QACxC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG;gBACX,KAAK,EAAE;oBACL,CAAC,EAAE;wBACD,KAAK,EAAE,8DAA8D;qBACtE;oBACD,OAAO,EAAE;wBACP;4BACE,CAAC,EAAE;gCACD,SAAS,EAAE,MAAM;gCACjB,WAAW,EAAE,0DAA0D;6BACxE;yBACF;wBACD;4BACE,CAAC,EAAE;gCACD,SAAS,EAAE,KAAK;gCAChB,WAAW,EAAE,iBAAiB;6BAC/B;yBACF;qBACF;oBACD,QAAQ,EAAE;wBACR;4BACE,CAAC,EAAE;gCACD,QAAQ,EAAE,kBAAkB;gCAC5B,WAAW,EACT,4EAA4E;6BAC/E;yBACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,GAAG,CAAC,QAAgB,EAAE,WAAmB;QACvC,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACtF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC7B,CAAC,EAAE;gBACD,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,WAAW;aACzB;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS;QACP,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Bytes } from "@simplysm/core-common";
|
|
2
|
+
import type { IDrawingModel } from "../models/i-drawing-model";
|
|
3
|
+
import type { ExcelXmlDrawingData } from "../types";
|
|
2
4
|
/**
|
|
3
5
|
* xl/drawings/drawing*.xml 파일을 관리하는 클래스.
|
|
4
6
|
* 이미지 삽입을 위한 위치 및 참조 정보를 처리한다.
|
|
5
7
|
*/
|
|
6
|
-
export declare class ExcelXmlDrawing implements
|
|
7
|
-
|
|
8
|
+
export declare class ExcelXmlDrawing implements IDrawingModel {
|
|
9
|
+
private readonly _data;
|
|
8
10
|
constructor(data?: ExcelXmlDrawingData);
|
|
11
|
+
/** @internal 테스트·디버그용 내부 트리 접근. 상위 레이어는 인터페이스만 사용. */
|
|
12
|
+
get data(): ExcelXmlDrawingData;
|
|
9
13
|
addPicture(opts: {
|
|
10
14
|
from: {
|
|
11
15
|
r: number;
|
|
@@ -21,6 +25,6 @@ export declare class ExcelXmlDrawing implements ExcelXml {
|
|
|
21
25
|
};
|
|
22
26
|
blipRelId: string;
|
|
23
27
|
}): void;
|
|
24
|
-
|
|
28
|
+
serialize(): Bytes;
|
|
25
29
|
}
|
|
26
30
|
//# sourceMappingURL=excel-xml-drawing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-xml-drawing.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-drawing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"excel-xml-drawing.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-drawing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;gBAEhC,IAAI,CAAC,EAAE,mBAAmB;IAiBtC,sDAAsD;IACtD,IAAI,IAAI,IAAI,mBAAmB,CAE9B;IAED,UAAU,CAAC,IAAI,EAAE;QACf,IAAI,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAC/E,EAAE,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAC7E,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI;IAuDR,SAAS,IAAI,KAAK;CAGnB"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { xml as xmlU } from "@simplysm/core-common";
|
|
1
2
|
/**
|
|
2
3
|
* xl/drawings/drawing*.xml 파일을 관리하는 클래스.
|
|
3
4
|
* 이미지 삽입을 위한 위치 및 참조 정보를 처리한다.
|
|
4
5
|
*/
|
|
5
6
|
export class ExcelXmlDrawing {
|
|
6
|
-
|
|
7
|
+
_data;
|
|
7
8
|
constructor(data) {
|
|
8
9
|
if (data == null) {
|
|
9
|
-
this.
|
|
10
|
+
this._data = {
|
|
10
11
|
wsDr: {
|
|
11
12
|
$: {
|
|
12
13
|
"xmlns": "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
|
|
@@ -18,15 +19,19 @@ export class ExcelXmlDrawing {
|
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
21
|
else {
|
|
21
|
-
this.
|
|
22
|
+
this._data = data;
|
|
22
23
|
}
|
|
23
24
|
}
|
|
25
|
+
/** @internal 테스트·디버그용 내부 트리 접근. 상위 레이어는 인터페이스만 사용. */
|
|
26
|
+
get data() {
|
|
27
|
+
return this._data;
|
|
28
|
+
}
|
|
24
29
|
addPicture(opts) {
|
|
25
|
-
this.
|
|
26
|
-
const anchors = this.
|
|
30
|
+
this._data.wsDr.twoCellAnchor = this._data.wsDr.twoCellAnchor ?? [];
|
|
31
|
+
const anchors = this._data.wsDr.twoCellAnchor;
|
|
27
32
|
const picId = anchors.length + 1;
|
|
28
33
|
const name = `Picture ${picId}`;
|
|
29
|
-
this.
|
|
34
|
+
this._data.wsDr.twoCellAnchor.push({
|
|
30
35
|
from: [
|
|
31
36
|
{
|
|
32
37
|
col: [opts.from.c.toString()],
|
|
@@ -73,6 +78,8 @@ export class ExcelXmlDrawing {
|
|
|
73
78
|
clientData: [{}],
|
|
74
79
|
});
|
|
75
80
|
}
|
|
76
|
-
|
|
81
|
+
serialize() {
|
|
82
|
+
return new TextEncoder().encode(xmlU.stringify(this._data));
|
|
83
|
+
}
|
|
77
84
|
}
|
|
78
85
|
//# sourceMappingURL=excel-xml-drawing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-xml-drawing.js","sourceRoot":"","sources":["../../src/xml/excel-xml-drawing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"excel-xml-drawing.js","sourceRoot":"","sources":["../../src/xml/excel-xml-drawing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import "@simplysm/core-common";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Bytes } from "@simplysm/core-common";
|
|
3
|
+
import type { IRelationshipModel } from "../models/i-relationship-model";
|
|
4
|
+
import type { ExcelXmlRelationshipData } from "../types";
|
|
3
5
|
/**
|
|
4
6
|
* *.rels 파일을 관리하는 클래스.
|
|
5
7
|
* 파일 간의 참조 관계를 처리한다.
|
|
6
8
|
*/
|
|
7
|
-
export declare class ExcelXmlRelationship implements
|
|
8
|
-
|
|
9
|
+
export declare class ExcelXmlRelationship implements IRelationshipModel {
|
|
10
|
+
private readonly _data;
|
|
9
11
|
constructor(data?: ExcelXmlRelationshipData);
|
|
12
|
+
/** @internal 테스트·디버그용 내부 트리 접근. 상위 레이어는 인터페이스만 사용. */
|
|
13
|
+
get data(): ExcelXmlRelationshipData;
|
|
10
14
|
getTargetByRelId(rId: number): string | undefined;
|
|
11
15
|
add(target: string, type: string): this;
|
|
12
16
|
addAndGetId(target: string, type: string): number;
|
|
13
17
|
insert(rId: number, target: string, type: string): this;
|
|
14
|
-
|
|
18
|
+
findRelByType(type: string): {
|
|
19
|
+
relId: string;
|
|
20
|
+
target: string;
|
|
21
|
+
} | undefined;
|
|
22
|
+
serialize(): Bytes;
|
|
15
23
|
private get _lastId();
|
|
16
24
|
private _getRelId;
|
|
17
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-xml-relationship.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-relationship.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"excel-xml-relationship.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-relationship.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAyB,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAEhF;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;gBAErC,IAAI,CAAC,EAAE,wBAAwB;IAc3C,sDAAsD;IACtD,IAAI,IAAI,IAAI,wBAAwB,CAEnC;IAED,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKjD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKvC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAgBjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAqBvD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAK1E,SAAS,IAAI,KAAK;IAIlB,OAAO,KAAK,OAAO,GAKlB;IAED,OAAO,CAAC,SAAS;CAOlB"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import "@simplysm/core-common";
|
|
2
|
-
import { num } from "@simplysm/core-common";
|
|
2
|
+
import { num, xml as xmlU } from "@simplysm/core-common";
|
|
3
3
|
/**
|
|
4
4
|
* *.rels 파일을 관리하는 클래스.
|
|
5
5
|
* 파일 간의 참조 관계를 처리한다.
|
|
6
6
|
*/
|
|
7
7
|
export class ExcelXmlRelationship {
|
|
8
|
-
|
|
8
|
+
_data;
|
|
9
9
|
constructor(data) {
|
|
10
10
|
if (data == null) {
|
|
11
|
-
this.
|
|
11
|
+
this._data = {
|
|
12
12
|
Relationships: {
|
|
13
13
|
$: {
|
|
14
14
|
xmlns: "http://schemas.openxmlformats.org/package/2006/relationships",
|
|
@@ -17,11 +17,15 @@ export class ExcelXmlRelationship {
|
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
|
-
this.
|
|
20
|
+
this._data = data;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
+
/** @internal 테스트·디버그용 내부 트리 접근. 상위 레이어는 인터페이스만 사용. */
|
|
24
|
+
get data() {
|
|
25
|
+
return this._data;
|
|
26
|
+
}
|
|
23
27
|
getTargetByRelId(rId) {
|
|
24
|
-
return (this.
|
|
28
|
+
return (this._data.Relationships.Relationship ?? []).single((rel) => this._getRelId(rel) === rId)
|
|
25
29
|
?.$.Target;
|
|
26
30
|
}
|
|
27
31
|
add(target, type) {
|
|
@@ -29,9 +33,9 @@ export class ExcelXmlRelationship {
|
|
|
29
33
|
return this;
|
|
30
34
|
}
|
|
31
35
|
addAndGetId(target, type) {
|
|
32
|
-
this.
|
|
36
|
+
this._data.Relationships.Relationship = this._data.Relationships.Relationship ?? [];
|
|
33
37
|
const newId = (this._lastId ?? 0) + 1;
|
|
34
|
-
this.
|
|
38
|
+
this._data.Relationships.Relationship.push({
|
|
35
39
|
$: {
|
|
36
40
|
Id: `rId${newId}`,
|
|
37
41
|
Target: target,
|
|
@@ -41,12 +45,12 @@ export class ExcelXmlRelationship {
|
|
|
41
45
|
return newId;
|
|
42
46
|
}
|
|
43
47
|
insert(rId, target, type) {
|
|
44
|
-
this.
|
|
45
|
-
const shiftRels = this.
|
|
48
|
+
this._data.Relationships.Relationship = this._data.Relationships.Relationship ?? [];
|
|
49
|
+
const shiftRels = this._data.Relationships.Relationship.filter((rel) => this._getRelId(rel) >= rId);
|
|
46
50
|
for (const shiftRel of shiftRels) {
|
|
47
51
|
shiftRel.$.Id = `rId${this._getRelId(shiftRel) + 1}`;
|
|
48
52
|
}
|
|
49
|
-
this.
|
|
53
|
+
this._data.Relationships.Relationship.push({
|
|
50
54
|
$: {
|
|
51
55
|
Id: `rId${rId}`,
|
|
52
56
|
Target: target,
|
|
@@ -55,9 +59,15 @@ export class ExcelXmlRelationship {
|
|
|
55
59
|
});
|
|
56
60
|
return this;
|
|
57
61
|
}
|
|
58
|
-
|
|
62
|
+
findRelByType(type) {
|
|
63
|
+
const rel = (this._data.Relationships.Relationship ?? []).find((r) => r.$.Type === type);
|
|
64
|
+
return rel != null ? { relId: rel.$.Id, target: rel.$.Target } : undefined;
|
|
65
|
+
}
|
|
66
|
+
serialize() {
|
|
67
|
+
return new TextEncoder().encode(xmlU.stringify(this._data));
|
|
68
|
+
}
|
|
59
69
|
get _lastId() {
|
|
60
|
-
const rels = this.
|
|
70
|
+
const rels = this._data.Relationships.Relationship;
|
|
61
71
|
if (!rels || rels.length === 0)
|
|
62
72
|
return undefined;
|
|
63
73
|
const maxRel = rels.orderByDesc((rel) => this._getRelId(rel)).first();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-xml-relationship.js","sourceRoot":"","sources":["../../src/xml/excel-xml-relationship.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"excel-xml-relationship.js","sourceRoot":"","sources":["../../src/xml/excel-xml-relationship.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Bytes } from "@simplysm/core-common";
|
|
2
|
+
import type { ISharedStringModel } from "../models/i-shared-string-model";
|
|
3
|
+
import type { ExcelXmlSharedStringData } from "../types";
|
|
2
4
|
import "@simplysm/core-common";
|
|
3
5
|
/**
|
|
4
6
|
* xl/sharedStrings.xml을 관리하는 클래스.
|
|
5
7
|
* 문자열 중복을 방지하여 파일 크기를 최적화한다.
|
|
6
8
|
*/
|
|
7
|
-
export declare class ExcelXmlSharedString implements
|
|
8
|
-
|
|
9
|
+
export declare class ExcelXmlSharedString implements ISharedStringModel {
|
|
10
|
+
private readonly _data;
|
|
9
11
|
private readonly _stringIndexesMap;
|
|
10
12
|
constructor(data?: ExcelXmlSharedStringData);
|
|
13
|
+
/** @internal 테스트·디버그용 내부 트리 접근. 상위 레이어는 인터페이스만 사용. */
|
|
14
|
+
get data(): ExcelXmlSharedStringData;
|
|
11
15
|
getIdByString(str: string): number | undefined;
|
|
12
16
|
getStringById(id: number): string | undefined;
|
|
13
17
|
add(str: string): number;
|
|
14
|
-
|
|
18
|
+
serialize(): Bytes;
|
|
15
19
|
private _getStringFromSiTag;
|
|
16
20
|
private _getStringFromTTag;
|
|
17
21
|
private _getHasInnerStyleOnSiTag;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-xml-shared-string.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-shared-string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"excel-xml-shared-string.d.ts","sourceRoot":"","sources":["../../src/xml/excel-xml-shared-string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EACV,wBAAwB,EAGzB,MAAM,UAAU,CAAC;AAClB,OAAO,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IAEjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwB;gBAE9C,IAAI,CAAC,EAAE,wBAAwB;IAwB3C,sDAAsD;IACtD,IAAI,IAAI,IAAI,wBAAwB,CAEnC;IAED,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQxB,SAAS,IAAI,KAAK;IAIlB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,wBAAwB;CAGjC"}
|