@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.
- package/README.md +204 -82
- package/dist/docx/compare/align.d.ts +24 -0
- package/dist/docx/compare/align.d.ts.map +1 -0
- package/dist/docx/compare/align.js +217 -0
- package/dist/docx/compare/align.js.map +1 -0
- package/dist/docx/compare/compare-blocks.d.ts +29 -0
- package/dist/docx/compare/compare-blocks.d.ts.map +1 -0
- package/dist/docx/compare/compare-blocks.js +234 -0
- package/dist/docx/compare/compare-blocks.js.map +1 -0
- package/dist/docx/compare/compare-context.d.ts +25 -0
- package/dist/docx/compare/compare-context.d.ts.map +1 -0
- package/dist/docx/compare/compare-context.js +31 -0
- package/dist/docx/compare/compare-context.js.map +1 -0
- package/dist/docx/compare/compare-docx.d.ts +4 -0
- package/dist/docx/compare/compare-docx.d.ts.map +1 -0
- package/dist/docx/compare/compare-docx.js +173 -0
- package/dist/docx/compare/compare-docx.js.map +1 -0
- package/dist/docx/compare/compare-tables.d.ts +13 -0
- package/dist/docx/compare/compare-tables.d.ts.map +1 -0
- package/dist/docx/compare/compare-tables.js +47 -0
- package/dist/docx/compare/compare-tables.js.map +1 -0
- package/dist/docx/compare/model-borders.d.ts +27 -0
- package/dist/docx/compare/model-borders.d.ts.map +1 -0
- package/dist/docx/compare/model-borders.js +41 -0
- package/dist/docx/compare/model-borders.js.map +1 -0
- package/dist/docx/compare/model-paragraph.d.ts +25 -0
- package/dist/docx/compare/model-paragraph.d.ts.map +1 -0
- package/dist/docx/compare/model-paragraph.js +309 -0
- package/dist/docx/compare/model-paragraph.js.map +1 -0
- package/dist/docx/compare/model-sections.d.ts +11 -0
- package/dist/docx/compare/model-sections.d.ts.map +1 -0
- package/dist/docx/compare/model-sections.js +97 -0
- package/dist/docx/compare/model-sections.js.map +1 -0
- package/dist/docx/compare/model.d.ts +113 -0
- package/dist/docx/compare/model.d.ts.map +1 -0
- package/dist/docx/compare/model.js +214 -0
- package/dist/docx/compare/model.js.map +1 -0
- package/dist/docx/compare/parts.d.ts +40 -0
- package/dist/docx/compare/parts.d.ts.map +1 -0
- package/dist/docx/compare/parts.js +113 -0
- package/dist/docx/compare/parts.js.map +1 -0
- package/dist/docx/compare/tally.d.ts +23 -0
- package/dist/docx/compare/tally.d.ts.map +1 -0
- package/dist/docx/compare/tally.js +94 -0
- package/dist/docx/compare/tally.js.map +1 -0
- package/dist/docx/compare/types.d.ts +55 -0
- package/dist/docx/compare/types.d.ts.map +1 -0
- package/dist/docx/compare/types.js +2 -0
- package/dist/docx/compare/types.js.map +1 -0
- package/dist/docx/compare/values.d.ts +13 -0
- package/dist/docx/compare/values.d.ts.map +1 -0
- package/dist/docx/compare/values.js +44 -0
- package/dist/docx/compare/values.js.map +1 -0
- package/dist/docx/import-docx.d.ts.map +1 -1
- package/dist/docx/import-docx.js +57 -2
- package/dist/docx/import-docx.js.map +1 -1
- package/dist/docx/preprocess/variables.d.ts.map +1 -1
- package/dist/docx/preprocess/variables.js +2 -2
- package/dist/docx/preprocess/variables.js.map +1 -1
- package/dist/docx/preprocess/xml-utils.d.ts +7 -0
- package/dist/docx/preprocess/xml-utils.d.ts.map +1 -1
- package/dist/docx/preprocess/xml-utils.js +9 -0
- package/dist/docx/preprocess/xml-utils.js.map +1 -1
- package/dist/docx/reader/headers.d.ts +17 -0
- package/dist/docx/reader/headers.d.ts.map +1 -0
- package/dist/docx/reader/headers.js +64 -0
- package/dist/docx/reader/headers.js.map +1 -0
- package/dist/docx/reader/html.d.ts +12 -0
- package/dist/docx/reader/html.d.ts.map +1 -0
- package/dist/docx/reader/html.js +27 -0
- package/dist/docx/reader/html.js.map +1 -0
- package/dist/docx/reader/images.d.ts +27 -0
- package/dist/docx/reader/images.d.ts.map +1 -0
- package/dist/docx/reader/images.js +288 -0
- package/dist/docx/reader/images.js.map +1 -0
- package/dist/docx/reader/index.d.ts +10 -0
- package/dist/docx/reader/index.d.ts.map +1 -0
- package/dist/docx/reader/index.js +177 -0
- package/dist/docx/reader/index.js.map +1 -0
- package/dist/docx/reader/lists.d.ts +44 -0
- package/dist/docx/reader/lists.d.ts.map +1 -0
- package/dist/docx/reader/lists.js +360 -0
- package/dist/docx/reader/lists.js.map +1 -0
- package/dist/docx/reader/lost.d.ts +30 -0
- package/dist/docx/reader/lost.d.ts.map +1 -0
- package/dist/docx/reader/lost.js +215 -0
- package/dist/docx/reader/lost.js.map +1 -0
- package/dist/docx/reader/notes.d.ts +4 -0
- package/dist/docx/reader/notes.d.ts.map +1 -0
- package/dist/docx/reader/notes.js +112 -0
- package/dist/docx/reader/notes.js.map +1 -0
- package/dist/docx/reader/package.d.ts +16 -0
- package/dist/docx/reader/package.d.ts.map +1 -0
- package/dist/docx/reader/package.js +138 -0
- package/dist/docx/reader/package.js.map +1 -0
- package/dist/docx/reader/paragraphs.d.ts +15 -0
- package/dist/docx/reader/paragraphs.d.ts.map +1 -0
- package/dist/docx/reader/paragraphs.js +162 -0
- package/dist/docx/reader/paragraphs.js.map +1 -0
- package/dist/docx/reader/properties.d.ts +90 -0
- package/dist/docx/reader/properties.d.ts.map +1 -0
- package/dist/docx/reader/properties.js +402 -0
- package/dist/docx/reader/properties.js.map +1 -0
- package/dist/docx/reader/runs.d.ts +49 -0
- package/dist/docx/reader/runs.d.ts.map +1 -0
- package/dist/docx/reader/runs.js +442 -0
- package/dist/docx/reader/runs.js.map +1 -0
- package/dist/docx/reader/sections.d.ts +36 -0
- package/dist/docx/reader/sections.d.ts.map +1 -0
- package/dist/docx/reader/sections.js +158 -0
- package/dist/docx/reader/sections.js.map +1 -0
- package/dist/docx/reader/styles.d.ts +24 -0
- package/dist/docx/reader/styles.d.ts.map +1 -0
- package/dist/docx/reader/styles.js +383 -0
- package/dist/docx/reader/styles.js.map +1 -0
- package/dist/docx/reader/tables.d.ts +6 -0
- package/dist/docx/reader/tables.d.ts.map +1 -0
- package/dist/docx/reader/tables.js +175 -0
- package/dist/docx/reader/tables.js.map +1 -0
- package/dist/docx/reader/test-support.d.ts +25 -0
- package/dist/docx/reader/test-support.d.ts.map +1 -0
- package/dist/docx/reader/test-support.js +135 -0
- package/dist/docx/reader/test-support.js.map +1 -0
- package/dist/docx/reader/testing-blocks.d.ts +50 -0
- package/dist/docx/reader/testing-blocks.d.ts.map +1 -0
- package/dist/docx/reader/testing-blocks.js +302 -0
- package/dist/docx/reader/testing-blocks.js.map +1 -0
- package/dist/docx/reader/types.d.ts +181 -0
- package/dist/docx/reader/types.d.ts.map +1 -0
- package/dist/docx/reader/types.js +2 -0
- package/dist/docx/reader/types.js.map +1 -0
- package/dist/docx/reader/units-blocks.d.ts +75 -0
- package/dist/docx/reader/units-blocks.d.ts.map +1 -0
- package/dist/docx/reader/units-blocks.js +254 -0
- package/dist/docx/reader/units-blocks.js.map +1 -0
- package/dist/docx/reader/units.d.ts +72 -0
- package/dist/docx/reader/units.d.ts.map +1 -0
- package/dist/docx/reader/units.js +177 -0
- package/dist/docx/reader/units.js.map +1 -0
- package/dist/docx/types.d.ts +40 -2
- package/dist/docx/types.d.ts.map +1 -1
- package/dist/docx/writer/content-types.d.ts +30 -0
- package/dist/docx/writer/content-types.d.ts.map +1 -0
- package/dist/docx/writer/content-types.js +81 -0
- package/dist/docx/writer/content-types.js.map +1 -0
- package/dist/docx/writer/core-properties.d.ts +16 -0
- package/dist/docx/writer/core-properties.d.ts.map +1 -0
- package/dist/docx/writer/core-properties.js +64 -0
- package/dist/docx/writer/core-properties.js.map +1 -0
- package/dist/docx/writer/footnotes-merge.d.ts +30 -0
- package/dist/docx/writer/footnotes-merge.d.ts.map +1 -0
- package/dist/docx/writer/footnotes-merge.js +71 -0
- package/dist/docx/writer/footnotes-merge.js.map +1 -0
- package/dist/docx/writer/graft.d.ts +41 -0
- package/dist/docx/writer/graft.d.ts.map +1 -0
- package/dist/docx/writer/graft.js +277 -0
- package/dist/docx/writer/graft.js.map +1 -0
- package/dist/docx/writer/header-footer-graft.d.ts +34 -0
- package/dist/docx/writer/header-footer-graft.d.ts.map +1 -0
- package/dist/docx/writer/header-footer-graft.js +155 -0
- package/dist/docx/writer/header-footer-graft.js.map +1 -0
- package/dist/docx/writer/header-footer-variables.d.ts +25 -0
- package/dist/docx/writer/header-footer-variables.d.ts.map +1 -0
- package/dist/docx/writer/header-footer-variables.js +101 -0
- package/dist/docx/writer/header-footer-variables.js.map +1 -0
- package/dist/docx/writer/media.d.ts +32 -0
- package/dist/docx/writer/media.d.ts.map +1 -0
- package/dist/docx/writer/media.js +88 -0
- package/dist/docx/writer/media.js.map +1 -0
- package/dist/docx/writer/numbering-merge.d.ts +37 -0
- package/dist/docx/writer/numbering-merge.d.ts.map +1 -0
- package/dist/docx/writer/numbering-merge.js +140 -0
- package/dist/docx/writer/numbering-merge.js.map +1 -0
- package/dist/docx/writer/relationships.d.ts +63 -0
- package/dist/docx/writer/relationships.d.ts.map +1 -0
- package/dist/docx/writer/relationships.js +127 -0
- package/dist/docx/writer/relationships.js.map +1 -0
- package/dist/docx/writer/settings-merge.d.ts +21 -0
- package/dist/docx/writer/settings-merge.d.ts.map +1 -0
- package/dist/docx/writer/settings-merge.js +165 -0
- package/dist/docx/writer/settings-merge.js.map +1 -0
- package/dist/docx/writer/style-reconcile.d.ts +29 -0
- package/dist/docx/writer/style-reconcile.d.ts.map +1 -0
- package/dist/docx/writer/style-reconcile.js +319 -0
- package/dist/docx/writer/style-reconcile.js.map +1 -0
- package/dist/docx/writer/style-strip.d.ts +33 -0
- package/dist/docx/writer/style-strip.d.ts.map +1 -0
- package/dist/docx/writer/style-strip.js +267 -0
- package/dist/docx/writer/style-strip.js.map +1 -0
- package/dist/docx/writer/styles-merge.d.ts +57 -0
- package/dist/docx/writer/styles-merge.d.ts.map +1 -0
- package/dist/docx/writer/styles-merge.js +184 -0
- package/dist/docx/writer/styles-merge.js.map +1 -0
- package/dist/docx/writer/template.d.ts +48 -0
- package/dist/docx/writer/template.d.ts.map +1 -0
- package/dist/docx/writer/template.js +280 -0
- package/dist/docx/writer/template.js.map +1 -0
- package/dist/docx/writer/testing.d.ts +52 -0
- package/dist/docx/writer/testing.d.ts.map +1 -0
- package/dist/docx/writer/testing.js +318 -0
- package/dist/docx/writer/testing.js.map +1 -0
- package/dist/docx/writer/xml-io.d.ts +90 -0
- package/dist/docx/writer/xml-io.d.ts.map +1 -0
- package/dist/docx/writer/xml-io.js +215 -0
- package/dist/docx/writer/xml-io.js.map +1 -0
- package/dist/export/blocks.d.ts.map +1 -1
- package/dist/export/blocks.js +149 -12
- package/dist/export/blocks.js.map +1 -1
- package/dist/export/context.d.ts +34 -2
- package/dist/export/context.d.ts.map +1 -1
- package/dist/export/context.js +28 -2
- package/dist/export/context.js.map +1 -1
- package/dist/export/css.d.ts +58 -0
- package/dist/export/css.d.ts.map +1 -1
- package/dist/export/css.js +194 -0
- package/dist/export/css.js.map +1 -1
- package/dist/export/dom.d.ts +2 -0
- package/dist/export/dom.d.ts.map +1 -1
- package/dist/export/dom.js +2 -0
- package/dist/export/dom.js.map +1 -1
- package/dist/export/export-docx.d.ts +4 -0
- package/dist/export/export-docx.d.ts.map +1 -1
- package/dist/export/export-docx.js +57 -4
- package/dist/export/export-docx.js.map +1 -1
- package/dist/export/header-footer.d.ts +15 -1
- package/dist/export/header-footer.d.ts.map +1 -1
- package/dist/export/header-footer.js +37 -0
- package/dist/export/header-footer.js.map +1 -1
- package/dist/export/html-to-docx.d.ts +20 -2
- package/dist/export/html-to-docx.d.ts.map +1 -1
- package/dist/export/html-to-docx.js +40 -14
- package/dist/export/html-to-docx.js.map +1 -1
- package/dist/export/inline.d.ts +25 -3
- package/dist/export/inline.d.ts.map +1 -1
- package/dist/export/inline.js +91 -34
- package/dist/export/inline.js.map +1 -1
- package/dist/export/styles.d.ts +51 -7
- package/dist/export/styles.d.ts.map +1 -1
- package/dist/export/styles.js +121 -16
- package/dist/export/styles.js.map +1 -1
- package/dist/export/tables.d.ts.map +1 -1
- package/dist/export/tables.js +140 -12
- package/dist/export/tables.js.map +1 -1
- package/dist/export/types.d.ts +44 -5
- package/dist/export/types.d.ts.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- 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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAA0B,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,GAEZ,MAAM,UAAU,CAAC;AAElB;;;;;;;GAOG;AAEH,2EAA2E;AAC3E,MAAM,IAAI,GAAG,8DAA8D,CAAC;AAE5E,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,MAAM,WAAW,GAAG,yDAAyD,CAAC;AAE9E,0EAA0E;AAC1E,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvE,2GAA2G;AAC3G,MAAM,cAAc,GAAsB;IACxC,iBAAiB;IACjB,MAAM;IACN,MAAM;IACN,2BAA2B;IAC3B,mBAAmB;IACnB,4BAA4B;IAC5B,wBAAwB;IACxB,yBAAyB;IACzB,+BAA+B;IAC/B,gBAAgB;IAChB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,sBAAsB;IACtB,4BAA4B;IAC5B,4BAA4B;IAC5B,aAAa;IACb,oBAAoB;IACpB,uBAAuB;IACvB,oBAAoB;IACpB,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,YAAY;IACZ,uBAAuB;IACvB,qBAAqB;IACrB,cAAc;IACd,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;IACtB,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,wBAAwB;IACxB,iBAAiB;IACjB,oBAAoB;IACpB,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,kBAAkB;IAClB,wBAAwB;IACxB,8BAA8B;IAC9B,4BAA4B;IAC5B,mCAAmC;IACnC,iCAAiC;IACjC,qCAAqC;IACrC,6BAA6B;IAC7B,2BAA2B;IAC3B,oBAAoB;IACpB,sBAAsB;IACtB,yBAAyB;IACzB,eAAe;IACf,yBAAyB;IACzB,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,4BAA4B;IAC5B,gBAAgB;IAChB,oBAAoB;IACpB,2BAA2B;IAC3B,0BAA0B;IAC1B,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,aAAa;IACb,2BAA2B;IAC3B,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,4BAA4B;IAC5B,2BAA2B;IAC3B,cAAc;IACd,UAAU;IACV,qBAAqB;IACrB,cAAc;IACd,eAAe;IACf,eAAe;IACf,qBAAqB;IACrB,eAAe;IACf,eAAe;CAChB,CAAC;AAeF;;;;GAIG;AACH,SAAS,QAAQ,CACf,IAAa,EACb,SAAiB,EACjB,aAA+C,EAAE;IAEjD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAClF,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAyB;IAC5D,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,iBAAiB;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,EAAE,CAAC;QACxD,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,IAAI,KAAK,CAAC,CAAC;QAC9D,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACjE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACvD,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;IACjC,IAAI,OAAO,GAAG,OAAO,CAAC;IACtB,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,OAAO,CAAC;IAC7F,IAAI,KAAK,CAAC,iBAAiB;QAAE,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,OAAO,CAAC;IACtF,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAkC,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE/F;;;;;;;;;;GAUG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,SAAS,GAAsB;IAC1C,QAAQ;IACR,UAAU;IACV,WAAW;IACX,iBAAiB;IACjB,SAAS;IACT,cAAc;IACd,OAAO;IACP,qBAAqB;IACrB,MAAM;IACN,KAAK;IACL,MAAM;IACN,qBAAqB;IACrB,SAAS;IACT,UAAU;IACV,eAAe;IACf,cAAc;IACd,aAAa;IACb,aAAa;IACb,MAAM;IACN,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,KAAK;IACL,mBAAmB;IACnB,eAAe;IACf,iBAAiB;IACjB,IAAI;IACJ,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,YAAY;IACZ,OAAO;IACP,UAAU;IACV,KAAK;IACL,QAAQ;IACR,WAAW;CACZ,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,SAAS,GAAsB;IAC1C,QAAQ;IACR,QAAQ;IACR,GAAG;IACH,KAAK;IACL,GAAG;IACH,KAAK;IACL,MAAM;IACN,WAAW;IACX,QAAQ;IACR,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,OAAO;IACP,SAAS;IACT,GAAG;IACH,MAAM;IACN,UAAU;IACV,IAAI;IACJ,MAAM;IACN,WAAW;IACX,GAAG;IACH,QAAQ;IACR,KAAK;IACL,KAAK;IACL,SAAS;IACT,WAAW;IACX,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,iBAAiB;IACjB,YAAY;IACZ,OAAO;CACR,CAAC;AAEF,8CAA8C;AAC9C,SAAS,SAAS,CAAC,GAAuB;IACxC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5D,CAAC;AAED,SAAS,KAAK,CAAC,MAA0B;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAmB,EAAE,KAA0B;IACvE,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;QACvD,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,KAAK,EAAE,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAkB,EAClB,QAAwB,EACxB,MAAiC,EACjC,IAA4B,EAC5B,QAAgC;IAEhC,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,MAAM,SAAS,GAAG,GAAY,EAAE;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACtC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAW,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,CAAC,KAAyB,EAAsB,EAAE,CAC9D,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,wFAAwF;IACxF,gFAAgF;IAChF,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACjE,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;QACjF,aAAa,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC3E,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;QACxE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;IACD,IACE,OAAO,CAAC,MAAM,CAAC;QACf,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,CAAC,EACxF,CAAC;QACD,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC5C,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,uFAAuF;IACvF,mFAAmF;IACnF,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7E,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAAE,CAAC;QAChF,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;QACnF,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,iBAAiB,KAAK,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC3F,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;;YACzC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACxC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC5C,KAAK,CAAC,GAAG,CACP,MAAM,CAAC,IAAI,EACX,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAC5E,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;YACjE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,OAAO;gBAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,aAAa,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5D,aAAa,CACX,SAAS,EAAE,EACX,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE;YAC5B,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;SAClC,CAAC,EACF,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACzF,aAAa,CACX,SAAS,EAAE,EACX,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAC9E,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IACE,OAAO,CAAC,iBAAiB,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EACnE,CAAC;QACD,aAAa,CACX,SAAS,EAAE,EACX,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EACxF,SAAS,CACV,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kDAAkD;AAClD,SAAS,cAAc,CAAC,KAAiD;IACvE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAY,EACZ,QAAwB,EACxB,MAA2B,EAC3B,IAAsB,EACtB,QAA0B;IAE1B,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,MAAM,GAAG,GAAG,CAAC,SAAiB,EAAE,aAA+C,EAAE,EAAQ,EAAE;QACzF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QACD,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5F,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;QACnC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACtC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClB,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACxC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClB,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK;YAAE,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO;YAAE,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACvF,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK;YAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO;YAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QAC7E,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ;YAAE,GAAG,CAAC,SAAS,CAAC,CAAC;aAC5C,IAAI,QAAQ,CAAC,MAAM;YAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;aACnC,CAAC;YACJ,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;gBAAE,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtD,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;QAClF,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACnB,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACxF,IAAI,IAAI;YAAE,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC;QACtF,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IACE,OAAO,CAAC,aAAa,CAAC;QACtB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAC1D,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW;YAC9B,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,QAAQ,CAAC,SAAS;gBAClB,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,UAAU,CAAC;QACjB,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -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"}
|