docxmlater 9.5.0 → 9.5.2
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/core/Document.d.ts +1 -0
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +38 -7
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +2 -0
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +91 -34
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/elements/Table.d.ts +11 -0
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +33 -2
- package/dist/elements/Table.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +2 -7
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,7 +36,9 @@ export declare class DocumentParser {
|
|
|
36
36
|
}>;
|
|
37
37
|
private parseBodyElements;
|
|
38
38
|
private extractBodyLevelBookmarkEnds;
|
|
39
|
+
private extractBodyLevelBookmarkStarts;
|
|
39
40
|
private extractBookmarkEndsFromContent;
|
|
41
|
+
private extractInterRowElements;
|
|
40
42
|
private findNextTag;
|
|
41
43
|
private findNextTopLevelTag;
|
|
42
44
|
private countUnclosedTags;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAM9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAyC,MAAM,uBAAuB,CAAC;AAGzF,OAAO,EAEL,OAAO,EAGR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,KAAK,EAA8B,MAAM,qBAAqB,CAAC;AAexE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CACd;AAKD,KAAK,WAAW,GACZ,SAAS,GACT,KAAK,GACL,sBAAsB,GACtB,qBAAqB,CAAC;AAK1B,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,eAAe,CAAgC;gBAE3C,aAAa,GAAE,OAAe;IAO1C,cAAc,IAAI,UAAU,EAAE;IAO9B,gBAAgB,IAAI,IAAI;IAWlB,aAAa,CACjB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC;QACT,YAAY,EAAE,WAAW,EAAE,CAAC;QAC5B,UAAU,EAAE,kBAAkB,CAAC;QAC/B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;QACxC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;QACxC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;YAyFY,iBAAiB;
|
|
1
|
+
{"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -150,33 +150,37 @@ class DocumentParser {
|
|
|
150
150
|
candidates.sort((a, b) => a.pos - b.pos);
|
|
151
151
|
const next = candidates[0];
|
|
152
152
|
if (next) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
if (
|
|
156
|
-
const
|
|
157
|
-
if (
|
|
158
|
-
|
|
159
|
-
|
|
153
|
+
let pendingBookmarkStarts = [];
|
|
154
|
+
if (next.pos > pos) {
|
|
155
|
+
if (bodyElements.length > 0) {
|
|
156
|
+
const bookmarkEnds = this.extractBodyLevelBookmarkEnds(bodyContent, pos, next.pos);
|
|
157
|
+
if (bookmarkEnds.length > 0) {
|
|
158
|
+
const prevElement = bodyElements[bodyElements.length - 1];
|
|
159
|
+
if (prevElement instanceof Paragraph_1.Paragraph) {
|
|
160
|
+
for (const bookmark of bookmarkEnds) {
|
|
161
|
+
prevElement.addBookmarkEnd(bookmark);
|
|
162
|
+
}
|
|
160
163
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
164
|
+
else if (prevElement instanceof Table_1.Table) {
|
|
165
|
+
const rows = prevElement.getRows();
|
|
166
|
+
const lastRow = rows[rows.length - 1];
|
|
167
|
+
if (lastRow) {
|
|
168
|
+
const cells = lastRow.getCells();
|
|
169
|
+
const lastCell = cells[cells.length - 1];
|
|
170
|
+
if (lastCell) {
|
|
171
|
+
const cellParas = lastCell.getParagraphs();
|
|
172
|
+
const lastPara = cellParas[cellParas.length - 1];
|
|
173
|
+
if (lastPara) {
|
|
174
|
+
for (const bookmark of bookmarkEnds) {
|
|
175
|
+
lastPara.addBookmarkEnd(bookmark);
|
|
176
|
+
}
|
|
174
177
|
}
|
|
175
178
|
}
|
|
176
179
|
}
|
|
177
180
|
}
|
|
178
181
|
}
|
|
179
182
|
}
|
|
183
|
+
pendingBookmarkStarts = this.extractBodyLevelBookmarkStarts(bodyContent, pos, next.pos);
|
|
180
184
|
}
|
|
181
185
|
if (this.isPositionInsideDel(bodyContent, next.pos)) {
|
|
182
186
|
const delEndPos = this.findDelEndPosition(bodyContent, next.pos);
|
|
@@ -192,8 +196,12 @@ class DocumentParser {
|
|
|
192
196
|
const elementXml = this.extractSingleElement(bodyContent, "w:p", next.pos);
|
|
193
197
|
if (elementXml) {
|
|
194
198
|
const paragraph = await this.parseParagraphWithOrder(elementXml, relationshipManager, zipHandler, imageManager);
|
|
195
|
-
if (paragraph)
|
|
199
|
+
if (paragraph) {
|
|
200
|
+
for (const bookmark of pendingBookmarkStarts) {
|
|
201
|
+
paragraph.addBookmarkStart(bookmark);
|
|
202
|
+
}
|
|
196
203
|
bodyElements.push(paragraph);
|
|
204
|
+
}
|
|
197
205
|
pos = next.pos + elementXml.length;
|
|
198
206
|
}
|
|
199
207
|
else {
|
|
@@ -270,6 +278,27 @@ class DocumentParser {
|
|
|
270
278
|
: content.slice(startPos, endPos);
|
|
271
279
|
return this.extractBookmarkEndsFromContent(searchContent);
|
|
272
280
|
}
|
|
281
|
+
extractBodyLevelBookmarkStarts(content, startPos, endPos) {
|
|
282
|
+
const searchContent = endPos === -1 ? content.slice(startPos) : content.slice(startPos, endPos);
|
|
283
|
+
const bookmarks = [];
|
|
284
|
+
const bookmarkStartXmls = XMLParser_1.XMLParser.extractElements(searchContent, "w:bookmarkStart");
|
|
285
|
+
for (const bookmarkStartXml of bookmarkStartXmls) {
|
|
286
|
+
const idAttr = XMLParser_1.XMLParser.extractAttribute(bookmarkStartXml, "w:id");
|
|
287
|
+
const nameAttr = XMLParser_1.XMLParser.extractAttribute(bookmarkStartXml, "w:name");
|
|
288
|
+
if (idAttr) {
|
|
289
|
+
const id = parseInt(idAttr, 10);
|
|
290
|
+
if (!isNaN(id)) {
|
|
291
|
+
const bookmark = new Bookmark_1.Bookmark({
|
|
292
|
+
name: nameAttr || `_bookmark_${id}`,
|
|
293
|
+
id: id,
|
|
294
|
+
skipNormalization: true,
|
|
295
|
+
});
|
|
296
|
+
bookmarks.push(bookmark);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return bookmarks;
|
|
301
|
+
}
|
|
273
302
|
extractBookmarkEndsFromContent(content) {
|
|
274
303
|
const bookmarks = [];
|
|
275
304
|
const bookmarkEndXmls = XMLParser_1.XMLParser.extractElements(content, "w:bookmarkEnd");
|
|
@@ -289,6 +318,44 @@ class DocumentParser {
|
|
|
289
318
|
}
|
|
290
319
|
return bookmarks;
|
|
291
320
|
}
|
|
321
|
+
extractInterRowElements(content) {
|
|
322
|
+
const elements = [];
|
|
323
|
+
const interRowElementTypes = [
|
|
324
|
+
"w:bookmarkEnd",
|
|
325
|
+
"w:bookmarkStart",
|
|
326
|
+
"w:commentRangeEnd",
|
|
327
|
+
"w:commentRangeStart",
|
|
328
|
+
"w:customXmlDelRangeEnd",
|
|
329
|
+
"w:customXmlDelRangeStart",
|
|
330
|
+
"w:customXmlInsRangeEnd",
|
|
331
|
+
"w:customXmlInsRangeStart",
|
|
332
|
+
"w:customXmlMoveFromRangeEnd",
|
|
333
|
+
"w:customXmlMoveFromRangeStart",
|
|
334
|
+
"w:customXmlMoveToRangeEnd",
|
|
335
|
+
"w:customXmlMoveToRangeStart",
|
|
336
|
+
"w:moveFromRangeEnd",
|
|
337
|
+
"w:moveFromRangeStart",
|
|
338
|
+
"w:moveToRangeEnd",
|
|
339
|
+
"w:moveToRangeStart",
|
|
340
|
+
"w:permEnd",
|
|
341
|
+
"w:permStart",
|
|
342
|
+
];
|
|
343
|
+
for (const elementType of interRowElementTypes) {
|
|
344
|
+
const extracted = XMLParser_1.XMLParser.extractElements(content, elementType);
|
|
345
|
+
for (const xml of extracted) {
|
|
346
|
+
elements.push({
|
|
347
|
+
xml,
|
|
348
|
+
type: elementType.replace("w:", ""),
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
elements.sort((a, b) => {
|
|
353
|
+
const posA = content.indexOf(a.xml);
|
|
354
|
+
const posB = content.indexOf(b.xml);
|
|
355
|
+
return posA - posB;
|
|
356
|
+
});
|
|
357
|
+
return elements;
|
|
358
|
+
}
|
|
292
359
|
findNextTag(content, tagName, startPos) {
|
|
293
360
|
const tag = `<${tagName}`;
|
|
294
361
|
let pos = content.indexOf(tag, startPos);
|
|
@@ -3297,19 +3364,9 @@ class DocumentParser {
|
|
|
3297
3364
|
: rawTableXml.length;
|
|
3298
3365
|
if (nextRowStart && currentRowEnd < nextRowStart) {
|
|
3299
3366
|
const betweenContent = rawTableXml.slice(currentRowEnd, nextRowStart);
|
|
3300
|
-
const
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
const lastCell = cells[cells.length - 1];
|
|
3304
|
-
if (lastCell) {
|
|
3305
|
-
const cellParas = lastCell.getParagraphs();
|
|
3306
|
-
const lastPara = cellParas[cellParas.length - 1];
|
|
3307
|
-
if (lastPara) {
|
|
3308
|
-
for (const bookmark of bookmarkEnds) {
|
|
3309
|
-
lastPara.addBookmarkEnd(bookmark);
|
|
3310
|
-
}
|
|
3311
|
-
}
|
|
3312
|
-
}
|
|
3367
|
+
const interRowElements = this.extractInterRowElements(betweenContent);
|
|
3368
|
+
for (const element of interRowElements) {
|
|
3369
|
+
table.addInterRowContent(i, element.xml, element.type);
|
|
3313
3370
|
}
|
|
3314
3371
|
}
|
|
3315
3372
|
}
|