@harbour-enterprises/superdoc 0.23.0-next.25 → 0.23.0-next.27

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 (34) hide show
  1. package/dist/chunks/{PdfViewer-D5j64OT4.es.js → PdfViewer-C8baB1bn.es.js} +1 -1
  2. package/dist/chunks/{PdfViewer-CYMwWMP6.cjs → PdfViewer-DJ7UGyBT.cjs} +1 -1
  3. package/dist/chunks/{index-CIz8zQ3h.cjs → index-BjwQD_um.cjs} +2 -2
  4. package/dist/chunks/{index-ePxDRT3A.es.js → index-DScOqhcx.es.js} +2 -2
  5. package/dist/chunks/{super-editor.es-BhyobyII.es.js → super-editor.es-D0-dqxm2.es.js} +328 -133
  6. package/dist/chunks/{super-editor.es-DZWnc89F.cjs → super-editor.es-DpCRbxmi.cjs} +328 -133
  7. package/dist/style.css +6 -1
  8. package/dist/super-editor/ai-writer.es.js +2 -2
  9. package/dist/super-editor/chunks/{converter-CL8NqbzP.js → converter-B2Y-pDXk.js} +120 -24
  10. package/dist/super-editor/chunks/{docx-zipper-Ab__pf6Y.js → docx-zipper-bhLh8OB6.js} +1 -1
  11. package/dist/super-editor/chunks/{editor-DDXA7n3I.js → editor-GN9xFFdh.js} +2 -2
  12. package/dist/super-editor/chunks/{toolbar-BkZURoPS.js → toolbar-Bq8miKER.js} +14 -12
  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/style.css +6 -1
  18. package/dist/super-editor/super-editor/src/components/slash-menu/constants.d.ts +4 -0
  19. package/dist/super-editor/super-editor/src/components/slash-menu/menuItems.d.ts +4 -36
  20. package/dist/super-editor/super-editor/src/components/slash-menu/tests/testHelpers.d.ts +5 -12
  21. package/dist/super-editor/super-editor/src/core/super-converter/field-references/fld-preprocessors/num-pages-preprocessor.d.ts +1 -3
  22. package/dist/super-editor/super-editor/src/core/super-converter/field-references/fld-preprocessors/page-preprocessor.d.ts +1 -3
  23. package/dist/super-editor/super-editor/src/core/super-converter/field-references/fld-preprocessors/page-ref-preprocessor.d.ts +1 -2
  24. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/pict/helpers/handle-shape-textbox-import.d.ts +1 -1
  25. package/dist/super-editor/super-editor/src/core/super-converter/v3/handlers/w/pict/helpers/handle-v-rect-import.d.ts +1 -1
  26. package/dist/super-editor/super-editor.es.js +212 -113
  27. package/dist/super-editor/toolbar.es.js +2 -2
  28. package/dist/super-editor.cjs +1 -1
  29. package/dist/super-editor.es.js +1 -1
  30. package/dist/superdoc.cjs +2 -2
  31. package/dist/superdoc.es.js +2 -2
  32. package/dist/superdoc.umd.js +328 -133
  33. package/dist/superdoc.umd.js.map +1 -1
  34. package/package.json +1 -1
package/dist/style.css CHANGED
@@ -2080,7 +2080,7 @@ on the right if it is inside shape textbox.
2080
2080
  .slash-menu {
2081
2081
  position: absolute;
2082
2082
  z-index: 50;
2083
- width: 175px;
2083
+ width: 180px;
2084
2084
  color: #47484a;
2085
2085
  background: white;
2086
2086
  box-shadow:
@@ -2153,6 +2153,11 @@ on the right if it is inside shape textbox.
2153
2153
  align-items: center;
2154
2154
  width: 100%;
2155
2155
  }
2156
+ .slash-menu-default-content {
2157
+ display: flex;
2158
+ align-items: center;
2159
+ width: 100%;
2160
+ }
2156
2161
  .popover {
2157
2162
  background: white;
2158
2163
  border-radius: 6px;
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, onUnmounted, computed, createElementBlock, openBlock, withModifiers, createElementVNode, withDirectives, unref, vModelText, createCommentVNode, nextTick } from "vue";
2
- import { T as TextSelection } from "./chunks/converter-CL8NqbzP.js";
3
- import { _ as _export_sfc } from "./chunks/editor-DDXA7n3I.js";
2
+ import { T as TextSelection } from "./chunks/converter-B2Y-pDXk.js";
3
+ import { _ as _export_sfc } from "./chunks/editor-GN9xFFdh.js";
4
4
  const DEFAULT_API_ENDPOINT = "https://sd-dev-express-gateway-i6xtm.ondigitalocean.app/insights";
