@superdoc-dev/cli 0.2.0-next.133 → 0.2.0-next.134

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.
Files changed (2) hide show
  1. package/dist/index.js +214 -91
  2. package/package.json +9 -9
package/dist/index.js CHANGED
@@ -38780,7 +38780,7 @@ var init_remark_gfm_z_sDF4ss_es = __esm(() => {
38780
38780
  emptyOptions2 = {};
38781
38781
  });
38782
38782
 
38783
- // ../../packages/superdoc/dist/chunks/SuperConverter-DWU4rgEN.es.js
38783
+ // ../../packages/superdoc/dist/chunks/SuperConverter-CEAHNaZj.es.js
38784
38784
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
38785
38785
  const fieldValue = extension$1.config[field];
38786
38786
  if (typeof fieldValue === "function")
@@ -58112,12 +58112,21 @@ function decode$46(params) {
58112
58112
  }, []);
58113
58113
  }
58114
58114
  function getTextNodeForExport(text$2, marks, params) {
58115
+ const normalizedMarks = Array.isArray(marks) ? marks : [];
58115
58116
  const space = /^\s|\s$/.test(text$2) ? "preserve" : null;
58116
58117
  const nodeAttrs = space ? { "xml:space": space } : null;
58117
58118
  const textNodes = [];
58118
- const textRunProperties = decodeRPrFromMarks(marks || []);
58119
+ const textRunProperties = decodeRPrFromMarks(normalizedMarks);
58119
58120
  const combinedRunProperties = combineRunProperties([params.extraParams?.runProperties || {}, textRunProperties]);
58120
- const rPrNode = translator$128.decode({ node: { attrs: { runProperties: combinedRunProperties } } });
58121
+ const trackFormatMark = findTrackFormatMark(normalizedMarks);
58122
+ let rPrNode = translator$128.decode({ node: { attrs: { runProperties: combinedRunProperties } } });
58123
+ if (!rPrNode && trackFormatMark)
58124
+ rPrNode = {
58125
+ type: "element",
58126
+ name: "w:rPr",
58127
+ elements: []
58128
+ };
58129
+ appendTrackFormatChangeToRunProperties(rPrNode, normalizedMarks);
58121
58130
  textNodes.push({
58122
58131
  name: "w:t",
58123
58132
  elements: [{
@@ -58126,10 +58135,9 @@ function getTextNodeForExport(text$2, marks, params) {
58126
58135
  }],
58127
58136
  attributes: nodeAttrs
58128
58137
  });
58129
- if (params) {
58130
- const { editor } = params;
58131
- const customMarks = editor.extensionService.extensions.filter((e) => e.isExternal === true);
58132
- marks.forEach((mark) => {
58138
+ if (params?.editor?.extensionService?.extensions) {
58139
+ const customMarks = params.editor.extensionService.extensions.filter((extension$1) => extension$1.isExternal === true);
58140
+ normalizedMarks.forEach((mark) => {
58133
58141
  const isCustomMark = customMarks.some((customMark) => {
58134
58142
  const customMarkName = customMark.name;
58135
58143
  return mark.type === customMarkName;
@@ -59071,17 +59079,12 @@ function decode$10(params) {
59071
59079
  const { node: node3 } = params;
59072
59080
  if (!node3 || !node3.type)
59073
59081
  return null;
59074
- const trackingMarks = [
59075
- "trackInsert",
59076
- "trackFormat",
59077
- "trackDelete"
59078
- ];
59079
- const marks = node3.marks;
59082
+ const trackingMarks = ["trackInsert", "trackDelete"];
59083
+ const marks = Array.isArray(node3.marks) ? node3.marks : [];
59080
59084
  const trackedMark = marks.find((m) => m.type === "trackDelete");
59081
- const trackStyleMark = createTrackStyleMark(marks);
59085
+ if (!trackedMark)
59086
+ return null;
59082
59087
  node3.marks = marks.filter((m) => !trackingMarks.includes(m.type));
59083
- if (trackStyleMark)
59084
- node3.marks.push(trackStyleMark);
59085
59088
  const translatedTextNode = exportSchemaToJson({
59086
59089
  ...params,
59087
59090
  node: node3
@@ -59103,17 +59106,12 @@ function decode$9(params) {
59103
59106
  const { node: node3 } = params;
59104
59107
  if (!node3 || !node3.type)
59105
59108
  return null;
59106
- const trackingMarks = [
59107
- "trackInsert",
59108
- "trackFormat",
59109
- "trackDelete"
59110
- ];
59111
- const marks = node3.marks;
59109
+ const trackingMarks = ["trackInsert", "trackDelete"];
59110
+ const marks = Array.isArray(node3.marks) ? node3.marks : [];
59112
59111
  const trackedMark = marks.find((m) => m.type === "trackInsert");
59113
- const trackStyleMark = createTrackStyleMark(marks);
59112
+ if (!trackedMark)
59113
+ return null;
59114
59114
  node3.marks = marks.filter((m) => !trackingMarks.includes(m.type));
59115
- if (trackStyleMark)
59116
- node3.marks.push(trackStyleMark);
59117
59115
  const translatedTextNode = exportSchemaToJson({
59118
59116
  ...params,
59119
59117
  node: node3
@@ -63967,6 +63965,39 @@ var isRegExp = (value) => {
63967
63965
  }];
63968
63966
  }
63969
63967
  return runs;
63968
+ }, getMarkType$1 = (mark) => mark?.type?.name ?? mark?.type ?? null, toRunPropertyElements = (marks = []) => processOutputMarks(marks).filter((element) => element && typeof element === "object" && element.name), findTrackFormatMark = (marks = []) => marks.find((mark) => getMarkType$1(mark) === "trackFormat") ?? null, createRunPropertiesChangeElement = (trackFormatMark) => {
63969
+ if (!trackFormatMark)
63970
+ return;
63971
+ const previousRunProperties = {
63972
+ type: "element",
63973
+ name: "w:rPr",
63974
+ elements: toRunPropertyElements(Array.isArray(trackFormatMark.attrs?.before) ? trackFormatMark.attrs.before : [])
63975
+ };
63976
+ return {
63977
+ type: "element",
63978
+ name: "w:rPrChange",
63979
+ attributes: {
63980
+ "w:id": trackFormatMark.attrs?.id,
63981
+ "w:author": trackFormatMark.attrs?.author,
63982
+ "w:authorEmail": trackFormatMark.attrs?.authorEmail,
63983
+ "w:date": trackFormatMark.attrs?.date
63984
+ },
63985
+ elements: [previousRunProperties]
63986
+ };
63987
+ }, appendTrackFormatChangeToRunProperties = (runPropertiesNode, marks = []) => {
63988
+ if (!runPropertiesNode)
63989
+ return runPropertiesNode;
63990
+ const trackFormatMark = findTrackFormatMark(marks);
63991
+ if (!trackFormatMark)
63992
+ return runPropertiesNode;
63993
+ if (!Array.isArray(runPropertiesNode.elements))
63994
+ runPropertiesNode.elements = [];
63995
+ if (runPropertiesNode.elements.some((element) => element?.name === "w:rPrChange"))
63996
+ return runPropertiesNode;
63997
+ const changeElement = createRunPropertiesChangeElement(trackFormatMark);
63998
+ if (changeElement)
63999
+ runPropertiesNode.elements.push(changeElement);
64000
+ return runPropertiesNode;
63970
64001
  }, XML_NODE_NAME$33 = "w:hyperlink", SD_NODE_NAME$29 = "link", _createAttributeHandler = (xmlName, sdName) => ({
63971
64002
  xmlName,
63972
64003
  sdName,
@@ -64031,6 +64062,39 @@ var isRegExp = (value) => {
64031
64062
  if (!Array.isArray(node3.elements))
64032
64063
  return false;
64033
64064
  return node3.elements.some((child) => hasXmlNodeNamed(child, targetName));
64065
+ }, getRunPropertiesNode = (runNode) => {
64066
+ if (!runNode)
64067
+ return null;
64068
+ if (!Array.isArray(runNode.elements))
64069
+ runNode.elements = [];
64070
+ let runPropertiesNode = runNode.elements.find((element) => element?.name === "w:rPr");
64071
+ if (!runPropertiesNode) {
64072
+ runPropertiesNode = {
64073
+ type: "element",
64074
+ name: "w:rPr",
64075
+ elements: []
64076
+ };
64077
+ runNode.elements.unshift(runPropertiesNode);
64078
+ }
64079
+ if (!Array.isArray(runPropertiesNode.elements))
64080
+ runPropertiesNode.elements = [];
64081
+ return runPropertiesNode;
64082
+ }, collectRunPropertyChanges = (runNode) => {
64083
+ const runPropertiesNode = runNode?.elements?.find((element) => element?.name === "w:rPr");
64084
+ if (!Array.isArray(runPropertiesNode?.elements))
64085
+ return [];
64086
+ return runPropertiesNode.elements.filter((element) => element?.name === "w:rPrChange").map((element) => cloneXmlNode(element));
64087
+ }, restoreRunPropertyChanges = (runNode, runPropertyChanges = []) => {
64088
+ if (!runPropertyChanges.length)
64089
+ return;
64090
+ const runPropertiesNode = getRunPropertiesNode(runNode);
64091
+ const existingNames = new Set(runPropertiesNode.elements.map((element) => element?.name));
64092
+ runPropertyChanges.forEach((changeElement) => {
64093
+ if (!changeElement?.name || existingNames.has(changeElement.name))
64094
+ return;
64095
+ runPropertiesNode.elements.push(changeElement);
64096
+ existingNames.add(changeElement.name);
64097
+ });
64034
64098
  }, ensureReferenceRunFormatting = (runNode, referenceXmlName) => {
64035
64099
  const styleId = REFERENCE_RUN_STYLE_BY_XML_NAME[referenceXmlName];
64036
64100
  if (!styleId)
@@ -64180,6 +64244,7 @@ var isRegExp = (value) => {
64180
64244
  });
64181
64245
  }
64182
64246
  const { runNode: runNodeForExport, trackingMarksByType } = prepareRunTrackingContext(node3);
64247
+ const runTrackFormatMark = findTrackFormatMark(runNodeForExport.marks);
64183
64248
  const runProperties = (runNodeForExport.attrs || {}).runProperties || {};
64184
64249
  const exportParams = {
64185
64250
  ...params,
@@ -64199,12 +64264,16 @@ var isRegExp = (value) => {
64199
64264
  const runPropsTemplate = runPropertiesElement ? cloneXmlNode(runPropertiesElement) : null;
64200
64265
  const applyBaseRunProps = (runNode) => applyRunPropertiesTemplate(runNode, runPropsTemplate);
64201
64266
  const replaceRunProps = (runNode) => {
64267
+ const existingRunPropertyChanges = collectRunPropertyChanges(runNode);
64202
64268
  if (Array.isArray(runNode.elements))
64203
64269
  runNode.elements = runNode.elements.filter((el) => el?.name !== "w:rPr");
64204
64270
  else
64205
64271
  runNode.elements = [];
64206
64272
  if (runPropsTemplate)
64207
64273
  runNode.elements.unshift(cloneXmlNode(runPropsTemplate));
64274
+ restoreRunPropertyChanges(runNode, existingRunPropertyChanges);
64275
+ if (!existingRunPropertyChanges.length && runTrackFormatMark)
64276
+ appendTrackFormatChangeToRunProperties(getRunPropertiesNode(runNode), [runTrackFormatMark]);
64208
64277
  };
64209
64278
  const runs = [];
64210
64279
  childElements.forEach((child) => {
@@ -73275,21 +73344,7 @@ var isRegExp = (value) => {
73275
73344
  nodes: schemaNode ? [schemaNode] : [],
73276
73345
  consumed: 1
73277
73346
  };
73278
- }, drawingNodeHandlerEntity, createTrackStyleMark = (marks) => {
73279
- const trackStyleMark = marks.find((mark) => mark.type === "trackFormat");
73280
- if (trackStyleMark)
73281
- return {
73282
- type: "element",
73283
- name: "w:rPrChange",
73284
- attributes: {
73285
- "w:id": trackStyleMark.attrs.id,
73286
- "w:author": trackStyleMark.attrs.author,
73287
- "w:authorEmail": trackStyleMark.attrs.authorEmail,
73288
- "w:date": trackStyleMark.attrs.date
73289
- },
73290
- elements: trackStyleMark.attrs.before.map((mark) => processOutputMarks([mark])).filter((r) => r !== undefined)
73291
- };
73292
- }, XML_NODE_NAME$6 = "w:del", SD_ATTR_KEY$1 = "trackDelete", validXmlAttributes$3, encode$10 = (params, encodedAttrs = {}) => {
73347
+ }, drawingNodeHandlerEntity, XML_NODE_NAME$6 = "w:del", SD_ATTR_KEY$1 = "trackDelete", validXmlAttributes$3, encode$10 = (params, encodedAttrs = {}) => {
73293
73348
  const { nodeListHandler, extraParams = {}, converter } = params;
73294
73349
  const { node: node3 } = extraParams;
73295
73350
  if (encodedAttrs.id && converter?.trackedChangeIdMap?.has(encodedAttrs.id))
@@ -75453,7 +75508,7 @@ var isRegExp = (value) => {
75453
75508
  state.kern = kernNode.attributes["w:val"];
75454
75509
  }
75455
75510
  }, SuperConverter;
75456
- var init_SuperConverter_DWU4rgEN_es = __esm(() => {
75511
+ var init_SuperConverter_CEAHNaZj_es = __esm(() => {
75457
75512
  init_rolldown_runtime_B2q5OVn9_es();
75458
75513
  init_jszip_ChlR43oI_es();
75459
75514
  init_xml_js_DLE8mr0n_es();
@@ -135858,7 +135913,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
135858
135913
  init_remark_gfm_z_sDF4ss_es();
135859
135914
  });
135860
135915
 
135861
- // ../../packages/superdoc/dist/chunks/src-BwFXv_ul.es.js
135916
+ // ../../packages/superdoc/dist/chunks/src-DWexXOnd.es.js
135862
135917
  function deleteProps(obj, propOrProps) {
135863
135918
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
135864
135919
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -199925,7 +199980,9 @@ var Node$13 = class Node$14 {
199925
199980
  const provider = editor.options.collaborationProvider;
199926
199981
  if (!provider)
199927
199982
  return;
199928
- const emit2 = () => {
199983
+ const emit2 = (synced) => {
199984
+ if (synced === false)
199985
+ return;
199929
199986
  extension2.options.isReady = true;
199930
199987
  editor.emit("collaborationReady", {
199931
199988
  editor,
@@ -219387,9 +219444,9 @@ var Node$13 = class Node$14 {
219387
219444
  return false;
219388
219445
  return Boolean(checker(attrs));
219389
219446
  }, SuperToolbar, ICONS, TEXTS, tableActionsOptions;
219390
- var init_src_BwFXv_ul_es = __esm(() => {
219447
+ var init_src_DWexXOnd_es = __esm(() => {
219391
219448
  init_rolldown_runtime_B2q5OVn9_es();
219392
- init_SuperConverter_DWU4rgEN_es();
219449
+ init_SuperConverter_CEAHNaZj_es();
219393
219450
  init_jszip_ChlR43oI_es();
219394
219451
  init_uuid_qzgm05fK_es();
219395
219452
  init_constants_CMPtQbp7_es();
@@ -227139,7 +227196,7 @@ function print() { __p += __j.call(arguments, '') }
227139
227196
  cleanupState.partSyncHandle = bootstrapPartSync(editor, ydoc);
227140
227197
  };
227141
227198
  const provider = editor.options.collaborationProvider;
227142
- if (!provider)
227199
+ if (!provider || isCollaborationProviderSynced(provider))
227143
227200
  doBootstrap();
227144
227201
  else
227145
227202
  cleanupState.partSyncPendingCleanup = onCollaborationProviderSynced(provider, doBootstrap);
@@ -230117,9 +230174,9 @@ function print() { __p += __j.call(arguments, '') }
230117
230174
  const ydoc = this.options.ydoc;
230118
230175
  const provider = this.options.collaborationProvider;
230119
230176
  const doReplaceFileSync = () => {
230120
- const mediaFiles$1 = this.options.mediaFiles ?? {};
230121
230177
  this.#insertNewFileData();
230122
230178
  seedPartsFromEditor(this, ydoc, { replaceExisting: true });
230179
+ const mediaFiles$1 = this.options.mediaFiles ?? {};
230123
230180
  const mediaMap = ydoc.getMap("media");
230124
230181
  for (const key$1 of mediaMap.keys())
230125
230182
  if (!(key$1 in mediaFiles$1))
@@ -230151,6 +230208,7 @@ function print() { __p += __j.call(arguments, '') }
230151
230208
  reject(/* @__PURE__ */ new Error(`replaceFile(): collaboration provider did not sync within ${SYNC_TIMEOUT_MS}ms. The provider exposes on/off but never emitted sync(true) or synced.`));
230152
230209
  }, SYNC_TIMEOUT_MS);
230153
230210
  });
230211
+ doReplaceFileSync();
230154
230212
  } else
230155
230213
  this.#insertNewFileData();
230156
230214
  if (!this.options.ydoc)
@@ -253071,8 +253129,8 @@ var init_zipper_DqXT7uTa_es = __esm(() => {
253071
253129
 
253072
253130
  // ../../packages/superdoc/dist/super-editor.es.js
253073
253131
  var init_super_editor_es = __esm(() => {
253074
- init_src_BwFXv_ul_es();
253075
- init_SuperConverter_DWU4rgEN_es();
253132
+ init_src_DWexXOnd_es();
253133
+ init_SuperConverter_CEAHNaZj_es();
253076
253134
  init_jszip_ChlR43oI_es();
253077
253135
  init_xml_js_DLE8mr0n_es();
253078
253136
  init_constants_CMPtQbp7_es();
@@ -285907,6 +285965,49 @@ var cloneMark3 = (mark2) => {
285907
285965
  };
285908
285966
  var init_track_change_helpers = () => {};
285909
285967
 
285968
+ // ../../packages/super-editor/src/core/super-converter/v3/handlers/helpers.js
285969
+ var getMarkType3 = (mark2) => mark2?.type?.name ?? mark2?.type ?? null, toRunPropertyElements2 = (marks = []) => processOutputMarks2(marks).filter((element3) => element3 && typeof element3 === "object" && element3.name), findTrackFormatMark2 = (marks = []) => marks.find((mark2) => getMarkType3(mark2) === TrackFormatMarkName2) ?? null, createRunPropertiesChangeElement2 = (trackFormatMark) => {
285970
+ if (!trackFormatMark)
285971
+ return;
285972
+ const beforeMarks = Array.isArray(trackFormatMark.attrs?.before) ? trackFormatMark.attrs.before : [];
285973
+ const previousRunProperties = {
285974
+ type: "element",
285975
+ name: "w:rPr",
285976
+ elements: toRunPropertyElements2(beforeMarks)
285977
+ };
285978
+ return {
285979
+ type: "element",
285980
+ name: "w:rPrChange",
285981
+ attributes: {
285982
+ "w:id": trackFormatMark.attrs?.id,
285983
+ "w:author": trackFormatMark.attrs?.author,
285984
+ "w:authorEmail": trackFormatMark.attrs?.authorEmail,
285985
+ "w:date": trackFormatMark.attrs?.date
285986
+ },
285987
+ elements: [previousRunProperties]
285988
+ };
285989
+ }, appendTrackFormatChangeToRunProperties2 = (runPropertiesNode, marks = []) => {
285990
+ if (!runPropertiesNode)
285991
+ return runPropertiesNode;
285992
+ const trackFormatMark = findTrackFormatMark2(marks);
285993
+ if (!trackFormatMark)
285994
+ return runPropertiesNode;
285995
+ if (!Array.isArray(runPropertiesNode.elements)) {
285996
+ runPropertiesNode.elements = [];
285997
+ }
285998
+ const hasExistingChange = runPropertiesNode.elements.some((element3) => element3?.name === "w:rPrChange");
285999
+ if (hasExistingChange)
286000
+ return runPropertiesNode;
286001
+ const changeElement = createRunPropertiesChangeElement2(trackFormatMark);
286002
+ if (changeElement) {
286003
+ runPropertiesNode.elements.push(changeElement);
286004
+ }
286005
+ return runPropertiesNode;
286006
+ };
286007
+ var init_helpers4 = __esm(() => {
286008
+ init_exporter();
286009
+ });
286010
+
285910
286011
  // ../../packages/super-editor/src/core/super-converter/v3/handlers/w/hyperlink/hyperlink-translator.js
285911
286012
  function decode28(params3) {
285912
286013
  const { hyperlinkGroup = [params3.node] } = params3.extraParams || {};
@@ -286090,6 +286191,36 @@ var XML_NODE_NAME9 = "w:r", SD_KEY_NAME2 = "run", REFERENCE_RUN_STYLE_BY_XML_NAM
286090
286191
  if (!Array.isArray(node4.elements))
286091
286192
  return false;
286092
286193
  return node4.elements.some((child) => hasXmlNodeNamed2(child, targetName));
286194
+ }, getRunPropertiesNode2 = (runNode) => {
286195
+ if (!runNode)
286196
+ return null;
286197
+ if (!Array.isArray(runNode.elements))
286198
+ runNode.elements = [];
286199
+ let runPropertiesNode = runNode.elements.find((element3) => element3?.name === "w:rPr");
286200
+ if (!runPropertiesNode) {
286201
+ runPropertiesNode = { type: "element", name: "w:rPr", elements: [] };
286202
+ runNode.elements.unshift(runPropertiesNode);
286203
+ }
286204
+ if (!Array.isArray(runPropertiesNode.elements)) {
286205
+ runPropertiesNode.elements = [];
286206
+ }
286207
+ return runPropertiesNode;
286208
+ }, collectRunPropertyChanges2 = (runNode) => {
286209
+ const runPropertiesNode = runNode?.elements?.find((element3) => element3?.name === "w:rPr");
286210
+ if (!Array.isArray(runPropertiesNode?.elements))
286211
+ return [];
286212
+ return runPropertiesNode.elements.filter((element3) => element3?.name === "w:rPrChange").map((element3) => cloneXmlNode2(element3));
286213
+ }, restoreRunPropertyChanges2 = (runNode, runPropertyChanges = []) => {
286214
+ if (!runPropertyChanges.length)
286215
+ return;
286216
+ const runPropertiesNode = getRunPropertiesNode2(runNode);
286217
+ const existingNames = new Set(runPropertiesNode.elements.map((element3) => element3?.name));
286218
+ runPropertyChanges.forEach((changeElement) => {
286219
+ if (!changeElement?.name || existingNames.has(changeElement.name))
286220
+ return;
286221
+ runPropertiesNode.elements.push(changeElement);
286222
+ existingNames.add(changeElement.name);
286223
+ });
286093
286224
  }, ensureReferenceRunFormatting2 = (runNode, referenceXmlName) => {
286094
286225
  const styleId = REFERENCE_RUN_STYLE_BY_XML_NAME2[referenceXmlName];
286095
286226
  if (!styleId)
@@ -286221,6 +286352,7 @@ var XML_NODE_NAME9 = "w:r", SD_KEY_NAME2 = "run", REFERENCE_RUN_STYLE_BY_XML_NAM
286221
286352
  return translator95.decode({ ...params3, extraParams });
286222
286353
  }
286223
286354
  const { runNode: runNodeForExport, trackingMarksByType } = prepareRunTrackingContext2(node4);
286355
+ const runTrackFormatMark = findTrackFormatMark2(runNodeForExport.marks);
286224
286356
  const runAttrs = runNodeForExport.attrs || {};
286225
286357
  const runProperties = runAttrs.runProperties || {};
286226
286358
  const exportParams = {
@@ -286239,6 +286371,7 @@ var XML_NODE_NAME9 = "w:r", SD_KEY_NAME2 = "run", REFERENCE_RUN_STYLE_BY_XML_NAM
286239
286371
  const runPropsTemplate = runPropertiesElement ? cloneXmlNode2(runPropertiesElement) : null;
286240
286372
  const applyBaseRunProps = (runNode) => applyRunPropertiesTemplate2(runNode, runPropsTemplate);
286241
286373
  const replaceRunProps = (runNode) => {
286374
+ const existingRunPropertyChanges = collectRunPropertyChanges2(runNode);
286242
286375
  if (Array.isArray(runNode.elements)) {
286243
286376
  runNode.elements = runNode.elements.filter((el) => el?.name !== "w:rPr");
286244
286377
  } else {
@@ -286247,6 +286380,11 @@ var XML_NODE_NAME9 = "w:r", SD_KEY_NAME2 = "run", REFERENCE_RUN_STYLE_BY_XML_NAM
286247
286380
  if (runPropsTemplate) {
286248
286381
  runNode.elements.unshift(cloneXmlNode2(runPropsTemplate));
286249
286382
  }
286383
+ restoreRunPropertyChanges2(runNode, existingRunPropertyChanges);
286384
+ if (!existingRunPropertyChanges.length && runTrackFormatMark) {
286385
+ const runPropertiesNode = getRunPropertiesNode2(runNode);
286386
+ appendTrackFormatChangeToRunProperties2(runPropertiesNode, [runTrackFormatMark]);
286387
+ }
286250
286388
  };
286251
286389
  const runs2 = [];
286252
286390
  childElements.forEach((child) => {
@@ -286323,6 +286461,7 @@ var init_r_translator = __esm(() => {
286323
286461
  init_helpers2();
286324
286462
  init_helpers3();
286325
286463
  init_track_change_helpers();
286464
+ init_helpers4();
286326
286465
  init_hyperlink_translator();
286327
286466
  init_rpr();
286328
286467
  init_attributes6();
@@ -305254,23 +305393,32 @@ var init_drawing = __esm(() => {
305254
305393
 
305255
305394
  // ../../packages/super-editor/src/core/super-converter/v3/handlers/w/t/helpers/translate-text-node.js
305256
305395
  function getTextNodeForExport2(text7, marks, params3) {
305396
+ const normalizedMarks = Array.isArray(marks) ? marks : [];
305257
305397
  const hasLeadingOrTrailingSpace = /^\s|\s$/.test(text7);
305258
305398
  const space = hasLeadingOrTrailingSpace ? "preserve" : null;
305259
305399
  const nodeAttrs = space ? { "xml:space": space } : null;
305260
305400
  const textNodes = [];
305261
- const textRunProperties = decodeRPrFromMarks2(marks || []);
305401
+ const textRunProperties = decodeRPrFromMarks2(normalizedMarks);
305262
305402
  const parentRunProperties = params3.extraParams?.runProperties || {};
305263
305403
  const combinedRunProperties = combineRunProperties2([parentRunProperties, textRunProperties]);
305264
- const rPrNode = translator47.decode({ node: { attrs: { runProperties: combinedRunProperties } } });
305404
+ const trackFormatMark = findTrackFormatMark2(normalizedMarks);
305405
+ let rPrNode = translator47.decode({ node: { attrs: { runProperties: combinedRunProperties } } });
305406
+ if (!rPrNode && trackFormatMark) {
305407
+ rPrNode = {
305408
+ type: "element",
305409
+ name: "w:rPr",
305410
+ elements: []
305411
+ };
305412
+ }
305413
+ appendTrackFormatChangeToRunProperties2(rPrNode, normalizedMarks);
305265
305414
  textNodes.push({
305266
305415
  name: "w:t",
305267
305416
  elements: [{ text: text7, type: "text" }],
305268
305417
  attributes: nodeAttrs
305269
305418
  });
305270
- if (params3) {
305271
- const { editor } = params3;
305272
- const customMarks = editor.extensionService.extensions.filter((e) => e.isExternal === true);
305273
- marks.forEach((mark2) => {
305419
+ if (params3?.editor?.extensionService?.extensions) {
305420
+ const customMarks = params3.editor.extensionService.extensions.filter((extension2) => extension2.isExternal === true);
305421
+ normalizedMarks.forEach((mark2) => {
305274
305422
  const isCustomMark = customMarks.some((customMark) => {
305275
305423
  const customMarkName = customMark.name;
305276
305424
  return mark2.type === customMarkName;
@@ -305310,6 +305458,7 @@ function getTextNodeForExport2(text7, marks, params3) {
305310
305458
  var init_translate_text_node = __esm(() => {
305311
305459
  init_rpr_translator();
305312
305460
  init_styles3();
305461
+ init_helpers4();
305313
305462
  });
305314
305463
 
305315
305464
  // ../../node_modules/.pnpm/he@1.2.0/node_modules/he/he.js
@@ -309028,42 +309177,19 @@ var init_imageImporter = __esm(() => {
309028
309177
  };
309029
309178
  });
309030
309179
 
309031
- // ../../packages/super-editor/src/core/super-converter/v3/handlers/helpers.js
309032
- var createTrackStyleMark2 = (marks) => {
309033
- const trackStyleMark = marks.find((mark2) => mark2.type === "trackFormat");
309034
- if (trackStyleMark) {
309035
- return {
309036
- type: "element",
309037
- name: "w:rPrChange",
309038
- attributes: {
309039
- "w:id": trackStyleMark.attrs.id,
309040
- "w:author": trackStyleMark.attrs.author,
309041
- "w:authorEmail": trackStyleMark.attrs.authorEmail,
309042
- "w:date": trackStyleMark.attrs.date
309043
- },
309044
- elements: trackStyleMark.attrs.before.map((mark2) => processOutputMarks2([mark2])).filter((r2) => r2 !== undefined)
309045
- };
309046
- }
309047
- return;
309048
- };
309049
- var init_helpers4 = __esm(() => {
309050
- init_exporter();
309051
- });
309052
-
309053
309180
  // ../../packages/super-editor/src/core/super-converter/v3/handlers/w/del/del-translator.js
309054
309181
  function decode74(params3) {
309055
309182
  const { node: node4 } = params3;
309056
309183
  if (!node4 || !node4.type) {
309057
309184
  return null;
309058
309185
  }
309059
- const trackingMarks = ["trackInsert", "trackFormat", "trackDelete"];
309060
- const marks = node4.marks;
309186
+ const trackingMarks = ["trackInsert", "trackDelete"];
309187
+ const marks = Array.isArray(node4.marks) ? node4.marks : [];
309061
309188
  const trackedMark = marks.find((m2) => m2.type === "trackDelete");
309062
- const trackStyleMark = createTrackStyleMark2(marks);
309063
- node4.marks = marks.filter((m2) => !trackingMarks.includes(m2.type));
309064
- if (trackStyleMark) {
309065
- node4.marks.push(trackStyleMark);
309189
+ if (!trackedMark) {
309190
+ return null;
309066
309191
  }
309192
+ node4.marks = marks.filter((m2) => !trackingMarks.includes(m2.type));
309067
309193
  const translatedTextNode = exportSchemaToJson2({ ...params3, node: node4 });
309068
309194
  const textNode = translatedTextNode.elements.find((n) => n.name === "w:t");
309069
309195
  textNode.name = "w:delText";
@@ -309111,7 +309237,6 @@ var init_del_translator = __esm(() => {
309111
309237
  init_node_translator2();
309112
309238
  init_utils();
309113
309239
  init_exporter();
309114
- init_helpers4();
309115
309240
  validXmlAttributes11 = [
309116
309241
  createAttributeHandler2("w:id", "id"),
309117
309242
  createAttributeHandler2("w:date", "date"),
@@ -309140,14 +309265,13 @@ function decode75(params3) {
309140
309265
  if (!node4 || !node4.type) {
309141
309266
  return null;
309142
309267
  }
309143
- const trackingMarks = ["trackInsert", "trackFormat", "trackDelete"];
309144
- const marks = node4.marks;
309268
+ const trackingMarks = ["trackInsert", "trackDelete"];
309269
+ const marks = Array.isArray(node4.marks) ? node4.marks : [];
309145
309270
  const trackedMark = marks.find((m2) => m2.type === "trackInsert");
309146
- const trackStyleMark = createTrackStyleMark2(marks);
309147
- node4.marks = marks.filter((m2) => !trackingMarks.includes(m2.type));
309148
- if (trackStyleMark) {
309149
- node4.marks.push(trackStyleMark);
309271
+ if (!trackedMark) {
309272
+ return null;
309150
309273
  }
309274
+ node4.marks = marks.filter((m2) => !trackingMarks.includes(m2.type));
309151
309275
  const translatedTextNode = exportSchemaToJson2({ ...params3, node: node4 });
309152
309276
  return {
309153
309277
  name: "w:ins",
@@ -309193,7 +309317,6 @@ var init_ins_translator = __esm(() => {
309193
309317
  init_node_translator2();
309194
309318
  init_utils();
309195
309319
  init_exporter();
309196
- init_helpers4();
309197
309320
  validXmlAttributes12 = [
309198
309321
  createAttributeHandler2("w:id", "id"),
309199
309322
  createAttributeHandler2("w:date", "date"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superdoc-dev/cli",
3
- "version": "0.2.0-next.133",
3
+ "version": "0.2.0-next.134",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "superdoc": "./dist/index.js"
@@ -20,21 +20,21 @@
20
20
  "@types/bun": "^1.3.8",
21
21
  "@types/node": "22.19.2",
22
22
  "typescript": "^5.9.2",
23
- "@superdoc/document-api": "0.0.1",
24
23
  "@superdoc/pm-adapter": "0.0.0",
25
- "superdoc": "1.18.0",
26
- "@superdoc/super-editor": "0.0.1"
24
+ "@superdoc/document-api": "0.0.1",
25
+ "@superdoc/super-editor": "0.0.1",
26
+ "superdoc": "1.18.0"
27
27
  },
28
28
  "module": "src/index.ts",
29
29
  "publishConfig": {
30
30
  "access": "public"
31
31
  },
32
32
  "optionalDependencies": {
33
- "@superdoc-dev/cli-darwin-arm64": "0.2.0-next.133",
34
- "@superdoc-dev/cli-darwin-x64": "0.2.0-next.133",
35
- "@superdoc-dev/cli-windows-x64": "0.2.0-next.133",
36
- "@superdoc-dev/cli-linux-x64": "0.2.0-next.133",
37
- "@superdoc-dev/cli-linux-arm64": "0.2.0-next.133"
33
+ "@superdoc-dev/cli-darwin-arm64": "0.2.0-next.134",
34
+ "@superdoc-dev/cli-darwin-x64": "0.2.0-next.134",
35
+ "@superdoc-dev/cli-linux-x64": "0.2.0-next.134",
36
+ "@superdoc-dev/cli-linux-arm64": "0.2.0-next.134",
37
+ "@superdoc-dev/cli-windows-x64": "0.2.0-next.134"
38
38
  },
39
39
  "scripts": {
40
40
  "dev": "bun run src/index.ts",