docxmlater 10.3.6 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +158 -7
  2. package/dist/core/Document.d.ts +97 -3
  3. package/dist/core/Document.d.ts.map +1 -1
  4. package/dist/core/Document.js +727 -50
  5. package/dist/core/Document.js.map +1 -1
  6. package/dist/core/DocumentContent.d.ts.map +1 -1
  7. package/dist/core/DocumentContent.js +0 -8
  8. package/dist/core/DocumentContent.js.map +1 -1
  9. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  10. package/dist/core/DocumentGenerator.js +9 -5
  11. package/dist/core/DocumentGenerator.js.map +1 -1
  12. package/dist/core/DocumentParser.d.ts.map +1 -1
  13. package/dist/core/DocumentParser.js +573 -101
  14. package/dist/core/DocumentParser.js.map +1 -1
  15. package/dist/core/RelationshipManager.d.ts.map +1 -1
  16. package/dist/core/RelationshipManager.js +4 -3
  17. package/dist/core/RelationshipManager.js.map +1 -1
  18. package/dist/elements/Bookmark.d.ts +7 -0
  19. package/dist/elements/Bookmark.d.ts.map +1 -1
  20. package/dist/elements/Bookmark.js +24 -4
  21. package/dist/elements/Bookmark.js.map +1 -1
  22. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  23. package/dist/elements/BookmarkManager.js +4 -3
  24. package/dist/elements/BookmarkManager.js.map +1 -1
  25. package/dist/elements/CommonTypes.d.ts +2 -2
  26. package/dist/elements/CommonTypes.d.ts.map +1 -1
  27. package/dist/elements/CommonTypes.js +14 -1
  28. package/dist/elements/CommonTypes.js.map +1 -1
  29. package/dist/elements/Field.d.ts +1 -1
  30. package/dist/elements/Field.d.ts.map +1 -1
  31. package/dist/elements/Field.js +1 -1
  32. package/dist/elements/Field.js.map +1 -1
  33. package/dist/elements/Footer.d.ts +2 -0
  34. package/dist/elements/Footer.d.ts.map +1 -1
  35. package/dist/elements/Footer.js +6 -0
  36. package/dist/elements/Footer.js.map +1 -1
  37. package/dist/elements/Header.d.ts +2 -0
  38. package/dist/elements/Header.d.ts.map +1 -1
  39. package/dist/elements/Header.js +6 -0
  40. package/dist/elements/Header.js.map +1 -1
  41. package/dist/elements/Image.d.ts.map +1 -1
  42. package/dist/elements/Image.js +3 -0
  43. package/dist/elements/Image.js.map +1 -1
  44. package/dist/elements/Paragraph.d.ts +81 -1
  45. package/dist/elements/Paragraph.d.ts.map +1 -1
  46. package/dist/elements/Paragraph.js +515 -21
  47. package/dist/elements/Paragraph.js.map +1 -1
  48. package/dist/elements/Revision.d.ts +0 -1
  49. package/dist/elements/Revision.d.ts.map +1 -1
  50. package/dist/elements/Revision.js +0 -12
  51. package/dist/elements/Revision.js.map +1 -1
  52. package/dist/elements/RevisionManager.d.ts +0 -1
  53. package/dist/elements/RevisionManager.d.ts.map +1 -1
  54. package/dist/elements/RevisionManager.js +0 -2
  55. package/dist/elements/RevisionManager.js.map +1 -1
  56. package/dist/elements/Run.d.ts +16 -4
  57. package/dist/elements/Run.d.ts.map +1 -1
  58. package/dist/elements/Run.js +114 -22
  59. package/dist/elements/Run.js.map +1 -1
  60. package/dist/elements/Section.d.ts +7 -1
  61. package/dist/elements/Section.d.ts.map +1 -1
  62. package/dist/elements/Section.js +185 -4
  63. package/dist/elements/Section.js.map +1 -1
  64. package/dist/elements/Shape.js.map +1 -1
  65. package/dist/elements/Table.d.ts +30 -1
  66. package/dist/elements/Table.d.ts.map +1 -1
  67. package/dist/elements/Table.js +357 -40
  68. package/dist/elements/Table.js.map +1 -1
  69. package/dist/elements/TableCell.d.ts +3 -0
  70. package/dist/elements/TableCell.d.ts.map +1 -1
  71. package/dist/elements/TableCell.js +30 -3
  72. package/dist/elements/TableCell.js.map +1 -1
  73. package/dist/elements/TableGridChange.d.ts +0 -1
  74. package/dist/elements/TableGridChange.d.ts.map +1 -1
  75. package/dist/elements/TableGridChange.js +0 -10
  76. package/dist/elements/TableGridChange.js.map +1 -1
  77. package/dist/elements/TableRow.d.ts +4 -0
  78. package/dist/elements/TableRow.d.ts.map +1 -1
  79. package/dist/elements/TableRow.js +31 -3
  80. package/dist/elements/TableRow.js.map +1 -1
  81. package/dist/formatting/AbstractNumbering.d.ts +5 -0
  82. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  83. package/dist/formatting/AbstractNumbering.js +22 -0
  84. package/dist/formatting/AbstractNumbering.js.map +1 -1
  85. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  86. package/dist/formatting/NumberingLevel.js +3 -3
  87. package/dist/formatting/NumberingLevel.js.map +1 -1
  88. package/dist/formatting/Style.d.ts +1 -0
  89. package/dist/formatting/Style.d.ts.map +1 -1
  90. package/dist/formatting/Style.js +25 -59
  91. package/dist/formatting/Style.js.map +1 -1
  92. package/dist/formatting/StylesManager.d.ts +1 -0
  93. package/dist/formatting/StylesManager.d.ts.map +1 -1
  94. package/dist/formatting/StylesManager.js +12 -0
  95. package/dist/formatting/StylesManager.js.map +1 -1
  96. package/dist/helpers/CleanupHelper.js.map +1 -1
  97. package/dist/images/ImageOptimizer.d.ts.map +1 -1
  98. package/dist/images/ImageOptimizer.js +0 -1
  99. package/dist/images/ImageOptimizer.js.map +1 -1
  100. package/dist/index.d.ts +1 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/managers/DrawingManager.d.ts.map +1 -1
  104. package/dist/managers/DrawingManager.js +4 -2
  105. package/dist/managers/DrawingManager.js.map +1 -1
  106. package/dist/types/formatting.d.ts +2 -2
  107. package/dist/types/formatting.d.ts.map +1 -1
  108. package/dist/types/formatting.js.map +1 -1
  109. package/dist/utils/ChangelogGenerator.d.ts +2 -2
  110. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  111. package/dist/utils/ChangelogGenerator.js +4 -5
  112. package/dist/utils/ChangelogGenerator.js.map +1 -1
  113. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
  114. package/dist/utils/InMemoryRevisionAcceptor.js +0 -1
  115. package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
  116. package/dist/utils/RevisionAwareProcessor.d.ts +2 -2
  117. package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
  118. package/dist/utils/RevisionAwareProcessor.js +2 -2
  119. package/dist/utils/RevisionAwareProcessor.js.map +1 -1
  120. package/dist/utils/SelectiveRevisionAcceptor.d.ts +0 -2
  121. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
  122. package/dist/utils/SelectiveRevisionAcceptor.js +0 -26
  123. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  124. package/dist/utils/ShadingResolver.d.ts.map +1 -1
  125. package/dist/utils/ShadingResolver.js.map +1 -1
  126. package/dist/utils/acceptRevisions.js +1 -1
  127. package/dist/utils/acceptRevisions.js.map +1 -1
  128. package/dist/utils/stripTrackedChanges.js +1 -1
  129. package/dist/utils/stripTrackedChanges.js.map +1 -1
  130. package/dist/utils/units.d.ts.map +1 -1
  131. package/dist/utils/units.js +1 -1
  132. package/dist/utils/units.js.map +1 -1
  133. package/dist/validation/RevisionAutoFixer.d.ts +2 -1
  134. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  135. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  136. package/package.json +10 -1
  137. package/src/constants/CLAUDE.md +28 -0
  138. package/src/core/CLAUDE.md +4 -0
  139. package/src/core/Document.ts +1755 -85
  140. package/src/core/DocumentContent.ts +0 -11
  141. package/src/core/DocumentGenerator.ts +11 -12
  142. package/src/core/DocumentParser.ts +599 -138
  143. package/src/core/RelationshipManager.ts +6 -3
  144. package/src/elements/Bookmark.ts +39 -4
  145. package/src/elements/BookmarkManager.ts +4 -3
  146. package/src/elements/CLAUDE.md +18 -2
  147. package/src/elements/CommonTypes.ts +35 -8
  148. package/src/elements/Field.ts +1 -1
  149. package/src/elements/Footer.ts +23 -0
  150. package/src/elements/Header.ts +25 -0
  151. package/src/elements/Image.ts +5 -0
  152. package/src/elements/Paragraph.ts +1069 -41
  153. package/src/elements/Revision.ts +0 -19
  154. package/src/elements/RevisionManager.ts +1 -3
  155. package/src/elements/Run.ts +265 -35
  156. package/src/elements/Section.ts +214 -8
  157. package/src/elements/Shape.ts +1 -1
  158. package/src/elements/Table.ts +850 -61
  159. package/src/elements/TableCell.ts +84 -10
  160. package/src/elements/TableGridChange.ts +2 -16
  161. package/src/elements/TableRow.ts +94 -9
  162. package/src/formatting/AbstractNumbering.ts +42 -1
  163. package/src/formatting/CLAUDE.md +4 -0
  164. package/src/formatting/NumberingLevel.ts +11 -7
  165. package/src/formatting/Style.ts +39 -71
  166. package/src/formatting/StylesManager.ts +36 -0
  167. package/src/helpers/CleanupHelper.ts +1 -1
  168. package/src/images/ImageOptimizer.ts +0 -3
  169. package/src/index.ts +1 -1
  170. package/src/managers/DrawingManager.ts +5 -3
  171. package/src/tracking/CLAUDE.md +30 -0
  172. package/src/types/CLAUDE.md +39 -0
  173. package/src/types/formatting.ts +2 -2
  174. package/src/utils/CLAUDE.md +15 -0
  175. package/src/utils/ChangelogGenerator.ts +4 -5
  176. package/src/utils/InMemoryRevisionAcceptor.ts +0 -9
  177. package/src/utils/RevisionAwareProcessor.ts +2 -3
  178. package/src/utils/SelectiveRevisionAcceptor.ts +0 -39
  179. package/src/utils/ShadingResolver.ts +0 -1
  180. package/src/utils/acceptRevisions.ts +1 -1
  181. package/src/utils/stripTrackedChanges.ts +1 -1
  182. package/src/utils/units.ts +2 -1
  183. package/src/validation/CLAUDE.md +40 -0
  184. package/src/validation/RevisionAutoFixer.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingLevel.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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"}
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,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAK9F,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;IAGpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAGsD;gBAM5D,UAAU,EAAE,wBAAwB;IA8BhD,OAAO,CAAC,QAAQ;IAyChB,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,GAAG,QAAQ,CAAC,CAAC,GAC9F,IAAI,CAAC,wBAAwB,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAQvE,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;IASnC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQxC,iBAAiB,IAAI,MAAM,GAAG,SAAS;IAQvC,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IASrC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAcpD,KAAK,IAAI,UAAU;IAqGnB,MAAM,CAAC,uBAAuB,CAC5B,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,aAA0B,GACvF;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,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc;IAyBvF,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAmB,GAAG,cAAc;IAoBrF,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAmB,GAAG,cAAc;IAoBxF,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAmB,GAAG,cAAc;IAoBxF,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAmB,GAAG,cAAc;IAoBzF,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAmB,GAAG,cAAc;IAmBzF,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,wBAAwB,GAAG,cAAc;IASnE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;CAuG5C"}
@@ -188,14 +188,14 @@ class NumberingLevel {
188
188
  rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('i'));
