docx 8.2.2 → 8.2.4

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.
@@ -34,10 +34,10 @@ export interface ISectionPropertiesOptions {
34
34
  readonly type?: SectionType;
35
35
  }
36
36
  export declare const sectionMarginDefaults: {
37
- TOP: `${number}mm` | `${number}cm` | `${number}in` | `${number}pt` | `${number}pc` | `${number}pi` | `-${number}mm` | `-${number}cm` | `-${number}in` | `-${number}pt` | `-${number}pc` | `-${number}pi`;
38
- RIGHT: `${number}mm` | `${number}cm` | `${number}in` | `${number}pt` | `${number}pc` | `${number}pi`;
39
- BOTTOM: `${number}mm` | `${number}cm` | `${number}in` | `${number}pt` | `${number}pc` | `${number}pi` | `-${number}mm` | `-${number}cm` | `-${number}in` | `-${number}pt` | `-${number}pc` | `-${number}pi`;
40
- LEFT: `${number}mm` | `${number}cm` | `${number}in` | `${number}pt` | `${number}pc` | `${number}pi`;
37
+ TOP: number;
38
+ RIGHT: number;
39
+ BOTTOM: number;
40
+ LEFT: number;
41
41
  HEADER: number;
42
42
  FOOTER: number;
43
43
  GUTTER: number;
@@ -1,7 +1,7 @@
1
1
  export interface IXmlAttribute {
2
2
  readonly [key: string]: string | number | boolean;
3
3
  }
4
- export interface IXmlableObject extends Object {
4
+ export interface IXmlableObject extends Record<string, unknown> {
5
5
  readonly [key: string]: any;
6
6
  }
7
7
  export declare const WORKAROUND3 = "";
package/build/index.cjs CHANGED
@@ -11740,10 +11740,10 @@ class Type extends XmlComponent {
11740
11740
  }
11741
11741
  }
11742
11742
  const sectionMarginDefaults = {
11743
- TOP: "1in",
11744
- RIGHT: "1in",
11745
- BOTTOM: "1in",
11746
- LEFT: "1in",
11743
+ TOP: 1440,
11744
+ RIGHT: 1440,
11745
+ BOTTOM: 1440,
11746
+ LEFT: 1440,
11747
11747
  HEADER: 708,
11748
11748
  FOOTER: 708,
11749
11749
  GUTTER: 0
@@ -14219,13 +14219,15 @@ class Numbering extends XmlComponent {
14219
14219
  abstractNumId: abstractNumbering.id,
14220
14220
  reference,
14221
14221
  instance,
14222
- overrideLevel: firstLevelStartNumber && Number.isInteger(firstLevelStartNumber) ? {
14223
- num: 0,
14224
- start: firstLevelStartNumber
14225
- } : {
14226
- num: 0,
14227
- start: 1
14228
- }
14222
+ overrideLevels: [
14223
+ firstLevelStartNumber && Number.isInteger(firstLevelStartNumber) ? {
14224
+ num: 0,
14225
+ start: firstLevelStartNumber
14226
+ } : {
14227
+ num: 0,
14228
+ start: 1
14229
+ }
14230
+ ]
14229
14231
  };
14230
14232
  this.concreteNumberingMap.set(fullReference, new ConcreteNumbering(concreteNumberingSettings));
14231
14233
  }
@@ -18950,7 +18952,7 @@ const splitRunElement = (runElement, token) => {
18950
18952
  };
18951
18953
  const formatter = new Formatter();
18952
18954
  const SPLIT_TOKEN = "ɵ";
18953
- const replacer = (json, patch, patchText, renderedParagraphs, context) => {
18955
+ const replacer = (json, patch, patchText, renderedParagraphs, context, keepOriginalStyles = false) => {
18954
18956
  for (const renderedParagraph of renderedParagraphs) {
18955
18957
  const textJson = patch.children.map((c) => toJson(xml$1(formatter.format(c, context)))).map((c) => c.elements[0]);
18956
18958
  switch (patch.type) {
@@ -18970,8 +18972,24 @@ const replacer = (json, patch, patchText, renderedParagraphs, context) => {
18970
18972
  replacementText: SPLIT_TOKEN
18971
18973
  });
18972
18974
  const index = findRunElementIndexWithToken(paragraphElement, SPLIT_TOKEN);
18973
- const { left, right } = splitRunElement(paragraphElement.elements[index], SPLIT_TOKEN);
18974
- paragraphElement.elements.splice(index, 1, left, ...textJson, right);
18975
+ const runElementToBeReplaced = paragraphElement.elements[index];
18976
+ const { left, right } = splitRunElement(runElementToBeReplaced, SPLIT_TOKEN);
18977
+ let newRunElements = textJson;
18978
+ let patchedRightElement = right;
18979
+ if (keepOriginalStyles) {
18980
+ const runElementNonTextualElements = runElementToBeReplaced.elements.filter(
18981
+ (e) => e.type === "element" && e.name !== "w:t"
18982
+ );
18983
+ newRunElements = textJson.map((e) => ({
18984
+ ...e,
18985
+ elements: [...runElementNonTextualElements, ...e.elements]
18986
+ }));
18987
+ patchedRightElement = {
18988
+ ...right,
18989
+ elements: [...runElementNonTextualElements, ...right.elements]
18990
+ };
18991
+ }
18992
+ paragraphElement.elements.splice(index, 1, left, ...newRunElements, patchedRightElement);
18975
18993
  break;
18976
18994
  }
18977
18995
  }
@@ -19195,7 +19213,8 @@ const patchDocument = async (data, options2) => {
19195
19213
  },
19196
19214
  patchText,
19197
19215
  renderedParagraphs,
19198
- context
19216
+ context,
19217
+ options2.keepOriginalStyles
19199
19218
  );
19200
19219
  }
