@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/docx/reader/tables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ConverterContext, DocxPackage, StyleResolver } from './types';
2
+ /** Parse une chaîne XML en `Document`, comme le lecteur le fait (jamais `text/html`). */
3
+ export declare function parseXml(xml: string): Document;
4
+ /** Enveloppe un fragment WordprocessingML (`<w:p>…</w:p>`) et retourne son premier élément. */
5
+ export declare function fragment(xml: string): Element;
6
+ /** Un `w:p` parsé depuis son contenu inline (et un `w:pPr` optionnel). */
7
+ export declare function paragraphOf(inline: string, pPr?: string): Element;
8
+ /** `w:pPr` parsé, prêt pour `styles.paragraph(pPr)`. */
9
+ export declare function pPrOf(inner: string): Element;
10
+ /** `w:rPr` parsé, prêt pour `styles.run(rPr, paragraph)`. */
11
+ export declare function rPrOf(inner: string): Element;
12
+ /** `styles.xml` complet à partir de `docDefaults` et d'une liste de `w:style`. */
13
+ export declare function stylesXml(styles: string, docDefaults?: string): string;
14
+ /** `theme1.xml` minimal avec les polices majeure et mineure. */
15
+ export declare function themeXml(major: string, minor: string): string;
16
+ /** Relations `document.xml.rels` à partir de `{ rId: [type, target, external?] }`. */
17
+ export declare function relsXml(rels: Readonly<Record<string, readonly [string, string, boolean?]>>): string;
18
+ /**
19
+ * Paquet en mémoire : `parts` associe un chemin zip à son XML. Les relations sont lues
20
+ * dans `word/_rels/document.xml.rels` comme le vrai paquet, sans archive.
21
+ */
22
+ export declare function fakePackage(parts: Readonly<Record<string, string>>): DocxPackage;
23
+ /** Modules voisins factices : images → `<img data-test>`, notes → `<sup>`, listes → aucune. */
24
+ export declare function createTestContext(styles: StyleResolver, pkg: DocxPackage, patch?: Partial<ConverterContext>): ConverterContext;
25
+ //# sourceMappingURL=test-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-support.d.ts","sourceRoot":"","sources":["../../../src/docx/reader/test-support.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,gBAAgB,EAChB,WAAW,EAGX,aAAa,EAEd,MAAM,SAAS,CAAC;AAUjB,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAE9C;AAED,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO7C;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,OAAO,CAE7D;AAED,wDAAwD;AACxD,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,6DAA6D;AAC7D,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,MAAM,CAMlE;AAED,gEAAgE;AAChE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED,sFAAsF;AACtF,wBAAgB,OAAO,CACrB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAClE,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,WAAW,CAuChF;AAED,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,WAAW,EAChB,KAAK,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACpC,gBAAgB,CAgClB"}
@@ -0,0 +1,135 @@
1
+ import { W_NS } from '../preprocess/minimal-docx';
2
+ import { childNamed } from '../preprocess/xml-utils';
3
+ import { relsPathOf, resolveTarget } from './package';
4
+ /**
5
+ * Harnais des specs du lecteur (L24) : paquet en mémoire à partir de chaînes XML,
6
+ * fragments Word parsés en `application/xml`, contexte de conversion avec des modules
7
+ * voisins factices. Aucune utilité en production.
8
+ */
9
+ const R_NS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
10
+ /** Parse une chaîne XML en `Document`, comme le lecteur le fait (jamais `text/html`). */
11
+ export function parseXml(xml) {
12
+ return new DOMParser().parseFromString(xml, 'application/xml');
13
+ }
14
+ /** Enveloppe un fragment WordprocessingML (`<w:p>…</w:p>`) et retourne son premier élément. */
15
+ export function fragment(xml) {
16
+ const doc = parseXml(`<w:root xmlns:w="${W_NS}" xmlns:r="${R_NS}" xmlns:xml="http://www.w3.org/XML/1998/namespace">${xml}</w:root>`);
17
+ const first = doc.documentElement.firstElementChild;
18
+ if (!first)
19
+ throw new Error('fragment vide');
20
+ return first;
21
+ }
22
+ /** Un `w:p` parsé depuis son contenu inline (et un `w:pPr` optionnel). */
23
+ export function paragraphOf(inline, pPr = '') {
24
+ return fragment(`<w:p>${pPr}${inline}</w:p>`);
25
+ }
26
+ /** `w:pPr` parsé, prêt pour `styles.paragraph(pPr)`. */
27
+ export function pPrOf(inner) {
28
+ return fragment(`<w:pPr>${inner}</w:pPr>`);
29
+ }
30
+ /** `w:rPr` parsé, prêt pour `styles.run(rPr, paragraph)`. */
31
+ export function rPrOf(inner) {
32
+ return fragment(`<w:rPr>${inner}</w:rPr>`);
33
+ }
34
+ /** `styles.xml` complet à partir de `docDefaults` et d'une liste de `w:style`. */
35
+ export function stylesXml(styles, docDefaults = '') {
36
+ return (`<?xml version="1.0" encoding="UTF-8"?><w:styles xmlns:w="${W_NS}">` +
37
+ (docDefaults ? `<w:docDefaults>${docDefaults}</w:docDefaults>` : '') +
38
+ `${styles}</w:styles>`);
39
+ }
40
+ /** `theme1.xml` minimal avec les polices majeure et mineure. */
41
+ export function themeXml(major, minor) {
42
+ const A_NS = 'http://schemas.openxmlformats.org/drawingml/2006/main';
43
+ return (`<?xml version="1.0" encoding="UTF-8"?><a:theme xmlns:a="${A_NS}"><a:themeElements><a:fontScheme name="Office">` +
44
+ `<a:majorFont><a:latin typeface="${major}"/></a:majorFont>` +
45
+ `<a:minorFont><a:latin typeface="${minor}"/></a:minorFont>` +
46
+ `</a:fontScheme></a:themeElements></a:theme>`);
47
+ }
48
+ /** Relations `document.xml.rels` à partir de `{ rId: [type, target, external?] }`. */
49
+ export function relsXml(rels) {
50
+ const items = Object.entries(rels)
51
+ .map(([id, [type, target, external]]) => `<Relationship Id="${id}" Type="${type}" Target="${target}"${external ? ' TargetMode="External"' : ''}/>`)
52
+ .join('');
53
+ return ('<?xml version="1.0" encoding="UTF-8"?>' +
54
+ `<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">${items}</Relationships>`);
55
+ }
56
+ /**
57
+ * Paquet en mémoire : `parts` associe un chemin zip à son XML. Les relations sont lues
58
+ * dans `word/_rels/document.xml.rels` comme le vrai paquet, sans archive.
59
+ */
60
+ export function fakePackage(parts) {
61
+ const docs = new Map();
62
+ const part = async (path) => {
63
+ if (!docs.has(path)) {
64
+ const xml = parts[path];
65
+ docs.set(path, xml === undefined ? null : parseXml(xml));
66
+ }
67
+ return docs.get(path) ?? null;
68
+ };
69
+ const rels = async (partPath) => {
70
+ const map = new Map();
71
+ const doc = await part(relsPathOf(partPath));
72
+ if (!doc)
73
+ return map;
74
+ for (const rel of Array.from(doc.documentElement.children)) {
75
+ const id = rel.getAttribute('Id') ?? '';
76
+ const target = rel.getAttribute('Target') ?? '';
77
+ const external = rel.getAttribute('TargetMode') === 'External';
78
+ map.set(id, {
79
+ id,
80
+ type: rel.getAttribute('Type') ?? '',
81
+ target: external ? target : resolveTarget(partPath, target),
82
+ external,
83
+ });
84
+ }
85
+ return map;
86
+ };
87
+ return {
88
+ mainPart: 'word/document.xml',
89
+ has: (path) => parts[path] !== undefined,
90
+ part,
91
+ binary: async () => null,
92
+ rels,
93
+ related: async (partPath, suffix) => {
94
+ for (const rel of (await rels(partPath)).values()) {
95
+ if (!rel.external && rel.type.endsWith(suffix))
96
+ return rel.target;
97
+ }
98
+ return null;
99
+ },
100
+ };
101
+ }
102
+ /** Modules voisins factices : images → `<img data-test>`, notes → `<sup>`, listes → aucune. */
103
+ export function createTestContext(styles, pkg, patch = {}) {
104
+ const convert = {
105
+ paragraph: async () => ({
106
+ kind: 'paragraph',
107
+ html: '',
108
+ isEmpty: true,
109
+ }),
110
+ table: async () => ({ kind: 'table', html: '' }),
111
+ blocks: async () => [],
112
+ render: (blocks) => blocks.map((block) => block.html).join(''),
113
+ };
114
+ return {
115
+ pkg,
116
+ part: pkg.mainPart,
117
+ where: 'body',
118
+ styles,
119
+ numbering: { definition: () => null },
120
+ images: {
121
+ drawing: async (drawing) => `<img data-test="${childNamed(drawing, 'inline') ? 'inline' : drawing.localName}">`,
122
+ },
123
+ notes: {
124
+ reference: (id, kind) => `<sup data-${kind}-ref="${id}">${id}</sup>`,
125
+ render: async () => '',
126
+ },
127
+ convert,
128
+ options: { footnotes: true, emptyParagraphs: 'keep', parseXml },
129
+ warnings: [],
130
+ lost: [],
131
+ tableStyle: null,
132
+ ...patch,
133
+ };
134
+ }
135
+ //# sourceMappingURL=test-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-support.js","sourceRoot":"","sources":["../../../src/docx/reader/test-support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { Block, ConverterContext, DocxPackage, ParagraphBlock, ReaderOptions, StyleResolver } from './types';
2
+ /**
3
+ * Harnais de test du lot L25 : fragments XML Word, paquets minimaux et contexte de
4
+ * conversion autonome. Les convertisseurs de paragraphes et de runs sont ici des versions
5
+ * minimales (texte brut, titres, numérotation, retrait, dessins, notes, objets perdus
6
+ * inline) pour que les tests de structure ne dépendent pas des modules de L24.
7
+ * Aucune utilité en production.
8
+ */
9
+ export declare const W_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
10
+ export declare const R_NS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
11
+ /** Déclarations d'espaces de noms des fragments de test. */
12
+ export declare const NAMESPACES: string;
13
+ export declare function parseXml(xml: string): Document;
14
+ /** Premier élément d'un fragment Word, parsé avec tous les espaces de noms utiles. */
15
+ export declare function fragment(xml: string): Element;
16
+ /** Corps complet (`w:body`) d'un fragment, pour convertir plusieurs blocs. */
17
+ export declare function body(xml: string): Element;
18
+ export declare function paragraphXml(text: string, pPr?: string): string;
19
+ export declare function numberedXml(text: string, numId: string, level?: number, extraPPr?: string): string;
20
+ export interface TestRelationship {
21
+ readonly id: string;
22
+ readonly type: string;
23
+ readonly target: string;
24
+ readonly external?: boolean;
25
+ }
26
+ /** Partie `.rels` à partir d'une liste de relations (type = suffixe usuel : `image`, `header`…). */
27
+ export declare function relsXml(rels: readonly TestRelationship[]): string;
28
+ /** Partie XML Word (`w:document`, `w:hdr`, `w:footnotes`…) avec les espaces de noms. */
29
+ export declare function partXml(root: string, content: string): string;
30
+ /**
31
+ * Paquet minimal : `document.xml` avec le corps donné, relations du document, parties
32
+ * supplémentaires (texte ou binaire). Lisible par `openPackage`.
33
+ */
34
+ export declare function buildPackage(bodyXml: string, options?: {
35
+ readonly rels?: readonly TestRelationship[];
36
+ readonly parts?: Readonly<Record<string, string | Uint8Array>>;
37
+ }): Promise<DocxPackage>;
38
+ /** Résolveur de styles minimal : titre, numérotation et retrait gauche directs, rien d'hérité. */
39
+ export declare function stubStyles(overrides?: Partial<StyleResolver>): StyleResolver;
40
+ /** Convertisseur de paragraphe de test : texte brut, dessins, notes, objets perdus inline. */
41
+ export declare function testParagraph(paragraph: Element, ctx: ConverterContext): Promise<ParagraphBlock>;
42
+ /** Réplique de `convertBlocks` d'`index.ts` : `p` (enregistré), `tbl`, `sdt`, `customXml`, sinon `detectLost`. */
43
+ export declare function testBlocks(container: Element, ctx: ConverterContext): Promise<Block[]>;
44
+ /** Contexte de conversion complet sur un paquet, avec les vrais modules de L25. */
45
+ export declare function createTestContext(pkg: DocxPackage, options?: Partial<ReaderOptions>, overrides?: Partial<ConverterContext>): Promise<ConverterContext>;
46
+ /** Convertit et rend un corps entier avec le contexte donné. */
47
+ export declare function renderBody(xml: string, ctx: ConverterContext): Promise<string>;
48
+ /** PNG 1×1 rouge, le plus petit fichier valide pour les tests d'images. */
49
+ export declare const PNG_1X1: Uint8Array<ArrayBuffer>;
50
+ //# sourceMappingURL=testing-blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-blocks.d.ts","sourceRoot":"","sources":["../../../src/docx/reader/testing-blocks.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,WAAW,EAEX,cAAc,EACd,aAAa,EAEb,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB;;;;;;GAMG;AAEH,eAAO,MAAM,IAAI,iEAAiE,CAAC;AACnF,eAAO,MAAM,IAAI,wEAAwE,CAAC;AAE1F,4DAA4D;AAC5D,eAAO,MAAM,UAAU,QAWiD,CAAC;AAEzE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAM9C;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAK7C;AAED,8EAA8E;AAC9E,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,MAAM,CAE3D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAK,GAAG,MAAM,CAKzF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,oGAAoG;AACpG,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,CAQjE;AAED,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;CAC3D,GACL,OAAO,CAAC,WAAW,CAAC,CAiBtB;AAID,kGAAkG;AAClG,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,aAAa,CAsChF;AAwBD,8FAA8F;AAC9F,wBAAsB,aAAa,CACjC,SAAS,EAAE,OAAO,EAClB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,cAAc,CAAC,CA6DzB;AAED,kHAAkH;AAClH,wBAAsB,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAyC5F;AAED,mFAAmF;AACnF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,EACpC,SAAS,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACxC,OAAO,CAAC,gBAAgB,CAAC,CA2B3B;AAED,gEAAgE;AAChE,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpF;AAED,2EAA2E;AAC3E,eAAO,MAAM,OAAO,yBAKnB,CAAC"}
@@ -0,0 +1,302 @@
1
+ import JSZip from 'jszip';
2
+ import { childNamed, wordAttribute } from '../preprocess/xml-utils';
3
+ import { escapeHtml } from './html';
4
+ import { createImageConverter } from './images';
5
+ import { createNumberingResolver, registerListItem, renderBlocks } from './lists';
6
+ import { alternateContentChoice, detectLost, detectLostInline } from './lost';
7
+ import { createNoteRegistry } from './notes';
8
+ import { openPackage } from './package';
9
+ import { convertTable } from './tables';
10
+ import { numericAttribute, twipsToPt } from './units-blocks';
11
+ /**
12
+ * Harnais de test du lot L25 : fragments XML Word, paquets minimaux et contexte de
13
+ * conversion autonome. Les convertisseurs de paragraphes et de runs sont ici des versions
14
+ * minimales (texte brut, titres, numérotation, retrait, dessins, notes, objets perdus
15
+ * inline) pour que les tests de structure ne dépendent pas des modules de L24.
16
+ * Aucune utilité en production.
17
+ */
18
+ export const W_NS = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';
19
+ export const R_NS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
20
+ /** Déclarations d'espaces de noms des fragments de test. */
21
+ export const NAMESPACES = `xmlns:w="${W_NS}" xmlns:r="${R_NS}" ` +
22
+ 'xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" ' +
23
+ 'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" ' +
24
+ 'xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" ' +
25
+ 'xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" ' +
26
+ 'xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" ' +
27
+ 'xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" ' +
28
+ 'xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" ' +
29
+ 'xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" ' +
30
+ 'xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" ' +
31
+ 'xmlns:dgm="http://schemas.openxmlformats.org/drawingml/2006/diagram"';
32
+ export function parseXml(xml) {
33
+ const doc = new DOMParser().parseFromString(xml, 'application/xml');
34
+ if (doc.documentElement.localName === 'parsererror') {
35
+ throw new Error(`XML invalide : ${doc.documentElement.textContent ?? ''}`);
36
+ }
37
+ return doc;
38
+ }
39
+ /** Premier élément d'un fragment Word, parsé avec tous les espaces de noms utiles. */
40
+ export function fragment(xml) {
41
+ const doc = parseXml(`<w:document ${NAMESPACES}>${xml}</w:document>`);
42
+ const first = doc.documentElement.firstElementChild;
43
+ if (!first)
44
+ throw new Error('fragment vide');
45
+ return first;
46
+ }
47
+ /** Corps complet (`w:body`) d'un fragment, pour convertir plusieurs blocs. */
48
+ export function body(xml) {
49
+ return fragment(`<w:body>${xml}</w:body>`);
50
+ }
51
+ export function paragraphXml(text, pPr = '') {
52
+ return `<w:p>${pPr}<w:r><w:t xml:space="preserve">${text}</w:t></w:r></w:p>`;
53
+ }
54
+ export function numberedXml(text, numId, level = 0, extraPPr = '') {
55
+ return paragraphXml(text, `<w:pPr><w:numPr><w:ilvl w:val="${String(level)}"/><w:numId w:val="${numId}"/></w:numPr>${extraPPr}</w:pPr>`);
56
+ }
57
+ /** Partie `.rels` à partir d'une liste de relations (type = suffixe usuel : `image`, `header`…). */
58
+ export function relsXml(rels) {
59
+ const entries = rels
60
+ .map((rel) => `<Relationship Id="${rel.id}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/${rel.type}" Target="${rel.target}"${rel.external ? ' TargetMode="External"' : ''}/>`)
61
+ .join('');
62
+ return `<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">${entries}</Relationships>`;
63
+ }
64
+ /** Partie XML Word (`w:document`, `w:hdr`, `w:footnotes`…) avec les espaces de noms. */
65
+ export function partXml(root, content) {
66
+ return `<?xml version="1.0" encoding="UTF-8"?><w:${root} ${NAMESPACES}>${content}</w:${root}>`;
67
+ }
68
+ /**
69
+ * Paquet minimal : `document.xml` avec le corps donné, relations du document, parties
70
+ * supplémentaires (texte ou binaire). Lisible par `openPackage`.
71
+ */
72
+ export async function buildPackage(bodyXml, options = {}) {
73
+ const zip = new JSZip();
74
+ zip.file('[Content_Types].xml', '<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Default Extension="png" ContentType="image/png"/></Types>');
75
+ zip.file('_rels/.rels', relsXml([{ id: 'rId1', type: 'officeDocument', target: 'word/document.xml' }]));
76
+ zip.file('word/document.xml', partXml('document', `<w:body>${bodyXml}</w:body>`));
77
+ if (options.rels)
78
+ zip.file('word/_rels/document.xml.rels', relsXml(options.rels));
79
+ for (const [path, content] of Object.entries(options.parts ?? {}))
80
+ zip.file(path, content);
81
+ const bytes = await zip.generateAsync({ type: 'uint8array' });
82
+ const buffer = new ArrayBuffer(bytes.byteLength);
83
+ new Uint8Array(buffer).set(bytes);
84
+ return openPackage(buffer, parseXml);
85
+ }
86
+ const HEADING_STYLE = /^Heading([1-6])$/;
87
+ /** Résolveur de styles minimal : titre, numérotation et retrait gauche directs, rien d'hérité. */
88
+ export function stubStyles(overrides = {}) {
89
+ return {
90
+ paragraph(pPr) {
91
+ const props = {
92
+ runDefaults: {},
93
+ };
94
+ if (!pPr)
95
+ return props;
96
+ const pStyle = childNamed(pPr, 'pStyle');
97
+ const styleId = pStyle ? wordAttribute(pStyle, 'val') : '';
98
+ if (styleId)
99
+ props.styleId = styleId;
100
+ const heading = HEADING_STYLE.exec(styleId);
101
+ if (heading)
102
+ props.headingLevel = Number(heading[1]);
103
+ const numPr = childNamed(pPr, 'numPr');
104
+ if (numPr) {
105
+ const numId = childNamed(numPr, 'numId');
106
+ const ilvl = childNamed(numPr, 'ilvl');
107
+ if (numId) {
108
+ props.numbering = {
109
+ numId: wordAttribute(numId, 'val'),
110
+ level: ilvl ? (numericAttribute(ilvl, 'val') ?? 0) : 0,
111
+ };
112
+ }
113
+ }
114
+ const left = numericAttribute(childNamed(pPr, 'ind'), 'left');
115
+ if (left !== undefined)
116
+ props.indentLeftPt = twipsToPt(left);
117
+ return props;
118
+ },
119
+ run(_rPr, paragraph) {
120
+ return paragraph.runDefaults;
121
+ },
122
+ tableStyle() {
123
+ return null;
124
+ },
125
+ defaultFont() {
126
+ return {};
127
+ },
128
+ ...overrides,
129
+ };
130
+ }
131
+ /** Éléments inline signalés comme perdus par le convertisseur de runs de test. */
132
+ const INLINE_LOST = new Set([
133
+ 'oMath',
134
+ 'oMathPara',
135
+ 'commentRangeStart',
136
+ 'commentRangeEnd',
137
+ 'commentReference',
138
+ 'ins',
139
+ 'del',
140
+ 'fldSimple',
141
+ 'object',
142
+ ]);
143
+ function reportLost(element, ctx, parts) {
144
+ const lost = detectLostInline(element, ctx);
145
+ if (!lost)
146
+ return false;
147
+ ctx.lost.push(lost);
148
+ ctx.warnings.push({ code: 'object-lost', message: `Objet non représentable (${lost.kind})` });
149
+ if (lost.text)
150
+ parts.push(escapeHtml(lost.text));
151
+ return true;
152
+ }
153
+ /** Convertisseur de paragraphe de test : texte brut, dessins, notes, objets perdus inline. */
154
+ export async function testParagraph(paragraph, ctx) {
155
+ const props = ctx.styles.paragraph(childNamed(paragraph, 'pPr'));
156
+ const parts = [];
157
+ const walk = async (element) => {
158
+ switch (element.localName) {
159
+ case 't':
160
+ parts.push(escapeHtml(element.textContent ?? ''));
161
+ return;
162
+ case 'tab':
163
+ parts.push(' ');
164
+ return;
165
+ case 'br':
166
+ parts.push('<br>');
167
+ return;
168
+ case 'drawing':
169
+ case 'pict':
170
+ parts.push(await ctx.images.drawing(element, ctx));
171
+ return;
172
+ case 'AlternateContent': {
173
+ // Enveloppe Word 2010+ : seul le contenu retenu (`mc:Choice`) est converti.
174
+ const chosen = alternateContentChoice(element);
175
+ if (!chosen)
176
+ return;
177
+ if (chosen.localName === 'drawing' || chosen.localName === 'pict') {
178
+ parts.push(await ctx.images.drawing(chosen, ctx));
179
+ }
180
+ else {
181
+ await walk(chosen);
182
+ }
183
+ return;
184
+ }
185
+ case 'footnoteReference':
186
+ case 'endnoteReference': {
187
+ const id = wordAttribute(element, 'id');
188
+ const kind = element.localName === 'footnoteReference' ? 'footnote' : 'endnote';
189
+ if (id)
190
+ parts.push(ctx.notes.reference(id, kind, ctx));
191
+ return;
192
+ }
193
+ case 'pPr':
194
+ case 'rPr':
195
+ return;
196
+ default:
197
+ break;
198
+ }
199
+ if (INLINE_LOST.has(element.localName)) {
200
+ const reported = reportLost(element, ctx, parts);
201
+ // Texte inséré conservé, texte supprimé retiré, champ connu rendu par son résultat.
202
+ if (element.localName === 'del' || (reported && element.localName !== 'ins'))
203
+ return;
204
+ }
205
+ for (const child of Array.from(element.children))
206
+ await walk(child);
207
+ };
208
+ for (const child of Array.from(paragraph.children))
209
+ await walk(child);
210
+ const inline = parts.join('');
211
+ const tag = props.headingLevel ? `h${String(props.headingLevel)}` : 'p';
212
+ const style = props.indentLeftPt !== undefined ? ` style="margin-left: ${String(props.indentLeftPt)}pt"` : '';
213
+ const block = {
214
+ kind: 'paragraph',
215
+ html: `<${tag}${style}>${inline}</${tag}>`,
216
+ isEmpty: inline.trim() === '',
217
+ };
218
+ if (props.numbering)
219
+ block.numbering = props.numbering;
220
+ return block;
221
+ }
222
+ /** Réplique de `convertBlocks` d'`index.ts` : `p` (enregistré), `tbl`, `sdt`, `customXml`, sinon `detectLost`. */
223
+ export async function testBlocks(container, ctx) {
224
+ const blocks = [];
225
+ for (const child of Array.from(container.children)) {
226
+ switch (child.localName) {
227
+ case 'p': {
228
+ const block = await ctx.convert.paragraph(child, ctx);
229
+ registerListItem(block, ctx);
230
+ blocks.push(block);
231
+ break;
232
+ }
233
+ case 'tbl':
234
+ blocks.push(await ctx.convert.table(child, ctx));
235
+ break;
236
+ case 'sdt': {
237
+ const content = childNamed(child, 'sdtContent');
238
+ if (content)
239
+ blocks.push(...(await testBlocks(content, ctx)));
240
+ break;
241
+ }
242
+ case 'customXml':
243
+ blocks.push(...(await testBlocks(child, ctx)));
244
+ break;
245
+ case 'customXmlPr':
246
+ case 'sectPr':
247
+ case 'bookmarkStart':
248
+ case 'bookmarkEnd':
249
+ case 'proofErr':
250
+ break;
251
+ default: {
252
+ const lost = detectLost(child, ctx);
253
+ if (lost) {
254
+ ctx.lost.push(lost);
255
+ ctx.warnings.push({
256
+ code: 'object-lost',
257
+ message: `Objet non représentable (${lost.kind})`,
258
+ });
259
+ if (lost.text)
260
+ blocks.push({ kind: 'raw', html: `<p>${escapeHtml(lost.text)}</p>` });
261
+ }
262
+ }
263
+ }
264
+ }
265
+ return blocks;
266
+ }
267
+ /** Contexte de conversion complet sur un paquet, avec les vrais modules de L25. */
268
+ export async function createTestContext(pkg, options = {}, overrides = {}) {
269
+ const readerOptions = {
270
+ footnotes: true,
271
+ emptyParagraphs: 'keep',
272
+ parseXml,
273
+ ...options,
274
+ };
275
+ return {
276
+ pkg,
277
+ part: pkg.mainPart,
278
+ where: 'body',
279
+ styles: stubStyles(),
280
+ numbering: await createNumberingResolver(pkg),
281
+ images: createImageConverter(pkg, readerOptions),
282
+ notes: await createNoteRegistry(pkg, readerOptions),
283
+ convert: {
284
+ paragraph: testParagraph,
285
+ table: convertTable,
286
+ blocks: testBlocks,
287
+ render: renderBlocks,
288
+ },
289
+ options: readerOptions,
290
+ warnings: [],
291
+ lost: [],
292
+ tableStyle: null,
293
+ ...overrides,
294
+ };
295
+ }
296
+ /** Convertit et rend un corps entier avec le contexte donné. */
297
+ export async function renderBody(xml, ctx) {
298
+ return ctx.convert.render(await ctx.convert.blocks(body(xml), ctx), ctx);
299
+ }
300
+ /** PNG 1×1 rouge, le plus petit fichier valide pour les tests d'images. */
301
+ export const PNG_1X1 = Uint8Array.from(atob('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg=='), (char) => char.charCodeAt(0));
302
+ //# sourceMappingURL=testing-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-blocks.js","sourceRoot":"","sources":["../../../src/docx/reader/testing-blocks.ts"],"names":[],"mappings":"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"}