189
189
  rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('iCs'));
190
190
  }
191
- if (this.properties.underline) {
192
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('u', { 'w:val': this.properties.underline }));
193
- }
194
191
  if (this.properties.color) {
195
192
  rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('color', { 'w:val': this.properties.color }));
196
193
  }
197
194
  rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('sz', { 'w:val': this.properties.fontSize.toString() }));
198
195
  rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('szCs', { 'w:val': this.properties.fontSize.toString() }));
196
+ if (this.properties.underline) {
197
+ rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('u', { 'w:val': this.properties.underline }));
198
+ }
199
199
  const rPr = XMLBuilder_1.XMLBuilder.w('rPr', undefined, rPrChildren);
200
200
  children.push(rPr);
201
201
  return XMLBuilder_1.XMLBuilder.w('lvl', { 'w:ilvl': this.properties.level.toString() }, children);
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingLevel.js","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":";;;AAQA,kDAA2D;AAW9C,QAAA,mBAAmB,GAAG;IAEjC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAEjD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE;IAEpD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;CAC5C,CAAC;AA8FX,MAAa,cAAc;IACjB,UAAU,CAGsD;IAMxE,YAAY,UAAoC;QAE9C,IAAI,CAAC,UAAU,GAAG;YAChB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,MAAM;YACzC,KAAK,EAAE,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,UAAU,EACR,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,GAAG,GAAG;YAC5F,aAAa,EAAE,UAAU,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;YACtF,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,SAAS;YAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,EAAE;YACnC,qBAAqB,EACnB,UAAU,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK;YAC3F,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,KAAK;YAClC,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,QAAQ;YACnC,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;YAC7D,MAAM,EAAE,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;YACnE,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAKO,QAAQ;QACd,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC;QAKD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IA0BD,MAAM,CAAC,wBAAwB,CAC7B,KAAa,EACb,cAAc,GAAG,KAAK,EACtB,eAAe,GAAG,IAAI,EACtB,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAAG,IAAI;QAEtB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,kCAAkC,CAAC,CAAC;QAC5E,CAAC;QAGD,MAAM,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAC;QAG3E,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC;QAGpE,MAAM,kBAAkB,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;QAC7C,MAAM,aAAa,GAAG,GAAG,CAAC;QAG1B,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAEnE,OAAO;YACL,UAAU,EAAE,cAAc;YAC1B,aAAa;SACd,CAAC;IACJ,CAAC;IAKD,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAKD,aAAa;QAEX,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAMD,aAAa,CAAC,KAAa;QAEzB,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,gBAAgB,CAAC,KAAa;QAC5B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY,CAAC,SAA0B;QACrC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,WAAW,CAAC,UAAkB;QAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,OAAO,CAAC,IAAa;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,SAAS,CAAC,MAAe;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC;IACzC,CAAC;IAMD,YAAY,CAAC,KAAyB;QACpC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACnC,CAAC;IAKD,cAAc;QACZ,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAkBD,aAAa,CAAC,KAAyB;QACrC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;IACpC,CAAC;IAOD,iBAAiB,CAAC,OAAe;QAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,iBAAiB;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAMD,SAAS,CAAC,MAAoB;QAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,MAAM,CAAC,eAAe,CAAC,MAAc;QACnC,MAAM,WAAW,GAAiC;YAChD,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,SAAS;SAChB,CAAC;QACF,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAiB,CAAC;IACzD,CAAC;IAKD,KAAK;QAEH,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAGlC,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAGxF,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAG/E,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7C,QAAQ,CAAC,IAAI,CACX,uBAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CACnF,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QAGD,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAG9E,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAGjF,MAAM,GAAG,GAAG,uBAAU,CAAC,KAAK,CAAC,KAAK,EAAE;YAClC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC/C,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,uBAAU,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAGnB,MAAM,WAAW,GAAiB,EAAE,CAAC;QAGrC,WAAW,CAAC,IAAI,CACd,uBAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;YACzB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;YAC/B,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;YAC/B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;YAC5B,QAAQ,EAAE,SAAS;SACpB,CAAC,CACH,CAAC;QAGF,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;QAGD,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3F,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAE7F,MAAM,GAAG,GAAG,uBAAU,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnB,OAAO,uBAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvF,CAAC;IAQD,MAAM,CAAC,uBAAuB,CAC5B,KAAa,EACb,QAA8E,UAAU;QAExF,MAAM,UAAU,GAAG;YAEjB,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;iBAC3C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;iBAC3C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;iBAC3C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;aACF;YACD,MAAM,EAAE;gBACN,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;aACjC;YACD,MAAM,EAAE;gBACN,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;aACjC;YACD,KAAK,EAAE;gBACL,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;aACjC;YACD,KAAK,EAAE;gBACL,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;aACjC;YACD,aAAa,EAAE;gBAEb;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;iBAC3C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;iBAC3C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;oBAC5C,IAAI,EAAE,2BAAmB,CAAC,WAAW,CAAC,IAAI;iBAC3C;gBACD;oBACE,MAAM,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;oBAC9C,IAAI,EAAE,2BAAmB,CAAC,aAAa,CAAC,IAAI;iBAC7C;aACF;SACF,CAAC;QAEF,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;QAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QAGvC,OAAO,MAAM,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAaD,MAAM,CAAC,4BAA4B,CAAC,KAAa;QAI/C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,kCAAkC,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO;YACL,UAAU,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG;YAC7B,aAAa,EAAE,GAAG;SACnB,CAAC;IACJ,CAAC;IAaD,MAAM,CAAC,uBAAuB,CAAC,KAAa;QAC1C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,kCAAkC,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,OAAO,GAAmB;YAC9B,SAAS;YACT,aAAa;YACb,YAAY;YACZ,aAAa;YACb,YAAY;SACb,CAAC;QAEF,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,MAAM,IAAI,SAAS,CAAC;IAC7B,CAAC;IAcD,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,MAAe,EAAE,IAAa;QAEpE,MAAM,QAAQ,GAAG,cAAc,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC3E,MAAM,YAAY,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;QAEzC,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK;YACL,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG;YAC7B,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;IACL,CAAC;IAOD,MAAM,CAAC,kBAAkB,CAAC,KAAa,EAAE,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG;QAClE,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG;YAC7B,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;IACL,CAAC;IAOD,MAAM,CAAC,qBAAqB,CAAC,KAAa,EAAE,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG;QACrE,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK;YACL,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG;YAC7B,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;IACL,CAAC;IAOD,MAAM,CAAC,qBAAqB,CAAC,KAAa,EAAE,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG;QACrE,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK;YACL,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG;YAC7B,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;IACL,CAAC;IAOD,MAAM,CAAC,sBAAsB,CAAC,KAAa,EAAE,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG;QACtE,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK;YACL,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG;YAC7B,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;IACL,CAAC;IAOD,MAAM,CAAC,sBAAsB,CAAC,KAAa,EAAE,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG;QACtE,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK;YACL,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG;YAC7B,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;IACL,CAAC;IAMD,MAAM,CAAC,MAAM,CAAC,UAAoC;QAChD,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAOD,MAAM,CAAC,OAAO,CAAC,GAAW;QAExB,MAAM,SAAS,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAGzC,MAAM,WAAW,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAG9D,MAAM,YAAY,GAAG,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAGpE,MAAM,UAAU,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAoB,CAAC;QAGhF,MAAM,UAAU,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGhE,MAAM,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,WAAW,CAAC,CAAC,CAAiC,CAAC,CAAC,CAAC,KAAK,CAAC;QAG1F,IAAI,UAA8B,CAAC;QACnC,MAAM,eAAe,GAAG,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QAGD,IAAI,MAA0B,CAAC;QAC/B,MAAM,WAAW,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAGD,IAAI,UAAU,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;QACnC,IAAI,aAAa,GAAG,GAAG,CAAC;QACxB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE5D,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;gBAAE,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5D,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC;gBAAE,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;QAGD,IAAI,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;gBAAE,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;YAAE,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAGtD,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC;QACrB,MAAM,SAAS,GAAuB,SAAS,CAAC;QAGhD,IAAI,KAAyB,CAAC;QAC9B,MAAM,UAAU,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK;YACL,MAAM;YACN,IAAI;YACJ,SAAS;YACT,KAAK;YACL,UAAU;YACV,aAAa;YACb,IAAI;YACJ,QAAQ;YACR,MAAM;YACN,IAAI;YACJ,MAAM;YACN,SAAS;YACT,KAAK;YACL,UAAU;YACV,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF;AA51BD,wCA41BC","sourcesContent":["/**\n * NumberingLevel - Defines formatting for a single level in a list\n *\n * A numbering level specifies how a particular list level (0-8) should be formatted,\n * including the numbering format (bullet, decimal, roman, etc.), text template,\n * alignment, and indentation.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\n\n/**\n * Word-native bullet character mappings\n *\n * Microsoft Word uses specific fonts with Private Use Area (PUA) characters\n * for bullet points. These mappings ensure 100% compatibility with Word's\n * native bullet rendering.\n *\n * Pattern: Levels 0,3,6 = filled bullet; 1,4,7 = open circle; 2,5,8 = filled square\n */\nexport const WORD_NATIVE_BULLETS = {\n /** Filled bullet (levels 0, 3, 6) - Symbol font U+F0B7 */\n FILLED_BULLET: { char: '\\uF0B7', font: 'Symbol' },\n /** Open circle (levels 1, 4, 7) - Courier New U+006F (lowercase 'o') */\n OPEN_CIRCLE: { char: '\\u006F', font: 'Courier New' },\n /** Filled square (levels 2, 5, 8) - Wingdings U+F0A7 */\n FILLED_SQUARE: { char: '\\uF0A7', font: 'Wingdings' },\n} as const;\n\n/**\n * Type for Word-native bullet definition\n */\nexport type WordNativeBullet = (typeof WORD_NATIVE_BULLETS)[keyof typeof WORD_NATIVE_BULLETS];\n\n/**\n * Numbering format types supported by Word\n */\nexport type NumberFormat =\n | 'bullet' // Bullet character\n | 'decimal' // 1, 2, 3, ...\n | 'lowerRoman' // i, ii, iii, ...\n | 'upperRoman' // I, II, III, ...\n | 'lowerLetter' // a, b, c, ...\n | 'upperLetter' // A, B, C, ...\n | 'ordinal' // 1st, 2nd, 3rd, ...\n | 'cardinalText' // One, Two, Three, ...\n | 'ordinalText' // First, Second, Third, ...\n | 'hex' // 0x01, 0x02, ...\n | 'chicago' // *, †, ‡, §, ...\n | 'decimal zero'; // 01, 02, 03, ...\n\n/**\n * Alignment for the numbering text\n */\nexport type NumberAlignment = 'left' | 'center' | 'right' | 'start' | 'end';\n\n/**\n * Properties for creating a numbering level\n */\nexport interface NumberingLevelProperties {\n /** The level index (0-8, where 0 is the outermost level) */\n level: number;\n\n /** The numbering format */\n format: NumberFormat;\n\n /** The text template (e.g., \"%1.\" for decimal, \"•\" for bullet) */\n text: string;\n\n /** Alignment of the numbering text */\n alignment?: NumberAlignment;\n\n /** Starting value (for numeric formats, default: 1) */\n start?: number;\n\n /** Left indentation in twips (can be negative for outdents into margin) */\n leftIndent?: number;\n\n /** Hanging indentation in twips (for the text after the number) */\n hangingIndent?: number;\n\n /** Font family for the numbering character (useful for bullets) */\n font?: string;\n\n /** Font size in half-points (e.g., 22 = 11pt) */\n fontSize?: number;\n\n /** Whether to show text after the number (default: true) */\n isLegalNumberingStyle?: boolean;\n\n /** Suffix after the number (tab, space, or nothing) */\n suffix?: 'tab' | 'space' | 'nothing';\n\n /** Text color in hex (without #) */\n color?: string;\n\n /** Whether the numbering text is bold */\n bold?: boolean;\n\n /** Whether the numbering text is italic */\n italic?: boolean;\n\n /** Underline style for numbering text ('single', 'double', 'wave', 'dotted', 'dash', etc.) */\n underline?: string;\n\n /**\n * Level at which numbering should restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n * Specifies when to restart this level's numbering based on a higher-level change:\n * - 0: Never restart (continues throughout document)\n * - 1-8: Restart when the specified level changes\n * - undefined (default): Restart when level-1 changes (standard behavior)\n */\n lvlRestart?: number;\n\n /** Paragraph style ID linked to this numbering level (w:pStyle per ECMA-376 §17.9.23) */\n pStyle?: string;\n}\n\n/**\n * Represents a single level in a numbering definition\n */\nexport class NumberingLevel {\n private properties: Required<\n Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>\n > &\n Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>;\n\n /**\n * Creates a new numbering level\n * @param properties The level properties\n */\n constructor(properties: NumberingLevelProperties) {\n // Set defaults\n this.properties = {\n level: properties.level,\n format: properties.format,\n text: properties.text,\n alignment: properties.alignment || 'left',\n start: properties.start !== undefined ? properties.start : 1,\n leftIndent:\n properties.leftIndent !== undefined ? properties.leftIndent : 720 + properties.level * 360,\n hangingIndent: properties.hangingIndent !== undefined ? properties.hangingIndent : 360,\n font: properties.font || 'Calibri',\n fontSize: properties.fontSize || 22, // 11pt default\n isLegalNumberingStyle:\n properties.isLegalNumberingStyle !== undefined ? properties.isLegalNumberingStyle : false,\n suffix: properties.suffix || 'tab',\n color: properties.color || '000000',\n bold: properties.bold !== undefined ? properties.bold : false,\n italic: properties.italic !== undefined ? properties.italic : false,\n underline: properties.underline,\n lvlRestart: properties.lvlRestart, // undefined means default behavior (restart on level-1 change)\n pStyle: properties.pStyle,\n };\n\n this.validate();\n }\n\n /**\n * Validates the level properties\n */\n private validate(): void {\n if (this.properties.level < 0 || this.properties.level > 8) {\n throw new Error(`Level must be between 0 and 8, got ${this.properties.level}`);\n }\n\n // Note: leftIndent CAN be negative (outdent into margin) per ECMA-376\n // This is valid and used for hanging indents where bullets appear in margin\n\n if (this.properties.hangingIndent < 0) {\n throw new Error('Hanging indent must be non-negative');\n }\n\n if (this.properties.start < 0) {\n throw new Error('Start value must be non-negative');\n }\n }\n\n /**\n * Calculates safe indentation values for a given level based on page constraints.\n *\n * Use this instead of default indentation when working with narrow pages or\n * deep nesting levels to ensure content stays within page margins.\n *\n * @param level The level index (0-8)\n * @param pageWidthTwips Page width in twips (default: 12240 = 8.5 inches)\n * @param leftMarginTwips Left margin in twips (default: 1440 = 1 inch)\n * @param rightMarginTwips Right margin in twips (default: 1440 = 1 inch)\n * @param minContentWidth Minimum content width in twips (default: 2880 = 2 inches)\n * @returns Safe indentation values that won't exceed available space\n *\n * @example\n * ```typescript\n * // For a narrow page (6\" wide with 0.5\" margins)\n * const indent = NumberingLevel.calculateSafeIndentation(\n * 5, // level 5\n * 8640, // 6 inches page width\n * 720, // 0.5 inch left margin\n * 720 // 0.5 inch right margin\n * );\n * ```\n */\n static calculateSafeIndentation(\n level: number,\n pageWidthTwips = 12240,\n leftMarginTwips = 1440,\n rightMarginTwips = 1440,\n minContentWidth = 2880\n ): { leftIndent: number; hangingIndent: number } {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n // Calculate available content width\n const availableWidth = pageWidthTwips - leftMarginTwips - rightMarginTwips;\n\n // Calculate max safe indent (leave space for content)\n const maxSafeIndent = Math.max(0, availableWidth - minContentWidth);\n\n // Standard indentation\n const standardLeftIndent = 720 + level * 360;\n const hangingIndent = 360;\n\n // Cap at safe maximum\n const safeLeftIndent = Math.min(standardLeftIndent, maxSafeIndent);\n\n return {\n leftIndent: safeLeftIndent,\n hangingIndent,\n };\n }\n\n /**\n * Gets the level index\n */\n getLevel(): number {\n return this.properties.level;\n }\n\n /**\n * Gets the numbering format\n */\n getFormat(): NumberFormat {\n return this.properties.format;\n }\n\n /**\n * Gets the level properties\n */\n getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>> &\n Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'> {\n return { ...this.properties };\n }\n\n /**\n * Sets the left indentation\n * @param twips Indentation in twips\n */\n setLeftIndent(twips: number): this {\n // Note: Negative values are valid (outdent into margin) per ECMA-376\n this.properties.leftIndent = twips;\n return this;\n }\n\n /**\n * Sets the hanging indentation\n * @param twips Indentation in twips\n */\n setHangingIndent(twips: number): this {\n if (twips < 0) {\n throw new Error('Hanging indent must be non-negative');\n }\n this.properties.hangingIndent = twips;\n return this;\n }\n\n /**\n * Sets the font for the numbering character\n * @param font Font family name\n */\n setFont(font: string): this {\n this.properties.font = font;\n return this;\n }\n\n /**\n * Sets the alignment\n * @param alignment Alignment type\n */\n setAlignment(alignment: NumberAlignment): this {\n this.properties.alignment = alignment;\n return this;\n }\n\n /**\n * Sets the font size in half-points\n * @param halfPoints Font size in half-points (e.g., 24 = 12pt)\n */\n setFontSize(halfPoints: number): this {\n this.properties.fontSize = halfPoints;\n return this;\n }\n\n /**\n * Sets the level text (bullet character or number template)\n * @param text The text template (e.g., '•' for bullets, '%1.' for numbered)\n */\n setText(text: string): this {\n this.properties.text = text;\n return this;\n }\n\n /**\n * Sets the text color\n * @param color Hex color without # (e.g., '000000' for black)\n */\n setColor(color: string): this {\n this.properties.color = color;\n return this;\n }\n\n /**\n * Sets whether the numbering text is bold\n * @param bold Whether to make bold\n */\n setBold(bold: boolean): this {\n this.properties.bold = bold;\n return this;\n }\n\n /**\n * Sets whether the numbering text is italic\n * @param italic Whether to make italic\n */\n setItalic(italic: boolean): this {\n this.properties.italic = italic;\n return this;\n }\n\n /**\n * Gets whether the numbering text is italic\n */\n getItalic(): boolean {\n return this.properties.italic ?? false;\n }\n\n /**\n * Sets the underline style for numbering text\n * @param style Underline style ('single', 'double', 'wave', 'dotted', 'dash', etc.)\n */\n setUnderline(style: string | undefined): this {\n this.properties.underline = style;\n return this;\n }\n\n /**\n * Gets the underline style\n */\n getUnderline(): string | undefined {\n return this.properties.underline;\n }\n\n /**\n * Clears the underline style\n */\n clearUnderline(): this {\n this.properties.underline = undefined;\n return this;\n }\n\n /**\n * Sets the level restart behavior (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n *\n * Controls when this level's numbering restarts based on higher-level changes:\n * - 0: Never restart (continues throughout document)\n * - 1-8: Restart when the specified level changes\n * - undefined: Restart when level-1 changes (standard/default behavior)\n *\n * @param level The level that triggers restart (0-8), or undefined for default\n * @example\n * // Level 1 that never restarts (continuous across document)\n * level1.setLvlRestart(0);\n *\n * // Level 2 that restarts when level 0 changes (not level 1)\n * level2.setLvlRestart(0);\n */\n setLvlRestart(level: number | undefined): this {\n if (level !== undefined && (level < 0 || level > 8)) {\n throw new Error(`lvlRestart must be between 0 and 8, got ${level}`);\n }\n this.properties.lvlRestart = level;\n return this;\n }\n\n /**\n * Gets the level restart value\n * @returns The level that triggers restart, or undefined for default behavior\n */\n getLvlRestart(): number | undefined {\n return this.properties.lvlRestart;\n }\n\n /**\n * Sets the paragraph style ID linked to this numbering level\n * Links this level to a paragraph style definition (w:pStyle per ECMA-376 §17.9.23)\n * @param styleId The paragraph style ID\n */\n setParagraphStyle(styleId: string): this {\n this.properties.pStyle = styleId;\n return this;\n }\n\n /**\n * Gets the paragraph style ID linked to this numbering level\n */\n getParagraphStyle(): string | undefined {\n return this.properties.pStyle;\n }\n\n /**\n * Sets the numbering format (decimal, lowerLetter, bullet, etc.)\n * @param format The numbering format\n */\n setFormat(format: NumberFormat): this {\n this.properties.format = NumberingLevel.normalizeFormat(format);\n return this;\n }\n\n /**\n * Normalizes display-string format values to ECMA-376 ST_NumberFormat names.\n * Accepts both standard format names and common display shortcuts.\n */\n static normalizeFormat(format: string): NumberFormat {\n const corrections: Record<string, NumberFormat> = {\n 'a.': 'lowerLetter',\n 'A.': 'upperLetter',\n 'i.': 'lowerRoman',\n 'I.': 'upperRoman',\n '1.': 'decimal',\n };\n return (corrections[format] ?? format) as NumberFormat;\n }\n\n /**\n * Generates the WordprocessingML XML for this level\n */\n toXML(): XMLElement {\n // ECMA-376 CT_Lvl element order: start, numFmt, lvlRestart, pStyle, isLgl, suff, lvlText, lvlJc, pPr, rPr\n const children: XMLElement[] = [];\n\n // 1. Start value\n children.push(XMLBuilder.wSelf('start', { 'w:val': this.properties.start.toString() }));\n\n // 2. Number format\n children.push(XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.format }));\n\n // 3. Level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n if (this.properties.lvlRestart !== undefined) {\n children.push(\n XMLBuilder.wSelf('lvlRestart', { 'w:val': this.properties.lvlRestart.toString() })\n );\n }\n\n // 4. pStyle (paragraph style link)\n if (this.properties.pStyle) {\n children.push(XMLBuilder.wSelf('pStyle', { 'w:val': this.properties.pStyle }));\n }\n\n // 5. Legal numbering style\n if (this.properties.isLegalNumberingStyle) {\n children.push(XMLBuilder.wSelf('isLgl'));\n }\n\n // 6. Suffix (what comes after the number)\n if (this.properties.suffix) {\n children.push(XMLBuilder.wSelf('suff', { 'w:val': this.properties.suffix }));\n }\n\n // 7. Level text (e.g., \"%1.\" or \"•\")\n children.push(XMLBuilder.wSelf('lvlText', { 'w:val': this.properties.text }));\n\n // 8. Alignment\n children.push(XMLBuilder.wSelf('lvlJc', { 'w:val': this.properties.alignment }));\n\n // 9. Paragraph properties (indentation)\n const ind = XMLBuilder.wSelf('ind', {\n 'w:left': this.properties.leftIndent.toString(),\n 'w:hanging': this.properties.hangingIndent.toString(),\n });\n const pPr = XMLBuilder.w('pPr', undefined, [ind]);\n children.push(pPr);\n\n // 10. Run properties (font)\n const rPrChildren: XMLElement[] = [];\n\n // Font\n rPrChildren.push(\n XMLBuilder.wSelf('rFonts', {\n 'w:ascii': this.properties.font,\n 'w:hAnsi': this.properties.font,\n 'w:cs': this.properties.font,\n 'w:hint': 'default',\n })\n );\n\n // Bold\n if (this.properties.bold) {\n rPrChildren.push(XMLBuilder.wSelf('b'));\n rPrChildren.push(XMLBuilder.wSelf('bCs'));\n }\n\n // Italic\n if (this.properties.italic) {\n rPrChildren.push(XMLBuilder.wSelf('i'));\n rPrChildren.push(XMLBuilder.wSelf('iCs'));\n }\n\n // Underline\n if (this.properties.underline) {\n rPrChildren.push(XMLBuilder.wSelf('u', { 'w:val': this.properties.underline }));\n }\n\n // Color\n if (this.properties.color) {\n rPrChildren.push(XMLBuilder.wSelf('color', { 'w:val': this.properties.color }));\n }\n\n // Font size\n rPrChildren.push(XMLBuilder.wSelf('sz', { 'w:val': this.properties.fontSize.toString() }));\n rPrChildren.push(XMLBuilder.wSelf('szCs', { 'w:val': this.properties.fontSize.toString() }));\n\n const rPr = XMLBuilder.w('rPr', undefined, rPrChildren);\n children.push(rPr);\n\n return XMLBuilder.w('lvl', { 'w:ilvl': this.properties.level.toString() }, children);\n }\n\n /**\n * Gets the recommended bullet symbol and font for a given level\n * @param level The level index (0-8)\n * @param style Optional bullet style ('standard', 'circle', 'square', 'arrow', 'check', 'word-native')\n * @returns Object with symbol and font properties\n */\n static getBulletSymbolWithFont(\n level: number,\n style: 'standard' | 'circle' | 'square' | 'arrow' | 'check' | 'word-native' = 'standard'\n ): { symbol: string; font: string } {\n const bulletSets = {\n // Standard style now uses Word-native encoding for maximum compatibility\n standard: [\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 0: Filled bullet (Symbol U+F0B7)\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 1: Open circle (Courier New U+006F)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 2: Filled square (Wingdings U+F0A7)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 3: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 4: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 5: Filled square\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 6: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 7: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 8: Filled square\n ],\n circle: [\n { symbol: '●', font: 'Calibri' }, // Level 0: Filled circle (bold)\n { symbol: '○', font: 'Calibri' }, // Level 1: Empty circle\n { symbol: '◉', font: 'Calibri' }, // Level 2: Fisheye\n { symbol: '◯', font: 'Calibri' }, // Level 3: Large circle\n { symbol: '⦿', font: 'Calibri' }, // Level 4: Circled bullet\n { symbol: '○', font: 'Calibri' }, // Level 5: Empty circle\n { symbol: '●', font: 'Calibri' }, // Level 6: Filled circle\n { symbol: '○', font: 'Calibri' }, // Level 7: Empty circle\n { symbol: '◉', font: 'Calibri' }, // Level 8: Fisheye\n ],\n square: [\n { symbol: '■', font: 'Calibri' }, // Level 0: Filled square\n { symbol: '□', font: 'Calibri' }, // Level 1: Empty square\n { symbol: '▪', font: 'Calibri' }, // Level 2: Small filled square\n { symbol: '▫', font: 'Calibri' }, // Level 3: Small empty square\n { symbol: '◼', font: 'Calibri' }, // Level 4: Medium filled square\n { symbol: '◻', font: 'Calibri' }, // Level 5: Medium empty square\n { symbol: '■', font: 'Calibri' }, // Level 6: Filled square\n { symbol: '□', font: 'Calibri' }, // Level 7: Empty square\n { symbol: '▪', font: 'Calibri' }, // Level 8: Small filled square\n ],\n arrow: [\n { symbol: '➢', font: 'Calibri' }, // Level 0: Right arrow\n { symbol: '➣', font: 'Calibri' }, // Level 1: Right arrow filled\n { symbol: '➤', font: 'Calibri' }, // Level 2: Right arrow bold\n { symbol: '➔', font: 'Calibri' }, // Level 3: Right arrow simple\n { symbol: '➜', font: 'Calibri' }, // Level 4: Right arrow outline\n { symbol: '➢', font: 'Calibri' }, // Level 5: Right arrow\n { symbol: '➣', font: 'Calibri' }, // Level 6: Right arrow filled\n { symbol: '➤', font: 'Calibri' }, // Level 7: Right arrow bold\n { symbol: '➔', font: 'Calibri' }, // Level 8: Right arrow simple\n ],\n check: [\n { symbol: '✓', font: 'Calibri' }, // Level 0: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 1: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 2: Checked box\n { symbol: '✓', font: 'Calibri' }, // Level 3: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 4: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 5: Checked box\n { symbol: '✓', font: 'Calibri' }, // Level 6: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 7: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 8: Checked box\n ],\n 'word-native': [\n // Word-native bullets using PUA characters with Symbol/Wingdings fonts\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 0: Filled bullet (Symbol U+F0B7)\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 1: Open circle (Courier New U+006F)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 2: Filled square (Wingdings U+F0A7)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 3: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 4: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 5: Filled square\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 6: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 7: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 8: Filled square\n ],\n };\n\n const selectedSet = bulletSets[style];\n const levelIndex = level % selectedSet.length;\n const result = selectedSet[levelIndex];\n\n // Fallback to standard bullet if somehow undefined\n return result || { symbol: '•', font: 'Calibri' };\n }\n\n /**\n * Calculates the standard indentation values for a given level\n * @param level The level index (0-8)\n * @returns Object with leftIndent and hangingIndent in twips\n * @example\n * const indent = NumberingLevel.calculateStandardIndentation(0);\n * // Returns: { leftIndent: 720, hangingIndent: 360 } (0.5\" left, 0.25\" hanging)\n *\n * const indent2 = NumberingLevel.calculateStandardIndentation(2);\n * // Returns: { leftIndent: 1440, hangingIndent: 360 } (1.0\" left, 0.25\" hanging)\n */\n static calculateStandardIndentation(level: number): {\n leftIndent: number;\n hangingIndent: number;\n } {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n return {\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n };\n }\n\n /**\n * Gets the standard number format for a given level\n * @param level The level index (0-8)\n * @returns The recommended number format for this level\n * @example\n * NumberingLevel.getStandardNumberFormat(0); // 'decimal' (1., 2., 3.)\n * NumberingLevel.getStandardNumberFormat(1); // 'lowerLetter' (a., b., c.)\n * NumberingLevel.getStandardNumberFormat(2); // 'lowerRoman' (i., ii., iii.)\n * NumberingLevel.getStandardNumberFormat(3); // 'upperLetter' (A., B., C.)\n * NumberingLevel.getStandardNumberFormat(4); // 'upperRoman' (I., II., III.)\n */\n static getStandardNumberFormat(level: number): NumberFormat {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n const formats: NumberFormat[] = [\n 'decimal', // Level 0: 1., 2., 3.\n 'lowerLetter', // Level 1: a., b., c.\n 'lowerRoman', // Level 2: i., ii., iii.\n 'upperLetter', // Level 3: A., B., C.\n 'upperRoman', // Level 4: I., II., III.\n ];\n\n const result = formats[level % formats.length];\n return result || 'decimal'; // Fallback to decimal (should never happen)\n }\n\n /**\n * Creates a bullet list level\n *\n * When called without parameters, uses Word-native encoding for the level:\n * - Levels 0, 3, 6: Filled bullet (Symbol font, U+F0B7)\n * - Levels 1, 4, 7: Open circle (Courier New, U+006F)\n * - Levels 2, 5, 8: Filled square (Wingdings, U+F0A7)\n *\n * @param level The level index (0-8)\n * @param bullet Optional bullet character (defaults to Word-native for level)\n * @param font Optional font to use for the bullet (defaults to Word-native for level)\n */\n static createBulletLevel(level: number, bullet?: string, font?: string): NumberingLevel {\n // Use Word-native defaults when not specified\n const defaults = NumberingLevel.getBulletSymbolWithFont(level, 'standard');\n const actualBullet = bullet ?? defaults.symbol;\n const actualFont = font ?? defaults.font;\n\n return new NumberingLevel({\n level,\n format: 'bullet',\n text: actualBullet,\n alignment: 'left',\n font: actualFont,\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a decimal list level (1, 2, 3, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createDecimalLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'decimal',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a lower roman list level (i, ii, iii, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createLowerRomanLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'lowerRoman',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates an upper roman list level (I, II, III, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createUpperRomanLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'upperRoman',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a lower letter list level (a, b, c, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createLowerLetterLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'lowerLetter',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates an upper letter list level (A, B, C, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createUpperLetterLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'upperLetter',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Factory method for creating a numbering level\n * @param properties The level properties\n */\n static create(properties: NumberingLevelProperties): NumberingLevel {\n return new NumberingLevel(properties);\n }\n\n /**\n * Creates a NumberingLevel from XML element\n * @param xml The XML string of the <w:lvl> element\n * @returns NumberingLevel instance\n */\n static fromXML(xml: string): NumberingLevel {\n // Extract level index (required)\n const ilvlMatch = /<w:lvl[^>]*w:ilvl=\"([^\"]+)\"/.exec(xml);\n if (!ilvlMatch?.[1]) {\n throw new Error('Missing required w:ilvl attribute');\n }\n const level = parseInt(ilvlMatch[1], 10);\n\n // Extract number format (required)\n const numFmtMatch = /<w:numFmt[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (!numFmtMatch?.[1]) {\n throw new Error('Missing required w:numFmt element');\n }\n const format = NumberingLevel.normalizeFormat(numFmtMatch[1]);\n\n // Extract level text (optional - can be empty for placeholder levels)\n const lvlTextMatch = /<w:lvlText[^>]*w:val=\"([^\"]*)\"/.exec(xml);\n const text = lvlTextMatch?.[1] !== undefined ? lvlTextMatch[1] : '';\n\n // Extract alignment (optional, default: left)\n const lvlJcMatch = /<w:lvlJc[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const alignment = (lvlJcMatch?.[1] ? lvlJcMatch[1] : 'left') as NumberAlignment;\n\n // Extract start value (optional, default: 1)\n const startMatch = /<w:start[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const start = startMatch?.[1] ? parseInt(startMatch[1], 10) : 1;\n\n // Extract suffix (optional, default: tab)\n const suffixMatch = /<w:suff[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const suffix = suffixMatch?.[1] ? (suffixMatch[1] as 'tab' | 'space' | 'nothing') : 'tab';\n\n // Extract level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n let lvlRestart: number | undefined;\n const lvlRestartMatch = /<w:lvlRestart[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (lvlRestartMatch?.[1]) {\n lvlRestart = parseInt(lvlRestartMatch[1], 10);\n }\n\n // Extract pStyle (paragraph style link)\n let pStyle: string | undefined;\n const pStyleMatch = /<w:pStyle[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (pStyleMatch?.[1]) {\n pStyle = pStyleMatch[1];\n }\n\n // Extract indentation from <w:pPr><w:ind>\n let leftIndent = 720 + level * 360; // default\n let hangingIndent = 360; // default\n const indMatch = /<w:ind[^>]*\\/>/.exec(xml);\n if (indMatch) {\n const indElement = indMatch[0];\n const leftMatch = /w:left=\"([^\"]+)\"/.exec(indElement);\n const hangingMatch = /w:hanging=\"([^\"]+)\"/.exec(indElement);\n\n if (leftMatch?.[1]) leftIndent = parseInt(leftMatch[1], 10);\n if (hangingMatch?.[1]) hangingIndent = parseInt(hangingMatch[1], 10);\n }\n\n // Extract font and size from <w:rPr>\n let font = 'Calibri';\n let fontSize = 22;\n\n const rFontsMatch = /<w:rFonts[^>]*\\/>/.exec(xml);\n if (rFontsMatch) {\n const rFontsElement = rFontsMatch[0];\n const asciiMatch = /w:ascii=\"([^\"]+)\"/.exec(rFontsElement);\n if (asciiMatch?.[1]) font = asciiMatch[1];\n }\n\n const szMatch = /<w:sz[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (szMatch?.[1]) fontSize = parseInt(szMatch[1], 10);\n\n // List prefixes should never have bold, italic, or underline - ignore source XML formatting\n const bold = false;\n const italic = false;\n const underline: string | undefined = undefined;\n\n // Extract color from <w:rPr>\n let color: string | undefined;\n const colorMatch = /<w:color[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (colorMatch?.[1]) {\n color = colorMatch[1];\n }\n\n return new NumberingLevel({\n level,\n format,\n text,\n alignment,\n start,\n leftIndent,\n hangingIndent,\n font,\n fontSize,\n suffix,\n bold,\n italic,\n underline,\n color,\n lvlRestart,\n pStyle,\n });\n }\n}\n"]}
1
+ {"version":3,"file":"NumberingLevel.js","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NumberingLevel - Defines formatting for a single level in a list\n *\n * A numbering level specifies how a particular list level (0-8) should be formatted,\n * including the numbering format (bullet, decimal, roman, etc.), text template,\n * alignment, and indentation.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\n\n/**\n * Word-native bullet character mappings\n *\n * Microsoft Word uses specific fonts with Private Use Area (PUA) characters\n * for bullet points. These mappings ensure 100% compatibility with Word's\n * native bullet rendering.\n *\n * Pattern: Levels 0,3,6 = filled bullet; 1,4,7 = open circle; 2,5,8 = filled square\n */\nexport const WORD_NATIVE_BULLETS = {\n /** Filled bullet (levels 0, 3, 6) - Symbol font U+F0B7 */\n FILLED_BULLET: { char: '\\uF0B7', font: 'Symbol' },\n /** Open circle (levels 1, 4, 7) - Courier New U+006F (lowercase 'o') */\n OPEN_CIRCLE: { char: '\\u006F', font: 'Courier New' },\n /** Filled square (levels 2, 5, 8) - Wingdings U+F0A7 */\n FILLED_SQUARE: { char: '\\uF0A7', font: 'Wingdings' },\n} as const;\n\n/**\n * Type for Word-native bullet definition\n */\nexport type WordNativeBullet = (typeof WORD_NATIVE_BULLETS)[keyof typeof WORD_NATIVE_BULLETS];\n\n/**\n * Numbering format types supported by Word\n */\nexport type NumberFormat =\n | 'bullet' // Bullet character\n | 'decimal' // 1, 2, 3, ...\n | 'lowerRoman' // i, ii, iii, ...\n | 'upperRoman' // I, II, III, ...\n | 'lowerLetter' // a, b, c, ...\n | 'upperLetter' // A, B, C, ...\n | 'ordinal' // 1st, 2nd, 3rd, ...\n | 'cardinalText' // One, Two, Three, ...\n | 'ordinalText' // First, Second, Third, ...\n | 'hex' // 0x01, 0x02, ...\n | 'chicago' // *, †, ‡, §, ...\n | 'decimal zero'; // 01, 02, 03, ...\n\n/**\n * Alignment for the numbering text\n */\nexport type NumberAlignment = 'left' | 'center' | 'right' | 'start' | 'end';\n\n/**\n * Properties for creating a numbering level\n */\nexport interface NumberingLevelProperties {\n /** The level index (0-8, where 0 is the outermost level) */\n level: number;\n\n /** The numbering format */\n format: NumberFormat;\n\n /** The text template (e.g., \"%1.\" for decimal, \"•\" for bullet) */\n text: string;\n\n /** Alignment of the numbering text */\n alignment?: NumberAlignment;\n\n /** Starting value (for numeric formats, default: 1) */\n start?: number;\n\n /** Left indentation in twips (can be negative for outdents into margin) */\n leftIndent?: number;\n\n /** Hanging indentation in twips (for the text after the number) */\n hangingIndent?: number;\n\n /** Font family for the numbering character (useful for bullets) */\n font?: string;\n\n /** Font size in half-points (e.g., 22 = 11pt) */\n fontSize?: number;\n\n /** Whether to show text after the number (default: true) */\n isLegalNumberingStyle?: boolean;\n\n /** Suffix after the number (tab, space, or nothing) */\n suffix?: 'tab' | 'space' | 'nothing';\n\n /** Text color in hex (without #) */\n color?: string;\n\n /** Whether the numbering text is bold */\n bold?: boolean;\n\n /** Whether the numbering text is italic */\n italic?: boolean;\n\n /** Underline style for numbering text ('single', 'double', 'wave', 'dotted', 'dash', etc.) */\n underline?: string;\n\n /**\n * Level at which numbering should restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n * Specifies when to restart this level's numbering based on a higher-level change:\n * - 0: Never restart (continues throughout document)\n * - 1-8: Restart when the specified level changes\n * - undefined (default): Restart when level-1 changes (standard behavior)\n */\n lvlRestart?: number;\n\n /** Paragraph style ID linked to this numbering level (w:pStyle per ECMA-376 §17.9.23) */\n pStyle?: string;\n}\n\n/**\n * Represents a single level in a numbering definition\n */\nexport class NumberingLevel {\n private properties: Required<\n Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>\n > &\n Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>;\n\n /**\n * Creates a new numbering level\n * @param properties The level properties\n */\n constructor(properties: NumberingLevelProperties) {\n // Set defaults\n this.properties = {\n level: properties.level,\n format: properties.format,\n text: properties.text,\n alignment: properties.alignment || 'left',\n start: properties.start !== undefined ? properties.start : 1,\n leftIndent:\n properties.leftIndent !== undefined ? properties.leftIndent : 720 + properties.level * 360,\n hangingIndent: properties.hangingIndent !== undefined ? properties.hangingIndent : 360,\n font: properties.font || 'Calibri',\n fontSize: properties.fontSize || 22, // 11pt default\n isLegalNumberingStyle:\n properties.isLegalNumberingStyle !== undefined ? properties.isLegalNumberingStyle : false,\n suffix: properties.suffix || 'tab',\n color: properties.color || '000000',\n bold: properties.bold !== undefined ? properties.bold : false,\n italic: properties.italic !== undefined ? properties.italic : false,\n underline: properties.underline,\n lvlRestart: properties.lvlRestart, // undefined means default behavior (restart on level-1 change)\n pStyle: properties.pStyle,\n };\n\n this.validate();\n }\n\n /**\n * Validates the level properties\n */\n private validate(): void {\n if (this.properties.level < 0 || this.properties.level > 8) {\n throw new Error(`Level must be between 0 and 8, got ${this.properties.level}`);\n }\n\n // Note: leftIndent CAN be negative (outdent into margin) per ECMA-376\n // This is valid and used for hanging indents where bullets appear in margin\n\n if (this.properties.hangingIndent < 0) {\n throw new Error('Hanging indent must be non-negative');\n }\n\n if (this.properties.start < 0) {\n throw new Error('Start value must be non-negative');\n }\n }\n\n /**\n * Calculates safe indentation values for a given level based on page constraints.\n *\n * Use this instead of default indentation when working with narrow pages or\n * deep nesting levels to ensure content stays within page margins.\n *\n * @param level The level index (0-8)\n * @param pageWidthTwips Page width in twips (default: 12240 = 8.5 inches)\n * @param leftMarginTwips Left margin in twips (default: 1440 = 1 inch)\n * @param rightMarginTwips Right margin in twips (default: 1440 = 1 inch)\n * @param minContentWidth Minimum content width in twips (default: 2880 = 2 inches)\n * @returns Safe indentation values that won't exceed available space\n *\n * @example\n * ```typescript\n * // For a narrow page (6\" wide with 0.5\" margins)\n * const indent = NumberingLevel.calculateSafeIndentation(\n * 5, // level 5\n * 8640, // 6 inches page width\n * 720, // 0.5 inch left margin\n * 720 // 0.5 inch right margin\n * );\n * ```\n */\n static calculateSafeIndentation(\n level: number,\n pageWidthTwips = 12240,\n leftMarginTwips = 1440,\n rightMarginTwips = 1440,\n minContentWidth = 2880\n ): { leftIndent: number; hangingIndent: number } {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n // Calculate available content width\n const availableWidth = pageWidthTwips - leftMarginTwips - rightMarginTwips;\n\n // Calculate max safe indent (leave space for content)\n const maxSafeIndent = Math.max(0, availableWidth - minContentWidth);\n\n // Standard indentation\n const standardLeftIndent = 720 + level * 360;\n const hangingIndent = 360;\n\n // Cap at safe maximum\n const safeLeftIndent = Math.min(standardLeftIndent, maxSafeIndent);\n\n return {\n leftIndent: safeLeftIndent,\n hangingIndent,\n };\n }\n\n /**\n * Gets the level index\n */\n getLevel(): number {\n return this.properties.level;\n }\n\n /**\n * Gets the numbering format\n */\n getFormat(): NumberFormat {\n return this.properties.format;\n }\n\n /**\n * Gets the level properties\n */\n getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>> &\n Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'> {\n return { ...this.properties };\n }\n\n /**\n * Sets the left indentation\n * @param twips Indentation in twips\n */\n setLeftIndent(twips: number): this {\n // Note: Negative values are valid (outdent into margin) per ECMA-376\n this.properties.leftIndent = twips;\n return this;\n }\n\n /**\n * Sets the hanging indentation\n * @param twips Indentation in twips\n */\n setHangingIndent(twips: number): this {\n if (twips < 0) {\n throw new Error('Hanging indent must be non-negative');\n }\n this.properties.hangingIndent = twips;\n return this;\n }\n\n /**\n * Sets the font for the numbering character\n * @param font Font family name\n */\n setFont(font: string): this {\n this.properties.font = font;\n return this;\n }\n\n /**\n * Sets the alignment\n * @param alignment Alignment type\n */\n setAlignment(alignment: NumberAlignment): this {\n this.properties.alignment = alignment;\n return this;\n }\n\n /**\n * Sets the font size in half-points\n * @param halfPoints Font size in half-points (e.g., 24 = 12pt)\n */\n setFontSize(halfPoints: number): this {\n this.properties.fontSize = halfPoints;\n return this;\n }\n\n /**\n * Sets the level text (bullet character or number template)\n * @param text The text template (e.g., '•' for bullets, '%1.' for numbered)\n */\n setText(text: string): this {\n this.properties.text = text;\n return this;\n }\n\n /**\n * Sets the text color\n * @param color Hex color without # (e.g., '000000' for black)\n */\n setColor(color: string): this {\n this.properties.color = color;\n return this;\n }\n\n /**\n * Sets whether the numbering text is bold\n * @param bold Whether to make bold\n */\n setBold(bold: boolean): this {\n this.properties.bold = bold;\n return this;\n }\n\n /**\n * Sets whether the numbering text is italic\n * @param italic Whether to make italic\n */\n setItalic(italic: boolean): this {\n this.properties.italic = italic;\n return this;\n }\n\n /**\n * Gets whether the numbering text is italic\n */\n getItalic(): boolean {\n return this.properties.italic ?? false;\n }\n\n /**\n * Sets the underline style for numbering text\n * @param style Underline style ('single', 'double', 'wave', 'dotted', 'dash', etc.)\n */\n setUnderline(style: string | undefined): this {\n this.properties.underline = style;\n return this;\n }\n\n /**\n * Gets the underline style\n */\n getUnderline(): string | undefined {\n return this.properties.underline;\n }\n\n /**\n * Clears the underline style\n */\n clearUnderline(): this {\n this.properties.underline = undefined;\n return this;\n }\n\n /**\n * Sets the level restart behavior (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n *\n * Controls when this level's numbering restarts based on higher-level changes:\n * - 0: Never restart (continues throughout document)\n * - 1-8: Restart when the specified level changes\n * - undefined: Restart when level-1 changes (standard/default behavior)\n *\n * @param level The level that triggers restart (0-8), or undefined for default\n * @example\n * // Level 1 that never restarts (continuous across document)\n * level1.setLvlRestart(0);\n *\n * // Level 2 that restarts when level 0 changes (not level 1)\n * level2.setLvlRestart(0);\n */\n setLvlRestart(level: number | undefined): this {\n if (level !== undefined && (level < 0 || level > 8)) {\n throw new Error(`lvlRestart must be between 0 and 8, got ${level}`);\n }\n this.properties.lvlRestart = level;\n return this;\n }\n\n /**\n * Gets the level restart value\n * @returns The level that triggers restart, or undefined for default behavior\n */\n getLvlRestart(): number | undefined {\n return this.properties.lvlRestart;\n }\n\n /**\n * Sets the paragraph style ID linked to this numbering level\n * Links this level to a paragraph style definition (w:pStyle per ECMA-376 §17.9.23)\n * @param styleId The paragraph style ID\n */\n setParagraphStyle(styleId: string): this {\n this.properties.pStyle = styleId;\n return this;\n }\n\n /**\n * Gets the paragraph style ID linked to this numbering level\n */\n getParagraphStyle(): string | undefined {\n return this.properties.pStyle;\n }\n\n /**\n * Sets the numbering format (decimal, lowerLetter, bullet, etc.)\n * @param format The numbering format\n */\n setFormat(format: NumberFormat): this {\n this.properties.format = NumberingLevel.normalizeFormat(format);\n return this;\n }\n\n /**\n * Normalizes display-string format values to ECMA-376 ST_NumberFormat names.\n * Accepts both standard format names and common display shortcuts.\n */\n static normalizeFormat(format: string): NumberFormat {\n const corrections: Record<string, NumberFormat> = {\n 'a.': 'lowerLetter',\n 'A.': 'upperLetter',\n 'i.': 'lowerRoman',\n 'I.': 'upperRoman',\n '1.': 'decimal',\n };\n return (corrections[format] ?? format) as NumberFormat;\n }\n\n /**\n * Generates the WordprocessingML XML for this level\n */\n toXML(): XMLElement {\n // ECMA-376 CT_Lvl element order (§17.9.6):\n // start, numFmt, lvlRestart, pStyle, isLgl, suff, lvlText, lvlPicBulletId, legacy, lvlJc, pPr, rPr\n const children: XMLElement[] = [];\n\n // 1. Start value\n children.push(XMLBuilder.wSelf('start', { 'w:val': this.properties.start.toString() }));\n\n // 2. Number format\n children.push(XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.format }));\n\n // 3. Level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n if (this.properties.lvlRestart !== undefined) {\n children.push(\n XMLBuilder.wSelf('lvlRestart', { 'w:val': this.properties.lvlRestart.toString() })\n );\n }\n\n // 4. pStyle (paragraph style link)\n if (this.properties.pStyle) {\n children.push(XMLBuilder.wSelf('pStyle', { 'w:val': this.properties.pStyle }));\n }\n\n // 5. Legal numbering style\n if (this.properties.isLegalNumberingStyle) {\n children.push(XMLBuilder.wSelf('isLgl'));\n }\n\n // 6. Suffix (what comes after the number)\n if (this.properties.suffix) {\n children.push(XMLBuilder.wSelf('suff', { 'w:val': this.properties.suffix }));\n }\n\n // 7. Level text (e.g., \"%1.\" or \"•\")\n children.push(XMLBuilder.wSelf('lvlText', { 'w:val': this.properties.text }));\n\n // 8. Alignment\n children.push(XMLBuilder.wSelf('lvlJc', { 'w:val': this.properties.alignment }));\n\n // 9. Paragraph properties (indentation)\n const ind = XMLBuilder.wSelf('ind', {\n 'w:left': this.properties.leftIndent.toString(),\n 'w:hanging': this.properties.hangingIndent.toString(),\n });\n const pPr = XMLBuilder.w('pPr', undefined, [ind]);\n children.push(pPr);\n\n // 10. Run properties (font)\n const rPrChildren: XMLElement[] = [];\n\n // Font\n rPrChildren.push(\n XMLBuilder.wSelf('rFonts', {\n 'w:ascii': this.properties.font,\n 'w:hAnsi': this.properties.font,\n 'w:cs': this.properties.font,\n 'w:hint': 'default',\n })\n );\n\n // Bold\n if (this.properties.bold) {\n rPrChildren.push(XMLBuilder.wSelf('b'));\n rPrChildren.push(XMLBuilder.wSelf('bCs'));\n }\n\n // Italic\n if (this.properties.italic) {\n rPrChildren.push(XMLBuilder.wSelf('i'));\n rPrChildren.push(XMLBuilder.wSelf('iCs'));\n }\n\n // CT_RPr element order per ECMA-376 §17.3.2.28:\n // ... b, bCs, i, iCs, ... color (#19), ... sz (#24), szCs (#25), ... u (#27)\n\n // Color (#19)\n if (this.properties.color) {\n rPrChildren.push(XMLBuilder.wSelf('color', { 'w:val': this.properties.color }));\n }\n\n // Font size (#24, #25)\n rPrChildren.push(XMLBuilder.wSelf('sz', { 'w:val': this.properties.fontSize.toString() }));\n rPrChildren.push(XMLBuilder.wSelf('szCs', { 'w:val': this.properties.fontSize.toString() }));\n\n // Underline (#27)\n if (this.properties.underline) {\n rPrChildren.push(XMLBuilder.wSelf('u', { 'w:val': this.properties.underline }));\n }\n\n const rPr = XMLBuilder.w('rPr', undefined, rPrChildren);\n children.push(rPr);\n\n return XMLBuilder.w('lvl', { 'w:ilvl': this.properties.level.toString() }, children);\n }\n\n /**\n * Gets the recommended bullet symbol and font for a given level\n * @param level The level index (0-8)\n * @param style Optional bullet style ('standard', 'circle', 'square', 'arrow', 'check', 'word-native')\n * @returns Object with symbol and font properties\n */\n static getBulletSymbolWithFont(\n level: number,\n style: 'standard' | 'circle' | 'square' | 'arrow' | 'check' | 'word-native' = 'standard'\n ): { symbol: string; font: string } {\n const bulletSets = {\n // Standard style now uses Word-native encoding for maximum compatibility\n standard: [\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 0: Filled bullet (Symbol U+F0B7)\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 1: Open circle (Courier New U+006F)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 2: Filled square (Wingdings U+F0A7)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 3: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 4: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 5: Filled square\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 6: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 7: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 8: Filled square\n ],\n circle: [\n { symbol: '●', font: 'Calibri' }, // Level 0: Filled circle (bold)\n { symbol: '○', font: 'Calibri' }, // Level 1: Empty circle\n { symbol: '◉', font: 'Calibri' }, // Level 2: Fisheye\n { symbol: '◯', font: 'Calibri' }, // Level 3: Large circle\n { symbol: '⦿', font: 'Calibri' }, // Level 4: Circled bullet\n { symbol: '○', font: 'Calibri' }, // Level 5: Empty circle\n { symbol: '●', font: 'Calibri' }, // Level 6: Filled circle\n { symbol: '○', font: 'Calibri' }, // Level 7: Empty circle\n { symbol: '◉', font: 'Calibri' }, // Level 8: Fisheye\n ],\n square: [\n { symbol: '■', font: 'Calibri' }, // Level 0: Filled square\n { symbol: '□', font: 'Calibri' }, // Level 1: Empty square\n { symbol: '▪', font: 'Calibri' }, // Level 2: Small filled square\n { symbol: '▫', font: 'Calibri' }, // Level 3: Small empty square\n { symbol: '◼', font: 'Calibri' }, // Level 4: Medium filled square\n { symbol: '◻', font: 'Calibri' }, // Level 5: Medium empty square\n { symbol: '■', font: 'Calibri' }, // Level 6: Filled square\n { symbol: '□', font: 'Calibri' }, // Level 7: Empty square\n { symbol: '▪', font: 'Calibri' }, // Level 8: Small filled square\n ],\n arrow: [\n { symbol: '➢', font: 'Calibri' }, // Level 0: Right arrow\n { symbol: '➣', font: 'Calibri' }, // Level 1: Right arrow filled\n { symbol: '➤', font: 'Calibri' }, // Level 2: Right arrow bold\n { symbol: '➔', font: 'Calibri' }, // Level 3: Right arrow simple\n { symbol: '➜', font: 'Calibri' }, // Level 4: Right arrow outline\n { symbol: '➢', font: 'Calibri' }, // Level 5: Right arrow\n { symbol: '➣', font: 'Calibri' }, // Level 6: Right arrow filled\n { symbol: '➤', font: 'Calibri' }, // Level 7: Right arrow bold\n { symbol: '➔', font: 'Calibri' }, // Level 8: Right arrow simple\n ],\n check: [\n { symbol: '✓', font: 'Calibri' }, // Level 0: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 1: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 2: Checked box\n { symbol: '✓', font: 'Calibri' }, // Level 3: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 4: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 5: Checked box\n { symbol: '✓', font: 'Calibri' }, // Level 6: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 7: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 8: Checked box\n ],\n 'word-native': [\n // Word-native bullets using PUA characters with Symbol/Wingdings fonts\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 0: Filled bullet (Symbol U+F0B7)\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 1: Open circle (Courier New U+006F)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 2: Filled square (Wingdings U+F0A7)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 3: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 4: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 5: Filled square\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 6: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 7: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 8: Filled square\n ],\n };\n\n const selectedSet = bulletSets[style];\n const levelIndex = level % selectedSet.length;\n const result = selectedSet[levelIndex];\n\n // Fallback to standard bullet if somehow undefined\n return result || { symbol: '•', font: 'Calibri' };\n }\n\n /**\n * Calculates the standard indentation values for a given level\n * @param level The level index (0-8)\n * @returns Object with leftIndent and hangingIndent in twips\n * @example\n * const indent = NumberingLevel.calculateStandardIndentation(0);\n * // Returns: { leftIndent: 720, hangingIndent: 360 } (0.5\" left, 0.25\" hanging)\n *\n * const indent2 = NumberingLevel.calculateStandardIndentation(2);\n * // Returns: { leftIndent: 1440, hangingIndent: 360 } (1.0\" left, 0.25\" hanging)\n */\n static calculateStandardIndentation(level: number): {\n leftIndent: number;\n hangingIndent: number;\n } {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n return {\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n };\n }\n\n /**\n * Gets the standard number format for a given level\n * @param level The level index (0-8)\n * @returns The recommended number format for this level\n * @example\n * NumberingLevel.getStandardNumberFormat(0); // 'decimal' (1., 2., 3.)\n * NumberingLevel.getStandardNumberFormat(1); // 'lowerLetter' (a., b., c.)\n * NumberingLevel.getStandardNumberFormat(2); // 'lowerRoman' (i., ii., iii.)\n * NumberingLevel.getStandardNumberFormat(3); // 'upperLetter' (A., B., C.)\n * NumberingLevel.getStandardNumberFormat(4); // 'upperRoman' (I., II., III.)\n */\n static getStandardNumberFormat(level: number): NumberFormat {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n const formats: NumberFormat[] = [\n 'decimal', // Level 0: 1., 2., 3.\n 'lowerLetter', // Level 1: a., b., c.\n 'lowerRoman', // Level 2: i., ii., iii.\n 'upperLetter', // Level 3: A., B., C.\n 'upperRoman', // Level 4: I., II., III.\n ];\n\n const result = formats[level % formats.length];\n return result || 'decimal'; // Fallback to decimal (should never happen)\n }\n\n /**\n * Creates a bullet list level\n *\n * When called without parameters, uses Word-native encoding for the level:\n * - Levels 0, 3, 6: Filled bullet (Symbol font, U+F0B7)\n * - Levels 1, 4, 7: Open circle (Courier New, U+006F)\n * - Levels 2, 5, 8: Filled square (Wingdings, U+F0A7)\n *\n * @param level The level index (0-8)\n * @param bullet Optional bullet character (defaults to Word-native for level)\n * @param font Optional font to use for the bullet (defaults to Word-native for level)\n */\n static createBulletLevel(level: number, bullet?: string, font?: string): NumberingLevel {\n // Use Word-native defaults when not specified\n const defaults = NumberingLevel.getBulletSymbolWithFont(level, 'standard');\n const actualBullet = bullet ?? defaults.symbol;\n const actualFont = font ?? defaults.font;\n\n return new NumberingLevel({\n level,\n format: 'bullet',\n text: actualBullet,\n alignment: 'left',\n font: actualFont,\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a decimal list level (1, 2, 3, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createDecimalLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'decimal',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a lower roman list level (i, ii, iii, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createLowerRomanLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'lowerRoman',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates an upper roman list level (I, II, III, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createUpperRomanLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'upperRoman',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a lower letter list level (a, b, c, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createLowerLetterLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'lowerLetter',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates an upper letter list level (A, B, C, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createUpperLetterLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'upperLetter',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Factory method for creating a numbering level\n * @param properties The level properties\n */\n static create(properties: NumberingLevelProperties): NumberingLevel {\n return new NumberingLevel(properties);\n }\n\n /**\n * Creates a NumberingLevel from XML element\n * @param xml The XML string of the <w:lvl> element\n * @returns NumberingLevel instance\n */\n static fromXML(xml: string): NumberingLevel {\n // Extract level index (required)\n const ilvlMatch = /<w:lvl[^>]*w:ilvl=\"([^\"]+)\"/.exec(xml);\n if (!ilvlMatch?.[1]) {\n throw new Error('Missing required w:ilvl attribute');\n }\n const level = parseInt(ilvlMatch[1], 10);\n\n // Extract number format (required)\n const numFmtMatch = /<w:numFmt[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (!numFmtMatch?.[1]) {\n throw new Error('Missing required w:numFmt element');\n }\n const format = NumberingLevel.normalizeFormat(numFmtMatch[1]);\n\n // Extract level text (optional - can be empty for placeholder levels)\n const lvlTextMatch = /<w:lvlText[^>]*w:val=\"([^\"]*)\"/.exec(xml);\n const text = lvlTextMatch?.[1] !== undefined ? lvlTextMatch[1] : '';\n\n // Extract alignment (optional, default: left)\n const lvlJcMatch = /<w:lvlJc[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const alignment = (lvlJcMatch?.[1] ? lvlJcMatch[1] : 'left') as NumberAlignment;\n\n // Extract start value (optional, default: 1)\n const startMatch = /<w:start[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const start = startMatch?.[1] ? parseInt(startMatch[1], 10) : 1;\n\n // Extract suffix (optional, default: tab)\n const suffixMatch = /<w:suff[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const suffix = suffixMatch?.[1] ? (suffixMatch[1] as 'tab' | 'space' | 'nothing') : 'tab';\n\n // Extract level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n let lvlRestart: number | undefined;\n const lvlRestartMatch = /<w:lvlRestart[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (lvlRestartMatch?.[1]) {\n lvlRestart = parseInt(lvlRestartMatch[1], 10);\n }\n\n // Extract pStyle (paragraph style link)\n let pStyle: string | undefined;\n const pStyleMatch = /<w:pStyle[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (pStyleMatch?.[1]) {\n pStyle = pStyleMatch[1];\n }\n\n // Extract indentation from <w:pPr><w:ind>\n let leftIndent = 720 + level * 360; // default\n let hangingIndent = 360; // default\n const indMatch = /<w:ind[^>]*\\/>/.exec(xml);\n if (indMatch) {\n const indElement = indMatch[0];\n const leftMatch = /w:left=\"([^\"]+)\"/.exec(indElement);\n const hangingMatch = /w:hanging=\"([^\"]+)\"/.exec(indElement);\n\n if (leftMatch?.[1]) leftIndent = parseInt(leftMatch[1], 10);\n if (hangingMatch?.[1]) hangingIndent = parseInt(hangingMatch[1], 10);\n }\n\n // Extract font and size from <w:rPr>\n let font = 'Calibri';\n let fontSize = 22;\n\n const rFontsMatch = /<w:rFonts[^>]*\\/>/.exec(xml);\n if (rFontsMatch) {\n const rFontsElement = rFontsMatch[0];\n const asciiMatch = /w:ascii=\"([^\"]+)\"/.exec(rFontsElement);\n if (asciiMatch?.[1]) font = asciiMatch[1];\n }\n\n const szMatch = /<w:sz[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (szMatch?.[1]) fontSize = parseInt(szMatch[1], 10);\n\n // List prefixes should never have bold, italic, or underline - ignore source XML formatting\n const bold = false;\n const italic = false;\n const underline: string | undefined = undefined;\n\n // Extract color from <w:rPr>\n let color: string | undefined;\n const colorMatch = /<w:color[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (colorMatch?.[1]) {\n color = colorMatch[1];\n }\n\n return new NumberingLevel({\n level,\n format,\n text,\n alignment,\n start,\n leftIndent,\n hangingIndent,\n font,\n fontSize,\n suffix,\n bold,\n italic,\n underline,\n color,\n lvlRestart,\n pStyle,\n });\n }\n}\n"]}
@@ -32,6 +32,7 @@ export interface CellMargins {
32
32
  }
