docxmlater 10.0.4 → 10.1.1

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.
Files changed (63) hide show
  1. package/dist/core/Document.d.ts +22 -0
  2. package/dist/core/Document.d.ts.map +1 -1
  3. package/dist/core/Document.js +170 -26
  4. package/dist/core/Document.js.map +1 -1
  5. package/dist/core/DocumentParser.d.ts.map +1 -1
  6. package/dist/core/DocumentParser.js +71 -6
  7. package/dist/core/DocumentParser.js.map +1 -1
  8. package/dist/elements/Hyperlink.d.ts +6 -0
  9. package/dist/elements/Hyperlink.d.ts.map +1 -1
  10. package/dist/elements/Hyperlink.js +23 -0
  11. package/dist/elements/Hyperlink.js.map +1 -1
  12. package/dist/elements/StructuredDocumentTag.d.ts +23 -1
  13. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  14. package/dist/elements/StructuredDocumentTag.js +97 -0
  15. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  16. package/dist/elements/TableCell.d.ts +5 -0
  17. package/dist/elements/TableCell.d.ts.map +1 -1
  18. package/dist/elements/TableCell.js +13 -0
  19. package/dist/elements/TableCell.js.map +1 -1
  20. package/dist/elements/TableRow.d.ts +3 -0
  21. package/dist/elements/TableRow.d.ts.map +1 -1
  22. package/dist/elements/TableRow.js +10 -0
  23. package/dist/elements/TableRow.js.map +1 -1
  24. package/dist/formatting/AbstractNumbering.d.ts +4 -0
  25. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  26. package/dist/formatting/AbstractNumbering.js +15 -0
  27. package/dist/formatting/AbstractNumbering.js.map +1 -1
  28. package/dist/formatting/NumberingInstance.d.ts +6 -0
  29. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  30. package/dist/formatting/NumberingInstance.js +55 -1
  31. package/dist/formatting/NumberingInstance.js.map +1 -1
  32. package/dist/formatting/NumberingLevel.d.ts +4 -1
  33. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  34. package/dist/formatting/NumberingLevel.js +17 -0
  35. package/dist/formatting/NumberingLevel.js.map +1 -1
  36. package/dist/formatting/Style.d.ts +6 -0
  37. package/dist/formatting/Style.d.ts.map +1 -1
  38. package/dist/formatting/Style.js +20 -0
  39. package/dist/formatting/Style.js.map +1 -1
  40. package/dist/formatting/StylesManager.d.ts +23 -0
  41. package/dist/formatting/StylesManager.d.ts.map +1 -1
  42. package/dist/formatting/StylesManager.js +65 -0
  43. package/dist/formatting/StylesManager.js.map +1 -1
  44. package/dist/index.d.ts +2 -2
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  48. package/dist/tracking/DocumentTrackingContext.js +30 -7
  49. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  50. package/package.json +1 -1
  51. package/src/core/Document.ts +287 -31
  52. package/src/core/DocumentParser.ts +88 -7
  53. package/src/elements/Hyperlink.ts +47 -0
  54. package/src/elements/StructuredDocumentTag.ts +230 -1
  55. package/src/elements/TableCell.ts +36 -1
  56. package/src/elements/TableRow.ts +24 -1
  57. package/src/formatting/AbstractNumbering.ts +31 -0
  58. package/src/formatting/NumberingInstance.ts +88 -1
  59. package/src/formatting/NumberingLevel.ts +37 -3
  60. package/src/formatting/Style.ts +46 -0
  61. package/src/formatting/StylesManager.ts +125 -0
  62. package/src/index.ts +2 -2
  63. package/src/tracking/DocumentTrackingContext.ts +38 -7
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingInstance.js","sourceRoot":"","sources":["../../src/formatting/NumberingInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * NumberingInstance - Links paragraphs to abstract numbering definitions\r\n *\r\n * A numbering instance references an abstract numbering definition and provides\r\n * the actual numId that paragraphs use. Multiple instances can reference the same\r\n * abstract numbering, creating separate list sequences.\r\n */\r\n\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * Properties for creating a numbering instance\r\n */\r\nexport interface NumberingInstanceProperties {\r\n /** Unique numbering instance ID (numId) */\r\n numId: number;\r\n\r\n /** Reference to the abstract numbering definition */\r\n abstractNumId: number;\r\n}\r\n\r\n/**\r\n * Represents a numbering instance\r\n *\r\n * Numbering instances link paragraphs to abstract numbering definitions.\r\n * Each instance creates a separate numbering sequence in the document.\r\n */\r\nexport class NumberingInstance {\r\n private numId: number;\r\n private abstractNumId: number;\r\n private levelOverrides = new Map<number, number>();\r\n\r\n /**\r\n * Creates a new numbering instance\r\n * @param numIdOrProps The numbering instance ID or properties object\r\n * @param abstractNumId The abstract numbering ID (if first param is a number)\r\n */\r\n constructor(numIdOrProps: number | NumberingInstanceProperties, abstractNumId?: number) {\r\n if (typeof numIdOrProps === 'number') {\r\n // Support simple constructor: new NumberingInstance(numId, abstractNumId)\r\n this.numId = numIdOrProps;\r\n this.abstractNumId = abstractNumId ?? 0;\r\n } else {\r\n // Support object constructor: new NumberingInstance({ numId, abstractNumId })\r\n this.numId = numIdOrProps.numId;\r\n this.abstractNumId = numIdOrProps.abstractNumId;\r\n }\r\n\r\n this.validate();\r\n }\r\n\r\n /**\r\n * Validates the numbering instance\r\n */\r\n private validate(): void {\r\n if (this.numId < 0) {\r\n throw new Error('Numbering instance ID must be non-negative');\r\n }\r\n\r\n if (this.abstractNumId < 0) {\r\n throw new Error('Abstract numbering ID must be non-negative');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the numbering instance ID\r\n */\r\n getNumId(): number {\r\n return this.numId;\r\n }\r\n\r\n /**\r\n * Gets the abstract numbering ID\r\n */\r\n getAbstractNumId(): number {\r\n return this.abstractNumId;\r\n }\r\n\r\n /**\r\n * Sets the abstract numbering ID this instance references\r\n * @param abstractNumId The new abstract numbering ID\r\n */\r\n setAbstractNumId(abstractNumId: number): this {\r\n if (abstractNumId < 0) {\r\n throw new Error('Abstract numbering ID must be non-negative');\r\n }\r\n this.abstractNumId = abstractNumId;\r\n return this;\r\n }\r\n\r\n /**\r\n * Alias for getNumId for backward compatibility\r\n */\r\n getId(): number {\r\n return this.numId;\r\n }\r\n\r\n /**\r\n * Gets level overrides\r\n * Returns a map of level indices to their override starting values\r\n */\r\n getLevelOverrides(): Map<number, number> {\r\n return new Map(this.levelOverrides);\r\n }\r\n\r\n /**\r\n * Sets level override for a specific level\r\n * Overrides the starting value for a particular numbering level\r\n *\r\n * @param level The level index (0-based)\r\n * @param startValue The starting value for this level\r\n * @returns This instance for method chaining\r\n */\r\n setLevelOverride(level: number, startValue: number): this {\r\n if (level < 0) {\r\n throw new Error('Level index must be non-negative');\r\n }\r\n if (startValue < 0) {\r\n throw new Error('Start value must be non-negative');\r\n }\r\n\r\n this.levelOverrides.set(level, startValue);\r\n return this;\r\n }\r\n\r\n /**\r\n * Clears a level override for a specific level\r\n *\r\n * @param level The level index to clear\r\n * @returns This instance for method chaining\r\n */\r\n clearLevelOverride(level: number): this {\r\n this.levelOverrides.delete(level);\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the override value for a specific level, if set\r\n *\r\n * @param level The level index\r\n * @returns The override starting value, or undefined if not set\r\n */\r\n getLevelOverride(level: number): number | undefined {\r\n return this.levelOverrides.get(level);\r\n }\r\n\r\n /**\r\n * Generates the WordprocessingML XML for this numbering instance\r\n */\r\n toXML(): XMLElement {\r\n const children: XMLElement[] = [];\r\n\r\n // Reference to abstract numbering\r\n children.push(\r\n XMLBuilder.wSelf('abstractNumId', { 'w:val': this.abstractNumId.toString() })\r\n );\r\n\r\n // Add level overrides if any are set\r\n for (const [level, startValue] of this.levelOverrides) {\r\n children.push({\r\n name: 'w:lvlOverride',\r\n attributes: { 'w:ilvl': level.toString() },\r\n children: [\r\n XMLBuilder.wSelf('startOverride', { 'w:val': startValue.toString() })\r\n ]\r\n });\r\n }\r\n\r\n return XMLBuilder.w('num', { 'w:numId': this.numId.toString() }, children);\r\n }\r\n\r\n /**\r\n * Factory method for creating a numbering instance\r\n * @param propertiesOrNumId The instance properties object, or numId (number)\r\n * @param abstractNumId The abstract numbering ID (if first param is a number)\r\n */\r\n static create(\r\n propertiesOrNumId: NumberingInstanceProperties | number,\r\n abstractNumId?: number\r\n ): NumberingInstance {\r\n if (typeof propertiesOrNumId === 'number') {\r\n return new NumberingInstance(propertiesOrNumId, abstractNumId);\r\n }\r\n return new NumberingInstance(propertiesOrNumId);\r\n }\r\n\r\n /**\r\n * Creates a NumberingInstance from XML element\r\n * @param xml The XML string of the <w:num> element\r\n * @returns NumberingInstance instance\r\n */\r\n static fromXML(xml: string): NumberingInstance {\r\n // Extract numId (required)\r\n const numIdMatch = /<w:num[^>]*w:numId=\"([^\"]+)\"/.exec(xml);\r\n if (!numIdMatch?.[1]) {\r\n throw new Error('Missing required w:numId attribute');\r\n }\r\n const numId = parseInt(numIdMatch[1], 10);\r\n\r\n // Extract abstractNumId (required)\r\n const abstractNumIdMatch = /<w:abstractNumId[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (!abstractNumIdMatch?.[1]) {\r\n throw new Error('Missing required w:abstractNumId element');\r\n }\r\n const abstractNumId = parseInt(abstractNumIdMatch[1], 10);\r\n\r\n return new NumberingInstance({\r\n numId,\r\n abstractNumId,\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"NumberingInstance.js","sourceRoot":"","sources":["../../src/formatting/NumberingInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * NumberingInstance - Links paragraphs to abstract numbering definitions\r\n *\r\n * A numbering instance references an abstract numbering definition and provides\r\n * the actual numId that paragraphs use. Multiple instances can reference the same\r\n * abstract numbering, creating separate list sequences.\r\n */\r\n\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\nimport { NumberingLevel } from './NumberingLevel';\r\n\r\n/**\r\n * Properties for creating a numbering instance\r\n */\r\nexport interface NumberingInstanceProperties {\r\n /** Unique numbering instance ID (numId) */\r\n numId: number;\r\n\r\n /** Reference to the abstract numbering definition */\r\n abstractNumId: number;\r\n}\r\n\r\n/**\r\n * Represents a numbering instance\r\n *\r\n * Numbering instances link paragraphs to abstract numbering definitions.\r\n * Each instance creates a separate numbering sequence in the document.\r\n */\r\nexport class NumberingInstance {\r\n private numId: number;\r\n private abstractNumId: number;\r\n private levelOverrides = new Map<number, number>();\r\n private fullLevelOverrides = new Map<number, NumberingLevel>();\r\n\r\n /**\r\n * Creates a new numbering instance\r\n * @param numIdOrProps The numbering instance ID or properties object\r\n * @param abstractNumId The abstract numbering ID (if first param is a number)\r\n */\r\n constructor(numIdOrProps: number | NumberingInstanceProperties, abstractNumId?: number) {\r\n if (typeof numIdOrProps === 'number') {\r\n // Support simple constructor: new NumberingInstance(numId, abstractNumId)\r\n this.numId = numIdOrProps;\r\n this.abstractNumId = abstractNumId ?? 0;\r\n } else {\r\n // Support object constructor: new NumberingInstance({ numId, abstractNumId })\r\n this.numId = numIdOrProps.numId;\r\n this.abstractNumId = numIdOrProps.abstractNumId;\r\n }\r\n\r\n this.validate();\r\n }\r\n\r\n /**\r\n * Validates the numbering instance\r\n */\r\n private validate(): void {\r\n if (this.numId < 0) {\r\n throw new Error('Numbering instance ID must be non-negative');\r\n }\r\n\r\n if (this.abstractNumId < 0) {\r\n throw new Error('Abstract numbering ID must be non-negative');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the numbering instance ID\r\n */\r\n getNumId(): number {\r\n return this.numId;\r\n }\r\n\r\n /**\r\n * Gets the abstract numbering ID\r\n */\r\n getAbstractNumId(): number {\r\n return this.abstractNumId;\r\n }\r\n\r\n /**\r\n * Sets the abstract numbering ID this instance references\r\n * @param abstractNumId The new abstract numbering ID\r\n */\r\n setAbstractNumId(abstractNumId: number): this {\r\n if (abstractNumId < 0) {\r\n throw new Error('Abstract numbering ID must be non-negative');\r\n }\r\n this.abstractNumId = abstractNumId;\r\n return this;\r\n }\r\n\r\n /**\r\n * Alias for getNumId for backward compatibility\r\n */\r\n getId(): number {\r\n return this.numId;\r\n }\r\n\r\n /**\r\n * Gets level overrides\r\n * Returns a map of level indices to their override starting values\r\n */\r\n getLevelOverrides(): Map<number, number> {\r\n return new Map(this.levelOverrides);\r\n }\r\n\r\n /**\r\n * Sets level override for a specific level\r\n * Overrides the starting value for a particular numbering level\r\n *\r\n * @param level The level index (0-based)\r\n * @param startValue The starting value for this level\r\n * @returns This instance for method chaining\r\n */\r\n setLevelOverride(level: number, startValue: number): this {\r\n if (level < 0) {\r\n throw new Error('Level index must be non-negative');\r\n }\r\n if (startValue < 0) {\r\n throw new Error('Start value must be non-negative');\r\n }\r\n\r\n this.levelOverrides.set(level, startValue);\r\n return this;\r\n }\r\n\r\n /**\r\n * Clears a level override for a specific level\r\n *\r\n * @param level The level index to clear\r\n * @returns This instance for method chaining\r\n */\r\n clearLevelOverride(level: number): this {\r\n this.levelOverrides.delete(level);\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the override value for a specific level, if set\r\n *\r\n * @param level The level index\r\n * @returns The override starting value, or undefined if not set\r\n */\r\n getLevelOverride(level: number): number | undefined {\r\n return this.levelOverrides.get(level);\r\n }\r\n\r\n /**\r\n * Sets a full level definition override for a specific level\r\n * This replaces the entire level definition from the abstract numbering\r\n * (ECMA-376 §17.9.8 - w:lvlOverride with full w:lvl child)\r\n *\r\n * @param level The level index (0-based)\r\n * @param levelDef The full NumberingLevel definition to use as override\r\n */\r\n setFullLevelOverride(level: number, levelDef: NumberingLevel): this {\r\n if (level < 0) {\r\n throw new Error('Level index must be non-negative');\r\n }\r\n this.fullLevelOverrides.set(level, levelDef);\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets a full level definition override for a specific level\r\n */\r\n getFullLevelOverride(level: number): NumberingLevel | undefined {\r\n return this.fullLevelOverrides.get(level);\r\n }\r\n\r\n /**\r\n * Gets all full level definition overrides\r\n */\r\n getFullLevelOverrides(): Map<number, NumberingLevel> {\r\n return new Map(this.fullLevelOverrides);\r\n }\r\n\r\n /**\r\n * Clears a full level override\r\n */\r\n clearFullLevelOverride(level: number): this {\r\n this.fullLevelOverrides.delete(level);\r\n return this;\r\n }\r\n\r\n /**\r\n * Generates the WordprocessingML XML for this numbering instance\r\n */\r\n toXML(): XMLElement {\r\n const children: XMLElement[] = [];\r\n\r\n // Reference to abstract numbering\r\n children.push(\r\n XMLBuilder.wSelf('abstractNumId', { 'w:val': this.abstractNumId.toString() })\r\n );\r\n\r\n // Add level overrides if any are set\r\n for (const [level, startValue] of this.levelOverrides) {\r\n // Skip levels that have a full level override (they take precedence)\r\n if (this.fullLevelOverrides.has(level)) continue;\r\n children.push({\r\n name: 'w:lvlOverride',\r\n attributes: { 'w:ilvl': level.toString() },\r\n children: [\r\n XMLBuilder.wSelf('startOverride', { 'w:val': startValue.toString() })\r\n ]\r\n });\r\n }\r\n\r\n // Add full level overrides\r\n for (const [level, levelDef] of this.fullLevelOverrides) {\r\n const overrideChildren: XMLElement[] = [];\r\n // Include startOverride if also set for this level\r\n if (this.levelOverrides.has(level)) {\r\n overrideChildren.push(\r\n XMLBuilder.wSelf('startOverride', { 'w:val': this.levelOverrides.get(level)!.toString() })\r\n );\r\n }\r\n overrideChildren.push(levelDef.toXML());\r\n children.push({\r\n name: 'w:lvlOverride',\r\n attributes: { 'w:ilvl': level.toString() },\r\n children: overrideChildren,\r\n });\r\n }\r\n\r\n return XMLBuilder.w('num', { 'w:numId': this.numId.toString() }, children);\r\n }\r\n\r\n /**\r\n * Factory method for creating a numbering instance\r\n * @param propertiesOrNumId The instance properties object, or numId (number)\r\n * @param abstractNumId The abstract numbering ID (if first param is a number)\r\n */\r\n static create(\r\n propertiesOrNumId: NumberingInstanceProperties | number,\r\n abstractNumId?: number\r\n ): NumberingInstance {\r\n if (typeof propertiesOrNumId === 'number') {\r\n return new NumberingInstance(propertiesOrNumId, abstractNumId);\r\n }\r\n return new NumberingInstance(propertiesOrNumId);\r\n }\r\n\r\n /**\r\n * Creates a NumberingInstance from XML element\r\n * @param xml The XML string of the <w:num> element\r\n * @returns NumberingInstance instance\r\n */\r\n static fromXML(xml: string): NumberingInstance {\r\n // Extract numId (required)\r\n const numIdMatch = /<w:num[^>]*w:numId=\"([^\"]+)\"/.exec(xml);\r\n if (!numIdMatch?.[1]) {\r\n throw new Error('Missing required w:numId attribute');\r\n }\r\n const numId = parseInt(numIdMatch[1], 10);\r\n\r\n // Extract abstractNumId (required)\r\n const abstractNumIdMatch = /<w:abstractNumId[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (!abstractNumIdMatch?.[1]) {\r\n throw new Error('Missing required w:abstractNumId element');\r\n }\r\n const abstractNumId = parseInt(abstractNumIdMatch[1], 10);\r\n\r\n const instance = new NumberingInstance({\r\n numId,\r\n abstractNumId,\r\n });\r\n\r\n // Parse level overrides (w:lvlOverride)\r\n const lvlOverrideRegex = /<w:lvlOverride[^>]*w:ilvl=\"(\\d+)\"[^>]*>([\\s\\S]*?)<\\/w:lvlOverride>/g;\r\n let match: RegExpExecArray | null;\r\n while ((match = lvlOverrideRegex.exec(xml)) !== null) {\r\n const levelStr = match[1]!;\r\n const content = match[2]!;\r\n const level = parseInt(levelStr, 10);\r\n\r\n // Check for startOverride\r\n const startOverrideMatch = /<w:startOverride[^>]*w:val=\"([^\"]+)\"/.exec(content);\r\n if (startOverrideMatch?.[1]) {\r\n instance.setLevelOverride(level, parseInt(startOverrideMatch[1], 10));\r\n }\r\n\r\n // Check for full w:lvl element\r\n const lvlMatch = /<w:lvl[^>]*>[\\s\\S]*?<\\/w:lvl>/.exec(content);\r\n if (lvlMatch) {\r\n try {\r\n const levelDef = NumberingLevel.fromXML(lvlMatch[0]);\r\n instance.setFullLevelOverride(level, levelDef);\r\n } catch {\r\n // Skip invalid level definitions\r\n }\r\n }\r\n }\r\n\r\n return instance;\r\n }\r\n}\r\n"]}
@@ -33,6 +33,7 @@ export interface NumberingLevelProperties {
33
33
  italic?: boolean;
34
34
  underline?: string;
35
35
  lvlRestart?: number;
36
+ pStyle?: string;
36
37
  }
37
38
  export declare class NumberingLevel {
38
39
  private properties;
@@ -44,7 +45,7 @@ export declare class NumberingLevel {
44
45
  };
45
46
  getLevel(): number;
46
47
  getFormat(): NumberFormat;
47
- getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline'>> & Pick<NumberingLevelProperties, 'lvlRestart' | 'underline'>;
48
+ getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>> & Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>;
48
49
  setLeftIndent(twips: number): this;
49
50
  setHangingIndent(twips: number): this;
50
51
  setFont(font: string): this;
@@ -60,6 +61,8 @@ export declare class NumberingLevel {
60
61
  clearUnderline(): this;
61
62
  setLvlRestart(level: number | undefined): this;
62
63
  getLvlRestart(): number | undefined;
64
+ setParagraphStyle(styleId: string): this;
65
+ getParagraphStyle(): string | undefined;
63
66
  setFormat(format: NumberFormat): this;
64
67
  static normalizeFormat(format: string): NumberFormat;
65
68
  toXML(): XMLElement;
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingLevel.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"AAQA,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAW3D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;CAOtB,CAAC;AAKX,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAKjE,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,aAAa,GACb,SAAS,GACT,cAAc,GACd,aAAa,GACb,KAAK,GACL,SAAS,GACT,cAAc,CAAC;AAKnB,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAK5E,MAAM,WAAW,wBAAwB;IAEvC,KAAK,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,YAAY,CAAC;IAGrB,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,CAAC,EAAE,eAAe,CAAC;IAG5B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAGhC,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;IAGrC,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,MAAM,CAAC,EAAE,OAAO,CAAC;IAGjB,SAAS,CAAC,EAAE,MAAM,CAAC;IASnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAoI;gBAM1I,UAAU,EAAE,wBAAwB;IAkChD,OAAO,CAAC,QAAQ;IA2ChB,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,MAAM,EACb,cAAc,SAAQ,EACtB,eAAe,SAAO,EACtB,gBAAgB,SAAO,EACvB,eAAe,SAAO,GACrB;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IA2BhD,QAAQ,IAAI,MAAM;IAOlB,SAAS,IAAI,YAAY;IAOzB,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,YAAY,GAAG,WAAW,CAAC;IAQlJ,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAUlC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAYrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAS9C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IASrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS7B,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAS5B,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAQhC,SAAS,IAAI,OAAO;IAQpB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQ7C,YAAY,IAAI,MAAM,GAAG,SAAS;IAOlC,cAAc,IAAI,IAAI;IAqBtB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAY9C,aAAa,IAAI,MAAM,GAAG,SAAS;IAQnC,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IASrC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAcpD,KAAK,IAAI,UAAU;IAoHnB,MAAM,CAAC,uBAAuB,CAC5B,KAAK,EAAE,MAAM,EACb,KAAK,GACD,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,aAA0B,GAC7B;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAiJnC,MAAM,CAAC,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG;QAClD,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB;IAsBD,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IA6B3D,MAAM,CAAC,iBAAiB,CACtB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GACZ,cAAc;IAyBjB,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,cAAc;IAoBjB,MAAM,CAAC,qBAAqB,CAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,cAAc;IAoBjB,MAAM,CAAC,qBAAqB,CAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,cAAc;IAoBjB,MAAM,CAAC,sBAAsB,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,cAAc;IAoBjB,MAAM,CAAC,sBAAsB,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,cAAc;IAmBjB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,wBAAwB,GAAG,cAAc;IASnE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;CAqG5C"}
1
+ {"version":3,"file":"NumberingLevel.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ class NumberingLevel {
31
31
  italic: properties.italic !== undefined ? properties.italic : false,
32
32
  underline: properties.underline,
33
33
  lvlRestart: properties.lvlRestart,
34
+ pStyle: properties.pStyle,
34
35
  };
35
36
  this.validate();
36
37
  }
@@ -131,6 +132,13 @@ class NumberingLevel {
131
132
  getLvlRestart() {
132
133
  return this.properties.lvlRestart;
133
134
  }
135
+ setParagraphStyle(styleId) {
136
+ this.properties.pStyle = styleId;
137
+ return this;
138
+ }
139
+ getParagraphStyle() {
140
+ return this.properties.pStyle;
141
+ }
134
142
  setFormat(format) {
135
143
  this.properties.format = NumberingLevel.normalizeFormat(format);
136
144
  return this;
@@ -152,6 +160,9 @@ class NumberingLevel {
152
160
  if (this.properties.lvlRestart !== undefined) {
153
161
  children.push(XMLBuilder_1.XMLBuilder.wSelf("lvlRestart", { "w:val": this.properties.lvlRestart.toString() }));
154
162
  }
163
+ if (this.properties.pStyle) {
164
+ children.push(XMLBuilder_1.XMLBuilder.wSelf("pStyle", { "w:val": this.properties.pStyle }));
165
+ }
155
166
  if (this.properties.isLegalNumberingStyle) {
156
167
  children.push(XMLBuilder_1.XMLBuilder.wSelf("isLgl"));
157
168
  }
@@ -460,6 +471,11 @@ class NumberingLevel {
460
471
  if (lvlRestartMatch?.[1]) {
461
472
  lvlRestart = parseInt(lvlRestartMatch[1], 10);
462
473
  }
474
+ let pStyle;
475
+ const pStyleMatch = /<w:pStyle[^>]*w:val="([^"]+)"/.exec(xml);
476
+ if (pStyleMatch?.[1]) {
477
+ pStyle = pStyleMatch[1];
478
+ }
463
479
  let leftIndent = 720 + level * 360;
464
480
  let hangingIndent = 360;
465
481
  const indMatch = /<w:ind[^>]*\/>/.exec(xml);
@@ -508,6 +524,7 @@ class NumberingLevel {
508
524
  underline,
509
525
  color,
510
526
  lvlRestart,
527
+ pStyle,
511
528
  });
512
529
  }
513
530
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingLevel.js","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * NumberingLevel - Defines formatting for a single level in a list\r\n *\r\n * A numbering level specifies how a particular list level (0-8) should be formatted,\r\n * including the numbering format (bullet, decimal, roman, etc.), text template,\r\n * alignment, and indentation.\r\n */\r\n\r\nimport { XMLBuilder, XMLElement } from \"../xml/XMLBuilder\";\r\n\r\n/**\r\n * Word-native bullet character mappings\r\n *\r\n * Microsoft Word uses specific fonts with Private Use Area (PUA) characters\r\n * for bullet points. These mappings ensure 100% compatibility with Word's\r\n * native bullet rendering.\r\n *\r\n * Pattern: Levels 0,3,6 = filled bullet; 1,4,7 = open circle; 2,5,8 = filled square\r\n */\r\nexport const WORD_NATIVE_BULLETS = {\r\n /** Filled bullet (levels 0, 3, 6) - Symbol font U+F0B7 */\r\n FILLED_BULLET: { char: \"\\uF0B7\", font: \"Symbol\" },\r\n /** Open circle (levels 1, 4, 7) - Courier New U+006F (lowercase 'o') */\r\n OPEN_CIRCLE: { char: \"\\u006F\", font: \"Courier New\" },\r\n /** Filled square (levels 2, 5, 8) - Wingdings U+F0A7 */\r\n FILLED_SQUARE: { char: \"\\uF0A7\", font: \"Wingdings\" },\r\n} as const;\r\n\r\n/**\r\n * Type for Word-native bullet definition\r\n */\r\nexport type WordNativeBullet =\r\n (typeof WORD_NATIVE_BULLETS)[keyof typeof WORD_NATIVE_BULLETS];\r\n\r\n/**\r\n * Numbering format types supported by Word\r\n */\r\nexport type NumberFormat =\r\n | \"bullet\" // Bullet character\r\n | \"decimal\" // 1, 2, 3, ...\r\n | \"lowerRoman\" // i, ii, iii, ...\r\n | \"upperRoman\" // I, II, III, ...\r\n | \"lowerLetter\" // a, b, c, ...\r\n | \"upperLetter\" // A, B, C, ...\r\n | \"ordinal\" // 1st, 2nd, 3rd, ...\r\n | \"cardinalText\" // One, Two, Three, ...\r\n | \"ordinalText\" // First, Second, Third, ...\r\n | \"hex\" // 0x01, 0x02, ...\r\n | \"chicago\" // *, †, ‡, §, ...\r\n | \"decimal zero\"; // 01, 02, 03, ...\r\n\r\n/**\r\n * Alignment for the numbering text\r\n */\r\nexport type NumberAlignment = \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\r\n\r\n/**\r\n * Properties for creating a numbering level\r\n */\r\nexport interface NumberingLevelProperties {\r\n /** The level index (0-8, where 0 is the outermost level) */\r\n level: number;\r\n\r\n /** The numbering format */\r\n format: NumberFormat;\r\n\r\n /** The text template (e.g., \"%1.\" for decimal, \"•\" for bullet) */\r\n text: string;\r\n\r\n /** Alignment of the numbering text */\r\n alignment?: NumberAlignment;\r\n\r\n /** Starting value (for numeric formats, default: 1) */\r\n start?: number;\r\n\r\n /** Left indentation in twips (can be negative for outdents into margin) */\r\n leftIndent?: number;\r\n\r\n /** Hanging indentation in twips (for the text after the number) */\r\n hangingIndent?: number;\r\n\r\n /** Font family for the numbering character (useful for bullets) */\r\n font?: string;\r\n\r\n /** Font size in half-points (e.g., 22 = 11pt) */\r\n fontSize?: number;\r\n\r\n /** Whether to show text after the number (default: true) */\r\n isLegalNumberingStyle?: boolean;\r\n\r\n /** Suffix after the number (tab, space, or nothing) */\r\n suffix?: \"tab\" | \"space\" | \"nothing\";\r\n\r\n /** Text color in hex (without #) */\r\n color?: string;\r\n\r\n /** Whether the numbering text is bold */\r\n bold?: boolean;\r\n\r\n /** Whether the numbering text is italic */\r\n italic?: boolean;\r\n\r\n /** Underline style for numbering text ('single', 'double', 'wave', 'dotted', 'dash', etc.) */\r\n underline?: string;\r\n\r\n /**\r\n * Level at which numbering should restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\r\n * Specifies when to restart this level's numbering based on a higher-level change:\r\n * - 0: Never restart (continues throughout document)\r\n * - 1-8: Restart when the specified level changes\r\n * - undefined (default): Restart when level-1 changes (standard behavior)\r\n */\r\n lvlRestart?: number;\r\n}\r\n\r\n/**\r\n * Represents a single level in a numbering definition\r\n */\r\nexport class NumberingLevel {\r\n private properties: Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline'>> & Pick<NumberingLevelProperties, 'lvlRestart' | 'underline'>;\r\n\r\n /**\r\n * Creates a new numbering level\r\n * @param properties The level properties\r\n */\r\n constructor(properties: NumberingLevelProperties) {\r\n // Set defaults\r\n this.properties = {\r\n level: properties.level,\r\n format: properties.format,\r\n text: properties.text,\r\n alignment: properties.alignment || \"left\",\r\n start: properties.start !== undefined ? properties.start : 1,\r\n leftIndent:\r\n properties.leftIndent !== undefined\r\n ? properties.leftIndent\r\n : 720 + properties.level * 360,\r\n hangingIndent:\r\n properties.hangingIndent !== undefined ? properties.hangingIndent : 360,\r\n font: properties.font || \"Calibri\",\r\n fontSize: properties.fontSize || 22, // 11pt default\r\n isLegalNumberingStyle:\r\n properties.isLegalNumberingStyle !== undefined\r\n ? properties.isLegalNumberingStyle\r\n : false,\r\n suffix: properties.suffix || \"tab\",\r\n color: properties.color || \"000000\",\r\n bold: properties.bold !== undefined ? properties.bold : false,\r\n italic: properties.italic !== undefined ? properties.italic : false,\r\n underline: properties.underline,\r\n lvlRestart: properties.lvlRestart, // undefined means default behavior (restart on level-1 change)\r\n };\r\n\r\n this.validate();\r\n }\r\n\r\n /**\r\n * Validates the level properties\r\n */\r\n private validate(): void {\r\n if (this.properties.level < 0 || this.properties.level > 8) {\r\n throw new Error(\r\n `Level must be between 0 and 8, got ${this.properties.level}`\r\n );\r\n }\r\n\r\n // Note: leftIndent CAN be negative (outdent into margin) per ECMA-376\r\n // This is valid and used for hanging indents where bullets appear in margin\r\n\r\n if (this.properties.hangingIndent < 0) {\r\n throw new Error(\"Hanging indent must be non-negative\");\r\n }\r\n\r\n if (this.properties.start < 0) {\r\n throw new Error(\"Start value must be non-negative\");\r\n }\r\n }\r\n\r\n /**\r\n * Calculates safe indentation values for a given level based on page constraints.\r\n *\r\n * Use this instead of default indentation when working with narrow pages or\r\n * deep nesting levels to ensure content stays within page margins.\r\n *\r\n * @param level The level index (0-8)\r\n * @param pageWidthTwips Page width in twips (default: 12240 = 8.5 inches)\r\n * @param leftMarginTwips Left margin in twips (default: 1440 = 1 inch)\r\n * @param rightMarginTwips Right margin in twips (default: 1440 = 1 inch)\r\n * @param minContentWidth Minimum content width in twips (default: 2880 = 2 inches)\r\n * @returns Safe indentation values that won't exceed available space\r\n *\r\n * @example\r\n * ```typescript\r\n * // For a narrow page (6\" wide with 0.5\" margins)\r\n * const indent = NumberingLevel.calculateSafeIndentation(\r\n * 5, // level 5\r\n * 8640, // 6 inches page width\r\n * 720, // 0.5 inch left margin\r\n * 720 // 0.5 inch right margin\r\n * );\r\n * ```\r\n */\r\n static calculateSafeIndentation(\r\n level: number,\r\n pageWidthTwips = 12240,\r\n leftMarginTwips = 1440,\r\n rightMarginTwips = 1440,\r\n minContentWidth = 2880\r\n ): { leftIndent: number; hangingIndent: number } {\r\n if (level < 0 || level > 8) {\r\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\r\n }\r\n\r\n // Calculate available content width\r\n const availableWidth = pageWidthTwips - leftMarginTwips - rightMarginTwips;\r\n\r\n // Calculate max safe indent (leave space for content)\r\n const maxSafeIndent = Math.max(0, availableWidth - minContentWidth);\r\n\r\n // Standard indentation\r\n const standardLeftIndent = 720 + level * 360;\r\n const hangingIndent = 360;\r\n\r\n // Cap at safe maximum\r\n const safeLeftIndent = Math.min(standardLeftIndent, maxSafeIndent);\r\n\r\n return {\r\n leftIndent: safeLeftIndent,\r\n hangingIndent,\r\n };\r\n }\r\n\r\n /**\r\n * Gets the level index\r\n */\r\n getLevel(): number {\r\n return this.properties.level;\r\n }\r\n\r\n /**\r\n * Gets the numbering format\r\n */\r\n getFormat(): NumberFormat {\r\n return this.properties.format;\r\n }\r\n\r\n /**\r\n * Gets the level properties\r\n */\r\n getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline'>> & Pick<NumberingLevelProperties, 'lvlRestart' | 'underline'> {\r\n return { ...this.properties };\r\n }\r\n\r\n /**\r\n * Sets the left indentation\r\n * @param twips Indentation in twips\r\n */\r\n setLeftIndent(twips: number): this {\r\n // Note: Negative values are valid (outdent into margin) per ECMA-376\r\n this.properties.leftIndent = twips;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the hanging indentation\r\n * @param twips Indentation in twips\r\n */\r\n setHangingIndent(twips: number): this {\r\n if (twips < 0) {\r\n throw new Error(\"Hanging indent must be non-negative\");\r\n }\r\n this.properties.hangingIndent = twips;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the font for the numbering character\r\n * @param font Font family name\r\n */\r\n setFont(font: string): this {\r\n this.properties.font = font;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the alignment\r\n * @param alignment Alignment type\r\n */\r\n setAlignment(alignment: NumberAlignment): this {\r\n this.properties.alignment = alignment;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the font size in half-points\r\n * @param halfPoints Font size in half-points (e.g., 24 = 12pt)\r\n */\r\n setFontSize(halfPoints: number): this {\r\n this.properties.fontSize = halfPoints;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the level text (bullet character or number template)\r\n * @param text The text template (e.g., '•' for bullets, '%1.' for numbered)\r\n */\r\n setText(text: string): this {\r\n this.properties.text = text;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the text color\r\n * @param color Hex color without # (e.g., '000000' for black)\r\n */\r\n setColor(color: string): this {\r\n this.properties.color = color;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether the numbering text is bold\r\n * @param bold Whether to make bold\r\n */\r\n setBold(bold: boolean): this {\r\n this.properties.bold = bold;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether the numbering text is italic\r\n * @param italic Whether to make italic\r\n */\r\n setItalic(italic: boolean): this {\r\n this.properties.italic = italic;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets whether the numbering text is italic\r\n */\r\n getItalic(): boolean {\r\n return this.properties.italic ?? false;\r\n }\r\n\r\n /**\r\n * Sets the underline style for numbering text\r\n * @param style Underline style ('single', 'double', 'wave', 'dotted', 'dash', etc.)\r\n */\r\n setUnderline(style: string | undefined): this {\r\n this.properties.underline = style;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the underline style\r\n */\r\n getUnderline(): string | undefined {\r\n return this.properties.underline;\r\n }\r\n\r\n /**\r\n * Clears the underline style\r\n */\r\n clearUnderline(): this {\r\n this.properties.underline = undefined;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the level restart behavior (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\r\n *\r\n * Controls when this level's numbering restarts based on higher-level changes:\r\n * - 0: Never restart (continues throughout document)\r\n * - 1-8: Restart when the specified level changes\r\n * - undefined: Restart when level-1 changes (standard/default behavior)\r\n *\r\n * @param level The level that triggers restart (0-8), or undefined for default\r\n * @example\r\n * // Level 1 that never restarts (continuous across document)\r\n * level1.setLvlRestart(0);\r\n *\r\n * // Level 2 that restarts when level 0 changes (not level 1)\r\n * level2.setLvlRestart(0);\r\n */\r\n setLvlRestart(level: number | undefined): this {\r\n if (level !== undefined && (level < 0 || level > 8)) {\r\n throw new Error(`lvlRestart must be between 0 and 8, got ${level}`);\r\n }\r\n this.properties.lvlRestart = level;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the level restart value\r\n * @returns The level that triggers restart, or undefined for default behavior\r\n */\r\n getLvlRestart(): number | undefined {\r\n return this.properties.lvlRestart;\r\n }\r\n\r\n /**\r\n * Sets the numbering format (decimal, lowerLetter, bullet, etc.)\r\n * @param format The numbering format\r\n */\r\n setFormat(format: NumberFormat): this {\r\n this.properties.format = NumberingLevel.normalizeFormat(format);\r\n return this;\r\n }\r\n\r\n /**\r\n * Normalizes display-string format values to ECMA-376 ST_NumberFormat names.\r\n * Accepts both standard format names and common display shortcuts.\r\n */\r\n static normalizeFormat(format: string): NumberFormat {\r\n const corrections: Record<string, NumberFormat> = {\r\n \"a.\": \"lowerLetter\",\r\n \"A.\": \"upperLetter\",\r\n \"i.\": \"lowerRoman\",\r\n \"I.\": \"upperRoman\",\r\n \"1.\": \"decimal\",\r\n };\r\n return (corrections[format] ?? format) as NumberFormat;\r\n }\r\n\r\n /**\r\n * Generates the WordprocessingML XML for this level\r\n */\r\n toXML(): XMLElement {\r\n // ECMA-376 CT_Lvl element order: start, numFmt, lvlRestart, pStyle, isLgl, suff, lvlText, lvlJc, pPr, rPr\r\n const children: XMLElement[] = [];\r\n\r\n // 1. Start value\r\n children.push(\r\n XMLBuilder.wSelf(\"start\", { \"w:val\": this.properties.start.toString() })\r\n );\r\n\r\n // 2. Number format\r\n children.push(\r\n XMLBuilder.wSelf(\"numFmt\", { \"w:val\": this.properties.format })\r\n );\r\n\r\n // 3. Level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\r\n if (this.properties.lvlRestart !== undefined) {\r\n children.push(\r\n XMLBuilder.wSelf(\"lvlRestart\", { \"w:val\": this.properties.lvlRestart.toString() })\r\n );\r\n }\r\n\r\n // 4. pStyle — not modeled, skipped\r\n\r\n // 5. Legal numbering style\r\n if (this.properties.isLegalNumberingStyle) {\r\n children.push(XMLBuilder.wSelf(\"isLgl\"));\r\n }\r\n\r\n // 6. Suffix (what comes after the number)\r\n if (this.properties.suffix) {\r\n children.push(\r\n XMLBuilder.wSelf(\"suff\", { \"w:val\": this.properties.suffix })\r\n );\r\n }\r\n\r\n // 7. Level text (e.g., \"%1.\" or \"•\")\r\n children.push(\r\n XMLBuilder.wSelf(\"lvlText\", { \"w:val\": this.properties.text })\r\n );\r\n\r\n // 8. Alignment\r\n children.push(\r\n XMLBuilder.wSelf(\"lvlJc\", { \"w:val\": this.properties.alignment })\r\n );\r\n\r\n // 9. Paragraph properties (indentation)\r\n const ind = XMLBuilder.wSelf(\"ind\", {\r\n \"w:left\": this.properties.leftIndent.toString(),\r\n \"w:hanging\": this.properties.hangingIndent.toString(),\r\n });\r\n const pPr = XMLBuilder.w(\"pPr\", undefined, [ind]);\r\n children.push(pPr);\r\n\r\n // 10. Run properties (font)\r\n const rPrChildren: XMLElement[] = [];\r\n\r\n // Font\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"rFonts\", {\r\n \"w:ascii\": this.properties.font,\r\n \"w:hAnsi\": this.properties.font,\r\n \"w:cs\": this.properties.font,\r\n \"w:hint\": \"default\",\r\n })\r\n );\r\n\r\n // Bold\r\n if (this.properties.bold) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"b\"));\r\n rPrChildren.push(XMLBuilder.wSelf(\"bCs\"));\r\n }\r\n\r\n // Italic\r\n if (this.properties.italic) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"i\"));\r\n rPrChildren.push(XMLBuilder.wSelf(\"iCs\"));\r\n }\r\n\r\n // Underline\r\n if (this.properties.underline) {\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"u\", { \"w:val\": this.properties.underline })\r\n );\r\n }\r\n\r\n // Color\r\n if (this.properties.color) {\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"color\", { \"w:val\": this.properties.color })\r\n );\r\n }\r\n\r\n // Font size\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"sz\", { \"w:val\": this.properties.fontSize.toString() })\r\n );\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"szCs\", { \"w:val\": this.properties.fontSize.toString() })\r\n );\r\n\r\n const rPr = XMLBuilder.w(\"rPr\", undefined, rPrChildren);\r\n children.push(rPr);\r\n\r\n return XMLBuilder.w(\r\n \"lvl\",\r\n { \"w:ilvl\": this.properties.level.toString() },\r\n children\r\n );\r\n }\r\n\r\n /**\r\n * Gets the recommended bullet symbol and font for a given level\r\n * @param level The level index (0-8)\r\n * @param style Optional bullet style ('standard', 'circle', 'square', 'arrow', 'check', 'word-native')\r\n * @returns Object with symbol and font properties\r\n */\r\n static getBulletSymbolWithFont(\r\n level: number,\r\n style:\r\n | \"standard\"\r\n | \"circle\"\r\n | \"square\"\r\n | \"arrow\"\r\n | \"check\"\r\n | \"word-native\" = \"standard\"\r\n ): { symbol: string; font: string } {\r\n const bulletSets = {\r\n // Standard style now uses Word-native encoding for maximum compatibility\r\n standard: [\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 0: Filled bullet (Symbol U+F0B7)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 1: Open circle (Courier New U+006F)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 2: Filled square (Wingdings U+F0A7)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 3: Filled bullet\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 4: Open circle\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 5: Filled square\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 6: Filled bullet\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 7: Open circle\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 8: Filled square\r\n ],\r\n circle: [\r\n { symbol: \"●\", font: \"Calibri\" }, // Level 0: Filled circle (bold)\r\n { symbol: \"○\", font: \"Calibri\" }, // Level 1: Empty circle\r\n { symbol: \"◉\", font: \"Calibri\" }, // Level 2: Fisheye\r\n { symbol: \"◯\", font: \"Calibri\" }, // Level 3: Large circle\r\n { symbol: \"⦿\", font: \"Calibri\" }, // Level 4: Circled bullet\r\n { symbol: \"○\", font: \"Calibri\" }, // Level 5: Empty circle\r\n { symbol: \"●\", font: \"Calibri\" }, // Level 6: Filled circle\r\n { symbol: \"○\", font: \"Calibri\" }, // Level 7: Empty circle\r\n { symbol: \"◉\", font: \"Calibri\" }, // Level 8: Fisheye\r\n ],\r\n square: [\r\n { symbol: \"■\", font: \"Calibri\" }, // Level 0: Filled square\r\n { symbol: \"□\", font: \"Calibri\" }, // Level 1: Empty square\r\n { symbol: \"▪\", font: \"Calibri\" }, // Level 2: Small filled square\r\n { symbol: \"▫\", font: \"Calibri\" }, // Level 3: Small empty square\r\n { symbol: \"◼\", font: \"Calibri\" }, // Level 4: Medium filled square\r\n { symbol: \"◻\", font: \"Calibri\" }, // Level 5: Medium empty square\r\n { symbol: \"■\", font: \"Calibri\" }, // Level 6: Filled square\r\n { symbol: \"□\", font: \"Calibri\" }, // Level 7: Empty square\r\n { symbol: \"▪\", font: \"Calibri\" }, // Level 8: Small filled square\r\n ],\r\n arrow: [\r\n { symbol: \"➢\", font: \"Calibri\" }, // Level 0: Right arrow\r\n { symbol: \"➣\", font: \"Calibri\" }, // Level 1: Right arrow filled\r\n { symbol: \"➤\", font: \"Calibri\" }, // Level 2: Right arrow bold\r\n { symbol: \"➔\", font: \"Calibri\" }, // Level 3: Right arrow simple\r\n { symbol: \"➜\", font: \"Calibri\" }, // Level 4: Right arrow outline\r\n { symbol: \"➢\", font: \"Calibri\" }, // Level 5: Right arrow\r\n { symbol: \"➣\", font: \"Calibri\" }, // Level 6: Right arrow filled\r\n { symbol: \"➤\", font: \"Calibri\" }, // Level 7: Right arrow bold\r\n { symbol: \"➔\", font: \"Calibri\" }, // Level 8: Right arrow simple\r\n ],\r\n check: [\r\n { symbol: \"✓\", font: \"Calibri\" }, // Level 0: Check mark\r\n { symbol: \"✔\", font: \"Calibri\" }, // Level 1: Heavy check mark\r\n { symbol: \"☑\", font: \"Calibri\" }, // Level 2: Checked box\r\n { symbol: \"✓\", font: \"Calibri\" }, // Level 3: Check mark\r\n { symbol: \"✔\", font: \"Calibri\" }, // Level 4: Heavy check mark\r\n { symbol: \"☑\", font: \"Calibri\" }, // Level 5: Checked box\r\n { symbol: \"✓\", font: \"Calibri\" }, // Level 6: Check mark\r\n { symbol: \"✔\", font: \"Calibri\" }, // Level 7: Heavy check mark\r\n { symbol: \"☑\", font: \"Calibri\" }, // Level 8: Checked box\r\n ],\r\n \"word-native\": [\r\n // Word-native bullets using PUA characters with Symbol/Wingdings fonts\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 0: Filled bullet (Symbol U+F0B7)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 1: Open circle (Courier New U+006F)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 2: Filled square (Wingdings U+F0A7)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 3: Filled bullet\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 4: Open circle\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 5: Filled square\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 6: Filled bullet\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 7: Open circle\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 8: Filled square\r\n ],\r\n };\r\n\r\n const selectedSet = bulletSets[style];\r\n const levelIndex = level % selectedSet.length;\r\n const result = selectedSet[levelIndex];\r\n\r\n // Fallback to standard bullet if somehow undefined\r\n return result || { symbol: \"•\", font: \"Calibri\" };\r\n }\r\n\r\n /**\r\n * Calculates the standard indentation values for a given level\r\n * @param level The level index (0-8)\r\n * @returns Object with leftIndent and hangingIndent in twips\r\n * @example\r\n * const indent = NumberingLevel.calculateStandardIndentation(0);\r\n * // Returns: { leftIndent: 720, hangingIndent: 360 } (0.5\" left, 0.25\" hanging)\r\n *\r\n * const indent2 = NumberingLevel.calculateStandardIndentation(2);\r\n * // Returns: { leftIndent: 1440, hangingIndent: 360 } (1.0\" left, 0.25\" hanging)\r\n */\r\n static calculateStandardIndentation(level: number): {\r\n leftIndent: number;\r\n hangingIndent: number;\r\n } {\r\n if (level < 0 || level > 8) {\r\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\r\n }\r\n\r\n return {\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n };\r\n }\r\n\r\n /**\r\n * Gets the standard number format for a given level\r\n * @param level The level index (0-8)\r\n * @returns The recommended number format for this level\r\n * @example\r\n * NumberingLevel.getStandardNumberFormat(0); // 'decimal' (1., 2., 3.)\r\n * NumberingLevel.getStandardNumberFormat(1); // 'lowerLetter' (a., b., c.)\r\n * NumberingLevel.getStandardNumberFormat(2); // 'lowerRoman' (i., ii., iii.)\r\n * NumberingLevel.getStandardNumberFormat(3); // 'upperLetter' (A., B., C.)\r\n * NumberingLevel.getStandardNumberFormat(4); // 'upperRoman' (I., II., III.)\r\n */\r\n static getStandardNumberFormat(level: number): NumberFormat {\r\n if (level < 0 || level > 8) {\r\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\r\n }\r\n\r\n const formats: NumberFormat[] = [\r\n \"decimal\", // Level 0: 1., 2., 3.\r\n \"lowerLetter\", // Level 1: a., b., c.\r\n \"lowerRoman\", // Level 2: i., ii., iii.\r\n \"upperLetter\", // Level 3: A., B., C.\r\n \"upperRoman\", // Level 4: I., II., III.\r\n ];\r\n\r\n const result = formats[level % formats.length];\r\n return result || \"decimal\"; // Fallback to decimal (should never happen)\r\n }\r\n\r\n /**\r\n * Creates a bullet list level\r\n *\r\n * When called without parameters, uses Word-native encoding for the level:\r\n * - Levels 0, 3, 6: Filled bullet (Symbol font, U+F0B7)\r\n * - Levels 1, 4, 7: Open circle (Courier New, U+006F)\r\n * - Levels 2, 5, 8: Filled square (Wingdings, U+F0A7)\r\n *\r\n * @param level The level index (0-8)\r\n * @param bullet Optional bullet character (defaults to Word-native for level)\r\n * @param font Optional font to use for the bullet (defaults to Word-native for level)\r\n */\r\n static createBulletLevel(\r\n level: number,\r\n bullet?: string,\r\n font?: string\r\n ): NumberingLevel {\r\n // Use Word-native defaults when not specified\r\n const defaults = NumberingLevel.getBulletSymbolWithFont(level, \"standard\");\r\n const actualBullet = bullet ?? defaults.symbol;\r\n const actualFont = font ?? defaults.font;\r\n\r\n return new NumberingLevel({\r\n level,\r\n format: \"bullet\",\r\n text: actualBullet,\r\n alignment: \"left\",\r\n font: actualFont,\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a decimal list level (1, 2, 3, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createDecimalLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"decimal\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a lower roman list level (i, ii, iii, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createLowerRomanLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"lowerRoman\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates an upper roman list level (I, II, III, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createUpperRomanLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"upperRoman\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a lower letter list level (a, b, c, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createLowerLetterLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"lowerLetter\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates an upper letter list level (A, B, C, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createUpperLetterLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"upperLetter\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Factory method for creating a numbering level\r\n * @param properties The level properties\r\n */\r\n static create(properties: NumberingLevelProperties): NumberingLevel {\r\n return new NumberingLevel(properties);\r\n }\r\n\r\n /**\r\n * Creates a NumberingLevel from XML element\r\n * @param xml The XML string of the <w:lvl> element\r\n * @returns NumberingLevel instance\r\n */\r\n static fromXML(xml: string): NumberingLevel {\r\n // Extract level index (required)\r\n const ilvlMatch = /<w:lvl[^>]*w:ilvl=\"([^\"]+)\"/.exec(xml);\r\n if (!ilvlMatch?.[1]) {\r\n throw new Error(\"Missing required w:ilvl attribute\");\r\n }\r\n const level = parseInt(ilvlMatch[1], 10);\r\n\r\n // Extract number format (required)\r\n const numFmtMatch = /<w:numFmt[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (!numFmtMatch?.[1]) {\r\n throw new Error(\"Missing required w:numFmt element\");\r\n }\r\n const format = NumberingLevel.normalizeFormat(numFmtMatch[1]);\r\n\r\n // Extract level text (optional - can be empty for placeholder levels)\r\n const lvlTextMatch = /<w:lvlText[^>]*w:val=\"([^\"]*)\"/.exec(xml);\r\n const text = lvlTextMatch?.[1] !== undefined ? lvlTextMatch[1] : \"\";\r\n\r\n // Extract alignment (optional, default: left)\r\n const lvlJcMatch = /<w:lvlJc[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n const alignment = (\r\n lvlJcMatch?.[1] ? lvlJcMatch[1] : \"left\"\r\n ) as NumberAlignment;\r\n\r\n // Extract start value (optional, default: 1)\r\n const startMatch = /<w:start[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n const start = startMatch?.[1] ? parseInt(startMatch[1], 10) : 1;\r\n\r\n // Extract suffix (optional, default: tab)\r\n const suffixMatch = /<w:suff[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n const suffix =\r\n suffixMatch?.[1]\r\n ? (suffixMatch[1] as \"tab\" | \"space\" | \"nothing\")\r\n : \"tab\";\r\n\r\n // Extract level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\r\n let lvlRestart: number | undefined;\r\n const lvlRestartMatch = /<w:lvlRestart[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (lvlRestartMatch?.[1]) {\r\n lvlRestart = parseInt(lvlRestartMatch[1], 10);\r\n }\r\n\r\n // Extract indentation from <w:pPr><w:ind>\r\n let leftIndent = 720 + level * 360; // default\r\n let hangingIndent = 360; // default\r\n const indMatch = /<w:ind[^>]*\\/>/.exec(xml);\r\n if (indMatch) {\r\n const indElement = indMatch[0];\r\n const leftMatch = /w:left=\"([^\"]+)\"/.exec(indElement);\r\n const hangingMatch = /w:hanging=\"([^\"]+)\"/.exec(indElement);\r\n\r\n if (leftMatch?.[1]) leftIndent = parseInt(leftMatch[1], 10);\r\n if (hangingMatch?.[1])\r\n hangingIndent = parseInt(hangingMatch[1], 10);\r\n }\r\n\r\n // Extract font and size from <w:rPr>\r\n let font = \"Calibri\";\r\n let fontSize = 22;\r\n\r\n const rFontsMatch = /<w:rFonts[^>]*\\/>/.exec(xml);\r\n if (rFontsMatch) {\r\n const rFontsElement = rFontsMatch[0];\r\n const asciiMatch = /w:ascii=\"([^\"]+)\"/.exec(rFontsElement);\r\n if (asciiMatch?.[1]) font = asciiMatch[1];\r\n }\r\n\r\n const szMatch = /<w:sz[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (szMatch?.[1]) fontSize = parseInt(szMatch[1], 10);\r\n\r\n // List prefixes should never have bold, italic, or underline - ignore source XML formatting\r\n const bold = false;\r\n const italic = false;\r\n const underline: string | undefined = undefined;\r\n\r\n // Extract color from <w:rPr>\r\n let color: string | undefined;\r\n const colorMatch = /<w:color[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (colorMatch?.[1]) {\r\n color = colorMatch[1];\r\n }\r\n\r\n return new NumberingLevel({\r\n level,\r\n format,\r\n text,\r\n alignment,\r\n start,\r\n leftIndent,\r\n hangingIndent,\r\n font,\r\n fontSize,\r\n suffix,\r\n bold,\r\n italic,\r\n underline,\r\n color,\r\n lvlRestart,\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"NumberingLevel.js","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * NumberingLevel - Defines formatting for a single level in a list\r\n *\r\n * A numbering level specifies how a particular list level (0-8) should be formatted,\r\n * including the numbering format (bullet, decimal, roman, etc.), text template,\r\n * alignment, and indentation.\r\n */\r\n\r\nimport { XMLBuilder, XMLElement } from \"../xml/XMLBuilder\";\r\n\r\n/**\r\n * Word-native bullet character mappings\r\n *\r\n * Microsoft Word uses specific fonts with Private Use Area (PUA) characters\r\n * for bullet points. These mappings ensure 100% compatibility with Word's\r\n * native bullet rendering.\r\n *\r\n * Pattern: Levels 0,3,6 = filled bullet; 1,4,7 = open circle; 2,5,8 = filled square\r\n */\r\nexport const WORD_NATIVE_BULLETS = {\r\n /** Filled bullet (levels 0, 3, 6) - Symbol font U+F0B7 */\r\n FILLED_BULLET: { char: \"\\uF0B7\", font: \"Symbol\" },\r\n /** Open circle (levels 1, 4, 7) - Courier New U+006F (lowercase 'o') */\r\n OPEN_CIRCLE: { char: \"\\u006F\", font: \"Courier New\" },\r\n /** Filled square (levels 2, 5, 8) - Wingdings U+F0A7 */\r\n FILLED_SQUARE: { char: \"\\uF0A7\", font: \"Wingdings\" },\r\n} as const;\r\n\r\n/**\r\n * Type for Word-native bullet definition\r\n */\r\nexport type WordNativeBullet =\r\n (typeof WORD_NATIVE_BULLETS)[keyof typeof WORD_NATIVE_BULLETS];\r\n\r\n/**\r\n * Numbering format types supported by Word\r\n */\r\nexport type NumberFormat =\r\n | \"bullet\" // Bullet character\r\n | \"decimal\" // 1, 2, 3, ...\r\n | \"lowerRoman\" // i, ii, iii, ...\r\n | \"upperRoman\" // I, II, III, ...\r\n | \"lowerLetter\" // a, b, c, ...\r\n | \"upperLetter\" // A, B, C, ...\r\n | \"ordinal\" // 1st, 2nd, 3rd, ...\r\n | \"cardinalText\" // One, Two, Three, ...\r\n | \"ordinalText\" // First, Second, Third, ...\r\n | \"hex\" // 0x01, 0x02, ...\r\n | \"chicago\" // *, †, ‡, §, ...\r\n | \"decimal zero\"; // 01, 02, 03, ...\r\n\r\n/**\r\n * Alignment for the numbering text\r\n */\r\nexport type NumberAlignment = \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\r\n\r\n/**\r\n * Properties for creating a numbering level\r\n */\r\nexport interface NumberingLevelProperties {\r\n /** The level index (0-8, where 0 is the outermost level) */\r\n level: number;\r\n\r\n /** The numbering format */\r\n format: NumberFormat;\r\n\r\n /** The text template (e.g., \"%1.\" for decimal, \"•\" for bullet) */\r\n text: string;\r\n\r\n /** Alignment of the numbering text */\r\n alignment?: NumberAlignment;\r\n\r\n /** Starting value (for numeric formats, default: 1) */\r\n start?: number;\r\n\r\n /** Left indentation in twips (can be negative for outdents into margin) */\r\n leftIndent?: number;\r\n\r\n /** Hanging indentation in twips (for the text after the number) */\r\n hangingIndent?: number;\r\n\r\n /** Font family for the numbering character (useful for bullets) */\r\n font?: string;\r\n\r\n /** Font size in half-points (e.g., 22 = 11pt) */\r\n fontSize?: number;\r\n\r\n /** Whether to show text after the number (default: true) */\r\n isLegalNumberingStyle?: boolean;\r\n\r\n /** Suffix after the number (tab, space, or nothing) */\r\n suffix?: \"tab\" | \"space\" | \"nothing\";\r\n\r\n /** Text color in hex (without #) */\r\n color?: string;\r\n\r\n /** Whether the numbering text is bold */\r\n bold?: boolean;\r\n\r\n /** Whether the numbering text is italic */\r\n italic?: boolean;\r\n\r\n /** Underline style for numbering text ('single', 'double', 'wave', 'dotted', 'dash', etc.) */\r\n underline?: string;\r\n\r\n /**\r\n * Level at which numbering should restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\r\n * Specifies when to restart this level's numbering based on a higher-level change:\r\n * - 0: Never restart (continues throughout document)\r\n * - 1-8: Restart when the specified level changes\r\n * - undefined (default): Restart when level-1 changes (standard behavior)\r\n */\r\n lvlRestart?: number;\r\n\r\n /** Paragraph style ID linked to this numbering level (w:pStyle per ECMA-376 §17.9.23) */\r\n pStyle?: string;\r\n}\r\n\r\n/**\r\n * Represents a single level in a numbering definition\r\n */\r\nexport class NumberingLevel {\r\n private properties: Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>> & Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>;\r\n\r\n /**\r\n * Creates a new numbering level\r\n * @param properties The level properties\r\n */\r\n constructor(properties: NumberingLevelProperties) {\r\n // Set defaults\r\n this.properties = {\r\n level: properties.level,\r\n format: properties.format,\r\n text: properties.text,\r\n alignment: properties.alignment || \"left\",\r\n start: properties.start !== undefined ? properties.start : 1,\r\n leftIndent:\r\n properties.leftIndent !== undefined\r\n ? properties.leftIndent\r\n : 720 + properties.level * 360,\r\n hangingIndent:\r\n properties.hangingIndent !== undefined ? properties.hangingIndent : 360,\r\n font: properties.font || \"Calibri\",\r\n fontSize: properties.fontSize || 22, // 11pt default\r\n isLegalNumberingStyle:\r\n properties.isLegalNumberingStyle !== undefined\r\n ? properties.isLegalNumberingStyle\r\n : false,\r\n suffix: properties.suffix || \"tab\",\r\n color: properties.color || \"000000\",\r\n bold: properties.bold !== undefined ? properties.bold : false,\r\n italic: properties.italic !== undefined ? properties.italic : false,\r\n underline: properties.underline,\r\n lvlRestart: properties.lvlRestart, // undefined means default behavior (restart on level-1 change)\r\n pStyle: properties.pStyle,\r\n };\r\n\r\n this.validate();\r\n }\r\n\r\n /**\r\n * Validates the level properties\r\n */\r\n private validate(): void {\r\n if (this.properties.level < 0 || this.properties.level > 8) {\r\n throw new Error(\r\n `Level must be between 0 and 8, got ${this.properties.level}`\r\n );\r\n }\r\n\r\n // Note: leftIndent CAN be negative (outdent into margin) per ECMA-376\r\n // This is valid and used for hanging indents where bullets appear in margin\r\n\r\n if (this.properties.hangingIndent < 0) {\r\n throw new Error(\"Hanging indent must be non-negative\");\r\n }\r\n\r\n if (this.properties.start < 0) {\r\n throw new Error(\"Start value must be non-negative\");\r\n }\r\n }\r\n\r\n /**\r\n * Calculates safe indentation values for a given level based on page constraints.\r\n *\r\n * Use this instead of default indentation when working with narrow pages or\r\n * deep nesting levels to ensure content stays within page margins.\r\n *\r\n * @param level The level index (0-8)\r\n * @param pageWidthTwips Page width in twips (default: 12240 = 8.5 inches)\r\n * @param leftMarginTwips Left margin in twips (default: 1440 = 1 inch)\r\n * @param rightMarginTwips Right margin in twips (default: 1440 = 1 inch)\r\n * @param minContentWidth Minimum content width in twips (default: 2880 = 2 inches)\r\n * @returns Safe indentation values that won't exceed available space\r\n *\r\n * @example\r\n * ```typescript\r\n * // For a narrow page (6\" wide with 0.5\" margins)\r\n * const indent = NumberingLevel.calculateSafeIndentation(\r\n * 5, // level 5\r\n * 8640, // 6 inches page width\r\n * 720, // 0.5 inch left margin\r\n * 720 // 0.5 inch right margin\r\n * );\r\n * ```\r\n */\r\n static calculateSafeIndentation(\r\n level: number,\r\n pageWidthTwips = 12240,\r\n leftMarginTwips = 1440,\r\n rightMarginTwips = 1440,\r\n minContentWidth = 2880\r\n ): { leftIndent: number; hangingIndent: number } {\r\n if (level < 0 || level > 8) {\r\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\r\n }\r\n\r\n // Calculate available content width\r\n const availableWidth = pageWidthTwips - leftMarginTwips - rightMarginTwips;\r\n\r\n // Calculate max safe indent (leave space for content)\r\n const maxSafeIndent = Math.max(0, availableWidth - minContentWidth);\r\n\r\n // Standard indentation\r\n const standardLeftIndent = 720 + level * 360;\r\n const hangingIndent = 360;\r\n\r\n // Cap at safe maximum\r\n const safeLeftIndent = Math.min(standardLeftIndent, maxSafeIndent);\r\n\r\n return {\r\n leftIndent: safeLeftIndent,\r\n hangingIndent,\r\n };\r\n }\r\n\r\n /**\r\n * Gets the level index\r\n */\r\n getLevel(): number {\r\n return this.properties.level;\r\n }\r\n\r\n /**\r\n * Gets the numbering format\r\n */\r\n getFormat(): NumberFormat {\r\n return this.properties.format;\r\n }\r\n\r\n /**\r\n * Gets the level properties\r\n */\r\n getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>> & Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'> {\r\n return { ...this.properties };\r\n }\r\n\r\n /**\r\n * Sets the left indentation\r\n * @param twips Indentation in twips\r\n */\r\n setLeftIndent(twips: number): this {\r\n // Note: Negative values are valid (outdent into margin) per ECMA-376\r\n this.properties.leftIndent = twips;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the hanging indentation\r\n * @param twips Indentation in twips\r\n */\r\n setHangingIndent(twips: number): this {\r\n if (twips < 0) {\r\n throw new Error(\"Hanging indent must be non-negative\");\r\n }\r\n this.properties.hangingIndent = twips;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the font for the numbering character\r\n * @param font Font family name\r\n */\r\n setFont(font: string): this {\r\n this.properties.font = font;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the alignment\r\n * @param alignment Alignment type\r\n */\r\n setAlignment(alignment: NumberAlignment): this {\r\n this.properties.alignment = alignment;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the font size in half-points\r\n * @param halfPoints Font size in half-points (e.g., 24 = 12pt)\r\n */\r\n setFontSize(halfPoints: number): this {\r\n this.properties.fontSize = halfPoints;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the level text (bullet character or number template)\r\n * @param text The text template (e.g., '•' for bullets, '%1.' for numbered)\r\n */\r\n setText(text: string): this {\r\n this.properties.text = text;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the text color\r\n * @param color Hex color without # (e.g., '000000' for black)\r\n */\r\n setColor(color: string): this {\r\n this.properties.color = color;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether the numbering text is bold\r\n * @param bold Whether to make bold\r\n */\r\n setBold(bold: boolean): this {\r\n this.properties.bold = bold;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether the numbering text is italic\r\n * @param italic Whether to make italic\r\n */\r\n setItalic(italic: boolean): this {\r\n this.properties.italic = italic;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets whether the numbering text is italic\r\n */\r\n getItalic(): boolean {\r\n return this.properties.italic ?? false;\r\n }\r\n\r\n /**\r\n * Sets the underline style for numbering text\r\n * @param style Underline style ('single', 'double', 'wave', 'dotted', 'dash', etc.)\r\n */\r\n setUnderline(style: string | undefined): this {\r\n this.properties.underline = style;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the underline style\r\n */\r\n getUnderline(): string | undefined {\r\n return this.properties.underline;\r\n }\r\n\r\n /**\r\n * Clears the underline style\r\n */\r\n clearUnderline(): this {\r\n this.properties.underline = undefined;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the level restart behavior (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\r\n *\r\n * Controls when this level's numbering restarts based on higher-level changes:\r\n * - 0: Never restart (continues throughout document)\r\n * - 1-8: Restart when the specified level changes\r\n * - undefined: Restart when level-1 changes (standard/default behavior)\r\n *\r\n * @param level The level that triggers restart (0-8), or undefined for default\r\n * @example\r\n * // Level 1 that never restarts (continuous across document)\r\n * level1.setLvlRestart(0);\r\n *\r\n * // Level 2 that restarts when level 0 changes (not level 1)\r\n * level2.setLvlRestart(0);\r\n */\r\n setLvlRestart(level: number | undefined): this {\r\n if (level !== undefined && (level < 0 || level > 8)) {\r\n throw new Error(`lvlRestart must be between 0 and 8, got ${level}`);\r\n }\r\n this.properties.lvlRestart = level;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the level restart value\r\n * @returns The level that triggers restart, or undefined for default behavior\r\n */\r\n getLvlRestart(): number | undefined {\r\n return this.properties.lvlRestart;\r\n }\r\n\r\n /**\r\n * Sets the paragraph style ID linked to this numbering level\r\n * Links this level to a paragraph style definition (w:pStyle per ECMA-376 §17.9.23)\r\n * @param styleId The paragraph style ID\r\n */\r\n setParagraphStyle(styleId: string): this {\r\n this.properties.pStyle = styleId;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the paragraph style ID linked to this numbering level\r\n */\r\n getParagraphStyle(): string | undefined {\r\n return this.properties.pStyle;\r\n }\r\n\r\n /**\r\n * Sets the numbering format (decimal, lowerLetter, bullet, etc.)\r\n * @param format The numbering format\r\n */\r\n setFormat(format: NumberFormat): this {\r\n this.properties.format = NumberingLevel.normalizeFormat(format);\r\n return this;\r\n }\r\n\r\n /**\r\n * Normalizes display-string format values to ECMA-376 ST_NumberFormat names.\r\n * Accepts both standard format names and common display shortcuts.\r\n */\r\n static normalizeFormat(format: string): NumberFormat {\r\n const corrections: Record<string, NumberFormat> = {\r\n \"a.\": \"lowerLetter\",\r\n \"A.\": \"upperLetter\",\r\n \"i.\": \"lowerRoman\",\r\n \"I.\": \"upperRoman\",\r\n \"1.\": \"decimal\",\r\n };\r\n return (corrections[format] ?? format) as NumberFormat;\r\n }\r\n\r\n /**\r\n * Generates the WordprocessingML XML for this level\r\n */\r\n toXML(): XMLElement {\r\n // ECMA-376 CT_Lvl element order: start, numFmt, lvlRestart, pStyle, isLgl, suff, lvlText, lvlJc, pPr, rPr\r\n const children: XMLElement[] = [];\r\n\r\n // 1. Start value\r\n children.push(\r\n XMLBuilder.wSelf(\"start\", { \"w:val\": this.properties.start.toString() })\r\n );\r\n\r\n // 2. Number format\r\n children.push(\r\n XMLBuilder.wSelf(\"numFmt\", { \"w:val\": this.properties.format })\r\n );\r\n\r\n // 3. Level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\r\n if (this.properties.lvlRestart !== undefined) {\r\n children.push(\r\n XMLBuilder.wSelf(\"lvlRestart\", { \"w:val\": this.properties.lvlRestart.toString() })\r\n );\r\n }\r\n\r\n // 4. pStyle (paragraph style link)\r\n if (this.properties.pStyle) {\r\n children.push(\r\n XMLBuilder.wSelf(\"pStyle\", { \"w:val\": this.properties.pStyle })\r\n );\r\n }\r\n\r\n // 5. Legal numbering style\r\n if (this.properties.isLegalNumberingStyle) {\r\n children.push(XMLBuilder.wSelf(\"isLgl\"));\r\n }\r\n\r\n // 6. Suffix (what comes after the number)\r\n if (this.properties.suffix) {\r\n children.push(\r\n XMLBuilder.wSelf(\"suff\", { \"w:val\": this.properties.suffix })\r\n );\r\n }\r\n\r\n // 7. Level text (e.g., \"%1.\" or \"•\")\r\n children.push(\r\n XMLBuilder.wSelf(\"lvlText\", { \"w:val\": this.properties.text })\r\n );\r\n\r\n // 8. Alignment\r\n children.push(\r\n XMLBuilder.wSelf(\"lvlJc\", { \"w:val\": this.properties.alignment })\r\n );\r\n\r\n // 9. Paragraph properties (indentation)\r\n const ind = XMLBuilder.wSelf(\"ind\", {\r\n \"w:left\": this.properties.leftIndent.toString(),\r\n \"w:hanging\": this.properties.hangingIndent.toString(),\r\n });\r\n const pPr = XMLBuilder.w(\"pPr\", undefined, [ind]);\r\n children.push(pPr);\r\n\r\n // 10. Run properties (font)\r\n const rPrChildren: XMLElement[] = [];\r\n\r\n // Font\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"rFonts\", {\r\n \"w:ascii\": this.properties.font,\r\n \"w:hAnsi\": this.properties.font,\r\n \"w:cs\": this.properties.font,\r\n \"w:hint\": \"default\",\r\n })\r\n );\r\n\r\n // Bold\r\n if (this.properties.bold) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"b\"));\r\n rPrChildren.push(XMLBuilder.wSelf(\"bCs\"));\r\n }\r\n\r\n // Italic\r\n if (this.properties.italic) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"i\"));\r\n rPrChildren.push(XMLBuilder.wSelf(\"iCs\"));\r\n }\r\n\r\n // Underline\r\n if (this.properties.underline) {\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"u\", { \"w:val\": this.properties.underline })\r\n );\r\n }\r\n\r\n // Color\r\n if (this.properties.color) {\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"color\", { \"w:val\": this.properties.color })\r\n );\r\n }\r\n\r\n // Font size\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"sz\", { \"w:val\": this.properties.fontSize.toString() })\r\n );\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"szCs\", { \"w:val\": this.properties.fontSize.toString() })\r\n );\r\n\r\n const rPr = XMLBuilder.w(\"rPr\", undefined, rPrChildren);\r\n children.push(rPr);\r\n\r\n return XMLBuilder.w(\r\n \"lvl\",\r\n { \"w:ilvl\": this.properties.level.toString() },\r\n children\r\n );\r\n }\r\n\r\n /**\r\n * Gets the recommended bullet symbol and font for a given level\r\n * @param level The level index (0-8)\r\n * @param style Optional bullet style ('standard', 'circle', 'square', 'arrow', 'check', 'word-native')\r\n * @returns Object with symbol and font properties\r\n */\r\n static getBulletSymbolWithFont(\r\n level: number,\r\n style:\r\n | \"standard\"\r\n | \"circle\"\r\n | \"square\"\r\n | \"arrow\"\r\n | \"check\"\r\n | \"word-native\" = \"standard\"\r\n ): { symbol: string; font: string } {\r\n const bulletSets = {\r\n // Standard style now uses Word-native encoding for maximum compatibility\r\n standard: [\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 0: Filled bullet (Symbol U+F0B7)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 1: Open circle (Courier New U+006F)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 2: Filled square (Wingdings U+F0A7)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 3: Filled bullet\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 4: Open circle\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 5: Filled square\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 6: Filled bullet\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 7: Open circle\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 8: Filled square\r\n ],\r\n circle: [\r\n { symbol: \"●\", font: \"Calibri\" }, // Level 0: Filled circle (bold)\r\n { symbol: \"○\", font: \"Calibri\" }, // Level 1: Empty circle\r\n { symbol: \"◉\", font: \"Calibri\" }, // Level 2: Fisheye\r\n { symbol: \"◯\", font: \"Calibri\" }, // Level 3: Large circle\r\n { symbol: \"⦿\", font: \"Calibri\" }, // Level 4: Circled bullet\r\n { symbol: \"○\", font: \"Calibri\" }, // Level 5: Empty circle\r\n { symbol: \"●\", font: \"Calibri\" }, // Level 6: Filled circle\r\n { symbol: \"○\", font: \"Calibri\" }, // Level 7: Empty circle\r\n { symbol: \"◉\", font: \"Calibri\" }, // Level 8: Fisheye\r\n ],\r\n square: [\r\n { symbol: \"■\", font: \"Calibri\" }, // Level 0: Filled square\r\n { symbol: \"□\", font: \"Calibri\" }, // Level 1: Empty square\r\n { symbol: \"▪\", font: \"Calibri\" }, // Level 2: Small filled square\r\n { symbol: \"▫\", font: \"Calibri\" }, // Level 3: Small empty square\r\n { symbol: \"◼\", font: \"Calibri\" }, // Level 4: Medium filled square\r\n { symbol: \"◻\", font: \"Calibri\" }, // Level 5: Medium empty square\r\n { symbol: \"■\", font: \"Calibri\" }, // Level 6: Filled square\r\n { symbol: \"□\", font: \"Calibri\" }, // Level 7: Empty square\r\n { symbol: \"▪\", font: \"Calibri\" }, // Level 8: Small filled square\r\n ],\r\n arrow: [\r\n { symbol: \"➢\", font: \"Calibri\" }, // Level 0: Right arrow\r\n { symbol: \"➣\", font: \"Calibri\" }, // Level 1: Right arrow filled\r\n { symbol: \"➤\", font: \"Calibri\" }, // Level 2: Right arrow bold\r\n { symbol: \"➔\", font: \"Calibri\" }, // Level 3: Right arrow simple\r\n { symbol: \"➜\", font: \"Calibri\" }, // Level 4: Right arrow outline\r\n { symbol: \"➢\", font: \"Calibri\" }, // Level 5: Right arrow\r\n { symbol: \"➣\", font: \"Calibri\" }, // Level 6: Right arrow filled\r\n { symbol: \"➤\", font: \"Calibri\" }, // Level 7: Right arrow bold\r\n { symbol: \"➔\", font: \"Calibri\" }, // Level 8: Right arrow simple\r\n ],\r\n check: [\r\n { symbol: \"✓\", font: \"Calibri\" }, // Level 0: Check mark\r\n { symbol: \"✔\", font: \"Calibri\" }, // Level 1: Heavy check mark\r\n { symbol: \"☑\", font: \"Calibri\" }, // Level 2: Checked box\r\n { symbol: \"✓\", font: \"Calibri\" }, // Level 3: Check mark\r\n { symbol: \"✔\", font: \"Calibri\" }, // Level 4: Heavy check mark\r\n { symbol: \"☑\", font: \"Calibri\" }, // Level 5: Checked box\r\n { symbol: \"✓\", font: \"Calibri\" }, // Level 6: Check mark\r\n { symbol: \"✔\", font: \"Calibri\" }, // Level 7: Heavy check mark\r\n { symbol: \"☑\", font: \"Calibri\" }, // Level 8: Checked box\r\n ],\r\n \"word-native\": [\r\n // Word-native bullets using PUA characters with Symbol/Wingdings fonts\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 0: Filled bullet (Symbol U+F0B7)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 1: Open circle (Courier New U+006F)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 2: Filled square (Wingdings U+F0A7)\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 3: Filled bullet\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 4: Open circle\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 5: Filled square\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\r\n }, // Level 6: Filled bullet\r\n {\r\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\r\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\r\n }, // Level 7: Open circle\r\n {\r\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\r\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\r\n }, // Level 8: Filled square\r\n ],\r\n };\r\n\r\n const selectedSet = bulletSets[style];\r\n const levelIndex = level % selectedSet.length;\r\n const result = selectedSet[levelIndex];\r\n\r\n // Fallback to standard bullet if somehow undefined\r\n return result || { symbol: \"•\", font: \"Calibri\" };\r\n }\r\n\r\n /**\r\n * Calculates the standard indentation values for a given level\r\n * @param level The level index (0-8)\r\n * @returns Object with leftIndent and hangingIndent in twips\r\n * @example\r\n * const indent = NumberingLevel.calculateStandardIndentation(0);\r\n * // Returns: { leftIndent: 720, hangingIndent: 360 } (0.5\" left, 0.25\" hanging)\r\n *\r\n * const indent2 = NumberingLevel.calculateStandardIndentation(2);\r\n * // Returns: { leftIndent: 1440, hangingIndent: 360 } (1.0\" left, 0.25\" hanging)\r\n */\r\n static calculateStandardIndentation(level: number): {\r\n leftIndent: number;\r\n hangingIndent: number;\r\n } {\r\n if (level < 0 || level > 8) {\r\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\r\n }\r\n\r\n return {\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n };\r\n }\r\n\r\n /**\r\n * Gets the standard number format for a given level\r\n * @param level The level index (0-8)\r\n * @returns The recommended number format for this level\r\n * @example\r\n * NumberingLevel.getStandardNumberFormat(0); // 'decimal' (1., 2., 3.)\r\n * NumberingLevel.getStandardNumberFormat(1); // 'lowerLetter' (a., b., c.)\r\n * NumberingLevel.getStandardNumberFormat(2); // 'lowerRoman' (i., ii., iii.)\r\n * NumberingLevel.getStandardNumberFormat(3); // 'upperLetter' (A., B., C.)\r\n * NumberingLevel.getStandardNumberFormat(4); // 'upperRoman' (I., II., III.)\r\n */\r\n static getStandardNumberFormat(level: number): NumberFormat {\r\n if (level < 0 || level > 8) {\r\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\r\n }\r\n\r\n const formats: NumberFormat[] = [\r\n \"decimal\", // Level 0: 1., 2., 3.\r\n \"lowerLetter\", // Level 1: a., b., c.\r\n \"lowerRoman\", // Level 2: i., ii., iii.\r\n \"upperLetter\", // Level 3: A., B., C.\r\n \"upperRoman\", // Level 4: I., II., III.\r\n ];\r\n\r\n const result = formats[level % formats.length];\r\n return result || \"decimal\"; // Fallback to decimal (should never happen)\r\n }\r\n\r\n /**\r\n * Creates a bullet list level\r\n *\r\n * When called without parameters, uses Word-native encoding for the level:\r\n * - Levels 0, 3, 6: Filled bullet (Symbol font, U+F0B7)\r\n * - Levels 1, 4, 7: Open circle (Courier New, U+006F)\r\n * - Levels 2, 5, 8: Filled square (Wingdings, U+F0A7)\r\n *\r\n * @param level The level index (0-8)\r\n * @param bullet Optional bullet character (defaults to Word-native for level)\r\n * @param font Optional font to use for the bullet (defaults to Word-native for level)\r\n */\r\n static createBulletLevel(\r\n level: number,\r\n bullet?: string,\r\n font?: string\r\n ): NumberingLevel {\r\n // Use Word-native defaults when not specified\r\n const defaults = NumberingLevel.getBulletSymbolWithFont(level, \"standard\");\r\n const actualBullet = bullet ?? defaults.symbol;\r\n const actualFont = font ?? defaults.font;\r\n\r\n return new NumberingLevel({\r\n level,\r\n format: \"bullet\",\r\n text: actualBullet,\r\n alignment: \"left\",\r\n font: actualFont,\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a decimal list level (1, 2, 3, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createDecimalLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"decimal\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a lower roman list level (i, ii, iii, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createLowerRomanLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"lowerRoman\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates an upper roman list level (I, II, III, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createUpperRomanLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"upperRoman\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a lower letter list level (a, b, c, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createLowerLetterLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"lowerLetter\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Creates an upper letter list level (A, B, C, ...)\r\n * @param level The level index (0-8)\r\n * @param template The text template (default: '%1.')\r\n */\r\n static createUpperLetterLevel(\r\n level: number,\r\n template = `%${level + 1}.`\r\n ): NumberingLevel {\r\n return new NumberingLevel({\r\n level,\r\n format: \"upperLetter\",\r\n text: template,\r\n alignment: \"left\",\r\n font: \"Verdana\",\r\n fontSize: 24, // 12pt\r\n bold: false,\r\n color: \"000000\",\r\n leftIndent: 720 + level * 360,\r\n hangingIndent: 360,\r\n });\r\n }\r\n\r\n /**\r\n * Factory method for creating a numbering level\r\n * @param properties The level properties\r\n */\r\n static create(properties: NumberingLevelProperties): NumberingLevel {\r\n return new NumberingLevel(properties);\r\n }\r\n\r\n /**\r\n * Creates a NumberingLevel from XML element\r\n * @param xml The XML string of the <w:lvl> element\r\n * @returns NumberingLevel instance\r\n */\r\n static fromXML(xml: string): NumberingLevel {\r\n // Extract level index (required)\r\n const ilvlMatch = /<w:lvl[^>]*w:ilvl=\"([^\"]+)\"/.exec(xml);\r\n if (!ilvlMatch?.[1]) {\r\n throw new Error(\"Missing required w:ilvl attribute\");\r\n }\r\n const level = parseInt(ilvlMatch[1], 10);\r\n\r\n // Extract number format (required)\r\n const numFmtMatch = /<w:numFmt[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (!numFmtMatch?.[1]) {\r\n throw new Error(\"Missing required w:numFmt element\");\r\n }\r\n const format = NumberingLevel.normalizeFormat(numFmtMatch[1]);\r\n\r\n // Extract level text (optional - can be empty for placeholder levels)\r\n const lvlTextMatch = /<w:lvlText[^>]*w:val=\"([^\"]*)\"/.exec(xml);\r\n const text = lvlTextMatch?.[1] !== undefined ? lvlTextMatch[1] : \"\";\r\n\r\n // Extract alignment (optional, default: left)\r\n const lvlJcMatch = /<w:lvlJc[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n const alignment = (\r\n lvlJcMatch?.[1] ? lvlJcMatch[1] : \"left\"\r\n ) as NumberAlignment;\r\n\r\n // Extract start value (optional, default: 1)\r\n const startMatch = /<w:start[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n const start = startMatch?.[1] ? parseInt(startMatch[1], 10) : 1;\r\n\r\n // Extract suffix (optional, default: tab)\r\n const suffixMatch = /<w:suff[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n const suffix =\r\n suffixMatch?.[1]\r\n ? (suffixMatch[1] as \"tab\" | \"space\" | \"nothing\")\r\n : \"tab\";\r\n\r\n // Extract level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\r\n let lvlRestart: number | undefined;\r\n const lvlRestartMatch = /<w:lvlRestart[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (lvlRestartMatch?.[1]) {\r\n lvlRestart = parseInt(lvlRestartMatch[1], 10);\r\n }\r\n\r\n // Extract pStyle (paragraph style link)\r\n let pStyle: string | undefined;\r\n const pStyleMatch = /<w:pStyle[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (pStyleMatch?.[1]) {\r\n pStyle = pStyleMatch[1];\r\n }\r\n\r\n // Extract indentation from <w:pPr><w:ind>\r\n let leftIndent = 720 + level * 360; // default\r\n let hangingIndent = 360; // default\r\n const indMatch = /<w:ind[^>]*\\/>/.exec(xml);\r\n if (indMatch) {\r\n const indElement = indMatch[0];\r\n const leftMatch = /w:left=\"([^\"]+)\"/.exec(indElement);\r\n const hangingMatch = /w:hanging=\"([^\"]+)\"/.exec(indElement);\r\n\r\n if (leftMatch?.[1]) leftIndent = parseInt(leftMatch[1], 10);\r\n if (hangingMatch?.[1])\r\n hangingIndent = parseInt(hangingMatch[1], 10);\r\n }\r\n\r\n // Extract font and size from <w:rPr>\r\n let font = \"Calibri\";\r\n let fontSize = 22;\r\n\r\n const rFontsMatch = /<w:rFonts[^>]*\\/>/.exec(xml);\r\n if (rFontsMatch) {\r\n const rFontsElement = rFontsMatch[0];\r\n const asciiMatch = /w:ascii=\"([^\"]+)\"/.exec(rFontsElement);\r\n if (asciiMatch?.[1]) font = asciiMatch[1];\r\n }\r\n\r\n const szMatch = /<w:sz[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (szMatch?.[1]) fontSize = parseInt(szMatch[1], 10);\r\n\r\n // List prefixes should never have bold, italic, or underline - ignore source XML formatting\r\n const bold = false;\r\n const italic = false;\r\n const underline: string | undefined = undefined;\r\n\r\n // Extract color from <w:rPr>\r\n let color: string | undefined;\r\n const colorMatch = /<w:color[^>]*w:val=\"([^\"]+)\"/.exec(xml);\r\n if (colorMatch?.[1]) {\r\n color = colorMatch[1];\r\n }\r\n\r\n return new NumberingLevel({\r\n level,\r\n format,\r\n text,\r\n alignment,\r\n start,\r\n leftIndent,\r\n hangingIndent,\r\n font,\r\n fontSize,\r\n suffix,\r\n bold,\r\n italic,\r\n underline,\r\n color,\r\n lvlRestart,\r\n pStyle,\r\n });\r\n }\r\n}\r\n"]}
@@ -88,6 +88,8 @@ export interface StyleProperties {
88
88
  unhideWhenUsed?: boolean;
89
89
  locked?: boolean;
90
90
  personal?: boolean;
91
+ personalCompose?: boolean;
92
+ personalReply?: boolean;
91
93
  link?: string;
92
94
  autoRedefine?: boolean;
93
95
  aliases?: string;
@@ -116,6 +118,10 @@ export declare class Style {
116
118
  setUnhideWhenUsed(enabled: boolean): this;
117
119
  setLocked(locked: boolean): this;
118
120
  setPersonal(personal: boolean): this;
121
+ setPersonalCompose(enabled: boolean): this;
122
+ getPersonalCompose(): boolean;
123
+ setPersonalReply(enabled: boolean): this;
124
+ getPersonalReply(): boolean;
119
125
  setLink(styleId: string): this;
120
126
  setAutoRedefine(enabled: boolean): this;
121
127
  setAliases(aliases: string): this;
@@ -1 +1 @@
1
- {"version":3,"file":"Style.d.ts","sourceRoot":"","sources":["../../src/formatting/Style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Style.d.ts","sourceRoot":"","sources":["../../src/formatting/Style.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,20 @@ class Style {
85
85
  this.properties.personal = personal;
86
86
  return this;
87
87
  }
88
+ setPersonalCompose(enabled) {
89
+ this.properties.personalCompose = enabled;
90
+ return this;
91
+ }
92
+ getPersonalCompose() {
93
+ return this.properties.personalCompose === true;
94
+ }
95
+ setPersonalReply(enabled) {
96
+ this.properties.personalReply = enabled;
97
+ return this;
98
+ }
99
+ getPersonalReply() {
100
+ return this.properties.personalReply === true;
101
+ }
88
102
  setLink(styleId) {
89
103
  this.properties.link = styleId;
90
104
  return this;
@@ -303,6 +317,12 @@ class Style {
303
317
  if (this.properties.personal) {
304
318
  styleChildren.push(XMLBuilder_1.XMLBuilder.wSelf("personal"));
305
319
  }
320
+ if (this.properties.personalCompose) {
321
+ styleChildren.push(XMLBuilder_1.XMLBuilder.wSelf("personalCompose"));
322
+ }
323
+ if (this.properties.personalReply) {
324
+ styleChildren.push(XMLBuilder_1.XMLBuilder.wSelf("personalReply"));
325
+ }
306
326
  if (this.properties.paragraphFormatting || this.properties.numPr) {
307
327
  const pPr = this.generateParagraphProperties(this.properties.paragraphFormatting || {});
308
328
  if (this.properties.numPr) {