@harbour-enterprises/superdoc 0.20.0-next.5 → 0.20.0-next.7

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 (92) hide show
  1. package/dist/chunks/{PdfViewer-DcPZsBsK.es.js → PdfViewer-BYyZViQt.es.js} +1 -1
  2. package/dist/chunks/{PdfViewer-Blwty0A0.cjs → PdfViewer-DXtnxGoU.cjs} +1 -1
  3. package/dist/chunks/{index-BB5vhzVT.cjs → index-CMBPzhIR.cjs} +2 -2
  4. package/dist/chunks/{index-BZzn2Rcn.es.js → index-CqLcgYHG.es.js} +2 -2
  5. package/dist/chunks/{super-editor.es-BgBNGRxg.cjs → super-editor.es-5O71lyiI.cjs} +815 -471
  6. package/dist/chunks/{super-editor.es-BTcVSa_f.es.js → super-editor.es-BTalhwn-.es.js} +815 -471
  7. package/dist/core/SuperDoc.d.ts.map +1 -1
  8. package/dist/super-editor/ai-writer.es.js +2 -2
  9. package/dist/super-editor/chunks/{converter-BPTfSIJf.js → converter-kutpjDQU.js} +687 -470
  10. package/dist/super-editor/chunks/{docx-zipper-ikgI-2vM.js → docx-zipper-BjcI24VU.js} +1 -1
  11. package/dist/super-editor/chunks/{editor-hh7sL4Wv.js → editor-CQMKOaY4.js} +134 -9
  12. package/dist/super-editor/chunks/{toolbar-B-apzt27.js → toolbar-Cp6gL4i5.js} +2 -2
  13. package/dist/super-editor/converter.es.js +1 -1
  14. package/dist/super-editor/docx-zipper.es.js +2 -2
  15. package/dist/super-editor/editor.es.js +3 -3
  16. package/dist/super-editor/file-zipper.es.js +1 -1
  17. package/dist/super-editor/src/core/super-converter/v2/importer/tableImporter.d.ts +0 -22
  18. package/dist/super-editor/src/core/super-converter/v3/handlers/utils.d.ts +10 -3
  19. package/dist/super-editor/src/core/super-converter/v3/handlers/w/bidiVisual/bidiVisual-translator.d.ts +6 -0
  20. package/dist/super-editor/src/core/super-converter/v3/handlers/w/bidiVisual/index.d.ts +1 -0
  21. package/dist/super-editor/src/core/super-converter/v3/handlers/w/bottom/bottom-translator.d.ts +6 -0
  22. package/dist/super-editor/src/core/super-converter/v3/handlers/w/bottom/index.d.ts +2 -0
  23. package/dist/super-editor/src/core/super-converter/v3/handlers/w/bottom/marginBottom-translator.d.ts +6 -0
  24. package/dist/super-editor/src/core/super-converter/v3/handlers/w/end/end-translator.d.ts +6 -0
  25. package/dist/super-editor/src/core/super-converter/v3/handlers/w/end/index.d.ts +2 -0
  26. package/dist/super-editor/src/core/super-converter/v3/handlers/w/end/marginEnd-translator.d.ts +6 -0
  27. package/dist/super-editor/src/core/super-converter/v3/handlers/w/gridCol/gridCol-translator.d.ts +6 -0
  28. package/dist/super-editor/src/core/super-converter/v3/handlers/w/gridCol/index.d.ts +1 -0
  29. package/dist/super-editor/src/core/super-converter/v3/handlers/w/insideH/index.d.ts +1 -0
  30. package/dist/super-editor/src/core/super-converter/v3/handlers/w/insideH/insideH-translator.d.ts +6 -0
  31. package/dist/super-editor/src/core/super-converter/v3/handlers/w/insideV/index.d.ts +1 -0
  32. package/dist/super-editor/src/core/super-converter/v3/handlers/w/insideV/insideV-translator.d.ts +6 -0
  33. package/dist/super-editor/src/core/super-converter/v3/handlers/w/left/index.d.ts +2 -0
  34. package/dist/super-editor/src/core/super-converter/v3/handlers/w/left/left-translator.d.ts +6 -0
  35. package/dist/super-editor/src/core/super-converter/v3/handlers/w/left/marginLeft-translator.d.ts +6 -0
  36. package/dist/super-editor/src/core/super-converter/v3/handlers/w/right/index.d.ts +2 -0
  37. package/dist/super-editor/src/core/super-converter/v3/handlers/w/right/marginRight-translator.d.ts +6 -0
  38. package/dist/super-editor/src/core/super-converter/v3/handlers/w/right/right-translator.d.ts +6 -0
  39. package/dist/super-editor/src/core/super-converter/v3/handlers/w/shd/index.d.ts +1 -0
  40. package/dist/super-editor/src/core/super-converter/v3/handlers/w/shd/shd-translator.d.ts +6 -0
  41. package/dist/super-editor/src/core/super-converter/v3/handlers/w/start/index.d.ts +2 -0
  42. package/dist/super-editor/src/core/super-converter/v3/handlers/w/start/marginStart-translator.d.ts +6 -0
  43. package/dist/super-editor/src/core/super-converter/v3/handlers/w/start/start-translator.d.ts +6 -0
  44. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tbl/index.d.ts +1 -0
  45. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tbl/tbl-translator.d.ts +28 -0
  46. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblBorders/index.d.ts +1 -0
  47. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblBorders/tblBorders-translator.d.ts +6 -0
  48. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblCaption/index.d.ts +1 -0
  49. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblCaption/tblCaption-translator.d.ts +6 -0
  50. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblCellMar/index.d.ts +1 -0
  51. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblCellMar/tblCellMar-translator.d.ts +2 -0
  52. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblDescription/index.d.ts +1 -0
  53. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblDescription/tblDescription-translator.d.ts +6 -0
  54. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblGrid/index.d.ts +1 -0
  55. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblGrid/tblGrid-translator.d.ts +5 -0
  56. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblInd/index.d.ts +1 -0
  57. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblInd/tblInd-translator.d.ts +6 -0
  58. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblLayout/index.d.ts +1 -0
  59. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblLayout/tblLayout-translator.d.ts +6 -0
  60. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblLook/index.d.ts +1 -0
  61. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblLook/tblLook-translator.d.ts +6 -0
  62. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblOverlap/index.d.ts +1 -0
  63. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblOverlap/tblOverlap-translator.d.ts +6 -0
  64. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblPr/index.d.ts +1 -0
  65. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblPr/tblPr-translator.d.ts +5 -0
  66. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblStyle/index.d.ts +1 -0
  67. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblStyle/tblStyle-translator.d.ts +6 -0
  68. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblStyleColBandSize/index.d.ts +1 -0
  69. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblStyleColBandSize/tblStyleColBandSize-translator.d.ts +6 -0
  70. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblStyleRowBandSize/index.d.ts +1 -0
  71. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblStyleRowBandSize/tblStyleRowBandSize-translator.d.ts +6 -0
  72. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblW/index.d.ts +1 -0
  73. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblW/tblW-translator.d.ts +6 -0
  74. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblpPr/index.d.ts +1 -0
  75. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tblpPr/tblpPr-translator.d.ts +6 -0
  76. package/dist/super-editor/src/core/super-converter/v3/handlers/w/tc/helpers/legacy-handle-table-cell-node.d.ts +1 -1
  77. package/dist/super-editor/src/core/super-converter/v3/handlers/w/top/index.d.ts +2 -0
  78. package/dist/super-editor/src/core/super-converter/v3/handlers/w/top/marginTop-translator.d.ts +6 -0
  79. package/dist/super-editor/src/core/super-converter/v3/handlers/w/top/top-translator.d.ts +6 -0
  80. package/dist/super-editor/src/core/super-converter/v3/node-translator/node-translator.d.ts +3 -1
  81. package/dist/super-editor/src/extensions/image/imageHelpers/fileNameUtils.d.ts +3 -0
  82. package/dist/super-editor/src/extensions/image/imageHelpers/index.d.ts +1 -0
  83. package/dist/super-editor/src/extensions/table/table.d.ts +330 -0
  84. package/dist/super-editor/super-editor.es.js +8 -8
  85. package/dist/super-editor/toolbar.es.js +2 -2
  86. package/dist/super-editor.cjs +1 -1
  87. package/dist/super-editor.es.js +1 -1
  88. package/dist/superdoc.cjs +2 -2
  89. package/dist/superdoc.es.js +2 -2
  90. package/dist/superdoc.umd.js +815 -471
  91. package/dist/superdoc.umd.js.map +1 -1
  92. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { p as process$1, ax as commonjsGlobal, B as Buffer, ay as getDefaultExportFromCjs, az as getContentTypesFromXml, aA as xmljs } from "./converter-BPTfSIJf.js";
