superdoc 1.17.0-next.22 → 1.17.0-next.23

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.
@@ -37016,7 +37016,7 @@ var SuperConverter = class SuperConverter {
37016
37016
  static getStoredSuperdocVersion(docx) {
37017
37017
  return SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
37018
37018
  }
37019
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.22") {
37019
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.23") {
37020
37020
  return SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
37021
37021
  }
37022
37022
  static generateWordTimestamp() {
@@ -36996,7 +36996,7 @@ var SuperConverter = class SuperConverter {
36996
36996
  static getStoredSuperdocVersion(docx) {
36997
36997
  return SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
36998
36998
  }
36999
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.22") {
36999
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.23") {
37000
37000
  return SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
37001
37001
  }
37002
37002
  static generateWordTimestamp() {
@@ -1,5 +1,5 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-Dp2H1eGw.cjs");
2
- const require_SuperConverter = require("./SuperConverter-D7RZNOcI.cjs");
2
+ const require_SuperConverter = require("./SuperConverter-BWfgkSkt.cjs");
3
3
  const require_jszip = require("./jszip-DCT9QYaK.cjs");
4
4
  const require_uuid = require("./uuid-CHj_rjgt.cjs");
5
5
  const require_constants = require("./constants-CpniKo9Z.cjs");
@@ -261,7 +261,7 @@ var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
261
261
  const COMMUNITY_LICENSE_KEY = "community-and-eval-agplv3";
262
262
  function getSuperdocVersion() {
263
263
  try {
264
- return "1.17.0-next.22";
264
+ return "1.17.0-next.23";
265
265
  } catch {
266
266
  return "unknown";
267
267
  }
@@ -20779,7 +20779,7 @@ const canUseDOM = () => {
20779
20779
  return false;
20780
20780
  }
20781
20781
  };
20782
- var summaryVersion = "1.17.0-next.22";
20782
+ var summaryVersion = "1.17.0-next.23";
20783
20783
  var nodeKeys = [
20784
20784
  "group",
20785
20785
  "content",
@@ -36085,7 +36085,7 @@ var Editor = class Editor extends EventEmitter$1 {
36085
36085
  return migrations.length > 0;
36086
36086
  }
36087
36087
  processCollaborationMigrations() {
36088
- console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.22");
36088
+ console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.23");
36089
36089
  if (!this.options.ydoc) return;
36090
36090
  let docVersion = this.options.ydoc.getMap("meta").get("version");
36091
36091
  if (!docVersion) docVersion = "initial";
@@ -82833,47 +82833,73 @@ const TrackChanges = Extension.create({
82833
82833
  return true;
82834
82834
  },
82835
82835
  rejectTrackedChangesBetween: (from$1, to) => ({ state, dispatch, editor }) => {
82836
+ const trackedChangesInSelection = collectTrackedChanges({
82837
+ state,
82838
+ from: from$1,
82839
+ to
82840
+ });
82841
+ const trackedChangesById = getTrackedChangesByTouchedIds(state, trackedChangesInSelection);
82842
+ const trackedChangesWithoutId = trackedChangesInSelection.filter(({ mark }) => !mark?.attrs?.id);
82843
+ const trackedChanges = dedupeTrackedChangeRanges([...trackedChangesById, ...trackedChangesWithoutId]);
82836
82844
  if (!isTrackedChangeActionAllowed({
82837
82845
  editor,
82838
82846
  action: "reject",
82839
- trackedChanges: collectTrackedChanges({
82840
- state,
82841
- from: from$1,
82842
- to
82843
- })
82847
+ trackedChanges
82844
82848
  })) return false;
82845
82849
  const { tr, doc: doc$2 } = state;
82850
+ const rejectedChangeIds = /* @__PURE__ */ new Set();
82846
82851
  tr.setMeta("inputType", "acceptReject");
82847
82852
  const map$2 = new require_SuperConverter.Mapping();
82848
- doc$2.nodesBetween(from$1, to, (node, pos) => {
82849
- if (node.marks && node.marks.find((mark) => mark.type.name === "trackDelete")) {
82850
- const deletionMark = node.marks.find((mark) => mark.type.name === require_SuperConverter.TrackDeleteMarkName);
82851
- tr.step(new require_SuperConverter.RemoveMarkStep(map$2.map(Math.max(pos, from$1)), map$2.map(Math.min(pos + node.nodeSize, to)), deletionMark));
82852
- } else if (node.marks && node.marks.find((mark) => mark.type.name === "trackInsert")) {
82853
- const deletionStep = new require_SuperConverter.ReplaceStep(map$2.map(Math.max(pos, from$1)), map$2.map(Math.min(pos + node.nodeSize, to)), require_SuperConverter.Slice.empty);
82854
- tr.step(deletionStep);
82855
- map$2.appendMap(deletionStep.getMap());
82856
- } else if (node.marks && node.marks.find((mark) => mark.type.name === "trackFormat")) {
82857
- const formatChangeMark = node.marks.find((mark) => mark.type.name === require_SuperConverter.TrackFormatMarkName);
82858
- formatChangeMark.attrs.before.forEach((oldMark) => {
82859
- tr.step(new require_SuperConverter.AddMarkStep(map$2.map(Math.max(pos, from$1)), map$2.map(Math.min(pos + node.nodeSize, to)), state.schema.marks[oldMark.type].create(oldMark.attrs)));
82860
- });
82861
- formatChangeMark.attrs.after.forEach((newMark) => {
82862
- const mappedFrom = map$2.map(Math.max(pos, from$1));
82863
- const mappedTo = map$2.map(Math.min(pos + node.nodeSize, to));
82864
- const liveMark = findMarkInRangeBySnapshot({
82865
- doc: tr.doc,
82866
- from: mappedFrom,
82867
- to: mappedTo,
82868
- snapshot: newMark
82853
+ trackedChanges.forEach(({ from: rangeFrom, to: rangeTo }) => {
82854
+ doc$2.nodesBetween(rangeFrom, rangeTo, (node, pos) => {
82855
+ if (node.marks && node.marks.find((mark) => mark.type.name === "trackDelete")) {
82856
+ const deletionMark = node.marks.find((mark) => mark.type.name === require_SuperConverter.TrackDeleteMarkName);
82857
+ if (deletionMark?.attrs?.id) rejectedChangeIds.add(deletionMark.attrs.id);
82858
+ tr.step(new require_SuperConverter.RemoveMarkStep(map$2.map(Math.max(pos, rangeFrom)), map$2.map(Math.min(pos + node.nodeSize, rangeTo)), deletionMark));
82859
+ } else if (node.marks && node.marks.find((mark) => mark.type.name === "trackInsert")) {
82860
+ const insertionMark = node.marks.find((mark) => mark.type.name === require_SuperConverter.TrackInsertMarkName);
82861
+ if (insertionMark?.attrs?.id) rejectedChangeIds.add(insertionMark.attrs.id);
82862
+ const deletionStep = new require_SuperConverter.ReplaceStep(map$2.map(Math.max(pos, rangeFrom)), map$2.map(Math.min(pos + node.nodeSize, rangeTo)), require_SuperConverter.Slice.empty);
82863
+ tr.step(deletionStep);
82864
+ map$2.appendMap(deletionStep.getMap());
82865
+ } else if (node.marks && node.marks.find((mark) => mark.type.name === "trackFormat")) {
82866
+ const formatChangeMark = node.marks.find((mark) => mark.type.name === require_SuperConverter.TrackFormatMarkName);
82867
+ if (formatChangeMark?.attrs?.id) rejectedChangeIds.add(formatChangeMark.attrs.id);
82868
+ formatChangeMark.attrs.before.forEach((oldMark) => {
82869
+ tr.step(new require_SuperConverter.AddMarkStep(map$2.map(Math.max(pos, rangeFrom)), map$2.map(Math.min(pos + node.nodeSize, rangeTo)), state.schema.marks[oldMark.type].create(oldMark.attrs)));
82870
+ });
82871
+ formatChangeMark.attrs.after.forEach((newMark) => {
82872
+ const mappedFrom = map$2.map(Math.max(pos, rangeFrom));
82873
+ const mappedTo = map$2.map(Math.min(pos + node.nodeSize, rangeTo));
82874
+ const liveMark = findMarkInRangeBySnapshot({
82875
+ doc: tr.doc,
82876
+ from: mappedFrom,
82877
+ to: mappedTo,
82878
+ snapshot: newMark
82879
+ });
82880
+ if (!liveMark) return;
82881
+ tr.step(new require_SuperConverter.RemoveMarkStep(mappedFrom, mappedTo, liveMark));
82882
+ });
82883
+ tr.step(new require_SuperConverter.RemoveMarkStep(map$2.map(Math.max(pos, rangeFrom)), map$2.map(Math.min(pos + node.nodeSize, rangeTo)), formatChangeMark));
82884
+ }
82885
+ });
82886
+ });
82887
+ if (tr.steps.length) {
82888
+ dispatch(tr);
82889
+ if (editor?.emit && rejectedChangeIds.size) {
82890
+ const resolvedByEmail = editor.options?.user?.email;
82891
+ const resolvedByName = editor.options?.user?.name;
82892
+ rejectedChangeIds.forEach((changeId) => {
82893
+ editor.emit("commentsUpdate", {
82894
+ type: "trackedChange",
82895
+ event: "resolve",
82896
+ changeId,
82897
+ resolvedByEmail,
82898
+ resolvedByName
82869
82899
  });
82870
- if (!liveMark) return;
82871
- tr.step(new require_SuperConverter.RemoveMarkStep(mappedFrom, mappedTo, liveMark));
82872
82900
  });
82873
- tr.step(new require_SuperConverter.RemoveMarkStep(map$2.map(Math.max(pos, from$1)), map$2.map(Math.min(pos + node.nodeSize, to)), formatChangeMark));
82874
82901
  }
82875
- });
82876
- if (tr.steps.length) dispatch(tr);
82902
+ }
82877
82903
  return true;
82878
82904
  },
82879
82905
  acceptTrackedChange: ({ trackedChange }) => ({ commands: commands$1 }) => {
@@ -83067,6 +83093,25 @@ const TrackChanges = Extension.create({
83067
83093
  return [TrackChangesBasePlugin()];
83068
83094
  }
83069
83095
  });
83096
+ var dedupeTrackedChangeRanges = (changes = []) => {
83097
+ const byKey = /* @__PURE__ */ new Map();
83098
+ changes.forEach((change) => {
83099
+ if (!change || typeof change.from !== "number" || typeof change.to !== "number") return;
83100
+ const type = change.mark?.type?.name || "";
83101
+ const id = change.mark?.attrs?.id || "";
83102
+ const key$1 = `${change.from}:${change.to}:${type}:${id}`;
83103
+ if (!byKey.has(key$1)) byKey.set(key$1, change);
83104
+ });
83105
+ return Array.from(byKey.values()).sort((left$1, right$1) => {
83106
+ if (left$1.from !== right$1.from) return left$1.from - right$1.from;
83107
+ return left$1.to - right$1.to;
83108
+ });
83109
+ };
83110
+ var getTrackedChangesByTouchedIds = (state, trackedChanges = []) => {
83111
+ const touchedIds = new Set(trackedChanges.map(({ mark }) => mark?.attrs?.id).filter(Boolean));
83112
+ if (!touchedIds.size) return trackedChanges;
83113
+ return Array.from(touchedIds).flatMap((id) => getChangesByIdToResolve(state, id) || []);
83114
+ };
83070
83115
  var getChangesByIdToResolve = (state, id) => {
83071
83116
  const trackedChanges = getTrackChanges(state);
83072
83117
  const changeIndex = trackedChanges.findIndex(({ mark }) => mark.attrs.id === id);
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, n as __esmMin, r as __export, t as __commonJSMin } from "./rolldown-runtime-B2q5OVn9.es.js";
2
- import { $ as Selection, A as findChildren$1, At as DOMSerializer, B as findParentNode, C as calculateResolvedParagraphProperties, Ct as resolveTableCellProperties, D as CommandService, Dt as TrackInsertMarkName, E as generateOrderedListIndex, Et as TrackFormatMarkName, F as isNodeActive, Ft as minMax, G as cleanSchemaItem, H as defaultBlockAt$1, I as getSchemaTypeNameByName, It as callOrGet, J as AllSelection, K as getSchemaTypeByName, L as isMarkActive, Lt as getExtensionConfigField, M as findMark, Mt as Mark$1, N as getMarksFromSelection, Nt as Schema$1, O as isInTable, Ot as carbonCopy, P as isActive, Pt as Slice, Q as PluginKey, R as getMarkRange, S as isList, St as resolveRunProperties, T as docxNumberingHelpers, Tt as TrackDeleteMarkName, U as getMarkType, V as findParentNodeClosestToPos, W as getNodeType, X as NodeSelection, Y as EditorState, Z as Plugin, _ as inputRulesPlugin, _t as encodeCSSFromPPr, a as translator, at as ReplaceAroundStep$1, b as changeListLevel, bt as resolveDocxFontFamily, c as updateDOMAttributes, ct as canJoin, d as markdownToPmFragment, dt as joinPoint, et as SelectionRange, f as createDocFromHTML, ft as liftTarget, g as htmlHandler, gt as decodeRPrFromMarks, h as handleClipboardPaste, ht as generateRandomSigned32BitIntStrId, it as RemoveMarkStep, j as getActiveFormatting, jt as Fragment$1, k as posToDOMRect, kt as DOMParser$1, l as processContent, lt as canSplit, m as InputRule, mt as generateDocxRandomId, n as kebabCase$1, nt as AddMarkStep, o as _getReferencedTableStyles, ot as ReplaceStep, p as createCellBorders, pt as replaceStep$1, q as createDocument, r as insertNewRelationship, rt as Mapping, s as helpers_exports, st as Transform, t as SuperConverter, tt as TextSelection$1, u as createDocFromMarkdown, ut as dropPoint, v as unflattenListsInHtml, vt as encodeCSSFromRPr, w as getResolvedParagraphProperties, wt as getUnderlineCssString, x as updateNumberingProperties, xt as resolveParagraphProperties, y as ListHelpers, yt as encodeMarksFromRPr, z as isTextSelection } from "./SuperConverter-Da2sHpq1.es.js";
2
+ import { $ as Selection, A as findChildren$1, At as DOMSerializer, B as findParentNode, C as calculateResolvedParagraphProperties, Ct as resolveTableCellProperties, D as CommandService, Dt as TrackInsertMarkName, E as generateOrderedListIndex, Et as TrackFormatMarkName, F as isNodeActive, Ft as minMax, G as cleanSchemaItem, H as defaultBlockAt$1, I as getSchemaTypeNameByName, It as callOrGet, J as AllSelection, K as getSchemaTypeByName, L as isMarkActive, Lt as getExtensionConfigField, M as findMark, Mt as Mark$1, N as getMarksFromSelection, Nt as Schema$1, O as isInTable, Ot as carbonCopy, P as isActive, Pt as Slice, Q as PluginKey, R as getMarkRange, S as isList, St as resolveRunProperties, T as docxNumberingHelpers, Tt as TrackDeleteMarkName, U as getMarkType, V as findParentNodeClosestToPos, W as getNodeType, X as NodeSelection, Y as EditorState, Z as Plugin, _ as inputRulesPlugin, _t as encodeCSSFromPPr, a as translator, at as ReplaceAroundStep$1, b as changeListLevel, bt as resolveDocxFontFamily, c as updateDOMAttributes, ct as canJoin, d as markdownToPmFragment, dt as joinPoint, et as SelectionRange, f as createDocFromHTML, ft as liftTarget, g as htmlHandler, gt as decodeRPrFromMarks, h as handleClipboardPaste, ht as generateRandomSigned32BitIntStrId, it as RemoveMarkStep, j as getActiveFormatting, jt as Fragment$1, k as posToDOMRect, kt as DOMParser$1, l as processContent, lt as canSplit, m as InputRule, mt as generateDocxRandomId, n as kebabCase$1, nt as AddMarkStep, o as _getReferencedTableStyles, ot as ReplaceStep, p as createCellBorders, pt as replaceStep$1, q as createDocument, r as insertNewRelationship, rt as Mapping, s as helpers_exports, st as Transform, t as SuperConverter, tt as TextSelection$1, u as createDocFromMarkdown, ut as dropPoint, v as unflattenListsInHtml, vt as encodeCSSFromRPr, w as getResolvedParagraphProperties, wt as getUnderlineCssString, x as updateNumberingProperties, xt as resolveParagraphProperties, y as ListHelpers, yt as encodeMarksFromRPr, z as isTextSelection } from "./SuperConverter-oE8-K6ec.es.js";
3
3
  import { a as init_dist$2, i as global, n as init_dist, o as Buffer$3, r as process$1, s as init_dist$1 } from "./jszip-ChlR43oI.es.js";
4
4
  import { t as v4_default } from "./uuid-2IzDu5nl.es.js";
5
5
  import { A as resolveOpcTargetPath, E as pixelsToTwips, F as twipsToLines, I as twipsToPixels, P as twipsToInches, _ as halfPointToPoints, c as convertSizeToCSS, k as ptToTwips, p as getArrayBufferFromUrl, t as COMMENT_FILE_BASENAMES, v as inchesToPixels, x as linesToTwips, y as inchesToTwips } from "./constants-DBKi0Amm.es.js";
@@ -260,7 +260,7 @@ var v_click_outside_default = {
260
260
  var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
261
261
  function getSuperdocVersion() {
262
262
  try {
263
- return "1.17.0-next.22";
263
+ return "1.17.0-next.23";
264
264
  } catch {
265
265
  return "unknown";
266
266
  }
@@ -20760,7 +20760,7 @@ const canUseDOM = () => {
20760
20760
  return false;
20761
20761
  }
20762
20762
  };
20763
- var summaryVersion = "1.17.0-next.22";
20763
+ var summaryVersion = "1.17.0-next.23";
20764
20764
  var nodeKeys = [
20765
20765
  "group",
20766
20766
  "content",
@@ -35475,7 +35475,7 @@ var Editor = class Editor extends EventEmitter$1 {
35475
35475
  return migrations.length > 0;
35476
35476
  }
35477
35477
  processCollaborationMigrations() {
35478
- console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.22");
35478
+ console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.23");
35479
35479
  if (!this.options.ydoc) return;
35480
35480
  let docVersion = this.options.ydoc.getMap("meta").get("version");
35481
35481
  if (!docVersion) docVersion = "initial";
@@ -82191,47 +82191,73 @@ const TrackChanges = Extension.create({
82191
82191
  return true;
82192
82192
  },
82193
82193
  rejectTrackedChangesBetween: (from$1, to) => ({ state, dispatch, editor }) => {
82194
+ const trackedChangesInSelection = collectTrackedChanges({
82195
+ state,
82196
+ from: from$1,
82197
+ to
82198
+ });
82199
+ const trackedChangesById = getTrackedChangesByTouchedIds(state, trackedChangesInSelection);
82200
+ const trackedChangesWithoutId = trackedChangesInSelection.filter(({ mark }) => !mark?.attrs?.id);
82201
+ const trackedChanges = dedupeTrackedChangeRanges([...trackedChangesById, ...trackedChangesWithoutId]);
82194
82202
  if (!isTrackedChangeActionAllowed({
82195
82203
  editor,
82196
82204
  action: "reject",
82197
- trackedChanges: collectTrackedChanges({
82198
- state,
82199
- from: from$1,
82200
- to
82201
- })
82205
+ trackedChanges
82202
82206
  })) return false;
82203
82207
  const { tr, doc: doc$2 } = state;
82208
+ const rejectedChangeIds = /* @__PURE__ */ new Set();
82204
82209
  tr.setMeta("inputType", "acceptReject");
82205
82210
  const map$2 = new Mapping();
82206
- doc$2.nodesBetween(from$1, to, (node, pos) => {
82207
- if (node.marks && node.marks.find((mark) => mark.type.name === "trackDelete")) {
82208
- const deletionMark = node.marks.find((mark) => mark.type.name === TrackDeleteMarkName);
82209
- tr.step(new RemoveMarkStep(map$2.map(Math.max(pos, from$1)), map$2.map(Math.min(pos + node.nodeSize, to)), deletionMark));
82210
- } else if (node.marks && node.marks.find((mark) => mark.type.name === "trackInsert")) {
82211
- const deletionStep = new ReplaceStep(map$2.map(Math.max(pos, from$1)), map$2.map(Math.min(pos + node.nodeSize, to)), Slice.empty);
82212
- tr.step(deletionStep);
82213
- map$2.appendMap(deletionStep.getMap());
82214
- } else if (node.marks && node.marks.find((mark) => mark.type.name === "trackFormat")) {
82215
- const formatChangeMark = node.marks.find((mark) => mark.type.name === TrackFormatMarkName);
82216
- formatChangeMark.attrs.before.forEach((oldMark) => {
82217
- tr.step(new AddMarkStep(map$2.map(Math.max(pos, from$1)), map$2.map(Math.min(pos + node.nodeSize, to)), state.schema.marks[oldMark.type].create(oldMark.attrs)));
82218
- });
82219
- formatChangeMark.attrs.after.forEach((newMark) => {
82220
- const mappedFrom = map$2.map(Math.max(pos, from$1));
82221
- const mappedTo = map$2.map(Math.min(pos + node.nodeSize, to));
82222
- const liveMark = findMarkInRangeBySnapshot({
82223
- doc: tr.doc,
82224
- from: mappedFrom,
82225
- to: mappedTo,
82226
- snapshot: newMark
82211
+ trackedChanges.forEach(({ from: rangeFrom, to: rangeTo }) => {
82212
+ doc$2.nodesBetween(rangeFrom, rangeTo, (node, pos) => {
82213
+ if (node.marks && node.marks.find((mark) => mark.type.name === "trackDelete")) {
82214
+ const deletionMark = node.marks.find((mark) => mark.type.name === TrackDeleteMarkName);
82215
+ if (deletionMark?.attrs?.id) rejectedChangeIds.add(deletionMark.attrs.id);
82216
+ tr.step(new RemoveMarkStep(map$2.map(Math.max(pos, rangeFrom)), map$2.map(Math.min(pos + node.nodeSize, rangeTo)), deletionMark));
82217
+ } else if (node.marks && node.marks.find((mark) => mark.type.name === "trackInsert")) {
82218
+ const insertionMark = node.marks.find((mark) => mark.type.name === TrackInsertMarkName);
82219
+ if (insertionMark?.attrs?.id) rejectedChangeIds.add(insertionMark.attrs.id);
82220
+ const deletionStep = new ReplaceStep(map$2.map(Math.max(pos, rangeFrom)), map$2.map(Math.min(pos + node.nodeSize, rangeTo)), Slice.empty);
82221
+ tr.step(deletionStep);
82222
+ map$2.appendMap(deletionStep.getMap());
82223
+ } else if (node.marks && node.marks.find((mark) => mark.type.name === "trackFormat")) {
82224
+ const formatChangeMark = node.marks.find((mark) => mark.type.name === TrackFormatMarkName);
82225
+ if (formatChangeMark?.attrs?.id) rejectedChangeIds.add(formatChangeMark.attrs.id);
82226
+ formatChangeMark.attrs.before.forEach((oldMark) => {
82227
+ tr.step(new AddMarkStep(map$2.map(Math.max(pos, rangeFrom)), map$2.map(Math.min(pos + node.nodeSize, rangeTo)), state.schema.marks[oldMark.type].create(oldMark.attrs)));
82228
+ });
82229
+ formatChangeMark.attrs.after.forEach((newMark) => {
82230
+ const mappedFrom = map$2.map(Math.max(pos, rangeFrom));
82231
+ const mappedTo = map$2.map(Math.min(pos + node.nodeSize, rangeTo));
82232
+ const liveMark = findMarkInRangeBySnapshot({
82233
+ doc: tr.doc,
82234
+ from: mappedFrom,
82235
+ to: mappedTo,
82236
+ snapshot: newMark
82237
+ });
82238
+ if (!liveMark) return;
82239
+ tr.step(new RemoveMarkStep(mappedFrom, mappedTo, liveMark));
82240
+ });
82241
+ tr.step(new RemoveMarkStep(map$2.map(Math.max(pos, rangeFrom)), map$2.map(Math.min(pos + node.nodeSize, rangeTo)), formatChangeMark));
82242
+ }
82243
+ });
82244
+ });
82245
+ if (tr.steps.length) {
82246
+ dispatch(tr);
82247
+ if (editor?.emit && rejectedChangeIds.size) {
82248
+ const resolvedByEmail = editor.options?.user?.email;
82249
+ const resolvedByName = editor.options?.user?.name;
82250
+ rejectedChangeIds.forEach((changeId) => {
82251
+ editor.emit("commentsUpdate", {
82252
+ type: "trackedChange",
82253
+ event: "resolve",
82254
+ changeId,
82255
+ resolvedByEmail,
82256
+ resolvedByName
82227
82257
  });
82228
- if (!liveMark) return;
82229
- tr.step(new RemoveMarkStep(mappedFrom, mappedTo, liveMark));
82230
82258
  });
82231
- tr.step(new RemoveMarkStep(map$2.map(Math.max(pos, from$1)), map$2.map(Math.min(pos + node.nodeSize, to)), formatChangeMark));
82232
82259
  }
82233
- });
82234
- if (tr.steps.length) dispatch(tr);
82260
+ }
82235
82261
  return true;
82236
82262
  },
82237
82263
  acceptTrackedChange: ({ trackedChange }) => ({ commands: commands$1 }) => {
@@ -82425,6 +82451,25 @@ const TrackChanges = Extension.create({
82425
82451
  return [TrackChangesBasePlugin()];
82426
82452
  }
82427
82453
  });
82454
+ var dedupeTrackedChangeRanges = (changes = []) => {
82455
+ const byKey = /* @__PURE__ */ new Map();
82456
+ changes.forEach((change) => {
82457
+ if (!change || typeof change.from !== "number" || typeof change.to !== "number") return;
82458
+ const type = change.mark?.type?.name || "";
82459
+ const id = change.mark?.attrs?.id || "";
82460
+ const key$1 = `${change.from}:${change.to}:${type}:${id}`;
82461
+ if (!byKey.has(key$1)) byKey.set(key$1, change);
82462
+ });
82463
+ return Array.from(byKey.values()).sort((left$1, right$1) => {
82464
+ if (left$1.from !== right$1.from) return left$1.from - right$1.from;
82465
+ return left$1.to - right$1.to;
82466
+ });
82467
+ };
82468
+ var getTrackedChangesByTouchedIds = (state, trackedChanges = []) => {
82469
+ const touchedIds = new Set(trackedChanges.map(({ mark }) => mark?.attrs?.id).filter(Boolean));
82470
+ if (!touchedIds.size) return trackedChanges;
82471
+ return Array.from(touchedIds).flatMap((id) => getChangesByIdToResolve(state, id) || []);
82472
+ };
82428
82473
  var getChangesByIdToResolve = (state, id) => {
82429
82474
  const trackedChanges = getTrackChanges(state);
82430
82475
  const changeIndex = trackedChanges.findIndex(({ mark }) => mark.attrs.id === id);
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("../chunks/rolldown-runtime-Dp2H1eGw.cjs");
3
- const require_SuperConverter = require("../chunks/SuperConverter-D7RZNOcI.cjs");
3
+ const require_SuperConverter = require("../chunks/SuperConverter-BWfgkSkt.cjs");
4
4
  require("../chunks/jszip-DCT9QYaK.cjs");
5
5
  require("../chunks/xml-js--DznO7Gk.cjs");
6
6
  require("../chunks/constants-CpniKo9Z.cjs");
@@ -1,4 +1,4 @@
1
- import { t as SuperConverter } from "../chunks/SuperConverter-Da2sHpq1.es.js";
1
+ import { t as SuperConverter } from "../chunks/SuperConverter-oE8-K6ec.es.js";
2
2
  import "../chunks/jszip-ChlR43oI.es.js";
3
3
  import "../chunks/xml-js-DLE8mr0n.es.js";
4
4
  import "../chunks/constants-DBKi0Amm.es.js";
@@ -1 +1 @@
1
- {"version":3,"file":"track-changes.d.ts","sourceRoot":"","sources":["../../../../../../super-editor/src/extensions/track-changes/track-changes.js"],"names":[],"mappings":"AAaA,mFAidG;0BA9duB,oBAAoB"}
1
+ {"version":3,"file":"track-changes.d.ts","sourceRoot":"","sources":["../../../../../../super-editor/src/extensions/track-changes/track-changes.js"],"names":[],"mappings":"AAaA,mFA+eG;0BA5fuB,oBAAoB"}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./chunks/rolldown-runtime-Dp2H1eGw.cjs");
3
- const require_src = require("./chunks/src-B58kawL4.cjs");
4
- const require_SuperConverter = require("./chunks/SuperConverter-D7RZNOcI.cjs");
3
+ const require_src = require("./chunks/src-D9mjWvuW.cjs");
4
+ const require_SuperConverter = require("./chunks/SuperConverter-BWfgkSkt.cjs");
5
5
  require("./chunks/jszip-DCT9QYaK.cjs");
6
6
  require("./chunks/xml-js--DznO7Gk.cjs");
7
7
  require("./chunks/constants-CpniKo9Z.cjs");
@@ -1,5 +1,5 @@
1
- import { $ as getAllowedImageDimensions, Bt as defineNode, Ht as assertNodeType, Q as trackChangesHelpers_exports, Ut as isNodeType, Vt as isMarkType, X as getRichTextExtensions, Y as AIWriter_default, Z as getStarterExtensions, a as BasicUpload_default, at as CommentsPluginKey, c as Toolbar_default, et as SectionHelpers, i as SuperEditor_default, it as AnnotatorHelpers, n as SlashMenu, nt as Editor, o as ContextMenu_default, ot as createOrUpdateTrackedChangeComment, r as SuperInput_default, rt as fieldAnnotationHelpers_exports, s as SuperToolbar, st as TrackChangesBasePluginKey, t as Extensions, tt as PresentationEditor, zt as defineMark } from "./chunks/src-nkjmbRm8.es.js";
2
- import { N as getMarksFromSelection, i as registeredHandlers, j as getActiveFormatting, s as helpers_exports, t as SuperConverter } from "./chunks/SuperConverter-Da2sHpq1.es.js";
1
+ import { $ as getAllowedImageDimensions, Bt as defineNode, Ht as assertNodeType, Q as trackChangesHelpers_exports, Ut as isNodeType, Vt as isMarkType, X as getRichTextExtensions, Y as AIWriter_default, Z as getStarterExtensions, a as BasicUpload_default, at as CommentsPluginKey, c as Toolbar_default, et as SectionHelpers, i as SuperEditor_default, it as AnnotatorHelpers, n as SlashMenu, nt as Editor, o as ContextMenu_default, ot as createOrUpdateTrackedChangeComment, r as SuperInput_default, rt as fieldAnnotationHelpers_exports, s as SuperToolbar, st as TrackChangesBasePluginKey, t as Extensions, tt as PresentationEditor, zt as defineMark } from "./chunks/src-Dol3U5lU.es.js";
2
+ import { N as getMarksFromSelection, i as registeredHandlers, j as getActiveFormatting, s as helpers_exports, t as SuperConverter } from "./chunks/SuperConverter-oE8-K6ec.es.js";
3
3
  import "./chunks/jszip-ChlR43oI.es.js";
4
4
  import "./chunks/xml-js-DLE8mr0n.es.js";
5
5
  import "./chunks/constants-DBKi0Amm.es.js";
@@ -1 +1 @@
1
- {"version":3,"file":"comments-store.d.ts","sourceRoot":"","sources":["../../../../src/stores/comments-store.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comments-store.d.ts","sourceRoot":"","sources":["../../../../src/stores/comments-store.js"],"names":[],"mappings":"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"}
package/dist/superdoc.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./chunks/rolldown-runtime-Dp2H1eGw.cjs");
3
- const require_src = require("./chunks/src-B58kawL4.cjs");
4
- const require_SuperConverter = require("./chunks/SuperConverter-D7RZNOcI.cjs");
3
+ const require_src = require("./chunks/src-D9mjWvuW.cjs");
4
+ const require_SuperConverter = require("./chunks/SuperConverter-BWfgkSkt.cjs");
5
5
  const require_jszip = require("./chunks/jszip-DCT9QYaK.cjs");
6
6
  require("./chunks/xml-js--DznO7Gk.cjs");
7
7
  const require_uuid = require("./chunks/uuid-CHj_rjgt.cjs");
@@ -4477,6 +4477,14 @@ const useCommentsStore = defineStore("comments", () => {
4477
4477
  };
4478
4478
  syncCommentsToClients(superdoc, emitData);
4479
4479
  debounceEmit(changeId, emitData, superdoc);
4480
+ } else if (event === "resolve") {
4481
+ const existingTrackedChange = commentsList.value.find((comment$1) => comment$1.commentId === changeId);
4482
+ if (!existingTrackedChange || existingTrackedChange.resolvedTime) return;
4483
+ existingTrackedChange.resolveComment({
4484
+ email: params.resolvedByEmail ?? superdoc?.user?.email ?? null,
4485
+ name: params.resolvedByName ?? superdoc?.user?.name ?? null,
4486
+ superdoc
4487
+ });
4480
4488
  }
4481
4489
  };
4482
4490
  const debounceEmit = (commentId, event, superdoc, delay = 1e3) => {
@@ -4765,8 +4773,8 @@ const useCommentsStore = defineStore("comments", () => {
4765
4773
  return Array.isArray(json?.content) ? json.content.filter(Boolean) : [];
4766
4774
  };
4767
4775
  const handleEditorLocationsUpdate = (allCommentPositions) => {
4768
- if ((!allCommentPositions || Object.keys(allCommentPositions).length === 0) && commentsList.value.length > 0) return;
4769
- editorCommentPositions.value = allCommentPositions || {};
4776
+ if (allCommentPositions == null) return;
4777
+ editorCommentPositions.value = allCommentPositions;
4770
4778
  };
4771
4779
  const clearEditorCommentPositions = () => {
4772
4780
  editorCommentPositions.value = {};
@@ -20321,7 +20329,7 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
20321
20329
  this.config.colors = shuffleArray(this.config.colors);
20322
20330
  this.userColorMap = /* @__PURE__ */ new Map();
20323
20331
  this.colorIndex = 0;
20324
- this.version = "1.17.0-next.22";
20332
+ this.version = "1.17.0-next.23";
20325
20333
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
20326
20334
  this.superdocId = config.superdocId || require_uuid.v4_default();
20327
20335
  this.colors = this.config.colors;
@@ -1,5 +1,5 @@
1
- import { A as isMounted, At as toUint8Array, B as cNotM, C as resolveWrappedSlot, Ct as getUnixTime, D as warnOnce, Dt as readVarUint8Array, E as throwError, Et as readVarUint, F as changeColor, Ft as pow, G as ellipsis_vertical_solid_default, H as insideModal, I as c, It as v_click_outside_default, J as comment_solid_default, K as xmark_solid_default, L as cB, Lt as getFileObject, M as use_memo_default, Mt as writeVarUint8Array, N as on, Nt as create, O as useSsrAdapter, Ot as createEncoder, P as createId, Pt as min, Q as trackChangesHelpers_exports, R as cE, Rt as comments_module_events, S as configProviderInjectionKey, St as setIfUndefined, T as call, Tt as readVarString, U as insidePopover, V as createKey, W as caret_down_solid_default, X as getRichTextExtensions, Y as AIWriter_default, Z as getStarterExtensions, _ as useRtl, _t as applyAwarenessUpdate, at as CommentsPluginKey, b as useThemeClass, bt as map, ct as getTrackChanges, d as Dropdown_default, dt as toBase64, et as SectionHelpers, f as ConfigProvider_default, ft as isNode, g as _common_default$2, gt as Awareness, h as index_cssr_default$5, ht as varStorage, i as SuperEditor_default, it as AnnotatorHelpers, j as useMergedState, jt as writeVarUint, k as createInjectionKey, kt as length, l as messageApiInjectionKey, lt as createUint8ArrayFromArrayBuffer, m as use_theme_default, mt as onChange, nt as Editor, ot as createOrUpdateTrackedChangeComment, p as light_default$1, pt as offChange, q as check_solid_default, r as SuperInput_default, rt as fieldAnnotationHelpers_exports, s as SuperToolbar, t as Extensions, tt as PresentationEditor, u as messageProviderInjectionKey, ut as fromBase64, v as cssrAnchorMetaName, vt as encodeAwarenessUpdate, w as render, wt as createDecoder, x as useConfig, xt as ObservableV2, y as toString_default, yt as removeAwarenessStates, z as cM } from "./chunks/src-nkjmbRm8.es.js";
2
- import { i as registeredHandlers, s as helpers_exports, t as SuperConverter } from "./chunks/SuperConverter-Da2sHpq1.es.js";
1
+ import { A as isMounted, At as toUint8Array, B as cNotM, C as resolveWrappedSlot, Ct as getUnixTime, D as warnOnce, Dt as readVarUint8Array, E as throwError, Et as readVarUint, F as changeColor, Ft as pow, G as ellipsis_vertical_solid_default, H as insideModal, I as c, It as v_click_outside_default, J as comment_solid_default, K as xmark_solid_default, L as cB, Lt as getFileObject, M as use_memo_default, Mt as writeVarUint8Array, N as on, Nt as create, O as useSsrAdapter, Ot as createEncoder, P as createId, Pt as min, Q as trackChangesHelpers_exports, R as cE, Rt as comments_module_events, S as configProviderInjectionKey, St as setIfUndefined, T as call, Tt as readVarString, U as insidePopover, V as createKey, W as caret_down_solid_default, X as getRichTextExtensions, Y as AIWriter_default, Z as getStarterExtensions, _ as useRtl, _t as applyAwarenessUpdate, at as CommentsPluginKey, b as useThemeClass, bt as map, ct as getTrackChanges, d as Dropdown_default, dt as toBase64, et as SectionHelpers, f as ConfigProvider_default, ft as isNode, g as _common_default$2, gt as Awareness, h as index_cssr_default$5, ht as varStorage, i as SuperEditor_default, it as AnnotatorHelpers, j as useMergedState, jt as writeVarUint, k as createInjectionKey, kt as length, l as messageApiInjectionKey, lt as createUint8ArrayFromArrayBuffer, m as use_theme_default, mt as onChange, nt as Editor, ot as createOrUpdateTrackedChangeComment, p as light_default$1, pt as offChange, q as check_solid_default, r as SuperInput_default, rt as fieldAnnotationHelpers_exports, s as SuperToolbar, t as Extensions, tt as PresentationEditor, u as messageProviderInjectionKey, ut as fromBase64, v as cssrAnchorMetaName, vt as encodeAwarenessUpdate, w as render, wt as createDecoder, x as useConfig, xt as ObservableV2, y as toString_default, yt as removeAwarenessStates, z as cM } from "./chunks/src-Dol3U5lU.es.js";
2
+ import { i as registeredHandlers, s as helpers_exports, t as SuperConverter } from "./chunks/SuperConverter-oE8-K6ec.es.js";
3
3
  import { a as init_dist$1, i as global, n as init_dist, r as process$1 } from "./chunks/jszip-ChlR43oI.es.js";
4
4
  import "./chunks/xml-js-DLE8mr0n.es.js";
5
5
  import { t as v4_default } from "./chunks/uuid-2IzDu5nl.es.js";
@@ -4458,6 +4458,14 @@ const useCommentsStore = defineStore("comments", () => {
4458
4458
  };
4459
4459
  syncCommentsToClients(superdoc, emitData);
4460
4460
  debounceEmit(changeId, emitData, superdoc);
4461
+ } else if (event === "resolve") {
4462
+ const existingTrackedChange = commentsList.value.find((comment$1) => comment$1.commentId === changeId);
4463
+ if (!existingTrackedChange || existingTrackedChange.resolvedTime) return;
4464
+ existingTrackedChange.resolveComment({
4465
+ email: params.resolvedByEmail ?? superdoc?.user?.email ?? null,
4466
+ name: params.resolvedByName ?? superdoc?.user?.name ?? null,
4467
+ superdoc
4468
+ });
4461
4469
  }
4462
4470
  };
4463
4471
  const debounceEmit = (commentId, event, superdoc, delay = 1e3) => {
@@ -4746,8 +4754,8 @@ const useCommentsStore = defineStore("comments", () => {
4746
4754
  return Array.isArray(json?.content) ? json.content.filter(Boolean) : [];
4747
4755
  };
4748
4756
  const handleEditorLocationsUpdate = (allCommentPositions) => {
4749
- if ((!allCommentPositions || Object.keys(allCommentPositions).length === 0) && commentsList.value.length > 0) return;
4750
- editorCommentPositions.value = allCommentPositions || {};
4757
+ if (allCommentPositions == null) return;
4758
+ editorCommentPositions.value = allCommentPositions;
4751
4759
  };
4752
4760
  const clearEditorCommentPositions = () => {
4753
4761
  editorCommentPositions.value = {};
@@ -20280,7 +20288,7 @@ var SuperDoc = class extends import_eventemitter3.default {
20280
20288
  this.config.colors = shuffleArray(this.config.colors);
20281
20289
  this.userColorMap = /* @__PURE__ */ new Map();
20282
20290
  this.colorIndex = 0;
20283
- this.version = "1.17.0-next.22";
20291
+ this.version = "1.17.0-next.23";
20284
20292
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
20285
20293
  this.superdocId = config.superdocId || v4_default();
20286
20294
  this.colors = this.config.colors;