oasis-editor 0.0.162 → 0.0.163
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/dist/{OasisEditorApp-1SLQ3toO.js → OasisEditorApp-DrmbnMAA.js} +1 -1
- package/dist/assets/{importDocxWorker-BnENWXFH.js → importDocxWorker-Dc9RJPVl.js} +1 -1
- package/dist/export/docx/text/revisionXml.d.ts +11 -0
- package/dist/{index-BY8DRmWC.js → index-ByH2Moxz.js} +160 -14
- package/dist/oasis-editor.js +1 -1
- package/dist/oasis-editor.umd.cjs +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EditorRevision } from '../../../core/model.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Word stores visible text from deletion-like revisions in `w:delText` and
|
|
5
|
+
* deleted field instructions in `w:delInstrText`. Canonical run generation uses
|
|
6
|
+
* the ordinary tags, so normalize only direct run children here. If a source
|
|
7
|
+
* overlay retained stale deleted-text children after an edit, the generated
|
|
8
|
+
* ordinary child is authoritative and the stale counterpart is removed first.
|
|
9
|
+
*/
|
|
10
|
+
export declare function serializeDeletionRunContent(xml: string): string;
|
|
11
|
+
export declare function serializeRunRevisionWrapper(innerXml: string, revision: EditorRevision): string;
|
|
@@ -2863,7 +2863,7 @@ function OasisEditorAppLazy(props = {}) {
|
|
|
2863
2863
|
onCleanup(() => {
|
|
2864
2864
|
cancelled = true;
|
|
2865
2865
|
});
|
|
2866
|
-
import("./OasisEditorApp-
|
|
2866
|
+
import("./OasisEditorApp-DrmbnMAA.js").then((m) => {
|
|
2867
2867
|
cancelled = true;
|
|
2868
2868
|
setProgress(1);
|
|
2869
2869
|
setTimeout(() => setApp(() => m.OasisEditorApp), 180);
|
|
@@ -39752,6 +39752,31 @@ function parseCommentMarker(element) {
|
|
|
39752
39752
|
docxId
|
|
39753
39753
|
};
|
|
39754
39754
|
}
|
|
39755
|
+
function fallbackRevisionId(element) {
|
|
39756
|
+
const xml = new XMLSerializer().serializeToString(element);
|
|
39757
|
+
let hash = 2166136261;
|
|
39758
|
+
for (let index = 0; index < xml.length; index += 1) {
|
|
39759
|
+
hash ^= xml.charCodeAt(index);
|
|
39760
|
+
hash = Math.imul(hash, 16777619);
|
|
39761
|
+
}
|
|
39762
|
+
return `revision:${hash >>> 0}`;
|
|
39763
|
+
}
|
|
39764
|
+
function parseRevisionContainer(element) {
|
|
39765
|
+
const kind = element.localName;
|
|
39766
|
+
if (kind !== "ins" && kind !== "del" && kind !== "moveFrom" && kind !== "moveTo") {
|
|
39767
|
+
return void 0;
|
|
39768
|
+
}
|
|
39769
|
+
const rawDate = getAttributeValue(element, "date");
|
|
39770
|
+
const parsedDate = rawDate ? Date.parse(rawDate) : Number.NaN;
|
|
39771
|
+
const isDeletion = kind === "del" || kind === "moveFrom";
|
|
39772
|
+
return {
|
|
39773
|
+
id: getAttributeValue(element, "id") ?? fallbackRevisionId(element),
|
|
39774
|
+
type: isDeletion ? "delete" : "insert",
|
|
39775
|
+
author: getAttributeValue(element, "author") ?? "Unknown",
|
|
39776
|
+
date: Number.isFinite(parsedDate) ? parsedDate : 0,
|
|
39777
|
+
...kind === "moveFrom" ? { move: "from" } : kind === "moveTo" ? { move: "to" } : {}
|
|
39778
|
+
};
|
|
39779
|
+
}
|
|
39755
39780
|
async function parseRunElement(runElement, zip, relsMap, assets, parseNestedBlocks) {
|
|
39756
39781
|
const textParts = [];
|
|
39757
39782
|
let image;
|
|
@@ -39772,7 +39797,7 @@ async function parseRunElement(runElement, zip, relsMap, assets, parseNestedBloc
|
|
|
39772
39797
|
}
|
|
39773
39798
|
const element = node;
|
|
39774
39799
|
if (element.namespaceURI === WORD_NS$3) {
|
|
39775
|
-
if (element.localName === "t") {
|
|
39800
|
+
if (element.localName === "t" || element.localName === "delText") {
|
|
39776
39801
|
pushText(element.textContent ?? "");
|
|
39777
39802
|
} else if (element.localName === "tab") {
|
|
39778
39803
|
pushText(" ");
|
|
@@ -39959,6 +39984,26 @@ async function parseRunsContainer(container, numberingMaps, zip, relsMap, assets
|
|
|
39959
39984
|
runs.push({ text: "", comment: marker });
|
|
39960
39985
|
continue;
|
|
39961
39986
|
}
|
|
39987
|
+
const revision = parseRevisionContainer(element);
|
|
39988
|
+
if (revision) {
|
|
39989
|
+
const nestedRuns = await parseRunsContainer(
|
|
39990
|
+
element,
|
|
39991
|
+
numberingMaps,
|
|
39992
|
+
zip,
|
|
39993
|
+
relsMap,
|
|
39994
|
+
assets,
|
|
39995
|
+
theme,
|
|
39996
|
+
inheritedLink,
|
|
39997
|
+
parseNestedBlocks
|
|
39998
|
+
);
|
|
39999
|
+
for (const nestedRun of nestedRuns) {
|
|
40000
|
+
runs.push({
|
|
40001
|
+
...nestedRun,
|
|
40002
|
+
revision: nestedRun.revision ?? revision
|
|
40003
|
+
});
|
|
40004
|
+
}
|
|
40005
|
+
continue;
|
|
40006
|
+
}
|
|
39962
40007
|
if (element.localName === "sdt") {
|
|
39963
40008
|
const sdtContent = getFirstChildByTagNameNS(element, WORD_NS$3, "sdtContent");
|
|
39964
40009
|
if (!sdtContent) {
|
|
@@ -39994,7 +40039,7 @@ async function parseRunsContainer(container, numberingMaps, zip, relsMap, assets
|
|
|
39994
40039
|
getFirstChildByTagNameNS(element, WORD_NS$3, "rPr"),
|
|
39995
40040
|
theme
|
|
39996
40041
|
);
|
|
39997
|
-
const hasFieldControl = getChildrenByTagNameNS(element, WORD_NS$3, "fldChar").length > 0 || getChildrenByTagNameNS(element, WORD_NS$3, "instrText").length > 0;
|
|
40042
|
+
const hasFieldControl = getChildrenByTagNameNS(element, WORD_NS$3, "fldChar").length > 0 || getChildrenByTagNameNS(element, WORD_NS$3, "instrText").length > 0 || getChildrenByTagNameNS(element, WORD_NS$3, "delInstrText").length > 0;
|
|
39998
40043
|
if (hasFieldControl) {
|
|
39999
40044
|
for (let child2 = 0; child2 < element.childNodes.length; child2 += 1) {
|
|
40000
40045
|
const childNode = element.childNodes[child2];
|
|
@@ -40007,7 +40052,7 @@ async function parseRunsContainer(container, numberingMaps, zip, relsMap, assets
|
|
|
40007
40052
|
}
|
|
40008
40053
|
if (childElement.localName === "fldChar") {
|
|
40009
40054
|
onFldChar(childElement, runStyles);
|
|
40010
|
-
} else if (childElement.localName === "instrText") {
|
|
40055
|
+
} else if (childElement.localName === "instrText" || childElement.localName === "delInstrText") {
|
|
40011
40056
|
onInstrText(childElement, runStyles);
|
|
40012
40057
|
}
|
|
40013
40058
|
}
|
|
@@ -43259,7 +43304,7 @@ function wrapTableStructuralSdts(table, tableElement) {
|
|
|
43259
43304
|
}))
|
|
43260
43305
|
);
|
|
43261
43306
|
}
|
|
43262
|
-
function elementChildren(node) {
|
|
43307
|
+
function elementChildren$1(node) {
|
|
43263
43308
|
const children2 = [];
|
|
43264
43309
|
for (let index = 0; index < node.childNodes.length; index += 1) {
|
|
43265
43310
|
const child2 = node.childNodes[index];
|
|
@@ -43311,8 +43356,8 @@ function matchingChildByOccurrence(sourceChildren, sourceIndex, generatedChildre
|
|
|
43311
43356
|
}
|
|
43312
43357
|
function mergeNestedExtensionMarkup(source, generated) {
|
|
43313
43358
|
copyExtensionAttributes(source, generated);
|
|
43314
|
-
const sourceChildren = elementChildren(source);
|
|
43315
|
-
const generatedChildren = elementChildren(generated);
|
|
43359
|
+
const sourceChildren = elementChildren$1(source);
|
|
43360
|
+
const generatedChildren = elementChildren$1(generated);
|
|
43316
43361
|
sourceChildren.forEach((sourceChild, sourceIndex) => {
|
|
43317
43362
|
const generatedChild = matchingChildByOccurrence(
|
|
43318
43363
|
sourceChildren,
|
|
@@ -45145,6 +45190,106 @@ function mergeRunOoxmlSourceIntoGeneratedXml(run, generatedXml) {
|
|
|
45145
45190
|
mergeSourceRunChildren(sourceRun, generatedRun);
|
|
45146
45191
|
return new XMLSerializer().serializeToString(generatedRun);
|
|
45147
45192
|
}
|
|
45193
|
+
const WRAPPER_XMLNS = `xmlns:oasis="urn:oasis:docx" xmlns:w="${WORD_NS$1}" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"`;
|
|
45194
|
+
function elementChildren(element) {
|
|
45195
|
+
const result = [];
|
|
45196
|
+
for (let index = 0; index < element.childNodes.length; index += 1) {
|
|
45197
|
+
const child2 = element.childNodes[index];
|
|
45198
|
+
if ((child2 == null ? void 0 : child2.nodeType) === child2.ELEMENT_NODE) {
|
|
45199
|
+
result.push(child2);
|
|
45200
|
+
}
|
|
45201
|
+
}
|
|
45202
|
+
return result;
|
|
45203
|
+
}
|
|
45204
|
+
function parseSingleRun(xml) {
|
|
45205
|
+
const wrapper = new DOMParser$1().parseFromString(
|
|
45206
|
+
`<oasis:root ${WRAPPER_XMLNS}>${xml}</oasis:root>`,
|
|
45207
|
+
"application/xml"
|
|
45208
|
+
).documentElement;
|
|
45209
|
+
if (!wrapper) return void 0;
|
|
45210
|
+
const children2 = elementChildren(wrapper);
|
|
45211
|
+
if (children2.length !== 1) return void 0;
|
|
45212
|
+
const run = children2[0];
|
|
45213
|
+
return run.namespaceURI === WORD_NS$1 && run.localName === "r" ? run : void 0;
|
|
45214
|
+
}
|
|
45215
|
+
function replaceWordChildName(parent, source, targetLocalName) {
|
|
45216
|
+
const ownerDocument = parent.ownerDocument;
|
|
45217
|
+
if (!ownerDocument) return;
|
|
45218
|
+
const replacement = ownerDocument.createElementNS(
|
|
45219
|
+
WORD_NS$1,
|
|
45220
|
+
`w:${targetLocalName}`
|
|
45221
|
+
);
|
|
45222
|
+
for (let index = 0; index < source.attributes.length; index += 1) {
|
|
45223
|
+
const attribute = source.attributes.item(index);
|
|
45224
|
+
if (!attribute) continue;
|
|
45225
|
+
if (attribute.namespaceURI) {
|
|
45226
|
+
replacement.setAttributeNS(
|
|
45227
|
+
attribute.namespaceURI,
|
|
45228
|
+
attribute.name,
|
|
45229
|
+
attribute.value
|
|
45230
|
+
);
|
|
45231
|
+
} else {
|
|
45232
|
+
replacement.setAttribute(attribute.name, attribute.value);
|
|
45233
|
+
}
|
|
45234
|
+
}
|
|
45235
|
+
while (source.firstChild) {
|
|
45236
|
+
replacement.appendChild(source.firstChild);
|
|
45237
|
+
}
|
|
45238
|
+
parent.replaceChild(replacement, source);
|
|
45239
|
+
}
|
|
45240
|
+
function serializeDeletionRunContent(xml) {
|
|
45241
|
+
const run = parseSingleRun(xml);
|
|
45242
|
+
if (!run) return xml;
|
|
45243
|
+
const children2 = elementChildren(run);
|
|
45244
|
+
const generatedText = children2.filter(
|
|
45245
|
+
(child2) => child2.namespaceURI === WORD_NS$1 && child2.localName === "t"
|
|
45246
|
+
);
|
|
45247
|
+
if (generatedText.length > 0) {
|
|
45248
|
+
for (const child2 of children2) {
|
|
45249
|
+
if (child2.namespaceURI === WORD_NS$1 && child2.localName === "delText") {
|
|
45250
|
+
run.removeChild(child2);
|
|
45251
|
+
}
|
|
45252
|
+
}
|
|
45253
|
+
for (const child2 of generatedText) {
|
|
45254
|
+
replaceWordChildName(run, child2, "delText");
|
|
45255
|
+
}
|
|
45256
|
+
}
|
|
45257
|
+
const refreshed = elementChildren(run);
|
|
45258
|
+
const generatedInstructions = refreshed.filter(
|
|
45259
|
+
(child2) => child2.namespaceURI === WORD_NS$1 && child2.localName === "instrText"
|
|
45260
|
+
);
|
|
45261
|
+
if (generatedInstructions.length > 0) {
|
|
45262
|
+
for (const child2 of refreshed) {
|
|
45263
|
+
if (child2.namespaceURI === WORD_NS$1 && child2.localName === "delInstrText") {
|
|
45264
|
+
run.removeChild(child2);
|
|
45265
|
+
}
|
|
45266
|
+
}
|
|
45267
|
+
for (const child2 of generatedInstructions) {
|
|
45268
|
+
replaceWordChildName(run, child2, "delInstrText");
|
|
45269
|
+
}
|
|
45270
|
+
}
|
|
45271
|
+
return new XMLSerializer().serializeToString(run);
|
|
45272
|
+
}
|
|
45273
|
+
function revisionNumericId(id) {
|
|
45274
|
+
if (/^\d+$/.test(id)) return id;
|
|
45275
|
+
return String(
|
|
45276
|
+
Array.from(id).reduce(
|
|
45277
|
+
(hash, character) => hash * 31 + character.charCodeAt(0) >>> 0,
|
|
45278
|
+
0
|
|
45279
|
+
)
|
|
45280
|
+
);
|
|
45281
|
+
}
|
|
45282
|
+
function revisionElementName(revision) {
|
|
45283
|
+
if (revision.move === "from") return "moveFrom";
|
|
45284
|
+
if (revision.move === "to") return "moveTo";
|
|
45285
|
+
return revision.type === "delete" ? "del" : "ins";
|
|
45286
|
+
}
|
|
45287
|
+
function serializeRunRevisionWrapper(innerXml, revision) {
|
|
45288
|
+
const date = Number.isFinite(revision.date) ? new Date(revision.date).toISOString() : (/* @__PURE__ */ new Date(0)).toISOString();
|
|
45289
|
+
const attributes = `w:id="${revisionNumericId(revision.id)}" w:author="${escapeXml(revision.author)}" w:date="${date}"`;
|
|
45290
|
+
const element = revisionElementName(revision);
|
|
45291
|
+
return `<w:${element} ${attributes}>${innerXml}</w:${element}>`;
|
|
45292
|
+
}
|
|
45148
45293
|
function serializeRun(run, context2, paragraphStyleId, styles, serializeBlocksXml2) {
|
|
45149
45294
|
if (run.__isFootnoteRefMarker) {
|
|
45150
45295
|
return serializeFootnoteRefMarker();
|
|
@@ -45194,19 +45339,20 @@ function serializeRun(run, context2, paragraphStyleId, styles, serializeBlocksXm
|
|
|
45194
45339
|
return mergeRunOoxmlSourceIntoGeneratedXml(run, generatedXml);
|
|
45195
45340
|
}
|
|
45196
45341
|
function serializeRunWithRelationships(run, context2, paragraphStyleId, styles, serializeBlocksXml2) {
|
|
45197
|
-
var _a2;
|
|
45198
|
-
|
|
45342
|
+
var _a2, _b2;
|
|
45343
|
+
let runXml = serializeRun(
|
|
45199
45344
|
run,
|
|
45200
45345
|
context2,
|
|
45201
45346
|
paragraphStyleId,
|
|
45202
45347
|
styles,
|
|
45203
45348
|
serializeBlocksXml2
|
|
45204
45349
|
);
|
|
45205
|
-
|
|
45206
|
-
|
|
45207
|
-
return runXml;
|
|
45350
|
+
if (((_a2 = run.revision) == null ? void 0 : _a2.type) === "delete") {
|
|
45351
|
+
runXml = serializeDeletionRunContent(runXml);
|
|
45208
45352
|
}
|
|
45209
|
-
|
|
45353
|
+
const href = (_b2 = run.styles) == null ? void 0 : _b2.link;
|
|
45354
|
+
const linkedXml = href ? wrapRunWithHyperlink(runXml, href, context2) : runXml;
|
|
45355
|
+
return run.revision ? serializeRunRevisionWrapper(linkedXml, run.revision) : linkedXml;
|
|
45210
45356
|
}
|
|
45211
45357
|
function serializeRunsWithInlineSdts(runs, serializeRun2) {
|
|
45212
45358
|
var _a2, _b2, _c;
|
|
@@ -47571,7 +47717,7 @@ async function importDocxInWorker(buffer, options = {}) {
|
|
|
47571
47717
|
const worker = new Worker(
|
|
47572
47718
|
new URL(
|
|
47573
47719
|
/* @vite-ignore */
|
|
47574
|
-
"" + new URL("assets/importDocxWorker-
|
|
47720
|
+
"" + new URL("assets/importDocxWorker-Dc9RJPVl.js", import.meta.url).href,
|
|
47575
47721
|
import.meta.url
|
|
47576
47722
|
),
|
|
47577
47723
|
{
|
package/dist/oasis-editor.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dK, ah, aw, aM, aG, dL, dM, dN, aA, dO, ai, dP, dt, aN, dQ, dR, aL, aD, dS, dT, dU, ag, dV, dr, aP, dW, dX, dY, dZ, d_, dF, d$, e0, e1, aU, aT, e2, aE, e3, e4, e5, e6, e7, e8, aI, aF, e9, b3, aO, b2, aV, az, aK, dE, ea, dL as dL2, dS as dS2, dV as dV2, e2 as e22, e3 as e32, e8 as e82, eb, ec, dv, dq, ed, ee, ef, eg, eh, ei, ej, ds, ek, el, em, du, en } from "./index-
|
|
1
|
+
import { dK, ah, aw, aM, aG, dL, dM, dN, aA, dO, ai, dP, dt, aN, dQ, dR, aL, aD, dS, dT, dU, ag, dV, dr, aP, dW, dX, dY, dZ, d_, dF, d$, e0, e1, aU, aT, e2, aE, e3, e4, e5, e6, e7, e8, aI, aF, e9, b3, aO, b2, aV, az, aK, dE, ea, dL as dL2, dS as dS2, dV as dV2, e2 as e22, e3 as e32, e8 as e82, eb, ec, dv, dq, ed, ee, ef, eg, eh, ei, ej, ds, ek, el, em, du, en } from "./index-ByH2Moxz.js";
|
|
2
2
|
export {
|
|
3
3
|
dK as ActionRow,
|
|
4
4
|
ah as BalloonShell,
|