1
+ import { p as process$1, av as commonjsGlobal, B as Buffer, aw as getDefaultExportFromCjs, ax as getContentTypesFromXml, ay as xmljs } from "./converter-kutpjDQU.js";
2
2
  function commonjsRequire(path) {
3
3
  throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
4
4
  }
@@ -12,9 +12,9 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
12
12
  var _Attribute_static, getGlobalAttributes_fn, getNodeAndMarksAttributes_fn, _Schema_static, createNodesSchema_fn, createMarksSchema_fn, _events, _ExtensionService_instances, setupExtensions_fn, attachEditorEvents_fn, _editor, _stateValidators, _xmlValidators, _requiredNodeTypes, _requiredMarkTypes, _SuperValidator_instances, initializeValidators_fn, collectValidatorRequirements_fn, analyzeDocument_fn, _commandService, _Editor_instances, initContainerElement_fn, init_fn, initRichText_fn, onFocus_fn, checkHeadless_fn, registerCopyHandler_fn, insertNewFileData_fn, registerPluginByNameIfNotExists_fn, createExtensionService_fn, createCommandService_fn, createConverter_fn, initMedia_fn, initFonts_fn, createSchema_fn, generatePmData_fn, createView_fn, onCollaborationReady_fn, initComments_fn, initPagination_fn, dispatchTransaction_fn, handleNodeSelection_fn, prepareDocumentForImport_fn, prepareDocumentForExport_fn, endCollaboration_fn, validateDocumentInit_fn, validateDocumentExport_fn, initDevTools_fn, _ListItemNodeView_instances, init_fn2, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_fn, _DocumentSectionView_instances, init_fn3, addToolTip_fn;