33
33
  export interface TableStyleFormatting {
34
34
  indent?: number;
35
+ indentType?: string;
35
36
  cellSpacing?: number;
36
37
  borders?: TableBorders;
37
38
  cellMargins?: CellMargins;
@@ -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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"}
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Style = void 0;
4
4
  const XMLBuilder_1 = require("../xml/XMLBuilder");
5
+ const Run_1 = require("../elements/Run");
5
6
  const CommonTypes_1 = require("../elements/CommonTypes");
6
7
  const deepClone_1 = require("../utils/deepClone");
7
- const units_1 = require("../utils/units");
8
8
  class Style {
9
9
  properties;
10
10
  constructor(properties) {
@@ -319,11 +319,23 @@ class Style {
319
319
  numPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('numId', { 'w:val': String(this.properties.numPr.numId) }));
320
320
  }
321
321
  if (numPrChildren.length > 0) {
322
- if (pPr.children) {
323
- pPr.children.unshift(XMLBuilder_1.XMLBuilder.w('numPr', undefined, numPrChildren));
322
+ const numPrEl = XMLBuilder_1.XMLBuilder.w('numPr', undefined, numPrChildren);
323
+ if (pPr.children && pPr.children.length > 0) {
324
+ let insertIdx = 0;
325
+ for (let i = 0; i < pPr.children.length; i++) {
326
+ const child = pPr.children[i];
327
+ if (child && typeof child !== 'string') {
328
+ if (child.name === 'w:keepNext' ||
329
+ child.name === 'w:keepLines' ||
330
+ child.name === 'w:pageBreakBefore') {
331
+ insertIdx = i + 1;
332
+ }
333
+ }
334
+ }
335
+ pPr.children.splice(insertIdx, 0, numPrEl);
324
336
  }
325
337
  else {
326
- pPr.children = [XMLBuilder_1.XMLBuilder.w('numPr', undefined, numPrChildren)];
338
+ pPr.children = [numPrEl];
327
339
  }
328
340
  }
329
341
  }
@@ -421,54 +433,8 @@ class Style {
421
433
  return XMLBuilder_1.XMLBuilder.w('pPr', undefined, pPrChildren);
422
434
  }
423
435
  generateRunProperties(formatting) {
424
- const rPrChildren = [];
425
- if (formatting.font) {
426
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('rFonts', {
427
- 'w:ascii': formatting.font,
428
- 'w:hAnsi': formatting.font,
429
- 'w:cs': formatting.font,
430
- }));
431
- }
432
- if (formatting.bold) {
433
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('b'));
434
- }
435
- if (formatting.italic) {
436
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('i'));
437
- }
438
- if (formatting.allCaps) {
439
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('caps'));
440
- }
441
- if (formatting.smallCaps) {
442
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('smallCaps'));
443
- }
444
- if (formatting.strike) {
445
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('strike'));
446
- }
447
- if (formatting.dstrike) {
448
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('dstrike'));
449
- }
450
- if (formatting.color) {
451
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('color', { 'w:val': formatting.color }));
452
- }
453
- if (formatting.size !== undefined) {
454
- const halfPoints = (0, units_1.pointsToHalfPoints)(formatting.size);
455
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('sz', { 'w:val': halfPoints }));
456
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('szCs', { 'w:val': halfPoints }));
457
- }
458
- if (formatting.highlight) {
459
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('highlight', { 'w:val': formatting.highlight }));
460
- }
461
- if (formatting.underline) {
462
- const underlineValue = typeof formatting.underline === 'string' ? formatting.underline : 'single';
463
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('u', { 'w:val': underlineValue }));
464
- }
465
- if (formatting.subscript) {
466
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('vertAlign', { 'w:val': 'subscript' }));
467
- }
468
- if (formatting.superscript) {
469
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('vertAlign', { 'w:val': 'superscript' }));
470
- }
471
- return XMLBuilder_1.XMLBuilder.w('rPr', undefined, rPrChildren);
436
+ const rPr = Run_1.Run.generateRunPropertiesXML(formatting);
437
+ return rPr || XMLBuilder_1.XMLBuilder.w('rPr', undefined, []);
472
438
  }
