mirror of
https://github.com/docmost/docmost.git
synced 2026-05-07 22:53:08 +08:00
5506eb194b
* Show actual history changes * V2 - WIP * feat: page history diff * fix: exclude content from history listing --------- Co-authored-by: Jason Norwood-Young <jason@10layer.com>
31 lines
842 B
TypeScript
31 lines
842 B
TypeScript
import { Transform, ReplaceStep, Step } from "@tiptap/pm/transform";
|
|
import { getReplaceStep } from "./getReplaceStep";
|
|
|
|
// join adjacent ReplaceSteps
|
|
export function simplifyTransform(tr: Transform) {
|
|
if (!tr.steps.length) {
|
|
return undefined;
|
|
}
|
|
|
|
const newTr = new Transform(tr.docs[0]);
|
|
const oldSteps = tr.steps.slice();
|
|
|
|
while (oldSteps.length) {
|
|
let step = oldSteps.shift();
|
|
while (oldSteps.length && step.merge(oldSteps[0])) {
|
|
const addedStep = oldSteps.shift();
|
|
if (step instanceof ReplaceStep && addedStep instanceof ReplaceStep) {
|
|
step = getReplaceStep(
|
|
newTr.doc,
|
|
addedStep.apply(step.apply(newTr.doc).doc).doc,
|
|
// @ts-ignore
|
|
) as Step<any>;
|
|
} else {
|
|
step = step.merge(addedStep);
|
|
}
|
|
}
|
|
newTr.step(step);
|
|
}
|
|
return newTr;
|
|
}
|