@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,9 +1,43 @@
1
- import type { ICharacterStyleOptions, INumberingOptions, IParagraphStyleOptions, IStylesOptions } from 'docx';
1
+ import type { IBorderOptions, ICharacterStyleOptions, INumberingOptions, IParagraphStyleOptions, IStylesOptions } from 'docx';
2
2
  import type { ListDefinition } from './context';
3
+ import { type CssBorder } from './css';
3
4
  import type { DocxModule } from './docx-module';
4
5
  import type { DocxExportOptions, DocxExportWarning, DocxNumberedHeadingsOptions, DocxPageOrientation, DocxPageSize } from './types';
5
6
  /** Police à chasse fixe des blocs et marques de code. */
6
7
  export declare const CODE_FONT = "Consolas";
8
+ /** Attribut du style Word d'origine d'un bloc ou d'un tableau (contrat `docxStyle`). */
9
+ export declare const DOCX_STYLE_ATTRIBUTE = "data-docx-style";
10
+ /** Attribut de la numérotation Word d'origine d'une liste (`ListLayoutAttrs.docxNumId`). */
11
+ export declare const DOCX_NUM_ID_ATTRIBUTE = "data-docx-num-id";
12
+ /**
13
+ * Posé par l'import sur un paragraphe de liste dont `margin-left` / `text-indent` viennent
14
+ * du niveau de numérotation : la numérotation Word les porte déjà, on ne les réécrit pas.
15
+ */
16
+ export declare const NUM_INDENT_ATTRIBUTE = "data-docx-num-indent";
17
+ /**
18
+ * Espace texte-trait (`w:space`, en points) d'une bordure de paragraphe. Le contrat
19
+ * `BlockBorder` ne le porte pas et l'import ne le lit pas : on reprend la valeur que Word
20
+ * écrit lui-même. Par défaut **1 pt** sur chaque côté : c'est ce que Word donne à un
21
+ * encadré (bordure haute ou basse présente, fixture 12 : quatre côtés à `w:space="1"`),
22
+ * et un filet horizontal seul en a autant. Seul un filet vertical **seul** (barre de
23
+ * citation à gauche ou à droite, sans bordure haute ni basse) prend les **4 pt** du
24
+ * réglage par défaut de Word pour ce cas, faute d'original connu. `sides` est l'ensemble
25
+ * des côtés bordés du paragraphe.
26
+ */
27
+ export declare function paragraphBorderSpace(side: string, sides: ReadonlySet<string>): number;
28
+ /**
29
+ * Bordure CSS → `IBorderOptions` : épaisseur en huitièmes de point, couleur `RRGGBB`,
30
+ * espace texte-trait selon `paragraphBorderSpace` (`sides` = côtés bordés du bloc ; pour
31
+ * une cellule, un ensemble vide donne 1 pt partout). Le style `solid` du contrat est le
32
+ * `single` de Word.
33
+ */
34
+ export declare function borderOptions(border: CssBorder, side: string, sides?: ReadonlySet<string>): IBorderOptions;
35
+ /**
36
+ * Identifiants des styles que l'export neuf définit toujours (ceux de `docx` plus ceux
37
+ * d'Aster) : un `data-docx-style` hors de cette liste n'est écrit que si le gabarit le
38
+ * définit. `TOCHeading` s'y ajoute avec une table des matières.
39
+ */
40
+ export declare const GENERATED_STYLE_IDS: readonly string[];
7
41
  /** Profondeur de liste couverte par chaque numérotation (Word en accepte 9). */
8
42
  export declare const LIST_LEVELS = 9;
9
43
  /** Retrait gauche d'un niveau de liste, en twips (720 = 1,27 cm). */
