@docx4j/core-ts 0.1.0 → 0.1.2
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 +410 -10
- package/dist/model/content/Body.d.mts +109 -4
- package/dist/model/content/Body.mjs +300 -29
- package/dist/model/content/Comment.d.mts +78 -0
- package/dist/model/content/Comment.mjs +429 -0
- package/dist/model/content/ContentControl.d.mts +173 -0
- package/dist/model/content/ContentControl.mjs +638 -0
- package/dist/model/content/Font.d.mts +48 -8
- package/dist/model/content/Font.mjs +55 -13
- package/dist/model/content/InlinePicture.d.mts +103 -0
- package/dist/model/content/InlinePicture.mjs +361 -0
- package/dist/model/content/List.d.mts +253 -0
- package/dist/model/content/List.mjs +778 -0
- package/dist/model/content/Paragraph.d.mts +213 -16
- package/dist/model/content/Paragraph.mjs +611 -57
- package/dist/model/content/Range.d.mts +48 -4
- package/dist/model/content/Range.mjs +161 -4
- package/dist/model/content/Table.d.mts +130 -0
- package/dist/model/content/Table.mjs +429 -0
- package/dist/model/content/TrackedChange.d.mts +96 -0
- package/dist/model/content/TrackedChange.mjs +352 -0
- package/dist/model/content/comments.d.mts +122 -0
- package/dist/model/content/comments.mjs +248 -0
- package/dist/model/content/index.d.mts +13 -3
- package/dist/model/content/index.mjs +15 -3
- package/dist/model/content/ooxml.d.mts +17 -0
- package/dist/model/content/ooxml.mjs +214 -0
- package/dist/model/content/styles.d.mts +21 -0
- package/dist/model/content/styles.mjs +86 -0
- package/dist/model/content/tracking.d.mts +104 -0
- package/dist/model/content/tracking.mjs +313 -0
- package/dist/model/content/tree.d.mts +56 -9
- package/dist/model/content/tree.mjs +104 -31
- package/dist/model/customxml/CustomXmlPart.d.mts +158 -0
- package/dist/model/customxml/CustomXmlPart.mjs +415 -0
- package/dist/model/customxml/CustomXmlPartCollection.d.mts +68 -0
- package/dist/model/customxml/CustomXmlPartCollection.mjs +183 -0
- package/dist/model/customxml/XmlMapping.d.mts +46 -0
- package/dist/model/customxml/XmlMapping.mjs +98 -0
- package/dist/model/customxml/bindings.d.mts +41 -0
- package/dist/model/customxml/bindings.mjs +230 -0
- package/dist/model/customxml/index.d.mts +7 -0
- package/dist/model/customxml/index.mjs +9 -0
- package/dist/model/customxml/insert.d.mts +20 -0
- package/dist/model/customxml/insert.mjs +22 -0
- package/dist/model/customxml/kinds.d.mts +103 -0
- package/dist/model/customxml/kinds.mjs +267 -0
- package/dist/model/customxml/xpath.d.mts +52 -0
- package/dist/model/customxml/xpath.mjs +205 -0
- package/dist/model/fonts/CJKToEnglish.d.mts +2 -0
- package/dist/model/fonts/CJKToEnglish.mjs +16 -0
- package/dist/model/fonts/FontFallback.d.mts +58 -0
- package/dist/model/fonts/FontFallback.mjs +219 -0
- package/dist/model/fonts/IdentityPlusMapper.d.mts +7 -0
- package/dist/model/fonts/IdentityPlusMapper.mjs +19 -0
- package/dist/model/fonts/LanguageTagToScriptMapping.d.mts +7 -0
- package/dist/model/fonts/LanguageTagToScriptMapping.mjs +67 -0
- package/dist/model/fonts/Mapper.d.mts +190 -0
- package/dist/model/fonts/Mapper.mjs +481 -0
- package/dist/model/fonts/PhysicalFont.d.mts +34 -0
- package/dist/model/fonts/PhysicalFont.mjs +62 -0
- package/dist/model/fonts/RunFontSelector.d.mts +194 -0
- package/dist/model/fonts/RunFontSelector.mjs +441 -0
- package/dist/model/fonts/ThemeFonts.d.mts +17 -0
- package/dist/model/fonts/ThemeFonts.mjs +76 -0
- package/dist/model/fonts/defaultTheme.d.mts +37 -0
- package/dist/model/fonts/defaultTheme.mjs +57 -0
- package/dist/model/fonts/families.generated.d.mts +11 -0
- package/dist/model/fonts/families.generated.mjs +17 -0
- package/dist/model/fonts/fontsInUse.d.mts +39 -0
- package/dist/model/fonts/fontsInUse.mjs +183 -0
- package/dist/model/fonts/index.d.mts +14 -0
- package/dist/model/fonts/index.mjs +29 -0
- package/dist/model/fonts/lookup.d.mts +5 -0
- package/dist/model/fonts/lookup.mjs +12 -0
- package/dist/model/fonts/registry.d.mts +31 -0
- package/dist/model/fonts/registry.mjs +103 -0
- package/dist/model/fonts/scripts.d.mts +2 -0
- package/dist/model/fonts/scripts.mjs +78 -0
- package/dist/model/fonts/substitutions.generated.d.mts +30 -0
- package/dist/model/fonts/substitutions.generated.mjs +12 -0
- package/dist/model/fonts/themes.generated.d.mts +6 -0
- package/dist/model/fonts/themes.generated.mjs +11 -0
- package/dist/model/index.d.mts +5 -0
- package/dist/model/index.mjs +13 -1
- package/dist/model/listnumbering/Emulator.d.mts +187 -0
- package/dist/model/listnumbering/Emulator.mjs +332 -0
- package/dist/model/listnumbering/definitions.d.mts +251 -0
- package/dist/model/listnumbering/definitions.mjs +571 -0
- package/dist/model/listnumbering/formats.d.mts +25 -0
- package/dist/model/listnumbering/formats.mjs +320 -0
- package/dist/model/listnumbering/index.d.mts +4 -0
- package/dist/model/listnumbering/index.mjs +15 -0
- package/dist/model/listnumbering/state.d.mts +97 -0
- package/dist/model/listnumbering/state.mjs +179 -0
- package/dist/model/properties/PropertyResolver.d.mts +216 -0
- package/dist/model/properties/PropertyResolver.mjs +524 -0
- package/dist/model/properties/catalogue.d.mts +179 -0
- package/dist/model/properties/catalogue.mjs +860 -0
- package/dist/model/properties/index.d.mts +4 -0
- package/dist/model/properties/index.mjs +9 -0
- package/dist/model/properties/log.d.mts +7 -0
- package/dist/model/properties/log.mjs +25 -0
- package/dist/model/properties/styleUtil.d.mts +112 -0
- package/dist/model/properties/styleUtil.mjs +359 -0
- package/dist/node/index.d.mts +1 -0
- package/dist/node/index.mjs +12 -0
- package/dist/office-js/document.d.mts +111 -0
- package/dist/office-js/document.mjs +267 -0
- package/dist/office-js/enums.d.mts +187 -0
- package/dist/office-js/enums.mjs +176 -0
- package/dist/office-js/errors.d.mts +29 -0
- package/dist/office-js/errors.mjs +39 -0
- package/dist/office-js/extras.d.mts +5 -0
- package/dist/office-js/extras.mjs +29 -0
- package/dist/office-js/fragment.d.mts +10 -0
- package/dist/office-js/fragment.mjs +23 -0
- package/dist/office-js/index.d.mts +183 -0
- package/dist/office-js/index.mjs +54 -0
- package/dist/office-js/proxy.d.mts +72 -0
- package/dist/office-js/proxy.mjs +279 -0
- package/dist/office-js/run.d.mts +32 -0
- package/dist/office-js/run.mjs +66 -0
- package/dist/office-js/supported.d.mts +7 -0
- package/dist/office-js/supported.generated.d.mts +1 -0
- package/dist/office-js/supported.generated.mjs +235 -0
- package/dist/office-js/supported.mjs +53 -0
- package/dist/office-js/toApiScript.d.mts +25 -0
- package/dist/office-js/toApiScript.mjs +394 -0
- package/dist/opc/ContentTypes.d.mts +11 -0
- package/dist/opc/ContentTypes.mjs +14 -0
- package/dist/opc/DirectoryPartStore.d.mts +47 -0
- package/dist/opc/DirectoryPartStore.mjs +123 -0
- package/dist/opc/exceptions.d.mts +30 -0
- package/dist/opc/exceptions.mjs +38 -0
- package/dist/opc/index.d.mts +1 -1
- package/dist/opc/index.mjs +1 -1
- package/dist/packages/OpcPackage.d.mts +19 -1
- package/dist/packages/OpcPackage.mjs +29 -0
- package/dist/packages/PresentationMLPackage.d.mts +71 -1
- package/dist/packages/PresentationMLPackage.mjs +179 -0
- package/dist/packages/SpreadsheetMLPackage.d.mts +30 -1
- package/dist/packages/SpreadsheetMLPackage.mjs +78 -0
- package/dist/packages/WordprocessingMLPackage.d.mts +124 -2
- package/dist/packages/WordprocessingMLPackage.mjs +309 -2
- package/dist/packages/index.d.mts +1 -1
- package/dist/packages/index.mjs +1 -1
- package/dist/parts/DefaultXmlPart.d.mts +18 -0
- package/dist/parts/DefaultXmlPart.mjs +34 -5
- package/dist/parts/Namespaces.d.mts +18 -0
- package/dist/parts/Namespaces.mjs +20 -0
- package/dist/parts/Part.d.mts +6 -0
- package/dist/parts/Part.mjs +13 -0
- package/dist/parts/PartRegistry.mjs +13 -1
- package/dist/parts/XmlPart.d.mts +33 -0
- package/dist/parts/XmlPart.mjs +105 -2
- package/dist/parts/pml/defaults.d.mts +6 -0
- package/dist/parts/pml/defaults.mjs +53 -0
- package/dist/parts/pml/index.d.mts +66 -3
- package/dist/parts/pml/index.mjs +206 -7
- package/dist/parts/pml/placeholders.d.mts +71 -0
- package/dist/parts/pml/placeholders.mjs +141 -0
- package/dist/parts/sml/index.d.mts +80 -1
- package/dist/parts/sml/index.mjs +154 -1
- package/dist/parts/wml/comments.d.mts +1 -0
- package/dist/parts/wml/comments.mjs +179 -0
- package/dist/parts/wml/defaultNumbering.d.mts +1 -0
- package/dist/parts/wml/defaultNumbering.mjs +216 -0
- package/dist/parts/wml/index.d.mts +121 -0
- package/dist/parts/wml/index.mjs +291 -0
- package/dist/xml/dom.mjs +1 -2
- package/package.json +25 -4
package/dist/parts/sml/index.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { XmlPart } from '../XmlPart.mjs';
|
|
2
|
+
import { DefaultXmlPart } from '../DefaultXmlPart.mjs';
|
|
2
3
|
import { BinaryPart } from '../BinaryPart.mjs';
|
|
3
4
|
import { ContentTypes } from '../../opc/ContentTypes.mjs';
|
|
4
5
|
import { Namespaces } from '../Namespaces.mjs';
|
|
6
|
+
import { Xlsx4jException } from '../../opc/exceptions.mjs';
|
|
5
7
|
const S = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main';
|
|
6
8
|
export class WorkbookPart extends XmlPart {
|
|
7
9
|
constructor(partName = '/xl/workbook.xml', contentType = ContentTypes.SPREADSHEETML_WORKBOOK) {
|
|
@@ -21,21 +23,110 @@ export class WorkbookPart extends XmlPart {
|
|
|
21
23
|
case Namespaces.SPREADSHEETML_CALC_CHAIN:
|
|
22
24
|
this.calcChainPart = part;
|
|
23
25
|
return true;
|
|
26
|
+
case Namespaces.SPREADSHEETML_SURVEY:
|
|
27
|
+
this.surveyPart = part;
|
|
28
|
+
return true;
|
|
29
|
+
case Namespaces.SPREADSHEETML_DATA_MODEL:
|
|
30
|
+
this.dataModelPart = part;
|
|
31
|
+
return true;
|
|
24
32
|
default: return false;
|
|
25
33
|
}
|
|
26
34
|
}
|
|
27
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* The worksheets, in `sheets` order (the order Excel shows the tabs in) once the workbook is
|
|
37
|
+
* unmarshalled; before that, in relationship order.
|
|
38
|
+
*/
|
|
28
39
|
get worksheetParts() {
|
|
40
|
+
var _a;
|
|
29
41
|
const rp = this.relationshipsPart;
|
|
30
42
|
if (!rp)
|
|
31
43
|
return [];
|
|
44
|
+
if (this.isUnmarshalled) {
|
|
45
|
+
const sheets = (_a = this.contents.sheets) === null || _a === void 0 ? void 0 : _a.sheet;
|
|
46
|
+
if (sheets) {
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const sheet of sheets) {
|
|
49
|
+
const part = rp.getPart(sheet.id);
|
|
50
|
+
if (part instanceof WorksheetPart)
|
|
51
|
+
out.push(part);
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
32
56
|
return rp.getRelationshipsByType(Namespaces.SPREADSHEETML_WORKSHEET).map((r) => rp.getPart(r)).filter((p) => p instanceof WorksheetPart);
|
|
33
57
|
}
|
|
58
|
+
/** The worksheets in `sheets` order, unmarshalling the workbook first. */
|
|
59
|
+
async getWorksheetParts() {
|
|
60
|
+
await this.getContents();
|
|
61
|
+
return this.worksheetParts;
|
|
62
|
+
}
|
|
63
|
+
/** The worksheet at an index of `sheets` (docx4j `WorkbookPart.getWorksheet(int)`). */
|
|
64
|
+
getWorksheet(index) {
|
|
65
|
+
const sheets = this.worksheetParts;
|
|
66
|
+
const sheet = sheets[index];
|
|
67
|
+
if (!sheet)
|
|
68
|
+
throw new Xlsx4jException(`No sheet at index ${index}. (There are ${sheets.length} sheets) `);
|
|
69
|
+
return sheet;
|
|
70
|
+
}
|
|
71
|
+
/** The workbook's slicer caches (`/xl/slicerCaches/slicerCacheN.xml`), in relationship order. */
|
|
72
|
+
get slicerCacheParts() {
|
|
73
|
+
return this.partsByRelationshipType(Namespaces.SPREADSHEETML_SLICER_CACHE, SlicerCachePart);
|
|
74
|
+
}
|
|
75
|
+
/** The workbook's timeline caches (`/xl/timelineCaches/timelineCacheN.xml`), in relationship order. */
|
|
76
|
+
get timelineCacheParts() {
|
|
77
|
+
return this.partsByRelationshipType(Namespaces.SPREADSHEETML_TIMELINE_CACHE, TimelineCachePart);
|
|
78
|
+
}
|
|
79
|
+
/** The workbook's custom data properties parts, in relationship order; each names a `CustomDataPart`. */
|
|
80
|
+
get customDataPropertiesParts() {
|
|
81
|
+
return this.partsByRelationshipType(Namespaces.SPREADSHEETML_CUSTOM_DATA_PROPERTIES, CustomDataPropertiesPart);
|
|
82
|
+
}
|
|
83
|
+
/** docx4j `WorkbookPart.isDate1904()`. */
|
|
84
|
+
get isDate1904() {
|
|
85
|
+
var _a;
|
|
86
|
+
return ((_a = this.contents.workbookPr) === null || _a === void 0 ? void 0 : _a.date1904) === true;
|
|
87
|
+
}
|
|
34
88
|
}
|
|
35
89
|
export class WorksheetPart extends XmlPart {
|
|
36
90
|
constructor(partName) {
|
|
37
91
|
super(partName, ContentTypes.SPREADSHEETML_WORKSHEET, Namespaces.SPREADSHEETML_WORKSHEET, { namespaceURI: S, localPart: 'worksheet' });
|
|
38
92
|
}
|
|
93
|
+
setPartShortcut(part, relationshipType) {
|
|
94
|
+
switch (relationshipType) {
|
|
95
|
+
case Namespaces.SPREADSHEETML_DRAWING:
|
|
96
|
+
this.drawingPart = part;
|
|
97
|
+
return true;
|
|
98
|
+
case Namespaces.SPREADSHEETML_COMMENTS:
|
|
99
|
+
this.commentsPart = part;
|
|
100
|
+
return true;
|
|
101
|
+
default: return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** The sheet's table parts (`xl/tables/tableN.xml`), in relationship order. */
|
|
105
|
+
get tableParts() {
|
|
106
|
+
return this.partsByRelationshipType(Namespaces.SPREADSHEETML_TABLE, TablePart);
|
|
107
|
+
}
|
|
108
|
+
/** The sheet's slicers parts (`/xl/slicers/slicerN.xml`), in relationship order (CR-004). */
|
|
109
|
+
get slicersParts() {
|
|
110
|
+
return this.partsByRelationshipType(Namespaces.SPREADSHEETML_SLICERS, SlicersPart);
|
|
111
|
+
}
|
|
112
|
+
/** The sheet's timelines parts (`/xl/timelines/timelineN.xml`), in relationship order (CR-004). */
|
|
113
|
+
get timelinesParts() {
|
|
114
|
+
return this.partsByRelationshipType(Namespaces.SPREADSHEETML_TIMELINES, TimelinesPart);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The sheet's form-control properties parts (`/xl/ctrlProps/ctrlPropN.xml`), in relationship
|
|
118
|
+
* order: one per `x:control`, whose `r:id` names it from inside the sheet's
|
|
119
|
+
* `mc:AlternateContent` (CR-004).
|
|
120
|
+
*/
|
|
121
|
+
get controlPropertiesParts() {
|
|
122
|
+
return this.partsByRelationshipType(Namespaces.SPREADSHEETML_CONTROL_PROPERTIES, ControlPropertiesPart);
|
|
123
|
+
}
|
|
124
|
+
/** The workbook this sheet belongs to, through its source relationship. */
|
|
125
|
+
get workbookPart() {
|
|
126
|
+
var _a;
|
|
127
|
+
const owner = (_a = this.owningRelationshipPart) === null || _a === void 0 ? void 0 : _a.sourceP;
|
|
128
|
+
return owner instanceof WorkbookPart ? owner : undefined;
|
|
129
|
+
}
|
|
39
130
|
}
|
|
40
131
|
export class ChartsheetPart extends XmlPart {
|
|
41
132
|
constructor(partName) {
|
|
@@ -105,3 +196,65 @@ export class PrinterSettingsPart extends BinaryPart {
|
|
|
105
196
|
super(partName, ContentTypes.SPREADSHEETML_PRINTER_SETTINGS, Namespaces.SPREADSHEETML_PRINTER_SETTINGS);
|
|
106
197
|
}
|
|
107
198
|
}
|
|
199
|
+
// The Excel 2010 and 2013 extension parts (CR-004 phase A; docx4j
|
|
200
|
+
// org.docx4j.openpackaging.parts.SpreadsheetML). The seven XML ones are `DefaultXmlPart`s for
|
|
201
|
+
// now: their DOM round-trips byte for byte, and nothing re-marshals them, so an `mc:Ignorable`
|
|
202
|
+
// they carry is untouched. Phase B makes them `XmlPart`s over the `x14` and `x15` roots.
|
|
203
|
+
/** A slicer cache (`x14:slicerCacheDefinition`), from the workbook. docx4j `SlicerCachePart`. */
|
|
204
|
+
export class SlicerCachePart extends DefaultXmlPart {
|
|
205
|
+
constructor(partName = '/xl/slicerCaches/slicerCache1.xml') {
|
|
206
|
+
super(partName, ContentTypes.SPREADSHEETML_SLICER_CACHE, Namespaces.SPREADSHEETML_SLICER_CACHE);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/** A sheet's slicers (`x14:slicers`). docx4j `SlicersPart`. */
|
|
210
|
+
export class SlicersPart extends DefaultXmlPart {
|
|
211
|
+
constructor(partName = '/xl/slicers/slicer1.xml') {
|
|
212
|
+
super(partName, ContentTypes.SPREADSHEETML_SLICERS, Namespaces.SPREADSHEETML_SLICERS);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/** A timeline cache (`x15:timelineCacheDefinition`), from the workbook. docx4j `TimelineCachePart`. */
|
|
216
|
+
export class TimelineCachePart extends DefaultXmlPart {
|
|
217
|
+
constructor(partName = '/xl/timelineCaches/timelineCache1.xml') {
|
|
218
|
+
super(partName, ContentTypes.SPREADSHEETML_TIMELINE_CACHE, Namespaces.SPREADSHEETML_TIMELINE_CACHE);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/** A sheet's timelines (`x15:timelines`). docx4j `TimelinesPart`. */
|
|
222
|
+
export class TimelinesPart extends DefaultXmlPart {
|
|
223
|
+
constructor(partName = '/xl/timelines/timeline1.xml') {
|
|
224
|
+
super(partName, ContentTypes.SPREADSHEETML_TIMELINES, Namespaces.SPREADSHEETML_TIMELINES);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/** A form control's properties (`x14:formControlPr`), from a worksheet. docx4j `ControlPropertiesPart`. */
|
|
228
|
+
export class ControlPropertiesPart extends DefaultXmlPart {
|
|
229
|
+
constructor(partName = '/xl/ctrlProps/ctrlProp1.xml') {
|
|
230
|
+
super(partName, ContentTypes.SPREADSHEETML_CONTROL_PROPERTIES, Namespaces.SPREADSHEETML_CONTROL_PROPERTIES);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/** The properties of a custom data part (`x14:datastoreItem`). docx4j `CustomDataPropertiesPart`. */
|
|
234
|
+
export class CustomDataPropertiesPart extends DefaultXmlPart {
|
|
235
|
+
constructor(partName = '/xl/customDataProps/customDataProps1.xml') {
|
|
236
|
+
super(partName, ContentTypes.SPREADSHEETML_CUSTOM_DATA_PROPERTIES, Namespaces.SPREADSHEETML_CUSTOM_DATA_PROPERTIES);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/** A survey (`x15:survey`), from the workbook. docx4j `SurveyPart`. */
|
|
240
|
+
export class SurveyPart extends DefaultXmlPart {
|
|
241
|
+
constructor(partName = '/xl/surveys/survey1.xml') {
|
|
242
|
+
super(partName, ContentTypes.SPREADSHEETML_SURVEY, Namespaces.SPREADSHEETML_SURVEY);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Custom data, whatever an add-in put there (docx4j `CustomDataPart`). Its content type is the
|
|
247
|
+
* generic `application/binary`, so the registry chooses it by relationship type, as it does for
|
|
248
|
+
* altChunk, embedded packages, OLE objects and custom XML (CR-001 section 5.4).
|
|
249
|
+
*/
|
|
250
|
+
export class CustomDataPart extends BinaryPart {
|
|
251
|
+
constructor(partName = '/xl/customData/customData1.dat', contentType = ContentTypes.SPREADSHEETML_CUSTOM_DATA) {
|
|
252
|
+
super(partName, contentType, Namespaces.SPREADSHEETML_CUSTOM_DATA);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/** The Power Pivot data model (`/xl/model/item.data`, [MS-XLDM]). docx4j `DataModelPart`. */
|
|
256
|
+
export class DataModelPart extends BinaryPart {
|
|
257
|
+
constructor(partName = '/xl/model/item.data') {
|
|
258
|
+
super(partName, ContentTypes.SPREADSHEETML_DATA_MODEL, Namespaces.SPREADSHEETML_DATA_MODEL);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../../model/content/Comment.mjs';
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import * as wmlFactory from '@docx4j/generated-objects-ts/factory/org_docx4j_wml';
|
|
2
|
+
import * as w15Factory from '@docx4j/generated-objects-ts/factory/org_docx4j_w15';
|
|
3
|
+
import * as w16cidFactory from '@docx4j/generated-objects-ts/factory/org_docx4j_w16cid';
|
|
4
|
+
import { linkParents } from '@docx4j/generated-objects-ts/builders/wml';
|
|
5
|
+
import { Docx4JException } from '../../opc/exceptions.mjs';
|
|
6
|
+
import { MainDocumentPart, CommentsPart, CommentsExtendedPart, CommentsIdsPart, PeoplePart } from './index.mjs';
|
|
7
|
+
import { COMMENT_REFERENCE_STYLE, COMMENT_TEXT_STYLE, setCommentPartsAccess, dateToCalendar, } from '../../model/content/comments.mjs';
|
|
8
|
+
// Loaded for its side effect: the Comment views register themselves with the content API.
|
|
9
|
+
import '../../model/content/Comment.mjs';
|
|
10
|
+
/** The comment parts of one document. */
|
|
11
|
+
class DocumentCommentParts {
|
|
12
|
+
constructor(main, commentsPart, comments, author) {
|
|
13
|
+
this.main = main;
|
|
14
|
+
this.commentsPart = commentsPart;
|
|
15
|
+
this.comments = comments;
|
|
16
|
+
this.author = author;
|
|
17
|
+
this.loadedAll = false;
|
|
18
|
+
}
|
|
19
|
+
ensureCommentsEx() {
|
|
20
|
+
if (this.commentsEx)
|
|
21
|
+
return this.commentsEx;
|
|
22
|
+
const existing = this.main.commentsExtendedPart;
|
|
23
|
+
if (existing) {
|
|
24
|
+
if (!existing.isUnmarshalled)
|
|
25
|
+
throw new Docx4JException(`${existing.partName} is not unmarshalled; call getComments() first`);
|
|
26
|
+
this.commentsEx = existing.contents;
|
|
27
|
+
return this.commentsEx;
|
|
28
|
+
}
|
|
29
|
+
const part = new CommentsExtendedPart();
|
|
30
|
+
part.setContents(w15Factory.createCTCommentsEx({ commentEx: [] }));
|
|
31
|
+
this.main.addTargetPart(part);
|
|
32
|
+
this.commentsEx = part.contents;
|
|
33
|
+
return this.commentsEx;
|
|
34
|
+
}
|
|
35
|
+
async ensureAll() {
|
|
36
|
+
var _a, _b, _c;
|
|
37
|
+
if (this.loadedAll)
|
|
38
|
+
return this;
|
|
39
|
+
this.ensureCommentsEx();
|
|
40
|
+
(_a = this.people) !== null && _a !== void 0 ? _a : (this.people = await ensurePeople(this.main));
|
|
41
|
+
(_b = this.commentsIds) !== null && _b !== void 0 ? _b : (this.commentsIds = await ensureCommentsIds(this.main));
|
|
42
|
+
(_c = this.extensible) !== null && _c !== void 0 ? _c : (this.extensible = await loadExtensible(this.main));
|
|
43
|
+
this.loadedAll = true;
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** The document part a body's comments belong to: the body's own part, else the package's main part. */
|
|
48
|
+
function mainPartOf(body) {
|
|
49
|
+
if (body.part instanceof MainDocumentPart)
|
|
50
|
+
return body.part;
|
|
51
|
+
const pkg = body.package_;
|
|
52
|
+
if (pkg === null || pkg === void 0 ? void 0 : pkg.mainDocumentPart)
|
|
53
|
+
return pkg.mainDocumentPart;
|
|
54
|
+
throw new Docx4JException('Comments need a main document part; this body has none');
|
|
55
|
+
}
|
|
56
|
+
/** `WordprocessingMLPackage.author`, read without importing the package (no runtime cycle). */
|
|
57
|
+
function authorOf(body) {
|
|
58
|
+
var _a;
|
|
59
|
+
const pkg = body.package_;
|
|
60
|
+
return (_a = pkg === null || pkg === void 0 ? void 0 : pkg.author) !== null && _a !== void 0 ? _a : { name: 'docx4j' };
|
|
61
|
+
}
|
|
62
|
+
async function partsFor(main, commentsPart, author) {
|
|
63
|
+
const parts = new DocumentCommentParts(main, commentsPart, await commentsPart.getContents(), author);
|
|
64
|
+
// The two side parts a view reads: the threads and done flags, and the authors' emails.
|
|
65
|
+
if (main.commentsExtendedPart)
|
|
66
|
+
parts.commentsEx = await main.commentsExtendedPart.getContents();
|
|
67
|
+
if (main.peoplePart)
|
|
68
|
+
parts.people = await main.peoplePart.getContents();
|
|
69
|
+
return parts;
|
|
70
|
+
}
|
|
71
|
+
async function ensurePeople(main) {
|
|
72
|
+
if (main.peoplePart)
|
|
73
|
+
return main.peoplePart.getContents();
|
|
74
|
+
const part = new PeoplePart();
|
|
75
|
+
part.setContents(w15Factory.createCTPeople({ person: [] }));
|
|
76
|
+
main.addTargetPart(part);
|
|
77
|
+
return part.contents;
|
|
78
|
+
}
|
|
79
|
+
async function ensureCommentsIds(main) {
|
|
80
|
+
if (main.commentsIdsPart)
|
|
81
|
+
return main.commentsIdsPart.getContents();
|
|
82
|
+
const part = new CommentsIdsPart();
|
|
83
|
+
part.setContents(w16cidFactory.createCTCommentsIds({ commentId: [] }));
|
|
84
|
+
main.addTargetPart(part);
|
|
85
|
+
return part.contents;
|
|
86
|
+
}
|
|
87
|
+
/** The w16cex part, typed (objects 0.1.3), when the document has one; none is created. */
|
|
88
|
+
async function loadExtensible(main) {
|
|
89
|
+
var _a;
|
|
90
|
+
const part = main.commentsExtensiblePart;
|
|
91
|
+
if (!part)
|
|
92
|
+
return undefined;
|
|
93
|
+
const contents = await part.getContents();
|
|
94
|
+
const entries = ((_a = contents.commentExtensible) !== null && _a !== void 0 ? _a : (contents.commentExtensible = []));
|
|
95
|
+
const indexOf = (durableId) => entries.findIndex((e) => { var _a; return ((_a = e.durableId) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === durableId.toLowerCase(); });
|
|
96
|
+
return {
|
|
97
|
+
set(durableId, dateUtc) {
|
|
98
|
+
const i = indexOf(durableId);
|
|
99
|
+
if (i >= 0)
|
|
100
|
+
entries[i].dateUtc = dateToCalendar(dateUtc);
|
|
101
|
+
else
|
|
102
|
+
entries.push({ durableId, dateUtc: dateToCalendar(dateUtc) });
|
|
103
|
+
},
|
|
104
|
+
remove(durableId) {
|
|
105
|
+
const i = indexOf(durableId);
|
|
106
|
+
if (i >= 0)
|
|
107
|
+
entries.splice(i, 1);
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Word's `CommentText` and `CommentReference` styles, added when the styles part lacks them.
|
|
113
|
+
* The part is only unmarshalled when its XML does not already name both styles, so a document
|
|
114
|
+
* that has them keeps its styles part byte for byte.
|
|
115
|
+
*/
|
|
116
|
+
async function ensureCommentStyles(main) {
|
|
117
|
+
var _a;
|
|
118
|
+
const part = main.styleDefinitionsPart;
|
|
119
|
+
if (!part)
|
|
120
|
+
return;
|
|
121
|
+
if (!part.isUnmarshalled) {
|
|
122
|
+
const xml = await part.getXml();
|
|
123
|
+
if (xml.includes(`w:styleId="${COMMENT_TEXT_STYLE}"`) && xml.includes(`w:styleId="${COMMENT_REFERENCE_STYLE}"`))
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const styles = await part.getContents();
|
|
127
|
+
const list = ((_a = styles.style) !== null && _a !== void 0 ? _a : (styles.style = []));
|
|
128
|
+
// the styles part is about to change: the property resolver caches resolved styles
|
|
129
|
+
const pkg = main.package;
|
|
130
|
+
const add = (style) => {
|
|
131
|
+
var _a;
|
|
132
|
+
list.push(style);
|
|
133
|
+
linkParents(style, styles);
|
|
134
|
+
(_a = pkg === null || pkg === void 0 ? void 0 : pkg.refreshPropertyResolver) === null || _a === void 0 ? void 0 : _a.call(pkg);
|
|
135
|
+
};
|
|
136
|
+
if (!list.some((s) => s.styleId === COMMENT_TEXT_STYLE)) {
|
|
137
|
+
add(wmlFactory.createStyle({
|
|
138
|
+
type: 'paragraph', styleId: COMMENT_TEXT_STYLE,
|
|
139
|
+
name: wmlFactory.createStyleName({ val: 'annotation text' }),
|
|
140
|
+
basedOn: wmlFactory.createStyleBasedOn({ val: 'Normal' }),
|
|
141
|
+
uiPriority: wmlFactory.createStyleUiPriority({ val: 99 }),
|
|
142
|
+
semiHidden: wmlFactory.createBooleanDefaultTrue(),
|
|
143
|
+
unhideWhenUsed: wmlFactory.createBooleanDefaultTrue(),
|
|
144
|
+
rPr: wmlFactory.createRPr({ sz: wmlFactory.createHpsMeasure({ val: 20 }), szCs: wmlFactory.createHpsMeasure({ val: 20 }) }),
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
if (!list.some((s) => s.styleId === COMMENT_REFERENCE_STYLE)) {
|
|
148
|
+
add(wmlFactory.createStyle({
|
|
149
|
+
type: 'character', styleId: COMMENT_REFERENCE_STYLE,
|
|
150
|
+
name: wmlFactory.createStyleName({ val: 'annotation reference' }),
|
|
151
|
+
basedOn: wmlFactory.createStyleBasedOn({ val: 'DefaultParagraphFont' }),
|
|
152
|
+
uiPriority: wmlFactory.createStyleUiPriority({ val: 99 }),
|
|
153
|
+
semiHidden: wmlFactory.createBooleanDefaultTrue(),
|
|
154
|
+
unhideWhenUsed: wmlFactory.createBooleanDefaultTrue(),
|
|
155
|
+
rPr: wmlFactory.createRPr({ sz: wmlFactory.createHpsMeasure({ val: 16 }), szCs: wmlFactory.createHpsMeasure({ val: 16 }) }),
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
setCommentPartsAccess({
|
|
160
|
+
async load(body) {
|
|
161
|
+
const main = mainPartOf(body);
|
|
162
|
+
if (!main.commentsPart)
|
|
163
|
+
return undefined;
|
|
164
|
+
return partsFor(main, main.commentsPart, authorOf(body));
|
|
165
|
+
},
|
|
166
|
+
async create(body) {
|
|
167
|
+
const main = mainPartOf(body);
|
|
168
|
+
let commentsPart = main.commentsPart;
|
|
169
|
+
if (!commentsPart) {
|
|
170
|
+
commentsPart = new CommentsPart();
|
|
171
|
+
commentsPart.setContents(wmlFactory.createComments({ comment: [] }));
|
|
172
|
+
main.addTargetPart(commentsPart);
|
|
173
|
+
}
|
|
174
|
+
await ensureCommentStyles(main);
|
|
175
|
+
const parts = await partsFor(main, commentsPart, authorOf(body));
|
|
176
|
+
await parts.ensureAll();
|
|
177
|
+
return parts;
|
|
178
|
+
},
|
|
179
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DEFAULT_NUMBERING_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<w:numbering xmlns:ve=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\">\n <w:abstractNum w:abstractNumId=\"0\">\n <w:nsid w:val=\"16892FB7\"/>\n <w:multiLevelType w:val=\"hybridMultilevel\"/>\n <w:tmpl w:val=\"5A4EB96A\"/>\n <w:lvl w:ilvl=\"0\" w:tplc=\"0C090001\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"\uF0B7\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"720\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Symbol\" w:hAnsi=\"Symbol\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl=\"1\" w:tplc=\"0C090003\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"o\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"1440\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Courier New\" w:hAnsi=\"Courier New\" w:cs=\"Courier New\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl=\"2\" w:tplc=\"0C090005\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"\uF0A7\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"2160\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Wingdings\" w:hAnsi=\"Wingdings\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl=\"3\" w:tplc=\"0C090001\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"\uF0B7\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"2880\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Symbol\" w:hAnsi=\"Symbol\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl=\"4\" w:tplc=\"0C090003\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"o\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"3600\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Courier New\" w:hAnsi=\"Courier New\" w:cs=\"Courier New\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl=\"5\" w:tplc=\"0C090005\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"\uF0A7\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"4320\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Wingdings\" w:hAnsi=\"Wingdings\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl=\"6\" w:tplc=\"0C090001\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"\uF0B7\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"5040\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Symbol\" w:hAnsi=\"Symbol\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl=\"7\" w:tplc=\"0C090003\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"o\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"5760\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Courier New\" w:hAnsi=\"Courier New\" w:cs=\"Courier New\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl=\"8\" w:tplc=\"0C090005\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"\uF0A7\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"6480\" w:hanging=\"360\"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii=\"Wingdings\" w:hAnsi=\"Wingdings\" w:hint=\"default\"/>\n </w:rPr>\n </w:lvl>\n </w:abstractNum>\n <w:abstractNum w:abstractNumId=\"1\">\n <w:nsid w:val=\"7E706046\"/>\n <w:multiLevelType w:val=\"hybridMultilevel\"/>\n <w:tmpl w:val=\"336E8F2C\"/>\n <w:lvl w:ilvl=\"0\" w:tplc=\"0C09000F\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"decimal\"/>\n <w:lvlText w:val=\"%1.\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"720\" w:hanging=\"360\"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl=\"1\" w:tplc=\"0C090019\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"lowerLetter\"/>\n <w:lvlText w:val=\"%2.\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"1440\" w:hanging=\"360\"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl=\"2\" w:tplc=\"0C09001B\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"lowerRoman\"/>\n <w:lvlText w:val=\"%3.\"/>\n <w:lvlJc w:val=\"right\"/>\n <w:pPr>\n <w:ind w:left=\"2160\" w:hanging=\"180\"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl=\"3\" w:tplc=\"0C09000F\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"decimal\"/>\n <w:lvlText w:val=\"%4.\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"2880\" w:hanging=\"360\"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl=\"4\" w:tplc=\"0C090019\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"lowerLetter\"/>\n <w:lvlText w:val=\"%5.\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"3600\" w:hanging=\"360\"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl=\"5\" w:tplc=\"0C09001B\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"lowerRoman\"/>\n <w:lvlText w:val=\"%6.\"/>\n <w:lvlJc w:val=\"right\"/>\n <w:pPr>\n <w:ind w:left=\"4320\" w:hanging=\"180\"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl=\"6\" w:tplc=\"0C09000F\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"decimal\"/>\n <w:lvlText w:val=\"%7.\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"5040\" w:hanging=\"360\"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl=\"7\" w:tplc=\"0C090019\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"lowerLetter\"/>\n <w:lvlText w:val=\"%8.\"/>\n <w:lvlJc w:val=\"left\"/>\n <w:pPr>\n <w:ind w:left=\"5760\" w:hanging=\"360\"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl=\"8\" w:tplc=\"0C09001B\" w:tentative=\"1\">\n <w:start w:val=\"1\"/>\n <w:numFmt w:val=\"lowerRoman\"/>\n <w:lvlText w:val=\"%9.\"/>\n <w:lvlJc w:val=\"right\"/>\n <w:pPr>\n <w:ind w:left=\"6480\" w:hanging=\"180\"/>\n </w:pPr>\n </w:lvl>\n </w:abstractNum>\n <w:num w:numId=\"1\">\n <w:abstractNumId w:val=\"1\"/>\n </w:num>\n <w:num w:numId=\"2\">\n <w:abstractNumId w:val=\"0\"/>\n </w:num>\n</w:numbering>";
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
// docx4j's default numbering: the resource
|
|
2
|
+
// docx4j-core/src/main/resources/org/docx4j/openpackaging/parts/WordprocessingML/numbering.xml,
|
|
3
|
+
// which `NumberingDefinitionsPart.unmarshalDefaultNumbering()` reads. Taken from docx4j
|
|
4
|
+
// VERSION_17_1_1 at 546b18b56, where the file itself is unchanged since 752e200eb (2019-02-09).
|
|
5
|
+
//
|
|
6
|
+
// abstractNum 0 is Word's bullet set and abstractNum 1 its decimal set; `w:num` 1 names the
|
|
7
|
+
// decimal one and `w:num` 2 the bullet one. Generated from that resource - UTF-16 there, UTF-8
|
|
8
|
+
// here, CRLF normalised to LF, nothing else changed. Do not edit.
|
|
9
|
+
export const DEFAULT_NUMBERING_XML = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
10
|
+
<w:numbering xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
|
|
11
|
+
<w:abstractNum w:abstractNumId="0">
|
|
12
|
+
<w:nsid w:val="16892FB7"/>
|
|
13
|
+
<w:multiLevelType w:val="hybridMultilevel"/>
|
|
14
|
+
<w:tmpl w:val="5A4EB96A"/>
|
|
15
|
+
<w:lvl w:ilvl="0" w:tplc="0C090001">
|
|
16
|
+
<w:start w:val="1"/>
|
|
17
|
+
<w:numFmt w:val="bullet"/>
|
|
18
|
+
<w:lvlText w:val=""/>
|
|
19
|
+
<w:lvlJc w:val="left"/>
|
|
20
|
+
<w:pPr>
|
|
21
|
+
<w:ind w:left="720" w:hanging="360"/>
|
|
22
|
+
</w:pPr>
|
|
23
|
+
<w:rPr>
|
|
24
|
+
<w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
|
|
25
|
+
</w:rPr>
|
|
26
|
+
</w:lvl>
|
|
27
|
+
<w:lvl w:ilvl="1" w:tplc="0C090003" w:tentative="1">
|
|
28
|
+
<w:start w:val="1"/>
|
|
29
|
+
<w:numFmt w:val="bullet"/>
|
|
30
|
+
<w:lvlText w:val="o"/>
|
|
31
|
+
<w:lvlJc w:val="left"/>
|
|
32
|
+
<w:pPr>
|
|
33
|
+
<w:ind w:left="1440" w:hanging="360"/>
|
|
34
|
+
</w:pPr>
|
|
35
|
+
<w:rPr>
|
|
36
|
+
<w:rFonts w:ascii="Courier New" w:hAnsi="Courier New" w:cs="Courier New" w:hint="default"/>
|
|
37
|
+
</w:rPr>
|
|
38
|
+
</w:lvl>
|
|
39
|
+
<w:lvl w:ilvl="2" w:tplc="0C090005" w:tentative="1">
|
|
40
|
+
<w:start w:val="1"/>
|
|
41
|
+
<w:numFmt w:val="bullet"/>
|
|
42
|
+
<w:lvlText w:val=""/>
|
|
43
|
+
<w:lvlJc w:val="left"/>
|
|
44
|
+
<w:pPr>
|
|
45
|
+
<w:ind w:left="2160" w:hanging="360"/>
|
|
46
|
+
</w:pPr>
|
|
47
|
+
<w:rPr>
|
|
48
|
+
<w:rFonts w:ascii="Wingdings" w:hAnsi="Wingdings" w:hint="default"/>
|
|
49
|
+
</w:rPr>
|
|
50
|
+
</w:lvl>
|
|
51
|
+
<w:lvl w:ilvl="3" w:tplc="0C090001" w:tentative="1">
|
|
52
|
+
<w:start w:val="1"/>
|
|
53
|
+
<w:numFmt w:val="bullet"/>
|
|
54
|
+
<w:lvlText w:val=""/>
|
|
55
|
+
<w:lvlJc w:val="left"/>
|
|
56
|
+
<w:pPr>
|
|
57
|
+
<w:ind w:left="2880" w:hanging="360"/>
|
|
58
|
+
</w:pPr>
|
|
59
|
+
<w:rPr>
|
|
60
|
+
<w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
|
|
61
|
+
</w:rPr>
|
|
62
|
+
</w:lvl>
|
|
63
|
+
<w:lvl w:ilvl="4" w:tplc="0C090003" w:tentative="1">
|
|
64
|
+
<w:start w:val="1"/>
|
|
65
|
+
<w:numFmt w:val="bullet"/>
|
|
66
|
+
<w:lvlText w:val="o"/>
|
|
67
|
+
<w:lvlJc w:val="left"/>
|
|
68
|
+
<w:pPr>
|
|
69
|
+
<w:ind w:left="3600" w:hanging="360"/>
|
|
70
|
+
</w:pPr>
|
|
71
|
+
<w:rPr>
|
|
72
|
+
<w:rFonts w:ascii="Courier New" w:hAnsi="Courier New" w:cs="Courier New" w:hint="default"/>
|
|
73
|
+
</w:rPr>
|
|
74
|
+
</w:lvl>
|
|
75
|
+
<w:lvl w:ilvl="5" w:tplc="0C090005" w:tentative="1">
|
|
76
|
+
<w:start w:val="1"/>
|
|
77
|
+
<w:numFmt w:val="bullet"/>
|
|
78
|
+
<w:lvlText w:val=""/>
|
|
79
|
+
<w:lvlJc w:val="left"/>
|
|
80
|
+
<w:pPr>
|
|
81
|
+
<w:ind w:left="4320" w:hanging="360"/>
|
|
82
|
+
</w:pPr>
|
|
83
|
+
<w:rPr>
|
|
84
|
+
<w:rFonts w:ascii="Wingdings" w:hAnsi="Wingdings" w:hint="default"/>
|
|
85
|
+
</w:rPr>
|
|
86
|
+
</w:lvl>
|
|
87
|
+
<w:lvl w:ilvl="6" w:tplc="0C090001" w:tentative="1">
|
|
88
|
+
<w:start w:val="1"/>
|
|
89
|
+
<w:numFmt w:val="bullet"/>
|
|
90
|
+
<w:lvlText w:val=""/>
|
|
91
|
+
<w:lvlJc w:val="left"/>
|
|
92
|
+
<w:pPr>
|
|
93
|
+
<w:ind w:left="5040" w:hanging="360"/>
|
|
94
|
+
</w:pPr>
|
|
95
|
+
<w:rPr>
|
|
96
|
+
<w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
|
|
97
|
+
</w:rPr>
|
|
98
|
+
</w:lvl>
|
|
99
|
+
<w:lvl w:ilvl="7" w:tplc="0C090003" w:tentative="1">
|
|
100
|
+
<w:start w:val="1"/>
|
|
101
|
+
<w:numFmt w:val="bullet"/>
|
|
102
|
+
<w:lvlText w:val="o"/>
|
|
103
|
+
<w:lvlJc w:val="left"/>
|
|
104
|
+
<w:pPr>
|
|
105
|
+
<w:ind w:left="5760" w:hanging="360"/>
|
|
106
|
+
</w:pPr>
|
|
107
|
+
<w:rPr>
|
|
108
|
+
<w:rFonts w:ascii="Courier New" w:hAnsi="Courier New" w:cs="Courier New" w:hint="default"/>
|
|
109
|
+
</w:rPr>
|
|
110
|
+
</w:lvl>
|
|
111
|
+
<w:lvl w:ilvl="8" w:tplc="0C090005" w:tentative="1">
|
|
112
|
+
<w:start w:val="1"/>
|
|
113
|
+
<w:numFmt w:val="bullet"/>
|
|
114
|
+
<w:lvlText w:val=""/>
|
|
115
|
+
<w:lvlJc w:val="left"/>
|
|
116
|
+
<w:pPr>
|
|
117
|
+
<w:ind w:left="6480" w:hanging="360"/>
|
|
118
|
+
</w:pPr>
|
|
119
|
+
<w:rPr>
|
|
120
|
+
<w:rFonts w:ascii="Wingdings" w:hAnsi="Wingdings" w:hint="default"/>
|
|
121
|
+
</w:rPr>
|
|
122
|
+
</w:lvl>
|
|
123
|
+
</w:abstractNum>
|
|
124
|
+
<w:abstractNum w:abstractNumId="1">
|
|
125
|
+
<w:nsid w:val="7E706046"/>
|
|
126
|
+
<w:multiLevelType w:val="hybridMultilevel"/>
|
|
127
|
+
<w:tmpl w:val="336E8F2C"/>
|
|
128
|
+
<w:lvl w:ilvl="0" w:tplc="0C09000F">
|
|
129
|
+
<w:start w:val="1"/>
|
|
130
|
+
<w:numFmt w:val="decimal"/>
|
|
131
|
+
<w:lvlText w:val="%1."/>
|
|
132
|
+
<w:lvlJc w:val="left"/>
|
|
133
|
+
<w:pPr>
|
|
134
|
+
<w:ind w:left="720" w:hanging="360"/>
|
|
135
|
+
</w:pPr>
|
|
136
|
+
</w:lvl>
|
|
137
|
+
<w:lvl w:ilvl="1" w:tplc="0C090019" w:tentative="1">
|
|
138
|
+
<w:start w:val="1"/>
|
|
139
|
+
<w:numFmt w:val="lowerLetter"/>
|
|
140
|
+
<w:lvlText w:val="%2."/>
|
|
141
|
+
<w:lvlJc w:val="left"/>
|
|
142
|
+
<w:pPr>
|
|
143
|
+
<w:ind w:left="1440" w:hanging="360"/>
|
|
144
|
+
</w:pPr>
|
|
145
|
+
</w:lvl>
|
|
146
|
+
<w:lvl w:ilvl="2" w:tplc="0C09001B" w:tentative="1">
|
|
147
|
+
<w:start w:val="1"/>
|
|
148
|
+
<w:numFmt w:val="lowerRoman"/>
|
|
149
|
+
<w:lvlText w:val="%3."/>
|
|
150
|
+
<w:lvlJc w:val="right"/>
|
|
151
|
+
<w:pPr>
|
|
152
|
+
<w:ind w:left="2160" w:hanging="180"/>
|
|
153
|
+
</w:pPr>
|
|
154
|
+
</w:lvl>
|
|
155
|
+
<w:lvl w:ilvl="3" w:tplc="0C09000F" w:tentative="1">
|
|
156
|
+
<w:start w:val="1"/>
|
|
157
|
+
<w:numFmt w:val="decimal"/>
|
|
158
|
+
<w:lvlText w:val="%4."/>
|
|
159
|
+
<w:lvlJc w:val="left"/>
|
|
160
|
+
<w:pPr>
|
|
161
|
+
<w:ind w:left="2880" w:hanging="360"/>
|
|
162
|
+
</w:pPr>
|
|
163
|
+
</w:lvl>
|
|
164
|
+
<w:lvl w:ilvl="4" w:tplc="0C090019" w:tentative="1">
|
|
165
|
+
<w:start w:val="1"/>
|
|
166
|
+
<w:numFmt w:val="lowerLetter"/>
|
|
167
|
+
<w:lvlText w:val="%5."/>
|
|
168
|
+
<w:lvlJc w:val="left"/>
|
|
169
|
+
<w:pPr>
|
|
170
|
+
<w:ind w:left="3600" w:hanging="360"/>
|
|
171
|
+
</w:pPr>
|
|
172
|
+
</w:lvl>
|
|
173
|
+
<w:lvl w:ilvl="5" w:tplc="0C09001B" w:tentative="1">
|
|
174
|
+
<w:start w:val="1"/>
|
|
175
|
+
<w:numFmt w:val="lowerRoman"/>
|
|
176
|
+
<w:lvlText w:val="%6."/>
|
|
177
|
+
<w:lvlJc w:val="right"/>
|
|
178
|
+
<w:pPr>
|
|
179
|
+
<w:ind w:left="4320" w:hanging="180"/>
|
|
180
|
+
</w:pPr>
|
|
181
|
+
</w:lvl>
|
|
182
|
+
<w:lvl w:ilvl="6" w:tplc="0C09000F" w:tentative="1">
|
|
183
|
+
<w:start w:val="1"/>
|
|
184
|
+
<w:numFmt w:val="decimal"/>
|
|
185
|
+
<w:lvlText w:val="%7."/>
|
|
186
|
+
<w:lvlJc w:val="left"/>
|
|
187
|
+
<w:pPr>
|
|
188
|
+
<w:ind w:left="5040" w:hanging="360"/>
|
|
189
|
+
</w:pPr>
|
|
190
|
+
</w:lvl>
|
|
191
|
+
<w:lvl w:ilvl="7" w:tplc="0C090019" w:tentative="1">
|
|
192
|
+
<w:start w:val="1"/>
|
|
193
|
+
<w:numFmt w:val="lowerLetter"/>
|
|
194
|
+
<w:lvlText w:val="%8."/>
|
|
195
|
+
<w:lvlJc w:val="left"/>
|
|
196
|
+
<w:pPr>
|
|
197
|
+
<w:ind w:left="5760" w:hanging="360"/>
|
|
198
|
+
</w:pPr>
|
|
199
|
+
</w:lvl>
|
|
200
|
+
<w:lvl w:ilvl="8" w:tplc="0C09001B" w:tentative="1">
|
|
201
|
+
<w:start w:val="1"/>
|
|
202
|
+
<w:numFmt w:val="lowerRoman"/>
|
|
203
|
+
<w:lvlText w:val="%9."/>
|
|
204
|
+
<w:lvlJc w:val="right"/>
|
|
205
|
+
<w:pPr>
|
|
206
|
+
<w:ind w:left="6480" w:hanging="180"/>
|
|
207
|
+
</w:pPr>
|
|
208
|
+
</w:lvl>
|
|
209
|
+
</w:abstractNum>
|
|
210
|
+
<w:num w:numId="1">
|
|
211
|
+
<w:abstractNumId w:val="1"/>
|
|
212
|
+
</w:num>
|
|
213
|
+
<w:num w:numId="2">
|
|
214
|
+
<w:abstractNumId w:val="0"/>
|
|
215
|
+
</w:num>
|
|
216
|
+
</w:numbering>`;
|