19201
19220
  const mediaDatas = imageReplacer.getMediaData(JSON.stringify(json), context.file.Media);
@@ -11740,10 +11740,10 @@ var __publicField = (obj, key, value) => {
11740
11740
  }
11741
11741
  }
11742
11742
  const sectionMarginDefaults = {
11743
- TOP: "1in",
11744
- RIGHT: "1in",
11745
- BOTTOM: "1in",
11746
- LEFT: "1in",
11743
+ TOP: 1440,
11744
+ RIGHT: 1440,
11745
+ BOTTOM: 1440,
11746
+ LEFT: 1440,
11747
11747
  HEADER: 708,
11748
11748
  FOOTER: 708,
11749
11749
  GUTTER: 0
@@ -14219,13 +14219,15 @@ var __publicField = (obj, key, value) => {
14219
14219
  abstractNumId: abstractNumbering.id,
14220
14220
  reference,
14221
14221
  instance,
14222
- overrideLevel: firstLevelStartNumber && Number.isInteger(firstLevelStartNumber) ? {
14223
- num: 0,
14224
- start: firstLevelStartNumber
14225
- } : {
14226
- num: 0,
14227
- start: 1
14228
- }
14222
+ overrideLevels: [
14223
+ firstLevelStartNumber && Number.isInteger(firstLevelStartNumber) ? {
14224
+ num: 0,
14225
+ start: firstLevelStartNumber
14226
+ } : {
14227
+ num: 0,
14228
+ start: 1
14229
+ }
14230
+ ]
14229
14231
  };
14230
14232
  this.concreteNumberingMap.set(fullReference, new ConcreteNumbering(concreteNumberingSettings));
14231
14233
  }
@@ -18950,7 +18952,7 @@ var __publicField = (obj, key, value) => {
18950
18952
  };
18951
18953
  const formatter = new Formatter();
18952
18954
  const SPLIT_TOKEN = "ɵ";
18953
- const replacer = (json, patch, patchText, renderedParagraphs, context) => {
18955
+ const replacer = (json, patch, patchText, renderedParagraphs, context, keepOriginalStyles = false) => {
18954
18956
  for (const renderedParagraph of renderedParagraphs) {
18955
18957
  const textJson = patch.children.map((c) => toJson(xml$1(formatter.format(c, context)))).map((c) => c.elements[0]);
18956
18958
  switch (patch.type) {
@@ -18970,8 +18972,24 @@ var __publicField = (obj, key, value) => {
18970
18972
  replacementText: SPLIT_TOKEN
18971
18973
  });
18972
18974
  const index = findRunElementIndexWithToken(paragraphElement, SPLIT_TOKEN);
18973
- const { left, right } = splitRunElement(paragraphElement.elements[index], SPLIT_TOKEN);
18974
- paragraphElement.elements.splice(index, 1, left, ...textJson, right);
18975
+ const runElementToBeReplaced = paragraphElement.elements[index];
18976
+ const { left, right } = splitRunElement(runElementToBeReplaced, SPLIT_TOKEN);
18977
+ let newRunElements = textJson;
18978
+ let patchedRightElement = right;
18979
+ if (keepOriginalStyles) {
18980
+ const runElementNonTextualElements = runElementToBeReplaced.elements.filter(
18981
+ (e) => e.type === "element" && e.name !== "w:t"
18982
+ );
18983
+ newRunElements = textJson.map((e) => ({
18984
+ ...e,
18985
+ elements: [...runElementNonTextualElements, ...e.elements]
18986
+ }));
18987
+ patchedRightElement = {
18988
+ ...right,
18989
+ elements: [...runElementNonTextualElements, ...right.elements]
18990
+ };
18991
+ }
18992
+ paragraphElement.elements.splice(index, 1, left, ...newRunElements, patchedRightElement);
18975
18993
  break;
18976
18994
  }
18977
18995
  }
@@ -19195,7 +19213,8 @@ var __publicField = (obj, key, value) => {
19195
19213
  },
19196
19214
  patchText,
19197
19215
  renderedParagraphs,
19198
- context
19216
+ context,
19217
+ options2.keepOriginalStyles
19199
19218
  );