@@ -46,9 +80,12 @@ export declare function resolveHeadingNumbering(option: boolean | DocxNumberedHe
46
80
  * le format à chaque niveau (`%1.`, `%2.`…) pour rester lisibles dans Word. Le `start`
47
81
  * de la liste est posé sur le niveau qu'elle occupe ; `docx` le recopie en
48
82
  * `startOverride` de l'instance quand c'est le niveau 0. S'y ajoute la numérotation
49
- * des titres, dont chaque niveau est lié au style `Heading n` (`w:pStyle`).
83
+ * des titres, dont chaque niveau est lié au style `Heading n` (`w:pStyle`) en export
84
+ * neuf ; en export dans le gabarit (`linkHeadingStyles` faux), les styles du gabarit ne
85
+ * sont pas modifiés et ses identifiants peuvent différer : les niveaux ne sont liés à
86
+ * aucun style, chaque titre porte sa numérotation en `w:numPr` direct.
50
87
  */
51
- export declare function buildNumbering(docx: DocxModule, lists: readonly ListDefinition[], headings?: HeadingNumbering | null): INumberingOptions;
88
+ export declare function buildNumbering(docx: DocxModule, lists: readonly ListDefinition[], headings?: HeadingNumbering | null, linkHeadingStyles?: boolean): INumberingOptions;
52
89
  /**
53
90
  * Styles de paragraphe : `Quote` (citation, italique indentée), `HTMLPreformatted`
54
91
  * (bloc de code, Consolas) et, avec une table des matières, `TOC Heading` pour son
@@ -85,19 +122,26 @@ export interface PageMargins {
85
122
  }
86
123
  /** Mise en page résolue : dimensions portrait (docx les inverse lui-même en paysage), marges, largeur utile. */
87
124
  export interface PageLayout extends PageDimensions {
125
+ /** Format nommé de l'option, `A4` pour un format du contrat (`A3`, `Legal`, libre…). */
88
126
  readonly size: DocxPageSize;
89
127
  readonly orientation: DocxPageOrientation;
90
128
  readonly margins: PageMargins;
129
+ /** Distance du bord à l'en-tête et au pied, en twips (708 par défaut, comme Word). */
130
+ readonly headerDistance: number;
131
+ readonly footerDistance: number;
91
132
  /** Largeur utile en pixels à 96 dpi, plafond des images et des tables. */
92
133
  readonly contentWidthPx: number;
93
134
  }
135
+ /** Distance par défaut du bord de page à l'en-tête ou au pied, en twips (1,25 cm). */
136
+ export declare const HEADER_DISTANCE = 708;
94
137
  /** Zone utile minimale laissée par les marges, en twips (1 cm), dans chaque sens. */
95
138
  export declare const MIN_CONTENT_EXTENT: number;
96
139
  /**
97
- * `options.page` (et `pageSize` en repli) → mise en page. En paysage, la largeur utile
98
- * est celle du grand côté : `docx` inverse `w:w`/`w:h` quand `w:orient="landscape"`,
99
- * on lui donne donc toujours les dimensions portrait. Les marges invalides ou qui ne
100
- * laissent pas 1 cm utile sont corrigées et signalées dans `warnings`.
140
+ * `options.page` (et `pageSize` en repli), complété champ par champ par `options.layout`
141
+ * (contrat `DocumentLayout`, en général celui de l'import) → mise en page. En paysage, la
142
+ * largeur utile est celle du grand côté : `docx` inverse `w:w`/`w:h` quand
143
+ * `w:orient="landscape"`, on lui donne donc toujours les dimensions portrait. Les marges
144
+ * invalides ou qui ne laissent pas 1 cm utile sont corrigées et signalées dans `warnings`.
101
145
  */
102
146
  export declare function resolvePageLayout(options: DocxExportOptions, warnings?: DocxExportWarning[]): PageLayout;
103
147
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/export/styles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/export/styles.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,71 @@ import { parseColor } from './css';
2
2
  import { sanitizeXmlText } from './sanitize';
3
3
  /** Police à chasse fixe des blocs et marques de code. */
4
4
  export const CODE_FONT = 'Consolas';
5
+ /** Attribut du style Word d'origine d'un bloc ou d'un tableau (contrat `docxStyle`). */
6
+ export const DOCX_STYLE_ATTRIBUTE = 'data-docx-style';
7
+ /** Attribut de la numérotation Word d'origine d'une liste (`ListLayoutAttrs.docxNumId`). */
8
+ export const DOCX_NUM_ID_ATTRIBUTE = 'data-docx-num-id';
9
+ /**
10
+ * Posé par l'import sur un paragraphe de liste dont `margin-left` / `text-indent` viennent
11
+ * du niveau de numérotation : la numérotation Word les porte déjà, on ne les réécrit pas.
12
+ */
13
+ export const NUM_INDENT_ATTRIBUTE = 'data-docx-num-indent';
14
+ /**
15
+ * Espace texte-trait (`w:space`, en points) d'une bordure de paragraphe. Le contrat
16
+ * `BlockBorder` ne le porte pas et l'import ne le lit pas : on reprend la valeur que Word
17
+ * écrit lui-même. Par défaut **1 pt** sur chaque côté : c'est ce que Word donne à un
18
+ * encadré (bordure haute ou basse présente, fixture 12 : quatre côtés à `w:space="1"`),
19
+ * et un filet horizontal seul en a autant. Seul un filet vertical **seul** (barre de
20
+ * citation à gauche ou à droite, sans bordure haute ni basse) prend les **4 pt** du
21
+ * réglage par défaut de Word pour ce cas, faute d'original connu. `sides` est l'ensemble
22
+ * des côtés bordés du paragraphe.
23
+ */
24
+ export function paragraphBorderSpace(side, sides) {
25
+ const vertical = side === 'left' || side === 'right';
26
+ return vertical && !sides.has('top') && !sides.has('bottom') ? 4 : 1;
27
+ }
28
+ /**
29
+ * Bordure CSS → `IBorderOptions` : épaisseur en huitièmes de point, couleur `RRGGBB`,
30
+ * espace texte-trait selon `paragraphBorderSpace` (`sides` = côtés bordés du bloc ; pour
31
+ * une cellule, un ensemble vide donne 1 pt partout). Le style `solid` du contrat est le
32
+ * `single` de Word.
33
+ */
34
+ export function borderOptions(border, side, sides = new Set()) {
35
+ return {
36
+ style: border.style === 'solid' ? 'single' : border.style,
37
+ size: Math.max(2, Math.round(border.widthPt * 8)),
38
+ color: border.color,
39
+ space: paragraphBorderSpace(side, sides),
40
+ };
41
+ }
42
+ /**
43
+ * Identifiants des styles que l'export neuf définit toujours (ceux de `docx` plus ceux
44
+ * d'Aster) : un `data-docx-style` hors de cette liste n'est écrit que si le gabarit le
45
+ * définit. `TOCHeading` s'y ajoute avec une table des matières.
46
+ */
47
+ export const GENERATED_STYLE_IDS = [
48
+ 'Normal',
49
+ 'Title',
50
+ 'Heading1',
51
+ 'Heading2',
52
+ 'Heading3',
53
+ 'Heading4',
54
+ 'Heading5',
55
+ 'Heading6',
56
+ 'Strong',
57
+ 'ListParagraph',
58
+ 'Hyperlink',
59
+ 'FootnoteReference',
60
+ 'FootnoteText',
61
+ 'FootnoteTextChar',
62
+ 'EndnoteReference',
63
+ 'EndnoteText',
64
+ 'EndnoteTextChar',
65
+ 'TableNormal',
66
+ 'Quote',
67
+ 'HTMLPreformatted',
68
+ 'Code',
69
+ ];
5
70
  /** Profondeur de liste couverte par chaque numérotation (Word en accepte 9). */
6
71
  export const LIST_LEVELS = 9;
7
72
  /** Retrait gauche d'un niveau de liste, en twips (720 = 1,27 cm). */
@@ -71,9 +136,12 @@ function headingLevelText(level, format) {
71
136
  * le format à chaque niveau (`%1.`, `%2.`…) pour rester lisibles dans Word. Le `start`
72
137
  * de la liste est posé sur le niveau qu'elle occupe ; `docx` le recopie en
73
138
  * `startOverride` de l'instance quand c'est le niveau 0. S'y ajoute la numérotation
74
- * des titres, dont chaque niveau est lié au style `Heading n` (`w:pStyle`).
139
+ * des titres, dont chaque niveau est lié au style `Heading n` (`w:pStyle`) en export
140
+ * neuf ; en export dans le gabarit (`linkHeadingStyles` faux), les styles du gabarit ne
141
+ * sont pas modifiés et ses identifiants peuvent différer : les niveaux ne sont liés à
142
+ * aucun style, chaque titre porte sa numérotation en `w:numPr` direct.
75
143
  */
76
- export function buildNumbering(docx, lists, headings = null) {
144
+ export function buildNumbering(docx, lists, headings = null, linkHeadingStyles = true) {
77
145
  const { AlignmentType, LevelFormat } = docx;
78
146
  const formats = {
79
147
  bullet: LevelFormat.BULLET,
@@ -108,7 +176,7 @@ export function buildNumbering(docx, lists, headings = null) {
108
176
  text: headingLevelText(level, headings.format),
109
177
  alignment: AlignmentType.LEFT,
110
178
  ...(headings.format === 'legal' ? { isLegalNumberingStyle: true } : {}),
111
- style: { style: `Heading${String(level + 1)}` },
179
+ ...(linkHeadingStyles ? { style: { style: `Heading${String(level + 1)}` } } : {}),
112
180
  })),
113
181
  });
114
182
  }
