docxmlater 10.3.6 → 10.4.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/README.md +158 -7
- package/dist/core/Document.d.ts +97 -3
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +727 -50
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +0 -8
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +9 -5
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +573 -101
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +4 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/Bookmark.d.ts +7 -0
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +24 -4
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js +4 -3
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +2 -2
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +14 -1
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/Field.d.ts +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +1 -1
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/Footer.d.ts +2 -0
- package/dist/elements/Footer.d.ts.map +1 -1
- package/dist/elements/Footer.js +6 -0
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Header.d.ts +2 -0
- package/dist/elements/Header.d.ts.map +1 -1
- package/dist/elements/Header.js +6 -0
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +3 -0
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +81 -1
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +515 -21
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/Revision.d.ts +0 -1
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +0 -12
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts +0 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js +0 -2
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -4
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +114 -22
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts +7 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +185 -4
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/Table.d.ts +30 -1
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +357 -40
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +3 -0
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +30 -3
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts +0 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js +0 -10
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableRow.d.ts +4 -0
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +31 -3
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +5 -0
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +22 -0
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +3 -3
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/Style.d.ts +1 -0
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +25 -59
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +1 -0
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js +12 -0
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.d.ts.map +1 -1
- package/dist/images/ImageOptimizer.js +0 -1
- package/dist/images/ImageOptimizer.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/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js +4 -2
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/types/formatting.d.ts +2 -2
- package/dist/types/formatting.d.ts.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts +2 -2
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js +4 -5
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.d.ts +2 -2
- package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js +2 -2
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts +0 -2
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js +0 -26
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.d.ts.map +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.js +1 -1
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/stripTrackedChanges.js +1 -1
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/units.d.ts.map +1 -1
- package/dist/utils/units.js +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts +2 -1
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/package.json +10 -1
- package/src/constants/CLAUDE.md +28 -0
- package/src/core/CLAUDE.md +4 -0
- package/src/core/Document.ts +1755 -85
- package/src/core/DocumentContent.ts +0 -11
- package/src/core/DocumentGenerator.ts +11 -12
- package/src/core/DocumentParser.ts +599 -138
- package/src/core/RelationshipManager.ts +6 -3
- package/src/elements/Bookmark.ts +39 -4
- package/src/elements/BookmarkManager.ts +4 -3
- package/src/elements/CLAUDE.md +18 -2
- package/src/elements/CommonTypes.ts +35 -8
- package/src/elements/Field.ts +1 -1
- package/src/elements/Footer.ts +23 -0
- package/src/elements/Header.ts +25 -0
- package/src/elements/Image.ts +5 -0
- package/src/elements/Paragraph.ts +1069 -41
- package/src/elements/Revision.ts +0 -19
- package/src/elements/RevisionManager.ts +1 -3
- package/src/elements/Run.ts +265 -35
- package/src/elements/Section.ts +214 -8
- package/src/elements/Shape.ts +1 -1
- package/src/elements/Table.ts +850 -61
- package/src/elements/TableCell.ts +84 -10
- package/src/elements/TableGridChange.ts +2 -16
- package/src/elements/TableRow.ts +94 -9
- package/src/formatting/AbstractNumbering.ts +42 -1
- package/src/formatting/CLAUDE.md +4 -0
- package/src/formatting/NumberingLevel.ts +11 -7
- package/src/formatting/Style.ts +39 -71
- package/src/formatting/StylesManager.ts +36 -0
- package/src/helpers/CleanupHelper.ts +1 -1
- package/src/images/ImageOptimizer.ts +0 -3
- package/src/index.ts +1 -1
- package/src/managers/DrawingManager.ts +5 -3
- package/src/tracking/CLAUDE.md +30 -0
- package/src/types/CLAUDE.md +39 -0
- package/src/types/formatting.ts +2 -2
- package/src/utils/CLAUDE.md +15 -0
- package/src/utils/ChangelogGenerator.ts +4 -5
- package/src/utils/InMemoryRevisionAcceptor.ts +0 -9
- package/src/utils/RevisionAwareProcessor.ts +2 -3
- package/src/utils/SelectiveRevisionAcceptor.ts +0 -39
- package/src/utils/ShadingResolver.ts +0 -1
- package/src/utils/acceptRevisions.ts +1 -1
- package/src/utils/stripTrackedChanges.ts +1 -1
- package/src/utils/units.ts +2 -1
- package/src/validation/CLAUDE.md +40 -0
- package/src/validation/RevisionAutoFixer.ts +2 -1
package/src/elements/Section.ts
CHANGED
|
@@ -96,6 +96,8 @@ export interface PageSize {
|
|
|
96
96
|
height: number;
|
|
97
97
|
/** Orientation */
|
|
98
98
|
orientation?: PageOrientation;
|
|
99
|
+
/** Paper size code per ECMA-376 ST_PaperSize (1=Letter, 9=A4, 5=Legal, etc.) */
|
|
100
|
+
code?: number;
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
/**
|
|
@@ -132,6 +134,8 @@ export interface Columns {
|
|
|
132
134
|
separator?: boolean;
|
|
133
135
|
/** Individual column widths (for unequal columns) in twips */
|
|
134
136
|
columnWidths?: number[];
|
|
137
|
+
/** Individual column spacings (space after each column) in twips — per ECMA-376 CT_Column */
|
|
138
|
+
columnSpaces?: number[];
|
|
135
139
|
}
|
|
136
140
|
|
|
137
141
|
/**
|
|
@@ -560,6 +564,16 @@ export class Section {
|
|
|
560
564
|
: undefined;
|
|
561
565
|
}
|
|
562
566
|
|
|
567
|
+
/**
|
|
568
|
+
* Gets per-column spacing (space after each column) in twips
|
|
569
|
+
* @returns Array of column spacings, or undefined if not set
|
|
570
|
+
*/
|
|
571
|
+
getColumnSpaces(): number[] | undefined {
|
|
572
|
+
return this.properties.columns?.columnSpaces
|
|
573
|
+
? [...this.properties.columns.columnSpaces]
|
|
574
|
+
: undefined;
|
|
575
|
+
}
|
|
576
|
+
|
|
563
577
|
/**
|
|
564
578
|
* Gets the text direction
|
|
565
579
|
* @returns Text direction or undefined if not set
|
|
@@ -1107,6 +1121,9 @@ export class Section {
|
|
|
1107
1121
|
if (this.properties.pageSize.orientation === 'landscape') {
|
|
1108
1122
|
attrs['w:orient'] = 'landscape';
|
|
1109
1123
|
}
|
|
1124
|
+
if (this.properties.pageSize.code !== undefined) {
|
|
1125
|
+
attrs['w:code'] = this.properties.pageSize.code.toString();
|
|
1126
|
+
}
|
|
1110
1127
|
children.push(XMLBuilder.wSelf('pgSz', attrs));
|
|
1111
1128
|
}
|
|
1112
1129
|
|
|
@@ -1229,8 +1246,17 @@ export class Section {
|
|
|
1229
1246
|
|
|
1230
1247
|
const colChildren: XMLElement[] = [];
|
|
1231
1248
|
if (this.properties.columns.columnWidths) {
|
|
1232
|
-
|
|
1233
|
-
|
|
1249
|
+
const widths = this.properties.columns.columnWidths;
|
|
1250
|
+
const spaces = this.properties.columns.columnSpaces;
|
|
1251
|
+
for (let i = 0; i < widths.length; i++) {
|
|
1252
|
+
const colAttrs: Record<string, string | number> = {
|
|
1253
|
+
'w:w': widths[i]!.toString(),
|
|
1254
|
+
};
|
|
1255
|
+
const spaceVal = spaces?.[i];
|
|
1256
|
+
if (spaceVal !== undefined) {
|
|
1257
|
+
colAttrs['w:space'] = spaceVal.toString();
|
|
1258
|
+
}
|
|
1259
|
+
colChildren.push(XMLBuilder.wSelf('col', colAttrs));
|
|
1234
1260
|
}
|
|
1235
1261
|
}
|
|
1236
1262
|
|
|
@@ -1324,8 +1350,50 @@ export class Section {
|
|
|
1324
1350
|
const prevChildren: XMLElement[] = [];
|
|
1325
1351
|
const prev = this.sectPrChange.previousProperties;
|
|
1326
1352
|
if (prev) {
|
|
1327
|
-
// Ordered per CT_SectPrBase:
|
|
1328
|
-
//
|
|
1353
|
+
// Ordered per CT_SectPrBase (ECMA-376 §17.6.18):
|
|
1354
|
+
// footnotePr → endnotePr → type → pgSz → pgMar → paperSrc → pgBorders →
|
|
1355
|
+
// lnNumType → pgNumType → cols → formProt → vAlign → noEndnote → titlePg →
|
|
1356
|
+
// textDirection → bidi → rtlGutter → docGrid
|
|
1357
|
+
if (prev.footnotePr) {
|
|
1358
|
+
const fnChildren: XMLElement[] = [];
|
|
1359
|
+
if (prev.footnotePr.position) {
|
|
1360
|
+
fnChildren.push(XMLBuilder.wSelf('pos', { 'w:val': prev.footnotePr.position }));
|
|
1361
|
+
}
|
|
1362
|
+
if (prev.footnotePr.numberFormat) {
|
|
1363
|
+
fnChildren.push(XMLBuilder.wSelf('numFmt', { 'w:val': prev.footnotePr.numberFormat }));
|
|
1364
|
+
}
|
|
1365
|
+
if (prev.footnotePr.startNumber !== undefined) {
|
|
1366
|
+
fnChildren.push(
|
|
1367
|
+
XMLBuilder.wSelf('numStart', { 'w:val': prev.footnotePr.startNumber.toString() })
|
|
1368
|
+
);
|
|
1369
|
+
}
|
|
1370
|
+
if (prev.footnotePr.restart) {
|
|
1371
|
+
fnChildren.push(XMLBuilder.wSelf('numRestart', { 'w:val': prev.footnotePr.restart }));
|
|
1372
|
+
}
|
|
1373
|
+
if (fnChildren.length > 0) {
|
|
1374
|
+
prevChildren.push(XMLBuilder.w('footnotePr', undefined, fnChildren));
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
if (prev.endnotePr) {
|
|
1378
|
+
const enChildren: XMLElement[] = [];
|
|
1379
|
+
if (prev.endnotePr.position) {
|
|
1380
|
+
enChildren.push(XMLBuilder.wSelf('pos', { 'w:val': prev.endnotePr.position }));
|
|
1381
|
+
}
|
|
1382
|
+
if (prev.endnotePr.numberFormat) {
|
|
1383
|
+
enChildren.push(XMLBuilder.wSelf('numFmt', { 'w:val': prev.endnotePr.numberFormat }));
|
|
1384
|
+
}
|
|
1385
|
+
if (prev.endnotePr.startNumber !== undefined) {
|
|
1386
|
+
enChildren.push(
|
|
1387
|
+
XMLBuilder.wSelf('numStart', { 'w:val': prev.endnotePr.startNumber.toString() })
|
|
1388
|
+
);
|
|
1389
|
+
}
|
|
1390
|
+
if (prev.endnotePr.restart) {
|
|
1391
|
+
enChildren.push(XMLBuilder.wSelf('numRestart', { 'w:val': prev.endnotePr.restart }));
|
|
1392
|
+
}
|
|
1393
|
+
if (enChildren.length > 0) {
|
|
1394
|
+
prevChildren.push(XMLBuilder.w('endnotePr', undefined, enChildren));
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1329
1397
|
if (prev.type) {
|
|
1330
1398
|
prevChildren.push(XMLBuilder.wSelf('type', { 'w:val': prev.type }));
|
|
1331
1399
|
}
|
|
@@ -1337,6 +1405,9 @@ export class Section {
|
|
|
1337
1405
|
if (prev.pageSize.orientation === 'landscape') {
|
|
1338
1406
|
pgSzAttrs['w:orient'] = 'landscape';
|
|
1339
1407
|
}
|
|
1408
|
+
if (prev.pageSize.code !== undefined) {
|
|
1409
|
+
pgSzAttrs['w:code'] = prev.pageSize.code.toString();
|
|
1410
|
+
}
|
|
1340
1411
|
prevChildren.push(XMLBuilder.wSelf('pgSz', pgSzAttrs));
|
|
1341
1412
|
}
|
|
1342
1413
|
if (prev.margins) {
|
|
@@ -1351,8 +1422,50 @@ export class Section {
|
|
|
1351
1422
|
pgMarAttrs['w:header'] = prev.margins.header.toString();
|
|
1352
1423
|
if (prev.margins.footer !== undefined)
|
|
1353
1424
|
pgMarAttrs['w:footer'] = prev.margins.footer.toString();
|
|
1425
|
+
if (prev.margins.gutter !== undefined)
|
|
1426
|
+
pgMarAttrs['w:gutter'] = prev.margins.gutter.toString();
|
|
1354
1427
|
prevChildren.push(XMLBuilder.wSelf('pgMar', pgMarAttrs));
|
|
1355
1428
|
}
|
|
1429
|
+
if (prev.paperSource) {
|
|
1430
|
+
const psAttrs: Record<string, string> = {};
|
|
1431
|
+
if (prev.paperSource.first !== undefined) {
|
|
1432
|
+
psAttrs['w:first'] = prev.paperSource.first.toString();
|
|
1433
|
+
}
|
|
1434
|
+
if (prev.paperSource.other !== undefined) {
|
|
1435
|
+
psAttrs['w:other'] = prev.paperSource.other.toString();
|
|
1436
|
+
}
|
|
1437
|
+
if (Object.keys(psAttrs).length > 0) {
|
|
1438
|
+
prevChildren.push(XMLBuilder.wSelf('paperSrc', psAttrs));
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
if (prev.pageBorders) {
|
|
1442
|
+
const pgb = prev.pageBorders;
|
|
1443
|
+
const pgbAttrs: Record<string, string> = {};
|
|
1444
|
+
if (pgb.offsetFrom) pgbAttrs['w:offsetFrom'] = pgb.offsetFrom;
|
|
1445
|
+
if (pgb.display) pgbAttrs['w:display'] = pgb.display;
|
|
1446
|
+
if (pgb.zOrder) pgbAttrs['w:zOrder'] = pgb.zOrder;
|
|
1447
|
+
const borderChildren: XMLElement[] = [];
|
|
1448
|
+
const buildPrevBorder = (side: string, def: PageBorderDef) => {
|
|
1449
|
+
const bAttrs: Record<string, string | number> = {};
|
|
1450
|
+
if (def.style) bAttrs['w:val'] = def.style;
|
|
1451
|
+
if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));
|
|
1452
|
+
if (def.color) bAttrs['w:color'] = def.color;
|
|
1453
|
+
if (def.space !== undefined)
|
|
1454
|
+
bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));
|
|
1455
|
+
if (def.shadow) bAttrs['w:shadow'] = '1';
|
|
1456
|
+
if (def.frame) bAttrs['w:frame'] = '1';
|
|
1457
|
+
if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;
|
|
1458
|
+
if (def.artId !== undefined) bAttrs['w:id'] = def.artId;
|
|
1459
|
+
borderChildren.push(XMLBuilder.wSelf(side, bAttrs));
|
|
1460
|
+
};
|
|
1461
|
+
if (pgb.top) buildPrevBorder('top', pgb.top);
|
|
1462
|
+
if (pgb.left) buildPrevBorder('left', pgb.left);
|
|
1463
|
+
if (pgb.bottom) buildPrevBorder('bottom', pgb.bottom);
|
|
1464
|
+
if (pgb.right) buildPrevBorder('right', pgb.right);
|
|
1465
|
+
if (borderChildren.length > 0) {
|
|
1466
|
+
prevChildren.push(XMLBuilder.w('pgBorders', pgbAttrs, borderChildren));
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1356
1469
|
if (prev.lineNumbering) {
|
|
1357
1470
|
const lnAttrs: Record<string, string> = {};
|
|
1358
1471
|
if (prev.lineNumbering.countBy !== undefined)
|
|
@@ -1380,7 +1493,32 @@ export class Section {
|
|
|
1380
1493
|
'w:num': prev.columns.count?.toString() || '1',
|
|
1381
1494
|
};
|
|
1382
1495
|
if (prev.columns.space !== undefined) colAttrs['w:space'] = prev.columns.space.toString();
|
|
1383
|
-
|
|
1496
|
+
if (prev.columns.equalWidth !== undefined) {
|
|
1497
|
+
colAttrs['w:equalWidth'] = prev.columns.equalWidth ? '1' : '0';
|
|
1498
|
+
}
|
|
1499
|
+
if (prev.columns.separator !== undefined) {
|
|
1500
|
+
colAttrs['w:sep'] = prev.columns.separator ? '1' : '0';
|
|
1501
|
+
}
|
|
1502
|
+
const colChildren: XMLElement[] = [];
|
|
1503
|
+
if (prev.columns.columnWidths) {
|
|
1504
|
+
const widths = prev.columns.columnWidths;
|
|
1505
|
+
const spaces = prev.columns.columnSpaces;
|
|
1506
|
+
for (let i = 0; i < widths.length; i++) {
|
|
1507
|
+
const cAttrs: Record<string, string | number> = {
|
|
1508
|
+
'w:w': widths[i]!.toString(),
|
|
1509
|
+
};
|
|
1510
|
+
const spaceVal = spaces?.[i];
|
|
1511
|
+
if (spaceVal !== undefined) {
|
|
1512
|
+
cAttrs['w:space'] = spaceVal.toString();
|
|
1513
|
+
}
|
|
1514
|
+
colChildren.push(XMLBuilder.wSelf('col', cAttrs));
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
prevChildren.push(
|
|
1518
|
+
colChildren.length > 0
|
|
1519
|
+
? XMLBuilder.w('cols', colAttrs, colChildren)
|
|
1520
|
+
: XMLBuilder.wSelf('cols', colAttrs)
|
|
1521
|
+
);
|
|
1384
1522
|
}
|
|
1385
1523
|
if (prev.formProt) {
|
|
1386
1524
|
prevChildren.push(XMLBuilder.wSelf('formProt'));
|
|
@@ -1388,6 +1526,9 @@ export class Section {
|
|
|
1388
1526
|
if (prev.verticalAlignment) {
|
|
1389
1527
|
prevChildren.push(XMLBuilder.wSelf('vAlign', { 'w:val': prev.verticalAlignment }));
|
|
1390
1528
|
}
|
|
1529
|
+
if (prev.noEndnote) {
|
|
1530
|
+
prevChildren.push(XMLBuilder.wSelf('noEndnote'));
|
|
1531
|
+
}
|
|
1391
1532
|
if (prev.titlePage) {
|
|
1392
1533
|
prevChildren.push(XMLBuilder.wSelf('titlePg'));
|
|
1393
1534
|
}
|
|
@@ -1408,6 +1549,12 @@ export class Section {
|
|
|
1408
1549
|
})
|
|
1409
1550
|
);
|
|
1410
1551
|
}
|
|
1552
|
+
if (prev.bidi) {
|
|
1553
|
+
prevChildren.push(XMLBuilder.wSelf('bidi'));
|
|
1554
|
+
}
|
|
1555
|
+
if (prev.rtlGutter) {
|
|
1556
|
+
prevChildren.push(XMLBuilder.wSelf('rtlGutter'));
|
|
1557
|
+
}
|
|
1411
1558
|
if (prev.docGrid) {
|
|
1412
1559
|
const dgAttrs: Record<string, string> = {};
|
|
1413
1560
|
if (prev.docGrid.type) dgAttrs['w:type'] = prev.docGrid.type;
|
|
@@ -1449,6 +1596,9 @@ export class Section {
|
|
|
1449
1596
|
columnWidths: this.properties.columns.columnWidths
|
|
1450
1597
|
? [...this.properties.columns.columnWidths]
|
|
1451
1598
|
: undefined,
|
|
1599
|
+
columnSpaces: this.properties.columns.columnSpaces
|
|
1600
|
+
? [...this.properties.columns.columnSpaces]
|
|
1601
|
+
: undefined,
|
|
1452
1602
|
};
|
|
1453
1603
|
}
|
|
1454
1604
|
|
|
@@ -1520,12 +1670,68 @@ export class Section {
|
|
|
1520
1670
|
});
|
|
1521
1671
|
}
|
|
1522
1672
|
|
|
1673
|
+
/**
|
|
1674
|
+
* Creates a legal-sized section (8.5" x 14")
|
|
1675
|
+
*/
|
|
1676
|
+
static createLegal(): Section {
|
|
1677
|
+
return new Section({
|
|
1678
|
+
pageSize: {
|
|
1679
|
+
width: PAGE_SIZES.LEGAL.width,
|
|
1680
|
+
height: PAGE_SIZES.LEGAL.height,
|
|
1681
|
+
orientation: 'portrait',
|
|
1682
|
+
},
|
|
1683
|
+
});
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
/**
|
|
1687
|
+
* Creates a tabloid-sized section (11" x 17")
|
|
1688
|
+
*/
|
|
1689
|
+
static createTabloid(): Section {
|
|
1690
|
+
return new Section({
|
|
1691
|
+
pageSize: {
|
|
1692
|
+
width: PAGE_SIZES.TABLOID.width,
|
|
1693
|
+
height: PAGE_SIZES.TABLOID.height,
|
|
1694
|
+
orientation: 'portrait',
|
|
1695
|
+
},
|
|
1696
|
+
});
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
/**
|
|
1700
|
+
* Creates an A3-sized section (29.7cm x 42cm)
|
|
1701
|
+
*/
|
|
1702
|
+
static createA3(): Section {
|
|
1703
|
+
return new Section({
|
|
1704
|
+
pageSize: {
|
|
1705
|
+
width: PAGE_SIZES.A3.width,
|
|
1706
|
+
height: PAGE_SIZES.A3.height,
|
|
1707
|
+
orientation: 'portrait',
|
|
1708
|
+
},
|
|
1709
|
+
});
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1523
1712
|
/**
|
|
1524
1713
|
* Creates a landscape section
|
|
1525
|
-
*
|
|
1714
|
+
*
|
|
1715
|
+
* @param pageSize - Page size name (default: 'letter')
|
|
1716
|
+
* @returns Section with swapped width/height and landscape orientation
|
|
1717
|
+
*
|
|
1718
|
+
* @example
|
|
1719
|
+
* ```typescript
|
|
1720
|
+
* const landscape = Section.createLandscape('a4');
|
|
1721
|
+
* const legalLandscape = Section.createLandscape('legal');
|
|
1722
|
+
* ```
|
|
1526
1723
|
*/
|
|
1527
|
-
static createLandscape(
|
|
1528
|
-
|
|
1724
|
+
static createLandscape(
|
|
1725
|
+
pageSize: 'letter' | 'a4' | 'legal' | 'tabloid' | 'a3' = 'letter'
|
|
1726
|
+
): Section {
|
|
1727
|
+
const sizeMap: Record<string, { width: number; height: number }> = {
|
|
1728
|
+
letter: PAGE_SIZES.LETTER,
|
|
1729
|
+
a4: PAGE_SIZES.A4,
|
|
1730
|
+
legal: PAGE_SIZES.LEGAL,
|
|
1731
|
+
tabloid: PAGE_SIZES.TABLOID,
|
|
1732
|
+
a3: PAGE_SIZES.A3,
|
|
1733
|
+
};
|
|
1734
|
+
const size = sizeMap[pageSize] ?? PAGE_SIZES.LETTER;
|
|
1529
1735
|
return new Section({
|
|
1530
1736
|
pageSize: {
|
|
1531
1737
|
width: size.height, // Swap for landscape
|
package/src/elements/Shape.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
|
|
12
|
-
import {
|
|
12
|
+
import { pointsToHalfPoints } from '../utils/units';
|
|
13
13
|
import { RunFormatting } from './Run';
|
|
14
14
|
import {
|
|
15
15
|
ImagePosition,
|