19200
19219
  }
19201
19220
  const mediaDatas = imageReplacer.getMediaData(JSON.stringify(json), context.file.Media);
@@ -11738,10 +11738,10 @@ class Type extends XmlComponent {
11738
11738
  }
11739
11739
  }
11740
11740
  const sectionMarginDefaults = {
11741
- TOP: "1in",
11742
- RIGHT: "1in",
11743
- BOTTOM: "1in",
11744
- LEFT: "1in",
11741
+ TOP: 1440,
11742
+ RIGHT: 1440,
11743
+ BOTTOM: 1440,
11744
+ LEFT: 1440,
11745
11745
  HEADER: 708,
11746
11746
  FOOTER: 708,
11747
11747
  GUTTER: 0
@@ -14217,13 +14217,15 @@ class Numbering extends XmlComponent {
14217
14217
  abstractNumId: abstractNumbering.id,
14218
14218
  reference,
14219
14219
  instance,
14220
- overrideLevel: firstLevelStartNumber && Number.isInteger(firstLevelStartNumber) ? {
14221
- num: 0,
14222
- start: firstLevelStartNumber
14223
- } : {
14224
- num: 0,
14225
- start: 1
14226
- }
14220
+ overrideLevels: [
14221
+ firstLevelStartNumber && Number.isInteger(firstLevelStartNumber) ? {
14222
+ num: 0,
14223
+ start: firstLevelStartNumber
14224
+ } : {
14225
+ num: 0,
14226
+ start: 1
14227
+ }
14228
+ ]
14227
14229
  };
14228
14230
  this.concreteNumberingMap.set(fullReference, new ConcreteNumbering(concreteNumberingSettings));
14229
14231
  }
@@ -18948,7 +18950,7 @@ const splitRunElement = (runElement, token) => {
18948
18950
  };
18949
18951
  const formatter = new Formatter();
18950
18952
  const SPLIT_TOKEN = "ɵ";
18951
- const replacer = (json, patch, patchText, renderedParagraphs, context) => {
18953
+ const replacer = (json, patch, patchText, renderedParagraphs, context, keepOriginalStyles = false) => {
18952
18954
  for (const renderedParagraph of renderedParagraphs) {
18953
18955
  const textJson = patch.children.map((c) => toJson(xml$1(formatter.format(c, context)))).map((c) => c.elements[0]);
18954
18956
  switch (patch.type) {
@@ -18968,8 +18970,24 @@ const replacer = (json, patch, patchText, renderedParagraphs, context) => {
18968
18970
  replacementText: SPLIT_TOKEN
18969
18971
  });
18970
18972
  const index = findRunElementIndexWithToken(paragraphElement, SPLIT_TOKEN);
18971
- const { left, right } = splitRunElement(paragraphElement.elements[index], SPLIT_TOKEN);
18972
- paragraphElement.elements.splice(index, 1, left, ...textJson, right);
18973
+ const runElementToBeReplaced = paragraphElement.elements[index];
18974
+ const { left, right } = splitRunElement(runElementToBeReplaced, SPLIT_TOKEN);
18975
+ let newRunElements = textJson;
18976
+ let patchedRightElement = right;
18977
+ if (keepOriginalStyles) {
18978
+ const runElementNonTextualElements = runElementToBeReplaced.elements.filter(
18979
+ (e) => e.type === "element" && e.name !== "w:t"
18980
+ );
18981
+ newRunElements = textJson.map((e) => ({
18982
+ ...e,
18983
+ elements: [...runElementNonTextualElements, ...e.elements]
18984
+ }));
18985
+ patchedRightElement = {
18986
+ ...right,
18987
+ elements: [...runElementNonTextualElements, ...right.elements]
18988
+ };
18989
+ }
18990
+ paragraphElement.elements.splice(index, 1, left, ...newRunElements, patchedRightElement);
18973
18991
  break;
18974
18992
  }
18975
18993
  }
@@ -19193,7 +19211,8 @@ const patchDocument = async (data, options2) => {
19193
19211
  },
19194
19212
  patchText,
19195
19213
  renderedParagraphs,
19196
- context
19214
+ context,
19215
+ options2.keepOriginalStyles
19197
19216
  );
