@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,165 @@
1
+ import { childNamed } from '../preprocess/xml-utils';
2
+ import { PART_CONTENT_TYPES } from './content-types';
3
+ import { REL_TYPE } from './relationships';
4
+ import { directoryOf, insertOrdered, removeWordAttr, wordAttr, wordElement, } from './xml-io';
5
+ /**
6
+ * Réglages du document (`settings.xml`) que la greffe doit poser pour que Word honore le
7
+ * corps greffé : `w:updateFields` avec une table des matières (sinon le champ `TOC` reste
8
+ * vide, sans numéros de page) et `w:evenAndOddHeaders` quand un en-tête ou un pied de
9
+ * pages paires est greffé (sinon Word ne l'affiche jamais). Rien d'autre n'est touché ;
10
+ * un réglage déjà actif laisse la partie intacte à l'octet, un réglage à `false` est
11
+ * basculé, une partie absente est créée (relation et type de contenu compris).
12
+ */
13
+ /** Espace de noms principal de WordprocessingML, pour une partie créée. */
14
+ const W_NS = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';
15
+ const SETTINGS_FILE = 'settings.xml';
16
+ const DECLARATION = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
17
+ /** Valeurs de `w:val` qui désactivent un réglage booléen (`ST_OnOff`). */
18
+ const OFF_VALUES = new Set(['false', '0', 'off']);
19
+ /** Ordre du schéma (`CT_Settings`) des enfants que la greffe peut avoir à insérer, et de leurs voisins. */
20
+ const SETTINGS_ORDER = [
21
+ 'writeProtection',
22
+ 'view',
23
+ 'zoom',
24
+ 'removePersonalInformation',
25
+ 'removeDateAndTime',
26
+ 'doNotDisplayPageBoundaries',
27
+ 'displayBackgroundShape',
28
+ 'printPostScriptOverText',
29
+ 'printFractionalCharacterWidth',
30
+ 'printFormsData',
31
+ 'embedTrueTypeFonts',
32
+ 'embedSystemFonts',
33
+ 'saveSubsetFonts',
34
+ 'saveFormsData',
35
+ 'mirrorMargins',
36
+ 'alignBordersAndEdges',
37
+ 'bordersDoNotSurroundHeader',
38
+ 'bordersDoNotSurroundFooter',
39
+ 'gutterAtTop',
40
+ 'hideSpellingErrors',
41
+ 'hideGrammaticalErrors',
42
+ 'activeWritingStyle',
43
+ 'proofState',
44
+ 'formsDesign',
45
+ 'attachedTemplate',
46
+ 'linkStyles',
47
+ 'stylePaneFormatFilter',
48
+ 'stylePaneSortMethod',
49
+ 'documentType',
50
+ 'mailMerge',
51
+ 'revisionView',
52
+ 'trackRevisions',
53
+ 'doNotTrackMoves',
54
+ 'doNotTrackFormatting',
55
+ 'documentProtection',
56
+ 'autoFormatOverride',
57
+ 'styleLockTheme',
58
+ 'styleLockQFSet',
59
+ 'defaultTabStop',
60
+ 'autoHyphenation',
61
+ 'consecutiveHyphenLimit',
62
+ 'hyphenationZone',
63
+ 'doNotHyphenateCaps',
64
+ 'showEnvelope',
65
+ 'summaryLength',
66
+ 'clickAndTypeStyle',
67
+ 'defaultTableStyle',
68
+ 'evenAndOddHeaders',
69
+ 'bookFoldRevPrinting',
70
+ 'bookFoldPrinting',
71
+ 'bookFoldPrintingSheets',
72
+ 'drawingGridHorizontalSpacing',
73
+ 'drawingGridVerticalSpacing',
74
+ 'displayHorizontalDrawingGridEvery',
75
+ 'displayVerticalDrawingGridEvery',
76
+ 'doNotUseMarginsForDrawingGridOrigin',
77
+ 'drawingGridHorizontalOrigin',
78
+ 'drawingGridVerticalOrigin',
79
+ 'doNotShadeFormData',
80
+ 'noPunctuationKerning',
81
+ 'characterSpacingControl',
82
+ 'printTwoOnOne',
83
+ 'strictFirstAndLastChars',
84
+ 'noLineBreaksAfter',
85
+ 'noLineBreaksBefore',
86
+ 'savePreviewPicture',
87
+ 'doNotValidateAgainstSchema',
88
+ 'saveInvalidXml',
89
+ 'ignoreMixedContent',
90
+ 'alwaysShowPlaceholderText',
91
+ 'doNotDemarcateInvalidXml',
92
+ 'saveXmlDataOnly',
93
+ 'useXSLTWhenSaving',
94
+ 'saveThroughXslt',
95
+ 'showXMLTags',
96
+ 'alwaysMergeEmptyNamespace',
97
+ 'updateFields',
98
+ 'hdrShapeDefaults',
99
+ 'footnotePr',
100
+ 'endnotePr',
101
+ 'compat',
102
+ 'docVars',
103
+ 'rsids',
104
+ 'mathPr',
105
+ 'attachedSchema',
106
+ 'themeFontLang',
107
+ 'clrSchemeMapping',
108
+ 'doNotIncludeSubdocsInStats',
109
+ 'doNotAutoCompressPictures',
110
+ 'forceUpgrade',
111
+ 'captions',
112
+ 'readModeInkLockDown',
113
+ 'smartTagType',
114
+ 'schemaLibrary',
115
+ 'shapeDefaults',
116
+ 'doNotEmbedSmartTags',
117
+ 'decimalSymbol',
118
+ 'listSeparator',
119
+ ];
120
+ /**
121
+ * Active un réglage booléen : créé à sa place dans l'ordre du schéma s'il manque (avec
122
+ * les attributs donnés), `w:val` désactivant retiré s'il est à `false` (sans `w:val`,
123
+ * `ST_OnOff` vaut vrai). Rend vrai si la partie a changé.
124
+ */
125
+ function switchOn(root, localName, attributes = {}) {
126
+ const existing = childNamed(root, localName);
127
+ if (!existing) {
128
+ insertOrdered(root, wordElement(root, localName, attributes), SETTINGS_ORDER);
129
+ return true;
130
+ }
131
+ if (!OFF_VALUES.has(wordAttr(existing, 'val').trim().toLowerCase()))
132
+ return false;
133
+ removeWordAttr(existing, 'val');
134
+ return true;
135
+ }
136
+ /**
137
+ * Pose les réglages demandés dans `settings.xml` du gabarit. Rend le chemin de la partie
138
+ * si elle a été réécrite ou créée, `null` sinon.
139
+ */
140
+ export async function ensureSettings(input) {
141
+ if (!input.updateFields && !input.evenAndOddHeaders)
142
+ return null;
143
+ let path = await input.pkg.related(input.mainPart, '/settings');
144
+ let doc = path ? await input.template.dom(path) : null;
145
+ let created = false;
146
+ if (!doc) {
147
+ path = `${directoryOf(input.mainPart)}${SETTINGS_FILE}`;
148
+ doc = input.template.parse(`<w:settings xmlns:w="${W_NS}"/>`);
149
+ input.template.create(path, doc, DECLARATION);
150
+ await input.relationships.ensure(REL_TYPE.settings, path, false);
151
+ input.overrides.set(path, PART_CONTENT_TYPES.settings);
152
+ created = true;
153
+ }
154
+ const root = doc.documentElement;
155
+ let changed = created;
156
+ if (input.updateFields)
157
+ changed = switchOn(root, 'updateFields', { val: 'true' }) || changed;
158
+ if (input.evenAndOddHeaders)
159
+ changed = switchOn(root, 'evenAndOddHeaders') || changed;
160
+ if (!changed || !path)
161
+ return null;
162
+ await input.template.markChanged(path);
163
+ return path;
164
+ }
165
+ //# sourceMappingURL=settings-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-merge.js","sourceRoot":"","sources":["../../../src/docx/writer/settings-merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ResolvedParagraphProps, ResolvedRunProps } from '../reader/types';
2
+ import { type ParagraphKey, type RunKey } from './style-strip';
3
+ /**
4
+ * Réconciliation du corps greffé avec les styles du gabarit. Le lecteur n'écrit dans le
5
+ * HTML que ce qui diffère des `docDefaults` du document, jamais ce que le style de
6
+ * paragraphe apporte : un run sans `font-family` signifie « police des docDefaults », même
7
+ * si le style du paragraphe en impose une autre (le run d'origine portait alors cette
8
+ * police en propriété directe, que l'import a jugée redondante). Pour que le document
9
+ * ressorte comme l'original, toute propriété **absente** du run ou du paragraphe généré
10
+ * dont le style résolu diffère des `docDefaults` est réécrite en propriété directe à la
11
+ * valeur des `docDefaults` (ou à « rien » : `w:b w:val="0"`, `w:u w:val="none"`, bordure
12
+ * `nil`…).
13
+ */
14
+ /** Ordre du schéma des enfants de `w:pPr` que la greffe peut écrire. */
15
+ export declare const PPR_ORDER: readonly string[];
16
+ /** Ordre du schéma des enfants de `w:rPr` que la greffe peut écrire. */
17
+ export declare const RPR_ORDER: readonly string[];
18
+ /**
19
+ * Propriétés de paragraphe absentes du `w:pPr` dont le style résolu (`base`) diffère des
20
+ * `docDefaults` : réécrites à la valeur des `docDefaults`. Rend le `w:pPr`, créé au besoin.
21
+ */
22
+ export declare function reconcileParagraph(paragraph: Element, existing: Element | null, direct: ReadonlySet<ParagraphKey>, base: ResolvedParagraphProps, defaults: ResolvedParagraphProps): Element | null;
23
+ /**
24
+ * Propriétés de run absentes du `w:rPr` dont le style de paragraphe résolu (`base`)
25
+ * diffère des `docDefaults` : réécrites à la valeur des `docDefaults`. Rend le `w:rPr`,
26
+ * créé au besoin.
27
+ */
28
+ export declare function reconcileRun(run: Element, existing: Element | null, direct: ReadonlySet<RunKey>, base: ResolvedRunProps, defaults: ResolvedRunProps): Element | null;
29
+ //# sourceMappingURL=style-reconcile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-reconcile.d.ts","sourceRoot":"","sources":["../../../src/docx/writer/style-reconcile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAe,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5E;;;;;;;;;;GAUG;AAEH,wEAAwE;AACxE,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAqCtC,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAwCtC,CAAC;AAyBF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,OAAO,GAAG,IAAI,EACxB,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,EACjC,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,GAAG,IAAI,CAkHhB;AAkBD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,OAAO,GAAG,IAAI,EACxB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,GAAG,IAAI,CAqEhB"}
@@ -0,0 +1,319 @@
1
+ import { highlightName } from '../../export/css';
2
+ import { paragraphBorderSpace } from '../../export/styles';
3
+ import { childNamed } from '../preprocess/xml-utils';
4
+ import { sameBorders } from './style-strip';
5
+ import { createSibling, ensureChild, insertOrdered, setWordAttr, wordElement } from './xml-io';
6
+ /**
7
+ * Réconciliation du corps greffé avec les styles du gabarit. Le lecteur n'écrit dans le
8
+ * HTML que ce qui diffère des `docDefaults` du document, jamais ce que le style de
9
+ * paragraphe apporte : un run sans `font-family` signifie « police des docDefaults », même
10
+ * si le style du paragraphe en impose une autre (le run d'origine portait alors cette
11
+ * police en propriété directe, que l'import a jugée redondante). Pour que le document
12
+ * ressorte comme l'original, toute propriété **absente** du run ou du paragraphe généré
13
+ * dont le style résolu diffère des `docDefaults` est réécrite en propriété directe à la
14
+ * valeur des `docDefaults` (ou à « rien » : `w:b w:val="0"`, `w:u w:val="none"`, bordure
15
+ * `nil`…).
16
+ */
17
+ /** Ordre du schéma des enfants de `w:pPr` que la greffe peut écrire. */
18
+ export const PPR_ORDER = [
19
+ 'pStyle',
20
+ 'keepNext',
21
+ 'keepLines',
22
+ 'pageBreakBefore',
23
+ 'framePr',
24
+ 'widowControl',
25
+ 'numPr',
26
+ 'suppressLineNumbers',
27
+ 'pBdr',
28
+ 'shd',
29
+ 'tabs',
30
+ 'suppressAutoHyphens',
31
+ 'kinsoku',
32
+ 'wordWrap',
33
+ 'overflowPunct',
34
+ 'topLinePunct',
35
+ 'autoSpaceDE',
36
+ 'autoSpaceDN',
37
+ 'bidi',
38
+ 'adjustRightInd',
39
+ 'snapToGrid',
40
+ 'spacing',
41
+ 'ind',
42
+ 'contextualSpacing',
43
+ 'mirrorIndents',
44
+ 'suppressOverlap',
45
+ 'jc',
46
+ 'textDirection',
47
+ 'textAlignment',
48
+ 'textboxTightWrap',
49
+ 'outlineLvl',
50
+ 'divId',
51
+ 'cnfStyle',
52
+ 'rPr',
53
+ 'sectPr',
54
+ 'pPrChange',
55
+ ];
56
+ /** Ordre du schéma des enfants de `w:rPr` que la greffe peut écrire. */
57
+ export const RPR_ORDER = [
58
+ 'rStyle',
59
+ 'rFonts',
60
+ 'b',
61
+ 'bCs',
62
+ 'i',
63
+ 'iCs',
64
+ 'caps',
65
+ 'smallCaps',
66
+ 'strike',
67
+ 'dstrike',
68
+ 'outline',
69
+ 'shadow',
70
+ 'emboss',
71
+ 'imprint',
72
+ 'noProof',
73
+ 'snapToGrid',
74
+ 'vanish',
75
+ 'webHidden',
76
+ 'color',
77
+ 'spacing',
78
+ 'w',
79
+ 'kern',
80
+ 'position',
81
+ 'sz',
82
+ 'szCs',
83
+ 'highlight',
84
+ 'u',
85
+ 'effect',
86
+ 'bdr',
87
+ 'shd',
88
+ 'fitText',
89
+ 'vertAlign',
90
+ 'rtl',
91
+ 'cs',
92
+ 'em',
93
+ 'lang',
94
+ 'eastAsianLayout',
95
+ 'specVanish',
96
+ 'oMath',
97
+ ];
98
+ /** `#rrggbb` → `RRGGBB` ; absent → `auto`. */
99
+ function wordColor(css) {
100
+ return css ? css.replace(/^#/, '').toUpperCase() : 'auto';
101
+ }
102
+ function twips(points) {
103
+ return String(Math.round((points ?? 0) * 20));
104
+ }
105
+ /**
106
+ * Bordure du contrat → `w:val`, `w:sz` (huitièmes de point), `w:space`, `w:color`. Le
107
+ * contrat `BlockBorder` ne porte pas l'espace texte-trait : il est déduit de la
108
+ * composition de l'encadré (voir `paragraphBorderSpace`).
109
+ */
110
+ function borderAttributes(border, sides) {
111
+ return {
112
+ val: border.style === 'solid' ? 'single' : border.style,
113
+ sz: String(Math.max(2, Math.round(border.widthPt * 8))),
114
+ space: String(paragraphBorderSpace(border.side, sides)),
115
+ color: wordColor(border.color),
116
+ };
117
+ }
118
+ /**
119
+ * Propriétés de paragraphe absentes du `w:pPr` dont le style résolu (`base`) diffère des
120
+ * `docDefaults` : réécrites à la valeur des `docDefaults`. Rend le `w:pPr`, créé au besoin.
121
+ */
122
+ export function reconcileParagraph(paragraph, existing, direct, base, defaults) {
123
+ let pPr = existing;
124
+ const container = () => {
125
+ if (!pPr) {
126
+ pPr = createSibling(paragraph, 'pPr');
127
+ paragraph.insertBefore(pPr, paragraph.firstChild);
128
+ }
129
+ return pPr;
130
+ };
131
+ const missing = (key) => !direct.has(key);
132
+ const align = (value) => value === undefined || value === 'left' ? undefined : value;
133
+ // Une numérotation portée par le style sans liste dans le HTML : annulée (`w:numId` 0),
134
+ // comme Word l'écrit quand on retire la puce d'un paragraphe de style numéroté.
135
+ if (base.numbering && !(existing && childNamed(existing, 'numPr'))) {
136
+ const numPr = wordElement(paragraph, 'numPr');
137
+ numPr.appendChild(wordElement(paragraph, 'ilvl', { val: '0' }));
138
+ numPr.appendChild(wordElement(paragraph, 'numId', { val: '0' }));
139
+ insertOrdered(container(), numPr, PPR_ORDER);
140
+ }
141
+ if (missing('align') && align(base.align) !== align(defaults.align)) {
142
+ const value = defaults.align === 'justify' ? 'both' : (defaults.align ?? 'left');
143
+ insertOrdered(container(), wordElement(paragraph, 'jc', { val: value }), PPR_ORDER);
144
+ }
145
+ const spacing = {};
146
+ if (missing('before') && base.spacingBeforePt !== defaults.spacingBeforePt) {
147
+ spacing.before = twips(defaults.spacingBeforePt);
148
+ }
149
+ if (missing('after') && base.spacingAfterPt !== defaults.spacingAfterPt) {
150
+ spacing.after = twips(defaults.spacingAfterPt);
151
+ }
152
+ if (missing('line') &&
153
+ (base.lineHeight !== defaults.lineHeight || base.lineHeightPt !== defaults.lineHeightPt)) {
154
+ if (defaults.lineHeightPt !== undefined) {
155
+ spacing.line = twips(defaults.lineHeightPt);
156
+ spacing.lineRule = 'exact';
157
+ }
158
+ else {
159
+ spacing.line = String(Math.round((defaults.lineHeight ?? 1) * 240));
160
+ spacing.lineRule = 'auto';
161
+ }
162
+ }
163
+ if (Object.keys(spacing).length > 0) {
164
+ const element = ensureChild(container(), 'spacing', PPR_ORDER);
165
+ for (const [name, value] of Object.entries(spacing))
166
+ setWordAttr(element, name, value);
167
+ }
168
+ const indent = {};
169
+ // Dans une liste, le niveau de numérotation porte le retrait et l'import l'a retiré du
170
+ // HTML : un paragraphe numéroté sans `margin-left` garde celui de sa numérotation.
171
+ const numbered = existing !== null && childNamed(existing, 'numPr') !== null;
172
+ if (!numbered && missing('left') && base.indentLeftPt !== defaults.indentLeftPt) {
173
+ indent.left = twips(defaults.indentLeftPt);
174
+ }
175
+ if (!numbered && missing('right') && base.indentRightPt !== defaults.indentRightPt) {
176
+ indent.right = twips(defaults.indentRightPt);
177
+ }
178
+ if (!numbered && missing('first') && base.indentFirstLinePt !== defaults.indentFirstLinePt) {
179
+ const first = defaults.indentFirstLinePt ?? 0;
180
+ if (first < 0)
181
+ indent.hanging = twips(-first);
182
+ else
183
+ indent.firstLine = twips(first);
184
+ }
185
+ if (Object.keys(indent).length > 0) {
186
+ const element = ensureChild(container(), 'ind', PPR_ORDER);
187
+ for (const [name, value] of Object.entries(indent))
188
+ setWordAttr(element, name, value);
189
+ }
190
+ if (missing('borders') && !sameBorders(base.borders, defaults.borders)) {
191
+ const pBdr = wordElement(paragraph, 'pBdr');
192
+ const sides = new Map();
193
+ const defaultSides = new Set((defaults.borders ?? []).map((border) => border.side));
194
+ for (const border of base.borders ?? []) {
195
+ sides.set(border.side, wordElement(paragraph, border.side, { val: 'nil' }));
196
+ }
197
+ for (const border of defaults.borders ?? []) {
198
+ sides.set(border.side, wordElement(paragraph, border.side, borderAttributes(border, defaultSides)));
199
+ }
200
+ for (const side of ['top', 'left', 'bottom', 'right', 'between']) {
201
+ const element = sides.get(side);
202
+ if (element)
203
+ pBdr.appendChild(element);
204
+ }
205
+ insertOrdered(container(), pBdr, PPR_ORDER);
206
+ }
207
+ if (missing('shading') && base.shading !== defaults.shading) {
208
+ insertOrdered(container(), wordElement(paragraph, 'shd', {
209
+ val: 'clear',
210
+ color: 'auto',
211
+ fill: wordColor(defaults.shading),
212
+ }), PPR_ORDER);
213
+ }
214
+ if (missing('keepNext') && Boolean(base.keepWithNext) !== Boolean(defaults.keepWithNext)) {
215
+ insertOrdered(container(), wordElement(paragraph, 'keepNext', { val: defaults.keepWithNext ? '1' : '0' }), PPR_ORDER);
216
+ }
217
+ if (missing('pageBreakBefore') &&
218
+ Boolean(base.pageBreakBefore) !== Boolean(defaults.pageBreakBefore)) {
219
+ insertOrdered(container(), wordElement(paragraph, 'pageBreakBefore', { val: defaults.pageBreakBefore ? '1' : '0' }), PPR_ORDER);
220
+ }
221
+ return pPr;
222
+ }
223
+ /** `w:u w:val` d'un style de trait du contrat. */
224
+ function underlineValue(style) {
225
+ switch (style) {
226
+ case 'double':
227
+ return 'double';
228
+ case 'dotted':
229
+ return 'dotted';
230
+ case 'dashed':
231
+ return 'dash';
232
+ case 'wavy':
233
+ return 'wave';
234
+ default:
235
+ return 'single';
236
+ }
237
+ }
238
+ /**
239
+ * Propriétés de run absentes du `w:rPr` dont le style de paragraphe résolu (`base`)
240
+ * diffère des `docDefaults` : réécrites à la valeur des `docDefaults`. Rend le `w:rPr`,
241
+ * créé au besoin.
242
+ */
243
+ export function reconcileRun(run, existing, direct, base, defaults) {
244
+ let rPr = existing;
245
+ const add = (localName, attributes = {}) => {
246
+ if (!rPr) {
247
+ rPr = createSibling(run, 'rPr');
248
+ run.insertBefore(rPr, run.firstChild);
249
+ }
250
+ insertOrdered(rPr, wordElement(run, localName, attributes), RPR_ORDER);
251
+ };
252
+ const missing = (key) => !direct.has(key);
253
+ if (missing('fontFamily') && base.fontFamily !== defaults.fontFamily && defaults.fontFamily) {
254
+ const family = defaults.fontFamily;
255
+ add('rFonts', { ascii: family, hAnsi: family, cs: family, eastAsia: family });
256
+ }
257
+ if (missing('bold') && Boolean(base.bold) !== Boolean(defaults.bold)) {
258
+ const val = defaults.bold ? '1' : '0';
259
+ add('b', { val });
260
+ add('bCs', { val });
261
+ }
262
+ if (missing('italic') && Boolean(base.italic) !== Boolean(defaults.italic)) {
263
+ const val = defaults.italic ? '1' : '0';
264
+ add('i', { val });
265
+ add('iCs', { val });
266
+ }
267
+ if (missing('caps') && base.caps !== defaults.caps) {
268
+ if (base.caps === 'all' && defaults.caps !== 'all')
269
+ add('caps', { val: '0' });
270
+ if (base.caps === 'small' && defaults.caps !== 'small')
271
+ add('smallCaps', { val: '0' });
272
+ if (defaults.caps === 'all')
273
+ add('caps');
274
+ if (defaults.caps === 'small')
275
+ add('smallCaps');
276
+ }
277
+ if (missing('strike') && (base.strike ?? null) !== (defaults.strike ?? null)) {
278
+ if (defaults.strike === 'double')
279
+ add('dstrike');
280
+ else if (defaults.strike)
281
+ add('strike');
282
+ else {
283
+ add('strike', { val: '0' });
284
+ if (base.strike === 'double')
285
+ add('dstrike', { val: '0' });
286
+ }
287
+ }
288
+ if (missing('color') && base.color !== defaults.color) {
289
+ add('color', { val: wordColor(defaults.color) });
290
+ }
291
+ if (missing('letterSpacing') && base.letterSpacingPt !== defaults.letterSpacingPt) {
292
+ add('spacing', { val: twips(defaults.letterSpacingPt) });
293
+ }
294
+ if (missing('fontSizePt') && base.fontSizePt !== defaults.fontSizePt) {
295
+ const val = String(Math.round((defaults.fontSizePt ?? 10) * 2));
296
+ add('sz', { val });
297
+ add('szCs', { val });
298
+ }
299
+ if (missing('highlight') && base.highlight !== defaults.highlight) {
300
+ const name = defaults.highlight ? highlightName(wordColor(defaults.highlight)) : 'none';
301
+ if (name)
302
+ add('highlight', { val: name });
303
+ }
304
+ if (missing('underline') && (base.underline ?? null) !== (defaults.underline ?? null)) {
305
+ add('u', { val: defaults.underline ? underlineValue(defaults.underline) : 'none' });
306
+ }
307
+ if (missing('superscript') &&
308
+ (Boolean(base.superscript) !== Boolean(defaults.superscript) ||
309
+ Boolean(base.subscript) !== Boolean(defaults.subscript))) {
310
+ const val = defaults.superscript
311
+ ? 'superscript'
312
+ : defaults.subscript
313
+ ? 'subscript'
314
+ : 'baseline';
315
+ add('vertAlign', { val });
316
+ }
317
+ return rPr;
318
+ }
319
+ //# sourceMappingURL=style-reconcile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-reconcile.js","sourceRoot":"","sources":["../../../src/docx/writer/style-reconcile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { BlockBorder } from '@aster-editor/core';
2
+ import type { ResolvedParagraphProps, ResolvedRunProps } from '../reader/types';
3
+ /**
4
+ * Retrait des propriétés directes redondantes du corps greffé. Le corps généré porte en
5
+ * propriétés directes tout ce que l'éditeur affichait, y compris ce qui venait du style
6
+ * (interligne du `Normal`, italique d'une `Citation`…). Chaque élément de `w:pPr` /
7
+ * `w:rPr` dont la valeur résolue **avec** lui (`full`) égale la valeur résolue **sans** lui
8
+ * (`base`, le style seul) est retiré ; ne restent que les vraies surcharges. Ce fichier ne
9
+ * fait que retirer ; `style-reconcile.ts` réécrit ce qui manque.
10
+ */
11
+ /** Propriétés de paragraphe que la greffe sait retirer ou réécrire. */
12
+ export type ParagraphKey = 'align' | 'before' | 'after' | 'line' | 'left' | 'right' | 'first' | 'borders' | 'shading' | 'keepNext' | 'pageBreakBefore';
13
+ /** Propriétés de run que la greffe sait retirer ou réécrire. */
14
+ export type RunKey = 'fontFamily' | 'fontSizePt' | 'bold' | 'italic' | 'underline' | 'strike' | 'color' | 'highlight' | 'superscript' | 'letterSpacing' | 'caps';
15
+ /** Clés de paragraphe portées en propriété directe par un `w:pPr`. */
16
+ export declare function directParagraphKeys(pPr: Element): Set<ParagraphKey>;
17
+ /** Clés de run portées en propriété directe par un `w:rPr`. */
18
+ export declare function directRunKeys(rPr: Element): Set<RunKey>;
19
+ /** Clés de run qu'un style de caractère pose lui-même (sa résolution sur les `docDefaults` en diffère). */
20
+ export declare function ownedRunKeys(owned: ResolvedRunProps, defaults: ResolvedRunProps): RunKey[];
21
+ /** Copie d'un conteneur de propriétés réduite à sa référence de style (`w:pStyle` / `w:rStyle`). */
22
+ export declare function styleOnly(properties: Element, styleElement: string): Element | null;
23
+ /** Égalité structurelle de deux jeux de bordures du contrat. */
24
+ export declare function sameBorders(a: readonly BlockBorder[] | undefined, b: readonly BlockBorder[] | undefined): boolean;
25
+ /**
26
+ * Propriétés de paragraphe (`w:pPr`) : chaque élément dont la valeur résolue avec lui
27
+ * (`full`) égale la valeur résolue sans lui (`base`) est retiré. `w:spacing` et `w:ind`
28
+ * sont traités attribut par attribut.
29
+ */
30
+ export declare function stripParagraphProperties(pPr: Element, full: ResolvedParagraphProps, base: ResolvedParagraphProps): void;
31
+ /** Propriétés de run (`w:rPr`) : même principe, élément par élément. */
32
+ export declare function stripRunProperties(rPr: Element, full: ResolvedRunProps, base: ResolvedRunProps): void;
33
+ //# sourceMappingURL=style-strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-strip.d.ts","sourceRoot":"","sources":["../../../src/docx/writer/style-strip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGhF;;;;;;;GAOG;AAEH,uEAAuE;AACvE,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,QAAQ,GACR,OAAO,GACP,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,SAAS,GACT,SAAS,GACT,UAAU,GACV,iBAAiB,CAAC;AAEtB,gEAAgE;AAChE,MAAM,MAAM,MAAM,GACd,YAAY,GACZ,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,OAAO,GACP,WAAW,GACX,aAAa,GACb,eAAe,GACf,MAAM,CAAC;AAEX,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,CAkCnE;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CA6CvD;AAED,2GAA2G;AAC3G,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAmB1F;AAED,oGAAoG;AACpG,wBAAgB,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAMnF;AAED,gEAAgE;AAChE,wBAAgB,WAAW,CACzB,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,EACrC,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,GACpC,OAAO,CAET;AAQD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,sBAAsB,EAC5B,IAAI,EAAE,sBAAsB,GAC3B,IAAI,CA+DN;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAwDN"}