@harbour-enterprises/superdoc 0.21.0-next.6 → 0.21.0-next.8

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 (38) hide show
  1. package/dist/chunks/{PdfViewer-BrJSIJjF.cjs → PdfViewer-BR9iwva-.cjs} +1 -1
  2. package/dist/chunks/{PdfViewer-CJAEtjUD.es.js → PdfViewer-CwVW7MVJ.es.js} +1 -1
  3. package/dist/chunks/{index-NiOytIlp.cjs → index-BNA5J__D.cjs} +2 -2
  4. package/dist/chunks/{index-BDfKQQiO.es.js → index-CjQDYBP2.es.js} +2 -2
  5. package/dist/chunks/{super-editor.es-iVTtEcot.es.js → super-editor.es-C5dhT0uU.es.js} +98 -911
  6. package/dist/chunks/{super-editor.es-DmkkMNKU.cjs → super-editor.es-Ct59l8tt.cjs} +98 -911
  7. package/dist/core/types/index.d.ts.map +1 -1
  8. package/dist/style.css +11 -11
  9. package/dist/super-editor/ai-writer.es.js +2 -2
  10. package/dist/super-editor/chunks/{converter-CYC0HBJe.js → converter-DYAHhSrg.js} +65 -26
  11. package/dist/super-editor/chunks/{docx-zipper-DlwteneT.js → docx-zipper-BDbCmfbE.js} +1 -1
  12. package/dist/super-editor/chunks/{editor-BzT9rpXb.js → editor-B1W7AdgQ.js} +29 -59
  13. package/dist/super-editor/chunks/{toolbar-BnTHDmlP.js → toolbar-CCvglB_X.js} +7 -6
  14. package/dist/super-editor/converter.es.js +1 -1
  15. package/dist/super-editor/docx-zipper.es.js +2 -2
  16. package/dist/super-editor/editor.es.js +3 -3
  17. package/dist/super-editor/file-zipper.es.js +1 -1
  18. package/dist/super-editor/src/components/slash-menu/contextmenu-helpers.d.ts +1 -0
  19. package/dist/super-editor/src/core/commands/__tests__/schemaWithLists.d.ts +2 -0
  20. package/dist/super-editor/src/core/commands/__tests__/testHelpers.d.ts +4 -0
  21. package/dist/super-editor/src/core/commands/__tests__/testSchema.d.ts +2 -0
  22. package/dist/super-editor/src/core/commands/tests/commandTestUtils.d.ts +7 -0
  23. package/dist/super-editor/src/core/commands/tests/test-schema.d.ts +2 -0
  24. package/dist/super-editor/src/extensions/custom-selection/custom-selection.d.ts +1 -0
  25. package/dist/super-editor/style.css +11 -11
  26. package/dist/super-editor/super-editor.es.js +94 -878
  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 +98 -911
  33. package/dist/superdoc.umd.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/super-editor/src/extensions/noderesizer/helpers.d.ts +0 -2
  36. package/dist/super-editor/src/extensions/run-item/index.d.ts +0 -1
  37. package/dist/super-editor/src/extensions/run-item/run-item.d.ts +0 -26
  38. package/dist/super-editor/src/utils/shadow-root.d.ts +0 -12
@@ -47946,11 +47946,9 @@ const toggleHeaderFooterEditMode = ({ editor, focusedSectionEditor, isEditMode,
47946
47946
  item.editor.view.dom.setAttribute("documentmode", documentMode);
47947
47947
  });
47948
47948
  if (isEditMode) {
47949
- const pm = editor.view?.dom;
47950
- if (pm) {
47951
- pm.classList.add("header-footer-edit");
47952
- pm.setAttribute("aria-readonly", true);
47953
- }
47949
+ const pm = document.querySelector(".ProseMirror");
47950
+ pm.classList.add("header-footer-edit");
47951
+ pm.setAttribute("aria-readonly", true);
47954
47952
  }
