@harbour-enterprises/superdoc 0.22.0-next.1 → 0.22.0-next.3

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 (32) hide show
  1. package/dist/chunks/{PdfViewer-B3KmcDup.cjs → PdfViewer-CvFw8S_D.cjs} +1 -1
  2. package/dist/chunks/{PdfViewer-BpwMPbUj.es.js → PdfViewer-D95oFKMa.es.js} +1 -1
  3. package/dist/chunks/{index-BOf6E2I4.cjs → index-Ct4VrAay.cjs} +39 -19
  4. package/dist/chunks/{index-Cw4YywoD.es.js → index-DgH1cx2c.es.js} +39 -19
  5. package/dist/chunks/{super-editor.es-DHDx2fsy.cjs → super-editor.es-CIDcWgLs.cjs} +198 -76
  6. package/dist/chunks/{super-editor.es-vfoWxyZL.es.js → super-editor.es-WUoM0FI7.es.js} +198 -76
  7. package/dist/core/SuperDoc.d.ts +5 -0
  8. package/dist/core/SuperDoc.d.ts.map +1 -1
  9. package/dist/core/types/index.d.ts +4 -4
  10. package/dist/core/types/index.d.ts.map +1 -1
  11. package/dist/super-editor/ai-writer.es.js +2 -2
  12. package/dist/super-editor/chunks/{converter-BcqEfCTg.js → converter-DBwwYo1I.js} +187 -63
  13. package/dist/super-editor/chunks/{docx-zipper-DZ9ph0iQ.js → docx-zipper-BCI-3XE9.js} +1 -1
  14. package/dist/super-editor/chunks/{editor-BC2sSIVa.js → editor-W3rw5KHF.js} +13 -6
  15. package/dist/super-editor/chunks/{toolbar-DNTo5DDf.js → toolbar-CFfRuTi3.js} +2 -2
  16. package/dist/super-editor/converter.es.js +1 -1
  17. package/dist/super-editor/docx-zipper.es.js +2 -2
  18. package/dist/super-editor/editor.es.js +3 -3
  19. package/dist/super-editor/file-zipper.es.js +1 -1
  20. package/dist/super-editor/src/core/super-converter/SuperConverter.d.ts +1 -13
  21. package/dist/super-editor/src/extensions/custom-selection/custom-selection.d.ts +0 -1
  22. package/dist/super-editor/src/utils/contextmenu-helpers.d.ts +24 -0
  23. package/dist/super-editor/super-editor.es.js +7 -15
  24. package/dist/super-editor/toolbar.es.js +2 -2
  25. package/dist/super-editor.cjs +1 -1
  26. package/dist/super-editor.es.js +1 -1
  27. package/dist/superdoc.cjs +2 -2
  28. package/dist/superdoc.es.js +2 -2
  29. package/dist/superdoc.umd.js +235 -93
  30. package/dist/superdoc.umd.js.map +1 -1
  31. package/package.json +1 -1
  32. package/dist/super-editor/src/components/slash-menu/contextmenu-helpers.d.ts +0 -1
@@ -24839,17 +24839,16 @@ const getParagraphSpacing = (node, docx, styleId = "", marks = [], options = {})
24839
24839
  };