473
439
  generateTableProperties(formatting, tableStyle, isConditional = false) {
474
440
  const tblPrChildren = [];
@@ -494,7 +460,7 @@ class Style {
494
460
  if (formatting.indent !== undefined) {
495
461
  tblPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('tblInd', {
496
462
  'w:w': formatting.indent,
497
- 'w:type': 'dxa',
463
+ 'w:type': formatting.indentType || 'dxa',
498
464
  }));
499
465
  }
500
466
  if (formatting.borders) {
@@ -614,18 +580,18 @@ class Style {
614
580
  tblStylePrChildren.push(tblPr);
615
581
  }
616
582
  }
617
- if (conditional.cellFormatting) {
618
- const tcPr = this.generateTableCellProperties(conditional.cellFormatting);
619
- if (tcPr.children && tcPr.children.length > 0) {
620
- tblStylePrChildren.push(tcPr);
621
- }
622
- }
623
583
  if (conditional.rowFormatting) {
624
584
  const trPr = this.generateTableRowProperties(conditional.rowFormatting);
625
585
  if (trPr.children && trPr.children.length > 0) {
626
586
  tblStylePrChildren.push(trPr);
627
587
  }
628
588
  }
589
+ if (conditional.cellFormatting) {
590
+ const tcPr = this.generateTableCellProperties(conditional.cellFormatting);
591
+ if (tcPr.children && tcPr.children.length > 0) {
592
+ tblStylePrChildren.push(tcPr);
593
+ }
594
+ }
629
595
  return XMLBuilder_1.XMLBuilder.w('tblStylePr', { 'w:type': conditional.type }, tblStylePrChildren);
630
596
  }
631
597
  generateBorderElements(borders, includeDiagonals) {