@superdoc-dev/cli 0.8.0-next.60 → 0.8.0-next.62

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 +90 -37
  2. package/package.json +8 -8
package/dist/index.js CHANGED
@@ -65823,7 +65823,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
65823
65823
  emptyOptions2 = {};
65824
65824
  });
65825
65825
 
65826
- // ../../packages/superdoc/dist/chunks/SuperConverter-CkLY-4Vz.es.js
65826
+ // ../../packages/superdoc/dist/chunks/SuperConverter-DFi0X147.es.js
65827
65827
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
65828
65828
  const fieldValue = extension$1.config[field];
65829
65829
  if (typeof fieldValue === "function")
@@ -86555,8 +86555,8 @@ function rewriteImageSrcsInSliceJsonTree(node3, pathRemap) {
86555
86555
  for (const child of content$2)
86556
86556
  rewriteImageSrcsInSliceJsonTree(child, pathRemap);
86557
86557
  }
86558
- function applySuperdocClipboardMedia(editor, clipboardData, sliceJson = null) {
86559
- const raw = clipboardData?.getData?.(SUPERDOC_MEDIA_MIME);
86558
+ function applySuperdocClipboardMedia(editor, clipboardData, sliceJson = null, mediaJson = "") {
86559
+ const raw = clipboardData?.getData?.("application/x-superdoc-media") || mediaJson;
86560
86560
  if (!editor?.storage?.image || !raw || typeof raw !== "string")
86561
86561
  return sliceJson;
86562
86562
  let map5;
@@ -86635,10 +86635,12 @@ function bodySectPrShouldEmbed(bodySectPr) {
86635
86635
  const cols = getSectPrColumns(bodySectPr);
86636
86636
  return !!(cols?.count && cols.count > 1);
86637
86637
  }
86638
- function embedSliceInHtml(html2, sliceJson, bodySectPrJson = "") {
86638
+ function embedSliceInHtml(html2, sliceJson, bodySectPrJson = "", mediaJson = "") {
86639
86639
  let out = html2;
86640
86640
  if (bodySectPrJson)
86641
86641
  out = `<div ${SUPERDOC_BODY_SECT_PR_ATTR} style="display:none">${encodeUtf8Base64(bodySectPrJson)}</div>${out}`;
86642
+ if (mediaJson)
86643
+ out = `<div ${SUPERDOC_MEDIA_ATTR} style="display:none">${encodeUtf8Base64(mediaJson)}</div>${out}`;
86642
86644
  if (!sliceJson)
86643
86645
  return out;
86644
86646
  return `<div ${SUPERDOC_SLICE_ATTR} style="display:none">${encodeUtf8Base64(sliceJson)}</div>${out}`;
@@ -86670,8 +86672,27 @@ function stripSliceFromHtml(html2) {
86670
86672
  out = out.replace(/<div[^>]*data-superdoc-slice[^>]*>[\s\S]*?<\/div>/gi, "");
86671
86673
  if (out.includes("data-sd-body-sect-pr"))
86672
86674
  out = out.replace(/<div[^>]*data-sd-body-sect-pr[^>]*>[\s\S]*?<\/div>/gi, "");
86675
+ if (out.includes("data-sd-superdoc-media"))
86676
+ out = out.replace(/<div[^>]*data-sd-superdoc-media[^>]*>[\s\S]*?<\/div>/gi, "");
86673
86677
  return out;
86674
86678
  }
86679
+ function extractMediaFromHtml(html2) {
86680
+ if (!html2 || !html2.includes("data-sd-superdoc-media"))
86681
+ return null;
86682
+ if (typeof DOMParser === "undefined")
86683
+ return null;
86684
+ try {
86685
+ const el = new DOMParser().parseFromString(html2, "text/html").querySelector(`[${SUPERDOC_MEDIA_ATTR}]`);
86686
+ if (!el)
86687
+ return null;
86688
+ const b64 = el.textContent?.trim() ?? "";
86689
+ if (!b64)
86690
+ return null;
86691
+ return decodeUtf8Base64(b64) || null;
86692
+ } catch {
86693
+ return null;
86694
+ }
86695
+ }
86675
86696
  function extractBodySectPrFromHtml(html2) {
86676
86697
  if (!html2 || !html2.includes("data-sd-body-sect-pr"))
86677
86698
  return null;
@@ -86788,7 +86809,7 @@ function annotatePmNodeOnClipboardDom(domEl, pmNode, editor) {
86788
86809
  function isSuperdocOriginClipboardHtml(html2) {
86789
86810
  if (!html2 || typeof html2 !== "string")
86790
86811
  return false;
86791
- if (html2.includes("data-superdoc-slice") || html2.includes("data-sd-body-sect-pr"))
86812
+ if (html2.includes("data-superdoc-slice") || html2.includes("data-sd-body-sect-pr") || html2.includes("data-sd-superdoc-media"))
86792
86813
  return true;
86793
86814
  if (/data-sd-sect-pr\s*=/i.test(html2))
86794
86815
  return true;
@@ -86988,12 +87009,29 @@ function sanitizeHtml(html2, forbiddenTags = [
86988
87009
  return container;
86989
87010
  }
86990
87011
  function handleClipboardPaste({ editor, view }, html2, plainText) {
87012
+ const rawHtml = html2 || "";
87013
+ const isSuperdocHtml = isSuperdocOriginClipboardHtml(rawHtml);
87014
+ const embeddedBodySectPr = isSuperdocHtml ? extractBodySectPrFromHtml(rawHtml) : null;
87015
+ const embeddedMedia = isSuperdocHtml ? extractMediaFromHtml(rawHtml) : "";
87016
+ let pasteHtml = rawHtml;
87017
+ let superdocSliceData = extractSliceFromHtml(rawHtml);
87018
+ if (superdocSliceData) {
87019
+ superdocSliceData = applySuperdocClipboardMedia(editor, null, superdocSliceData, embeddedMedia);
87020
+ try {
87021
+ if (handleSuperdocSlicePaste(superdocSliceData, editor, view, embeddedBodySectPr))
87022
+ return true;
87023
+ } catch (err$1) {
87024
+ console.warn("Failed to paste SuperDoc slice, falling back to HTML:", err$1);
87025
+ }
87026
+ }
87027
+ if (isSuperdocHtml)
87028
+ pasteHtml = stripSliceFromHtml(rawHtml);
86991
87029
  let source;
86992
- if (!html2)
87030
+ if (!pasteHtml)
86993
87031
  source = "plain-text";
86994
- else if (isWordHtml(html2))
87032
+ else if (isWordHtml(pasteHtml))
86995
87033
  source = "word-html";
86996
- else if (isGoogleDocsHtml(html2))
87034
+ else if (isGoogleDocsHtml(pasteHtml))
86997
87035
  source = "google-docs";
86998
87036
  else
86999
87037
  source = "browser-html";
@@ -87005,13 +87043,26 @@ function handleClipboardPaste({ editor, view }, html2, plainText) {
87005
87043
  return handlePlainTextUrlPaste(editor, view, plainText, detected);
87006
87044
  }
87007
87045
  case "word-html":
87008
- if (editor.options.mode === "docx" && !isSuperdocOriginClipboardHtml(html2))
87009
- return handleDocxPaste(html2, editor, view);
87010
- return handleHtmlPaste(html2, editor);
87011
- case "google-docs":
87012
- return handleGoogleDocsHtml(html2, editor, view);
87013
- case "browser-html":
87014
- return handleHtmlPaste(html2, editor);
87046
+ if (editor.options.mode === "docx" && !isSuperdocHtml)
87047
+ return handleDocxPaste(pasteHtml, editor, view);
87048
+ {
87049
+ const ok3 = handleHtmlPaste(pasteHtml, editor);
87050
+ if (ok3 && embeddedBodySectPr)
87051
+ tryApplyEmbeddedBodySectPr(editor, view, embeddedBodySectPr);
87052
+ return ok3;
87053
+ }
87054
+ case "google-docs": {
87055
+ const ok3 = handleGoogleDocsHtml(pasteHtml, editor, view);
87056
+ if (ok3 && embeddedBodySectPr)
87057
+ tryApplyEmbeddedBodySectPr(editor, view, embeddedBodySectPr);
87058
+ return ok3;
87059
+ }
87060
+ case "browser-html": {
87061
+ const ok3 = handleHtmlPaste(pasteHtml, editor);
87062
+ if (ok3 && embeddedBodySectPr)
87063
+ tryApplyEmbeddedBodySectPr(editor, view, embeddedBodySectPr);
87064
+ return ok3;
87065
+ }
87015
87066
  }
87016
87067
  return false;
87017
87068
  }
@@ -87037,7 +87088,7 @@ function handleCutEvent(view, event, editor) {
87037
87088
  const html2 = unflattenListsInHtml(div.innerHTML);
87038
87089
  const bodySectPr = view.state.doc.attrs?.bodySectPr;
87039
87090
  const bodySectPrJson = bodySectPr && bodySectPrShouldEmbed(bodySectPr) ? JSON.stringify(bodySectPr) : "";
87040
- clipboardData.setData("text/html", embedSliceInHtml(html2, sliceJson, bodySectPrJson));
87091
+ clipboardData.setData("text/html", embedSliceInHtml(html2, sliceJson, bodySectPrJson, mediaJson));
87041
87092
  clipboardData.setData("text/plain", fragment2.textBetween(0, fragment2.size, `
87042
87093
 
87043
87094
  `));
@@ -113637,7 +113688,7 @@ var isRegExp = (value) => {
113637
113688
  normalizePastedLinks(tr, editor);
113638
113689
  dispatch(tr);
113639
113690
  return true;
113640
- }, SUPERDOC_SLICE_MIME = "application/x-superdoc-slice", SUPERDOC_MEDIA_MIME = "application/x-superdoc-media", SUPERDOC_SLICE_ATTR = "data-superdoc-slice", SUPERDOC_BODY_SECT_PR_ATTR = "data-sd-body-sect-pr", PARAGRAPH_CLIPBOARD_ATTRS, InputRule = class {
113691
+ }, SUPERDOC_SLICE_MIME = "application/x-superdoc-slice", SUPERDOC_MEDIA_MIME = "application/x-superdoc-media", SUPERDOC_SLICE_ATTR = "data-superdoc-slice", SUPERDOC_BODY_SECT_PR_ATTR = "data-sd-body-sect-pr", SUPERDOC_MEDIA_ATTR = "data-sd-superdoc-media", PARAGRAPH_CLIPBOARD_ATTRS, InputRule = class {
113641
113692
  match;
113642
113693
  handler;
113643
113694
  constructor(config$40) {
@@ -113776,9 +113827,10 @@ var isRegExp = (value) => {
113776
113827
  const rawHtml = clipboard.getData("text/html");
113777
113828
  const isSuperdocHtml = isSuperdocOriginClipboardHtml(rawHtml);
113778
113829
  const embeddedBodySectPr = isSuperdocHtml ? extractBodySectPrFromHtml(rawHtml) : null;
113830
+ const embeddedMedia = isSuperdocHtml ? extractMediaFromHtml(rawHtml) : "";
113779
113831
  let superdocSliceData = clipboard.getData("application/x-superdoc-slice") || extractSliceFromHtml(rawHtml);
113780
113832
  if (isSuperdocHtml || superdocSliceData)
113781
- superdocSliceData = applySuperdocClipboardMedia(editor, clipboard, superdocSliceData || null);
113833
+ superdocSliceData = applySuperdocClipboardMedia(editor, clipboard, superdocSliceData || null, embeddedMedia);
113782
113834
  if (superdocSliceData)
113783
113835
  try {
113784
113836
  if (handleSuperdocSlicePaste(superdocSliceData, editor, view, embeddedBodySectPr))
@@ -118288,7 +118340,7 @@ var isRegExp = (value) => {
118288
118340
  state.kern = kernNode.attributes["w:val"];
118289
118341
  }
118290
118342
  }, SuperConverter;
118291
- var init_SuperConverter_CkLY_4Vz_es = __esm(() => {
118343
+ var init_SuperConverter_DFi0X147_es = __esm(() => {
118292
118344
  init_rolldown_runtime_Bg48TavK_es();
118293
118345
  init_jszip_C49i9kUs_es();
118294
118346
  init_xml_js_CqGKpaft_es();
@@ -155889,7 +155941,7 @@ var init_SuperConverter_CkLY_4Vz_es = __esm(() => {
155889
155941
  };
155890
155942
  });
155891
155943
 
155892
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-1rAXWJ8P.es.js
155944
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-C9nvGdZQ.es.js
155893
155945
  function parseSizeUnit(val = "0") {
155894
155946
  const length3 = val.toString() || "0";
155895
155947
  const value = Number.parseFloat(length3);
@@ -158525,8 +158577,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, Extension = class Extension2 {
158525
158577
  }
158526
158578
  };
158527
158579
  };
158528
- var init_create_headless_toolbar_1rAXWJ8P_es = __esm(() => {
158529
- init_SuperConverter_CkLY_4Vz_es();
158580
+ var init_create_headless_toolbar_C9nvGdZQ_es = __esm(() => {
158581
+ init_SuperConverter_DFi0X147_es();
158530
158582
  init_constants_DrU4EASo_es();
158531
158583
  init_dist_B8HfvhaK_es();
158532
158584
  CSS_DIMENSION_REGEX = /[\d-.]+(\w+)$/;
@@ -207212,7 +207264,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
207212
207264
  init_remark_gfm_BhnWr3yf_es();
207213
207265
  });
207214
207266
 
207215
- // ../../packages/superdoc/dist/chunks/src-UYM49iGE.es.js
207267
+ // ../../packages/superdoc/dist/chunks/src-LSTnLsUi.es.js
207216
207268
  function deleteProps(obj, propOrProps) {
207217
207269
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
207218
207270
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -282328,11 +282380,12 @@ var Node$13 = class Node$14 {
282328
282380
  return;
282329
282381
  const { from: from$1, to } = this.view.state.selection;
282330
282382
  let sliceJson = "";
282383
+ let mediaJson = "";
282331
282384
  if (from$1 !== to) {
282332
282385
  const slice2 = this.view.state.doc.slice(from$1, to);
282333
282386
  sliceJson = JSON.stringify(slice2.toJSON());
282334
282387
  clipboardData.setData("application/x-superdoc-slice", sliceJson);
282335
- const mediaJson = collectReferencedImageMediaForClipboard(sliceJson, editor);
282388
+ mediaJson = collectReferencedImageMediaForClipboard(sliceJson, editor);
282336
282389
  if (mediaJson)
282337
282390
  clipboardData.setData(SUPERDOC_MEDIA_MIME, mediaJson);
282338
282391
  }
@@ -282340,7 +282393,7 @@ var Node$13 = class Node$14 {
282340
282393
  const bodySectPr = this.view.state.doc.attrs?.bodySectPr;
282341
282394
  const bodySectPrJson = bodySectPr && bodySectPrShouldEmbed(bodySectPr) ? JSON.stringify(bodySectPr) : "";
282342
282395
  if (richHtml) {
282343
- clipboardData.setData("text/html", embedSliceInHtml(richHtml, sliceJson, bodySectPrJson));
282396
+ clipboardData.setData("text/html", embedSliceInHtml(richHtml, sliceJson, bodySectPrJson, mediaJson));
282344
282397
  clipboardData.setData("text/plain", getSelectionFromViewRoot(this.view.root)?.toString() ?? "");
282345
282398
  return;
282346
282399
  }
@@ -282350,7 +282403,7 @@ var Node$13 = class Node$14 {
282350
282403
  div$1.appendChild(serializer2.serializeFragment(fragment2));
282351
282404
  annotateFragmentDomWithClipboardData(div$1, fragment2, editor);
282352
282405
  const html3 = transformListsInCopiedContent(div$1.innerHTML);
282353
- clipboardData.setData("text/html", embedSliceInHtml(html3, sliceJson, bodySectPrJson));
282406
+ clipboardData.setData("text/html", embedSliceInHtml(html3, sliceJson, bodySectPrJson, mediaJson));
282354
282407
  clipboardData.setData("text/plain", this.view.state.doc.textBetween(from$1, to, `
282355
282408
  `));
282356
282409
  } catch (error3) {
@@ -298474,12 +298527,12 @@ menclose::after {
298474
298527
  return;
298475
298528
  console.log(...args$1);
298476
298529
  }, HEADER_FOOTER_INIT_BUDGET_MS = 200, MAX_ZOOM_WARNING_THRESHOLD = 10, MAX_SELECTION_RECTS_PER_USER = 100, SEMANTIC_RESIZE_DEBOUNCE_MS = 120, MIN_SEMANTIC_CONTENT_WIDTH_PX = 1, GLOBAL_PERFORMANCE, PresentationEditor, ICONS, TEXTS, tableActionsOptions;
298477
- var init_src_UYM49iGE_es = __esm(() => {
298530
+ var init_src_LSTnLsUi_es = __esm(() => {
298478
298531
  init_rolldown_runtime_Bg48TavK_es();
298479
- init_SuperConverter_CkLY_4Vz_es();
298532
+ init_SuperConverter_DFi0X147_es();
298480
298533
  init_jszip_C49i9kUs_es();
298481
298534
  init_uuid_qzgm05fK_es();
298482
- init_create_headless_toolbar_1rAXWJ8P_es();
298535
+ init_create_headless_toolbar_C9nvGdZQ_es();
298483
298536
  init_constants_DrU4EASo_es();
298484
298537
  init_dist_B8HfvhaK_es();
298485
298538
  init_unified_Dsuw2be5_es();
@@ -335872,11 +335925,11 @@ function print() { __p += __j.call(arguments, '') }
335872
335925
  ];
335873
335926
  });
335874
335927
 
335875
- // ../../packages/superdoc/dist/chunks/create-super-doc-ui-B-_Cgskg.es.js
335928
+ // ../../packages/superdoc/dist/chunks/create-super-doc-ui-Dpnw8wI7.es.js
335876
335929
  var RESERVED_PROXY_PROPERTY_NAMES, ALL_TOOLBAR_COMMAND_IDS, EMPTY_ACTIVE_IDS;
335877
- var init_create_super_doc_ui_B__Cgskg_es = __esm(() => {
335878
- init_SuperConverter_CkLY_4Vz_es();
335879
- init_create_headless_toolbar_1rAXWJ8P_es();
335930
+ var init_create_super_doc_ui_Dpnw8wI7_es = __esm(() => {
335931
+ init_SuperConverter_DFi0X147_es();
335932
+ init_create_headless_toolbar_C9nvGdZQ_es();
335880
335933
  RESERVED_PROXY_PROPERTY_NAMES = new Set([
335881
335934
  "register",
335882
335935
  "get",
@@ -335900,16 +335953,16 @@ var init_zipper_BxRAi0_5_es = __esm(() => {
335900
335953
 
335901
335954
  // ../../packages/superdoc/dist/super-editor.es.js
335902
335955
  var init_super_editor_es = __esm(() => {
335903
- init_src_UYM49iGE_es();
335904
- init_SuperConverter_CkLY_4Vz_es();
335956
+ init_src_LSTnLsUi_es();
335957
+ init_SuperConverter_DFi0X147_es();
335905
335958
  init_jszip_C49i9kUs_es();
335906
335959
  init_xml_js_CqGKpaft_es();
335907
- init_create_headless_toolbar_1rAXWJ8P_es();
335960
+ init_create_headless_toolbar_C9nvGdZQ_es();
335908
335961
  init_constants_DrU4EASo_es();
335909
335962
  init_dist_B8HfvhaK_es();
335910
335963
  init_unified_Dsuw2be5_es();
335911
335964
  init_DocxZipper_CUX64E5K_es();
335912
- init_create_super_doc_ui_B__Cgskg_es();
335965
+ init_create_super_doc_ui_Dpnw8wI7_es();
335913
335966
  init_ui_CGB3qmy3_es();
335914
335967
  init_eventemitter3_UwU_CLPU_es();
335915
335968
  init_errors_C_DoKMoN_es();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superdoc-dev/cli",
3
- "version": "0.8.0-next.60",
3
+ "version": "0.8.0-next.62",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "superdoc": "./dist/index.js"
@@ -26,19 +26,19 @@
26
26
  "typescript": "^5.9.2",
27
27
  "@superdoc/document-api": "0.0.1",
28
28
  "@superdoc/pm-adapter": "0.0.0",
29
- "@superdoc/super-editor": "0.0.1",
30
- "superdoc": "1.31.0"
29
+ "superdoc": "1.31.0",
30
+ "@superdoc/super-editor": "0.0.1"
31
31
  },
32
32
  "module": "src/index.ts",
33
33
  "publishConfig": {
34
34
  "access": "public"
35
35
  },
36
36
  "optionalDependencies": {
37
- "@superdoc-dev/cli-darwin-arm64": "0.8.0-next.60",
38
- "@superdoc-dev/cli-darwin-x64": "0.8.0-next.60",
39
- "@superdoc-dev/cli-windows-x64": "0.8.0-next.60",
40
- "@superdoc-dev/cli-linux-x64": "0.8.0-next.60",
41
- "@superdoc-dev/cli-linux-arm64": "0.8.0-next.60"
37
+ "@superdoc-dev/cli-darwin-arm64": "0.8.0-next.62",
38
+ "@superdoc-dev/cli-linux-x64": "0.8.0-next.62",
39
+ "@superdoc-dev/cli-darwin-x64": "0.8.0-next.62",
40
+ "@superdoc-dev/cli-windows-x64": "0.8.0-next.62",
41
+ "@superdoc-dev/cli-linux-arm64": "0.8.0-next.62"
42
42
  },
43
43
  "scripts": {
44
44
  "predev": "node scripts/ensure-superdoc-build.js",