@usejunior/docx-core 0.0.1 → 0.1.1
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/LICENSE +21 -0
- package/README.md +86 -28
- package/dist/.tsbuildinfo +1 -0
- package/dist/atomizer.d.ts +218 -0
- package/dist/atomizer.d.ts.map +1 -0
- package/dist/atomizer.js +856 -0
- package/dist/atomizer.js.map +1 -0
- package/dist/baselines/atomizer/atomLcs.d.ts +96 -0
- package/dist/baselines/atomizer/atomLcs.d.ts.map +1 -0
- package/dist/baselines/atomizer/atomLcs.js +347 -0
- package/dist/baselines/atomizer/atomLcs.js.map +1 -0
- package/dist/baselines/atomizer/debug.d.ts +41 -0
- package/dist/baselines/atomizer/debug.d.ts.map +1 -0
- package/dist/baselines/atomizer/debug.js +85 -0
- package/dist/baselines/atomizer/debug.js.map +1 -0
- package/dist/baselines/atomizer/documentReconstructor.d.ts +64 -0
- package/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -0
- package/dist/baselines/atomizer/documentReconstructor.js +939 -0
- package/dist/baselines/atomizer/documentReconstructor.js.map +1 -0
- package/dist/baselines/atomizer/hierarchicalLcs.d.ts +111 -0
- package/dist/baselines/atomizer/hierarchicalLcs.d.ts.map +1 -0
- package/dist/baselines/atomizer/hierarchicalLcs.js +469 -0
- package/dist/baselines/atomizer/hierarchicalLcs.js.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier.d.ts +183 -0
- package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -0
- package/dist/baselines/atomizer/inPlaceModifier.js +1600 -0
- package/dist/baselines/atomizer/inPlaceModifier.js.map +1 -0
- package/dist/baselines/atomizer/numberingIntegration.d.ts +59 -0
- package/dist/baselines/atomizer/numberingIntegration.d.ts.map +1 -0
- package/dist/baselines/atomizer/numberingIntegration.js +209 -0
- package/dist/baselines/atomizer/numberingIntegration.js.map +1 -0
- package/dist/baselines/atomizer/pipeline.d.ts +65 -0
- package/dist/baselines/atomizer/pipeline.d.ts.map +1 -0
- package/dist/baselines/atomizer/pipeline.js +510 -0
- package/dist/baselines/atomizer/pipeline.js.map +1 -0
- package/dist/baselines/atomizer/premergeRuns.d.ts +26 -0
- package/dist/baselines/atomizer/premergeRuns.d.ts.map +1 -0
- package/dist/baselines/atomizer/premergeRuns.js +150 -0
- package/dist/baselines/atomizer/premergeRuns.js.map +1 -0
- package/dist/baselines/atomizer/trackChangesAcceptor.d.ts +63 -0
- package/dist/baselines/atomizer/trackChangesAcceptor.d.ts.map +1 -0
- package/dist/baselines/atomizer/trackChangesAcceptor.js +254 -0
- package/dist/baselines/atomizer/trackChangesAcceptor.js.map +1 -0
- package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts +64 -0
- package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +1 -0
- package/dist/baselines/atomizer/trackChangesAcceptorAst.js +586 -0
- package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +1 -0
- package/dist/baselines/atomizer/xmlToWmlElement.d.ts +65 -0
- package/dist/baselines/atomizer/xmlToWmlElement.d.ts.map +1 -0
- package/dist/baselines/atomizer/xmlToWmlElement.js +95 -0
- package/dist/baselines/atomizer/xmlToWmlElement.js.map +1 -0
- package/dist/baselines/diffmatch/documentBuilder.d.ts +44 -0
- package/dist/baselines/diffmatch/documentBuilder.d.ts.map +1 -0
- package/dist/baselines/diffmatch/documentBuilder.js +227 -0
- package/dist/baselines/diffmatch/documentBuilder.js.map +1 -0
- package/dist/baselines/diffmatch/paragraphAlignment.d.ts +75 -0
- package/dist/baselines/diffmatch/paragraphAlignment.d.ts.map +1 -0
- package/dist/baselines/diffmatch/paragraphAlignment.js +206 -0
- package/dist/baselines/diffmatch/paragraphAlignment.js.map +1 -0
- package/dist/baselines/diffmatch/pipeline.d.ts +33 -0
- package/dist/baselines/diffmatch/pipeline.d.ts.map +1 -0
- package/dist/baselines/diffmatch/pipeline.js +84 -0
- package/dist/baselines/diffmatch/pipeline.js.map +1 -0
- package/dist/baselines/diffmatch/runDiff.d.ts +53 -0
- package/dist/baselines/diffmatch/runDiff.d.ts.map +1 -0
- package/dist/baselines/diffmatch/runDiff.js +253 -0
- package/dist/baselines/diffmatch/runDiff.js.map +1 -0
- package/dist/baselines/diffmatch/trackChangesRenderer.d.ts +64 -0
- package/dist/baselines/diffmatch/trackChangesRenderer.d.ts.map +1 -0
- package/dist/baselines/diffmatch/trackChangesRenderer.js +178 -0
- package/dist/baselines/diffmatch/trackChangesRenderer.js.map +1 -0
- package/dist/baselines/diffmatch/xmlParser.d.ts +45 -0
- package/dist/baselines/diffmatch/xmlParser.d.ts.map +1 -0
- package/dist/baselines/diffmatch/xmlParser.js +344 -0
- package/dist/baselines/diffmatch/xmlParser.js.map +1 -0
- package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts +51 -0
- package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts.map +1 -0
- package/dist/baselines/wmlcomparer/DocxodusWasm.js +83 -0
- package/dist/baselines/wmlcomparer/DocxodusWasm.js.map +1 -0
- package/dist/baselines/wmlcomparer/DotnetCli.d.ts +40 -0
- package/dist/baselines/wmlcomparer/DotnetCli.d.ts.map +1 -0
- package/dist/baselines/wmlcomparer/DotnetCli.js +135 -0
- package/dist/baselines/wmlcomparer/DotnetCli.js.map +1 -0
- package/dist/benchmark/metrics.d.ts +72 -0
- package/dist/benchmark/metrics.d.ts.map +1 -0
- package/dist/benchmark/metrics.js +45 -0
- package/dist/benchmark/metrics.js.map +1 -0
- package/dist/benchmark/reporter.d.ts +23 -0
- package/dist/benchmark/reporter.d.ts.map +1 -0
- package/dist/benchmark/reporter.js +147 -0
- package/dist/benchmark/reporter.js.map +1 -0
- package/dist/benchmark/runner.d.ts +30 -0
- package/dist/benchmark/runner.d.ts.map +1 -0
- package/dist/benchmark/runner.js +233 -0
- package/dist/benchmark/runner.js.map +1 -0
- package/dist/cli/compare-two.d.ts +28 -0
- package/dist/cli/compare-two.d.ts.map +1 -0
- package/dist/cli/compare-two.js +110 -0
- package/dist/cli/compare-two.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +21 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core-types.d.ts +296 -0
- package/dist/core-types.d.ts.map +1 -0
- package/dist/core-types.js +122 -0
- package/dist/core-types.js.map +1 -0
- package/dist/footnotes.d.ts +144 -0
- package/dist/footnotes.d.ts.map +1 -0
- package/dist/footnotes.js +291 -0
- package/dist/footnotes.js.map +1 -0
- package/dist/format-detection.d.ts +120 -0
- package/dist/format-detection.d.ts.map +1 -0
- package/dist/format-detection.js +338 -0
- package/dist/format-detection.js.map +1 -0
- package/dist/index.d.ts +177 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/integration/output-artifacts.d.ts +6 -0
- package/dist/integration/output-artifacts.d.ts.map +1 -0
- package/dist/integration/output-artifacts.js +30 -0
- package/dist/integration/output-artifacts.js.map +1 -0
- package/dist/move-detection.d.ts +211 -0
- package/dist/move-detection.d.ts.map +1 -0
- package/dist/move-detection.js +391 -0
- package/dist/move-detection.js.map +1 -0
- package/dist/numbering.d.ts +136 -0
- package/dist/numbering.d.ts.map +1 -0
- package/dist/numbering.js +446 -0
- package/dist/numbering.js.map +1 -0
- package/dist/primitives/accept_changes.d.ts +30 -0
- package/dist/primitives/accept_changes.d.ts.map +1 -0
- package/dist/primitives/accept_changes.js +241 -0
- package/dist/primitives/accept_changes.js.map +1 -0
- package/dist/primitives/bookmarks.d.ts +12 -0
- package/dist/primitives/bookmarks.d.ts.map +1 -0
- package/dist/primitives/bookmarks.js +248 -0
- package/dist/primitives/bookmarks.js.map +1 -0
- package/dist/primitives/comments.d.ts +88 -0
- package/dist/primitives/comments.d.ts.map +1 -0
- package/dist/primitives/comments.js +703 -0
- package/dist/primitives/comments.js.map +1 -0
- package/dist/primitives/document.d.ts +168 -0
- package/dist/primitives/document.d.ts.map +1 -0
- package/dist/primitives/document.js +532 -0
- package/dist/primitives/document.js.map +1 -0
- package/dist/primitives/document_view.d.ts +93 -0
- package/dist/primitives/document_view.d.ts.map +1 -0
- package/dist/primitives/document_view.js +722 -0
- package/dist/primitives/document_view.js.map +1 -0
- package/dist/primitives/dom-helpers.d.ts +94 -0
- package/dist/primitives/dom-helpers.d.ts.map +1 -0
- package/dist/primitives/dom-helpers.js +219 -0
- package/dist/primitives/dom-helpers.js.map +1 -0
- package/dist/primitives/errors.d.ts +7 -0
- package/dist/primitives/errors.d.ts.map +1 -0
- package/dist/primitives/errors.js +10 -0
- package/dist/primitives/errors.js.map +1 -0
- package/dist/primitives/extract_revisions.d.ts +50 -0
- package/dist/primitives/extract_revisions.d.ts.map +1 -0
- package/dist/primitives/extract_revisions.js +340 -0
- package/dist/primitives/extract_revisions.js.map +1 -0
- package/dist/primitives/footnotes.d.ts +37 -0
- package/dist/primitives/footnotes.d.ts.map +1 -0
- package/dist/primitives/footnotes.js +552 -0
- package/dist/primitives/footnotes.js.map +1 -0
- package/dist/primitives/formatting_tags.d.ts +30 -0
- package/dist/primitives/formatting_tags.d.ts.map +1 -0
- package/dist/primitives/formatting_tags.js +217 -0
- package/dist/primitives/formatting_tags.js.map +1 -0
- package/dist/primitives/index.d.ts +26 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +26 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/layout.d.ts +53 -0
- package/dist/primitives/layout.d.ts.map +1 -0
- package/dist/primitives/layout.js +178 -0
- package/dist/primitives/layout.js.map +1 -0
- package/dist/primitives/list_labels.d.ts +19 -0
- package/dist/primitives/list_labels.d.ts.map +1 -0
- package/dist/primitives/list_labels.js +57 -0
- package/dist/primitives/list_labels.js.map +1 -0
- package/dist/primitives/matching.d.ts +17 -0
- package/dist/primitives/matching.d.ts.map +1 -0
- package/dist/primitives/matching.js +144 -0
- package/dist/primitives/matching.js.map +1 -0
- package/dist/primitives/merge_runs.d.ts +23 -0
- package/dist/primitives/merge_runs.d.ts.map +1 -0
- package/dist/primitives/merge_runs.js +195 -0
- package/dist/primitives/merge_runs.js.map +1 -0
- package/dist/primitives/namespaces.d.ts +90 -0
- package/dist/primitives/namespaces.d.ts.map +1 -0
- package/dist/primitives/namespaces.js +107 -0
- package/dist/primitives/namespaces.js.map +1 -0
- package/dist/primitives/numbering.d.ts +27 -0
- package/dist/primitives/numbering.d.ts.map +1 -0
- package/dist/primitives/numbering.js +182 -0
- package/dist/primitives/numbering.js.map +1 -0
- package/dist/primitives/prevent_double_elevation.d.ts +18 -0
- package/dist/primitives/prevent_double_elevation.d.ts.map +1 -0
- package/dist/primitives/prevent_double_elevation.js +190 -0
- package/dist/primitives/prevent_double_elevation.js.map +1 -0
- package/dist/primitives/reject_changes.d.ts +27 -0
- package/dist/primitives/reject_changes.d.ts.map +1 -0
- package/dist/primitives/reject_changes.js +371 -0
- package/dist/primitives/reject_changes.js.map +1 -0
- package/dist/primitives/relationships.d.ts +7 -0
- package/dist/primitives/relationships.d.ts.map +1 -0
- package/dist/primitives/relationships.js +24 -0
- package/dist/primitives/relationships.js.map +1 -0
- package/dist/primitives/semantic_tags.d.ts +32 -0
- package/dist/primitives/semantic_tags.d.ts.map +1 -0
- package/dist/primitives/semantic_tags.js +139 -0
- package/dist/primitives/semantic_tags.js.map +1 -0
- package/dist/primitives/simplify_redlines.d.ts +19 -0
- package/dist/primitives/simplify_redlines.d.ts.map +1 -0
- package/dist/primitives/simplify_redlines.js +94 -0
- package/dist/primitives/simplify_redlines.js.map +1 -0
- package/dist/primitives/styles.d.ts +36 -0
- package/dist/primitives/styles.d.ts.map +1 -0
- package/dist/primitives/styles.js +190 -0
- package/dist/primitives/styles.js.map +1 -0
- package/dist/primitives/text.d.ts +27 -0
- package/dist/primitives/text.d.ts.map +1 -0
- package/dist/primitives/text.js +416 -0
- package/dist/primitives/text.js.map +1 -0
- package/dist/primitives/validate_document.d.ts +24 -0
- package/dist/primitives/validate_document.d.ts.map +1 -0
- package/dist/primitives/validate_document.js +147 -0
- package/dist/primitives/validate_document.js.map +1 -0
- package/dist/primitives/xml.d.ts +5 -0
- package/dist/primitives/xml.d.ts.map +1 -0
- package/dist/primitives/xml.js +19 -0
- package/dist/primitives/xml.js.map +1 -0
- package/dist/primitives/zip.d.ts +25 -0
- package/dist/primitives/zip.d.ts.map +1 -0
- package/dist/primitives/zip.js +78 -0
- package/dist/primitives/zip.js.map +1 -0
- package/dist/shared/docx/DocxArchive.d.ts +94 -0
- package/dist/shared/docx/DocxArchive.d.ts.map +1 -0
- package/dist/shared/docx/DocxArchive.js +169 -0
- package/dist/shared/docx/DocxArchive.js.map +1 -0
- package/dist/shared/ooxml/namespaces.d.ts +149 -0
- package/dist/shared/ooxml/namespaces.d.ts.map +1 -0
- package/dist/shared/ooxml/namespaces.js +224 -0
- package/dist/shared/ooxml/namespaces.js.map +1 -0
- package/dist/shared/ooxml/types.d.ts +136 -0
- package/dist/shared/ooxml/types.d.ts.map +1 -0
- package/dist/shared/ooxml/types.js +7 -0
- package/dist/shared/ooxml/types.js.map +1 -0
- package/package.json +63 -6
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legal Numbering Module
|
|
3
|
+
*
|
|
4
|
+
* Handles OOXML numbering corner cases for legal documents.
|
|
5
|
+
* Implements continuation pattern detection for proper rendering of
|
|
6
|
+
* "orphan" list items.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* Word exhibits behavior where orphan list items render at level 0:
|
|
10
|
+
* - Para 1: ilvl=0 → "1."
|
|
11
|
+
* - Para 2: ilvl=0 → "2."
|
|
12
|
+
* - Para 3: ilvl=0 → "3."
|
|
13
|
+
* - Para 4: ilvl=1, start=4 → Word displays "4." (NOT "3.4")
|
|
14
|
+
*/
|
|
15
|
+
import { ContinuationInfo, ListLevelInfo, WmlElement } from './core-types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Detect if a paragraph is using a continuation pattern.
|
|
18
|
+
*
|
|
19
|
+
* A continuation pattern occurs when a list item at ilvl > 0 should render
|
|
20
|
+
* at level 0 because its start value indicates it's continuing the parent
|
|
21
|
+
* level's sequence rather than starting a nested list.
|
|
22
|
+
*
|
|
23
|
+
* @param ilvl - The indentation level of the paragraph
|
|
24
|
+
* @param startValue - The start value for this level
|
|
25
|
+
* @param levelNumbers - Current counter values for each level
|
|
26
|
+
* @returns Continuation info with effective level
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // Level numbers [3, 0] means level 0 is at "3", level 1 hasn't been used
|
|
30
|
+
* detectContinuationPattern(1, 4, [3, 0])
|
|
31
|
+
* // Returns: { isContinuation: true, effectiveLevel: 0 }
|
|
32
|
+
* // Because start=4 equals levelNumbers[0]+1, this continues as "4."
|
|
33
|
+
*/
|
|
34
|
+
export declare function detectContinuationPattern(ilvl: number, startValue: number, levelNumbers: number[]): ContinuationInfo;
|
|
35
|
+
/**
|
|
36
|
+
* Get the effective level for rendering, accounting for continuation patterns.
|
|
37
|
+
*
|
|
38
|
+
* @param ilvl - The declared indentation level
|
|
39
|
+
* @param startValue - The start value for this level
|
|
40
|
+
* @param levelNumbers - Current counter values for each level
|
|
41
|
+
* @returns The effective level for rendering (0 for continuation patterns)
|
|
42
|
+
*/
|
|
43
|
+
export declare function getEffectiveLevel(ilvl: number, startValue: number, levelNumbers: number[]): number;
|
|
44
|
+
/**
|
|
45
|
+
* State of numbering counters for a document.
|
|
46
|
+
*/
|
|
47
|
+
export interface NumberingState {
|
|
48
|
+
/** Current counter values per numId and ilvl */
|
|
49
|
+
counters: Map<string, number[]>;
|
|
50
|
+
/** Track whether each level has been used in current sequence */
|
|
51
|
+
levelUsed: Map<string, boolean[]>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create initial numbering state.
|
|
55
|
+
*/
|
|
56
|
+
export declare function createNumberingState(): NumberingState;
|
|
57
|
+
/**
|
|
58
|
+
* Get or initialize counter array for a numbering definition.
|
|
59
|
+
*
|
|
60
|
+
* @param state - The numbering state
|
|
61
|
+
* @param numId - The numbering definition ID
|
|
62
|
+
* @param maxLevels - Maximum number of levels (default 9)
|
|
63
|
+
* @returns The counter array for this numbering definition
|
|
64
|
+
*/
|
|
65
|
+
export declare function getCounters(state: NumberingState, numId: number, maxLevels?: number): number[];
|
|
66
|
+
/**
|
|
67
|
+
* Process a numbered paragraph and return its display number.
|
|
68
|
+
*
|
|
69
|
+
* Updates the numbering state and returns the appropriate number to display,
|
|
70
|
+
* accounting for continuation patterns and level resets.
|
|
71
|
+
*
|
|
72
|
+
* @param state - The numbering state to update
|
|
73
|
+
* @param numId - The numbering definition ID
|
|
74
|
+
* @param ilvl - The indentation level
|
|
75
|
+
* @param levelInfo - Level properties from the numbering definition
|
|
76
|
+
* @returns The number to display at this level
|
|
77
|
+
*/
|
|
78
|
+
export declare function processNumberedParagraph(state: NumberingState, numId: number, ilvl: number, levelInfo: ListLevelInfo): number;
|
|
79
|
+
/**
|
|
80
|
+
* Convert a number to the specified format.
|
|
81
|
+
*
|
|
82
|
+
* @param value - The numeric value
|
|
83
|
+
* @param format - The number format (decimal, lowerLetter, upperLetter, lowerRoman, upperRoman, etc.)
|
|
84
|
+
* @returns The formatted string
|
|
85
|
+
*/
|
|
86
|
+
export declare function formatNumber(value: number, format: string): string;
|
|
87
|
+
/**
|
|
88
|
+
* Expand a level text format string with actual numbers.
|
|
89
|
+
*
|
|
90
|
+
* Level text uses placeholders like %1, %2, %3 for level values.
|
|
91
|
+
*
|
|
92
|
+
* @param lvlText - The level text format (e.g., "%1.", "%1.%2")
|
|
93
|
+
* @param counters - Current counter values for each level
|
|
94
|
+
* @param levels - Level definitions for format lookup
|
|
95
|
+
* @returns The expanded text (e.g., "1.", "1.2")
|
|
96
|
+
*/
|
|
97
|
+
export declare function expandLevelText(lvlText: string, counters: number[], levels: ListLevelInfo[]): string;
|
|
98
|
+
/**
|
|
99
|
+
* Check if legal numbering is active for a level.
|
|
100
|
+
*
|
|
101
|
+
* Legal numbering (w:isLgl) changes how nested levels display,
|
|
102
|
+
* using decimal format regardless of the level's numFmt.
|
|
103
|
+
*
|
|
104
|
+
* @param levels - Level definitions
|
|
105
|
+
* @param currentLevel - The current level index
|
|
106
|
+
* @returns True if legal numbering is active
|
|
107
|
+
*/
|
|
108
|
+
export declare function isLegalNumberingActive(levels: ListLevelInfo[], currentLevel: number): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Expand level text with legal numbering rules.
|
|
111
|
+
*
|
|
112
|
+
* When legal numbering is active, all level placeholders use decimal
|
|
113
|
+
* format regardless of the level's defined numFmt.
|
|
114
|
+
*
|
|
115
|
+
* @param lvlText - The level text format
|
|
116
|
+
* @param counters - Current counter values
|
|
117
|
+
* @param levels - Level definitions
|
|
118
|
+
* @param currentLevel - The current level index
|
|
119
|
+
* @returns The expanded text with legal numbering applied
|
|
120
|
+
*/
|
|
121
|
+
export declare function expandLevelTextWithLegal(lvlText: string, counters: number[], levels: ListLevelInfo[], currentLevel: number): string;
|
|
122
|
+
/**
|
|
123
|
+
* Extract list level info from a w:lvl element.
|
|
124
|
+
*
|
|
125
|
+
* @param lvlElement - The w:lvl XML element
|
|
126
|
+
* @returns The extracted level info
|
|
127
|
+
*/
|
|
128
|
+
export declare function parseLevelElement(lvlElement: WmlElement): ListLevelInfo;
|
|
129
|
+
/**
|
|
130
|
+
* Parse an abstract numbering definition.
|
|
131
|
+
*
|
|
132
|
+
* @param abstractNumElement - The w:abstractNum XML element
|
|
133
|
+
* @returns Array of level info for all defined levels
|
|
134
|
+
*/
|
|
135
|
+
export declare function parseAbstractNumElement(abstractNumElement: WmlElement): ListLevelInfo[];
|
|
136
|
+
//# sourceMappingURL=numbering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbering.d.ts","sourceRoot":"","sources":["../src/numbering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,UAAU,EACX,MAAM,iBAAiB,CAAC;AAOzB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EAAE,GACrB,gBAAgB,CAelB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CAGR;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,iEAAiE;IACjE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAKrD;AASD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,EACb,SAAS,SAAI,GACZ,MAAM,EAAE,CAQV;AAwBD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,GACvB,MAAM,CA2CR;AAMD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoClE;AAgJD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,aAAa,EAAE,GACtB,MAAM,CAeR;AAMD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EAAE,EACvB,YAAY,EAAE,MAAM,GACnB,OAAO,CAQT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,aAAa,EAAE,EACvB,YAAY,EAAE,MAAM,GACnB,MAAM,CAgBR;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,CA0BvE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,kBAAkB,EAAE,UAAU,GAC7B,aAAa,EAAE,CAWjB"}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legal Numbering Module
|
|
3
|
+
*
|
|
4
|
+
* Handles OOXML numbering corner cases for legal documents.
|
|
5
|
+
* Implements continuation pattern detection for proper rendering of
|
|
6
|
+
* "orphan" list items.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* Word exhibits behavior where orphan list items render at level 0:
|
|
10
|
+
* - Para 1: ilvl=0 → "1."
|
|
11
|
+
* - Para 2: ilvl=0 → "2."
|
|
12
|
+
* - Para 3: ilvl=0 → "3."
|
|
13
|
+
* - Para 4: ilvl=1, start=4 → Word displays "4." (NOT "3.4")
|
|
14
|
+
*/
|
|
15
|
+
import { childElements } from './primitives/index.js';
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Continuation Pattern Detection
|
|
18
|
+
// =============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Detect if a paragraph is using a continuation pattern.
|
|
21
|
+
*
|
|
22
|
+
* A continuation pattern occurs when a list item at ilvl > 0 should render
|
|
23
|
+
* at level 0 because its start value indicates it's continuing the parent
|
|
24
|
+
* level's sequence rather than starting a nested list.
|
|
25
|
+
*
|
|
26
|
+
* @param ilvl - The indentation level of the paragraph
|
|
27
|
+
* @param startValue - The start value for this level
|
|
28
|
+
* @param levelNumbers - Current counter values for each level
|
|
29
|
+
* @returns Continuation info with effective level
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* // Level numbers [3, 0] means level 0 is at "3", level 1 hasn't been used
|
|
33
|
+
* detectContinuationPattern(1, 4, [3, 0])
|
|
34
|
+
* // Returns: { isContinuation: true, effectiveLevel: 0 }
|
|
35
|
+
* // Because start=4 equals levelNumbers[0]+1, this continues as "4."
|
|
36
|
+
*/
|
|
37
|
+
export function detectContinuationPattern(ilvl, startValue, levelNumbers) {
|
|
38
|
+
// Must be at a level > 0 to be a continuation
|
|
39
|
+
if (ilvl <= 0) {
|
|
40
|
+
return { isContinuation: false, effectiveLevel: ilvl };
|
|
41
|
+
}
|
|
42
|
+
// Check if start value equals parent level's counter + 1
|
|
43
|
+
const parentLevel = ilvl - 1;
|
|
44
|
+
const parentValue = levelNumbers[parentLevel] ?? 0;
|
|
45
|
+
if (startValue === parentValue + 1) {
|
|
46
|
+
return { isContinuation: true, effectiveLevel: 0 };
|
|
47
|
+
}
|
|
48
|
+
return { isContinuation: false, effectiveLevel: ilvl };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get the effective level for rendering, accounting for continuation patterns.
|
|
52
|
+
*
|
|
53
|
+
* @param ilvl - The declared indentation level
|
|
54
|
+
* @param startValue - The start value for this level
|
|
55
|
+
* @param levelNumbers - Current counter values for each level
|
|
56
|
+
* @returns The effective level for rendering (0 for continuation patterns)
|
|
57
|
+
*/
|
|
58
|
+
export function getEffectiveLevel(ilvl, startValue, levelNumbers) {
|
|
59
|
+
const info = detectContinuationPattern(ilvl, startValue, levelNumbers);
|
|
60
|
+
return info.effectiveLevel;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create initial numbering state.
|
|
64
|
+
*/
|
|
65
|
+
export function createNumberingState() {
|
|
66
|
+
return {
|
|
67
|
+
counters: new Map(),
|
|
68
|
+
levelUsed: new Map(),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the key for numbering state lookup.
|
|
73
|
+
*/
|
|
74
|
+
function getNumKey(numId) {
|
|
75
|
+
return `num:${numId}`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get or initialize counter array for a numbering definition.
|
|
79
|
+
*
|
|
80
|
+
* @param state - The numbering state
|
|
81
|
+
* @param numId - The numbering definition ID
|
|
82
|
+
* @param maxLevels - Maximum number of levels (default 9)
|
|
83
|
+
* @returns The counter array for this numbering definition
|
|
84
|
+
*/
|
|
85
|
+
export function getCounters(state, numId, maxLevels = 9) {
|
|
86
|
+
const key = getNumKey(numId);
|
|
87
|
+
let counters = state.counters.get(key);
|
|
88
|
+
if (!counters) {
|
|
89
|
+
counters = new Array(maxLevels).fill(0);
|
|
90
|
+
state.counters.set(key, counters);
|
|
91
|
+
}
|
|
92
|
+
return counters;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get or initialize level used tracking for a numbering definition.
|
|
96
|
+
*/
|
|
97
|
+
function getLevelUsed(state, numId, maxLevels = 9) {
|
|
98
|
+
const key = getNumKey(numId);
|
|
99
|
+
let used = state.levelUsed.get(key);
|
|
100
|
+
if (!used) {
|
|
101
|
+
used = new Array(maxLevels).fill(false);
|
|
102
|
+
state.levelUsed.set(key, used);
|
|
103
|
+
}
|
|
104
|
+
return used;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Track the last used level for each numbering definition.
|
|
108
|
+
*/
|
|
109
|
+
const lastUsedLevel = new Map();
|
|
110
|
+
/**
|
|
111
|
+
* Process a numbered paragraph and return its display number.
|
|
112
|
+
*
|
|
113
|
+
* Updates the numbering state and returns the appropriate number to display,
|
|
114
|
+
* accounting for continuation patterns and level resets.
|
|
115
|
+
*
|
|
116
|
+
* @param state - The numbering state to update
|
|
117
|
+
* @param numId - The numbering definition ID
|
|
118
|
+
* @param ilvl - The indentation level
|
|
119
|
+
* @param levelInfo - Level properties from the numbering definition
|
|
120
|
+
* @returns The number to display at this level
|
|
121
|
+
*/
|
|
122
|
+
export function processNumberedParagraph(state, numId, ilvl, levelInfo) {
|
|
123
|
+
const counters = getCounters(state, numId);
|
|
124
|
+
const levelUsed = getLevelUsed(state, numId);
|
|
125
|
+
const key = `num:${numId}`;
|
|
126
|
+
// Check for continuation pattern
|
|
127
|
+
const continuation = detectContinuationPattern(ilvl, levelInfo.start, counters);
|
|
128
|
+
if (continuation.isContinuation) {
|
|
129
|
+
// Continuation pattern: use level 0's counter incremented
|
|
130
|
+
const current = counters[0] ?? 0;
|
|
131
|
+
counters[0] = current + 1;
|
|
132
|
+
lastUsedLevel.set(key, 0);
|
|
133
|
+
return counters[0] ?? 1;
|
|
134
|
+
}
|
|
135
|
+
// Check if we moved from a deeper level to a shallower level
|
|
136
|
+
const prevLevel = lastUsedLevel.get(key) ?? -1;
|
|
137
|
+
if (prevLevel > ilvl) {
|
|
138
|
+
// Reset all deeper levels when moving to a shallower level
|
|
139
|
+
for (let i = ilvl + 1; i < counters.length; i++) {
|
|
140
|
+
counters[i] = 0;
|
|
141
|
+
levelUsed[i] = false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Check if this level has been used before
|
|
145
|
+
if (!levelUsed[ilvl]) {
|
|
146
|
+
// First use of this level: set to start value
|
|
147
|
+
counters[ilvl] = levelInfo.start;
|
|
148
|
+
levelUsed[ilvl] = true;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
// Subsequent use: increment
|
|
152
|
+
const current = counters[ilvl] ?? 0;
|
|
153
|
+
counters[ilvl] = current + 1;
|
|
154
|
+
}
|
|
155
|
+
lastUsedLevel.set(key, ilvl);
|
|
156
|
+
return counters[ilvl] ?? levelInfo.start;
|
|
157
|
+
}
|
|
158
|
+
// =============================================================================
|
|
159
|
+
// Number Format Rendering
|
|
160
|
+
// =============================================================================
|
|
161
|
+
/**
|
|
162
|
+
* Convert a number to the specified format.
|
|
163
|
+
*
|
|
164
|
+
* @param value - The numeric value
|
|
165
|
+
* @param format - The number format (decimal, lowerLetter, upperLetter, lowerRoman, upperRoman, etc.)
|
|
166
|
+
* @returns The formatted string
|
|
167
|
+
*/
|
|
168
|
+
export function formatNumber(value, format) {
|
|
169
|
+
switch (format) {
|
|
170
|
+
case 'decimal':
|
|
171
|
+
case 'decimalZero':
|
|
172
|
+
return value.toString();
|
|
173
|
+
case 'lowerLetter':
|
|
174
|
+
return toLowerLetter(value);
|
|
175
|
+
case 'upperLetter':
|
|
176
|
+
return toUpperLetter(value);
|
|
177
|
+
case 'lowerRoman':
|
|
178
|
+
return toRoman(value).toLowerCase();
|
|
179
|
+
case 'upperRoman':
|
|
180
|
+
return toRoman(value);
|
|
181
|
+
case 'ordinal':
|
|
182
|
+
return toOrdinal(value);
|
|
183
|
+
case 'cardinalText':
|
|
184
|
+
return toCardinalText(value);
|
|
185
|
+
case 'ordinalText':
|
|
186
|
+
return toOrdinalText(value);
|
|
187
|
+
case 'bullet':
|
|
188
|
+
return '•';
|
|
189
|
+
case 'none':
|
|
190
|
+
return '';
|
|
191
|
+
default:
|
|
192
|
+
return value.toString();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Convert number to lowercase letter (a, b, c, ... z, aa, ab, ...).
|
|
197
|
+
*/
|
|
198
|
+
function toLowerLetter(value) {
|
|
199
|
+
let result = '';
|
|
200
|
+
let n = value;
|
|
201
|
+
while (n > 0) {
|
|
202
|
+
n--;
|
|
203
|
+
result = String.fromCharCode(97 + (n % 26)) + result;
|
|
204
|
+
n = Math.floor(n / 26);
|
|
205
|
+
}
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Convert number to uppercase letter (A, B, C, ... Z, AA, AB, ...).
|
|
210
|
+
*/
|
|
211
|
+
function toUpperLetter(value) {
|
|
212
|
+
return toLowerLetter(value).toUpperCase();
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Convert number to Roman numeral.
|
|
216
|
+
*/
|
|
217
|
+
function toRoman(value) {
|
|
218
|
+
const romanNumerals = [
|
|
219
|
+
[1000, 'M'],
|
|
220
|
+
[900, 'CM'],
|
|
221
|
+
[500, 'D'],
|
|
222
|
+
[400, 'CD'],
|
|
223
|
+
[100, 'C'],
|
|
224
|
+
[90, 'XC'],
|
|
225
|
+
[50, 'L'],
|
|
226
|
+
[40, 'XL'],
|
|
227
|
+
[10, 'X'],
|
|
228
|
+
[9, 'IX'],
|
|
229
|
+
[5, 'V'],
|
|
230
|
+
[4, 'IV'],
|
|
231
|
+
[1, 'I'],
|
|
232
|
+
];
|
|
233
|
+
let result = '';
|
|
234
|
+
let remaining = value;
|
|
235
|
+
for (const [num, roman] of romanNumerals) {
|
|
236
|
+
while (remaining >= num) {
|
|
237
|
+
result += roman;
|
|
238
|
+
remaining -= num;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return result;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Convert number to ordinal (1st, 2nd, 3rd, 4th, ...).
|
|
245
|
+
*/
|
|
246
|
+
function toOrdinal(value) {
|
|
247
|
+
const suffixes = ['th', 'st', 'nd', 'rd'];
|
|
248
|
+
const v = value % 100;
|
|
249
|
+
const suffix = suffixes[(v - 20) % 10] ?? suffixes[v] ?? suffixes[0] ?? 'th';
|
|
250
|
+
return value + suffix;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Convert number to cardinal text (one, two, three, ...).
|
|
254
|
+
*/
|
|
255
|
+
function toCardinalText(value) {
|
|
256
|
+
const ones = [
|
|
257
|
+
'',
|
|
258
|
+
'one',
|
|
259
|
+
'two',
|
|
260
|
+
'three',
|
|
261
|
+
'four',
|
|
262
|
+
'five',
|
|
263
|
+
'six',
|
|
264
|
+
'seven',
|
|
265
|
+
'eight',
|
|
266
|
+
'nine',
|
|
267
|
+
'ten',
|
|
268
|
+
'eleven',
|
|
269
|
+
'twelve',
|
|
270
|
+
'thirteen',
|
|
271
|
+
'fourteen',
|
|
272
|
+
'fifteen',
|
|
273
|
+
'sixteen',
|
|
274
|
+
'seventeen',
|
|
275
|
+
'eighteen',
|
|
276
|
+
'nineteen',
|
|
277
|
+
];
|
|
278
|
+
const tens = [
|
|
279
|
+
'',
|
|
280
|
+
'',
|
|
281
|
+
'twenty',
|
|
282
|
+
'thirty',
|
|
283
|
+
'forty',
|
|
284
|
+
'fifty',
|
|
285
|
+
'sixty',
|
|
286
|
+
'seventy',
|
|
287
|
+
'eighty',
|
|
288
|
+
'ninety',
|
|
289
|
+
];
|
|
290
|
+
if (value < 20) {
|
|
291
|
+
return ones[value] || value.toString();
|
|
292
|
+
}
|
|
293
|
+
if (value < 100) {
|
|
294
|
+
const ten = Math.floor(value / 10);
|
|
295
|
+
const one = value % 10;
|
|
296
|
+
return tens[ten] + (one > 0 ? '-' + ones[one] : '');
|
|
297
|
+
}
|
|
298
|
+
// For larger numbers, fall back to decimal
|
|
299
|
+
return value.toString();
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Convert number to ordinal text (first, second, third, ...).
|
|
303
|
+
*/
|
|
304
|
+
function toOrdinalText(value) {
|
|
305
|
+
const ordinals = {
|
|
306
|
+
1: 'first',
|
|
307
|
+
2: 'second',
|
|
308
|
+
3: 'third',
|
|
309
|
+
4: 'fourth',
|
|
310
|
+
5: 'fifth',
|
|
311
|
+
6: 'sixth',
|
|
312
|
+
7: 'seventh',
|
|
313
|
+
8: 'eighth',
|
|
314
|
+
9: 'ninth',
|
|
315
|
+
10: 'tenth',
|
|
316
|
+
11: 'eleventh',
|
|
317
|
+
12: 'twelfth',
|
|
318
|
+
};
|
|
319
|
+
return ordinals[value] || toOrdinal(value);
|
|
320
|
+
}
|
|
321
|
+
// =============================================================================
|
|
322
|
+
// Level Text Expansion
|
|
323
|
+
// =============================================================================
|
|
324
|
+
/**
|
|
325
|
+
* Expand a level text format string with actual numbers.
|
|
326
|
+
*
|
|
327
|
+
* Level text uses placeholders like %1, %2, %3 for level values.
|
|
328
|
+
*
|
|
329
|
+
* @param lvlText - The level text format (e.g., "%1.", "%1.%2")
|
|
330
|
+
* @param counters - Current counter values for each level
|
|
331
|
+
* @param levels - Level definitions for format lookup
|
|
332
|
+
* @returns The expanded text (e.g., "1.", "1.2")
|
|
333
|
+
*/
|
|
334
|
+
export function expandLevelText(lvlText, counters, levels) {
|
|
335
|
+
let result = lvlText;
|
|
336
|
+
// Replace %1 through %9 with corresponding level values
|
|
337
|
+
for (let i = 0; i < 9; i++) {
|
|
338
|
+
const placeholder = `%${i + 1}`;
|
|
339
|
+
if (result.includes(placeholder)) {
|
|
340
|
+
const value = counters[i] ?? 0;
|
|
341
|
+
const level = levels[i];
|
|
342
|
+
const formatted = level ? formatNumber(value, level.numFmt) : value.toString();
|
|
343
|
+
result = result.replace(placeholder, formatted);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return result;
|
|
347
|
+
}
|
|
348
|
+
// =============================================================================
|
|
349
|
+
// Legal Numbering (isLgl) Support
|
|
350
|
+
// =============================================================================
|
|
351
|
+
/**
|
|
352
|
+
* Check if legal numbering is active for a level.
|
|
353
|
+
*
|
|
354
|
+
* Legal numbering (w:isLgl) changes how nested levels display,
|
|
355
|
+
* using decimal format regardless of the level's numFmt.
|
|
356
|
+
*
|
|
357
|
+
* @param levels - Level definitions
|
|
358
|
+
* @param currentLevel - The current level index
|
|
359
|
+
* @returns True if legal numbering is active
|
|
360
|
+
*/
|
|
361
|
+
export function isLegalNumberingActive(levels, currentLevel) {
|
|
362
|
+
// Legal numbering applies when any ancestor level has isLgl=true
|
|
363
|
+
for (let i = 0; i <= currentLevel; i++) {
|
|
364
|
+
if (levels[i]?.isLgl) {
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Expand level text with legal numbering rules.
|
|
372
|
+
*
|
|
373
|
+
* When legal numbering is active, all level placeholders use decimal
|
|
374
|
+
* format regardless of the level's defined numFmt.
|
|
375
|
+
*
|
|
376
|
+
* @param lvlText - The level text format
|
|
377
|
+
* @param counters - Current counter values
|
|
378
|
+
* @param levels - Level definitions
|
|
379
|
+
* @param currentLevel - The current level index
|
|
380
|
+
* @returns The expanded text with legal numbering applied
|
|
381
|
+
*/
|
|
382
|
+
export function expandLevelTextWithLegal(lvlText, counters, levels, currentLevel) {
|
|
383
|
+
const useLegal = isLegalNumberingActive(levels, currentLevel);
|
|
384
|
+
let result = lvlText;
|
|
385
|
+
for (let i = 0; i < 9; i++) {
|
|
386
|
+
const placeholder = `%${i + 1}`;
|
|
387
|
+
if (result.includes(placeholder)) {
|
|
388
|
+
const value = counters[i] ?? 0;
|
|
389
|
+
const level = levels[i];
|
|
390
|
+
const format = useLegal ? 'decimal' : level?.numFmt ?? 'decimal';
|
|
391
|
+
const formatted = formatNumber(value, format);
|
|
392
|
+
result = result.replace(placeholder, formatted);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return result;
|
|
396
|
+
}
|
|
397
|
+
// =============================================================================
|
|
398
|
+
// Numbering Definition Parsing
|
|
399
|
+
// =============================================================================
|
|
400
|
+
/**
|
|
401
|
+
* Extract list level info from a w:lvl element.
|
|
402
|
+
*
|
|
403
|
+
* @param lvlElement - The w:lvl XML element
|
|
404
|
+
* @returns The extracted level info
|
|
405
|
+
*/
|
|
406
|
+
export function parseLevelElement(lvlElement) {
|
|
407
|
+
const ilvl = parseInt(lvlElement.getAttribute('w:ilvl') || '0', 10);
|
|
408
|
+
let start = 1;
|
|
409
|
+
let numFmt = 'decimal';
|
|
410
|
+
let lvlText = '';
|
|
411
|
+
let isLgl = false;
|
|
412
|
+
for (const child of childElements(lvlElement)) {
|
|
413
|
+
switch (child.tagName) {
|
|
414
|
+
case 'w:start':
|
|
415
|
+
start = parseInt(child.getAttribute('w:val') || '1', 10);
|
|
416
|
+
break;
|
|
417
|
+
case 'w:numFmt':
|
|
418
|
+
numFmt = child.getAttribute('w:val') || 'decimal';
|
|
419
|
+
break;
|
|
420
|
+
case 'w:lvlText':
|
|
421
|
+
lvlText = child.getAttribute('w:val') ?? '';
|
|
422
|
+
break;
|
|
423
|
+
case 'w:isLgl':
|
|
424
|
+
isLgl = child.getAttribute('w:val') !== 'false' && child.getAttribute('w:val') !== '0';
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return { ilvl, start, numFmt, lvlText, isLgl };
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Parse an abstract numbering definition.
|
|
432
|
+
*
|
|
433
|
+
* @param abstractNumElement - The w:abstractNum XML element
|
|
434
|
+
* @returns Array of level info for all defined levels
|
|
435
|
+
*/
|
|
436
|
+
export function parseAbstractNumElement(abstractNumElement) {
|
|
437
|
+
const levels = [];
|
|
438
|
+
for (const child of childElements(abstractNumElement)) {
|
|
439
|
+
if (child.tagName === 'w:lvl') {
|
|
440
|
+
const levelInfo = parseLevelElement(child);
|
|
441
|
+
levels[levelInfo.ilvl] = levelInfo;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return levels;
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=numbering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbering.js","sourceRoot":"","sources":["../src/numbering.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* accept_changes — accept all tracked changes in a OOXML document body.
|
|
3
|
+
*
|
|
4
|
+
* Produces a clean document with no revision markup by:
|
|
5
|
+
* - Removing w:del elements and their content
|
|
6
|
+
* - Unwrapping w:ins elements (promoting children)
|
|
7
|
+
* - Removing w:moveFrom (source), unwrapping w:moveTo (destination)
|
|
8
|
+
* - Removing all *PrChange property change records
|
|
9
|
+
* - Stripping paragraph-level revision markers
|
|
10
|
+
* - Cleaning up move range markers and rsidDel attributes
|
|
11
|
+
*
|
|
12
|
+
* Operates on the W3C DOM (`@xmldom/xmldom`) — the same API used
|
|
13
|
+
* throughout docx-primitives-ts (contrast with docx-comparison's
|
|
14
|
+
* custom WmlElement AST).
|
|
15
|
+
*/
|
|
16
|
+
export type AcceptChangesResult = {
|
|
17
|
+
insertionsAccepted: number;
|
|
18
|
+
deletionsAccepted: number;
|
|
19
|
+
movesResolved: number;
|
|
20
|
+
propertyChangesResolved: number;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Accept all tracked changes in the document body, producing a clean
|
|
24
|
+
* document with no revision markup.
|
|
25
|
+
*
|
|
26
|
+
* Mutates the Document in place (same convention as simplifyRedlines
|
|
27
|
+
* and mergeRuns).
|
|
28
|
+
*/
|
|
29
|
+
export declare function acceptChanges(doc: Document): AcceptChangesResult;
|
|
30
|
+
//# sourceMappingURL=accept_changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accept_changes.d.ts","sourceRoot":"","sources":["../../src/primitives/accept_changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,MAAM,mBAAmB,GAAG;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AA8IF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,mBAAmB,CA0FhE"}
|