19198
19217
  }
19199
19218
  const mediaDatas = imageReplacer.getMediaData(JSON.stringify(json), context.file.Media);
@@ -11742,10 +11742,10 @@ var __publicField = (obj, key, value) => {
11742
11742
  }
11743
11743
  }
11744
11744
  const sectionMarginDefaults = {
11745
- TOP: "1in",
11746
- RIGHT: "1in",
11747
- BOTTOM: "1in",
11748
- LEFT: "1in",
11745
+ TOP: 1440,
11746
+ RIGHT: 1440,
11747
+ BOTTOM: 1440,
11748
+ LEFT: 1440,
11749
11749
  HEADER: 708,
11750
11750
  FOOTER: 708,
11751
11751
  GUTTER: 0
@@ -14221,13 +14221,15 @@ var __publicField = (obj, key, value) => {
14221
14221
  abstractNumId: abstractNumbering.id,
14222
14222
  reference,
14223
14223
  instance,
14224
- overrideLevel: firstLevelStartNumber && Number.isInteger(firstLevelStartNumber) ? {
14225
- num: 0,
14226
- start: firstLevelStartNumber
14227
- } : {
14228
- num: 0,
14229
- start: 1
14230
- }
14224
+ overrideLevels: [
14225
+ firstLevelStartNumber && Number.isInteger(firstLevelStartNumber) ? {
14226
+ num: 0,
14227
+ start: firstLevelStartNumber
14228
+ } : {
14229
+ num: 0,
14230
+ start: 1
14231
+ }
14232
+ ]
14231
14233
  };
14232
14234
  this.concreteNumberingMap.set(fullReference, new ConcreteNumbering(concreteNumberingSettings));
14233
14235
  }
@@ -18952,7 +18954,7 @@ var __publicField = (obj, key, value) => {
18952
18954
  };
18953
18955
  const formatter = new Formatter();
18954
18956
  const SPLIT_TOKEN = "ɵ";
18955
- const replacer = (json, patch, patchText, renderedParagraphs, context) => {
18957
+ const replacer = (json, patch, patchText, renderedParagraphs, context, keepOriginalStyles = false) => {
18956
18958
  for (const renderedParagraph of renderedParagraphs) {
18957
18959
  const textJson = patch.children.map((c) => toJson(xml$1(formatter.format(c, context)))).map((c) => c.elements[0]);
18958
18960
  switch (patch.type) {
@@ -18972,8 +18974,24 @@ var __publicField = (obj, key, value) => {
18972
18974
  replacementText: SPLIT_TOKEN
18973
18975
  });
18974
18976
  const index = findRunElementIndexWithToken(paragraphElement, SPLIT_TOKEN);
18975
- const { left, right } = splitRunElement(paragraphElement.elements[index], SPLIT_TOKEN);
18976
- paragraphElement.elements.splice(index, 1, left, ...textJson, right);
18977
+ const runElementToBeReplaced = paragraphElement.elements[index];
18978
+ const { left, right } = splitRunElement(runElementToBeReplaced, SPLIT_TOKEN);
18979
+ let newRunElements = textJson;
18980
+ let patchedRightElement = right;
18981
+ if (keepOriginalStyles) {
18982
+ const runElementNonTextualElements = runElementToBeReplaced.elements.filter(
18983
+ (e) => e.type === "element" && e.name !== "w:t"
18984
+ );
18985
+ newRunElements = textJson.map((e) => ({
18986
+ ...e,
18987
+ elements: [...runElementNonTextualElements, ...e.elements]
18988
+ }));
18989
+ patchedRightElement = {
18990
+ ...right,
18991
+ elements: [...runElementNonTextualElements, ...right.elements]
18992
+ };
18993
+ }
18994
+ paragraphElement.elements.splice(index, 1, left, ...newRunElements, patchedRightElement);
18977
18995
  break;
18978
18996
  }
18979
18997
  }
@@ -19197,7 +19215,8 @@ var __publicField = (obj, key, value) => {
19197
19215
  },
19198
19216
  patchText,
19199
19217
  renderedParagraphs,
19200
- context
19218
+ context,
19219
+ options2.keepOriginalStyles
19201
19220
  );
