@aster-editor/word 0.4.3 → 0.5.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 (250) hide show
  1. package/README.md +204 -82
  2. package/dist/docx/compare/align.d.ts +24 -0
  3. package/dist/docx/compare/align.d.ts.map +1 -0
  4. package/dist/docx/compare/align.js +217 -0
  5. package/dist/docx/compare/align.js.map +1 -0
  6. package/dist/docx/compare/compare-blocks.d.ts +29 -0
  7. package/dist/docx/compare/compare-blocks.d.ts.map +1 -0
  8. package/dist/docx/compare/compare-blocks.js +234 -0
  9. package/dist/docx/compare/compare-blocks.js.map +1 -0
  10. package/dist/docx/compare/compare-context.d.ts +25 -0
  11. package/dist/docx/compare/compare-context.d.ts.map +1 -0
  12. package/dist/docx/compare/compare-context.js +31 -0
  13. package/dist/docx/compare/compare-context.js.map +1 -0
  14. package/dist/docx/compare/compare-docx.d.ts +4 -0
  15. package/dist/docx/compare/compare-docx.d.ts.map +1 -0
  16. package/dist/docx/compare/compare-docx.js +173 -0
  17. package/dist/docx/compare/compare-docx.js.map +1 -0
  18. package/dist/docx/compare/compare-tables.d.ts +13 -0
  19. package/dist/docx/compare/compare-tables.d.ts.map +1 -0
  20. package/dist/docx/compare/compare-tables.js +47 -0
  21. package/dist/docx/compare/compare-tables.js.map +1 -0
  22. package/dist/docx/compare/model-borders.d.ts +27 -0
  23. package/dist/docx/compare/model-borders.d.ts.map +1 -0
  24. package/dist/docx/compare/model-borders.js +41 -0
  25. package/dist/docx/compare/model-borders.js.map +1 -0
  26. package/dist/docx/compare/model-paragraph.d.ts +25 -0
  27. package/dist/docx/compare/model-paragraph.d.ts.map +1 -0
  28. package/dist/docx/compare/model-paragraph.js +309 -0
  29. package/dist/docx/compare/model-paragraph.js.map +1 -0
  30. package/dist/docx/compare/model-sections.d.ts +11 -0
  31. package/dist/docx/compare/model-sections.d.ts.map +1 -0
  32. package/dist/docx/compare/model-sections.js +97 -0
  33. package/dist/docx/compare/model-sections.js.map +1 -0
  34. package/dist/docx/compare/model.d.ts +113 -0
  35. package/dist/docx/compare/model.d.ts.map +1 -0
  36. package/dist/docx/compare/model.js +214 -0
  37. package/dist/docx/compare/model.js.map +1 -0
  38. package/dist/docx/compare/parts.d.ts +40 -0
  39. package/dist/docx/compare/parts.d.ts.map +1 -0
  40. package/dist/docx/compare/parts.js +113 -0
  41. package/dist/docx/compare/parts.js.map +1 -0
  42. package/dist/docx/compare/tally.d.ts +23 -0
  43. package/dist/docx/compare/tally.d.ts.map +1 -0
  44. package/dist/docx/compare/tally.js +94 -0
  45. package/dist/docx/compare/tally.js.map +1 -0
  46. package/dist/docx/compare/types.d.ts +55 -0
  47. package/dist/docx/compare/types.d.ts.map +1 -0
  48. package/dist/docx/compare/types.js +2 -0
  49. package/dist/docx/compare/types.js.map +1 -0
  50. package/dist/docx/compare/values.d.ts +13 -0
  51. package/dist/docx/compare/values.d.ts.map +1 -0
  52. package/dist/docx/compare/values.js +44 -0
  53. package/dist/docx/compare/values.js.map +1 -0
  54. package/dist/docx/import-docx.d.ts.map +1 -1
  55. package/dist/docx/import-docx.js +57 -2
  56. package/dist/docx/import-docx.js.map +1 -1
  57. package/dist/docx/preprocess/variables.d.ts.map +1 -1
  58. package/dist/docx/preprocess/variables.js +2 -2
  59. package/dist/docx/preprocess/variables.js.map +1 -1
  60. package/dist/docx/preprocess/xml-utils.d.ts +7 -0
  61. package/dist/docx/preprocess/xml-utils.d.ts.map +1 -1
  62. package/dist/docx/preprocess/xml-utils.js +9 -0
  63. package/dist/docx/preprocess/xml-utils.js.map +1 -1
  64. package/dist/docx/reader/headers.d.ts +17 -0
  65. package/dist/docx/reader/headers.d.ts.map +1 -0
  66. package/dist/docx/reader/headers.js +64 -0
  67. package/dist/docx/reader/headers.js.map +1 -0
  68. package/dist/docx/reader/html.d.ts +12 -0
  69. package/dist/docx/reader/html.d.ts.map +1 -0
  70. package/dist/docx/reader/html.js +27 -0
  71. package/dist/docx/reader/html.js.map +1 -0
  72. package/dist/docx/reader/images.d.ts +27 -0
  73. package/dist/docx/reader/images.d.ts.map +1 -0
  74. package/dist/docx/reader/images.js +288 -0
  75. package/dist/docx/reader/images.js.map +1 -0
  76. package/dist/docx/reader/index.d.ts +10 -0
  77. package/dist/docx/reader/index.d.ts.map +1 -0
  78. package/dist/docx/reader/index.js +177 -0
  79. package/dist/docx/reader/index.js.map +1 -0
  80. package/dist/docx/reader/lists.d.ts +44 -0
  81. package/dist/docx/reader/lists.d.ts.map +1 -0
  82. package/dist/docx/reader/lists.js +360 -0
  83. package/dist/docx/reader/lists.js.map +1 -0
  84. package/dist/docx/reader/lost.d.ts +30 -0
  85. package/dist/docx/reader/lost.d.ts.map +1 -0
  86. package/dist/docx/reader/lost.js +215 -0
  87. package/dist/docx/reader/lost.js.map +1 -0
  88. package/dist/docx/reader/notes.d.ts +4 -0
  89. package/dist/docx/reader/notes.d.ts.map +1 -0
  90. package/dist/docx/reader/notes.js +112 -0
  91. package/dist/docx/reader/notes.js.map +1 -0
  92. package/dist/docx/reader/package.d.ts +16 -0
  93. package/dist/docx/reader/package.d.ts.map +1 -0
  94. package/dist/docx/reader/package.js +138 -0
  95. package/dist/docx/reader/package.js.map +1 -0
  96. package/dist/docx/reader/paragraphs.d.ts +15 -0
  97. package/dist/docx/reader/paragraphs.d.ts.map +1 -0
  98. package/dist/docx/reader/paragraphs.js +162 -0
  99. package/dist/docx/reader/paragraphs.js.map +1 -0
  100. package/dist/docx/reader/properties.d.ts +90 -0
  101. package/dist/docx/reader/properties.d.ts.map +1 -0
  102. package/dist/docx/reader/properties.js +402 -0
  103. package/dist/docx/reader/properties.js.map +1 -0
  104. package/dist/docx/reader/runs.d.ts +49 -0
  105. package/dist/docx/reader/runs.d.ts.map +1 -0
  106. package/dist/docx/reader/runs.js +442 -0
  107. package/dist/docx/reader/runs.js.map +1 -0
  108. package/dist/docx/reader/sections.d.ts +36 -0
  109. package/dist/docx/reader/sections.d.ts.map +1 -0
  110. package/dist/docx/reader/sections.js +158 -0
  111. package/dist/docx/reader/sections.js.map +1 -0
  112. package/dist/docx/reader/styles.d.ts +24 -0
  113. package/dist/docx/reader/styles.d.ts.map +1 -0
  114. package/dist/docx/reader/styles.js +383 -0
  115. package/dist/docx/reader/styles.js.map +1 -0
  116. package/dist/docx/reader/tables.d.ts +6 -0
  117. package/dist/docx/reader/tables.d.ts.map +1 -0
  118. package/dist/docx/reader/tables.js +175 -0
  119. package/dist/docx/reader/tables.js.map +1 -0
  120. package/dist/docx/reader/test-support.d.ts +25 -0
  121. package/dist/docx/reader/test-support.d.ts.map +1 -0
  122. package/dist/docx/reader/test-support.js +135 -0
  123. package/dist/docx/reader/test-support.js.map +1 -0
  124. package/dist/docx/reader/testing-blocks.d.ts +50 -0
  125. package/dist/docx/reader/testing-blocks.d.ts.map +1 -0
  126. package/dist/docx/reader/testing-blocks.js +302 -0
  127. package/dist/docx/reader/testing-blocks.js.map +1 -0
  128. package/dist/docx/reader/types.d.ts +181 -0
  129. package/dist/docx/reader/types.d.ts.map +1 -0
  130. package/dist/docx/reader/types.js +2 -0
  131. package/dist/docx/reader/types.js.map +1 -0
  132. package/dist/docx/reader/units-blocks.d.ts +75 -0
  133. package/dist/docx/reader/units-blocks.d.ts.map +1 -0
  134. package/dist/docx/reader/units-blocks.js +254 -0
  135. package/dist/docx/reader/units-blocks.js.map +1 -0
  136. package/dist/docx/reader/units.d.ts +72 -0
  137. package/dist/docx/reader/units.d.ts.map +1 -0
  138. package/dist/docx/reader/units.js +177 -0
  139. package/dist/docx/reader/units.js.map +1 -0
  140. package/dist/docx/types.d.ts +40 -2
  141. package/dist/docx/types.d.ts.map +1 -1
  142. package/dist/docx/writer/content-types.d.ts +30 -0
  143. package/dist/docx/writer/content-types.d.ts.map +1 -0
  144. package/dist/docx/writer/content-types.js +81 -0
  145. package/dist/docx/writer/content-types.js.map +1 -0
  146. package/dist/docx/writer/core-properties.d.ts +16 -0
  147. package/dist/docx/writer/core-properties.d.ts.map +1 -0
  148. package/dist/docx/writer/core-properties.js +64 -0
  149. package/dist/docx/writer/core-properties.js.map +1 -0
  150. package/dist/docx/writer/footnotes-merge.d.ts +30 -0
  151. package/dist/docx/writer/footnotes-merge.d.ts.map +1 -0
  152. package/dist/docx/writer/footnotes-merge.js +71 -0
  153. package/dist/docx/writer/footnotes-merge.js.map +1 -0
  154. package/dist/docx/writer/graft.d.ts +41 -0
  155. package/dist/docx/writer/graft.d.ts.map +1 -0
  156. package/dist/docx/writer/graft.js +277 -0
  157. package/dist/docx/writer/graft.js.map +1 -0
  158. package/dist/docx/writer/header-footer-graft.d.ts +34 -0
  159. package/dist/docx/writer/header-footer-graft.d.ts.map +1 -0
  160. package/dist/docx/writer/header-footer-graft.js +155 -0
  161. package/dist/docx/writer/header-footer-graft.js.map +1 -0
  162. package/dist/docx/writer/header-footer-variables.d.ts +25 -0
  163. package/dist/docx/writer/header-footer-variables.d.ts.map +1 -0
  164. package/dist/docx/writer/header-footer-variables.js +101 -0
  165. package/dist/docx/writer/header-footer-variables.js.map +1 -0
  166. package/dist/docx/writer/media.d.ts +32 -0
  167. package/dist/docx/writer/media.d.ts.map +1 -0
  168. package/dist/docx/writer/media.js +88 -0
  169. package/dist/docx/writer/media.js.map +1 -0
  170. package/dist/docx/writer/numbering-merge.d.ts +37 -0
  171. package/dist/docx/writer/numbering-merge.d.ts.map +1 -0
  172. package/dist/docx/writer/numbering-merge.js +140 -0
  173. package/dist/docx/writer/numbering-merge.js.map +1 -0
  174. package/dist/docx/writer/relationships.d.ts +63 -0
  175. package/dist/docx/writer/relationships.d.ts.map +1 -0
  176. package/dist/docx/writer/relationships.js +127 -0
  177. package/dist/docx/writer/relationships.js.map +1 -0
  178. package/dist/docx/writer/settings-merge.d.ts +21 -0
  179. package/dist/docx/writer/settings-merge.d.ts.map +1 -0
  180. package/dist/docx/writer/settings-merge.js +165 -0
  181. package/dist/docx/writer/settings-merge.js.map +1 -0
  182. package/dist/docx/writer/style-reconcile.d.ts +29 -0
  183. package/dist/docx/writer/style-reconcile.d.ts.map +1 -0
  184. package/dist/docx/writer/style-reconcile.js +319 -0
  185. package/dist/docx/writer/style-reconcile.js.map +1 -0
  186. package/dist/docx/writer/style-strip.d.ts +33 -0
  187. package/dist/docx/writer/style-strip.d.ts.map +1 -0
  188. package/dist/docx/writer/style-strip.js +267 -0
  189. package/dist/docx/writer/style-strip.js.map +1 -0
  190. package/dist/docx/writer/styles-merge.d.ts +57 -0
  191. package/dist/docx/writer/styles-merge.d.ts.map +1 -0
  192. package/dist/docx/writer/styles-merge.js +184 -0
  193. package/dist/docx/writer/styles-merge.js.map +1 -0
  194. package/dist/docx/writer/template.d.ts +48 -0
  195. package/dist/docx/writer/template.d.ts.map +1 -0
  196. package/dist/docx/writer/template.js +280 -0
  197. package/dist/docx/writer/template.js.map +1 -0
  198. package/dist/docx/writer/testing.d.ts +52 -0
  199. package/dist/docx/writer/testing.d.ts.map +1 -0
  200. package/dist/docx/writer/testing.js +318 -0
  201. package/dist/docx/writer/testing.js.map +1 -0
  202. package/dist/docx/writer/xml-io.d.ts +90 -0
  203. package/dist/docx/writer/xml-io.d.ts.map +1 -0
  204. package/dist/docx/writer/xml-io.js +215 -0
  205. package/dist/docx/writer/xml-io.js.map +1 -0
  206. package/dist/export/blocks.d.ts.map +1 -1
  207. package/dist/export/blocks.js +149 -12
  208. package/dist/export/blocks.js.map +1 -1
  209. package/dist/export/context.d.ts +34 -2
  210. package/dist/export/context.d.ts.map +1 -1
  211. package/dist/export/context.js +28 -2
  212. package/dist/export/context.js.map +1 -1
  213. package/dist/export/css.d.ts +58 -0
  214. package/dist/export/css.d.ts.map +1 -1
  215. package/dist/export/css.js +194 -0
  216. package/dist/export/css.js.map +1 -1
  217. package/dist/export/dom.d.ts +2 -0
  218. package/dist/export/dom.d.ts.map +1 -1
  219. package/dist/export/dom.js +2 -0
  220. package/dist/export/dom.js.map +1 -1
  221. package/dist/export/export-docx.d.ts +4 -0
  222. package/dist/export/export-docx.d.ts.map +1 -1
  223. package/dist/export/export-docx.js +57 -4
  224. package/dist/export/export-docx.js.map +1 -1
  225. package/dist/export/header-footer.d.ts +15 -1
  226. package/dist/export/header-footer.d.ts.map +1 -1
  227. package/dist/export/header-footer.js +37 -0
  228. package/dist/export/header-footer.js.map +1 -1
  229. package/dist/export/html-to-docx.d.ts +20 -2
  230. package/dist/export/html-to-docx.d.ts.map +1 -1
  231. package/dist/export/html-to-docx.js +40 -14
  232. package/dist/export/html-to-docx.js.map +1 -1
  233. package/dist/export/inline.d.ts +25 -3
  234. package/dist/export/inline.d.ts.map +1 -1
  235. package/dist/export/inline.js +91 -34
  236. package/dist/export/inline.js.map +1 -1
  237. package/dist/export/styles.d.ts +51 -7
  238. package/dist/export/styles.d.ts.map +1 -1
  239. package/dist/export/styles.js +121 -16
  240. package/dist/export/styles.js.map +1 -1
  241. package/dist/export/tables.d.ts.map +1 -1
  242. package/dist/export/tables.js +140 -12
  243. package/dist/export/tables.js.map +1 -1
  244. package/dist/export/types.d.ts +44 -5
  245. package/dist/export/types.d.ts.map +1 -1
  246. package/dist/index.d.ts +5 -2
  247. package/dist/index.d.ts.map +1 -1
  248. package/dist/index.js +1 -0
  249. package/dist/index.js.map +1 -1
  250. package/package.json +2 -2
