@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
@@ -47929,11 +47929,9 @@ const toggleHeaderFooterEditMode = ({ editor, focusedSectionEditor, isEditMode,
47929
47929
  item.editor.view.dom.setAttribute("documentmode", documentMode);
47930
47930
  });
47931
47931
  if (isEditMode) {
47932
- const pm = editor.view?.dom;
47933
- if (pm) {
47934
- pm.classList.add("header-footer-edit");
47935
- pm.setAttribute("aria-readonly", true);
47936
- }
47932
+ const pm = document.querySelector(".ProseMirror");
47933
+ pm.classList.add("header-footer-edit");
47934
+ pm.setAttribute("aria-readonly", true);
47937
47935
  }
47938
47936
  if (focusedSectionEditor) {
47939
47937
  focusedSectionEditor.view.focus();
@@ -50545,7 +50543,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
50545
50543
  setDocumentMode(documentMode) {
50546
50544
  let cleanedMode = documentMode?.toLowerCase() || "editing";
50547
50545
  if (!this.extensionService || !this.state) return;
50548
- const pm = this.view?.dom;
50546
+ const pm = document.querySelector(".ProseMirror");
50549
50547
  if (this.options.role === "viewer") cleanedMode = "viewing";
50550
50548
  if (this.options.role === "suggester" && cleanedMode === "editing") cleanedMode = "suggesting";
50551
50549
  if (cleanedMode === "viewing") {
@@ -50775,6 +50773,8 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
50775
50773
  element.style.isolation = "isolate";
50776
50774
  proseMirror.style.outline = "none";
50777
50775
  proseMirror.style.border = "none";
50776
+ element.style.backgroundColor = "#fff";
50777
+ proseMirror.style.backgroundColor = "#fff";
50778
50778
  const { typeface, fontSizePt, fontFamilyCss } = this.converter.getDocumentDefaultStyles() ?? {};
50779
50779
  const resolvedFontFamily = fontFamilyCss || typeface;
50780
50780
  if (resolvedFontFamily) {
@@ -51517,11 +51517,9 @@ createView_fn = function(element) {
51517
51517
  isEditMode: false,
51518
51518
  documentMode: this.options.documentMode
51519
51519
  });
51520
- const pm = this.view?.dom;
51521
- if (pm) {
51522
- pm.classList.remove("header-footer-edit");
51523
- pm.setAttribute("aria-readonly", false);
51524
- }
51520
+ const pm = document.querySelector(".ProseMirror");
51521
+ pm.classList.remove("header-footer-edit");
51522
+ pm.setAttribute("aria-readonly", false);
51525
51523
  }
51526
51524
  setWordSelection(view, pos);
51527
51525
  }
@@ -53577,6 +53575,14 @@ const intToJapaneseCounting = (num) => {
53577
53575
  return result;
53578
53576
  };
53579
53577
  const CustomSelectionPluginKey = new PluginKey("CustomSelection");
53578
+ const shouldAllowNativeContextMenu = (event) => {
53579
+ if (!event) return false;
53580
+ if (event.ctrlKey || event.metaKey) {
53581
+ return true;
53582
+ }
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);
53585
+ };
53580
53586
  const handleClickOutside = (event, editor) => {
53581
53587
  const editorElem = editor?.options?.element;
53582
53588
  if (!editorElem) return;
@@ -53638,6 +53644,9 @@ const CustomSelection = Extension.create({
53638
53644
  props: {
53639
53645
  handleDOMEvents: {
53640
53646
  contextmenu: (view, event) => {
53647
+ if (shouldAllowNativeContextMenu(event)) {
53648
+ return false;
53649
+ }
53641
53650
  event.preventDefault();
53642
53651
  const { selection } = view.state;
53643
53652
  if (!selection.empty) {
@@ -53656,6 +53665,9 @@ const CustomSelection = Extension.create({
53656
53665
  },
53657
53666
  mousedown: (view, event) => {
53658
53667
  if (event.button === 2) {
53668
+ if (shouldAllowNativeContextMenu(event)) {
53669
+ return false;
53670
+ }
53659
53671
  event.preventDefault();
53660
53672
  const { selection: selection2 } = view.state;
53661
53673
  if (!selection2.empty) {
@@ -69456,45 +69468,6 @@ const Search = Extension.create({
69456
69468
  };
69457
69469
  }
69458
69470
  });
69459
- let cachedShadowRootCtor;
69460
- const getShadowRootCtor = () => {
69461
- if (cachedShadowRootCtor === void 0) {
69462
- const ctor = globalThis.ShadowRoot;
69463
- cachedShadowRootCtor = typeof ctor === "function" ? ctor : null;
69464
- }
69465
- return cachedShadowRootCtor;
69466
- };
69467
- let cachedElementCtor;
69468
- const getElementCtor = () => {
69469
- if (cachedElementCtor === void 0) {
69470
- const ctor = globalThis.Element;
69471
- cachedElementCtor = typeof ctor === "function" ? ctor : null;
69472
- }
69473
- return cachedElementCtor;
69474
- };
69475
- const queryWithinRoot = (domNode, selector) => {
69476
- const shadowRoot = domNode?.shadowRoot;
69477
- if (shadowRoot && typeof shadowRoot.querySelector === "function") {
69478
- return shadowRoot.querySelector(selector);
69479
- }
69480
- const rawRoot = domNode?.getRootNode?.();
69481
- const ShadowRootCtor = getShadowRootCtor();
69482
- const isShadowRoot2 = !!ShadowRootCtor && rawRoot instanceof ShadowRootCtor;
69483
- if (isShadowRoot2 && typeof rawRoot.querySelector === "function") {
69484
- return rawRoot.querySelector(selector);
69485
- }
69486
- if (domNode && typeof domNode.querySelector === "function") {
69487
- const localMatch = domNode.querySelector(selector);
69488
- if (localMatch) return localMatch;
69489
- }
69490
- return typeof document !== "undefined" ? document.querySelector(selector) : null;
69491
- };
69492
- const findInEventPath = (event, selector) => {
69493
- if (!event || !selector) return void 0;
69494
- const path = typeof event.composedPath === "function" ? event.composedPath() : [];
69495
- const ElementCtor = getElementCtor();
69496
- return path.find((node) => ElementCtor && node instanceof ElementCtor && node.matches(selector));
69497
- };
69498
69471
  const NodeResizerKey = new PluginKey("node-resizer");
69499
69472
  const nodeResizer = (nodeNames = ["image"], editor) => {
69500
69473
  let resizeState = {
@@ -69549,19 +69522,16 @@ const nodeResizer = (nodeNames = ["image"], editor) => {
69549
69522
  view(view) {
69550
69523
  editorView = view;
69551
69524
  globalClickHandler = (event) => {
69552
- const wrapperInPath = findInEventPath(event, ".sd-editor-resizable-wrapper");
69553
- const containerInPath = findInEventPath(event, ".sd-editor-resize-container");
69554
- if (!wrapperInPath && !containerInPath) {
69525
+ if (!event.target.closest(".sd-editor-resizable-wrapper") && !event.target.closest(".sd-editor-resize-container")) {
69555
69526
  hideResizeHandles();
69556
69527
  }
69557
69528
  };
69558
69529
  document.addEventListener("click", globalClickHandler);
69559
69530
  globalMousedownHandler = (event) => {
69560
- const handle = findInEventPath(event, ".sd-editor-resize-handle");
69561
- if (handle) {
69531
+ if (event.target.closest(".sd-editor-resize-handle")) {
69562
69532
  event.preventDefault();
69563
69533
  event.stopPropagation();
69564
- startResize(editorView, event, handle);
69534
+ startResize(editorView, event, event.target);
69565
69535
  return true;
69566
69536
  }
69567
69537
  };
@@ -69578,7 +69548,7 @@ const nodeResizer = (nodeNames = ["image"], editor) => {
69578
69548
  const prevSelection = prevState.selection;
69579
69549
  if (selection.from !== prevSelection.from || selection.to !== prevSelection.to) {
69580
69550
  setTimeout(() => {
69581
- const selectedResizableWrapper = queryWithinRoot(editorView?.dom, ".sd-editor-resizable-wrapper");
69551
+ const selectedResizableWrapper = document.querySelector(".sd-editor-resizable-wrapper");
69582
69552
  if (selectedResizableWrapper) {
69583
69553
  showResizeHandles(view2, selectedResizableWrapper);
69584
69554
  } else {
@@ -79691,7 +79661,6 @@ const _sfc_main$1$1 = {
79691
79661
  const toolbarItemRefs = ref$1([]);
79692
79662
  const props = __props;
79693
79663
  const currentItem = ref$1(null);
79694
- const { proxy } = getCurrentInstance();
79695
79664
  const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode();
79696
79665
  const isMobile = window.matchMedia("(max-width: 768px)").matches;
79697
79666
  const styleMap = {
@@ -79790,8 +79759,10 @@ const _sfc_main$1$1 = {
79790
79759
  nextButtonGroup.setAttribute("tabindex", "0");
79791
79760
  nextButtonGroup.focus();
79792
79761
  } else {
79793
- const editorDom = proxy?.$toolbar?.activeEditor?.view?.dom;
79794
- editorDom?.focus();
79762
+ const editor = document.querySelector(".ProseMirror");
79763
+ if (editor) {
79764
+ editor.focus();
79765
+ }
79795
79766
  }
79796
79767
  };
79797
79768
  const moveToPreviousButtonGroup = (e) => {
@@ -79937,7 +79908,7 @@ const _sfc_main$1$1 = {
79937
79908
  };
79938
79909
  }
79939
79910
  };
79940
- const ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1$1, [["__scopeId", "data-v-c1b3551b"]]);
79911
+ const ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1$1, [["__scopeId", "data-v-f42ec7e6"]]);
79941
79912
  const _sfc_main$f = {
79942
79913
  __name: "Toolbar",
79943
79914
  emits: ["command", "toggle", "select"],
@@ -84175,6 +84146,14 @@ function getStructureFromResolvedPos(state2, pos) {
84175
84146
  return null;
84176
84147
  }
84177
84148
  }
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
+ };
84178
84157
  const isModuleEnabled = (editorOptions, moduleName) => {
84179
84158
  switch (moduleName) {
84180
84159
  case "ai":
@@ -84549,8 +84528,7 @@ const _sfc_main$4 = {
84549
84528
  };
84550
84529
  const handleRightClick = async (event) => {
84551
84530
  const readOnly = !props.editor?.isEditable;
84552
- const isHoldingCtrl = event.ctrlKey;
84553
- if (readOnly || isHoldingCtrl) {
84531
+ if (readOnly || shouldBypassContextMenu(event)) {
84554
84532
  return;
84555
84533
  }
84556
84534
  event.preventDefault();
@@ -84711,12 +84689,10 @@ const _sfc_main$4 = {
84711
84689
  }
84712
84690
  };
84713
84691
  function adjustPaginationBreaks(editorElem, editor) {
84714
- const hostElement = editorElem.value;
84715
- if (!hostElement || !editor?.value?.options?.scale) return;
84692
+ if (!editorElem.value || !editor?.value?.options?.scale) return;
84716
84693
  const zoom = editor.value.options.scale;
84717
- const bounds = hostElement.getBoundingClientRect();
84718
- const searchRoot = hostElement.shadowRoot || hostElement;
84719
- const breakNodes = searchRoot.querySelectorAll(".pagination-break-wrapper");
84694
+ const bounds = editorElem.value.getBoundingClientRect();
84695
+ const breakNodes = editorElem.value.querySelectorAll(".pagination-break-wrapper");
84720
84696
  let firstLeft;
84721
84697
  breakNodes.forEach((node) => {
84722
84698
  const nodeBounds = node.getBoundingClientRect();
@@ -85007,821 +84983,6 @@ const _sfc_main$2 = {
85007
84983
  };
85008
84984
  const GenericPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-cbddcc0f"]]);
85009
84985
  const BlankDOCX = "data:application/octet-stream;base64,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";
85010
- const editorStyles = `:root {
85011
- /* CSS variables */
85012
- }
85013
- .sd-input-active {
85014
- border: 1px solid #1355ff !important;
85015
- }
85016
- .sd-super-editor-html .ProseMirror {
85017
- border: 1px solid #d9d9d9;
85018
- outline: none;
85019
- border-radius: 8px;
85020
- height: 100%;
85021
- width: 100%;
85022
- outline: none;
85023
- }
85024
- a {
85025
- text-decoration: auto;
85026
- }
85027
- /**
85028
- * Basic ProseMirror styles.
85029
- * https://github.com/ProseMirror/prosemirror-view/blob/master/style/prosemirror.css
85030
- */
85031
- .ProseMirror {
85032
- position: relative;
85033
- }
85034
- .ProseMirror {
85035
- word-wrap: break-word;
85036
- white-space: pre-wrap;
85037
- white-space: break-spaces;
85038
- -webkit-font-variant-ligatures: none;
85039
- font-variant-ligatures: none;
85040
- font-feature-settings: 'liga' 0; /* the above doesn't seem to work in Edge */
85041
- }
85042
- .ProseMirror pre {
85043
- white-space: pre-wrap;
85044
- }
85045
- .ProseMirror ol,
85046
- .ProseMirror ul {
85047
- margin-block-start: 0;
85048
- margin-block-end: 0;
85049
- margin-inline-start: 0;
85050
- margin-inline-end: 0;
85051
- }
85052
- .ProseMirror ol,
85053
- .ProseMirror ul {
85054
- padding-inline-start: 0;
85055
- padding-left: 0;
85056
- list-style: none;
85057
- }
85058
- .ProseMirror li::marker {
85059
- content: none;
85060
- }
85061
- .ProseMirror li::marker {
85062
- padding: 0;
85063
- margin: 0;
85064
- }
85065
- .ProseMirror li > p {
85066
- margin: 0;
85067
- padding: 0;
85068
- display: inline-block;
85069
- }
85070
- .ProseMirror.header-footer-edit > p img,
85071
- .ProseMirror.header-footer-edit > p a,
85072
- .ProseMirror.header-footer-edit li img,
85073
- .ProseMirror.header-footer-edit li a,
85074
- .ProseMirror.header-footer-edit span img,
85075
- .ProseMirror.header-footer-edit span a {
85076
- opacity: 1;
85077
- }
85078
- .ProseMirror.header-footer-edit .pagination-break-wrapper {
85079
- color: initial !important;
85080
- }
85081
- .ProseMirror.header-footer-edit .pagination-break-wrapper span {
85082
- color: initial !important;
85083
- }
85084
- .ProseMirror.header-footer-edit .pagination-break-wrapper img,
85085
- .ProseMirror.header-footer-edit .pagination-break-wrapper a {
85086
- opacity: 1;
85087
- }
85088
- .pagination-section-header div[contenteditable='false'] {
85089
- user-select: none;
85090
- }
85091
- /**
85092
- * Hide marker for indented lists.
85093
- * If a list-item contains a list but doesn't contain a "p" tag with text.
85094
- */
85095
- .ProseMirror ol {
85096
- margin: 0;
85097
- }
85098
- .ProseMirror li:has(> ul:first-child, > ol:first-child):not(:has(> p)) {
85099
- list-style-type: none;
85100
- }
85101
- .ProseMirror li:has(> ul:first-child, > ol:first-child):not(:has(> p))::marker {
85102
- content: '';
85103
- }
85104
- .ProseMirror-hideselection *::selection {
85105
- background: transparent;
85106
- }
85107
- .ProseMirror-hideselection *::-moz-selection {
85108
- background: transparent;
85109
- }
85110
- .ProseMirror-hideselection * {
85111
- caret-color: transparent;
85112
- }
85113
- /* See https://github.com/ProseMirror/prosemirror/issues/1421#issuecomment-1759320191 */
85114
- .ProseMirror [draggable][contenteditable='false'] {
85115
- user-select: text;
85116
- }
85117
- .ProseMirror-selectednode {
85118
- outline: 2px solid #8cf;
85119
- }
85120
- /* Make sure li selections wrap around markers */
85121
- li.ProseMirror-selectednode {
85122
- outline: none;
85123
- }
85124
- li.ProseMirror-selectednode:after {
85125
- content: '';
85126
- position: absolute;
85127
- left: -32px;
85128
- right: -2px;
85129
- top: -2px;
85130
- bottom: -2px;
85131
- border: 2px solid #8cf;
85132
- pointer-events: none;
85133
- }
85134
- .ProseMirror img {
85135
- height: auto;
85136
- max-width: 100%;
85137
- }
85138
- /* Protect against generic img rules */
85139
- img.ProseMirror-separator {
85140
- display: inline !important;
85141
- border: none !important;
85142
- margin: 0 !important;
85143
- }
85144
- .ProseMirror .sd-editor-tab {
85145
- display: inline-block;
85146
- vertical-align: text-bottom;
85147
- }
85148
- .ProseMirror u .sd-editor-tab:not(.pagination-inner .sd-editor-tab) {
85149
- white-space: pre;
85150
- border-bottom: 1px solid #000;
85151
- margin-bottom: 1.5px;
85152
- }
85153
- /*
85154
- Tables
85155
- https://github.com/ProseMirror/prosemirror-tables/blob/master/style/tables.css
85156
- https://github.com/ProseMirror/prosemirror-tables/blob/master/demo/index.html
85157
- */
85158
- .ProseMirror.resize-cursor {
85159
- cursor: ew-resize;
85160
- cursor: col-resize;
85161
- }
85162
- .ProseMirror .tableWrapper {
85163
- --table-border-width: 1px;
85164
- --offset: 2px;
85165
-
85166
- overflow-x: auto;
85167
- scrollbar-width: thin;
85168
- overflow: hidden;
85169
-
85170
- /*
85171
- The border width does not need to be multiplied by two,
85172
- for tables it works differently. */
85173
- width: calc(100% + (var(--table-border-width) + var(--offset)));
85174
- }
85175
- .ProseMirror table {
85176
- border-collapse: collapse;
85177
- border-spacing: 0;
85178
- table-layout: fixed;
85179
- margin: 0;
85180
- /* width: 100%; */
85181
- }
85182
- .ProseMirror tr {
85183
- position: relative;
85184
- }
85185
- .ProseMirror td,
85186
- .ProseMirror th {
85187
- min-width: 1em;
85188
- position: relative;
85189
- vertical-align: top;
85190
- box-sizing: border-box;
85191
- overflow-wrap: anywhere;
85192
- }
85193
- .ProseMirror th {
85194
- font-weight: bold;
85195
- text-align: left;
85196
- }
85197
- .ProseMirror table .column-resize-handle {
85198
- position: absolute;
85199
- right: -2px;
85200
- top: 0;
85201
- bottom: -2px; /* 0 */
85202
- width: 4px;
85203
- z-index: 20;
85204
- background-color: #adf;
85205
- pointer-events: none;
85206
- }
85207
- .ProseMirror table .selectedCell:after {
85208
- position: absolute;
85209
- content: '';
85210
- left: 0;
85211
- right: 0;
85212
- top: 0;
85213
- bottom: 0;
85214
- background: rgba(200, 200, 255, 0.4);
85215
- pointer-events: none;
85216
- z-index: 2;
85217
- }
85218
- /* Tables - end */
85219
- /* Track changes */
85220
- .ProseMirror .track-insert-dec,
85221
- .ProseMirror .track-delete-dec,
85222
- .ProseMirror .track-format-dec {
85223
- pointer-events: none;
85224
- }
85225
- .ProseMirror .track-insert-dec.hidden,
85226
- .ProseMirror .track-delete-dec.hidden {
85227
- display: none;
85228
- }
85229
- .ProseMirror .track-insert-dec.highlighted {
85230
- border-top: 1px dashed #00853d;
85231
- border-bottom: 1px dashed #00853d;
85232
- background-color: #399c7222;
85233
- }
85234
- .ProseMirror .track-delete-dec.highlighted {
85235
- border-top: 1px dashed #cb0e47;
85236
- border-bottom: 1px dashed #cb0e47;
85237
- background-color: #cb0e4722;
85238
- text-decoration: line-through;
85239
- text-decoration-thickness: 2px;
85240
- }
85241
- .ProseMirror .track-format-dec.highlighted {
85242
- border-bottom: 2px solid gold;
85243
- }
85244
- .ProseMirror .track-delete-widget {
85245
- visibility: hidden;
85246
- }
85247
- /* Track changes - end */
85248
- /* Collaboration cursors */
85249
- .ProseMirror > .ProseMirror-yjs-cursor:first-child {
85250
- margin-top: 16px;
85251
- }
85252
- .ProseMirror-yjs-cursor {
85253
- position: relative;
85254
- margin-left: -1px;
85255
- margin-right: -1px;
85256
- border-left: 1px solid black;
85257
- border-right: 1px solid black;
85258
- border-color: orange;
85259
- word-break: normal;
85260
- pointer-events: none;
85261
- }
85262
- .ProseMirror-yjs-cursor > div {
85263
- position: absolute;
85264
- top: -1.05em;
85265
- left: -1px;
85266
- font-size: 13px;
85267
- background-color: rgb(250, 129, 0);
85268
- font-family: serif;
85269
- font-style: normal;
85270
- font-weight: normal;
85271
- line-height: normal;
85272
- user-select: none;
85273
- color: white;
85274
- padding-left: 2px;
85275
- padding-right: 2px;
85276
- white-space: nowrap;
85277
- }
85278
- /* Collaboration cursors - end */
85279
- /* Image placeholder */
85280
- .ProseMirror placeholder {
85281
- display: inline;
85282
- border: 1px solid #ccc;
85283
- color: #ccc;
85284
- }
85285
- .ProseMirror placeholder:after {
85286
- content: '☁';
85287
- font-size: 200%;
85288
- line-height: 0.1;
85289
- font-weight: bold;
85290
- }
85291
- /* Gapcursor */
85292
- .ProseMirror-gapcursor {
85293
- display: none;
85294
- pointer-events: none;
85295
- position: absolute;
85296
- margin: 0;
85297
- }
85298
- .ProseMirror-gapcursor:after {
85299
- content: '';
85300
- display: block;
85301
- position: absolute;
85302
- top: -2px;
85303
- width: 20px;
85304
- border-top: 1px solid black;
85305
- animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
85306
- }
85307
- @keyframes ProseMirror-cursor-blink {
85308
- to {
85309
- visibility: hidden;
85310
- }
85311
- }
85312
- .ProseMirror-focused .ProseMirror-gapcursor {
85313
- display: block;
85314
- }
85315
- .ProseMirror div[data-type='contentBlock'] {
85316
- position: absolute;
85317
- outline: none;
85318
- user-select: none;
85319
- z-index: -1;
85320
- }
85321
- .ProseMirror div[data-horizontal-rule='true'] {
85322
- margin-top: auto;
85323
- align-self: flex-end;
85324
- }
85325
- .sd-editor-dropcap {
85326
- float: left;
85327
- display: flex;
85328
- align-items: baseline;
85329
- margin-top: -5px;
85330
- }
85331
- .ProseMirror-search-match {
85332
- background-color: #ffff0054;
85333
- }
85334
- .ProseMirror-active-search-match {
85335
- background-color: #ff6a0054;
85336
- }
85337
- .ProseMirror span.sd-custom-selection::selection {
85338
- background: transparent;
85339
- }
85340
- .sd-custom-selection {
85341
- background-color: #d9d9d9;
85342
- border-radius: 0.1em;
85343
- }
85344
- .superdoc-toolbar svg {
85345
- width: 100%;
85346
- height: 100%;
85347
- display: block;
85348
- fill: currentColor;
85349
- }
85350
- .superdoc-toolbar svg path {
85351
- stroke: currentColor;
85352
- }
85353
- .sd-editor-toolbar-dropdown .n-dropdown-option .dropdown-select-icon {
85354
- display: flex;
85355
- width: 12px;
85356
- height: 12px;
85357
- }
85358
- /* Custom toolbar styling */
85359
- /* AI button icon styling with gradient */
85360
- .toolbar-icon__icon--ai {
85361
- position: relative;
85362
- z-index: 1;
85363
- }
85364
- .toolbar-icon__icon--ai svg {
85365
- fill: transparent;
85366
- }
85367
- .toolbar-icon__icon--ai::before {
85368
- content: '';
85369
- position: absolute;
85370
- top: 0;
85371
- left: 0;
85372
- right: 0;
85373
- bottom: 0;
85374
- z-index: -1;
85375
- background: linear-gradient(
85376
- 270deg,
85377
- rgba(218, 215, 118, 0.5) -20%,
85378
- rgba(191, 100, 100, 1) 30%,
85379
- rgba(77, 82, 217, 1) 60%,
85380
- rgb(255, 219, 102) 150%
85381
- );
85382
- -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>")
85383
- center / contain no-repeat;
85384
- 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>")
85385
- center / contain no-repeat;
85386
- filter: brightness(1.2);
85387
- transition: filter 0.2s ease;
85388
- }
85389
- .toolbar-icon__icon--ai:hover::before {
85390
- filter: brightness(1.3);
85391
- }
85392
- /* AI text appear animation */
85393
- @keyframes aiTextAppear {
85394
- from {
85395
- opacity: 0;
85396
- transform: translateY(5px);
85397
- }
85398
- to {
85399
- opacity: 1;
85400
- transform: translateY(0);
85401
- }
85402
- }
85403
- .sd-ai-text-appear {
85404
- display: inline;
85405
- opacity: 0;
85406
- animation: aiTextAppear 0.7s ease-out forwards;
85407
- animation-fill-mode: both;
85408
- will-change: opacity, transform;
85409
- /* Ensure each mark is treated as a separate animation context */
85410
- contain: content;
85411
- }
85412
- .sd-ai-loader {
85413
- display: flex;
85414
- justify-content: flex-start;
85415
- }
85416
- .sd-ai-loader > img {
85417
- width: fit-content;
85418
- height: 40px;
85419
- }
85420
- @keyframes ai-pulse {
85421
- 0% {
85422
- background-color: rgba(99, 102, 241, 0.1);
85423
- }
85424
- 50% {
85425
- background-color: rgba(99, 102, 241, 0.375);
85426
- }
85427
- 100% {
85428
- background-color: rgba(99, 102, 241, 0.1);
85429
- }
85430
- }
85431
- .sd-ai-highlight-pulse {
85432
- animation: ai-pulse 1.5s ease-in-out infinite;
85433
- }
85434
- .sd-editor-auto-page-number,
85435
- .sd-editor-auto-total-pages {
85436
- transition: all 250ms ease;
85437
- border-bottom: 1px solid #9a9a9a;
85438
- cursor: not-allowed;
85439
- }
85440
- .sd-editor-auto-page-number:hover,
85441
- .sd-editor-auto-total-pages:hover {
85442
- border-bottom-color: #4f4f4f;
85443
- }
85444
- .sd-editor-auto-page-number-content {
85445
- pointer-events: none;
85446
- }
85447
- .ProseMirror.view-mode .sd-editor-auto-page-number,
85448
- .ProseMirror.view-mode .sd-editor-auto-total-pages {
85449
- border: none;
85450
- }
85451
- :root {
85452
- --sd-editor-separator-height: 18px;
85453
- }
85454
- .pagination-section-header {
85455
- cursor: default;
85456
- }
85457
- /* To not inherit styles from the wrapper paragraph */
85458
- .pagination-section-header p {
85459
- text-align: initial;
85460
- }
85461
- .pagination-section-footer {
85462
- position: relative;
85463
- width: 100%;
85464
- min-width: 100%;
85465
- display: flex;
85466
- flex-direction: column;
85467
- justify-content: flex-end;
85468
- cursor: default;
85469
- }
85470
- /* To not inherit styles from the wrapper paragraph */
85471
- .pagination-section-footer p {
85472
- text-align: initial;
85473
- }
85474
- .pagination-break-wrapper {
85475
- width: 100%;
85476
- margin: 0;
85477
- padding: 0;
85478
- cursor: default;
85479
- position: relative;
85480
- }
85481
- .pagination-separator {
85482
- position: relative;
85483
- display: block;
85484
- height: var(--sd-editor-separator-height);
85485
- min-height: var(--sd-editor-separator-height);
85486
- min-width: 100%;
85487
- width: 100%;
85488
- border-top: 1px solid #dbdbdb;
85489
- border-bottom: 1px solid #dbdbdb;
85490
- cursor: default;
85491
- }
85492
- .pagination-separator--table {
85493
- border: 0;
85494
- }
85495
- .pagination-separator-floating {
85496
- position: absolute;
85497
- height: var(--sd-editor-separator-height);
85498
- border-top: 1px solid #dbdbdb;
85499
- border-bottom: 1px solid #dbdbdb;
85500
- pointer-events: none;
85501
- }
85502
- .pagination-inner {
85503
- position: absolute;
85504
- top: 0;
85505
- left: 0;
85506
- display: flex;
85507
- flex-direction: column;
85508
- background-color: white;
85509
- }
85510
- /**
85511
- Workaround to display pagination in footer
85512
- on the right if it is inside shape textbox.
85513
- */
85514
- .pagination-section-footer .sd-editor-shape-container:has([data-id='auto-page-number'], [data-id='auto-total-pages']) {
85515
- margin-left: auto;
85516
- }
85517
- .pagination-section-header img[contenteditable='false'],
85518
- .pagination-section-footer img[contenteditable='false'] {
85519
- pointer-events: none;
85520
- }
85521
- .pagination-break-wrapper {
85522
- font-weight: normal;
85523
- font-style: normal;
85524
- color: initial;
85525
- }
85526
- /* TODO: This is going to be enabled again */
85527
- /* .pagination-section-header div[contenteditable="false"]:not([documentmode="viewing"]),
85528
- .pagination-section-footer div[contenteditable="false"]:not([documentmode="viewing"]) {
85529
- opacity: 0.5;
85530
- } */
85531
- .sd-editor-popover {
85532
- background-color: #fff;
85533
- border-radius: 8px;
85534
- -webkit-box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
85535
- -moz-box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
85536
- box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
85537
- padding: 0;
85538
- width: auto;
85539
- height: auto;
85540
- font-size: 14px;
85541
- color: #333;
85542
- z-index: 1000;
85543
- }
85544
- .sd-editor-popover .popover-header {
85545
- font-weight: bold;
85546
- margin-bottom: 8px;
85547
- }
85548
- .tippy-box[data-theme~='sd-editor-popover'] {
85549
- background-color: #fff;
85550
- border-radius: 8px;
85551
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
85552
- border: none !important;
85553
- padding: 0 !important;
85554
- }
85555
- .tippy-box[data-theme~='sd-editor-popover'] .tippy-arrow {
85556
- color: #fff;
85557
- border: 1px solid #dbdbdb;
85558
- }
85559
- .tippy-box[data-theme~='sd-editor-popover'] .tippy-content {
85560
- padding: 0;
85561
- }
85562
- .sd-editor-placeholder::before {
85563
- content: attr(data-placeholder);
85564
- color: #aaa;
85565
- pointer-events: none;
85566
- display: block;
85567
- height: 0;
85568
- }
85569
- .sd-editor-mention {
85570
- background-color: #1355ff15;
85571
- color: #222;
85572
- font-weight: 400;
85573
- border-radius: 3px;
85574
- padding: 0 5px;
85575
- cursor: default;
85576
- display: inline-block;
85577
- box-sizing: border-box;
85578
- }
85579
- .sd-editor-comment-highlight {
85580
- transition: background-color 250ms ease;
85581
- }
85582
- .sd-editor-comment-highlight:hover {
85583
- background-color: #1354ff55;
85584
- }
85585
- .sd-editor-comment-highlight.sd-custom-selection {
85586
- background-color: #d6c0c6 !important;
85587
- }
85588
- .sd-editor-list-item-node-view {
85589
- position: relative;
85590
- width: 100%;
85591
- }
85592
- .sd-editor-list-item-numbering {
85593
- position: absolute;
85594
- top: 0;
85595
- white-space: nowrap;
85596
- user-select: none;
85597
- pointer-events: auto;
85598
- text-align: right;
85599
- z-index: 1;
85600
- }
85601
- .sd-editor-list-item-content-dom {
85602
- position: relative;
85603
- min-height: inherit;
85604
- word-wrap: break-word;
85605
- }
85606
- /* temporary fix */
85607
- .sd-editor-list-item-node-view .sd-custom-selection {
85608
- font-size: inherit !important;
85609
- }
85610
- /* Resize handles container */
85611
- .sd-editor-resize-container {
85612
- position: absolute;
85613
- pointer-events: none;
85614
- z-index: 11;
85615
- }
85616
- /* Resize handles */
85617
- .sd-editor-resize-handle {
85618
- position: absolute;
85619
- width: 12px;
85620
- height: 12px;
85621
- background-color: #4dabf7;
85622
- border: 2px solid #fff;
85623
- border-radius: 50%;
85624
- box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
85625
- pointer-events: auto;
85626
- transition: all 0.1s ease;
85627
- }
85628
- .sd-editor-resize-handle:hover {
85629
- background-color: #228be6;
85630
- transform: scale(1.1);
85631
- box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
85632
- }
85633
- /* Handle positions */
85634
- .sd-editor-resize-handle-nw {
85635
- top: -6px;
85636
- left: -6px;
85637
- cursor: nwse-resize;
85638
- }
85639
- .sd-editor-resize-handle-ne {
85640
- top: -6px;
85641
- right: -6px;
85642
- cursor: nesw-resize;
85643
- }
85644
- .sd-editor-resize-handle-sw {
85645
- bottom: -6px;
85646
- left: -6px;
85647
- cursor: nesw-resize;
85648
- }
85649
- .sd-editor-resize-handle-se {
85650
- bottom: -6px;
85651
- right: -6px;
85652
- cursor: nwse-resize;
85653
- }
85654
- /* Hide handles when editor loses focus */
85655
- .ProseMirror:not(.ProseMirror-focused) .sd-editor-resize-container {
85656
- display: none;
85657
- }
85658
- /* Smooth transitions for resizing */
85659
- .sd-editor-resizable-wrapper * {
85660
- transition: none;
85661
- }
85662
- .sd-editor-resizable-wrapper *:not([style*='width']) {
85663
- transition: all 0.2s ease;
85664
- }
85665
- /* Resize feedback indicator */
85666
- .sd-editor-resizable-wrapper::after {
85667
- content: 'Drag corners to resize';
85668
- position: absolute;
85669
- bottom: -25px;
85670
- left: 50%;
85671
- transform: translateX(-50%);
85672
- background-color: rgba(77, 171, 247, 0.9);
85673
- color: white;
85674
- font-size: 11px;
85675
- padding: 4px 8px;
85676
- border-radius: 4px;
85677
- white-space: nowrap;
85678
- pointer-events: none;
85679
- opacity: 0;
85680
- transition: opacity 0.3s ease;
85681
- z-index: 12;
85682
- }
85683
- .sd-editor-resizable-wrapper:hover::after {
85684
- opacity: 1;
85685
- }
85686
- .sd-document-section-block {
85687
- background-color: #fafafa;
85688
- border: 1px solid #ababab;
85689
- border-radius: 4px;
85690
- position: relative;
85691
- }
85692
- .sd-document-section-block-info {
85693
- position: absolute;
85694
- top: -19px;
85695
- left: -1px;
85696
- max-width: 100px;
85697
- min-width: 0;
85698
- height: 18px;
85699
- border: 1px solid #ababab;
85700
- border-bottom: none;
85701
- border-radius: 6px 6px 0 0;
85702
- padding: 0 8px;
85703
- align-items: center;
85704
- font-size: 10px;
85705
- display: none;
85706
- z-index: 100;
85707
- background-color: #fafafa;
85708
- }
85709
- .sd-document-section-block:hover {
85710
- border-radius: 0 4px 4px 4px;
85711
- }
85712
- .sd-document-section-block:hover .sd-document-section-block-info {
85713
- display: flex;
85714
- align-items: center;
85715
- }
85716
- .sd-document-section-block-info span {
85717
- max-width: 100%;
85718
- overflow: hidden;
85719
- white-space: nowrap;
85720
- text-overflow: ellipsis;
85721
- }
85722
- .sd-structured-content,
85723
- .sd-structured-content-block {
85724
- padding: 1px;
85725
- box-sizing: border-box;
85726
- border-radius: 4px;
85727
- border: 1px solid #629be7;
85728
- position: relative;
85729
- }
85730
- .sd-structured-content-draggable {
85731
- font-size: 10px;
85732
- align-items: center;
85733
- justify-content: center;
85734
- position: absolute;
85735
- left: 2px;
85736
- bottom: 100%;
85737
- width: calc(100% - 4px);
85738
- max-width: 110px;
85739
- min-width: 0;
85740
- height: 18px;
85741
- padding: 0 4px;
85742
- border: 1px solid #629be7;
85743
- border-bottom: none;
85744
- border-radius: 6px 6px 0 0;
85745
- background-color: #629be7dd;
85746
- z-index: 10;
85747
- cursor: grab;
85748
- display: none;
85749
- }
85750
- .sd-structured-content-draggable span {
85751
- max-width: 100%;
85752
- overflow: hidden;
85753
- white-space: nowrap;
85754
- text-overflow: ellipsis;
85755
- }
85756
- .sd-structured-content:hover .sd-structured-content-draggable,
85757
- .sd-structured-content-block:hover .sd-structured-content-draggable {
85758
- display: inline-flex;
85759
- }
85760
- `;
85761
- let cachedStyleSheet = null;
85762
- const defaultEditorStyles = editorStyles;
85763
- let shadowEditorStyles = defaultEditorStyles;
85764
- const supportsConstructableStylesheets = () => {
85765
- const DocumentCtor = (
85766
- /** @type {typeof Document | undefined} */
85767
- globalThis.Document
85768
- );
85769
- const CSSStyleSheetCtor = (
85770
- /** @type {typeof CSSStyleSheet | undefined} */
85771
- globalThis.CSSStyleSheet
85772
- );
85773
- if (!DocumentCtor || !CSSStyleSheetCtor) return false;
85774
- const documentPrototype = DocumentCtor.prototype;
85775
- const styleSheetPrototype = CSSStyleSheetCtor.prototype;
85776
- return !!documentPrototype && "adoptedStyleSheets" in documentPrototype && !!styleSheetPrototype && typeof styleSheetPrototype.replaceSync === "function";
85777
- };
85778
- const ensureStyleSheet = (root2) => {
85779
- if (!root2 || !shadowEditorStyles) return;
85780
- if (supportsConstructableStylesheets()) {
85781
- if (!cachedStyleSheet) {
85782
- const CSSStyleSheetCtor = (
85783
- /** @type {typeof CSSStyleSheet} */
85784
- globalThis.CSSStyleSheet
85785
- );
85786
- cachedStyleSheet = new CSSStyleSheetCtor();
85787
- cachedStyleSheet.replaceSync(shadowEditorStyles);
85788
- }
85789
- const sheets = Array.isArray(root2.adoptedStyleSheets) ? root2.adoptedStyleSheets : [];
85790
- if (!sheets.includes(cachedStyleSheet)) {
85791
- root2.adoptedStyleSheets = [...sheets, cachedStyleSheet];
85792
- }
85793
- return;
85794
- }
85795
- const doc2 = (
85796
- /** @type {Document | undefined} */
85797
- globalThis.document
85798
- );
85799
- if (!doc2 || typeof root2.querySelector !== "function") return;
85800
- if (!root2.querySelector("style[data-super-editor-styles]")) {
85801
- const styleEl = doc2.createElement("style");
85802
- styleEl.setAttribute("data-super-editor-styles", "");
85803
- styleEl.textContent = shadowEditorStyles;
85804
- root2.appendChild(styleEl);
85805
- }
85806
- };
85807
- const ensureEditorShadowRoot = (hostElement) => {
85808
- const doc2 = (
85809
- /** @type {Document | undefined} */
85810
- globalThis.document
85811
- );
85812
- if (!hostElement || !doc2 || typeof hostElement.attachShadow !== "function") {
85813
- return { root: null, mount: null };
85814
- }
85815
- const root2 = hostElement.shadowRoot || hostElement.attachShadow({ mode: "open" });
85816
- ensureStyleSheet(root2);
85817
- let mount2 = root2.querySelector(".sd-editor-mount");
85818
- if (!mount2) {
85819
- mount2 = doc2.createElement("div");
85820
- mount2.className = "sd-editor-mount";
85821
- root2.appendChild(mount2);
85822
- }
85823
- return { root: root2, mount: mount2 };
85824
- };
85825
84986
  const _hoisted_1$1 = { class: "super-editor-container" };
85826
84987
  const _hoisted_2 = {
85827
84988
  key: 1,
@@ -85860,7 +85021,6 @@ const _sfc_main$1 = {
85860
85021
  const message = useMessage();
85861
85022
  const editorWrapper = ref$1(null);
85862
85023
  const editorElem = ref$1(null);
85863
- const editorMountPoint = shallowRef(null);
85864
85024
  const fileSource = ref$1(null);
85865
85025
  const popoverControls = reactive({
85866
85026
  visible: false,
@@ -85949,15 +85109,9 @@ const _sfc_main$1 = {
85949
85109
  return extensions;
85950
85110
  };
85951
85111
  const initEditor = async ({ content, media = {}, mediaFiles = {}, fonts = {} } = {}) => {
85952
- if (!editorElem.value) return;
85953
- const { mount: mount2 } = ensureEditorShadowRoot(editorElem.value);
85954
- editorMountPoint.value = mount2;
85955
- if (editorMountPoint.value) {
85956
- editorMountPoint.value.innerHTML = "";
85957
- }
85958
85112
  editor.value = new Editor({
85959
85113
  mode: "docx",
85960
- element: editorMountPoint.value || editorElem.value,
85114
+ element: editorElem.value,
85961
85115
  fileSource: fileSource.value,
85962
85116
  extensions: getExtensions(),
85963
85117
  externalExtensions: props.options.externalExtensions,
@@ -86004,12 +85158,11 @@ const _sfc_main$1 = {
86004
85158
  };
86005
85159
  const handleSuperEditorClick = (event) => {
86006
85160
  emit("editor-click", { editor: editor.value });
86007
- const pmElement = editor.value?.view?.dom;
85161
+ let pmElement = editorElem.value?.querySelector(".ProseMirror");
86008
85162
  if (!pmElement || !editor.value) {
86009
85163
  return;
86010
85164
  }
86011
- const eventPath = event.composedPath?.() || [];
86012
- const isInsideEditor = eventPath.includes(pmElement);
85165
+ let isInsideEditor = pmElement.contains(event.target);
86013
85166
  if (!isInsideEditor && editor.value.isEditable) {
86014
85167
  editor.value.view?.focus();
86015
85168
  }
@@ -86022,9 +85175,7 @@ const _sfc_main$1 = {
86022
85175
  if (props.options?.suppressSkeletonLoader || !props.options?.collaborationProvider) editorReady.value = true;
86023
85176
  });
86024
85177
  const handleMarginClick = (event) => {
86025
- const pmElement = editor.value?.view?.dom;
86026
- const eventPath = event.composedPath?.() || [];
86027
- if (pmElement && eventPath.includes(pmElement)) return;
85178
+ if (event.target.classList.contains("ProseMirror")) return;
86028
85179
  onMarginClickCursorChange(event, editor.value);
86029
85180
  };
86030
85181
  const handleMarginChange = ({ side, value }) => {
@@ -86130,7 +85281,7 @@ const _sfc_main$1 = {
86130
85281
  };
86131
85282
  }
86132
85283
  };
86133
- const SuperEditor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3d49a1a6"]]);
85284
+ const SuperEditor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-0c36dd72"]]);
86134
85285
  const _hoisted_1 = ["innerHTML"];
86135
85286
  const _sfc_main = {
86136
85287
  __name: "SuperInput",
@@ -86160,7 +85311,6 @@ const _sfc_main = {
86160
85311
  const props = __props;
86161
85312
  const editor = shallowRef();
86162
85313
  const editorElem = ref$1(null);
86163
- const editorMountPoint = shallowRef(null);
86164
85314
  const isFocused = ref$1(false);
86165
85315
  const onTransaction = ({ editor: editor2, transaction }) => {
86166
85316
  const contents = editor2.getHTML();
@@ -86180,15 +85330,10 @@ const _sfc_main = {
86180
85330
  props.options.onTransaction = onTransaction;
86181
85331
  props.options.onFocus = onFocus;
86182
85332
  props.options.onBlur = onBlur;
86183
- const { mount: mount2 } = ensureEditorShadowRoot(editorElem.value);
86184
- editorMountPoint.value = mount2;
86185
- if (editorMountPoint.value) {
86186
- editorMountPoint.value.innerHTML = "";
86187
- }
86188
85333
  editor.value = new Editor({
86189
85334
  mode: "text",
86190
85335
  content: document.getElementById("currentContent"),
86191
- element: editorMountPoint.value || editorElem.value,
85336
+ element: editorElem.value,
86192
85337
  extensions: getRichTextExtensions(),
86193
85338
  users: props.users,
86194
85339
  ...props.options
@@ -86227,35 +85372,77 @@ const _sfc_main = {
86227
85372
  };
86228
85373
  }
86229
85374
  };
86230
- const SuperInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-23a4e794"]]);
86231
- const baseHandlers = {
86232
- ...runPropertyTranslators,
85375
+ const SuperInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4d5cff52"]]);
85376
+ const additionalHandlers = Object.freeze({
85377
+ "mc:AlternateContent": translator,
85378
+ "w:b": translator$12,
85379
+ "w:bidiVisual": translator$F,
85380
+ "w:bookmarkEnd": translator$1,
85381
+ "w:bookmarkStart": translator$2,
85382
+ "w:bottom": translator$s,
86233
85383
  "w:br": translator$16,
86234
85384
  "w:cantSplit": translator$T,
86235
85385
  "w:cnfStyle": translator$S,
85386
+ "w:color": translator$_,
86236
85387
  "w:divId": translator$R,
85388
+ "w:drawing": translator$4,
85389
+ "w:end": translator$q,
86237
85390
  "w:gridAfter": translator$Q,
86238
85391
  "w:gridBefore": translator$P,
85392
+ "w:gridCol": translator$b,
86239
85393
  "w:hidden": translator$O,
85394
+ "w:highlight": translator$15,
86240
85395
  "w:hyperlink": translator$7,
85396
+ "w:i": translator$11,
85397
+ "w:insideH": translator$o,
85398
+ "w:insideV": translator$n,
86241
85399
  "w:jc": translator$N,
85400
+ "w:left": translator$m,
86242
85401
  "w:p": translator$13,
86243
85402
  "w:r": translator$U,
85403
+ "w:rFonts": translator$Z,
86244
85404
  "w:rPr": translator$V,
85405
+ "w:rStyle": translator$Y,
85406
+ "w:right": translator$k,
86245
85407
  "w:sdt": translator$3,
85408
+ "w:shd": translator$E,
85409
+ "w:start": translator$i,
85410
+ "w:strike": translator$$,
85411
+ "w:sz": translator$X,
85412
+ "w:szCs": translator$W,
86246
85413
  "w:tab": translator$14,
85414
+ "w:tbl": translator$9,
85415
+ "w:tblBorders": translator$e,
85416
+ "w:tblCaption": translator$D,
85417
+ "w:tblCellMar": translator$d,
86247
85418
  "w:tblCellSpacing": translator$M,
85419
+ "w:tblDescription": translator$C,
85420
+ "w:tblGrid": translator$a,
86248
85421
  "w:tblHeader": translator$L,
85422
+ "w:tblInd": translator$B,
85423
+ "w:tblLayout": translator$A,
85424
+ "w:tblLook": translator$z,
85425
+ "w:tblOverlap": translator$y,
85426
+ "w:tblPr": translator$c,
85427
+ "w:tblStyle": translator$x,
85428
+ "w:tblStyleColBandSize": translator$w,
85429
+ "w:tblStyleRowBandSize": translator$v,
85430
+ "w:tblW": translator$u,
85431
+ "w:tblpPr": translator$t,
86249
85432
  "w:tc": translator$8,
85433
+ "w:top": translator$g,
86250
85434
  "w:tr": translator$G,
86251
85435
  "w:trHeight": translator$K,
86252
85436
  "w:trPr": translator$H,
85437
+ "w:u": translator$10,
86253
85438
  "w:wAfter": translator$J,
86254
85439
  "w:wBefore": translator$I,
86255
85440
  "wp:anchor": translator$6,
86256
- "wp:inline": translator$5,
86257
- "w:bookmarkStart": translator$2,
86258
- "w:bookmarkEnd": translator$1
85441
+ "wp:inline": translator$5
85442
+ });
85443
+ const baseHandlers = {
85444
+ ...runPropertyTranslators,
85445
+ ...additionalHandlers
86259
85446
  };
86260
85447
  const registeredHandlers = Object.freeze(baseHandlers);
86261
85448
  const Extensions = {