19202
19221
  }
19203
19222
  const mediaDatas = imageReplacer.getMediaData(JSON.stringify(json), context.file.Media);
@@ -20,6 +20,7 @@ export interface PatchDocumentOptions {
20
20
  readonly patches: {
21
21
  readonly [key: string]: IPatch;
22
22
  };
23
+ readonly keepOriginalStyles?: boolean;
23
24
  }
24
25
  export declare const patchDocument: (data: InputDataType, options: PatchDocumentOptions) => Promise<Uint8Array>;
25
26
  export {};
@@ -2,4 +2,4 @@ import { Element } from "xml-js";
2
2
  import { IContext } from '../file/xml-components';
3
3
  import { IPatch } from "./from-docx";
4
4
  import { IRenderedParagraphNode } from "./run-renderer";
5
- export declare const replacer: (json: Element, patch: IPatch, patchText: string, renderedParagraphs: readonly IRenderedParagraphNode[], context: IContext) => Element;
5
+ export declare const replacer: (json: Element, patch: IPatch, patchText: string, renderedParagraphs: readonly IRenderedParagraphNode[], context: IContext, keepOriginalStyles?: boolean) => Element;
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "docx",
3
- "version": "8.2.2",
3
+ "version": "8.2.4",
4
4
  "description": "Easily generate .docx files with JS/TS with a nice declarative API. Works for Node and on the Browser.",
5
5
  "type": "module",
6
6
  "main": "build/index.umd.js",
7
- "module": "./build/index.js",
7
+ "module": "./build/index.mjs",
8
8
  "types": "./build/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
11
  "require": "./build/index.cjs",
12
12
  "types": "./build/index.d.ts",
13
- "import": "./build/index.js",
14
- "default": "./build/index.js"
13
+ "import": "./build/index.mjs",
14
+ "default": "./build/index.mjs"
15
15
  }
16
16
  },
17
17
  "files": [
@@ -67,16 +67,15 @@
67
67
  },
68
68
  "homepage": "https://docx.js.org",
69
69
  "devDependencies": {
70
- "@esbuild/win32-x64": "^0.18.3",
71
70
  "@types/inquirer": "^9.0.3",
72
71
  "@types/prompt": "^1.1.1",
73
72
  "@types/unzipper": "^0.10.4",
74
73
  "@types/xml": "^1.0.8",
75
- "@typescript-eslint/eslint-plugin": "^5.36.1",
76
- "@typescript-eslint/parser": "^5.36.1",
74
+ "@typescript-eslint/eslint-plugin": "^6.9.1",
75
+ "@typescript-eslint/parser": "^6.9.1",
77
76
  "@vitest/coverage-v8": "^0.33.0",
78
77
  "@vitest/ui": "^0.33.0",
79
- "cspell": "^6.2.2",
78
+ "cspell": "^7.3.8",
80
79
  "docsify-cli": "^4.3.0",
81
80
  "eslint": "^8.23.0",
82
81
  "eslint-plugin-functional": "^5.0.8",
@@ -84,13 +83,13 @@
84
83
  "eslint-plugin-jsdoc": "^46.2.6",
85
84
  "eslint-plugin-no-null": "^1.0.2",
86
85
  "eslint-plugin-prefer-arrow": "^1.2.3",
87
- "eslint-plugin-unicorn": "^47.0.0",
88
- "execa": "^7.1.1",
86
+ "eslint-plugin-unicorn": "^48.0.1",
87
+ "execa": "^8.0.1",
89
88
  "glob": "^10.2.7",
90
89
  "inquirer": "^9.2.7",
91
90
  "jsdom": "^22.1.0",
92
91
  "pre-commit": "^1.2.2",
93
- "prettier": "^2.3.1",
92
+ "prettier": "^3.0.0",
94
93
  "ts-node": "^10.2.1",
95
94
  "tsconfig-paths": "^4.0.0",
96
95
  "typedoc": "^0.24.8",