@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":"sections.js","sourceRoot":"","sources":["../../../src/docx/reader/sections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { DocxPackage, ResolvedParagraphProps, ResolvedRunProps, StyleResolver, TableStyleProps } from './types';
2
+ /** Défauts du document (`w:docDefaults`), sans aucun style appliqué. */
3
+ export interface DocDefaults {
4
+ readonly paragraph: ResolvedParagraphProps;
5
+ readonly run: ResolvedRunProps;
6
+ }
7
+ /** Résolveur d'Aster : le contrat plus les défauts du document. */
8
+ export interface DocxStyleResolver extends StyleResolver {
9
+ docDefaults(): DocDefaults;
10
+ }
11
+ /** Style de tableau d'Aster : le contrat plus les défauts de paragraphe du style (`pPr`). */
12
+ export interface DocxTableStyleProps extends TableStyleProps {
13
+ readonly paragraphDefaults?: Omit<ResolvedParagraphProps, 'runDefaults' | 'styleId'>;
14
+ }
15
+ /**
16
+ * Défauts du document d'un résolveur quelconque : ceux d'Aster s'il les expose, sinon un
17
+ * repli sur `defaultFont()` (résolveur tiers ou stub).
18
+ */
19
+ export declare function docDefaultsOf(styles: StyleResolver): DocDefaults;
20
+ /** Défauts de paragraphe d'un style de tableau, `undefined` pour un style tiers. */
21
+ export declare function tableParagraphDefaultsOf(style: TableStyleProps | null): DocxTableStyleProps['paragraphDefaults'];
22
+ /** Crée le résolveur de styles du document. Signature figée par la phase 0. */
23
+ export declare function createStyleResolver(pkg: DocxPackage): Promise<DocxStyleResolver>;
24
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/docx/reader/styles.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,WAAW,EAEX,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,eAAe,EAChB,MAAM,SAAS,CAAC;AAyBjB,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;CAChC;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,WAAW,IAAI,WAAW,CAAC;CAC5B;AAED,6FAA6F;AAC7F,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,aAAa,GAAG,SAAS,CAAC,CAAC;CACtF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAUhE;AAED,oFAAoF;AACpF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,GAAG,IAAI,GAC5B,mBAAmB,CAAC,mBAAmB,CAAC,CAI1C;AAsDD,+EAA+E;AAC/E,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+StF"}
@@ -0,0 +1,383 @@
1
+ import { allNamed, childNamed, childrenNamed, wordAttribute } from '../preprocess/xml-utils';
2
+ import { applyBorders, applyParagraphProperties, applyRunProperties, cloneParagraph, emptyParagraph, finalizeParagraph, finalizeRun, mergeRunDelta, orderedBorders, readBorder, readShadingFill, } from './properties';
3
+ import { fontName, numberAttr, twipsToPt } from './units';
4
+ /**
5
+ * Défauts du document d'un résolveur quelconque : ceux d'Aster s'il les expose, sinon un
6
+ * repli sur `defaultFont()` (résolveur tiers ou stub).
7
+ */
8
+ export function docDefaultsOf(styles) {
9
+ if ('docDefaults' in styles && typeof styles.docDefaults === 'function') {
10
+ return styles.docDefaults();
11
+ }
12
+ const font = styles.defaultFont();
13
+ const run = {
14
+ ...(font.family ? { fontFamily: font.family } : {}),
15
+ ...(font.sizePt !== undefined ? { fontSizePt: font.sizePt } : {}),
16
+ };
17
+ return { paragraph: { runDefaults: run }, run };
18
+ }
19
+ /** Défauts de paragraphe d'un style de tableau, `undefined` pour un style tiers. */
20
+ export function tableParagraphDefaultsOf(style) {
21
+ return style && 'paragraphDefaults' in style
22
+ ? style.paragraphDefaults
23
+ : undefined;
24
+ }
25
+ const HEADING_PATTERN = /^(?:heading|titre|überschrift|título|titolo)\s*([1-6])$/i;
26
+ function headingLevelOfName(value) {
27
+ const match = HEADING_PATTERN.exec(value.trim());
28
+ return match ? Number(match[1]) : undefined;
29
+ }
30
+ function readStyle(element) {
31
+ const id = wordAttribute(element, 'styleId');
32
+ const type = wordAttribute(element, 'type') || 'paragraph';
33
+ if (!id || !isStyleType(type))
34
+ return null;
35
+ const name = childNamed(element, 'name');
36
+ const basedOn = childNamed(element, 'basedOn');
37
+ const link = childNamed(element, 'link');
38
+ return {
39
+ id,
40
+ name: name ? wordAttribute(name, 'val') : '',
41
+ type,
42
+ basedOn: basedOn ? wordAttribute(basedOn, 'val') || undefined : undefined,
43
+ link: link ? wordAttribute(link, 'val') || undefined : undefined,
44
+ isDefault: wordAttribute(element, 'default') === '1' || wordAttribute(element, 'default') === 'true',
45
+ pPr: childNamed(element, 'pPr'),
46
+ rPr: childNamed(element, 'rPr'),
47
+ tblPr: childNamed(element, 'tblPr'),
48
+ tcPr: childNamed(element, 'tcPr'),
49
+ };
50
+ }
51
+ function isStyleType(value) {
52
+ return (value === 'paragraph' || value === 'character' || value === 'table' || value === 'numbering');
53
+ }
54
+ async function readThemeFonts(pkg) {
55
+ const path = (await pkg.related(pkg.mainPart, '/theme')) ?? 'word/theme/theme1.xml';
56
+ const doc = await pkg.part(path);
57
+ if (!doc)
58
+ return {};
59
+ const latin = (scheme) => {
60
+ const element = allNamed(doc, scheme)[0];
61
+ const font = element ? childNamed(element, 'latin') : null;
62
+ return fontName(font?.getAttribute('typeface'));
63
+ };
64
+ return { major: latin('majorFont'), minor: latin('minorFont') };
65
+ }
66
+ async function readStylesPart(pkg) {
67
+ const path = (await pkg.related(pkg.mainPart, '/styles')) ?? 'word/styles.xml';
68
+ return pkg.part(path);
69
+ }
70
+ /** Crée le résolveur de styles du document. Signature figée par la phase 0. */
71
+ export async function createStyleResolver(pkg) {
72
+ const [stylesDoc, theme] = await Promise.all([readStylesPart(pkg), readThemeFonts(pkg)]);
73
+ const styles = new Map();
74
+ const defaults = new Map();
75
+ const baseParagraph = emptyParagraph();
76
+ const baseRun = {};
77
+ if (stylesDoc) {
78
+ const root = stylesDoc.documentElement;
79
+ const docDefaults = childNamed(root, 'docDefaults');
80
+ const rPrDefault = docDefaults ? childNamed(docDefaults, 'rPrDefault') : null;
81
+ const pPrDefault = docDefaults ? childNamed(docDefaults, 'pPrDefault') : null;
82
+ const rPr = rPrDefault ? childNamed(rPrDefault, 'rPr') : null;
83
+ const pPr = pPrDefault ? childNamed(pPrDefault, 'pPr') : null;
84
+ if (rPr)
85
+ applyRunProperties(rPr, baseRun, theme);
86
+ if (pPr)
87
+ applyParagraphProperties(pPr, baseParagraph);
88
+ for (const element of childrenNamed(root, 'style')) {
89
+ const style = readStyle(element);
90
+ if (!style)
91
+ continue;
92
+ styles.set(style.id, style);
93
+ if (style.isDefault && !defaults.has(style.type))
94
+ defaults.set(style.type, style.id);
95
+ }
96
+ }
97
+ const docDefaults = {
98
+ paragraph: finalizeParagraph(baseParagraph, finalizeRun(baseRun)),
99
+ run: finalizeRun(baseRun),
100
+ };
101
+ /** Chaîne `basedOn` de la racine à la feuille, cycles et références cassées ignorés. */
102
+ const chainOf = (styleId, type) => {
103
+ const chain = [];
104
+ const seen = new Set();
105
+ let current = styleId;
106
+ let clean = true;
107
+ while (current) {
108
+ if (seen.has(current)) {
109
+ clean = false;
110
+ break;
111
+ }
112
+ seen.add(current);
113
+ const style = styles.get(current);
114
+ if (!style || style.type !== type)
115
+ break;
116
+ chain.push(style);
117
+ current = style.basedOn;
118
+ }
119
+ return { chain: chain.reverse(), clean };
120
+ };
121
+ /**
122
+ * Résout un style en mémoïsant chaque nœud de sa chaîne `basedOn` par `styleId` : la
123
+ * remontée s'arrête au premier ancêtre déjà résolu, seuls les nœuds en dessous sont
124
+ * appliqués (`apply` dérive l'état d'un nœud de celui de son parent, sans le muter).
125
+ * Une chaîne de 1 500 styles coûte ainsi 1 500 applications en tout, pas 1 500 par
126
+ * paragraphe, et chaque résolution est linéaire en nœuds non encore vus. Une chaîne
127
+ * coupée par un cycle n'est pas mémoïsée : ses préfixes dépendent du point d'entrée
128
+ * (un nœud mémoïsé n'est jamais dans un cycle, s'y arrêter est donc sûr).
129
+ */
130
+ const resolveStyle = (styleId, type, cache, root, apply) => {
131
+ const pending = [];
132
+ const seen = new Set();
133
+ let state = root;
134
+ let clean = true;
135
+ let current = styleId;
136
+ while (current) {
137
+ if (seen.has(current)) {
138
+ clean = false;
139
+ break;
140
+ }
141
+ seen.add(current);
142
+ const cached = cache.get(current);
143
+ if (cached !== undefined) {
144
+ state = cached;
145
+ break;
146
+ }
147
+ const style = styles.get(current);
148
+ if (!style || style.type !== type)
149
+ break;
150
+ pending.push(style);
151
+ current = style.basedOn;
152
+ }
153
+ for (const style of pending.reverse()) {
154
+ state = apply(state, style);
155
+ if (clean)
156
+ cache.set(style.id, state);
157
+ }
158
+ return state;
159
+ };
160
+ const paragraphNodes = new Map();
161
+ const paragraphRoot = { paragraph: baseParagraph, run: baseRun };
162
+ const applyParagraphNode = (parent, style) => {
163
+ const paragraph = cloneParagraph(parent.paragraph);
164
+ const run = { ...parent.run };
165
+ if (style.pPr)
166
+ applyParagraphProperties(style.pPr, paragraph);
167
+ if (style.rPr)
168
+ applyRunProperties(style.rPr, run, theme);
169
+ const headingLevel = headingLevelOfName(style.id) ?? headingLevelOfName(style.name) ?? parent.headingLevel;
170
+ return { ...(headingLevel ? { headingLevel } : {}), paragraph, run };
171
+ };
172
+ const paragraphStyles = new Map();
173
+ /**
174
+ * Style de paragraphe demandé par `w:pStyle` : un identifiant inconnu **ou d'un autre
175
+ * type** (style de tableau, de caractère) retombe sur le style de paragraphe par défaut.
176
+ */
177
+ const resolveParagraphStyle = (requested) => {
178
+ const styleId = requested && styles.get(requested)?.type === 'paragraph'
179
+ ? requested
180
+ : defaults.get('paragraph');
181
+ const key = styleId ?? '';
182
+ const cached = paragraphStyles.get(key);
183
+ if (cached)
184
+ return cached;
185
+ const node = resolveStyle(styleId, 'paragraph', paragraphNodes, paragraphRoot, applyParagraphNode);
186
+ let headingLevel = node.headingLevel;
187
+ const outline = node.paragraph.outlineLevel;
188
+ if (outline !== undefined && outline >= 0 && outline <= 5) {
189
+ headingLevel = (outline + 1);
190
+ }
191
+ const resolved = {
192
+ // `styleId` est connu et de type paragraphe (ou le style par défaut) : toujours posé.
193
+ ...(styleId ? { styleId } : {}),
194
+ ...(headingLevel ? { headingLevel } : {}),
195
+ paragraph: node.paragraph,
196
+ run: node.run,
197
+ runDefaults: finalizeRun(node.run),
198
+ };
199
+ paragraphStyles.set(key, resolved);
200
+ return resolved;
201
+ };
202
+ const runDeltas = new Map();
203
+ /** Delta d'un nœud : ses `w:rPr` combinés à ceux du parent (bascules en XOR, §17.7.3). */
204
+ const applyRunNode = (parent, style) => {
205
+ const delta = { ...parent };
206
+ if (!style.rPr)
207
+ return delta;
208
+ const own = {};
209
+ applyRunProperties(style.rPr, own, theme);
210
+ mergeRunDelta(delta, own);
211
+ return delta;
212
+ };
213
+ /**
214
+ * Delta d'un style de caractère (ou du style lié d'un style de paragraphe) : ses `w:rPr`
215
+ * résolus sur un accumulateur vide, mémoïsés par `styleId` ; `null` si le style est
216
+ * inconnu ou d'un type sans propriétés de run. `run()` l'applique sur les défauts du
217
+ * paragraphe par `mergeRunDelta`.
218
+ */
219
+ const characterDeltas = new Map();
220
+ const characterDelta = (styleId) => {
221
+ const cached = characterDeltas.get(styleId);
222
+ if (cached !== undefined)
223
+ return cached;
224
+ const style = styles.get(styleId);
225
+ let delta = null;
226
+ if (style?.type === 'character') {
227
+ delta = resolveStyle(styleId, 'character', runDeltas, {}, applyRunNode);
228
+ }
229
+ else if (style?.type === 'paragraph') {
230
+ const linked = style.link && styles.get(style.link);
231
+ delta =
232
+ linked && linked.type === 'character'
233
+ ? characterDelta(linked.id)
234
+ : resolveStyle(styleId, 'paragraph', runDeltas, {}, applyRunNode);
235
+ }
236
+ characterDeltas.set(styleId, delta);
237
+ return delta;
238
+ };
239
+ const tableStyles = new Map();
240
+ const resolveTableStyle = (styleId) => {
241
+ const { chain } = chainOf(styleId, 'table');
242
+ if (chain.length === 0)
243
+ return null;
244
+ const borders = new Map();
245
+ const inside = new Map();
246
+ const cellBorders = new Map();
247
+ let cellShading;
248
+ let padding;
249
+ const run = { ...baseRun };
250
+ const paragraph = emptyParagraph();
251
+ for (const style of chain) {
252
+ if (style.rPr)
253
+ applyRunProperties(style.rPr, run, theme);
254
+ if (style.pPr)
255
+ applyParagraphProperties(style.pPr, paragraph);
256
+ const tblBorders = style.tblPr ? childNamed(style.tblPr, 'tblBorders') : null;
257
+ if (tblBorders) {
258
+ applyBorders(tblBorders, borders);
259
+ applyInsideBorders(tblBorders, inside);
260
+ }
261
+ const cellMar = style.tblPr ? childNamed(style.tblPr, 'tblCellMar') : null;
262
+ if (cellMar)
263
+ padding = readCellMargins(cellMar, padding);
264
+ const tcBorders = style.tcPr ? childNamed(style.tcPr, 'tcBorders') : null;
265
+ if (tcBorders)
266
+ applyBorders(tcBorders, cellBorders);
267
+ const shd = style.tcPr ? childNamed(style.tcPr, 'shd') : null;
268
+ if (shd)
269
+ cellShading = readShadingFill(shd);
270
+ }
271
+ // Sans `tcBorders` propres, les traits intérieurs du tableau bordent chaque cellule.
272
+ const cells = cellBorders.size > 0 ? orderedBorders(cellBorders) : orderedBorders(inside);
273
+ const paragraphDefaults = finalizeParagraph(paragraph, {});
274
+ const { runDefaults: _ignored, ...paragraphOnly } = paragraphDefaults;
275
+ const outer = orderedBorders(borders);
276
+ return {
277
+ ...(outer.length > 0 ? { borders: outer } : {}),
278
+ ...(cells.length > 0 ? { cellBorders: cells } : {}),
279
+ ...(cellShading ? { cellShading } : {}),
280
+ ...(padding ? { cellPaddingPt: padding } : {}),
281
+ runDefaults: finalizeRun(run),
282
+ ...(Object.keys(paragraphOnly).length > 0 ? { paragraphDefaults: paragraphOnly } : {}),
283
+ };
284
+ };
285
+ return {
286
+ paragraph(pPr) {
287
+ const pStyle = pPr ? childNamed(pPr, 'pStyle') : null;
288
+ const base = resolveParagraphStyle(pStyle ? wordAttribute(pStyle, 'val') || undefined : undefined);
289
+ let paragraph = base.paragraph;
290
+ if (pPr) {
291
+ paragraph = cloneParagraph(base.paragraph);
292
+ applyParagraphProperties(pPr, paragraph);
293
+ }
294
+ let headingLevel = base.headingLevel;
295
+ const outline = paragraph.outlineLevel;
296
+ if (pPr && childNamed(pPr, 'outlineLvl') && outline !== undefined) {
297
+ headingLevel = outline >= 0 && outline <= 5 ? (outline + 1) : undefined;
298
+ }
299
+ return {
300
+ ...(base.styleId ? { styleId: base.styleId } : {}),
301
+ ...(headingLevel ? { headingLevel } : {}),
302
+ ...finalizeParagraph(paragraph, base.runDefaults),
303
+ };
304
+ },
305
+ run(rPr, paragraph) {
306
+ const acc = { ...paragraph.runDefaults };
307
+ if (!rPr)
308
+ return finalizeRun(acc);
309
+ const rStyle = childNamed(rPr, 'rStyle');
310
+ const styleId = rStyle ? wordAttribute(rStyle, 'val') : '';
311
+ if (styleId) {
312
+ const delta = characterDelta(styleId);
313
+ if (delta)
314
+ mergeRunDelta(acc, delta);
315
+ if (styles.has(styleId))
316
+ acc.runStyle = styleId;
317
+ }
318
+ applyRunProperties(rPr, acc, theme);
319
+ return finalizeRun(acc);
320
+ },
321
+ tableStyle(styleId) {
322
+ if (!styleId)
323
+ return null;
324
+ let cached = tableStyles.get(styleId);
325
+ if (cached === undefined) {
326
+ cached = resolveTableStyle(styleId);
327
+ tableStyles.set(styleId, cached);
328
+ }
329
+ return cached;
330
+ },
331
+ defaultFont() {
332
+ const { runDefaults } = resolveParagraphStyle(undefined);
333
+ return {
334
+ ...(runDefaults.fontFamily ? { family: runDefaults.fontFamily } : {}),
335
+ ...(runDefaults.fontSizePt !== undefined ? { sizePt: runDefaults.fontSizePt } : {}),
336
+ };
337
+ },
338
+ docDefaults() {
339
+ return docDefaults;
340
+ },
341
+ };
342
+ }
343
+ /** `w:insideH` → haut et bas de cellule, `w:insideV` → gauche et droite. */
344
+ function applyInsideBorders(tblBorders, inside) {
345
+ const pairs = [
346
+ ['insideH', ['top', 'bottom']],
347
+ ['insideV', ['left', 'right']],
348
+ ];
349
+ for (const [name, sides] of pairs) {
350
+ const element = childNamed(tblBorders, name);
351
+ if (!element)
352
+ continue;
353
+ for (const side of sides) {
354
+ const border = readBorder(element, side);
355
+ if (border)
356
+ inside.set(side, border);
357
+ else
358
+ inside.delete(side);
359
+ }
360
+ }
361
+ }
362
+ /** Marges de cellule `w:tblCellMar` en points `[haut, droite, bas, gauche]`, sur la base héritée. */
363
+ function readCellMargins(cellMar, inherited) {
364
+ const out = inherited ? [...inherited] : [0, 0, 0, 0];
365
+ const sides = [
366
+ ['top', 0],
367
+ ['right', 1],
368
+ ['end', 1],
369
+ ['bottom', 2],
370
+ ['left', 3],
371
+ ['start', 3],
372
+ ];
373
+ for (const [name, index] of sides) {
374
+ const element = childNamed(cellMar, name);
375
+ if (!element)
376
+ continue;
377
+ const width = numberAttr(wordAttribute(element, 'w'));
378
+ if (width !== undefined)
379
+ out[index] = twipsToPt(width);
380
+ }
381
+ return out;
382
+ }
383
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/docx/reader/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,cAAc,EACd,UAAU,EACV,eAAe,GAIhB,MAAM,cAAc,CAAC;AAStB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAwC1D;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,IAAI,aAAa,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACxE,OAAQ,MAA4B,CAAC,WAAW,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,GAAG,GAAqB;QAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC;AAClD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,wBAAwB,CACtC,KAA6B;IAE7B,OAAO,KAAK,IAAI,mBAAmB,IAAI,KAAK;QAC1C,CAAC,CAAE,KAA6B,CAAC,iBAAiB;QAClD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,eAAe,GAAG,0DAA0D,CAAC;AAEnF,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,CAAC,CAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,OAAgB;IACjC,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC;IAC3D,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO;QACL,EAAE;QACF,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAC5C,IAAI;QACJ,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;QACzE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;QAChE,SAAS,EACP,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,MAAM;QAC3F,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QAC/B,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QAC/B,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QACnC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,CACL,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,WAAW,CAC7F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAgB;IAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,uBAAuB,CAAC;IACpF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,MAAM,KAAK,GAAG,CAAC,MAAc,EAAsB,EAAE;QACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,OAAO,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAgB;IAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,iBAAiB,CAAC;IAC/E,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAgB;IACxD,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC9C,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC;IACvC,MAAM,OAAO,GAAe,EAAE,CAAC;IAE/B,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,CAAC;QACvC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,IAAI,GAAG;YAAE,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,GAAG;YAAE,wBAAwB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACtD,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAgB;QAC/B,SAAS,EAAE,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACjE,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC;KAC1B,CAAC;IAQF,wFAAwF;IACxF,MAAM,OAAO,GAAG,CAAC,OAA2B,EAAE,IAAe,EAAc,EAAE;QAC3E,MAAM,KAAK,GAAsB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;YACR,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;gBAAE,MAAM;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC,CAAC;IAEF;;;;;;;;OAQG;IACH,MAAM,YAAY,GAAG,CACnB,OAA2B,EAC3B,IAAe,EACf,KAAqB,EACrB,IAAO,EACP,KAA+C,EAC5C,EAAE;QACL,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;YACR,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,KAAK,GAAG,MAAM,CAAC;gBACf,MAAM;YACR,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;gBAAE,MAAM;YACzC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACtC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5B,IAAI,KAAK;gBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAQF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;IACxD,MAAM,aAAa,GAAkB,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAEhF,MAAM,kBAAkB,GAAG,CAAC,MAAqB,EAAE,KAAsB,EAAiB,EAAE;QAC1F,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,GAAG,GAAe,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,GAAG;YAAE,wBAAwB,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,GAAG;YAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,YAAY,GAChB,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC;QACxF,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACvE,CAAC,CAAC;IAUF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkC,CAAC;IAElE;;;OAGG;IACH,MAAM,qBAAqB,GAAG,CAAC,SAA6B,EAA0B,EAAE;QACtF,MAAM,OAAO,GACX,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,WAAW;YACtD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,YAAY,CACvB,OAAO,EACP,WAAW,EACX,cAAc,EACd,aAAa,EACb,kBAAkB,CACnB,CAAC;QACF,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YAC1D,YAAY,GAAG,CAAC,OAAO,GAAG,CAAC,CAAiB,CAAC;QAC/C,CAAC;QACD,MAAM,QAAQ,GAA2B;YACvC,sFAAsF;YACtF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;SACnC,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEhD,0FAA0F;IAC1F,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAE,KAAsB,EAAc,EAAE;QAC9E,MAAM,KAAK,GAAe,EAAE,GAAG,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAC7B,MAAM,GAAG,GAAe,EAAE,CAAC;QAC3B,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1C,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF;;;;;OAKG;IACH,MAAM,eAAe,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE7D,MAAM,cAAc,GAAG,CAAC,OAAe,EAAqB,EAAE;QAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,GAAsB,IAAI,CAAC;QACpC,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,KAAK;gBACH,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;oBACnC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QACxE,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsC,CAAC;IAElE,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAA8B,EAAE;QACxE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;QACvD,IAAI,WAA+B,CAAC;QACpC,IAAI,OAAqD,CAAC;QAC1D,MAAM,GAAG,GAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,GAAG;gBAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,GAAG;gBAAE,wBAAwB,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9E,IAAI,UAAU,EAAE,CAAC;gBACf,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAClC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3E,IAAI,OAAO;gBAAE,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1E,IAAI,SAAS;gBAAE,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,IAAI,GAAG;gBAAE,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,qFAAqF;QACrF,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1F,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,iBAAiB,CAAC;QACtE,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO;YACL,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvF,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,SAAS,CAAC,GAAG;YACX,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,MAAM,IAAI,GAAG,qBAAqB,CAChC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAC/D,CAAC;YACF,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/B,IAAI,GAAG,EAAE,CAAC;gBACR,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3C,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACrC,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC;YACvC,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAClE,YAAY,GAAG,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,OAAO,GAAG,CAAC,CAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,CAAC;YACD,OAAO;gBACL,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,GAAG,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;aAClD,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,GAAG,EAAE,SAAS;YAChB,MAAM,GAAG,GAAe,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACrD,IAAI,CAAC,GAAG;gBAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,KAAK;oBAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YAClD,CAAC;YACD,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACpC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,OAAO;YAChB,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAC1B,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBACpC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,WAAW;YACT,MAAM,EAAE,WAAW,EAAE,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACzD,OAAO;gBACL,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,WAAW,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC;QAED,WAAW;YACT,OAAO,WAAW,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,SAAS,kBAAkB,CAAC,UAAmB,EAAE,MAAoC;IACnF,MAAM,KAAK,GAA0D;QACnE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;gBAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,SAAS,eAAe,CACtB,OAAgB,EAChB,SAAuD;IAEvD,MAAM,GAAG,GAAqC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,KAAK,GAAkD;QAC3D,CAAC,KAAK,EAAE,CAAC,CAAC;QACV,CAAC,OAAO,EAAE,CAAC,CAAC;QACZ,CAAC,KAAK,EAAE,CAAC,CAAC;QACV,CAAC,QAAQ,EAAE,CAAC,CAAC;QACb,CAAC,MAAM,EAAE,CAAC,CAAC;QACX,CAAC,OAAO,EAAE,CAAC,CAAC;KACb,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ConverterContext, TableBlock } from './types';
2
+ /** Nombre maximal de colonnes d'un tableau Word : borne dure du `colspan` (R25-01). */
3
+ export declare const MAX_COLUMNS = 63;
4
+ /** Convertit un tableau Word. Signature figée par `index.ts`. */
5
+ export declare function convertTable(table: Element, ctx: ConverterContext): Promise<TableBlock>;
6
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../src/docx/reader/tables.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAmB,MAAM,SAAS,CAAC;AA8C7E,uFAAuF;AACvF,eAAO,MAAM,WAAW,KAAK,CAAC;AAoF9B,iEAAiE;AACjE,wBAAsB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4G7F"}
@@ -0,0 +1,175 @@
1
+ import { childNamed, childrenNamed, wordAttribute } from '../preprocess/xml-utils';
2
+ import { escapeAttr, pt, styleAttr } from './html';
3
+ import { deriveContext } from './index';
4
+ import { booleanAttribute, borderDeclarations, bordersBySide, mergePadding, numericAttribute, paddingValue, readBorders, readCellMargins, readGridColumns, shadingColor, twipsToPt, withSide, } from './units-blocks';
5
+ /** Nombre maximal de colonnes d'un tableau Word : borne dure du `colspan` (R25-01). */
6
+ export const MAX_COLUMNS = 63;
7
+ /** `w:tblW` → `width` CSS : `pct` en pourcentage (cinquantièmes ou `NN%`), `dxa` en points. */
8
+ function tableWidth(tblW) {
9
+ if (!tblW)
10
+ return undefined;
11
+ const type = wordAttribute(tblW, 'type');
12
+ const raw = wordAttribute(tblW, 'w');
13
+ if (type === 'pct' || raw.endsWith('%')) {
14
+ const value = raw.endsWith('%') ? Number(raw.slice(0, -1)) : Number(raw) / 50;
15
+ return Number.isFinite(value) && value > 0
16
+ ? `${String(Math.round(value * 100) / 100)}%`
17
+ : undefined;
18
+ }
19
+ if (type === 'dxa' || (type === '' && raw !== '')) {
20
+ const value = Number(raw);
21
+ return Number.isFinite(value) && value > 0 ? pt(twipsToPt(value)) : undefined;
22
+ }
23
+ return undefined;
24
+ }
25
+ const VERTICAL_ALIGNS = new Map([
26
+ ['top', 'top'],
27
+ ['center', 'middle'],
28
+ ['bottom', 'bottom'],
29
+ ]);
30
+ /** Vrai pour une cellule `w:vMerge` de continuation (sans `w:val` ou `continue`). */
31
+ function isMergeContinuation(vMerge) {
32
+ if (!vMerge)
33
+ return false;
34
+ const value = wordAttribute(vMerge, 'val');
35
+ return value === '' || value === 'continue';
36
+ }
37
+ /**
38
+ * Bordures effectives d'une cellule : celles du style de tableau, puis les bordures
39
+ * intérieures du tableau sur les arêtes intérieures, puis `w:tcBorders` (`nil` retire).
40
+ * Les arêtes extérieures restent sur `<table>`.
41
+ */
42
+ function cellBorders(style, table, tcBorders, edges) {
43
+ const result = { ...bordersBySide(style?.cellBorders) };
44
+ const insideH = table.insideH;
45
+ const insideV = table.insideV;
46
+ if (insideH !== undefined) {
47
+ if (!edges.top)
48
+ result.top = insideH ? withSide(insideH, 'top') : null;
49
+ if (!edges.bottom)
50
+ result.bottom = insideH ? withSide(insideH, 'bottom') : null;
51
+ }
52
+ if (insideV !== undefined) {
53
+ if (!edges.left)
54
+ result.left = insideV ? withSide(insideV, 'left') : null;
55
+ if (!edges.right)
56
+ result.right = insideV ? withSide(insideV, 'right') : null;
57
+ }
58
+ for (const side of ['top', 'right', 'bottom', 'left']) {
59
+ const direct = tcBorders[side];
60
+ if (direct !== undefined)
61
+ result[side] = direct;
62
+ }
63
+ return result;
64
+ }
65
+ function renderCell(cell) {
66
+ const tag = cell.header ? 'th' : 'td';
67
+ const attrs = [];
68
+ if (cell.colspan > 1)
69
+ attrs.push(` colspan="${String(cell.colspan)}"`);
70
+ if (cell.rowspan > 1)
71
+ attrs.push(` rowspan="${String(cell.rowspan)}"`);
72
+ if (cell.colwidth)
73
+ attrs.push(` colwidth="${cell.colwidth}"`);
74
+ attrs.push(styleAttr([
75
+ ...borderDeclarations(cell.borders),
76
+ ['background-color', cell.shading],
77
+ ['vertical-align', cell.verticalAlign],
78
+ ['padding', paddingValue(cell.padding)],
79
+ ]));
80
+ return `<${tag}${attrs.join('')}>${cell.html}</${tag}>`;
81
+ }
82
+ /** Convertit un tableau Word. Signature figée par `index.ts`. */
83
+ export async function convertTable(table, ctx) {
84
+ const tblPr = childNamed(table, 'tblPr');
85
+ const tblStyle = tblPr ? childNamed(tblPr, 'tblStyle') : null;
86
+ const styleId = tblStyle ? wordAttribute(tblStyle, 'val') : '';
87
+ const style = ctx.styles.tableStyle(styleId || null);
88
+ const tableBorders = readBorders(tblPr ? childNamed(tblPr, 'tblBorders') : null);
89
+ const styleBorders = bordersBySide(style?.borders);
90
+ const outerBorders = {};
91
+ for (const side of ['top', 'right', 'bottom', 'left']) {
92
+ const direct = tableBorders[side];
93
+ outerBorders[side] = direct !== undefined ? direct : styleBorders[side];
94
+ }
95
+ const defaultPadding = readCellMargins(tblPr ? childNamed(tblPr, 'tblCellMar') : null);
96
+ const grid = readGridColumns(table);
97
+ const rows = childrenNamed(table, 'tr');
98
+ if (rows.length === 0) {
99
+ // Un `<table>` sans ligne est rejeté par l'éditeur (`tableRow+`) : autant ne rien émettre.
100
+ ctx.warnings.push({ code: 'reader', message: 'Tableau sans ligne ignoré.' });
101
+ return { kind: 'table', html: '' };
102
+ }
103
+ const tableCtx = deriveContext(ctx, { tableStyle: style });
104
+ // Une cellule `vMerge restart` reste ouverte sur sa colonne de grille tant que les lignes
105
+ // suivantes y placent une continuation : on incrémente son `rowspan` et on omet la cellule.
106
+ const openMerges = new Map();
107
+ const records = [];
108
+ for (const [rowIndex, tr] of rows.entries()) {
109
+ const trPr = childNamed(tr, 'trPr');
110
+ const header = booleanAttribute(trPr ? childNamed(trPr, 'tblHeader') : null);
111
+ const cells = [];
112
+ const tcs = childrenNamed(tr, 'tc');
113
+ let column = 0;
114
+ for (const [cellIndex, tc] of tcs.entries()) {
115
+ const tcPr = childNamed(tc, 'tcPr');
116
+ // `gridSpan` plafonné aux colonnes restantes de la grille (sinon à 63, le maximum de
117
+ // Word) : un `colspan` géant tue l'éditeur à l'analyse.
118
+ const gridSpan = Math.floor(numericAttribute(tcPr ? childNamed(tcPr, 'gridSpan') : null, 'val') ?? 1);
119
+ const remaining = grid.length > 0 ? grid.length - column : MAX_COLUMNS;
120
+ const colspan = Math.max(1, Math.min(gridSpan, remaining, MAX_COLUMNS));
121
+ const vMerge = tcPr ? childNamed(tcPr, 'vMerge') : null;
122
+ if (isMergeContinuation(vMerge)) {
123
+ const origin = openMerges.get(column);
124
+ // Une continuation d'une autre largeur que son origine n'est pas fusionnée : elle
125
+ // reste une cellule ordinaire, sans chevauchement avec le `rowspan` de l'origine.
126
+ if (origin && origin.colspan === colspan) {
127
+ origin.rowspan += 1;
128
+ column += colspan;
129
+ continue;
130
+ }
131
+ }
132
+ for (let c = column; c < column + colspan; c += 1)
133
+ openMerges.delete(c);
134
+ const edges = {
135
+ top: rowIndex === 0,
136
+ bottom: rowIndex === rows.length - 1,
137
+ left: column === 0,
138
+ right: cellIndex === tcs.length - 1,
139
+ };
140
+ const borders = cellBorders(style, tableBorders, readBorders(tcPr ? childNamed(tcPr, 'tcBorders') : null), edges);
141
+ const shading = shadingColor(tcPr ? childNamed(tcPr, 'shd') : null) ?? style?.cellShading;
142
+ const vAlign = tcPr ? childNamed(tcPr, 'vAlign') : null;
143
+ const verticalAlign = vAlign ? VERTICAL_ALIGNS.get(wordAttribute(vAlign, 'val')) : undefined;
144
+ const padding = mergePadding(style?.cellPaddingPt, defaultPadding, readCellMargins(tcPr ? childNamed(tcPr, 'tcMar') : null));
145
+ const widths = grid.slice(column, column + colspan);
146
+ const colwidth = rowIndex === 0 && widths.length === colspan ? widths.map(String).join(',') : undefined;
147
+ const cellCtx = deriveContext(tableCtx, { cellVerticalAlign: verticalAlign });
148
+ const blocks = await ctx.convert.blocks(tc, cellCtx);
149
+ const html = ctx.convert.render(blocks, cellCtx) || '<p></p>';
150
+ const record = {
151
+ header,
152
+ colspan,
153
+ rowspan: 1,
154
+ html,
155
+ borders,
156
+ shading,
157
+ verticalAlign,
158
+ padding,
159
+ colwidth,
160
+ };
161
+ cells.push(record);
162
+ if (vMerge && !isMergeContinuation(vMerge))
163
+ openMerges.set(column, record);
164
+ column += colspan;
165
+ }
166
+ records.push({ cells });
167
+ }
168
+ const tableAttrs = styleAttr([
169
+ ['width', tableWidth(tblPr ? childNamed(tblPr, 'tblW') : null)],
170
+ ...borderDeclarations(outerBorders),
171
+ ]) + (styleId ? ` data-docx-style="${escapeAttr(styleId)}"` : '');
172
+ const body = records.map((row) => `<tr>${row.cells.map(renderCell).join('')}</tr>`).join('');
173
+ return { kind: 'table', html: `<table${tableAttrs}><tbody>${body}</tbody></table>` };
174
+ }
175
+ //# sourceMappingURL=tables.js.map