13
13
  import * as Y from "yjs";
14
14
  import { UndoManager, Item as Item$1, ContentType, Text as Text$1, XmlElement, encodeStateAsUpdate } from "yjs";
15
- import { P as PluginKey, a as Plugin, M as Mapping, N as NodeSelection, S as Selection, T as TextSelection, b as Slice, D as DOMSerializer, F as Fragment, c as DOMParser$1, d as Mark$1, e as dropPoint, A as AllSelection, p as process$1, B as Buffer2, f as callOrGet, g as getExtensionConfigField, h as getMarkType, i as getMarksFromSelection, j as getNodeType, k as getSchemaTypeNameByName, l as Schema$1, m as cleanSchemaItem, n as canSplit, o as defaultBlockAt$1, q as liftTarget, r as canJoin, s as joinPoint, t as replaceStep$1, R as ReplaceAroundStep$1, u as isTextSelection, v as getMarkRange, w as isMarkActive, x as isNodeActive, y as deleteProps, z as processContent, C as ReplaceStep, E as NodeRange, G as findWrapping, L as ListHelpers, H as findParentNode, I as isMacOS, J as isIOS, K as getSchemaTypeByName, O as inputRulesPlugin, Q as TrackDeleteMarkName, U as TrackInsertMarkName, V as v4, W as TrackFormatMarkName, X as comments_module_events, Y as findMark, Z as objectIncludes, _ as AddMarkStep, $ as RemoveMarkStep, a0 as twipsToLines, a1 as pixelsToTwips, a2 as helpers, a3 as posToDOMRect, a4 as CommandService, a5 as SuperConverter, a6 as createDocument, a7 as createDocFromMarkdown, a8 as createDocFromHTML, a9 as EditorState, aa as hasSomeParentWithClass, ab as isActive, ac as unflattenListsInHtml, ad as parseSizeUnit, ae as minMax, af as getLineHeightValueString, ag as InputRule, ah as kebabCase, ai as findParentNodeClosestToPos, aj as getListItemStyleDefinitions, ak as docxNumberigHelpers, al as parseIndentElement, am as combineIndents, an as StepMap, ao as getColStyleDeclaration, ap as SelectionRange, aq as Transform, ar as isInTable$1, as as createColGroup, at as generateDocxRandomId, au as insertNewRelationship, av as updateDOMAttributes, aw as htmlHandler } from "./converter-BPTfSIJf.js";
15
+ import { P as PluginKey, a as Plugin, M as Mapping, N as NodeSelection, S as Selection, T as TextSelection, b as Slice, D as DOMSerializer, F as Fragment, c as DOMParser$1, d as Mark$1, e as dropPoint, A as AllSelection, p as process$1, B as Buffer2, f as callOrGet, g as getExtensionConfigField, h as getMarkType, i as getMarksFromSelection, j as getNodeType, k as getSchemaTypeNameByName, l as Schema$1, m as cleanSchemaItem, n as canSplit, o as defaultBlockAt$1, q as liftTarget, r as canJoin, s as joinPoint, t as replaceStep$1, R as ReplaceAroundStep$1, u as isTextSelection, v as getMarkRange, w as isMarkActive, x as isNodeActive, y as deleteProps, z as processContent, C as ReplaceStep, E as NodeRange, G as findWrapping, L as ListHelpers, H as findParentNode, I as isMacOS, J as isIOS, K as getSchemaTypeByName, O as inputRulesPlugin, Q as TrackDeleteMarkName, U as TrackInsertMarkName, V as v4, W as TrackFormatMarkName, X as comments_module_events, Y as findMark, Z as objectIncludes, _ as AddMarkStep, $ as RemoveMarkStep, a0 as twipsToLines, a1 as pixelsToTwips, a2 as helpers, a3 as posToDOMRect, a4 as CommandService, a5 as SuperConverter, a6 as createDocument, a7 as createDocFromMarkdown, a8 as createDocFromHTML, a9 as EditorState, aa as hasSomeParentWithClass, ab as isActive, ac as unflattenListsInHtml, ad as parseSizeUnit, ae as minMax, af as getLineHeightValueString, ag as InputRule, ah as kebabCase, ai as findParentNodeClosestToPos, aj as getListItemStyleDefinitions, ak as docxNumberigHelpers, al as parseIndentElement, am as combineIndents, an as StepMap, ao as SelectionRange, ap as Transform, aq as isInTable$1, ar as generateDocxRandomId, as as insertNewRelationship, at as updateDOMAttributes, au as htmlHandler } from "./converter-kutpjDQU.js";
16
16
  import { ref, computed, createElementBlock, openBlock, withModifiers, Fragment as Fragment$1, renderList, normalizeClass, createCommentVNode, toDisplayString, createElementVNode, createApp } from "vue";