24840
24840
  const getDefaultParagraphStyle = (docx, styleId = "") => {
24841
24841
  const styles = docx["word/styles.xml"];
24842
- if (!styles) {
24842
+ const rootElements = styles?.elements?.[0]?.elements;
24843
+ if (!rootElements?.length) {
24843
24844
  return {};
24844
24845
  }
24845
- const defaults = styles.elements[0].elements?.find((el) => el.name === "w:docDefaults");
24846
- const pDefault = defaults.elements.find((el) => el.name === "w:pPrDefault");
24846
+ const defaults = rootElements.find((el) => el.name === "w:docDefaults");
24847
+ const pDefault = defaults?.elements?.find((el) => el.name === "w:pPrDefault") || {};
24847
24848
  const pPrDefault = pDefault?.elements?.find((el) => el.name === "w:pPr");
24848
24849
  const pPrDefaultSpacingTag = pPrDefault?.elements?.find((el) => el.name === "w:spacing") || {};
24849
24850
  const pPrDefaultIndentTag = pPrDefault?.elements?.find((el) => el.name === "w:ind") || {};
24850
- const stylesNormal = styles.elements[0].elements?.find(
24851
- (el) => el.name === "w:style" && el.attributes["w:styleId"] === "Normal"
24852
- );
24851
+ const stylesNormal = rootElements.find((el) => el.name === "w:style" && el.attributes["w:styleId"] === "Normal");
24853
24852
  const pPrNormal = stylesNormal?.elements?.find((el) => el.name === "w:pPr");
24854
24853
  const pPrNormalSpacingTag = pPrNormal?.elements?.find((el) => el.name === "w:spacing") || {};
24855
24854
  const pPrNormalIndentTag = pPrNormal?.elements?.find((el) => el.name === "w:ind") || {};
@@ -24858,9 +24857,7 @@ const getDefaultParagraphStyle = (docx, styleId = "") => {
24858
24857
  let pPrStyleIdIndentTag = {};
24859
24858
  let pPrStyleJc = {};
24860
24859
  if (styleId) {
24861
- const stylesById = styles.elements[0].elements?.find(
24862
- (el) => el.name === "w:style" && el.attributes["w:styleId"] === styleId
24863
- );
24860
+ const stylesById = rootElements.find((el) => el.name === "w:style" && el.attributes["w:styleId"] === styleId);
24864
24861
  const pPrById = stylesById?.elements?.find((el) => el.name === "w:pPr");
24865
24862
  pPrStyleIdSpacingTag = pPrById?.elements?.find((el) => el.name === "w:spacing") || {};
24866
24863
  pPrStyleIdIndentTag = pPrById?.elements?.find((el) => el.name === "w:ind") || {};
@@ -30594,6 +30591,18 @@ const config = {
30594
30591
  attributes: validXmlAttributes
30595
30592
  };
30596
30593
  const translator = NodeTranslator.from(config);
30594
+ const DEFAULT_SECTION_PROPS_TWIPS = Object.freeze({
30595
+ pageSize: Object.freeze({ width: "12240", height: "15840" }),
30596
+ pageMargins: Object.freeze({
30597
+ top: "1440",
30598
+ right: "1440",
30599
+ bottom: "1440",
30600
+ left: "1440",
30601
+ header: "720",
30602
+ footer: "720",
30603
+ gutter: "0"
30604
+ })
30605
+ });
30597
30606
  const isLineBreakOnlyRun = (node) => {
30598
30607
  if (!node) return false;
30599
30608
  if (node.type === "lineBreak" || node.type === "hardBreak") return true;
@@ -30646,28 +30655,63 @@ function exportSchemaToJson(params2) {
30646
30655
  return handler2(params2);
30647
30656
  }
30648
30657
  function translateBodyNode(params2) {
30649
- let sectPr = params2.bodyNode?.elements.find((n) => n.name === "w:sectPr") || {};
30658
+ let sectPr = params2.bodyNode?.elements?.find((n) => n.name === "w:sectPr");
30659
+ if (!sectPr) {
30660
+ sectPr = {
30661
+ type: "element",
30662
+ name: "w:sectPr",
30663
+ elements: []
30664
+ };
30665
+ } else if (!sectPr.elements) {
30666
+ sectPr = { ...sectPr, elements: [] };
30667
+ }
30650
30668
  if (params2.converter) {
30651
- const hasHeader = sectPr?.elements?.some((n) => n.name === "w:headerReference");
30669
+ const hasHeader = sectPr.elements?.some((n) => n.name === "w:headerReference");
30652
30670
  const hasDefaultHeader = params2.converter.headerIds?.default;
30653
30671
  if (!hasHeader && hasDefaultHeader && !params2.editor.options.isHeaderOrFooter) {
30654
30672
  const defaultHeader = generateDefaultHeaderFooter("header", params2.converter.headerIds?.default);
30655
30673
  sectPr.elements.push(defaultHeader);
30656
30674
  }
30657
- const hasFooter = sectPr?.elements?.some((n) => n.name === "w:footerReference");
30675
+ const hasFooter = sectPr.elements?.some((n) => n.name === "w:footerReference");
30658
30676
  const hasDefaultFooter = params2.converter.footerIds?.default;
30659
30677
  if (!hasFooter && hasDefaultFooter && !params2.editor.options.isHeaderOrFooter) {
30660
30678
  const defaultFooter = generateDefaultHeaderFooter("footer", params2.converter.footerIds?.default);
30661
30679
  sectPr.elements.push(defaultFooter);
30662
30680
  }
30663
- const newMargins = params2.converter.pageStyles.pageMargins;
30664
- const sectPrMargins = sectPr.elements.find((n) => n.name === "w:pgMar");
30665
- const { attributes } = sectPrMargins;
30666
- Object.entries(newMargins).forEach(([key2, value]) => {
30667
- const convertedValue = inchesToTwips(value);
30668
- attributes[`w:${key2}`] = convertedValue;
30669
- });
30670
- sectPrMargins.attributes = attributes;
30681
+ const newMargins = params2.converter.pageStyles?.pageMargins;
30682
+ if (newMargins) {
30683
+ let sectPrMargins = sectPr.elements.find((n) => n.name === "w:pgMar");
30684
+ if (!sectPrMargins) {
30685
+ sectPrMargins = {
30686
+ type: "element",
30687
+ name: "w:pgMar",
30688
+ attributes: {}
30689
+ };
30690
+ sectPr.elements.push(sectPrMargins);
30691
+ } else if (!sectPrMargins.attributes) {
30692
+ sectPrMargins.attributes = {};
30693
+ }
30694
+ Object.entries(newMargins).forEach(([key2, value]) => {
30695
+ const convertedValue = inchesToTwips(value);
30696
+ sectPrMargins.attributes[`w:${key2}`] = convertedValue;
30697
+ });
30698
+ }
30699
+ let sectPrPgSz = sectPr.elements.find((n) => n.name === "w:pgSz");
30700
+ if (!sectPrPgSz) {
30701
+ sectPrPgSz = {
30702
+ type: "element",
30703
+ name: "w:pgSz",
30704
+ attributes: {}
30705
+ };
30706
+ sectPr.elements.push(sectPrPgSz);
30707
+ } else if (!sectPrPgSz.attributes) {
30708
+ sectPrPgSz.attributes = {};
30709
+ }
30710
+ const pageSize = params2.converter.pageStyles?.pageSize;
30711
+ const widthInches = pageSize?.width;
30712
+ const heightInches = pageSize?.height;
30713
+ sectPrPgSz.attributes["w:w"] = widthInches ? String(inchesToTwips(widthInches)) : sectPrPgSz.attributes["w:w"] ?? DEFAULT_SECTION_PROPS_TWIPS.pageSize.width;
30714
+ sectPrPgSz.attributes["w:h"] = heightInches ? String(inchesToTwips(heightInches)) : sectPrPgSz.attributes["w:h"] ?? DEFAULT_SECTION_PROPS_TWIPS.pageSize.height;
30671
30715
  }
30672
30716
  const elements = translateChildNodes(params2);
30673
30717
  if (params2.isHeaderFooter) {
@@ -32682,6 +32726,7 @@ const createDocumentJson = (docx, converter, editor) => {
32682
32726
  const nodeListHandler = defaultNodeListHandler();
32683
32727
  const bodyNode = json.elements[0].elements.find((el) => el.name === "w:body");
32684
32728
  if (bodyNode) {
32729
+ ensureSectionProperties(bodyNode);
32685
32730
  const node = bodyNode;
32686
32731
  const contentElements = node.elements?.filter((n) => n.name !== "w:sectPr") ?? [];
32687
32732
  const content = pruneIgnoredNodes(contentElements);
@@ -32915,6 +32960,59 @@ function getDocumentStyles(node, docx, converter, editor) {
32915
32960
  styles.alternateHeaders = isAlternatingHeadersOddEven(docx);
32916
32961
  return styles;
32917
32962
  }
32963
+ const DEFAULT_SECTION_PROPS = Object.freeze({
32964
+ pageSize: Object.freeze({ width: "12240", height: "15840" }),
32965
+ pageMargins: Object.freeze({
32966
+ top: "1440",
32967
+ right: "1440",
32968
+ bottom: "1440",
32969
+ left: "1440",
32970
+ header: "720",
32971
+ footer: "720",
32972
+ gutter: "0"
32973
+ })
32974
+ });
32975
+ function ensureSectionProperties(bodyNode, converter) {
32976
+ if (!bodyNode.elements) bodyNode.elements = [];
32977
+ let sectPr = bodyNode.elements.find((el) => el.name === "w:sectPr");
32978
+ if (!sectPr) {
32979
+ sectPr = {
32980
+ type: "element",
32981
+ name: "w:sectPr",
32982
+ elements: []
32983
+ };
32984
+ bodyNode.elements.push(sectPr);
32985
+ } else if (!sectPr.elements) {
32986
+ sectPr.elements = [];
32987
+ }
32988
+ const ensureChild = (name, factory) => {
32989
+ let child = sectPr.elements.find((el) => el.name === name);
32990
+ if (!child) {
32991
+ child = factory();
32992
+ sectPr.elements.push(child);
32993
+ } else if (!child.attributes) {
32994
+ child.attributes = {};
32995
+ }
32996
+ return child;
32997
+ };
32998
+ const pgSz = ensureChild("w:pgSz", () => ({
32999
+ type: "element",
33000
+ name: "w:pgSz",
33001
+ attributes: {}
33002
+ }));
33003
+ pgSz.attributes["w:w"] = pgSz.attributes["w:w"] ?? DEFAULT_SECTION_PROPS.pageSize.width;
33004
+ pgSz.attributes["w:h"] = pgSz.attributes["w:h"] ?? DEFAULT_SECTION_PROPS.pageSize.height;
33005
+ const pgMar = ensureChild("w:pgMar", () => ({
33006
+ type: "element",
33007
+ name: "w:pgMar",
33008
+ attributes: {}
33009
+ }));
33010
+ Object.entries(DEFAULT_SECTION_PROPS.pageMargins).forEach(([key2, value]) => {
33011
+ const attrKey = `w:${key2}`;
33012
+ if (pgMar.attributes[attrKey] == null) pgMar.attributes[attrKey] = value;
33013
+ });
33014
+ return sectPr;
33015
+ }
32918
33016
  function getStyleDefinitions(docx) {
32919
33017
  const styles = docx["word/styles.xml"];
32920
33018
  if (!styles) return [];
@@ -33107,6 +33205,36 @@ const FONT_FAMILY_FALLBACKS = Object.freeze({
33107
33205
  auto: "sans-serif"
33108
33206
  });
33109
33207
  const DEFAULT_GENERIC_FALLBACK = "sans-serif";
33208
+ const DEFAULT_FONT_SIZE_PT = 10;
33209
+ const collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state: state2 }) => {
33210
+ if (!runProps?.elements?.length || !state2) return;
33211
+ const fontsNode = runProps.elements.find((el) => el.name === "w:rFonts");
33212
+ if (fontsNode?.attributes) {
33213
+ const themeName = fontsNode.attributes["w:asciiTheme"];
33214
+ if (themeName) {
33215
+ const themeInfo = themeResolver?.(themeName) || {};
33216
+ if ((allowOverrideTypeface || !state2.typeface) && themeInfo.typeface) state2.typeface = themeInfo.typeface;
33217
+ if ((allowOverrideTypeface || !state2.panose) && themeInfo.panose) state2.panose = themeInfo.panose;
33218
+ }
33219
+ const ascii = fontsNode.attributes["w:ascii"];
33220
+ if ((allowOverrideTypeface || !state2.typeface) && ascii) {
33221
+ state2.typeface = ascii;
33222
+ }
33223
+ }
33224
+ const sizeNode = runProps.elements.find((el) => el.name === "w:sz");
33225
+ if (sizeNode?.attributes?.["w:val"]) {
33226
+ const sizeTwips = Number(sizeNode.attributes["w:val"]);
33227
+ if (Number.isFinite(sizeTwips)) {
33228
+ if (state2.fallbackSzTwips === void 0) state2.fallbackSzTwips = sizeTwips;
33229
+ const sizePt = sizeTwips / 2;
33230
+ if (allowOverrideSize || state2.fontSizePt === void 0) state2.fontSizePt = sizePt;
33231
+ }
33232
+ }
33233
+ const kernNode = runProps.elements.find((el) => el.name === "w:kern");
33234
+ if (kernNode?.attributes?.["w:val"]) {
33235
+ if (allowOverrideSize || state2.kern === void 0) state2.kern = kernNode.attributes["w:val"];
33236
+ }
33237
+ };
33110
33238
  const _SuperConverter = class _SuperConverter2 {
33111
33239
  constructor(params2 = null) {
33112
33240
  __privateAdd$2(this, _SuperConverter_instances);
@@ -33234,49 +33362,45 @@ const _SuperConverter = class _SuperConverter2 {
33234
33362
  }
33235
33363
  getDocumentDefaultStyles() {
33236
33364
  const styles = this.convertedXml["word/styles.xml"];
33237
- if (!styles) return {};
33238
- const defaults = styles.elements[0].elements.find((el) => el.name === "w:docDefaults");
33239
- const rDefault = defaults.elements.find((el) => el.name === "w:rPrDefault");
33240
- if (!rDefault.elements) return {};
33241
- const rElements = rDefault.elements[0].elements;
33242
- const rFonts = rElements?.find((el) => el.name === "w:rFonts");
33243
- if ("elements" in rDefault) {
33244
- const fontThemeName = rElements.find((el) => el.name === "w:rFonts")?.attributes["w:asciiTheme"];
33245
- let typeface, panose, fontSizeNormal;
33246
- if (fontThemeName) {
33247
- const fontInfo = this.getThemeInfo(fontThemeName);
33248
- typeface = fontInfo.typeface;
33249
- panose = fontInfo.panose;
33250
- } else if (rFonts) {
33251
- typeface = rFonts?.attributes["w:ascii"];
33252
- }
33253
- const paragraphDefaults = styles.elements[0].elements.filter((el) => {
33254
- return el.name === "w:style" && el.attributes["w:styleId"] === "Normal";
33255
- }) || [];
33256
- paragraphDefaults.forEach((el) => {
33257
- const rPr = el.elements.find((el2) => el2.name === "w:rPr");
33258
- const fonts = rPr?.elements?.find((el2) => el2.name === "w:rFonts");
33259
- typeface = fonts?.attributes["w:ascii"];
33260
- fontSizeNormal = Number(rPr?.elements?.find((el2) => el2.name === "w:sz")?.attributes["w:val"]) / 2;
33261
- });
33262
- const rPrDefaults = defaults?.elements?.find((el) => el.name === "w:rPrDefault");
33263
- if (rPrDefaults) {
33264
- const rPr = rPrDefaults.elements?.find((el) => el.name === "w:rPr");
33265
- const fonts = rPr?.elements?.find((el) => el.name === "w:rFonts");
33266
- if (fonts?.attributes?.["w:ascii"]) {
33267
- typeface = fonts.attributes["w:ascii"];
33268
- }
33269
- const fontSizeRaw = rPr?.elements?.find((el) => el.name === "w:sz")?.attributes?.["w:val"];
33270
- if (!fontSizeNormal && fontSizeRaw) {
33271
- fontSizeNormal = Number(fontSizeRaw) / 2;
33272
- }
33273
- }
33274
- const fallbackSz = Number(rElements.find((el) => el.name === "w:sz")?.attributes?.["w:val"]);
33275
- const fontSizePt = fontSizeNormal ?? (Number.isFinite(fallbackSz) ? fallbackSz / 2 : void 0) ?? 10;
33276
- const kern = rElements.find((el) => el.name === "w:kern")?.attributes["w:val"];
33277
- const fontFamilyCss = _SuperConverter2.toCssFontFamily(typeface, this.convertedXml);
33278
- return { fontSizePt, kern, typeface, panose, fontFamilyCss };
33279
- }
33365
+ const styleRoot = styles?.elements?.[0];
33366
+ const styleElements = styleRoot?.elements || [];
33367
+ if (!styleElements.length) return {};
33368
+ const defaults = styleElements.find((el) => el.name === "w:docDefaults");
33369
+ const normalStyle = styleElements.find((el) => el.name === "w:style" && el.attributes?.["w:styleId"] === "Normal");
33370
+ const defaultsState = {
33371
+ typeface: void 0,
33372
+ panose: void 0,
33373
+ fontSizePt: void 0,
33374
+ kern: void 0,
33375
+ fallbackSzTwips: void 0
33376
+ };
33377
+ const docDefaultRun = defaults?.elements?.find((el) => el.name === "w:rPrDefault");
33378
+ const docDefaultProps = docDefaultRun?.elements?.find((el) => el.name === "w:rPr") ?? docDefaultRun;
33379
+ collectRunDefaultProperties(docDefaultProps, {
33380
+ allowOverrideTypeface: true,
33381
+ allowOverrideSize: true,
33382
+ themeResolver: (theme) => this.getThemeInfo(theme),
33383
+ state: defaultsState
33384
+ });
33385
+ const normalRunProps = normalStyle?.elements?.find((el) => el.name === "w:rPr") ?? null;
33386
+ collectRunDefaultProperties(normalRunProps, {
33387
+ allowOverrideTypeface: true,
33388
+ allowOverrideSize: true,
33389
+ themeResolver: (theme) => this.getThemeInfo(theme),
33390
+ state: defaultsState
33391
+ });
33392
+ if (defaultsState.fontSizePt === void 0) {
33393
+ if (Number.isFinite(defaultsState.fallbackSzTwips)) defaultsState.fontSizePt = defaultsState.fallbackSzTwips / 2;
33394
+ else defaultsState.fontSizePt = DEFAULT_FONT_SIZE_PT;
33395
+ }
33396
+ const fontFamilyCss = defaultsState.typeface ? _SuperConverter2.toCssFontFamily(defaultsState.typeface, this.convertedXml) : void 0;
33397
+ const result = {};
33398
+ if (defaultsState.fontSizePt !== void 0) result.fontSizePt = defaultsState.fontSizePt;
33399
+ if (defaultsState.kern !== void 0) result.kern = defaultsState.kern;
33400
+ if (defaultsState.typeface) result.typeface = defaultsState.typeface;
33401
+ if (defaultsState.panose) result.panose = defaultsState.panose;
33402
+ if (fontFamilyCss) result.fontFamilyCss = fontFamilyCss;
33403
+ return result;
33280
33404
  }
33281
33405
  getDocumentFonts() {
33282
33406
  const fontTable = this.convertedXml["word/fontTable.xml"];
@@ -53574,15 +53698,21 @@ const intToJapaneseCounting = (num) => {
53574
53698
  }
53575
53699
  return result;
53576
53700
  };
53577
- const CustomSelectionPluginKey = new PluginKey("CustomSelection");
53578
- const shouldAllowNativeContextMenu = (event) => {
53701
+ const isKeyboardInvocation = (event) => {
53702
+ return event.type === "contextmenu" && typeof event.detail === "number" && event.detail === 0 && (event.button === 0 || event.button === void 0) && event.clientX === 0 && event.clientY === 0;
53703
+ };
53704
+ const prefersNativeMenu = (event) => {
53579
53705
  if (!event) return false;
53580
53706
  if (event.ctrlKey || event.metaKey) {
53581
53707
  return true;
53582
53708
  }
53583
- const isKeyboardInvocation = event.type === "contextmenu" && typeof event.detail === "number" && event.detail === 0 && (event.button === 0 || event.button === void 0) && event.clientX === 0 && event.clientY === 0;
53584
- return Boolean(isKeyboardInvocation);
53709
+ return isKeyboardInvocation(event);
53710
+ };
53711
+ const shouldAllowNativeContextMenu = (event) => {
53712
+ return prefersNativeMenu(event);
53585
53713
  };
53714
+ const shouldBypassContextMenu = shouldAllowNativeContextMenu;
53715
+ const CustomSelectionPluginKey = new PluginKey("CustomSelection");
53586
53716
  const handleClickOutside = (event, editor) => {
53587
53717
  const editorElem = editor?.options?.element;
53588
53718
  if (!editorElem) return;
@@ -83084,7 +83214,7 @@ class SuperToolbar extends EventEmitter2 {
83084
83214
  if (!argument) return;
83085
83215
  item.onActivate({ zoom: argument });
83086
83216
  this.emit("superdoc-command", { item, argument });
83087
- const layers = document.querySelector(this.superdoc.config.selector)?.querySelector(".layers");
83217
+ const layers = this.superdoc.element?.querySelector(".layers");
83088
83218
  if (!layers) return;
83089
83219
  const isMobileDevice = typeof screen.orientation !== "undefined";
83090
83220
  const isSmallScreen = window.matchMedia("(max-width: 834px)").matches;
@@ -84146,14 +84276,6 @@ function getStructureFromResolvedPos(state2, pos) {
84146
84276
  return null;
84147
84277
  }
84148
84278
  }
84149
- const shouldBypassContextMenu = (event) => {
84150
- if (!event) return false;
84151
- if (event.ctrlKey || event.metaKey) {
84152
- return true;
84153
- }
84154
- const isKeyboardInvocation = event.type === "contextmenu" && typeof event.detail === "number" && event.detail === 0 && (event.button === 0 || event.button === void 0) && event.clientX === 0 && event.clientY === 0;
84155
- return Boolean(isKeyboardInvocation);
84156
- };
84157
84279
  const isModuleEnabled = (editorOptions, moduleName) => {
84158
84280
  switch (moduleName) {
84159
84281
  case "ai":
@@ -50,6 +50,11 @@ export class SuperDoc extends EventEmitter<string | symbol, any> {
50
50
  documents: any;
51
51
  users: any[];
52
52
  };
53
+ /**
54
+ * Get the SuperDoc container element
55
+ * @returns {HTMLElement | null}
56
+ */
57
+ get element(): HTMLElement | null;
53
58
  app: any;
54
59
  pinia: any;
55
60
  superdocStore: any;
@@ -1 +1 @@
1
- {"version":3,"file":"SuperDoc.d.ts","sourceRoot":"","sources":["../../src/core/SuperDoc.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SuperDoc.d.ts","sourceRoot":"","sources":["../../src/core/SuperDoc.js"],"names":[],"mappings":"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"}
@@ -185,9 +185,9 @@ export type Config = {
185
185
  */
186
186
  superdocId?: string;
187
187
  /**
188
- * The selector to mount the SuperDoc into
188
+ * The selector or element to mount the SuperDoc into
189
189
  */
190
- selector: string;
190
+ selector: string | HTMLElement;
191
191
  /**
192
192
  * The mode of the document
193
193
  */
@@ -201,9 +201,9 @@ export type Config = {
201
201
  */
202
202
  document?: any | string | File | Blob;
203
203
  /**
204
- * The documents to load
204
+ * The documents to load -> Soon to be deprecated
205
205
  */
206
- documents: Array<Document>;
206
+ documents?: Array<Document>;
207
207
  /**
208
208
  * The current user of this SuperDoc
209
209
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/types/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/types/index.js"],"names":[],"mappings":"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"}
@@ -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-BcqEfCTg.js";
3
- import { _ as _export_sfc } from "./chunks/editor-BC2sSIVa.js";
2
+ import { T as TextSelection } from "./chunks/converter-DBwwYo1I.js";
3
+ import { _ as _export_sfc } from "./chunks/editor-W3rw5KHF.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 = {}) {