docxmlater 6.0.0 → 6.2.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.
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentTrackingContext = void 0;
4
+ const Revision_1 = require("../elements/Revision");
5
+ const Run_1 = require("../elements/Run");
6
+ const Paragraph_1 = require("../elements/Paragraph");
7
+ class DocumentTrackingContext {
8
+ enabled = false;
9
+ trackFormatting = true;
10
+ author = 'DocHub';
11
+ revisionManager;
12
+ pendingChanges = new Map();
13
+ static FORMATTING_PROPERTIES = new Set([
14
+ 'bold',
15
+ 'italic',
16
+ 'underline',
17
+ 'strike',
18
+ 'dstrike',
19
+ 'subscript',
20
+ 'superscript',
21
+ 'font',
22
+ 'size',
23
+ 'color',
24
+ 'highlight',
25
+ 'smallCaps',
26
+ 'allCaps',
27
+ 'characterSpacing',
28
+ 'scaling',
29
+ 'position',
30
+ 'emphasis',
31
+ 'shadow',
32
+ 'emboss',
33
+ 'imprint',
34
+ 'outline',
35
+ 'vanish',
36
+ ]);
37
+ constructor(revisionManager) {
38
+ this.revisionManager = revisionManager;
39
+ }
40
+ enable(options) {
41
+ this.enabled = true;
42
+ if (options?.author) {
43
+ this.author = options.author;
44
+ }
45
+ if (options?.trackFormatting !== undefined) {
46
+ this.trackFormatting = options.trackFormatting;
47
+ }
48
+ }
49
+ disable() {
50
+ this.flushPendingChanges();
51
+ this.enabled = false;
52
+ }
53
+ setAuthor(author) {
54
+ this.author = author;
55
+ }
56
+ isEnabled() {
57
+ return this.enabled;
58
+ }
59
+ getAuthor() {
60
+ return this.author;
61
+ }
62
+ getRevisionManager() {
63
+ return this.revisionManager;
64
+ }
65
+ isTrackFormattingEnabled() {
66
+ return this.trackFormatting;
67
+ }
68
+ trackRunPropertyChange(run, property, oldValue, newValue) {
69
+ if (!this.enabled)
70
+ return;
71
+ if (oldValue === newValue)
72
+ return;
73
+ if (!this.trackFormatting &&
74
+ DocumentTrackingContext.FORMATTING_PROPERTIES.has(property)) {
75
+ return;
76
+ }
77
+ const key = `runProp:${property}:${this.stringifyValue(newValue)}`;
78
+ this.addPendingChange(key, {
79
+ type: 'runPropertiesChange',
80
+ property,
81
+ previousValue: oldValue,
82
+ newValue,
83
+ element: run,
84
+ timestamp: Date.now(),
85
+ });
86
+ }
87
+ trackParagraphPropertyChange(paragraph, property, oldValue, newValue) {
88
+ if (!this.enabled)
89
+ return;
90
+ if (oldValue === newValue)
91
+ return;
92
+ const key = `paraProp:${property}:${this.stringifyValue(newValue)}`;
93
+ this.addPendingChange(key, {
94
+ type: 'paragraphPropertiesChange',
95
+ property,
96
+ previousValue: oldValue,
97
+ newValue,
98
+ element: paragraph,
99
+ timestamp: Date.now(),
100
+ });
101
+ }
102
+ trackHyperlinkChange(hyperlink, changeType, oldValue, newValue) {
103
+ if (!this.enabled)
104
+ return;
105
+ if (oldValue === newValue)
106
+ return;
107
+ const key = `hyperlink:${changeType}:${this.stringifyValue(newValue)}`;
108
+ this.addPendingChange(key, {
109
+ type: 'runPropertiesChange',
110
+ property: changeType,
111
+ previousValue: oldValue,
112
+ newValue,
113
+ element: hyperlink,
114
+ timestamp: Date.now(),
115
+ });
116
+ }
117
+ trackTableChange(element, property, oldValue, newValue) {
118
+ if (!this.enabled)
119
+ return;
120
+ if (oldValue === newValue)
121
+ return;
122
+ let type = 'tablePropertiesChange';
123
+ const elementType = element?.constructor?.name || 'unknown';
124
+ if (elementType === 'TableRow') {
125
+ type = 'tableRowPropertiesChange';
126
+ }
127
+ else if (elementType === 'TableCell') {
128
+ type = 'tableCellPropertiesChange';
129
+ }
130
+ const key = `table:${elementType}:${property}:${this.stringifyValue(newValue)}`;
131
+ this.addPendingChange(key, {
132
+ type,
133
+ property,
134
+ previousValue: oldValue,
135
+ newValue,
136
+ element,
137
+ timestamp: Date.now(),
138
+ });
139
+ }
140
+ trackInsertion(element, text) {
141
+ if (!this.enabled)
142
+ return;
143
+ if (!text)
144
+ return;
145
+ const key = `insert:${Date.now()}:${text.substring(0, 20)}`;
146
+ this.addPendingChange(key, {
147
+ type: 'insert',
148
+ property: 'text',
149
+ previousValue: undefined,
150
+ newValue: text,
151
+ element,
152
+ timestamp: Date.now(),
153
+ });
154
+ }
155
+ trackDeletion(element, text) {
156
+ if (!this.enabled)
157
+ return;
158
+ if (!text)
159
+ return;
160
+ const key = `delete:${Date.now()}:${text.substring(0, 20)}`;
161
+ this.addPendingChange(key, {
162
+ type: 'delete',
163
+ property: 'text',
164
+ previousValue: text,
165
+ newValue: undefined,
166
+ element,
167
+ timestamp: Date.now(),
168
+ });
169
+ }
170
+ flushPendingChanges() {
171
+ const revisions = [];
172
+ const paragraphChanges = new Map();
173
+ for (const [, pending] of this.pendingChanges) {
174
+ const revision = this.createRevision(pending);
175
+ this.revisionManager.register(revision);
176
+ revisions.push(revision);
177
+ if (pending.type === 'paragraphPropertiesChange' && pending.element instanceof Paragraph_1.Paragraph) {
178
+ const changes = paragraphChanges.get(pending.element) || [];
179
+ changes.push(pending);
180
+ paragraphChanges.set(pending.element, changes);
181
+ }
182
+ }
183
+ for (const [paragraph, changes] of paragraphChanges) {
184
+ const previousProperties = {};
185
+ let latestTimestamp = 0;
186
+ for (const change of changes) {
187
+ if (change.previousValue !== undefined) {
188
+ previousProperties[change.property] = change.previousValue;
189
+ }
190
+ if (change.timestamp > latestTimestamp) {
191
+ latestTimestamp = change.timestamp;
192
+ }
193
+ }
194
+ const revisionId = this.revisionManager.peekNextId();
195
+ paragraph.formatting.pPrChange = {
196
+ author: this.author,
197
+ date: new Date(latestTimestamp).toISOString(),
198
+ id: String(revisionId),
199
+ previousProperties: Object.keys(previousProperties).length > 0 ? previousProperties : undefined,
200
+ };
201
+ }
202
+ this.pendingChanges.clear();
203
+ return revisions;
204
+ }
205
+ addPendingChange(key, change) {
206
+ const existing = this.pendingChanges.get(key);
207
+ if (existing) {
208
+ existing.count = (existing.count || 1) + 1;
209
+ }
210
+ else {
211
+ this.pendingChanges.set(key, { ...change, count: 1 });
212
+ }
213
+ }
214
+ createRevision(pending) {
215
+ const previousProps = {};
216
+ const newProps = {};
217
+ if (pending.previousValue !== undefined) {
218
+ previousProps[pending.property] = pending.previousValue;
219
+ }
220
+ if (pending.newValue !== undefined) {
221
+ newProps[pending.property] = pending.newValue;
222
+ }
223
+ const run = this.getRunFromElement(pending.element);
224
+ return new Revision_1.Revision({
225
+ author: this.author,
226
+ type: pending.type,
227
+ content: run,
228
+ previousProperties: Object.keys(previousProps).length > 0 ? previousProps : undefined,
229
+ newProperties: Object.keys(newProps).length > 0 ? newProps : undefined,
230
+ date: new Date(pending.timestamp),
231
+ });
232
+ }
233
+ getRunFromElement(element) {
234
+ if (element instanceof Run_1.Run) {
235
+ return element;
236
+ }
237
+ const text = element?.getText?.() ||
238
+ element?.constructor?.name ||
239
+ 'Unknown element';
240
+ return new Run_1.Run(typeof text === 'string' ? text : String(text));
241
+ }
242
+ stringifyValue(value) {
243
+ if (value === undefined)
244
+ return 'undefined';
245
+ if (value === null)
246
+ return 'null';
247
+ if (typeof value === 'object') {
248
+ return JSON.stringify(value);
249
+ }
250
+ return String(value);
251
+ }
252
+ getPendingCount() {
253
+ return this.pendingChanges.size;
254
+ }
255
+ hasPendingChanges() {
256
+ return this.pendingChanges.size > 0;
257
+ }
258
+ clearPendingChanges() {
259
+ this.pendingChanges.clear();
260
+ }
261
+ }
262
+ exports.DocumentTrackingContext = DocumentTrackingContext;
263
+ //# sourceMappingURL=DocumentTrackingContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentTrackingContext.js","sourceRoot":"","sources":["../../src/tracking/DocumentTrackingContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Revision, RevisionType } from '../elements/Revision';
2
+ import type { RevisionManager } from '../elements/RevisionManager';
3
+ import type { Run } from '../elements/Run';
4
+ export interface PendingChange {
5
+ type: RevisionType;
6
+ property: string;
7
+ previousValue: any;
8
+ newValue: any;
9
+ element: any;
10
+ timestamp: number;
11
+ count?: number;
12
+ }
13
+ export interface TrackingContext {
14
+ isEnabled(): boolean;
15
+ getAuthor(): string;
16
+ getRevisionManager(): RevisionManager;
17
+ isTrackFormattingEnabled(): boolean;
18
+ trackRunPropertyChange(run: Run, property: string, oldValue: any, newValue: any): void;
19
+ trackParagraphPropertyChange(paragraph: any, property: string, oldValue: any, newValue: any): void;
20
+ trackHyperlinkChange(hyperlink: any, changeType: string, oldValue: any, newValue: any): void;
21
+ trackTableChange(element: any, property: string, oldValue: any, newValue: any): void;
22
+ trackInsertion(element: any, text: string): void;
23
+ trackDeletion(element: any, text: string): void;
24
+ flushPendingChanges(): Revision[];
25
+ }
26
+ //# sourceMappingURL=TrackingContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrackingContext.d.ts","sourceRoot":"","sources":["../../src/tracking/TrackingContext.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAK3C,MAAM,WAAW,aAAa;IAE5B,IAAI,EAAE,YAAY,CAAC;IAEnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,EAAE,GAAG,CAAC;IAEnB,QAAQ,EAAE,GAAG,CAAC;IAEd,OAAO,EAAE,GAAG,CAAC;IAEb,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,MAAM,WAAW,eAAe;IAI9B,SAAS,IAAI,OAAO,CAAC;IAKrB,SAAS,IAAI,MAAM,CAAC;IAKpB,kBAAkB,IAAI,eAAe,CAAC;IAKtC,wBAAwB,IAAI,OAAO,CAAC;IASpC,sBAAsB,CACpB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,GACZ,IAAI,CAAC;IASR,4BAA4B,CAC1B,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,GACZ,IAAI,CAAC;IASR,oBAAoB,CAClB,SAAS,EAAE,GAAG,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,GACZ,IAAI,CAAC;IASR,gBAAgB,CACd,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,GACZ,IAAI,CAAC;IAOR,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAOjD,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAOhD,mBAAmB,IAAI,QAAQ,EAAE,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TrackingContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrackingContext.js","sourceRoot":"","sources":["../../src/tracking/TrackingContext.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { TrackingContext, PendingChange } from './TrackingContext';
2
+ export { DocumentTrackingContext, TrackingEnableOptions, } from './DocumentTrackingContext';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tracking/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentTrackingContext = void 0;
4
+ var DocumentTrackingContext_1 = require("./DocumentTrackingContext");
5
+ Object.defineProperty(exports, "DocumentTrackingContext", { enumerable: true, get: function () { return DocumentTrackingContext_1.DocumentTrackingContext; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tracking/index.ts"],"names":[],"mappings":";;;AASA,qEAGmC;AAFjC,kIAAA,uBAAuB,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docxmlater",
3
- "version": "6.0.0",
3
+ "version": "6.2.1",
4
4
  "description": "A comprehensive DOCX editing framework for creating, reading, and manipulating Microsoft Word documents",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",