@@ -1,6 +1,7 @@
1
1
  import type { Paragraph } from 'docx';
2
+ import type { NumberingResolver } from '../docx/reader/types';
2
3
  import type { DocxModule } from './docx-module';
3
- import type { ListKind } from './styles';
4
+ import type { HeadingNumbering, ListKind } from './styles';
4
5
  import type { DocxExportWarning, DocxExportWarningCode, DocxImageFetcher, DocxVariableMode } from './types';
5
6
  import type { VariableValues } from '@aster-editor/core';
6
7
  /**
@@ -18,6 +19,11 @@ export interface ListDefinition {
18
19
  readonly level: number;
19
20
  /** Premier numéro (`<ol start>`), 1 par défaut. */
20
21
  readonly start: number;
22
+ /**
23
+ * `numId` du gabarit (`data-docx-num-id`, posé par l'import) que l'export dans le gabarit
24
+ * réutilise à la place de la numérotation générée. Ignoré par l'export neuf.
25
+ */
26
+ readonly templateNumId?: string;
21
27
  }
22
28
  /** Options de variables résolues : mode effectif, valeurs et motif du texte brut. */
23
29
  export interface VariableSettings {
@@ -57,9 +63,35 @@ export interface ExportContext {
57
63
  * un second appel est dégradé en exposant `[n]`.
58
64
  */
59
65
  readonly footnoteCalls: Set<string>;
66
+ /**
67
+ * Identifiants de styles que le document final définit : ceux de l'export neuf, plus
68
+ * ceux du gabarit en export dans le gabarit. Un `data-docx-style` / `data-docx-run-style`
69
+ * hors de cet ensemble n'est pas écrit (ses propriétés directes suffisent).
70
+ */
71
+ readonly knownStyles: ReadonlySet<string>;
72
+ /** Vrai en export dans le gabarit : un style inconnu y vaut un avertissement `template-style-missing`. */
73
+ readonly template: boolean;
74
+ /**
75
+ * Numérotations du gabarit (export dans le gabarit), pour retrouver le niveau d'une
76
+ * liste `data-docx-num-id` quand la profondeur HTML ne le donne pas (liste Word au
77
+ * niveau 1 sans parent). `null` en export neuf.
78
+ */
79
+ readonly templateNumbering: NumberingResolver | null;
80
+ /**
81
+ * Numérotation des titres à poser en `w:numPr` direct sur chaque titre (export dans le
82
+ * gabarit, dont les styles `Heading n` ne sont pas modifiés). `null` en export neuf,
83
+ * où elle vit dans les styles de titres.
84
+ */
85
+ readonly headingNumbering: HeadingNumbering | null;
60
86
  }
61
87
  /** Ajoute un avertissement typé au contexte. */
62
88
  export declare function warn(ctx: ExportContext, code: DocxExportWarningCode, message: string): void;
63
89
  /** Enregistre une nouvelle liste et rend sa référence `numbering` dédiée. */
64
- export declare function registerList(ctx: ExportContext, kind: ListKind, level: number, start: number): string;
90
+ export declare function registerList(ctx: ExportContext, kind: ListKind, level: number, start: number, templateNumId?: string): string;
91
+ /**
92
+ * Identifiant de style Word d'un attribut `data-docx-style` / `data-docx-run-style` :
93
+ * tel quel s'il est défini dans le document final, sinon `null`, avec un avertissement
94
+ * `template-style-missing` en export dans le gabarit (l'export neuf ne le promet pas).
95
+ */
96
+ export declare function resolveDocxStyle(ctx: ExportContext, value: string | null, what: 'paragraphe' | 'run' | 'tableau'): string | null;
65
97
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/export/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAClD,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACvC,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACpD;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrC;AAED,gDAAgD;AAChD,wBAAgB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3F;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,MAAM,CAIR"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/export/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAClD,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACvC,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACpD;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,0GAA0G;IAC1G,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACpD;AAED,gDAAgD;AAChD,wBAAgB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3F;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAUR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,IAAI,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS,GACrC,MAAM,GAAG,IAAI,CAYf"}
@@ -3,9 +3,35 @@ export function warn(ctx, code, message) {
3
3
  ctx.warnings.push({ code, message });
4
4
  }