@@ -210,13 +278,16 @@ function headingRun(defaults, override) {
210
278
  export function buildDefaultStyles(options, headings) {
211
279
  const defaults = {};
212
280
  const run = {};
213
- if (options.defaultFont?.family)
214
- run.font = sanitizeXmlText(options.defaultFont.family);
215
- const sizePt = options.defaultFont?.sizePt;
281
+ // Les options explicites priment champ par champ sur `layout` (export neuf).
282
+ const family = options.defaultFont?.family ?? options.layout?.defaultFont?.family;
283
+ if (family)
284
+ run.font = sanitizeXmlText(family);
285
+ const sizePt = options.defaultFont?.sizePt ?? options.layout?.defaultFont?.sizePt;
216
286
  if (sizePt !== undefined && sizePt > 0)
217
287
  run.size = Math.round(sizePt * 2);
218
- if (options.lang)
219
- run.language = { value: sanitizeXmlText(options.lang) };
288
+ const lang = options.lang ?? options.layout?.lang;
289
+ if (lang)
290
+ run.language = { value: sanitizeXmlText(lang) };
220
291
  if (Object.keys(run).length > 0)
221
292
  defaults.document = { run };
222
293
  HEADING_STYLE_KEYS.forEach((key, index) => {
@@ -237,12 +308,34 @@ export function buildDefaultStyles(options, headings) {
237
308
  export function pageDimensions(size) {
238
309
  return size === 'LETTER' ? { width: 12240, height: 15840 } : { width: 11906, height: 16838 };
239
310
  }
311
+ /** Formats nommés du contrat de mise en page (`PageSizeName`), en twips portrait. */
312
+ const NAMED_PAGE_SIZES = {
313
+ A3: { width: 16838, height: 23811 },
314
+ A4: { width: 11906, height: 16838 },
315
+ A5: { width: 8391, height: 11906 },
316
+ Letter: { width: 12240, height: 15840 },
317
+ Legal: { width: 12240, height: 20160 },
318
+ };
319
+ /** `DocumentLayout.page.size` → dimensions portrait en twips, `null` si absent ou invalide. */
320
+ function layoutPageDimensions(size) {
321
+ if (size === undefined)
322
+ return null;
323
+ if (typeof size === 'string')
324
+ return NAMED_PAGE_SIZES[size] ?? null;
325
+ const { widthMm, heightMm } = size;
326
+ if (!Number.isFinite(widthMm) || !Number.isFinite(heightMm) || widthMm <= 0 || heightMm <= 0) {
327
+ return null;
328
+ }
329
+ return { width: mmToTwips(widthMm), height: mmToTwips(heightMm) };
330
+ }
240
331
  /** Marge de page par défaut (1 pouce), en twips. */
241
332
  export const PAGE_MARGIN = 1440;
242
333
  /** Millimètres → twips (1 pouce = 25,4 mm = 1440 twips). */
243
334
  export function mmToTwips(mm) {
244
335
  return Math.round((mm * 1440) / 25.4);
245
336
  }
337
+ /** Distance par défaut du bord de page à l'en-tête ou au pied, en twips (1,25 cm). */
338
+ export const HEADER_DISTANCE = 708;
246
339
  /** Zone utile minimale laissée par les marges, en twips (1 cm), dans chaque sens. */
247
340
  export const MIN_CONTENT_EXTENT = mmToTwips(10);
248
341
  /**
@@ -279,21 +372,31 @@ function clampMargins(first, second, extent, axis, warnings) {
279
372
  });
280
373
  return [Math.floor(first * scale), Math.floor(second * scale)];
281
374
  }
375
+ /** Distance d'en-tête ou de pied en twips depuis `layout.page.margins`, défaut si absente ou invalide. */
376
+ function distanceTwips(mm) {
377
+ if (mm === undefined || !Number.isFinite(mm) || mm < 0)
378
+ return HEADER_DISTANCE;
379
+ return mmToTwips(mm);
380
+ }
282
381
  /**
283
- * `options.page` (et `pageSize` en repli) → mise en page. En paysage, la largeur utile
284
- * est celle du grand côté : `docx` inverse `w:w`/`w:h` quand `w:orient="landscape"`,
285
- * on lui donne donc toujours les dimensions portrait. Les marges invalides ou qui ne
286
- * laissent pas 1 cm utile sont corrigées et signalées dans `warnings`.
382
+ * `options.page` (et `pageSize` en repli), complété champ par champ par `options.layout`
383
+ * (contrat `DocumentLayout`, en général celui de l'import) → mise en page. En paysage, la
384
+ * largeur utile est celle du grand côté : `docx` inverse `w:w`/`w:h` quand
385
+ * `w:orient="landscape"`, on lui donne donc toujours les dimensions portrait. Les marges
386
+ * invalides ou qui ne laissent pas 1 cm utile sont corrigées et signalées dans `warnings`.
287
387
  */
288
388
  export function resolvePageLayout(options, warnings = []) {
389
+ const page = options.layout?.page;
289
390
  const size = options.page?.size ?? options.pageSize ?? 'A4';
290
- const orientation = options.page?.orientation ?? 'portrait';
291
- const { width, height } = pageDimensions(size);
391
+ const fromLayout = options.page?.size || options.pageSize ? null : layoutPageDimensions(page?.size);
392
+ const orientation = options.page?.orientation ?? page?.orientation ?? 'portrait';
393
+ const { width, height } = fromLayout ?? pageDimensions(size);
292
394
  const horizontal = orientation === 'landscape' ? height : width;
293
395
  const vertical = orientation === 'landscape' ? width : height;
294
396
  const requested = options.page?.margins;
295
- const [left, right] = clampMargins(marginTwips('left', requested?.left, warnings), marginTwips('right', requested?.right, warnings), horizontal, 'gauche + droite', warnings);
296
- const [top, bottom] = clampMargins(marginTwips('top', requested?.top, warnings), marginTwips('bottom', requested?.bottom, warnings), vertical, 'haut + bas', warnings);
397
+ const layoutMargins = page?.margins;
398
+ const [left, right] = clampMargins(marginTwips('left', requested?.left ?? layoutMargins?.leftMm, warnings), marginTwips('right', requested?.right ?? layoutMargins?.rightMm, warnings), horizontal, 'gauche + droite', warnings);
399
+ const [top, bottom] = clampMargins(marginTwips('top', requested?.top ?? layoutMargins?.topMm, warnings), marginTwips('bottom', requested?.bottom ?? layoutMargins?.bottomMm, warnings), vertical, 'haut + bas', warnings);
297
400
  const margins = { top, right, bottom, left };
298
401
  const usable = horizontal - margins.left - margins.right;
299
402
  return {
@@ -302,6 +405,8 @@ export function resolvePageLayout(options, warnings = []) {
302
405
  width,
303
406
  height,
304
407
  margins,
408
+ headerDistance: distanceTwips(layoutMargins?.headerMm),
409
+ footerDistance: distanceTwips(layoutMargins?.footerMm),
305
410
  contentWidthPx: Math.max(1, Math.floor((usable / 1440) * 96)),
306
411
  };
307
412
  }
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/export/styles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/export/styles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/export/tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAIT,KAAK,EAEN,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAIrD,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,iFAAiF;AACjF,eAAO,MAAM,YAAY,QAAS,CAAC;AAmBnC,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,CAC9B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAmM1B;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,KAAK,CAAC,CAmChB"}
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/export/tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAQT,KAAK,EAEN,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAgBvE,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,iFAAiF;AACjF,eAAO,MAAM,YAAY,QAAS,CAAC;AAmBnC,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,CAC9B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAqU1B;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,KAAK,CAAC,CA+DhB"}
@@ -1,6 +1,7 @@
1
- import { warn } from './context';
2
- import { parsePixels, parseStyle } from './css';
1
+ import { resolveDocxStyle, warn } from './context';
2
+ import { CSS_BORDER_SIDES, parseBorders, parseColor, parsePadding, parsePixels, parsePoints, parseStyle, pointsToTwips, } from './css';
3
3
  import { childElements, positiveIntAttribute, tagOf } from './dom';
4
+ import { DOCX_STYLE_ATTRIBUTE, borderOptions } from './styles';
4
5
  /** Nombre maximal de colonnes d'une table Word : plafond de `colspan` et de `<col span>`. */
5
6
  export const MAX_TABLE_COLUMNS = 63;
6
7
  /** Nombre maximal de lignes qu'une fusion verticale peut couvrir (`rowspan`). */
@@ -134,21 +135,77 @@ function analyzeGrid(table, rows, ctx) {
134
135
  * table déborderait de la zone de texte. `null` si une colonne au moins est inconnue :
135
136
  * la table reste alors à 100 % et seules les cellules connues portent une largeur.
136
137
  */
137
- function columnWidthsTwips(columns, ctx) {
138
+ function columnWidthsTwips(columns, ctx, fitToPage) {
138
139
  if (columns.length === 0 || columns.some((width) => width === null))
139
140
  return null;
140
141
  const px = columns.map((width) => width ?? 0);
141
142
  const total = px.reduce((sum, width) => sum + width, 0);
142
- const scale = total > ctx.maxImageWidth ? ctx.maxImageWidth / total : 1;
143
+ const scale = fitToPage && total > ctx.maxImageWidth ? ctx.maxImageWidth / total : 1;
143
144
  return px.map((width) => Math.max(1, Math.round(width * scale * TWIPS_PER_PX)));
144
145
  }
146
+ /** Bordure Word explicitement absente (`w:val="nil"`). */
147
+ const NO_BORDER = { style: 'nil' };
148
+ /** Bordure de cellule ou de tableau : CSS → `docx`, `nil` pour un côté déclaré sans trait. */
149
+ function tableBorder(border, side) {
150
+ return border ? borderOptions(border, side) : NO_BORDER;
151
+ }
152
+ /**
153
+ * Propriétés de cellule du contrat (`CellLayoutAttrs`, en `style` inline) : bordures par
154
+ * côté (`w:tcBorders`), fond (`w:shd`), alignement vertical (`w:vAlign`), marges internes
155
+ * (`w:tcMar`, `padding` en points). En mode explicite (tableau venu de l'import), le HTML
156
+ * fait foi : un côté intérieur non déclaré est écrit `nil`, pour qu'un style de tableau du
157
+ * gabarit ne le redessine pas ; les bords extérieurs restent ceux du tableau.
158
+ */
159
+ function cellLayout(cell, ctx, explicit, edges) {
160
+ const style = parseStyle(cell.getAttribute('style'));
161
+ const result = {};
162
+ const borders = {};
163
+ const declared = parseBorders(style);
164
+ for (const side of CSS_BORDER_SIDES) {
165
+ const border = declared.get(side);
166
+ if (border !== undefined)
167
+ borders[side] = tableBorder(border, side);
168
+ else if (explicit && !edges[side])
169
+ borders[side] = NO_BORDER;
170
+ }
171
+ if (Object.keys(borders).length > 0)
172
+ result.borders = borders;
173
+ const shading = parseColor(style.get('background-color'));
174
+ if (shading)
175
+ result.shading = { fill: shading, type: 'clear', color: 'auto' };
176
+ switch (style.get('vertical-align')?.trim().toLowerCase()) {
177
+ case 'top':
178
+ result.verticalAlign = ctx.docx.VerticalAlignTable.TOP;
179
+ break;
180
+ case 'middle':
181
+ result.verticalAlign = ctx.docx.VerticalAlignTable.CENTER;
182
+ break;
183
+ case 'bottom':
184
+ result.verticalAlign = ctx.docx.VerticalAlignTable.BOTTOM;
185
+ break;
186
+ default:
187
+ break;
188
+ }
189
+ const padding = parsePadding(style.get('padding'));
190
+ if (padding) {
191
+ const [top, right, bottom, left] = padding;
192
+ result.margins = {
193
+ marginUnitType: ctx.docx.WidthType.DXA,
194
+ top: pointsToTwips(top),
195
+ right: pointsToTwips(right),
196
+ bottom: pointsToTwips(bottom),
197
+ left: pointsToTwips(left),
198
+ };
199
+ }
200
+ return result;
201
+ }
145
202
  /**
146
203
  * `<td>`/`<th>` → `TableCell`. Les en-têtes sont en gras, `colspan`/`rowspan` deviennent
147
204
  * `columnSpan`/`rowSpan` (docx génère lui-même les cellules de continuation verticale).
148
205
  * Une cellule contient toujours au moins un paragraphe, exigence de Word. La largeur
149
206
  * (DXA) est la somme des colonnes couvertes quand elles sont connues.
150
207
  */
151
- async function convertCell(cell, position, width, scope, ctx, convert) {
208
+ async function convertCell(cell, position, width, scope, ctx, convert, explicit, edges) {
152
209
  const header = tagOf(cell) === 'th';
153
210
  const cellScope = {
154
211
  quote: false,
@@ -167,9 +224,53 @@ async function convertCell(cell, position, width, scope, ctx, convert) {
167
224
  ...(columnSpan > 1 ? { columnSpan } : {}),
168
225
  ...(rowSpan > 1 ? { rowSpan } : {}),
169
226
  ...(width !== null ? { width: { size: width, type: ctx.docx.WidthType.DXA } } : {}),
227
+ ...cellLayout(cell, ctx, explicit, edges),
170
228
  };
171
229
  return new ctx.docx.TableCell(options);
172
230
  }
231
+ /**
232
+ * Largeur déclarée du tableau (`TableLayoutAttrs.width` : `100%` ou `450pt`), `null` sans
233
+ * déclaration lisible.
234
+ */
235
+ function declaredTableWidth(style, ctx) {
236
+ const raw = style.get('width')?.trim();
237
+ if (!raw)
238
+ return null;
239
+ const percent = /^([\d.]+)%$/.exec(raw);
240
+ if (percent) {
241
+ const value = Number(percent[1]);
242
+ return Number.isFinite(value) && value > 0
243
+ ? { size: Math.min(100, value), type: ctx.docx.WidthType.PERCENTAGE }
244
+ : null;
245
+ }
246
+ const points = parsePoints(raw);
247
+ return points !== null && points > 0
248
+ ? { size: pointsToTwips(points), type: ctx.docx.WidthType.DXA }
249
+ : null;
250
+ }
251
+ /** Vrai si un `<td>`/`<th>` du tableau déclare une bordure dans son `style`. */
252
+ function anyCellDeclaresBorders(rows) {
253
+ return rows.some(({ cells }) => cells.some((cell) => parseBorders(parseStyle(cell.getAttribute('style'))).size > 0));
254
+ }
255
+ /**
256
+ * Bordures du tableau. Un tableau qui vient de l'éditeur sans aucune bordure déclarée
257
+ * garde le quadrillage simple de `docx` (lisible dans Word). Dès qu'une bordure est
258
+ * déclarée (sur `<table>` ou une cellule) ou qu'un style Word est référencé, le contrat
259
+ * fait foi : côtés extérieurs tels que déclarés, `nil` sinon, et aucun trait intérieur au
260
+ * niveau du tableau (les cellules portent les leurs).
261
+ */
262
+ function tableBorders(style, explicit) {
263
+ const declared = parseBorders(style);
264
+ if (!explicit && declared.size === 0)
265
+ return undefined;
266
+ const borders = {
267
+ insideHorizontal: NO_BORDER,
268
+ insideVertical: NO_BORDER,
269
+ };
270
+ for (const side of CSS_BORDER_SIDES)
271
+ borders[side] = tableBorder(declared.get(side) ?? null, side);
272
+ return borders;
273
+ }
173
274
  /** Largeur en twips d'une cellule à partir des colonnes qu'elle couvre, `null` si l'une est inconnue. */
174
275
  function cellWidthTwips(position, columns, twips, ctx) {
175
276
  if (!position)
@@ -195,14 +296,27 @@ export async function convertTable(table, scope, ctx, convert) {
195
296
  const { Table, TableLayoutType, TableRow, WidthType } = ctx.docx;
196
297
  const rowInfos = collectRows(table);
197
298
  const grid = analyzeGrid(table, rowInfos, ctx);
198
- const twips = columnWidthsTwips(grid.columns, ctx);
299
+ const style = parseStyle(table.getAttribute('style'));
300
+ const tableStyle = resolveDocxStyle(ctx, table.getAttribute(DOCX_STYLE_ATTRIBUTE), 'tableau');
301
+ const declaredWidth = declaredTableWidth(style, ctx);
302
+ // Une largeur déclarée vient du document (contrat) : sa grille est reprise telle quelle.
303
+ const twips = columnWidthsTwips(grid.columns, ctx, declaredWidth === null);
304
+ const explicit = tableStyle !== null || parseBorders(style).size > 0 || anyCellDeclaresBorders(rowInfos);
305
+ const borders = tableBorders(style, explicit);
199
306
  const rows = [];
200
- for (const { header, cells: cellElements } of rowInfos) {
307
+ for (const [rowIndex, { header, cells: cellElements }] of rowInfos.entries()) {
201
308
  const cells = [];
202
309
  for (const cell of cellElements) {
203
310
  const position = grid.positions.get(cell);
204
311
  const width = cellWidthTwips(position, grid.columns, twips, ctx);
205
- cells.push(await convertCell(cell, position, width, scope, ctx, convert));
312
+ const rowSpan = positiveIntAttribute(cell, 'rowspan', MAX_ROW_SPAN) ?? 1;
313
+ const edges = {
314
+ top: rowIndex === 0,
315
+ bottom: rowIndex + rowSpan >= rowInfos.length,
316
+ left: (position?.column ?? 0) === 0,
317
+ right: position === undefined || position.column + position.span >= grid.columns.length,
318
+ };
319
+ cells.push(await convertCell(cell, position, width, scope, ctx, convert, explicit, edges));
206
320
  }
207
321
  // `tableHeader` seulement quand vrai : mammoth lit la présence de `w:tblHeader`, pas sa valeur.
208
322
  const isHeader = header || isAllHeaderCells(cellElements);
@@ -215,14 +329,28 @@ export async function convertTable(table, scope, ctx, convert) {
215
329
  ],
216
330
  }));
217
331
  }
218
- const options = twips
332
+ // Largeur déclarée d'abord ; en mode explicite sans déclaration, `auto` (le tableau
333
+ // d'origine n'en avait pas) ; sinon la grille connue (disposition fixe) ou 100 %.
334
+ const fallbackWidth = explicit
335
+ ? { size: 0, type: WidthType.AUTO }
336
+ : null;
337
+ const sized = twips
219
338
  ? {
220
339
  rows,
221
- width: { size: twips.reduce((sum, width) => sum + width, 0), type: WidthType.DXA },
340
+ width: declaredWidth ??
341
+ fallbackWidth ?? {
342
+ size: twips.reduce((sum, width) => sum + width, 0),
343
+ type: WidthType.DXA,
344
+ },
222
345
  columnWidths: twips,
223
- layout: TableLayoutType.FIXED,
346
+ ...(declaredWidth || fallbackWidth ? {} : { layout: TableLayoutType.FIXED }),
224
347
  }
225
- : { rows, width: { size: 100, type: WidthType.PERCENTAGE } };
348
+ : { rows, width: declaredWidth ?? fallbackWidth ?? { size: 100, type: WidthType.PERCENTAGE } };
349
+ const options = {
350
+ ...sized,
351
+ ...(tableStyle ? { style: tableStyle } : {}),
352
+ ...(borders ? { borders } : {}),
353
+ };
226
354
  return new Table(options);
227
355
  }
228
356
  //# sourceMappingURL=tables.js.map