47955
47953
  if (focusedSectionEditor) {
47956
47954
  focusedSectionEditor.view.focus();
@@ -50562,7 +50560,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
50562
50560
  setDocumentMode(documentMode) {
50563
50561
  let cleanedMode = documentMode?.toLowerCase() || "editing";
50564
50562
  if (!this.extensionService || !this.state) return;
50565
- const pm = this.view?.dom;
50563
+ const pm = document.querySelector(".ProseMirror");
50566
50564
  if (this.options.role === "viewer") cleanedMode = "viewing";
50567
50565
  if (this.options.role === "suggester" && cleanedMode === "editing") cleanedMode = "suggesting";
50568
50566
  if (cleanedMode === "viewing") {
@@ -50792,6 +50790,8 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
50792
50790
  element.style.isolation = "isolate";
50793
50791
  proseMirror.style.outline = "none";
50794
50792
  proseMirror.style.border = "none";
50793
+ element.style.backgroundColor = "#fff";
50794
+ proseMirror.style.backgroundColor = "#fff";
50795
50795
  const { typeface, fontSizePt, fontFamilyCss } = this.converter.getDocumentDefaultStyles() ?? {};
50796
50796
  const resolvedFontFamily = fontFamilyCss || typeface;
50797
50797
  if (resolvedFontFamily) {
@@ -51534,11 +51534,9 @@ createView_fn = function(element) {
51534
51534
  isEditMode: false,
51535
51535
  documentMode: this.options.documentMode
51536
51536
  });
51537
- const pm = this.view?.dom;
51538
- if (pm) {
51539
- pm.classList.remove("header-footer-edit");
51540
- pm.setAttribute("aria-readonly", false);
51541
- }
51537
+ const pm = document.querySelector(".ProseMirror");
51538
+ pm.classList.remove("header-footer-edit");
51539
+ pm.setAttribute("aria-readonly", false);
51542
51540
  }
51543
51541
  setWordSelection(view, pos);
51544
51542
  }
@@ -53594,6 +53592,14 @@ const intToJapaneseCounting = (num) => {
53594
53592
  return result;
53595
53593
  };
53596
53594
  const CustomSelectionPluginKey = new PluginKey("CustomSelection");
53595
+ const shouldAllowNativeContextMenu = (event) => {
53596
+ if (!event) return false;
53597
+ if (event.ctrlKey || event.metaKey) {
53598
+ return true;
53599
+ }
53600
+ 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;
53601
+ return Boolean(isKeyboardInvocation);
53602
+ };
53597
53603
  const handleClickOutside = (event, editor) => {
53598
53604
  const editorElem = editor?.options?.element;
53599
53605
  if (!editorElem) return;
@@ -53655,6 +53661,9 @@ const CustomSelection = Extension.create({
53655
53661
  props: {
53656
53662
  handleDOMEvents: {
53657
53663
  contextmenu: (view, event) => {
53664
+ if (shouldAllowNativeContextMenu(event)) {
53665
+ return false;
53666
+ }
53658
53667
  event.preventDefault();
53659
53668
  const { selection } = view.state;
53660
53669
  if (!selection.empty) {
@@ -53673,6 +53682,9 @@ const CustomSelection = Extension.create({
53673
53682
  },
53674
53683
  mousedown: (view, event) => {
53675
53684
  if (event.button === 2) {
53685
+ if (shouldAllowNativeContextMenu(event)) {
53686
+ return false;
53687
+ }
53676
53688
  event.preventDefault();
53677
53689
  const { selection: selection2 } = view.state;
53678
53690
  if (!selection2.empty) {
@@ -69473,45 +69485,6 @@ const Search = Extension.create({
69473
69485
  };
69474
69486
  }
69475
69487
  });
69476
- let cachedShadowRootCtor;
69477
- const getShadowRootCtor = () => {
69478
- if (cachedShadowRootCtor === void 0) {
69479
- const ctor = globalThis.ShadowRoot;
69480
- cachedShadowRootCtor = typeof ctor === "function" ? ctor : null;
69481
- }
69482
- return cachedShadowRootCtor;
69483
- };
69484
- let cachedElementCtor;
69485
- const getElementCtor = () => {
69486
- if (cachedElementCtor === void 0) {
69487
- const ctor = globalThis.Element;
69488
- cachedElementCtor = typeof ctor === "function" ? ctor : null;
69489
- }
69490
- return cachedElementCtor;
69491
- };
69492
- const queryWithinRoot = (domNode, selector) => {
69493
- const shadowRoot = domNode?.shadowRoot;
69494
- if (shadowRoot && typeof shadowRoot.querySelector === "function") {
69495
- return shadowRoot.querySelector(selector);
69496
- }
69497
- const rawRoot = domNode?.getRootNode?.();
69498
- const ShadowRootCtor = getShadowRootCtor();
69499
- const isShadowRoot2 = !!ShadowRootCtor && rawRoot instanceof ShadowRootCtor;
69500
- if (isShadowRoot2 && typeof rawRoot.querySelector === "function") {
69501
- return rawRoot.querySelector(selector);
69502
- }
69503
- if (domNode && typeof domNode.querySelector === "function") {
69504
- const localMatch = domNode.querySelector(selector);
69505
- if (localMatch) return localMatch;
69506
- }
69507
- return typeof document !== "undefined" ? document.querySelector(selector) : null;
69508
- };
69509
- const findInEventPath = (event, selector) => {
69510
- if (!event || !selector) return void 0;
69511
- const path = typeof event.composedPath === "function" ? event.composedPath() : [];
69512
- const ElementCtor = getElementCtor();
69513
- return path.find((node) => ElementCtor && node instanceof ElementCtor && node.matches(selector));
69514
- };
69515
69488
  const NodeResizerKey = new PluginKey("node-resizer");
69516
69489
  const nodeResizer = (nodeNames = ["image"], editor) => {
69517
69490
  let resizeState = {
@@ -69566,19 +69539,16 @@ const nodeResizer = (nodeNames = ["image"], editor) => {
69566
69539
  view(view) {
69567
69540
  editorView = view;
69568
69541
  globalClickHandler = (event) => {
69569
- const wrapperInPath = findInEventPath(event, ".sd-editor-resizable-wrapper");
69570
- const containerInPath = findInEventPath(event, ".sd-editor-resize-container");
69571
- if (!wrapperInPath && !containerInPath) {
69542
+ if (!event.target.closest(".sd-editor-resizable-wrapper") && !event.target.closest(".sd-editor-resize-container")) {
69572
69543
  hideResizeHandles();
69573
69544
  }
69574
69545
  };
69575
69546
  document.addEventListener("click", globalClickHandler);
69576
69547
  globalMousedownHandler = (event) => {
69577
- const handle = findInEventPath(event, ".sd-editor-resize-handle");
69578
- if (handle) {
69548
+ if (event.target.closest(".sd-editor-resize-handle")) {
69579
69549
  event.preventDefault();
69580
69550
  event.stopPropagation();
69581
- startResize(editorView, event, handle);
69551
+ startResize(editorView, event, event.target);
69582
69552
  return true;
69583
69553
  }
69584
69554
  };
@@ -69595,7 +69565,7 @@ const nodeResizer = (nodeNames = ["image"], editor) => {
69595
69565
  const prevSelection = prevState.selection;
69596
69566
  if (selection.from !== prevSelection.from || selection.to !== prevSelection.to) {
69597
69567
  setTimeout(() => {
69598
- const selectedResizableWrapper = queryWithinRoot(editorView?.dom, ".sd-editor-resizable-wrapper");
69568
+ const selectedResizableWrapper = document.querySelector(".sd-editor-resizable-wrapper");
69599
69569
  if (selectedResizableWrapper) {
69600
69570
  showResizeHandles(view2, selectedResizableWrapper);
69601
69571
  } else {
@@ -79708,7 +79678,6 @@ const _sfc_main$1$1 = {
79708
79678
  const toolbarItemRefs = vue.ref([]);
79709
79679
  const props = __props;
79710
79680
  const currentItem = vue.ref(null);
79711
- const { proxy } = vue.getCurrentInstance();
79712
79681
  const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode();
79713
79682
  const isMobile = window.matchMedia("(max-width: 768px)").matches;
79714
79683
  const styleMap = {
@@ -79807,8 +79776,10 @@ const _sfc_main$1$1 = {
79807
79776
  nextButtonGroup.setAttribute("tabindex", "0");
79808
79777
  nextButtonGroup.focus();
79809
79778
  } else {
79810
- const editorDom = proxy?.$toolbar?.activeEditor?.view?.dom;
79811
- editorDom?.focus();
79779
+ const editor = document.querySelector(".ProseMirror");
79780
+ if (editor) {
79781
+ editor.focus();
79782
+ }
79812
79783
  }
79813
79784
  };
79814
79785
  const moveToPreviousButtonGroup = (e) => {
@@ -79954,7 +79925,7 @@ const _sfc_main$1$1 = {
79954
79925
  };
79955
79926
  }
79956
79927
  };
79957
- const ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1$1, [["__scopeId", "data-v-c1b3551b"]]);
79928
+ const ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1$1, [["__scopeId", "data-v-f42ec7e6"]]);
79958
79929
  const _sfc_main$f = {
79959
79930
  __name: "Toolbar",
79960
79931
  emits: ["command", "toggle", "select"],
@@ -84192,6 +84163,14 @@ function getStructureFromResolvedPos(state2, pos) {
84192
84163
  return null;
84193
84164
  }
84194
84165
  }
84166
+ const shouldBypassContextMenu = (event) => {
84167
+ if (!event) return false;
84168
+ if (event.ctrlKey || event.metaKey) {
84169
+ return true;
84170
+ }
84171
+ 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;
84172
+ return Boolean(isKeyboardInvocation);
84173
+ };
84195
84174
  const isModuleEnabled = (editorOptions, moduleName) => {
84196
84175
  switch (moduleName) {
84197
84176
  case "ai":
@@ -84566,8 +84545,7 @@ const _sfc_main$4 = {
84566
84545
  };
84567
84546
  const handleRightClick = async (event) => {
84568
84547
  const readOnly = !props.editor?.isEditable;
84569
- const isHoldingCtrl = event.ctrlKey;
84570
- if (readOnly || isHoldingCtrl) {
84548
+ if (readOnly || shouldBypassContextMenu(event)) {
84571
84549
  return;
84572
84550
  }
84573
84551
  event.preventDefault();
@@ -84728,12 +84706,10 @@ const _sfc_main$4 = {
84728
84706
  }
84729
84707
  };
84730
84708
  function adjustPaginationBreaks(editorElem, editor) {
84731
- const hostElement = editorElem.value;
84732
- if (!hostElement || !editor?.value?.options?.scale) return;
84709
+ if (!editorElem.value || !editor?.value?.options?.scale) return;
84733
84710
  const zoom = editor.value.options.scale;
84734
- const bounds = hostElement.getBoundingClientRect();
84735
- const searchRoot = hostElement.shadowRoot || hostElement;
84736
- const breakNodes = searchRoot.querySelectorAll(".pagination-break-wrapper");
84711
+ const bounds = editorElem.value.getBoundingClientRect();
84712
+ const breakNodes = editorElem.value.querySelectorAll(".pagination-break-wrapper");
84737
84713
  let firstLeft;
84738
84714
  breakNodes.forEach((node) => {
84739
84715
  const nodeBounds = node.getBoundingClientRect();
@@ -85024,821 +85000,6 @@ const _sfc_main$2 = {
85024
85000
  };
85025
85001
  const GenericPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-cbddcc0f"]]);
85026
85002
  const BlankDOCX = "data:application/octet-stream;base64,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";
85027
- const editorStyles = `:root {
85028
- /* CSS variables */
85029
- }
85030
- .sd-input-active {
85031
- border: 1px solid #1355ff !important;
85032
- }
85033
- .sd-super-editor-html .ProseMirror {
85034
- border: 1px solid #d9d9d9;
85035
- outline: none;
85036
- border-radius: 8px;
85037
- height: 100%;
85038
- width: 100%;
85039
- outline: none;
85040
- }
85041
- a {
85042
- text-decoration: auto;
85043
- }
85044
- /**
85045
- * Basic ProseMirror styles.
85046
- * https://github.com/ProseMirror/prosemirror-view/blob/master/style/prosemirror.css
85047
- */
85048
- .ProseMirror {
85049
- position: relative;
85050
- }
85051
- .ProseMirror {
85052
- word-wrap: break-word;
85053
- white-space: pre-wrap;
85054
- white-space: break-spaces;
85055
- -webkit-font-variant-ligatures: none;
85056
- font-variant-ligatures: none;
85057
- font-feature-settings: 'liga' 0; /* the above doesn't seem to work in Edge */
85058
- }
85059
- .ProseMirror pre {
85060
- white-space: pre-wrap;
85061
- }
85062
- .ProseMirror ol,
85063
- .ProseMirror ul {
85064
- margin-block-start: 0;
85065
- margin-block-end: 0;
85066
- margin-inline-start: 0;
85067
- margin-inline-end: 0;
85068
- }
85069
- .ProseMirror ol,
85070
- .ProseMirror ul {
85071
- padding-inline-start: 0;
85072
- padding-left: 0;
85073
- list-style: none;
85074
- }
85075
- .ProseMirror li::marker {
85076
- content: none;
85077
- }
85078
- .ProseMirror li::marker {
85079
- padding: 0;
85080
- margin: 0;
85081
- }
85082
- .ProseMirror li > p {
85083
- margin: 0;
85084
- padding: 0;
85085
- display: inline-block;
85086
- }
85087
- .ProseMirror.header-footer-edit > p img,
85088
- .ProseMirror.header-footer-edit > p a,
85089
- .ProseMirror.header-footer-edit li img,
85090
- .ProseMirror.header-footer-edit li a,
85091
- .ProseMirror.header-footer-edit span img,
85092
- .ProseMirror.header-footer-edit span a {
85093
- opacity: 1;
85094
- }
85095
- .ProseMirror.header-footer-edit .pagination-break-wrapper {
85096
- color: initial !important;
85097
- }
85098
- .ProseMirror.header-footer-edit .pagination-break-wrapper span {
85099
- color: initial !important;
85100
- }
85101
- .ProseMirror.header-footer-edit .pagination-break-wrapper img,
85102
- .ProseMirror.header-footer-edit .pagination-break-wrapper a {
85103
- opacity: 1;
85104
- }
85105
- .pagination-section-header div[contenteditable='false'] {
85106
- user-select: none;
85107
- }
85108
- /**
85109
- * Hide marker for indented lists.
85110
- * If a list-item contains a list but doesn't contain a "p" tag with text.
85111
- */
85112
- .ProseMirror ol {
85113
- margin: 0;
85114
- }
85115
- .ProseMirror li:has(> ul:first-child, > ol:first-child):not(:has(> p)) {
85116
- list-style-type: none;
85117
- }
85118
- .ProseMirror li:has(> ul:first-child, > ol:first-child):not(:has(> p))::marker {
85119
- content: '';
85120
- }
85121
- .ProseMirror-hideselection *::selection {
85122
- background: transparent;
85123
- }
85124
- .ProseMirror-hideselection *::-moz-selection {
85125
- background: transparent;
85126
- }
85127
- .ProseMirror-hideselection * {
85128
- caret-color: transparent;
85129
- }
85130
- /* See https://github.com/ProseMirror/prosemirror/issues/1421#issuecomment-1759320191 */
85131
- .ProseMirror [draggable][contenteditable='false'] {
85132
- user-select: text;
85133
- }
85134
- .ProseMirror-selectednode {
85135
- outline: 2px solid #8cf;
85136
- }
85137
- /* Make sure li selections wrap around markers */
85138
- li.ProseMirror-selectednode {
85139
- outline: none;
85140
- }
85141
- li.ProseMirror-selectednode:after {
85142
- content: '';
85143
- position: absolute;
85144
- left: -32px;
85145
- right: -2px;
85146
- top: -2px;
85147
- bottom: -2px;
85148
- border: 2px solid #8cf;
85149
- pointer-events: none;
85150
- }
85151
- .ProseMirror img {
85152
- height: auto;
85153
- max-width: 100%;
85154
- }
85155
- /* Protect against generic img rules */
85156
- img.ProseMirror-separator {
85157
- display: inline !important;
85158
- border: none !important;
85159
- margin: 0 !important;
85160
- }
85161
- .ProseMirror .sd-editor-tab {
85162
- display: inline-block;
85163
- vertical-align: text-bottom;
85164
- }
85165
- .ProseMirror u .sd-editor-tab:not(.pagination-inner .sd-editor-tab) {
85166
- white-space: pre;
85167
- border-bottom: 1px solid #000;
85168
- margin-bottom: 1.5px;
85169
- }
85170
- /*
85171
- Tables
85172
- https://github.com/ProseMirror/prosemirror-tables/blob/master/style/tables.css
85173
- https://github.com/ProseMirror/prosemirror-tables/blob/master/demo/index.html
85174
- */
85175
- .ProseMirror.resize-cursor {
85176
- cursor: ew-resize;
85177
- cursor: col-resize;
85178
- }
85179
- .ProseMirror .tableWrapper {
85180
- --table-border-width: 1px;
85181
- --offset: 2px;
85182
-
85183
- overflow-x: auto;
85184
- scrollbar-width: thin;
85185
- overflow: hidden;
85186
-
85187
- /*
85188
- The border width does not need to be multiplied by two,
85189
- for tables it works differently. */
85190
- width: calc(100% + (var(--table-border-width) + var(--offset)));
85191
- }
85192
- .ProseMirror table {
85193
- border-collapse: collapse;
85194
- border-spacing: 0;
85195
- table-layout: fixed;
85196
- margin: 0;
85197
- /* width: 100%; */
85198
- }
85199
- .ProseMirror tr {
85200
- position: relative;
85201
- }
85202
- .ProseMirror td,
85203
- .ProseMirror th {
85204
- min-width: 1em;
85205
- position: relative;
85206
- vertical-align: top;
85207
- box-sizing: border-box;
85208
- overflow-wrap: anywhere;
85209
- }
85210
- .ProseMirror th {
85211
- font-weight: bold;
85212
- text-align: left;
85213
- }
85214
- .ProseMirror table .column-resize-handle {
85215
- position: absolute;
85216
- right: -2px;
85217
- top: 0;
85218
- bottom: -2px; /* 0 */
85219
- width: 4px;
85220
- z-index: 20;
85221
- background-color: #adf;
85222
- pointer-events: none;
85223
- }
85224
- .ProseMirror table .selectedCell:after {
85225
- position: absolute;
85226
- content: '';
85227
- left: 0;
85228
- right: 0;
85229
- top: 0;
85230
- bottom: 0;
85231
- background: rgba(200, 200, 255, 0.4);
85232
- pointer-events: none;
85233
- z-index: 2;
85234
- }
85235
- /* Tables - end */
85236
- /* Track changes */
85237
- .ProseMirror .track-insert-dec,
85238
- .ProseMirror .track-delete-dec,
85239
- .ProseMirror .track-format-dec {
85240
- pointer-events: none;
85241
- }
85242
- .ProseMirror .track-insert-dec.hidden,
85243
- .ProseMirror .track-delete-dec.hidden {
85244
- display: none;
85245
- }
85246
- .ProseMirror .track-insert-dec.highlighted {
85247
- border-top: 1px dashed #00853d;
85248
- border-bottom: 1px dashed #00853d;
85249
- background-color: #399c7222;
85250
- }
85251
- .ProseMirror .track-delete-dec.highlighted {
85252
- border-top: 1px dashed #cb0e47;
85253
- border-bottom: 1px dashed #cb0e47;
85254
- background-color: #cb0e4722;
85255
- text-decoration: line-through;
85256
- text-decoration-thickness: 2px;
85257
- }
85258
- .ProseMirror .track-format-dec.highlighted {
85259
- border-bottom: 2px solid gold;
85260
- }
85261
- .ProseMirror .track-delete-widget {
85262
- visibility: hidden;
85263
- }
85264
- /* Track changes - end */
85265
- /* Collaboration cursors */
85266
- .ProseMirror > .ProseMirror-yjs-cursor:first-child {
85267
- margin-top: 16px;
85268
- }
85269
- .ProseMirror-yjs-cursor {
85270
- position: relative;
85271
- margin-left: -1px;
85272
- margin-right: -1px;
85273
- border-left: 1px solid black;
85274
- border-right: 1px solid black;
85275
- border-color: orange;
85276
- word-break: normal;
85277
- pointer-events: none;
85278
- }
85279
- .ProseMirror-yjs-cursor > div {
85280
- position: absolute;
85281
- top: -1.05em;
85282
- left: -1px;
85283
- font-size: 13px;
85284
- background-color: rgb(250, 129, 0);
85285
- font-family: serif;
85286
- font-style: normal;
85287
- font-weight: normal;
85288
- line-height: normal;
85289
- user-select: none;
85290
- color: white;
85291
- padding-left: 2px;
85292
- padding-right: 2px;
85293
- white-space: nowrap;
85294
- }
85295
- /* Collaboration cursors - end */
85296
- /* Image placeholder */
85297
- .ProseMirror placeholder {
85298
- display: inline;
85299
- border: 1px solid #ccc;
85300
- color: #ccc;
85301
- }
85302
- .ProseMirror placeholder:after {
85303
- content: '☁';
85304
- font-size: 200%;
85305
- line-height: 0.1;
85306
- font-weight: bold;
85307
- }
85308
- /* Gapcursor */
85309
- .ProseMirror-gapcursor {
85310
- display: none;
85311
- pointer-events: none;
85312
- position: absolute;
85313
- margin: 0;
85314
- }
85315
- .ProseMirror-gapcursor:after {
85316
- content: '';
85317
- display: block;
85318
- position: absolute;
85319
- top: -2px;
85320
- width: 20px;
85321
- border-top: 1px solid black;
85322
- animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
85323
- }
85324
- @keyframes ProseMirror-cursor-blink {
85325
- to {
85326
- visibility: hidden;
85327
- }
85328
- }
85329
- .ProseMirror-focused .ProseMirror-gapcursor {
85330
- display: block;
85331
- }
85332
- .ProseMirror div[data-type='contentBlock'] {
85333
- position: absolute;
85334
- outline: none;
85335
- user-select: none;
85336
- z-index: -1;
85337
- }
85338
- .ProseMirror div[data-horizontal-rule='true'] {
85339
- margin-top: auto;
85340
- align-self: flex-end;
85341
- }
85342
- .sd-editor-dropcap {
85343
- float: left;
85344
- display: flex;
85345
- align-items: baseline;
85346
- margin-top: -5px;
85347
- }
85348
- .ProseMirror-search-match {
85349
- background-color: #ffff0054;
85350
- }
85351
- .ProseMirror-active-search-match {
85352
- background-color: #ff6a0054;
85353
- }
85354
- .ProseMirror span.sd-custom-selection::selection {
85355
- background: transparent;
85356
- }
85357
- .sd-custom-selection {
85358
- background-color: #d9d9d9;
85359
- border-radius: 0.1em;
85360
- }
85361
- .superdoc-toolbar svg {
85362
- width: 100%;
85363
- height: 100%;
85364
- display: block;
85365
- fill: currentColor;
85366
- }
85367
- .superdoc-toolbar svg path {
85368
- stroke: currentColor;
85369
- }
85370
- .sd-editor-toolbar-dropdown .n-dropdown-option .dropdown-select-icon {
85371
- display: flex;
85372
- width: 12px;
85373
- height: 12px;
85374
- }
85375
- /* Custom toolbar styling */
85376
- /* AI button icon styling with gradient */
85377
- .toolbar-icon__icon--ai {
85378
- position: relative;
85379
- z-index: 1;
85380
- }
85381
- .toolbar-icon__icon--ai svg {
85382
- fill: transparent;
85383
- }
85384
- .toolbar-icon__icon--ai::before {
85385
- content: '';
85386
- position: absolute;
85387
- top: 0;
85388
- left: 0;
85389
- right: 0;
85390
- bottom: 0;
85391
- z-index: -1;
85392
- background: linear-gradient(
85393
- 270deg,
85394
- rgba(218, 215, 118, 0.5) -20%,
85395
- rgba(191, 100, 100, 1) 30%,
85396
- rgba(77, 82, 217, 1) 60%,
85397
- rgb(255, 219, 102) 150%
85398
- );
85399
- -webkit-mask: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.7-53.3L160 80l-53.3-26.7L80 0 53.3 53.3 0 80l53.3 26.7L80 160zm352 128l-26.7 53.3L352 368l53.3 26.7L432 448l26.7-53.3L512 368l-53.3-26.7L432 288zm70.6-193.8L417.8 9.4C411.5 3.1 403.3 0 395.2 0c-8.2 0-16.4 3.1-22.6 9.4L9.4 372.5c-12.5 12.5-12.5 32.8 0 45.3l84.9 84.9c6.3 6.3 14.4 9.4 22.6 9.4 8.2 0 16.4-3.1 22.6-9.4l363.1-363.2c12.5-12.5 12.5-32.8 0-45.2zM359.5 203.5l-50.9-50.9 86.6-86.6 50.9 50.9-86.6 86.6z'/></svg>")
85400
- center / contain no-repeat;
85401
- mask: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.7-53.3L160 80l-53.3-26.7L80 0 53.3 53.3 0 80l53.3 26.7L80 160zm352 128l-26.7 53.3L352 368l53.3 26.7L432 448l26.7-53.3L512 368l-53.3-26.7L432 288zm70.6-193.8L417.8 9.4C411.5 3.1 403.3 0 395.2 0c-8.2 0-16.4 3.1-22.6 9.4L9.4 372.5c-12.5 12.5-12.5 32.8 0 45.3l84.9 84.9c6.3 6.3 14.4 9.4 22.6 9.4 8.2 0 16.4-3.1 22.6-9.4l363.1-363.2c12.5-12.5 12.5-32.8 0-45.2zM359.5 203.5l-50.9-50.9 86.6-86.6 50.9 50.9-86.6 86.6z'/></svg>")
85402
- center / contain no-repeat;
85403
- filter: brightness(1.2);
85404
- transition: filter 0.2s ease;
85405
- }
85406
- .toolbar-icon__icon--ai:hover::before {
85407
- filter: brightness(1.3);
85408
- }
85409
- /* AI text appear animation */
85410
- @keyframes aiTextAppear {
85411
- from {
85412
- opacity: 0;
85413
- transform: translateY(5px);
85414
- }
85415
- to {
85416
- opacity: 1;
85417
- transform: translateY(0);
85418
- }
85419
- }
85420
- .sd-ai-text-appear {
85421
- display: inline;
85422
- opacity: 0;
85423
- animation: aiTextAppear 0.7s ease-out forwards;
85424
- animation-fill-mode: both;
85425
- will-change: opacity, transform;
85426
- /* Ensure each mark is treated as a separate animation context */
85427
- contain: content;
85428
- }
85429
- .sd-ai-loader {
85430
- display: flex;
85431
- justify-content: flex-start;
85432
- }
85433
- .sd-ai-loader > img {
85434
- width: fit-content;
85435
- height: 40px;
85436
- }
85437
- @keyframes ai-pulse {
85438
- 0% {
85439
- background-color: rgba(99, 102, 241, 0.1);
85440
- }
85441
- 50% {
85442
- background-color: rgba(99, 102, 241, 0.375);
85443
- }
85444
- 100% {
85445
- background-color: rgba(99, 102, 241, 0.1);
85446
- }
85447
- }
85448
- .sd-ai-highlight-pulse {
85449
- animation: ai-pulse 1.5s ease-in-out infinite;
85450
- }
85451
- .sd-editor-auto-page-number,
85452
- .sd-editor-auto-total-pages {
85453
- transition: all 250ms ease;
85454
- border-bottom: 1px solid #9a9a9a;
85455
- cursor: not-allowed;
85456
- }
85457
- .sd-editor-auto-page-number:hover,
85458
- .sd-editor-auto-total-pages:hover {
85459
- border-bottom-color: #4f4f4f;
85460
- }
85461
- .sd-editor-auto-page-number-content {
85462
- pointer-events: none;
85463
- }
85464
- .ProseMirror.view-mode .sd-editor-auto-page-number,
85465
- .ProseMirror.view-mode .sd-editor-auto-total-pages {
85466
- border: none;
85467
- }
85468
- :root {
85469
- --sd-editor-separator-height: 18px;
85470
- }
85471
- .pagination-section-header {
85472
- cursor: default;
85473
- }
85474
- /* To not inherit styles from the wrapper paragraph */
85475
- .pagination-section-header p {
85476
- text-align: initial;
85477
- }
85478
- .pagination-section-footer {
85479
- position: relative;
85480
- width: 100%;
85481
- min-width: 100%;
85482
- display: flex;
85483
- flex-direction: column;
85484
- justify-content: flex-end;
85485
- cursor: default;
85486
- }
85487
- /* To not inherit styles from the wrapper paragraph */
85488
- .pagination-section-footer p {
85489
- text-align: initial;
85490
- }
85491
- .pagination-break-wrapper {
85492
- width: 100%;
85493
- margin: 0;
85494
- padding: 0;
85495
- cursor: default;
85496
- position: relative;
85497
- }
85498
- .pagination-separator {
85499
- position: relative;
85500
- display: block;
85501
- height: var(--sd-editor-separator-height);
85502
- min-height: var(--sd-editor-separator-height);
85503
- min-width: 100%;
85504
- width: 100%;
85505
- border-top: 1px solid #dbdbdb;
85506
- border-bottom: 1px solid #dbdbdb;
85507
- cursor: default;
85508
- }
85509
- .pagination-separator--table {
85510
- border: 0;
85511
- }
85512
- .pagination-separator-floating {
85513
- position: absolute;
85514
- height: var(--sd-editor-separator-height);
85515
- border-top: 1px solid #dbdbdb;
85516
- border-bottom: 1px solid #dbdbdb;
85517
- pointer-events: none;
85518
- }
85519
- .pagination-inner {
85520
- position: absolute;
85521
- top: 0;
85522
- left: 0;
85523
- display: flex;
85524
- flex-direction: column;
85525
- background-color: white;
85526
- }
85527
- /**
85528
- Workaround to display pagination in footer
85529
- on the right if it is inside shape textbox.
85530
- */
85531
- .pagination-section-footer .sd-editor-shape-container:has([data-id='auto-page-number'], [data-id='auto-total-pages']) {
85532
- margin-left: auto;
85533
- }
85534
- .pagination-section-header img[contenteditable='false'],
85535
- .pagination-section-footer img[contenteditable='false'] {
85536
- pointer-events: none;
85537
- }
85538
- .pagination-break-wrapper {
85539
- font-weight: normal;
85540
- font-style: normal;
85541
- color: initial;
85542
- }
85543
- /* TODO: This is going to be enabled again */
85544
- /* .pagination-section-header div[contenteditable="false"]:not([documentmode="viewing"]),
85545
- .pagination-section-footer div[contenteditable="false"]:not([documentmode="viewing"]) {
85546
- opacity: 0.5;
85547
- } */
85548
- .sd-editor-popover {
85549
- background-color: #fff;
85550
- border-radius: 8px;
85551
- -webkit-box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
85552
- -moz-box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
85553
- box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
85554
- padding: 0;
85555
- width: auto;
85556
- height: auto;
85557
- font-size: 14px;
85558
- color: #333;
85559
- z-index: 1000;
85560
- }
85561
- .sd-editor-popover .popover-header {
85562
- font-weight: bold;
85563
- margin-bottom: 8px;
85564
- }
85565
- .tippy-box[data-theme~='sd-editor-popover'] {
85566
- background-color: #fff;
85567
- border-radius: 8px;
85568
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
85569
- border: none !important;
85570
- padding: 0 !important;
85571
- }
85572
- .tippy-box[data-theme~='sd-editor-popover'] .tippy-arrow {
85573
- color: #fff;
85574
- border: 1px solid #dbdbdb;
85575
- }
85576
- .tippy-box[data-theme~='sd-editor-popover'] .tippy-content {
85577
- padding: 0;
85578
- }
85579
- .sd-editor-placeholder::before {
85580
- content: attr(data-placeholder);
85581
- color: #aaa;
85582
- pointer-events: none;
85583
- display: block;
85584
- height: 0;
85585
- }
85586
- .sd-editor-mention {
85587
- background-color: #1355ff15;
85588
- color: #222;
85589
- font-weight: 400;
85590
- border-radius: 3px;
85591
- padding: 0 5px;
85592
- cursor: default;
85593
- display: inline-block;
85594
- box-sizing: border-box;
85595
- }
85596
- .sd-editor-comment-highlight {
85597
- transition: background-color 250ms ease;
85598
- }
85599
- .sd-editor-comment-highlight:hover {
85600
- background-color: #1354ff55;
85601
- }
85602
- .sd-editor-comment-highlight.sd-custom-selection {
85603
- background-color: #d6c0c6 !important;
85604
- }
85605
- .sd-editor-list-item-node-view {
85606
- position: relative;
85607
- width: 100%;
85608
- }
85609
- .sd-editor-list-item-numbering {
85610
- position: absolute;
85611
- top: 0;
85612
- white-space: nowrap;
85613
- user-select: none;
85614
- pointer-events: auto;
85615
- text-align: right;
85616
- z-index: 1;
85617
- }
85618
- .sd-editor-list-item-content-dom {
85619
- position: relative;
85620
- min-height: inherit;
85621
- word-wrap: break-word;
85622
- }
85623
- /* temporary fix */
85624
- .sd-editor-list-item-node-view .sd-custom-selection {
85625
- font-size: inherit !important;
85626
- }
85627
- /* Resize handles container */
85628
- .sd-editor-resize-container {
85629
- position: absolute;
85630
- pointer-events: none;
85631
- z-index: 11;
85632
- }
85633
- /* Resize handles */
85634
- .sd-editor-resize-handle {
85635
- position: absolute;
85636
- width: 12px;
85637
- height: 12px;
85638
- background-color: #4dabf7;
85639
- border: 2px solid #fff;
85640
- border-radius: 50%;
85641
- box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
85642
- pointer-events: auto;
85643
- transition: all 0.1s ease;
85644
- }
85645
- .sd-editor-resize-handle:hover {
85646
- background-color: #228be6;
85647
- transform: scale(1.1);
85648
- box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
85649
- }
85650
- /* Handle positions */
85651
- .sd-editor-resize-handle-nw {
85652
- top: -6px;
85653
- left: -6px;
85654
- cursor: nwse-resize;
85655
- }
85656
- .sd-editor-resize-handle-ne {
85657
- top: -6px;
85658
- right: -6px;
85659
- cursor: nesw-resize;
85660
- }
85661
- .sd-editor-resize-handle-sw {
85662
- bottom: -6px;
85663
- left: -6px;
85664
- cursor: nesw-resize;
85665
- }
85666
- .sd-editor-resize-handle-se {
85667
- bottom: -6px;
85668
- right: -6px;
85669
- cursor: nwse-resize;
85670
- }
85671
- /* Hide handles when editor loses focus */
85672
- .ProseMirror:not(.ProseMirror-focused) .sd-editor-resize-container {
85673
- display: none;
85674
- }
85675
- /* Smooth transitions for resizing */
85676
- .sd-editor-resizable-wrapper * {
85677
- transition: none;
85678
- }
85679
- .sd-editor-resizable-wrapper *:not([style*='width']) {
85680
- transition: all 0.2s ease;
85681
- }
85682
- /* Resize feedback indicator */
85683
- .sd-editor-resizable-wrapper::after {
85684
- content: 'Drag corners to resize';
85685
- position: absolute;
85686
- bottom: -25px;
85687
- left: 50%;
85688
- transform: translateX(-50%);
85689
- background-color: rgba(77, 171, 247, 0.9);
85690
- color: white;
85691
- font-size: 11px;
85692
- padding: 4px 8px;
85693
- border-radius: 4px;
85694
- white-space: nowrap;
85695
- pointer-events: none;
85696
- opacity: 0;
85697
- transition: opacity 0.3s ease;
85698
- z-index: 12;
85699
- }
85700
- .sd-editor-resizable-wrapper:hover::after {
85701
- opacity: 1;
85702
- }
85703
- .sd-document-section-block {
85704
- background-color: #fafafa;
85705
- border: 1px solid #ababab;
85706
- border-radius: 4px;
85707
- position: relative;
85708
- }
85709
- .sd-document-section-block-info {
85710
- position: absolute;
85711
- top: -19px;
85712
- left: -1px;
85713
- max-width: 100px;
85714
- min-width: 0;
85715
- height: 18px;
85716
- border: 1px solid #ababab;
85717
- border-bottom: none;
85718
- border-radius: 6px 6px 0 0;
85719
- padding: 0 8px;
85720
- align-items: center;
85721
- font-size: 10px;
85722
- display: none;
85723
- z-index: 100;
85724
- background-color: #fafafa;
85725
- }
85726
- .sd-document-section-block:hover {
85727
- border-radius: 0 4px 4px 4px;
85728
- }
85729
- .sd-document-section-block:hover .sd-document-section-block-info {
85730
- display: flex;
85731
- align-items: center;
85732
- }
85733
- .sd-document-section-block-info span {
85734
- max-width: 100%;
85735
- overflow: hidden;
85736
- white-space: nowrap;
85737
- text-overflow: ellipsis;
85738
- }
85739
- .sd-structured-content,
85740
- .sd-structured-content-block {
85741
- padding: 1px;
85742
- box-sizing: border-box;
85743
- border-radius: 4px;
85744
- border: 1px solid #629be7;
85745
- position: relative;
85746
- }
85747
- .sd-structured-content-draggable {
85748
- font-size: 10px;
85749
- align-items: center;
85750
- justify-content: center;
85751
- position: absolute;
85752
- left: 2px;
85753
- bottom: 100%;
85754
- width: calc(100% - 4px);
85755
- max-width: 110px;
85756
- min-width: 0;
85757
- height: 18px;
85758
- padding: 0 4px;
85759
- border: 1px solid #629be7;
85760
- border-bottom: none;
85761
- border-radius: 6px 6px 0 0;
85762
- background-color: #629be7dd;
85763
- z-index: 10;
85764
- cursor: grab;
85765
- display: none;
85766
- }
85767
- .sd-structured-content-draggable span {
85768
- max-width: 100%;
85769
- overflow: hidden;
85770
- white-space: nowrap;
85771
- text-overflow: ellipsis;
85772
- }
85773
- .sd-structured-content:hover .sd-structured-content-draggable,
85774
- .sd-structured-content-block:hover .sd-structured-content-draggable {
85775
- display: inline-flex;
85776
- }
85777
- `;
85778
- let cachedStyleSheet = null;
85779
- const defaultEditorStyles = editorStyles;
85780
- let shadowEditorStyles = defaultEditorStyles;
85781
- const supportsConstructableStylesheets = () => {
85782
- const DocumentCtor = (
85783
- /** @type {typeof Document | undefined} */
85784
- globalThis.Document
85785
- );
85786
- const CSSStyleSheetCtor = (
85787
- /** @type {typeof CSSStyleSheet | undefined} */
85788
- globalThis.CSSStyleSheet
85789
- );
85790
- if (!DocumentCtor || !CSSStyleSheetCtor) return false;
85791
- const documentPrototype = DocumentCtor.prototype;
85792
- const styleSheetPrototype = CSSStyleSheetCtor.prototype;
85793
- return !!documentPrototype && "adoptedStyleSheets" in documentPrototype && !!styleSheetPrototype && typeof styleSheetPrototype.replaceSync === "function";
85794
- };
85795
- const ensureStyleSheet = (root2) => {
85796
- if (!root2 || !shadowEditorStyles) return;
85797
- if (supportsConstructableStylesheets()) {
85798
- if (!cachedStyleSheet) {
85799
- const CSSStyleSheetCtor = (
85800
- /** @type {typeof CSSStyleSheet} */
85801
- globalThis.CSSStyleSheet
85802
- );
85803
- cachedStyleSheet = new CSSStyleSheetCtor();
85804
- cachedStyleSheet.replaceSync(shadowEditorStyles);
85805
- }
85806
- const sheets = Array.isArray(root2.adoptedStyleSheets) ? root2.adoptedStyleSheets : [];
85807
- if (!sheets.includes(cachedStyleSheet)) {
85808
- root2.adoptedStyleSheets = [...sheets, cachedStyleSheet];
85809
- }
85810
- return;
85811
- }
85812
- const doc2 = (
85813
- /** @type {Document | undefined} */
85814
- globalThis.document
85815
- );
85816
- if (!doc2 || typeof root2.querySelector !== "function") return;
85817
- if (!root2.querySelector("style[data-super-editor-styles]")) {
85818
- const styleEl = doc2.createElement("style");
85819
- styleEl.setAttribute("data-super-editor-styles", "");
85820
- styleEl.textContent = shadowEditorStyles;
85821
- root2.appendChild(styleEl);
85822
- }
85823
- };
85824
- const ensureEditorShadowRoot = (hostElement) => {
85825
- const doc2 = (
85826
- /** @type {Document | undefined} */
85827
- globalThis.document
85828
- );
85829
- if (!hostElement || !doc2 || typeof hostElement.attachShadow !== "function") {
85830
- return { root: null, mount: null };
85831
- }
85832
- const root2 = hostElement.shadowRoot || hostElement.attachShadow({ mode: "open" });
85833
- ensureStyleSheet(root2);
85834
- let mount2 = root2.querySelector(".sd-editor-mount");
85835
- if (!mount2) {
85836
- mount2 = doc2.createElement("div");
85837
- mount2.className = "sd-editor-mount";
85838
- root2.appendChild(mount2);
85839
- }
85840
- return { root: root2, mount: mount2 };
85841
- };
85842
85003
  const _hoisted_1$1 = { class: "super-editor-container" };
85843
85004
  const _hoisted_2 = {
85844
85005
  key: 1,
@@ -85877,7 +85038,6 @@ const _sfc_main$1 = {
85877
85038
  const message = useMessage();
85878
85039
  const editorWrapper = vue.ref(null);
85879
85040
  const editorElem = vue.ref(null);
85880
- const editorMountPoint = vue.shallowRef(null);
85881
85041
  const fileSource = vue.ref(null);
85882
85042
  const popoverControls = vue.reactive({
85883
85043
  visible: false,
@@ -85966,15 +85126,9 @@ const _sfc_main$1 = {
85966
85126
  return extensions;
85967
85127
  };
85968
85128
  const initEditor = async ({ content, media = {}, mediaFiles = {}, fonts = {} } = {}) => {
85969
- if (!editorElem.value) return;
85970
- const { mount: mount2 } = ensureEditorShadowRoot(editorElem.value);
85971
- editorMountPoint.value = mount2;
85972
- if (editorMountPoint.value) {
85973
- editorMountPoint.value.innerHTML = "";
85974
- }
85975
85129
  editor.value = new Editor({
85976
85130
  mode: "docx",
85977
- element: editorMountPoint.value || editorElem.value,
85131
+ element: editorElem.value,
85978
85132
  fileSource: fileSource.value,
85979
85133
  extensions: getExtensions(),
85980
85134
  externalExtensions: props.options.externalExtensions,
@@ -86021,12 +85175,11 @@ const _sfc_main$1 = {
86021
85175
  };
86022
85176
  const handleSuperEditorClick = (event) => {
86023
85177
  emit("editor-click", { editor: editor.value });
86024
- const pmElement = editor.value?.view?.dom;
85178
+ let pmElement = editorElem.value?.querySelector(".ProseMirror");
86025
85179
  if (!pmElement || !editor.value) {
86026
85180
  return;
86027
85181
  }
86028
- const eventPath = event.composedPath?.() || [];
86029
- const isInsideEditor = eventPath.includes(pmElement);
85182
+ let isInsideEditor = pmElement.contains(event.target);
86030
85183
  if (!isInsideEditor && editor.value.isEditable) {
86031
85184
  editor.value.view?.focus();
86032
85185
  }
@@ -86039,9 +85192,7 @@ const _sfc_main$1 = {
86039
85192
  if (props.options?.suppressSkeletonLoader || !props.options?.collaborationProvider) editorReady.value = true;
86040
85193
  });
86041
85194
  const handleMarginClick = (event) => {
86042
- const pmElement = editor.value?.view?.dom;
86043
- const eventPath = event.composedPath?.() || [];
86044
- if (pmElement && eventPath.includes(pmElement)) return;
85195
+ if (event.target.classList.contains("ProseMirror")) return;
86045
85196
  onMarginClickCursorChange(event, editor.value);
86046
85197
  };
86047
85198
  const handleMarginChange = ({ side, value }) => {
@@ -86147,7 +85298,7 @@ const _sfc_main$1 = {
86147
85298
  };
86148
85299
  }
86149
85300
  };
86150
- const SuperEditor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3d49a1a6"]]);
85301
+ const SuperEditor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-0c36dd72"]]);
86151
85302
  const _hoisted_1 = ["innerHTML"];
86152
85303
  const _sfc_main = {
86153
85304
  __name: "SuperInput",
@@ -86177,7 +85328,6 @@ const _sfc_main = {
86177
85328
  const props = __props;
86178
85329
  const editor = vue.shallowRef();
86179
85330
  const editorElem = vue.ref(null);
86180
- const editorMountPoint = vue.shallowRef(null);
86181
85331
  const isFocused = vue.ref(false);
86182
85332
  const onTransaction = ({ editor: editor2, transaction }) => {
86183
85333
  const contents = editor2.getHTML();
@@ -86197,15 +85347,10 @@ const _sfc_main = {
86197
85347
  props.options.onTransaction = onTransaction;
86198
85348
  props.options.onFocus = onFocus;
86199
85349
  props.options.onBlur = onBlur;
86200
- const { mount: mount2 } = ensureEditorShadowRoot(editorElem.value);
86201
- editorMountPoint.value = mount2;
86202
- if (editorMountPoint.value) {
86203
- editorMountPoint.value.innerHTML = "";
86204
- }
86205
85350
  editor.value = new Editor({
86206
85351
  mode: "text",
86207
85352
  content: document.getElementById("currentContent"),
86208
- element: editorMountPoint.value || editorElem.value,
85353
+ element: editorElem.value,
86209
85354
  extensions: getRichTextExtensions(),
86210
85355
  users: props.users,
86211
85356
  ...props.options
@@ -86244,35 +85389,77 @@ const _sfc_main = {
86244
85389
  };
86245
85390
  }
86246
85391
  };
86247
- const SuperInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-23a4e794"]]);
86248
- const baseHandlers = {
86249
- ...runPropertyTranslators,
85392
+ const SuperInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4d5cff52"]]);
85393
+ const additionalHandlers = Object.freeze({
85394
+ "mc:AlternateContent": translator,
85395
+ "w:b": translator$12,
85396
+ "w:bidiVisual": translator$F,
85397
+ "w:bookmarkEnd": translator$1,
85398
+ "w:bookmarkStart": translator$2,
85399
+ "w:bottom": translator$s,
86250
85400
  "w:br": translator$16,
86251
85401
  "w:cantSplit": translator$T,
86252
85402
  "w:cnfStyle": translator$S,
85403
+ "w:color": translator$_,
86253
85404
  "w:divId": translator$R,
85405
+ "w:drawing": translator$4,
85406
+ "w:end": translator$q,
86254
85407
  "w:gridAfter": translator$Q,
86255
85408
  "w:gridBefore": translator$P,
85409
+ "w:gridCol": translator$b,
86256
85410
  "w:hidden": translator$O,
85411
+ "w:highlight": translator$15,
86257
85412
  "w:hyperlink": translator$7,
85413
+ "w:i": translator$11,
85414
+ "w:insideH": translator$o,
85415
+ "w:insideV": translator$n,
86258
85416
  "w:jc": translator$N,
85417
+ "w:left": translator$m,
86259
85418
  "w:p": translator$13,
86260
85419
  "w:r": translator$U,
85420
+ "w:rFonts": translator$Z,
86261
85421
  "w:rPr": translator$V,
85422
+ "w:rStyle": translator$Y,
85423
+ "w:right": translator$k,
86262
85424
  "w:sdt": translator$3,
85425
+ "w:shd": translator$E,
85426
+ "w:start": translator$i,
85427
+ "w:strike": translator$$,
85428
+ "w:sz": translator$X,
85429
+ "w:szCs": translator$W,
86263
85430
  "w:tab": translator$14,
85431
+ "w:tbl": translator$9,
85432
+ "w:tblBorders": translator$e,
85433
+ "w:tblCaption": translator$D,
85434
+ "w:tblCellMar": translator$d,
86264
85435
  "w:tblCellSpacing": translator$M,
85436
+ "w:tblDescription": translator$C,
85437
+ "w:tblGrid": translator$a,
86265
85438
  "w:tblHeader": translator$L,
85439
+ "w:tblInd": translator$B,
85440
+ "w:tblLayout": translator$A,
85441
+ "w:tblLook": translator$z,
85442
+ "w:tblOverlap": translator$y,
85443
+ "w:tblPr": translator$c,
85444
+ "w:tblStyle": translator$x,
85445
+ "w:tblStyleColBandSize": translator$w,
85446
+ "w:tblStyleRowBandSize": translator$v,
85447
+ "w:tblW": translator$u,
85448
+ "w:tblpPr": translator$t,
86266
85449
  "w:tc": translator$8,
85450
+ "w:top": translator$g,
86267
85451
  "w:tr": translator$G,
86268
85452
  "w:trHeight": translator$K,
86269
85453
  "w:trPr": translator$H,
85454
+ "w:u": translator$10,
86270
85455
  "w:wAfter": translator$J,
86271
85456
  "w:wBefore": translator$I,
86272
85457
  "wp:anchor": translator$6,
86273
- "wp:inline": translator$5,
86274
- "w:bookmarkStart": translator$2,
86275
- "w:bookmarkEnd": translator$1
85458
+ "wp:inline": translator$5
85459
+ });
85460
+ const baseHandlers = {
85461
+ ...runPropertyTranslators,
85462
+ ...additionalHandlers
86276
85463
  };
86277
85464
  const registeredHandlers = Object.freeze(baseHandlers);
86278
85465
  const Extensions = {