5
5
  /** Enregistre une nouvelle liste et rend sa référence `numbering` dédiée. */
6
- export function registerList(ctx, kind, level, start) {
6
+ export function registerList(ctx, kind, level, start, templateNumId) {
7
7
  const reference = `aster-${kind}-${String(ctx.lists.length + 1)}`;
8
- ctx.lists.push({ reference, kind, level, start });
8
+ ctx.lists.push({
9
+ reference,
10
+ kind,
11
+ level,
12
+ start,
13
+ ...(templateNumId !== undefined ? { templateNumId } : {}),
14
+ });
9
15
  return reference;
10
16
  }
17
+ /**
18
+ * Identifiant de style Word d'un attribut `data-docx-style` / `data-docx-run-style` :
19
+ * tel quel s'il est défini dans le document final, sinon `null`, avec un avertissement
20
+ * `template-style-missing` en export dans le gabarit (l'export neuf ne le promet pas).
21
+ */
22
+ export function resolveDocxStyle(ctx, value, what) {
23
+ const id = value?.trim() ?? '';
24
+ if (id === '')
25
+ return null;
26
+ if (ctx.knownStyles.has(id))
27
+ return id;
28
+ if (ctx.template) {
29
+ const message = `Style de ${what} « ${id} » absent du gabarit et de l'export : propriétés directes seules`;
30
+ // Un style manquant revient à chaque bloc qui le porte : un seul avertissement suffit.
31
+ if (!ctx.warnings.some((warning) => warning.message === message)) {
32
+ warn(ctx, 'template-style-missing', message);
33
+ }
34
+ }
35
+ return null;
36
+ }
11
37
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/export/context.ts"],"names":[],"mappings":"AAsEA,gDAAgD;AAChD,MAAM,UAAU,IAAI,CAAC,GAAkB,EAAE,IAA2B,EAAE,OAAe;IACnF,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAC1B,GAAkB,EAClB,IAAc,EACd,KAAa,EACb,KAAa;IAEb,MAAM,SAAS,GAAG,SAAS,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;IAClE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/export/context.ts"],"names":[],"mappings":"AAgGA,gDAAgD;AAChD,MAAM,UAAU,IAAI,CAAC,GAAkB,EAAE,IAA2B,EAAE,OAAe;IACnF,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAC1B,GAAkB,EAClB,IAAc,EACd,KAAa,EACb,KAAa,EACb,aAAsB;IAEtB,MAAM,SAAS,GAAG,SAAS,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;IAClE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACb,SAAS;QACT,IAAI;QACJ,KAAK;QACL,KAAK;QACL,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAkB,EAClB,KAAoB,EACpB,IAAsC;IAEtC,MAAM,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,YAAY,IAAI,MAAM,EAAE,kEAAkE,CAAC;QAC3G,uFAAuF;QACvF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,GAAG,EAAE,wBAAwB,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -25,4 +25,62 @@ export type ParagraphAlignment = 'center' | 'right' | 'both';
25
25
  export declare function parseAlignment(value: string | undefined): ParagraphAlignment | null;
26
26
  /** Longueur CSS/HTML en pixels (`320`, `320px`, `24pt`). `null` sinon (`auto`, `%`, vide). */
27
27
  export declare function parsePixels(value: string | null | undefined): number | null;
28
+ /**
29
+ * Longueur CSS absolue → points, signée (`-18pt` est un retrait suspendu), deux décimales.
30
+ * `null` pour une unité relative (`em`, `%`), un mot-clé ou une valeur illisible.
31
+ */
32
+ export declare function parsePoints(value: string | null | undefined): number | null;
33
+ /** Points → twips (1/20 de point), entier. */
34
+ export declare function pointsToTwips(points: number): number;
35
+ /** Styles de trait du contrat de mise en page (`BlockBorder.style`). */
36
+ export type CssBorderStyle = 'solid' | 'dashed' | 'dotted' | 'double';
37
+ /** Bordure CSS lue : style, épaisseur en points, couleur `RRGGBB`. */
38
+ export interface CssBorder {
39
+ readonly style: CssBorderStyle;
40
+ readonly widthPt: number;
41
+ readonly color: string;
42
+ }
43
+ /** Côtés d'une bordure de bloc ou de cellule. */
44
+ export type CssBorderSide = 'top' | 'right' | 'bottom' | 'left';
45
+ /** Côtés dans l'ordre de sérialisation du contrat. */
46
+ export declare const CSS_BORDER_SIDES: readonly CssBorderSide[];
47
+ /**
48
+ * Raccourci `border` / `border-<côté>` CSS (`1pt solid #000000`, dans n'importe quel
49
+ * ordre, couleur `#hex`, `rgb()` ou nom) → bordure, `undefined` si la valeur est illisible,
50
+ * `null` pour `none` / `hidden` / `0` (bordure explicitement absente). Une épaisseur
51
+ * absente vaut `medium`, un style absent `solid`, une couleur absente noir.
52
+ */
53
+ export declare function parseBorder(value: string | undefined): CssBorder | null | undefined;
54
+ /**
55
+ * Bordures d'un `style` inline, côté par côté : raccourci `border` (tous les côtés) puis
56
+ * `border-<côté>`, puis les propriétés longues `border-<côté>-width|style|color` qui
57
+ * complètent ou corrigent. Un côté absent de la map n'est pas déclaré ; `null` le déclare
58
+ * explicitement sans bordure (`border-top: none`).
59
+ */
60
+ export declare function parseBorders(style: ReadonlyMap<string, string>): ReadonlyMap<CssBorderSide, CssBorder | null>;
61
+ /** Interligne lu : multiple (`1.15`) ou exact en points (`14pt`). */
62
+ export type CssLineHeight = {
63
+ readonly kind: 'multiple';
64
+ readonly value: number;
65
+ } | {
66
+ readonly kind: 'exact';
67
+ readonly points: number;
68
+ };
69
+ /**
70
+ * `line-height` CSS → interligne Word : nombre nu ou pourcentage = multiple, longueur
71
+ * absolue = exact. `normal`, `inherit` et les unités relatives sont ignorés.
72
+ */
73
+ export declare function parseLineHeight(value: string | undefined): CssLineHeight | null;
74
+ /**
75
+ * `padding` CSS (1 à 4 valeurs, règle TRBL) → points `[haut, droite, bas, gauche]`.
76
+ * `null` si une valeur est illisible.
77
+ */
78
+ export declare function parsePadding(value: string | undefined): readonly [number, number, number, number] | null;
79
+ /** Les seize surlignages nommés de Word (`w:highlight`), valeurs de `HighlightColor` de `docx`. */
80
+ export type HighlightName = 'yellow' | 'green' | 'cyan' | 'magenta' | 'blue' | 'red' | 'darkBlue' | 'darkCyan' | 'darkGreen' | 'darkMagenta' | 'darkRed' | 'darkYellow' | 'darkGray' | 'lightGray' | 'black' | 'white';
81
+ /**
82
+ * Nom de surlignage Word (`w:highlight`) d'une couleur `RRGGBB`, `null` si aucun des seize
83
+ * ne correspond : le fond est alors écrit en `w:shd`, que Word affiche à l'identique.
84
+ */
85
+ export declare function highlightName(color: string): HighlightName | null;
28
86
  //# sourceMappingURL=css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/export/css.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0BH,qFAAqF;AACrF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAW5E;AA6BD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA4BnE;AAiBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAwBtE;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CASxE;AAED,yFAAyF;AACzF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7D,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,GAAG,IAAI,CAYnF;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO3E"}
1
+ {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/export/css.ts"],"names":[],"mappings":"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"}
@@ -188,4 +188,198 @@ export function parsePixels(value) {
188
188
  return null;
189
189
  return Math.round(match[2] === 'pt' ? amount / 0.75 : amount);
190
190
  }
191
+ /** Points par unité CSS absolue. Un nombre nu est lu en points (contrat de mise en page). */
192
+ const POINTS_PER_UNIT = {
193
+ pt: 1,
194
+ px: 0.75,
195
+ in: 72,
196
+ cm: 72 / 2.54,
197
+ mm: 72 / 25.4,
198
+ pc: 12,
199
+ '': 1,
200
+ };
201
+ /**
202
+ * Longueur CSS absolue → points, signée (`-18pt` est un retrait suspendu), deux décimales.
203
+ * `null` pour une unité relative (`em`, `%`), un mot-clé ou une valeur illisible.
204
+ */
205
+ export function parsePoints(value) {
206
+ if (!value)
207
+ return null;
208
+ const match = /^(-?[\d.]+)\s*(pt|px|in|cm|mm|pc)?$/.exec(value.trim().toLowerCase());
209
+ if (!match)
210
+ return null;
211
+ const amount = Number(match[1]);
212
+ if (!Number.isFinite(amount))
213
+ return null;
214
+ return Math.round(amount * (POINTS_PER_UNIT[match[2] ?? ''] ?? 1) * 100) / 100;
215
+ }
216
+ /** Points → twips (1/20 de point), entier. */
217
+ export function pointsToTwips(points) {
218
+ return Math.round(points * 20);
219
+ }
220
+ /** Côtés dans l'ordre de sérialisation du contrat. */
221
+ export const CSS_BORDER_SIDES = ['top', 'right', 'bottom', 'left'];
222
+ /** Mots-clés `border-style` CSS → style du contrat ; les autres (`groove`…) deviennent `solid`. */
223
+ function borderStyleKeyword(word) {
224
+ switch (word) {
225
+ case 'solid':
226
+ case 'groove':
227
+ case 'ridge':
228
+ case 'inset':
229
+ case 'outset':
230
+ return 'solid';
231
+ case 'dashed':
232
+ case 'dotted':
233
+ case 'double':
234
+ return word;
235
+ default:
236
+ return null;
237
+ }
238
+ }
239
+ /** Épaisseurs nommées de `border-width`, en points (valeurs usuelles des navigateurs). */
240
+ const BORDER_WIDTH_KEYWORDS = {
241
+ thin: 0.75,
242
+ medium: 2.25,
243
+ thick: 3.75,
244
+ };
245
+ /**
246
+ * Raccourci `border` / `border-<côté>` CSS (`1pt solid #000000`, dans n'importe quel
247
+ * ordre, couleur `#hex`, `rgb()` ou nom) → bordure, `undefined` si la valeur est illisible,
248
+ * `null` pour `none` / `hidden` / `0` (bordure explicitement absente). Une épaisseur
249
+ * absente vaut `medium`, un style absent `solid`, une couleur absente noir.
250
+ */
251
+ export function parseBorder(value) {
252
+ if (!value)
253
+ return undefined;
254
+ const raw = value.trim().toLowerCase();
255
+ if (raw === '' || raw === 'none' || raw === 'hidden' || raw === '0')
256
+ return null;
257
+ // Les espaces d'un `rgb(r, g, b)` ne séparent pas des mots : on les retire avant la découpe.
258
+ const tokens = raw.replace(/\(\s*([^)]*?)\s*\)/g, (_, inner) => `(${inner.replace(/\s+/g, '')})`);
259
+ let style = null;
260
+ let widthPt = null;
261
+ let color = null;
262
+ for (const token of tokens.split(/\s+/)) {
263
+ const keyword = borderStyleKeyword(token);
264
+ if (keyword) {
265
+ style = keyword;
266
+ continue;
267
+ }
268
+ const named = BORDER_WIDTH_KEYWORDS[token];
269
+ if (named !== undefined) {
270
+ widthPt = named;
271
+ continue;
272
+ }
273
+ const points = parsePoints(token);
274
+ if (points !== null) {
275
+ widthPt = points;
276
+ continue;
277
+ }
278
+ const parsed = parseColor(token);
279
+ if (parsed)
280
+ color = parsed;
281
+ else if (token === 'transparent')
282
+ return null;
283
+ }
284
+ if (widthPt !== null && widthPt <= 0)
285
+ return null;
286
+ if (style === null && widthPt === null && color === null)
287
+ return undefined;
288
+ return { style: style ?? 'solid', widthPt: widthPt ?? 2.25, color: color ?? '000000' };
289
+ }
290
+ /**
291
+ * Bordures d'un `style` inline, côté par côté : raccourci `border` (tous les côtés) puis
292
+ * `border-<côté>`, puis les propriétés longues `border-<côté>-width|style|color` qui
293
+ * complètent ou corrigent. Un côté absent de la map n'est pas déclaré ; `null` le déclare
294
+ * explicitement sans bordure (`border-top: none`).
295
+ */
296
+ export function parseBorders(style) {
297
+ const result = new Map();
298
+ const all = parseBorder(style.get('border'));
299
+ for (const side of CSS_BORDER_SIDES) {
300
+ let border = all;
301
+ const own = parseBorder(style.get(`border-${side}`));
302
+ if (own !== undefined)
303
+ border = own;
304
+ const width = parsePoints(style.get(`border-${side}-width`));
305
+ const styleWord = style.get(`border-${side}-style`)?.trim().toLowerCase();
306
+ const colorValue = parseColor(style.get(`border-${side}-color`));
307
+ if (width !== null || styleWord !== undefined || colorValue) {
308
+ if (styleWord === 'none' || styleWord === 'hidden' || (width !== null && width <= 0)) {
309
+ border = null;
310
+ }
311
+ else {
312
+ const base = border ?? { style: 'solid', widthPt: 2.25, color: '000000' };
313
+ border = {
314
+ style: (styleWord ? borderStyleKeyword(styleWord) : null) ?? base.style,
315
+ widthPt: width ?? base.widthPt,
316
+ color: colorValue ?? base.color,
317
+ };
318
+ }
319
+ }
320
+ if (border !== undefined)
321
+ result.set(side, border);
322
+ }
323
+ return result;
324
+ }
325
+ /**
326
+ * `line-height` CSS → interligne Word : nombre nu ou pourcentage = multiple, longueur
327
+ * absolue = exact. `normal`, `inherit` et les unités relatives sont ignorés.
328
+ */
329
+ export function parseLineHeight(value) {
330
+ if (!value)
331
+ return null;
332
+ const raw = value.trim().toLowerCase();
333
+ if (/^[\d.]+$/.test(raw)) {
334
+ const multiple = Number(raw);
335
+ return Number.isFinite(multiple) && multiple > 0 ? { kind: 'multiple', value: multiple } : null;
336
+ }
337
+ const percent = /^([\d.]+)%$/.exec(raw);
338
+ if (percent) {
339
+ const multiple = Number(percent[1]) / 100;
340
+ return Number.isFinite(multiple) && multiple > 0 ? { kind: 'multiple', value: multiple } : null;
341
+ }
342
+ const points = parsePoints(raw);
343
+ return points !== null && points > 0 ? { kind: 'exact', points } : null;
344
+ }
345
+ /**
346
+ * `padding` CSS (1 à 4 valeurs, règle TRBL) → points `[haut, droite, bas, gauche]`.
347
+ * `null` si une valeur est illisible.
348
+ */
349
+ export function parsePadding(value) {
350
+ if (!value)
351
+ return null;
352
+ const parts = value.trim().split(/\s+/).map(parsePoints);
353
+ if (parts.length === 0 || parts.length > 4 || parts.some((part) => part === null))
354
+ return null;
355
+ const [a = 0, b = a, c = a, d = b] = parts;
356
+ return [a, b, c, d];
357
+ }
358
+ /** Surlignages nommés de Word et la couleur que Word affiche pour chacun. */
359
+ const HIGHLIGHT_NAMES = [
360
+ ['yellow', 'FFFF00'],
361
+ ['green', '00FF00'],
362
+ ['cyan', '00FFFF'],
363
+ ['magenta', 'FF00FF'],
364
+ ['blue', '0000FF'],
365
+ ['red', 'FF0000'],
366
+ ['darkBlue', '000080'],
367
+ ['darkCyan', '008080'],
368
+ ['darkGreen', '008000'],
369
+ ['darkMagenta', '800080'],
370
+ ['darkRed', '800000'],
371
+ ['darkYellow', '808000'],
372
+ ['darkGray', '808080'],
373
+ ['lightGray', 'C0C0C0'],
374
+ ['black', '000000'],
375
+ ['white', 'FFFFFF'],
376
+ ];
377
+ /**
378
+ * Nom de surlignage Word (`w:highlight`) d'une couleur `RRGGBB`, `null` si aucun des seize
379
+ * ne correspond : le fond est alors écrit en `w:shd`, que Word affiche à l'identique.
380
+ */
381
+ export function highlightName(color) {
382
+ const upper = color.toUpperCase();
383
+ return HIGHLIGHT_NAMES.find(([, hex]) => hex === upper)?.[0] ?? null;
384
+ }
191
385
  //# sourceMappingURL=css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"css.js","sourceRoot":"","sources":["../../src/export/css.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../../src/export/css.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ export declare const SILENT_TAGS: readonly string[];
21
21
  export declare const PAGE_BREAK_ATTRIBUTE = "data-page-break";
22
22
  /** Vrai si un conteneur a au moins un enfant élément de bloc. */
23
23
  export declare function hasBlockChild(element: Element): boolean;
24
+ /** Plus grand `xsd:int` (`ST_DecimalNumber` d'OOXML) : Word refuse au-delà. */
25
+ export declare const XSD_INT_MAX = 2147483647;
24
26
  /**
25
27
  * Attribut entier strictement positif (`colspan`, `rowspan`, `start`), `null` sinon.
26
28
  * Borné à `max` quand il est donné : un `colspan="1000000"` ferait allouer autant de
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/export/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AAEH,uGAAuG;AACvG,wBAAgB,SAAS,CACvB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAC7B,GAAG,IAAI,EAAE,SAAS,MAAM,EAAE,GACzB,IAAI,IAAI,OAAO,CAIjB;AAED,yCAAyC;AACzC,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,IAAI,CAElE;AAED,yBAAyB;AACzB,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE9C;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAEzD;AAED,+DAA+D;AAC/D,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAiCvC,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAazC,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAAgD,CAAC;AAE1F,oHAAoH;AACpH,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,SAA0B,GAC5B,MAAM,GAAG,IAAI,CAKf;AAED,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAMvE;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAGvE"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/export/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AAEH,uGAAuG;AACvG,wBAAgB,SAAS,CACvB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAC7B,GAAG,IAAI,EAAE,SAAS,MAAM,EAAE,GACzB,IAAI,IAAI,OAAO,CAIjB;AAED,yCAAyC;AACzC,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,IAAI,CAElE;AAED,yBAAyB;AACzB,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE9C;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAEzD;AAED,+DAA+D;AAC/D,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAiCvC,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAazC,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAAgD,CAAC;AAE1F,oHAAoH;AACpH,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED,+EAA+E;AAC/E,eAAO,MAAM,WAAW,aAAgB,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,SAA0B,GAC5B,MAAM,GAAG,IAAI,CAKf;AAED,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAMvE;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAGvE"}
@@ -80,6 +80,8 @@ export const PAGE_BREAK_ATTRIBUTE = 'data-page-break';
80
80
  export function hasBlockChild(element) {
81
81
  return childElements(element).some((child) => BLOCK_TAGS.includes(tagOf(child)));
82
82
  }
83
+ /** Plus grand `xsd:int` (`ST_DecimalNumber` d'OOXML) : Word refuse au-delà. */
84
+ export const XSD_INT_MAX = 2_147_483_647;
83
85
  /**
84
86
  * Attribut entier strictement positif (`colspan`, `rowspan`, `start`), `null` sinon.
85
87
  * Borné à `max` quand il est donné : un `colspan="1000000"` ferait allouer autant de
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/export/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/export/dom.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,10 @@ export declare const DOCX_MIME_TYPE = "application/vnd.openxmlformats-officedocu
6
6
  * Rend un `Blob` prêt pour `downloadDocx` ou un upload. Ne lève jamais pour du HTML
7
7
  * valide : images inaccessibles et éléments sans équivalent remontent via
8
8
  * `options.onWarning`. La lib `docx` est chargée en import dynamique au premier appel.
9
+ *
10
+ * Avec `options.template`, le corps est greffé dans le gabarit : tout ce qui n'est pas le
11
+ * corps (styles, numérotation, thème, en-têtes, pieds, sections, propriétés) ressort
12
+ * identique à l'octet. Un gabarit illisible replie sur l'export neuf (`template-invalid`).
9
13
  */
10
14
  export declare function exportDocx(input: DocxExportInput, options?: DocxExportOptions): Promise<Blob>;
11
15
  //# sourceMappingURL=export-docx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-docx.d.ts","sourceRoot":"","sources":["../../src/export/export-docx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAElE,0CAA0C;AAC1C,eAAO,MAAM,cAAc,4EACgD,CAAC;AAS5E;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAcf"}
1
+ {"version":3,"file":"export-docx.d.ts","sourceRoot":"","sources":["../../src/export/export-docx.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAqB,MAAM,SAAS,CAAC;AAGrF,0CAA0C;AAC1C,eAAO,MAAM,cAAc,4EACgD,CAAC;AAS5E;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAkEf"}
@@ -1,7 +1,11 @@
1
+ import { graftIntoTemplate } from '../docx/writer/graft';
2
+ import { openTemplate } from '../docx/writer/template';
3
+ import { defaultXmlCodec } from '../docx/writer/xml-io';
1
4
  import { loadDocx } from './docx-module';
2
5
  import { resolveParser } from './dom';
3
6
  import { buildDocx } from './html-to-docx';
4
7
  import { jsonToHtml } from './json-to-html';
8
+ import { resolveVariableSettings } from './variables';
5
9
  /** Type MIME d'un document Word .docx. */
6
10
  export const DOCX_MIME_TYPE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
7
11
  /** HTML de l'entrée : tel quel pour une chaîne, sérialisé pour un JSON ProseMirror. */
@@ -17,19 +21,68 @@ function toHtml(input) {
17
21
  * Rend un `Blob` prêt pour `downloadDocx` ou un upload. Ne lève jamais pour du HTML
18
22
  * valide : images inaccessibles et éléments sans équivalent remontent via
19
23
  * `options.onWarning`. La lib `docx` est chargée en import dynamique au premier appel.
24
+ *
25
+ * Avec `options.template`, le corps est greffé dans le gabarit : tout ce qui n'est pas le
26
+ * corps (styles, numérotation, thème, en-têtes, pieds, sections, propriétés) ressort
27
+ * identique à l'octet. Un gabarit illisible replie sur l'export neuf (`template-invalid`).
20
28
  */
21
29
  export async function exportDocx(input, options = {}) {
22
30
  const html = toHtml(input);
23
31
  const parser = resolveParser(options.parse);
24
32
  const docx = await loadDocx();
25
33
  const dom = parser.parseFromString(`<!doctype html><html><body>${html}</body></html>`, 'text/html');
26
- const { document, warnings } = await buildDocx(dom, docx, options);
34
+ const warnings = [];
35
+ let template = null;
36
+ const codec = options.template === undefined ? null : defaultXmlCodec();
37
+ if (options.template !== undefined && codec) {
38
+ template = await openTemplate(options.template, codec, warnings, {
39
+ readHeadersFooters: Boolean(options.layout?.headers || options.layout?.footers),
40
+ });
41
+ }
42
+ const built = await buildDocx(dom, docx, options, template
43
+ ? {
44
+ template: true,
45
+ styleIds: template.styleIds,
46
+ numbering: template.numbering,
47
+ ...(template.contentWidthPx !== undefined
48
+ ? { contentWidthPx: template.contentWidthPx }
49
+ : {}),
50
+ }
51
+ : { template: false });
52
+ warnings.push(...built.warnings);
53
+ // `toArrayBuffer` plutôt que `toBlob` : JSZip produit l'ArrayBuffer partout (Node, jsdom,
54
+ // navigateur), et `Blob` est global dans les trois. Le résultat est donc identique en test et en prod.
55
+ let buffer = await docx.Packer.toArrayBuffer(built.document);
56
+ if (template && codec) {
57
+ // Les `numId` ne sont attribués qu'à l'empaquetage : on les relit sur le document.
58
+ const concreteNumbering = new Map();
59
+ for (const concrete of built.document.Numbering.ConcreteNumbering) {
60
+ concreteNumbering.set(String(concrete.numId), concrete.reference);
61
+ }
62
+ try {
63
+ buffer = await graftIntoTemplate({
64
+ generated: buffer,
65
+ template,
66
+ lists: built.lists,
67
+ concreteNumbering,
68
+ variables: resolveVariableSettings(options.variables),
69
+ layout: options.layout,
70
+ toc: Boolean(options.toc),
71
+ ...(options.title !== undefined ? { title: options.title } : {}),
72
+ ...(options.creator !== undefined ? { creator: options.creator } : {}),
73
+ codec,
74
+ }, warnings);
75
+ }
76
+ catch (error) {
77
+ warnings.push({
78
+ code: 'template-invalid',
79
+ message: `Greffe dans le gabarit impossible, export neuf à la place : ${error instanceof Error ? error.message : String(error)}`,
80
+ });
81
+ }
82
+ }
27
83
  if (options.onWarning)
28
84
  for (const warning of warnings)
29
85
  options.onWarning(warning);
30
- // `toArrayBuffer` plutôt que `toBlob` : JSZip produit l'ArrayBuffer partout (Node, jsdom,
31
- // navigateur), et `Blob` est global dans les trois. Le résultat est donc identique en test et en prod.
32
- const buffer = await docx.Packer.toArrayBuffer(document);
33
86
  return new Blob([buffer], { type: DOCX_MIME_TYPE });
34
87
  }
35
88
  //# sourceMappingURL=export-docx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-docx.js","sourceRoot":"","sources":["../../src/export/export-docx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,0CAA0C;AAC1C,MAAM,CAAC,MAAM,cAAc,GACzB,yEAAyE,CAAC;AAE5E,uFAAuF;AACvF,SAAS,MAAM,CAAC,KAAsB;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;AACpG,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAsB,EACtB,UAA6B,EAAE;IAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAChC,8BAA8B,IAAI,gBAAgB,EAClD,WAAW,CACZ,CAAC;IACF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,SAAS;QAAE,KAAK,MAAM,OAAO,IAAI,QAAQ;YAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClF,0FAA0F;IAC1F,uGAAuG;IACvG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"export-docx.js","sourceRoot":"","sources":["../../src/export/export-docx.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,23 @@
1
1
  import type { Footer, Header } from 'docx';
2
2
  import type { HtmlParser } from '../docx/types';
3
3
  import type { ExportContext } from './context';
4
- import type { DocxFooterOptions, DocxHeaderOptions } from './types';
4
+ import type { DocxExportOptions, DocxFooterOptions, DocxHeaderOptions } from './types';
5
5
  /** `options.header` → `Header`, `undefined` si rien à afficher. */
6
6
  export declare function buildHeader(option: string | DocxHeaderOptions | undefined, ctx: ExportContext, parse: HtmlParser | undefined): Promise<Header | undefined>;
7
7
  /** `options.footer` → `Footer` avec, en dernier paragraphe, la numérotation demandée. */
8
8
  export declare function buildFooter(option: string | DocxFooterOptions | undefined, ctx: ExportContext, parse: HtmlParser | undefined): Promise<Footer | undefined>;
9
+ /** Jeu d'en-têtes ou de pieds d'une section `docx`, par type de page. */
10
+ export interface HeaderFooterGroup<T> {
11
+ readonly default?: T;
12
+ readonly first?: T;
13
+ readonly even?: T;
14
+ }
15
+ /**
16
+ * En-têtes de la section : `options.header` pour les pages courantes (il prime), sinon
17
+ * `layout.headers.default` ; `first` et `even` viennent du `layout` seul (contrat
18
+ * `HeaderFooterSet`, en général lu par l'import). Vide si rien n'est demandé.
19
+ */
20
+ export declare function buildHeaders(options: DocxExportOptions, ctx: ExportContext): Promise<HeaderFooterGroup<Header>>;
21
+ /** Pieds de la section, mêmes règles que `buildHeaders` (numérotation via `options.footer`). */
22
+ export declare function buildFooters(options: DocxExportOptions, ctx: ExportContext): Promise<HeaderFooterGroup<Footer>>;
9
23
  //# sourceMappingURL=header-footer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"header-footer.d.ts","sourceRoot":"","sources":["../../src/export/header-footer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAoB,MAAM,MAAM,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,KAAK,EAAE,iBAAiB,EAAmB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAiErF,mEAAmE;AACnE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,EAC9C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAI7B;AAED,yFAAyF;AACzF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,EAC9C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B"}
1
+ {"version":3,"file":"header-footer.d.ts","sourceRoot":"","sources":["../../src/export/header-footer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAoB,MAAM,MAAM,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAEjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAiEjB,mEAAmE;AACnE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,EAC9C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAI7B;AAED,yFAAyF;AACzF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,EAC9C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B;AAED,yEAAyE;AACzE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACnB;AAWD;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAQpC;AAED,gGAAgG;AAChG,wBAAsB,YAAY,CAChC,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAQpC"}