17
- import { D as DocxZipper } from "./docx-zipper-ikgI-2vM.js";
17
+ import { D as DocxZipper } from "./docx-zipper-BjcI24VU.js";
18
18
  var GOOD_LEAF_SIZE = 200;
19
19
  var RopeSequence = function RopeSequence2() {
20
20
  };
@@ -19347,6 +19347,12 @@ const HardBreak = Node$1.create({
19347
19347
  };
19348
19348
  }
19349
19349
  });
19350
+ const getColStyleDeclaration = (minWidth, width) => {
19351
+ if (width) {
19352
+ return ["width", `${Math.max(width, minWidth)}px`];
19353
+ }
19354
+ return ["min-width", `${minWidth}px`];
19355
+ };
19350
19356
  const createTableView = ({ editor }) => {
19351
19357
  return class TableView {
19352
19358
  constructor(node, cellMinWidth) {
@@ -19507,6 +19513,35 @@ const createTable = (schema, rowsCount, colsCount, withHeaderRow, cellContent =
19507
19513
  const tableBorders = createTableBorders();
19508
19514
  return types.table.createChecked({ borders: tableBorders }, rows);
19509
19515
  };
19516
+ const createColGroup = (node, cellMinWidth, overrideCol, overrideValue) => {
19517
+ let totalWidth = 0;
19518
+ let fixedWidth = true;
19519
+ const cols = [];
19520
+ const colsValues = [];
19521
+ const row = node.firstChild;
19522
+ if (!row) return {};
19523
+ for (let i = 0, col = 0; i < row.childCount; i++) {
19524
+ const { colspan, colwidth } = row.child(i).attrs;
19525
+ for (let j = 0; j < colspan; j++, col++) {
19526
+ const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
19527
+ totalWidth += hasWidth || cellMinWidth;
19528
+ if (!hasWidth) fixedWidth = false;
19529
+ const [prop, value] = getColStyleDeclaration(cellMinWidth, hasWidth);
19530
+ cols.push(["col", { style: `${prop}: ${value}` }]);
19531
+ colsValues.push(parseInt(value, 10));
19532
+ }
19533
+ }
19534
+ const tableWidth = fixedWidth ? `${totalWidth}px` : "";
19535
+ const tableMinWidth = fixedWidth ? "" : `${totalWidth}px`;
19536
+ const colgroup = ["colgroup", {}, ...cols];
19537
+ const colgroupValues = [...colsValues];
19538
+ return {
19539
+ colgroup,
19540
+ tableWidth,
19541
+ tableMinWidth,
19542
+ colgroupValues
19543
+ };
19544
+ };
19510
19545
  var readFromCache;
19511
19546
  var addToCache;
19512
19547
  if (typeof WeakMap != "undefined") {
@@ -21820,6 +21855,24 @@ const Table = Node$1.create({
21820
21855
  tableCellSpacing: {
21821
21856
  default: null,
21822
21857
  rendered: false
21858
+ },
21859
+ /**
21860
+ * @category Attribute
21861
+ * @param {TableProperties} [tableProperties] - Properties for the table.
21862
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 371-483
21863
+ */
21864
+ tableProperties: {
21865
+ default: null,
21866
+ rendered: false
21867
+ },
21868
+ /**
21869
+ * @category Attribute
21870
+ * @param {TableGrid} [grid] - Grid definition for the table
21871
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 432
21872
+ */
21873
+ grid: {
21874
+ default: null,
21875
+ rendered: false
21823
21876
  }
21824
21877
  };
21825
21878
  },
@@ -24424,6 +24477,57 @@ function multiStepResize(canvas, width, height) {
24424
24477
  }
24425
24478
  resample_high_quality(canvas, width, height);
24426
24479
  }
24480
+ const FALLBACK_NAME = "image";
24481
+ const stripDiacritics = (value) => value.normalize("NFKD").replace(/[\u0300-\u036f]/g, "");
24482
+ const sanitizeSegment = (segment, { allowDots = false } = {}) => {
24483
+ if (!segment) return "";
24484
+ const normalized = stripDiacritics(segment).replace(/[\s\u2000-\u206f]+/g, "_").replace(/[\\/]+/g, "_");
24485
+ const allowedPattern = allowDots ? /[^0-9A-Za-z._-]+/g : /[^0-9A-Za-z_-]+/g;
24486
+ let sanitized = normalized.replace(allowedPattern, "_");
24487
+ sanitized = sanitized.replace(/_+/g, "_");
24488
+ sanitized = sanitized.replace(/^[_.-]+/, "");
24489
+ sanitized = sanitized.replace(/[_-]+$/, "");
24490
+ return sanitized;
24491
+ };
24492
+ const splitFileName = (name) => {
24493
+ const trimmed = name?.trim?.() ?? "";
24494
+ const lastDot = trimmed.lastIndexOf(".");
24495
+ if (lastDot <= 0 || lastDot === trimmed.length - 1) {
24496
+ return { base: trimmed, ext: "" };
24497
+ }
24498
+ return {
24499
+ base: trimmed.slice(0, lastDot),
24500
+ ext: trimmed.slice(lastDot + 1)
24501
+ };
24502
+ };
24503
+ const sanitizeImageFileName = (inputName) => {
24504
+ const { base: base2, ext } = splitFileName(inputName || "");
24505
+ const sanitizedBase = sanitizeSegment(base2, { allowDots: true }) || FALLBACK_NAME;
24506
+ const sanitizedExt = sanitizeSegment(ext, { allowDots: false }).toLowerCase();
24507
+ if (!sanitizedExt) return sanitizedBase;
24508
+ return `${sanitizedBase}.${sanitizedExt}`;
24509
+ };
24510
+ const ensureUniqueFileName = (preferredName, existingNames = /* @__PURE__ */ new Set()) => {
24511
+ const sanitized = sanitizeImageFileName(preferredName);
24512
+ if (!existingNames || typeof existingNames.has !== "function") {
24513
+ return sanitized;
24514
+ }
24515
+ const existingSet = /* @__PURE__ */ new Set();
24516
+ existingNames.forEach((name) => existingSet.add(sanitizeImageFileName(name)));
24517
+ if (!existingSet.has(sanitized)) {
24518
+ return sanitized;
24519
+ }
24520
+ const { base: base2, ext } = splitFileName(sanitized);
24521
+ let counter = 1;
24522
+ let candidate = sanitized;
24523
+ const suffix = () => `${base2}-${counter}${ext ? `.${ext}` : ""}`;
24524
+ while (existingSet.has(candidate)) {
24525
+ candidate = suffix();
24526
+ counter += 1;
24527
+ }
24528
+ return candidate;
24529
+ };
24530
+ const buildMediaPath = (fileName) => `word/media/${fileName}`;
24427
24531
  const fileTooLarge = (file) => {
24428
24532
  let fileSizeMb = Number((file.size / (1024 * 1024)).toFixed(4));
24429
24533
  if (fileSizeMb > 5) {
@@ -24457,16 +24561,37 @@ function replaceSelectionWithImagePlaceholder({ editorOptions, view, id }) {
24457
24561
  tr = addImagePlaceholder(view.state, tr, id, selection.from);
24458
24562
  view.dispatch(tr);
24459
24563
  }
24564
+ const generateUniqueDocPrId = (editor) => {
24565
+ const existingIds = /* @__PURE__ */ new Set();
24566
+ editor?.state?.doc?.descendants((node) => {
24567
+ if (node.type.name === "image" && node.attrs.id !== void 0 && node.attrs.id !== null) {
24568
+ existingIds.add(String(node.attrs.id));
24569
+ }
24570
+ });
24571
+ let candidate;
24572
+ do {
24573
+ const hex = generateDocxRandomId();
24574
+ candidate = String(parseInt(hex, 16));
24575
+ } while (!candidate || existingIds.has(candidate));
24576
+ return candidate;
24577
+ };
24460
24578
  async function uploadAndInsertImage({ editor, view, file, size, id }) {
24461
24579
  const imageUploadHandler = typeof editor.options.handleImageUpload === "function" ? editor.options.handleImageUpload : handleImageUpload;
24580
+ const placeholderId = id;
24462
24581
  try {
24463
- let url = await imageUploadHandler(file);
24464
- let fileName = file.name.replace(" ", "_");
24465
- let placeholderPos = findPlaceholder(view.state, id);
24582
+ const existingFileNames = new Set(Object.keys(editor.storage.image.media ?? {}).map((key2) => key2.split("/").pop()));
24583
+ const uniqueFileName = ensureUniqueFileName(file.name, existingFileNames);
24584
+ const normalizedFile = uniqueFileName === file.name ? file : new File([file], uniqueFileName, {
24585
+ type: file.type,
24586
+ lastModified: file.lastModified ?? Date.now()
24587
+ });
24588
+ let url = await imageUploadHandler(normalizedFile);
24589
+ let placeholderPos = findPlaceholder(view.state, placeholderId);
24466
24590
  if (placeholderPos == null) {
24467
24591
  return;
24468
24592
  }
24469
- let mediaPath = `word/media/${fileName}`;
24593
+ const mediaPath = buildMediaPath(uniqueFileName);
24594
+ const docPrId = generateUniqueDocPrId(editor);
24470
24595
  let rId = null;
24471
24596
  if (editor.options.mode === "docx") {
24472
24597
  const [, path] = mediaPath.split("word/");
@@ -24476,7 +24601,7 @@ async function uploadAndInsertImage({ editor, view, file, size, id }) {
24476
24601
  let imageNode = view.state.schema.nodes.image.create({
24477
24602
  src: mediaPath,
24478
24603
  size,
24479
- id,
24604
+ id: docPrId,
24480
24605
  rId
24481
24606
  });
24482
24607
  editor.storage.image.media = Object.assign(editor.storage.image.media, { [mediaPath]: url });
@@ -24485,10 +24610,10 @@ async function uploadAndInsertImage({ editor, view, file, size, id }) {
24485
24610
  }
24486
24611
  let tr = view.state.tr;
24487
24612
  tr.replaceWith(placeholderPos, placeholderPos, imageNode);
24488
- tr = removeImagePlaceholder(view.state, tr, id);
24613
+ tr = removeImagePlaceholder(view.state, tr, placeholderId);
24489
24614
  view.dispatch(tr);
24490
24615
  } catch {
24491
- const tr = removeImagePlaceholder(view.state, view.state.tr, id);
24616
+ const tr = removeImagePlaceholder(view.state, view.state.tr, placeholderId);
24492
24617
  view.dispatch(tr);
24493
24618
  }
24494
24619
  }
@@ -1,6 +1,6 @@
1
1
  import { computed, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, normalizeStyle, ref, withKeys, unref, withModifiers, createBlock, toDisplayString, withDirectives, vModelText, nextTick, getCurrentInstance, createVNode, readonly, watch, onMounted, onBeforeUnmount, reactive, onBeforeMount, inject, onActivated, onDeactivated, createTextVNode, Fragment, Comment, defineComponent, provide, h, Teleport, toRef, renderSlot, isVNode, shallowRef, watchEffect, mergeProps, Transition, vShow, cloneVNode, Text, renderList, withCtx } from "vue";
2
- import { p as process$1 } from "./converter-BPTfSIJf.js";
3
- import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-hh7sL4Wv.js";
2
+ import { p as process$1 } from "./converter-kutpjDQU.js";
3
+ import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-CQMKOaY4.js";
4
4
  const sanitizeNumber = (value, defaultNumber) => {
5
5
  let sanitized = value.replace(/[^0-9.]/g, "");
6
6
  sanitized = parseFloat(sanitized);
@@ -1,4 +1,4 @@
1
- import { a5 } from "./chunks/converter-BPTfSIJf.js";
1
+ import { a5 } from "./chunks/converter-kutpjDQU.js";
2
2
  import "vue";
3
3
  export {
4
4
  a5 as SuperConverter
@@ -1,5 +1,5 @@
1
- import "./chunks/converter-BPTfSIJf.js";
2
- import { D } from "./chunks/docx-zipper-ikgI-2vM.js";
1
+ import "./chunks/converter-kutpjDQU.js";
2
+ import { D } from "./chunks/docx-zipper-BjcI24VU.js";
3
3
  export {
4
4
  D as default
5
5
  };
@@ -1,6 +1,6 @@
1
- import { E } from "./chunks/editor-hh7sL4Wv.js";
2
- import "./chunks/converter-BPTfSIJf.js";
3
- import "./chunks/docx-zipper-ikgI-2vM.js";
1
+ import { E } from "./chunks/editor-CQMKOaY4.js";
2
+ import "./chunks/converter-kutpjDQU.js";
3
+ import "./chunks/docx-zipper-BjcI24VU.js";
4
4
  export {
5
5
  E as Editor
6
6
  };
@@ -1,4 +1,4 @@
1
- import { J as JSZip } from "./chunks/docx-zipper-ikgI-2vM.js";
1
+ import { J as JSZip } from "./chunks/docx-zipper-BjcI24VU.js";
2
2
  async function createZip(blobs, fileNames) {
3
3
  const zip = new JSZip();
4
4
  blobs.forEach((blob, index) => {
@@ -1,20 +1,3 @@
1
- /**
2
- *
3
- * @param {XmlNode} node
4
- * @param {ParsedDocx} docx
5
- * @param {NodeListHandler} nodeListHandler
6
- * @param {boolean} insideTrackChange
7
- * @returns {{type: string, content: *, attrs: {borders: *, tableWidth: *, tableWidthType: *}}}
8
- */
9
- export function handleTableNode(node: XmlNode, params: any): {
10
- type: string;
11
- content: any;
12
- attrs: {
13
- borders: any;
14
- tableWidth: any;
15
- tableWidthType: any;
16
- };
17
- };
18
1
  /**
19
2
  *
20
3
  * @param tblStyleTag
@@ -29,12 +12,7 @@ export function getReferencedTableStyles(tblStyleTag: any, docx: ParsedDocx): {
29
12
  rowBorders: {};
30
13
  basedOn: any;
31
14
  } | null;
32
- /**
33
- * @type {import("docxImporter").NodeHandler}
34
- */
35
- export const handleAllTableNodes: any;
36
15
  /**
37
16
  * @type {import("docxImporter").NodeHandlerEntry}
38
17
  */
39
18
  export const tableNodeHandlerEntity: any;
40
- export function getGridColumnWidths(tableNode: any): any;
@@ -9,12 +9,19 @@
9
9
  */
10
10
  export function createSingleAttrPropertyHandler(xmlName: string, sdName?: string | null, attrName?: string, transformEncode?: Function, transformDecode?: Function): import("@translator").NodeTranslatorConfig;
11
11
  /**
12
- * Helper to create property handlers for measurement attributes (w:w and w:type)
12
+ * Helper to create property handlers for measurement attributes (CT_TblWidth => w:w and w:type)
13
13
  * @param {string} xmlName The XML attribute name (with namespace).
14
14
  * @param {string|null} sdName The SuperDoc attribute name (without namespace). If null, it will be derived from xmlName.
15
15
  * @returns {import('@translator').NodeTranslatorConfig} The attribute handler config with xmlName, sdName, encode, and decode functions.
16
16
  */
17
17
  export function createMeasurementPropertyHandler(xmlName: string, sdName?: string | null): import("@translator").NodeTranslatorConfig;
18
+ /**
19
+ * Helper to create property handlers for border attributes (CT_Border xml type)
20
+ * @param {string} [xmlName] The XML element name (with namespace).
21
+ * @param {string|null} [sdName] The SuperDoc attribute name (without namespace). If null, it will be derived from xmlName.
22
+ * @returns {import('@translator').NodeTranslatorConfig} The border property handler config with xmlName, sdName, encode, and decode functions.
23
+ */
24
+ export function createBorderPropertyHandler(xmlName?: string, sdName?: string | null): import("@translator").NodeTranslatorConfig;
18
25
  /**
19
26
  * Encodes properties of a node using provided translators and adds them to the attributes object.
20
27
  * @param {object} [node] The node containing elements to be encoded.
@@ -32,7 +39,7 @@ export function encodeProperties(node?: object, translatorsByXmlName?: object, a
32
39
  export function decodeProperties(translatorsBySdName?: object, properties?: object): any[];
33
40
  export function generateV2HandlerEntity(handlerName: string, translator: import("../node-translator/").NodeTranslator): import("../../v2/importer/docxImporter").NodeHandlerEntry;
34
41
  export function createAttributeHandler(xmlName?: string, sdName?: string | null, transformEncode?: any, transformDecode?: any): import("@translator").AttrConfig;
35
- export function parseBoolean(value: string): boolean;
36
- export function booleanToString(value: boolean): string;
42
+ export function parseBoolean(value: string): boolean | undefined;
43
+ export function booleanToString(value: boolean): string | undefined;
37
44
  export function parseInteger(value: any): number | undefined;
38
45
  export function integerToString(value: any): string | undefined;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the bidiVisual element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 373
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./bidiVisual-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the bottom element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 375
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,2 @@
1
+ export * from "./bottom-translator.js";
2
+ export { translator as marginBottomTranslator } from "./marginBottom-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the bottom element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 374
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the end element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 394
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,2 @@
1
+ export * from "./end-translator.js";
2
+ export { translator as marginEndTranslator } from "./marginEnd-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the end element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 393
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the gridCol element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 398
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./gridCol-translator.js";
@@ -0,0 +1 @@
1
+ export * from "./insideH-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the insideH element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 407
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./insideV-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the insideV element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 409
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,2 @@
1
+ export * from "./left-translator.js";
2
+ export { translator as marginLeftTranslator } from "./marginLeft-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the left element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 423
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the left element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 426
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,2 @@
1
+ export * from "./right-translator.js";
2
+ export { translator as marginRightTranslator } from "./marginRight-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the right element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 426
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the right element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 423
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./shd-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the gridBefore element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 416
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,2 @@
1
+ export * from "./start-translator.js";
2
+ export { translator as marginStartTranslator } from "./marginStart-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the start element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 418
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the start element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 417
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tbl-translator.js";
@@ -0,0 +1,28 @@
1
+ /**
2
+ *
3
+ * @param {string|null} tableStyleReference
4
+ * @param {import('@translator').SCEncoderConfig} [params]
5
+ * @returns {{borders: {}, name: *, justification: *, fonts: {}, fontSize: *, rowBorders: {}, cellMargins: {}}|null}
6
+ */
7
+ export function _getReferencedTableStyles(tableStyleReference: string | null, params?: import("@translator").SCEncoderConfig): {
8
+ borders: {};
9
+ name: any;
10
+ justification: any;
11
+ fonts: {};
12
+ fontSize: any;
13
+ rowBorders: {};
14
+ cellMargins: {};
15
+ } | null;
16
+ /**
17
+ * Restore vertically merged cells from a table
18
+ * @param {Object} table The table node
19
+ * @param {Object} editorSchema The editor schema
20
+ * @returns {Object} The table node with merged cells restored
21
+ */
22
+ /** @type {import('@translator').NodeTranslatorConfig} */
23
+ export const config: import("@translator").NodeTranslatorConfig;
24
+ /**
25
+ * The NodeTranslator instance for the passthrough element.
26
+ * @type {import('@translator').NodeTranslator}
27
+ */
28
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tblBorders-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the tblBorders element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 422
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tblCaption-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the tblCaption element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 425
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tblCellMar-translator.js";
@@ -0,0 +1,2 @@
1
+ export const translator: NodeTranslator;
2
+ import { NodeTranslator } from '@translator';
@@ -0,0 +1 @@
1
+ export * from "./tblDescription-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the tblDescription element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 430
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tblGrid-translator.js";
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The NodeTranslator instance for the w:tblPr element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ */
5
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tblInd-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the tblInd element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 435
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tblLayout-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the tblLayout element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 436
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tblLook-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the tblLook element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 438
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;
@@ -0,0 +1 @@
1
+ export * from "./tblOverlap-translator.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The NodeTranslator instance for the tblOverlap element.
3
+ * @type {import('@translator').NodeTranslator}
4
+ * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 440
5
+ */
6
+ export const translator: import("@translator").NodeTranslator;