5
5
  const SYSTEM_PROMPT = "You are an expert copywriter and you are immersed in a document editor. You are to provide document related text responses based on the user prompts. Only write what is asked for. Do not provide explanations. Try to keep placeholders as short as possible. Do not output your prompt. Your instructions are: ";
6
6
  async function baseInsightsFetch(payload, options = {}) {
@@ -28078,9 +28078,10 @@ function handleAnnotationNode(params) {
28078
28078
  const tagValue = tag?.attributes["w:val"];
28079
28079
  const shouldProcessAsJson = tagValue?.startsWith("{") && tagValue?.endsWith("}");
28080
28080
  let attrs = {};
28081
+ const aliasLabel = getSafeString(alias?.attributes?.["w:val"]);
28081
28082
  if (shouldProcessAsJson) {
28082
28083
  const parsedAttrs = parseTagValueJSON(tagValue);
28083
- const attrsFromJSON = {
28084
+ attrs = {
28084
28085
  type: parsedAttrs.fieldTypeShort,
28085
28086
  fieldId: parsedAttrs.fieldId,
28086
28087
  displayLabel: parsedAttrs.displayLabel,
@@ -28094,10 +28095,27 @@ function handleAnnotationNode(params) {
28094
28095
  textHighlight: parsedAttrs.fieldTextHighlight,
28095
28096
  hash: parsedAttrs.hash
28096
28097
  };
28097
- attrs = attrsFromJSON;
28098
28098
  } else {
28099
- const attrsFromElements = getAttrsFromElements({ sdtPr, tag, alias, sdtId });
28100
- attrs = attrsFromElements;
28099
+ attrs = getAttrsFromElements({ sdtPr, tag, alias, sdtId });
28100
+ }
28101
+ const initialDisplayLabel = getSafeString(attrs.displayLabel);
28102
+ const extractedContent = getTextFromSdtContent(sdtContent);
28103
+ if (!attrs.defaultDisplayLabel) {
28104
+ if (initialDisplayLabel) {
28105
+ attrs.defaultDisplayLabel = initialDisplayLabel;
28106
+ } else if (aliasLabel) {
28107
+ attrs.defaultDisplayLabel = aliasLabel;
28108
+ }
28109
+ }
28110
+ const placeholderLabel = getPlaceholderLabel(attrs, aliasLabel);
28111
+ const placeholderText = ensurePlaceholderFormat(placeholderLabel);
28112
+ const isAnnotationsEnabled = Boolean(params.editor?.options?.annotations);
28113
+ const contentIsDistinct = shouldUseSdtContent(extractedContent, placeholderText);
28114
+ const shouldUseContent = !isAnnotationsEnabled && contentIsDistinct && (hasMoustache(extractedContent) || !placeholderText);
28115
+ if (contentIsDistinct) {
28116
+ attrs.displayLabel = extractedContent;
28117
+ } else if (!attrs.displayLabel && placeholderLabel) {
28118
+ attrs.displayLabel = placeholderLabel;
28101
28119
  }
28102
28120
  const { attrs: marksAsAttrs, marks } = parseAnnotationMarks(sdtContent);
28103
28121
  const allAttrs = { ...attrs, ...marksAsAttrs };
@@ -28105,13 +28123,14 @@ function handleAnnotationNode(params) {
28105
28123
  if (!attrs.fieldId || !attrs.type) {
28106
28124
  return null;
28107
28125
  }
28126
+ const textContent = shouldUseContent ? extractedContent : placeholderText;
28108
28127
  let result = {
28109
28128
  type: "text",
28110
- text: `{{${attrs.displayLabel}}}`,
28129
+ text: textContent,
28111
28130
  attrs: allAttrs,
28112
28131
  marks
28113
28132
  };
28114
- if (params.editor.options.annotations) {
28133
+ if (isAnnotationsEnabled) {
28115
28134
  result = {
28116
28135
  type: "fieldAnnotation",
28117
28136
  attrs: allAttrs
@@ -28172,6 +28191,84 @@ function getAttrsFromElements({ sdtPr, tag, alias, sdtId }) {
28172
28191
  };
28173
28192
  return attrs;
28174
28193
  }
28194
+ function getTextFromSdtContent(sdtContent) {
28195
+ if (!sdtContent?.elements?.length) return "";
28196
+ const chunks = [];
28197
+ collectTextChunks(sdtContent.elements, chunks);
28198
+ if (chunks.length && chunks[chunks.length - 1] === "\n") {
28199
+ chunks.pop();
28200
+ }
28201
+ const text = chunks.join("");
28202
+ return text.replace(/\u00a0/g, " ");
28203
+ }
28204
+ function getPlaceholderLabel(attrs, aliasValue) {
28205
+ const displayLabel = trimSafeString(attrs.displayLabel);
28206
+ if (displayLabel) return displayLabel;
28207
+ const defaultLabel = trimSafeString(attrs.defaultDisplayLabel);
28208
+ if (defaultLabel) return defaultLabel;
28209
+ return trimSafeString(aliasValue);
28210
+ }
28211
+ function shouldUseSdtContent(extractedContent, placeholderText) {
28212
+ const normalizedContent = normalizePlaceholderText(extractedContent);
28213
+ if (!normalizedContent) return false;
28214
+ const normalizedPlaceholder = normalizePlaceholderText(placeholderText);
28215
+ return normalizedContent !== normalizedPlaceholder;
28216
+ }
28217
+ function ensurePlaceholderFormat(label) {
28218
+ const trimmed = trimSafeString(label);
28219
+ if (!trimmed) return "";
28220
+ if (trimmed.startsWith("{{") && trimmed.endsWith("}}")) {
28221
+ return trimmed;
28222
+ }
28223
+ return `{{${trimmed}}}`;
28224
+ }
28225
+ function normalizePlaceholderText(value = "") {
28226
+ const trimmed = trimSafeString(value);
28227
+ if (!trimmed) return "";
28228
+ return stripPlaceholderBraces(trimmed).toLowerCase();
28229
+ }
28230
+ function stripPlaceholderBraces(value = "") {
28231
+ if (value.startsWith("{{") && value.endsWith("}}")) {
28232
+ return trimSafeString(value.slice(2, -2));
28233
+ }
28234
+ return value;
28235
+ }
28236
+ function hasMoustache(value = "") {
28237
+ return /\{\{\s*.+?\s*\}\}/.test(getSafeString(value));
28238
+ }
28239
+ function collectTextChunks(elements, chunks) {
28240
+ if (!elements) return;
28241
+ elements.forEach((element) => {
28242
+ if (!element) return;
28243
+ if (element.type === "text") {
28244
+ chunks.push(element.text || "");
28245
+ return;
28246
+ }
28247
+ if (element.name === "w:tab") {
28248
+ chunks.push(" ");
28249
+ return;
28250
+ }
28251
+ if (element.name === "w:br") {
28252
+ chunks.push("\n");
28253
+ return;
28254
+ }
28255
+ const isParagraph = element.name === "w:p";
28256
+ const initialLength = chunks.length;
28257
+ if (element.elements?.length) {
28258
+ collectTextChunks(element.elements, chunks);
28259
+ }
28260
+ if (isParagraph && chunks.length > initialLength) {
28261
+ chunks.push("\n");
28262
+ }
28263
+ });
28264
+ }
28265
+ function getSafeString(value) {
28266
+ if (typeof value !== "string") return "";
28267
+ return value;
28268
+ }
28269
+ function trimSafeString(value) {
28270
+ return getSafeString(value).replace(/\u00a0/g, " ").trim();
28271
+ }
28175
28272
  function handleDocPartObj(params) {
28176
28273
  const { nodes } = params;
28177
28274
  if (nodes.length === 0 || nodes[0].name !== "w:sdt") {
@@ -30831,7 +30928,7 @@ const attrConfig = Object.freeze({
30831
30928
  });
30832
30929
  const XML_NODE_NAME$4 = "w:commentRange";
30833
30930
  const SD_NODE_NAME$4 = "commentRange";
30834
- const decode$4 = (params, decodedAttrs) => {
30931
+ const decode$4 = (params) => {
30835
30932
  const { node, comments, commentsExportType, exportedCommentDefs } = params;
30836
30933
  if (!node) return;
30837
30934
  if (!comments) return;
@@ -30886,7 +30983,7 @@ const commentRangeStartTranslator = NodeTranslator.from(getConfig("Start"));
30886
30983
  const commentRangeEndTranslator = NodeTranslator.from(getConfig("End"));
30887
30984
  const XML_NODE_NAME$3 = "sd:pageReference";
30888
30985
  const SD_NODE_NAME$3 = "pageReference";
30889
- const encode$3 = (params, _2) => {
30986
+ const encode$3 = (params) => {
30890
30987
  const { nodes = [], nodeListHandler } = params || {};
30891
30988
  const node = nodes[0];
30892
30989
  const processedText = nodeListHandler.handler({
@@ -30903,7 +31000,7 @@ const encode$3 = (params, _2) => {
30903
31000
  };
30904
31001
  return processedNode;
30905
31002
  };
30906
- const decode$3 = (params, _2) => {
31003
+ const decode$3 = (params) => {
30907
31004
  const { node } = params;
30908
31005
  const outputMarks = processOutputMarks(node.attrs?.marksAsAttrs || []);
30909
31006
  const contentNodes = (node.content ?? []).flatMap((n) => exportSchemaToJson({ ...params, node: n }));
@@ -30986,7 +31083,7 @@ const config$3 = {
30986
31083
  const translator$3 = NodeTranslator.from(config$3);
30987
31084
  const XML_NODE_NAME$2 = "sd:tableOfContents";
30988
31085
  const SD_NODE_NAME$2 = "tableOfContents";
30989
- const encode$2 = (params, _2) => {
31086
+ const encode$2 = (params) => {
30990
31087
  const { nodes = [], nodeListHandler } = params || {};
30991
31088
  const node = nodes[0];
30992
31089
  const processedContent = nodeListHandler.handler({
@@ -31002,7 +31099,7 @@ const encode$2 = (params, _2) => {
31002
31099
  };
31003
31100
  return processedNode;
31004
31101
  };
31005
- const decode$2 = (params, _2) => {
31102
+ const decode$2 = (params) => {
31006
31103
  const { node } = params;
31007
31104
  const contentNodes = node.content.map((n) => exportSchemaToJson({ ...params, node: n }));
31008
31105
  const tocBeginElements = [
@@ -31065,7 +31162,7 @@ function parseInlineStyles(styleString) {
31065
31162
  return acc;
31066
31163
  }, {});
31067
31164
  }
31068
- function handleVRectImport({ params, pNode, pict }) {
31165
+ function handleVRectImport({ pNode, pict }) {
31069
31166
  const rect = pict.elements?.find((el) => el.name === "v:rect");
31070
31167
  const schemaAttrs = {};
31071
31168
  const rectAttrs = rect.attributes || {};
@@ -32071,7 +32168,7 @@ const tabNodeEntityHandler = {
32071
32168
  handler: handleTabNode
32072
32169
  };
32073
32170
  const tableOfContentsHandlerEntity = generateV2HandlerEntity("tableOfContentsHandler", translator$2);
32074
- function preProcessPageInstruction(nodesToCombine, _2, __) {
32171
+ function preProcessPageInstruction(nodesToCombine) {
32075
32172
  const pageNumNode = {
32076
32173
  name: "sd:autoPageNumber",
32077
32174
  type: "element"
@@ -32082,7 +32179,7 @@ function preProcessPageInstruction(nodesToCombine, _2, __) {
32082
32179
  });
32083
32180
  return [pageNumNode];
32084
32181
  }
32085
- function preProcessNumPagesInstruction(nodesToCombine, _2, __) {
32182
+ function preProcessNumPagesInstruction(nodesToCombine) {
32086
32183
  const totalPageNumNode = {
32087
32184
  name: "sd:totalPageNumber",
32088
32185
  type: "element"
@@ -32093,7 +32190,7 @@ function preProcessNumPagesInstruction(nodesToCombine, _2, __) {
32093
32190
  });
32094
32191
  return [totalPageNumNode];
32095
32192
  }
32096
- function preProcessPageRefInstruction(nodesToCombine, instrText, _2) {
32193
+ function preProcessPageRefInstruction(nodesToCombine, instrText) {
32097
32194
  const pageRefNode = {
32098
32195
  name: "sd:pageReference",
32099
32196
  type: "element",
@@ -32129,15 +32226,14 @@ function preProcessHyperlinkInstruction(nodesToCombine, instruction, docx) {
32129
32226
  }
32130
32227
  } else {
32131
32228
  const availableSwitches = {
32132
- "w:anchor": `l "(?<value>[^"]+)"`,
32133
- new_window: `
32134
- `,
32135
- "w:tgtFrame": ` "(?<value>[^"]+)"`,
32136
- "w:tooltip": `o "(?<value>[^"]+)"`
32229
+ "w:anchor": /(?:\\)?l "(?<value>[^"]+)"/,
32230
+ new_window: /(?:\\n|\n)/,
32231
+ "w:tgtFrame": /(?:\\t|\t) "(?<value>[^"]+)"/,
32232
+ "w:tooltip": /(?:\\)?o "(?<value>[^"]+)"/
32137
32233
  };
32138
32234
  const parsedSwitches = {};
32139
- for (const [key, regex] of Object.entries(availableSwitches)) {
32140
- const match = instruction.match(new RegExp(regex));
32235
+ for (const [key, pattern] of Object.entries(availableSwitches)) {
32236
+ const match = instruction.match(pattern);
32141
32237
  if (match) {
32142
32238
  parsedSwitches[key] = match.groups?.value || true;
32143
32239
  }
@@ -32301,7 +32397,7 @@ const createDocumentJson = (docx, converter, editor) => {
32301
32397
  } else {
32302
32398
  trackStructure(identifierResult);
32303
32399
  }
32304
- } catch (error) {
32400
+ } catch {
32305
32401
  trackStructure();
32306
32402
  }
32307
32403
  }
@@ -32779,7 +32875,7 @@ const isAlternatingHeadersOddEven = (docx) => {
32779
32875
  const evenOdd = elements.find((el) => el.name === "w:evenAndOddHeaders");
32780
32876
  return !!evenOdd;
32781
32877
  };
32782
- function handleShapeTextboxImport({ params, pNode, pict }) {
32878
+ function handleShapeTextboxImport({ params, pict }) {
32783
32879
  const shape = pict.elements?.find((el) => el.name === "v:shape");
32784
32880
  const schemaAttrs = {};
32785
32881
  const schemaTextboxAttrs = {};
@@ -1,4 +1,4 @@
1
- import { p as process$1, aw as commonjsGlobal, B as Buffer, ax as getDefaultExportFromCjs, ay as getContentTypesFromXml, az as xmljs } from "./converter-CL8NqbzP.js";
1
+ import { p as process$1, aw as commonjsGlobal, B as Buffer, ax as getDefaultExportFromCjs, ay as getContentTypesFromXml, az as xmljs } from "./converter-B2Y-pDXk.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, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ListItemNodeView_instances, init_fn3, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_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 updateDOMAttributes, ah as findChildren$5, ai as htmlHandler, aj as generateRandomSigned32BitIntStrId, ak as InputRule, al as kebabCase, am as findParentNodeClosestToPos, an as getListItemStyleDefinitions, ao as docxNumberigHelpers, ap as parseIndentElement, aq as combineIndents, ar as SelectionRange, as as Transform, at as isInTable$1, au as generateDocxRandomId, av as insertNewRelationship } from "./converter-CL8NqbzP.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 updateDOMAttributes, ah as findChildren$5, ai as htmlHandler, aj as generateRandomSigned32BitIntStrId, ak as InputRule, al as kebabCase, am as findParentNodeClosestToPos, an as getListItemStyleDefinitions, ao as docxNumberigHelpers, ap as parseIndentElement, aq as combineIndents, ar as SelectionRange, as as Transform, at as isInTable$1, au as generateDocxRandomId, av as insertNewRelationship } from "./converter-B2Y-pDXk.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-Ab__pf6Y.js";
17
+ import { D as DocxZipper } from "./docx-zipper-bhLh8OB6.js";
18
18
  var GOOD_LEAF_SIZE = 200;
19
19
  var RopeSequence = function RopeSequence2() {
20
20
  };
@@ -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-CL8NqbzP.js";
3
- import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-DDXA7n3I.js";
2
+ import { p as process$1 } from "./converter-B2Y-pDXk.js";
3
+ import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-GN9xFFdh.js";
4
4
  const sanitizeNumber = (value, defaultNumber) => {
5
5
  let sanitized = value.replace(/[^0-9.]/g, "");
6
6
  sanitized = parseFloat(sanitized);
@@ -72,7 +72,7 @@ const fileHalfDashedIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="
72
72
  const commentIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z"/></svg>';
73
73
  const circleIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z"/></svg>';
74
74
  const checkIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>';
75
- const xmarkIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"/></svg>';
75
+ const xMarkIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"/></svg>';
76
76
  const upRightFromSquareIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-128c0-17.7-14.3-32-32-32L352 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z"/></svg>';
77
77
  const ellipsisVerticalIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z"/></svg>';
78
78
  const caretUpIconSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z"/></svg>';
@@ -127,7 +127,7 @@ const toolbarIcons = {
127
127
  colorOption: circleIconSvg,
128
128
  colorOptionCheck: checkIconSvg,
129
129
  linkInput: linkIconSvg,
130
- removeLink: xmarkIconSvg,
130
+ removeLink: xMarkIconSvg,
131
131
  openLink: upRightFromSquareIconSvg,
132
132
  overflow: ellipsisVerticalIconSvg,
133
133
  dropdownCaretUp: caretUpIconSvg,
@@ -10161,18 +10161,20 @@ export {
10161
10161
  NSkeleton as N,
10162
10162
  Toolbar as T,
10163
10163
  trashIconSvg as a,
10164
- tableIconSvg as b,
10165
- scissorsIconSvg as c,
10166
- copyIconSvg as d,
10167
- pasteIconSvg as e,
10168
- borderNoneIconSvg as f,
10169
- arrowsToDotIconSvg as g,
10170
- arrowsLeftRightIconSvg as h,
10164
+ borderNoneIconSvg as b,
10165
+ arrowsToDotIconSvg as c,
10166
+ arrowsLeftRightIconSvg as d,
10167
+ checkIconSvg as e,
10168
+ tableIconSvg as f,
10169
+ scissorsIconSvg as g,
10170
+ copyIconSvg as h,
10171
+ pasteIconSvg as i,
10171
10172
  linkIconSvg as l,
10172
10173
  magicWandIcon as m,
10173
10174
  plusIconSvg as p,
10174
10175
  sanitizeNumber as s,
10175
10176
  toolbarIcons as t,
10176
10177
  useMessage as u,
10177
- wrenchIconSvg as w
10178
+ wrenchIconSvg as w,
10179
+ xMarkIconSvg as x
10178
10180
  };
@@ -1,4 +1,4 @@
1
- import { a5 } from "./chunks/converter-CL8NqbzP.js";
1
+ import { a5 } from "./chunks/converter-B2Y-pDXk.js";
2
2
  import "vue";
3
3
  export {
4
4
  a5 as SuperConverter
@@ -1,5 +1,5 @@
1
- import "./chunks/converter-CL8NqbzP.js";
2
- import { D } from "./chunks/docx-zipper-Ab__pf6Y.js";
1
+ import "./chunks/converter-B2Y-pDXk.js";
2
+ import { D } from "./chunks/docx-zipper-bhLh8OB6.js";
3
3
  export {
4
4
  D as default
5
5
  };
@@ -1,6 +1,6 @@
1
- import { E } from "./chunks/editor-DDXA7n3I.js";
2
- import "./chunks/converter-CL8NqbzP.js";
3
- import "./chunks/docx-zipper-Ab__pf6Y.js";
1
+ import { E } from "./chunks/editor-GN9xFFdh.js";
2
+ import "./chunks/converter-B2Y-pDXk.js";
3
+ import "./chunks/docx-zipper-bhLh8OB6.js";
4
4
  export {
5
5
  E as Editor
6
6
  };
@@ -1,4 +1,4 @@
1
- import { J as JSZip } from "./chunks/docx-zipper-Ab__pf6Y.js";
1
+ import { J as JSZip } from "./chunks/docx-zipper-bhLh8OB6.js";
2
2
  async function createZip(blobs, fileNames) {
3
3
  const zip = new JSZip();
4
4
  blobs.forEach((blob, index) => {
@@ -1706,7 +1706,7 @@ on the right if it is inside shape textbox.
1706
1706
  .slash-menu {
1707
1707
  position: absolute;
1708
1708
  z-index: 50;
1709
- width: 175px;
1709
+ width: 180px;
1710
1710
  color: #47484a;
1711
1711
  background: white;
1712
1712
  box-shadow:
@@ -1779,6 +1779,11 @@ on the right if it is inside shape textbox.
1779
1779
  align-items: center;
1780
1780
  width: 100%;
1781
1781
  }
1782
+ .slash-menu-default-content {
1783
+ display: flex;
1784
+ align-items: center;
1785
+ width: 100%;
1786
+ }
1782
1787
  .popover {
1783
1788
  background: white;
1784
1789
  border-radius: 6px;
@@ -18,6 +18,8 @@ export namespace ICONS {
18
18
  export { pasteIconSvg as paste };
19
19
  export { plusIconSvg as addDocumentSection };
20
20
  export { trashIconSvg as removeDocumentSection };
21
+ export { checkIconSvg as trackChangesAccept };
22
+ export { xMarkIconSvg as trackChangesReject };
21
23
  }
22
24
  export namespace TEXTS {
23
25
  let addRowBefore: string;
@@ -41,6 +43,8 @@ export namespace TEXTS {
41
43
  let paste: string;
42
44
  let removeDocumentSection: string;
43
45
  let createDocumentSection: string;
46
+ let trackChangesAccept: string;
47
+ let trackChangesReject: string;
44
48
  }
45
49
  export const tableActionsOptions: ({
46
50
  label: string;
@@ -1,40 +1,8 @@
1
1
  /**
2
2
  * Get menu sections based on context (trigger, selection, node, etc)
3
3
  * @param {Object} context - { editor, selectedText, pos, node, event, trigger }
4
- * @returns {Array<{
5
- * id: string,
6
- * items: Array<{
7
- * id: string,
8
- * label: string,
9
- * icon?: string,
10
- * component?: Component,
11
- * action?: (editor: Editor) => void,
12
- * allowedTriggers: Array<'slash'|'click'>,
13
- * requiresSelection?: boolean,
14
- * requiresClipboard?: boolean
15
- * requiresTableParent?: boolean
16
- * requiredSectionParent?: boolean,
17
- * requiresModule?: string,
18
- * render?: (context: Object) => HTMLElement,
19
- * showWhen?: (context: Object) => boolean
20
- * }>
21
- * }>} Array of menu sections
4
+ * @param {Array} customItems - Optional custom menu items from configuration
5
+ * @param {boolean} includeDefaultItems - Whether to include default items
6
+ * @returns {Array} Array of menu sections
22
7
  */
23
- export function getItems(context: any): Array<{
24
- id: string;
25
- items: Array<{
26
- id: string;
27
- label: string;
28
- icon?: string;
29
- component?: Component;
30
- action?: (editor: Editor) => void;
31
- allowedTriggers: Array<"slash" | "click">;
32
- requiresSelection?: boolean;
33
- requiresClipboard?: boolean;
34
- requiresTableParent?: boolean;
35
- requiredSectionParent?: boolean;
36
- requiresModule?: string;
37
- render?: (context: any) => HTMLElement;
38
- showWhen?: (context: any) => boolean;
39
- }>;
40
- }>;
8
+ export function getItems(context: any, customItems?: any[], includeDefaultItems?: boolean, ...args: any[]): any[];
@@ -401,7 +401,7 @@ export function createMockRenderItem(id?: string, renderFn?: any): {
401
401
  id: string;
402
402
  label: string;
403
403
  render: any;
404
- allowedTriggers: string[];
404
+ showWhen: (context: any) => boolean;
405
405
  };
406
406
  /**
407
407
  * Common assertions for editor mock objects
@@ -432,7 +432,7 @@ export namespace SlashMenuConfigs {
432
432
  items: {
433
433
  id: string;
434
434
  label: string;
435
- allowedTriggers: string[];
435
+ showWhen: (context: any) => boolean;
436
436
  action: import("vitest").Mock<(...args: any[]) => any>;
437
437
  }[];
438
438
  }[];
@@ -447,19 +447,12 @@ export namespace SlashMenuConfigs {
447
447
  export { includeDefaultItems_2 as includeDefaultItems };
448
448
  let customItems_2: {
449
449
  id: string;
450
- items: ({
451
- id: string;
452
- label: string;
453
- allowedTriggers: string[];
454
- action: import("vitest").Mock<(...args: any[]) => any>;
455
- showWhen?: undefined;
456
- } | {
450
+ items: {
457
451
  id: string;
458
452
  label: string;
459
- allowedTriggers: string[];
460
- action: import("vitest").Mock<(...args: any[]) => any>;
461
453
  showWhen: (context: any) => any;
462
- })[];
454
+ action: import("vitest").Mock<(...args: any[]) => any>;
455
+ }[];
463
456
  }[];
464
457
  export { customItems_2 as customItems };
465
458
  }
@@ -1,9 +1,7 @@
1
1
  /**
2
2
  * Processes a NUMPAGES instruction and creates a `sd:totalPageNumber` node.
3
3
  * @param {import('../../v2/types/index.js').OpenXmlNode[]} nodesToCombine The nodes to combine.
4
- * @param {string} _ The instruction text (unused).
5
- * @param {import('../v2/docxHelper').ParsedDocx} [__] - The docx object.
6
4
  * @returns {import('../../v2/types/index.js').OpenXmlNode[]}
7
5
  * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 1233
8
6
  */
9
- export function preProcessNumPagesInstruction(nodesToCombine: import("../../v2/types/index.js").OpenXmlNode[], _: string, __?: any): import("../../v2/types/index.js").OpenXmlNode[];
7
+ export function preProcessNumPagesInstruction(nodesToCombine: import("../../v2/types/index.js").OpenXmlNode[]): import("../../v2/types/index.js").OpenXmlNode[];
@@ -1,9 +1,7 @@
1
1
  /**
2
2
  * Processes a PAGE instruction and creates a `sd:autoPageNumber` node.
3
3
  * @param {import('../../v2/types/index.js').OpenXmlNode[]} nodesToCombine The nodes to combine.
4
- * @param {string} _ The instruction text (unused).
5
- * @param {import('../v2/docxHelper').ParsedDocx} [__] - The docx object.
6
4
  * @returns {import('../../v2/types/index.js').OpenXmlNode[]}
7
5
  * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 1234
8
6
  */
9
- export function preProcessPageInstruction(nodesToCombine: import("../../v2/types/index.js").OpenXmlNode[], _: string, __?: any): import("../../v2/types/index.js").OpenXmlNode[];
7
+ export function preProcessPageInstruction(nodesToCombine: import("../../v2/types/index.js").OpenXmlNode[]): import("../../v2/types/index.js").OpenXmlNode[];
@@ -2,8 +2,7 @@
2
2
  * Processes a PAGEREF instruction and creates a `sd:pageReference` node.
3
3
  * @param {import('../../v2/types/index.js').OpenXmlNode[]} nodesToCombine The nodes to combine.
4
4
  * @param {string} instrText The instruction text.
5
- * @param {import('../v2/docxHelper').ParsedDocx} [__] - The docx object.
6
5
  * @returns {import('../../v2/types/index.js').OpenXmlNode[]}
7
6
  * @see {@link https://ecma-international.org/publications-and-standards/standards/ecma-376/} "Fundamentals And Markup Language Reference", page 1234
8
7
  */
9
- export function preProcessPageRefInstruction(nodesToCombine: import("../../v2/types/index.js").OpenXmlNode[], instrText: string, _: any): import("../../v2/types/index.js").OpenXmlNode[];
8
+ export function preProcessPageRefInstruction(nodesToCombine: import("../../v2/types/index.js").OpenXmlNode[], instrText: string): import("../../v2/types/index.js").OpenXmlNode[];
@@ -2,4 +2,4 @@
2
2
  * @param {Object} options
3
3
  * @returns {Object}
4
4
  */
5
- export function handleShapeTextboxImport({ params, pNode, pict }: any): any;
5
+ export function handleShapeTextboxImport({ params, pict }: any): any;
@@ -3,7 +3,7 @@
3
3
  * @param {Object} options
4
4
  * @returns {Object}
5
5
  */
6
- export function handleVRectImport({ params, pNode, pict }: any): any;
6
+ export function handleVRectImport({ pNode, pict }: any): any;
7
7
  export function parsePointsToPixels(value: any): any;
8
8
  /**
9
9
  * @param {Object} styleObject