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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/chunks/{PdfViewer-CJAEtjUD.es.js → PdfViewer-B8R1j6LP.es.js} +1 -1
  2. package/dist/chunks/{PdfViewer-BrJSIJjF.cjs → PdfViewer-DWWRw_re.cjs} +1 -1
  3. package/dist/chunks/{index-NiOytIlp.cjs → index-Bpp8Ruyf.cjs} +2 -2
  4. package/dist/chunks/{index-BDfKQQiO.es.js → index-CLGEbkfW.es.js} +2 -2
  5. package/dist/chunks/{super-editor.es-iVTtEcot.es.js → super-editor.es-DWm41myg.es.js} +75 -909
  6. package/dist/chunks/{super-editor.es-DmkkMNKU.cjs → super-editor.es-aBw27Tag.cjs} +75 -909
  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-VW8eKYoK.js} +15 -59
  13. package/dist/super-editor/chunks/{toolbar-BnTHDmlP.js → toolbar-B1up5fYV.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/core/commands/__tests__/schemaWithLists.d.ts +2 -0
  19. package/dist/super-editor/src/core/commands/__tests__/testHelpers.d.ts +4 -0
  20. package/dist/super-editor/src/core/commands/__tests__/testSchema.d.ts +2 -0
  21. package/dist/super-editor/src/core/commands/tests/commandTestUtils.d.ts +7 -0
  22. package/dist/super-editor/src/core/commands/tests/test-schema.d.ts +2 -0
  23. package/dist/super-editor/style.css +11 -11
  24. package/dist/super-editor/super-editor.es.js +85 -876
  25. package/dist/super-editor/toolbar.es.js +2 -2
  26. package/dist/super-editor.cjs +1 -1
  27. package/dist/super-editor.es.js +1 -1
  28. package/dist/superdoc.cjs +2 -2
  29. package/dist/superdoc.es.js +2 -2
  30. package/dist/superdoc.umd.js +75 -909
  31. package/dist/superdoc.umd.js.map +1 -1
  32. package/package.json +1 -1
  33. package/dist/super-editor/src/extensions/noderesizer/helpers.d.ts +0 -2
  34. package/dist/super-editor/src/extensions/run-item/index.d.ts +0 -1
  35. package/dist/super-editor/src/extensions/run-item/run-item.d.ts +0 -26
  36. package/dist/super-editor/src/utils/shadow-root.d.ts +0 -12
@@ -55644,11 +55644,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
55644
55644
  item.editor.view.dom.setAttribute("documentmode", documentMode);
55645
55645
  });
55646
55646
  if (isEditMode) {
55647
- const pm = editor.view?.dom;
55648
- if (pm) {
55649
- pm.classList.add("header-footer-edit");
55650
- pm.setAttribute("aria-readonly", true);
55651
- }
55647
+ const pm = document.querySelector(".ProseMirror");
55648
+ pm.classList.add("header-footer-edit");
55649
+ pm.setAttribute("aria-readonly", true);
55652
55650
  }
55653
55651
  if (focusedSectionEditor) {
55654
55652
  focusedSectionEditor.view.focus();
@@ -58260,7 +58258,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
58260
58258
  setDocumentMode(documentMode) {
58261
58259
  let cleanedMode = documentMode?.toLowerCase() || "editing";
58262
58260
  if (!this.extensionService || !this.state) return;
58263
- const pm = this.view?.dom;
58261
+ const pm = document.querySelector(".ProseMirror");
58264
58262
  if (this.options.role === "viewer") cleanedMode = "viewing";
58265
58263
  if (this.options.role === "suggester" && cleanedMode === "editing") cleanedMode = "suggesting";
58266
58264
  if (cleanedMode === "viewing") {
@@ -58490,6 +58488,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
58490
58488
  element.style.isolation = "isolate";
58491
58489
  proseMirror.style.outline = "none";
58492
58490
  proseMirror.style.border = "none";
58491
+ element.style.backgroundColor = "#fff";
58492
+ proseMirror.style.backgroundColor = "#fff";
58493
58493
  const { typeface, fontSizePt, fontFamilyCss } = this.converter.getDocumentDefaultStyles() ?? {};
58494
58494
  const resolvedFontFamily = fontFamilyCss || typeface;
58495
58495
  if (resolvedFontFamily) {
@@ -59232,11 +59232,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
59232
59232
  isEditMode: false,
59233
59233
  documentMode: this.options.documentMode
59234
59234
  });
59235
- const pm = this.view?.dom;
59236
- if (pm) {
59237
- pm.classList.remove("header-footer-edit");
59238
- pm.setAttribute("aria-readonly", false);
59239
- }
59235
+ const pm = document.querySelector(".ProseMirror");
59236
+ pm.classList.remove("header-footer-edit");
59237
+ pm.setAttribute("aria-readonly", false);
59240
59238
  }
59241
59239
  setWordSelection(view, pos);
59242
59240
  }
@@ -77171,45 +77169,6 @@ Please report this to https://github.com/markedjs/marked.`, e) {
77171
77169
  };
77172
77170
  }
77173
77171
  });
77174
- let cachedShadowRootCtor;
77175
- const getShadowRootCtor = () => {
77176
- if (cachedShadowRootCtor === void 0) {
77177
- const ctor = globalThis.ShadowRoot;
77178
- cachedShadowRootCtor = typeof ctor === "function" ? ctor : null;
77179
- }
77180
- return cachedShadowRootCtor;
77181
- };
77182
- let cachedElementCtor;
77183
- const getElementCtor = () => {
77184
- if (cachedElementCtor === void 0) {
77185
- const ctor = globalThis.Element;
77186
- cachedElementCtor = typeof ctor === "function" ? ctor : null;
77187
- }
77188
- return cachedElementCtor;
77189
- };
77190
- const queryWithinRoot = (domNode, selector) => {
77191
- const shadowRoot = domNode?.shadowRoot;
77192
- if (shadowRoot && typeof shadowRoot.querySelector === "function") {
77193
- return shadowRoot.querySelector(selector);
77194
- }
77195
- const rawRoot = domNode?.getRootNode?.();
77196
- const ShadowRootCtor = getShadowRootCtor();
77197
- const isShadowRoot2 = !!ShadowRootCtor && rawRoot instanceof ShadowRootCtor;
77198
- if (isShadowRoot2 && typeof rawRoot.querySelector === "function") {
77199
- return rawRoot.querySelector(selector);
77200
- }
77201
- if (domNode && typeof domNode.querySelector === "function") {
77202
- const localMatch = domNode.querySelector(selector);
77203
- if (localMatch) return localMatch;
77204
- }
77205
- return typeof document !== "undefined" ? document.querySelector(selector) : null;
77206
- };
77207
- const findInEventPath = (event, selector) => {
77208
- if (!event || !selector) return void 0;
77209
- const path = typeof event.composedPath === "function" ? event.composedPath() : [];
77210
- const ElementCtor = getElementCtor();
77211
- return path.find((node) => ElementCtor && node instanceof ElementCtor && node.matches(selector));
77212
- };
77213
77172
  const NodeResizerKey = new PluginKey("node-resizer");
77214
77173
  const nodeResizer = (nodeNames = ["image"], editor) => {
77215
77174
  let resizeState = {
@@ -77264,19 +77223,16 @@ Please report this to https://github.com/markedjs/marked.`, e) {
77264
77223
  view(view) {
77265
77224
  editorView = view;
77266
77225
  globalClickHandler = (event) => {
77267
- const wrapperInPath = findInEventPath(event, ".sd-editor-resizable-wrapper");
77268
- const containerInPath = findInEventPath(event, ".sd-editor-resize-container");
77269
- if (!wrapperInPath && !containerInPath) {
77226
+ if (!event.target.closest(".sd-editor-resizable-wrapper") && !event.target.closest(".sd-editor-resize-container")) {
77270
77227
  hideResizeHandles();
77271
77228
  }
77272
77229
  };
77273
77230
  document.addEventListener("click", globalClickHandler);
77274
77231
  globalMousedownHandler = (event) => {
77275
- const handle = findInEventPath(event, ".sd-editor-resize-handle");
77276
- if (handle) {
77232
+ if (event.target.closest(".sd-editor-resize-handle")) {
77277
77233
  event.preventDefault();
77278
77234
  event.stopPropagation();
77279
- startResize(editorView, event, handle);
77235
+ startResize(editorView, event, event.target);
77280
77236
  return true;
77281
77237
  }
77282
77238
  };
@@ -77293,7 +77249,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
77293
77249
  const prevSelection = prevState.selection;
77294
77250
  if (selection.from !== prevSelection.from || selection.to !== prevSelection.to) {
77295
77251
  setTimeout(() => {
77296
- const selectedResizableWrapper = queryWithinRoot(editorView?.dom, ".sd-editor-resizable-wrapper");
77252
+ const selectedResizableWrapper = document.querySelector(".sd-editor-resizable-wrapper");
77297
77253
  if (selectedResizableWrapper) {
77298
77254
  showResizeHandles(view2, selectedResizableWrapper);
77299
77255
  } else {
@@ -87406,7 +87362,6 @@ ${style2}
87406
87362
  const toolbarItemRefs = ref$1([]);
87407
87363
  const props = __props;
87408
87364
  const currentItem = ref$1(null);
87409
- const { proxy } = getCurrentInstance();
87410
87365
  const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode$1();
87411
87366
  const isMobile = window.matchMedia("(max-width: 768px)").matches;
87412
87367
  const styleMap = {
@@ -87505,8 +87460,10 @@ ${style2}
87505
87460
  nextButtonGroup.setAttribute("tabindex", "0");
87506
87461
  nextButtonGroup.focus();
87507
87462
  } else {
87508
- const editorDom = proxy?.$toolbar?.activeEditor?.view?.dom;
87509
- editorDom?.focus();
87463
+ const editor = document.querySelector(".ProseMirror");
87464
+ if (editor) {
87465
+ editor.focus();
87466
+ }
87510
87467
  }
87511
87468
  };
87512
87469
  const moveToPreviousButtonGroup = (e) => {
@@ -87652,7 +87609,7 @@ ${style2}
87652
87609
  };
87653
87610
  }
87654
87611
  };
87655
- const ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$2, [["__scopeId", "data-v-c1b3551b"]]);
87612
+ const ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$2, [["__scopeId", "data-v-f42ec7e6"]]);
87656
87613
  const _sfc_main$k = {
87657
87614
  __name: "Toolbar",
87658
87615
  emits: ["command", "toggle", "select"],
@@ -92426,12 +92383,10 @@ ${style2}
92426
92383
  }
92427
92384
  };
92428
92385
  function adjustPaginationBreaks(editorElem, editor) {
92429
- const hostElement = editorElem.value;
92430
- if (!hostElement || !editor?.value?.options?.scale) return;
92386
+ if (!editorElem.value || !editor?.value?.options?.scale) return;
92431
92387
  const zoom = editor.value.options.scale;
92432
- const bounds = hostElement.getBoundingClientRect();
92433
- const searchRoot = hostElement.shadowRoot || hostElement;
92434
- const breakNodes = searchRoot.querySelectorAll(".pagination-break-wrapper");
92388
+ const bounds = editorElem.value.getBoundingClientRect();
92389
+ const breakNodes = editorElem.value.querySelectorAll(".pagination-break-wrapper");
92435
92390
  let firstLeft;
92436
92391
  breakNodes.forEach((node) => {
92437
92392
  const nodeBounds = node.getBoundingClientRect();
@@ -92722,821 +92677,6 @@ ${style2}
92722
92677
  };
92723
92678
  const GenericPopover = /* @__PURE__ */ _export_sfc$1(_sfc_main$2$1, [["__scopeId", "data-v-cbddcc0f"]]);
92724
92679
  const BlankDOCX$1 = "data:application/octet-stream;base64,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";
92725
- const editorStyles = `:root {
92726
- /* CSS variables */
92727
- }
92728
- .sd-input-active {
92729
- border: 1px solid #1355ff !important;
92730
- }
92731
- .sd-super-editor-html .ProseMirror {
92732
- border: 1px solid #d9d9d9;
92733
- outline: none;
92734
- border-radius: 8px;
92735
- height: 100%;
92736
- width: 100%;
92737
- outline: none;
92738
- }
92739
- a {
92740
- text-decoration: auto;
92741
- }
92742
- /**
92743
- * Basic ProseMirror styles.
92744
- * https://github.com/ProseMirror/prosemirror-view/blob/master/style/prosemirror.css
92745
- */
92746
- .ProseMirror {
92747
- position: relative;
92748
- }
92749
- .ProseMirror {
92750
- word-wrap: break-word;
92751
- white-space: pre-wrap;
92752
- white-space: break-spaces;
92753
- -webkit-font-variant-ligatures: none;
92754
- font-variant-ligatures: none;
92755
- font-feature-settings: 'liga' 0; /* the above doesn't seem to work in Edge */
92756
- }
92757
- .ProseMirror pre {
92758
- white-space: pre-wrap;
92759
- }
92760
- .ProseMirror ol,
92761
- .ProseMirror ul {
92762
- margin-block-start: 0;
92763
- margin-block-end: 0;
92764
- margin-inline-start: 0;
92765
- margin-inline-end: 0;
92766
- }
92767
- .ProseMirror ol,
92768
- .ProseMirror ul {
92769
- padding-inline-start: 0;
92770
- padding-left: 0;
92771
- list-style: none;
92772
- }
92773
- .ProseMirror li::marker {
92774
- content: none;
92775
- }
92776
- .ProseMirror li::marker {
92777
- padding: 0;
92778
- margin: 0;
92779
- }
92780
- .ProseMirror li > p {
92781
- margin: 0;
92782
- padding: 0;
92783
- display: inline-block;
92784
- }
92785
- .ProseMirror.header-footer-edit > p img,
92786
- .ProseMirror.header-footer-edit > p a,
92787
- .ProseMirror.header-footer-edit li img,
92788
- .ProseMirror.header-footer-edit li a,
92789
- .ProseMirror.header-footer-edit span img,
92790
- .ProseMirror.header-footer-edit span a {
92791
- opacity: 1;
92792
- }
92793
- .ProseMirror.header-footer-edit .pagination-break-wrapper {
92794
- color: initial !important;
92795
- }
92796
- .ProseMirror.header-footer-edit .pagination-break-wrapper span {
92797
- color: initial !important;
92798
- }
92799
- .ProseMirror.header-footer-edit .pagination-break-wrapper img,
92800
- .ProseMirror.header-footer-edit .pagination-break-wrapper a {
92801
- opacity: 1;
92802
- }
92803
- .pagination-section-header div[contenteditable='false'] {
92804
- user-select: none;
92805
- }
92806
- /**
92807
- * Hide marker for indented lists.
92808
- * If a list-item contains a list but doesn't contain a "p" tag with text.
92809
- */
92810
- .ProseMirror ol {
92811
- margin: 0;
92812
- }
92813
- .ProseMirror li:has(> ul:first-child, > ol:first-child):not(:has(> p)) {
92814
- list-style-type: none;
92815
- }
92816
- .ProseMirror li:has(> ul:first-child, > ol:first-child):not(:has(> p))::marker {
92817
- content: '';
92818
- }
92819
- .ProseMirror-hideselection *::selection {
92820
- background: transparent;
92821
- }
92822
- .ProseMirror-hideselection *::-moz-selection {
92823
- background: transparent;
92824
- }
92825
- .ProseMirror-hideselection * {
92826
- caret-color: transparent;
92827
- }
92828
- /* See https://github.com/ProseMirror/prosemirror/issues/1421#issuecomment-1759320191 */
92829
- .ProseMirror [draggable][contenteditable='false'] {
92830
- user-select: text;
92831
- }
92832
- .ProseMirror-selectednode {
92833
- outline: 2px solid #8cf;
92834
- }
92835
- /* Make sure li selections wrap around markers */
92836
- li.ProseMirror-selectednode {
92837
- outline: none;
92838
- }
92839
- li.ProseMirror-selectednode:after {
92840
- content: '';
92841
- position: absolute;
92842
- left: -32px;
92843
- right: -2px;
92844
- top: -2px;
92845
- bottom: -2px;
92846
- border: 2px solid #8cf;
92847
- pointer-events: none;
92848
- }
92849
- .ProseMirror img {
92850
- height: auto;
92851
- max-width: 100%;
92852
- }
92853
- /* Protect against generic img rules */
92854
- img.ProseMirror-separator {
92855
- display: inline !important;
92856
- border: none !important;
92857
- margin: 0 !important;
92858
- }
92859
- .ProseMirror .sd-editor-tab {
92860
- display: inline-block;
92861
- vertical-align: text-bottom;
92862
- }
92863
- .ProseMirror u .sd-editor-tab:not(.pagination-inner .sd-editor-tab) {
92864
- white-space: pre;
92865
- border-bottom: 1px solid #000;
92866
- margin-bottom: 1.5px;
92867
- }
92868
- /*
92869
- Tables
92870
- https://github.com/ProseMirror/prosemirror-tables/blob/master/style/tables.css
92871
- https://github.com/ProseMirror/prosemirror-tables/blob/master/demo/index.html
92872
- */
92873
- .ProseMirror.resize-cursor {
92874
- cursor: ew-resize;
92875
- cursor: col-resize;
92876
- }
92877
- .ProseMirror .tableWrapper {
92878
- --table-border-width: 1px;
92879
- --offset: 2px;
92880
-
92881
- overflow-x: auto;
92882
- scrollbar-width: thin;
92883
- overflow: hidden;
92884
-
92885
- /*
92886
- The border width does not need to be multiplied by two,
92887
- for tables it works differently. */
92888
- width: calc(100% + (var(--table-border-width) + var(--offset)));
92889
- }
92890
- .ProseMirror table {
92891
- border-collapse: collapse;
92892
- border-spacing: 0;
92893
- table-layout: fixed;
92894
- margin: 0;
92895
- /* width: 100%; */
92896
- }
92897
- .ProseMirror tr {
92898
- position: relative;
92899
- }
92900
- .ProseMirror td,
92901
- .ProseMirror th {
92902
- min-width: 1em;
92903
- position: relative;
92904
- vertical-align: top;
92905
- box-sizing: border-box;
92906
- overflow-wrap: anywhere;
92907
- }
92908
- .ProseMirror th {
92909
- font-weight: bold;
92910
- text-align: left;
92911
- }
92912
- .ProseMirror table .column-resize-handle {
92913
- position: absolute;
92914
- right: -2px;
92915
- top: 0;
92916
- bottom: -2px; /* 0 */
92917
- width: 4px;
92918
- z-index: 20;
92919
- background-color: #adf;
92920
- pointer-events: none;
92921
- }
92922
- .ProseMirror table .selectedCell:after {
92923
- position: absolute;
92924
- content: '';
92925
- left: 0;
92926
- right: 0;
92927
- top: 0;
92928
- bottom: 0;
92929
- background: rgba(200, 200, 255, 0.4);
92930
- pointer-events: none;
92931
- z-index: 2;
92932
- }
92933
- /* Tables - end */
92934
- /* Track changes */
92935
- .ProseMirror .track-insert-dec,
92936
- .ProseMirror .track-delete-dec,
92937
- .ProseMirror .track-format-dec {
92938
- pointer-events: none;
92939
- }
92940
- .ProseMirror .track-insert-dec.hidden,
92941
- .ProseMirror .track-delete-dec.hidden {
92942
- display: none;
92943
- }
92944
- .ProseMirror .track-insert-dec.highlighted {
92945
- border-top: 1px dashed #00853d;
92946
- border-bottom: 1px dashed #00853d;
92947
- background-color: #399c7222;
92948
- }
92949
- .ProseMirror .track-delete-dec.highlighted {
92950
- border-top: 1px dashed #cb0e47;
92951
- border-bottom: 1px dashed #cb0e47;
92952
- background-color: #cb0e4722;
92953
- text-decoration: line-through;
92954
- text-decoration-thickness: 2px;
92955
- }
92956
- .ProseMirror .track-format-dec.highlighted {
92957
- border-bottom: 2px solid gold;
92958
- }
92959
- .ProseMirror .track-delete-widget {
92960
- visibility: hidden;
92961
- }
92962
- /* Track changes - end */
92963
- /* Collaboration cursors */
92964
- .ProseMirror > .ProseMirror-yjs-cursor:first-child {
92965
- margin-top: 16px;
92966
- }
92967
- .ProseMirror-yjs-cursor {
92968
- position: relative;
92969
- margin-left: -1px;
92970
- margin-right: -1px;
92971
- border-left: 1px solid black;
92972
- border-right: 1px solid black;
92973
- border-color: orange;
92974
- word-break: normal;
92975
- pointer-events: none;
92976
- }
92977
- .ProseMirror-yjs-cursor > div {
92978
- position: absolute;
92979
- top: -1.05em;
92980
- left: -1px;
92981
- font-size: 13px;
92982
- background-color: rgb(250, 129, 0);
92983
- font-family: serif;
92984
- font-style: normal;
92985
- font-weight: normal;
92986
- line-height: normal;
92987
- user-select: none;
92988
- color: white;
92989
- padding-left: 2px;
92990
- padding-right: 2px;
92991
- white-space: nowrap;
92992
- }
92993
- /* Collaboration cursors - end */
92994
- /* Image placeholder */
92995
- .ProseMirror placeholder {
92996
- display: inline;
92997
- border: 1px solid #ccc;
92998
- color: #ccc;
92999
- }
93000
- .ProseMirror placeholder:after {
93001
- content: '☁';
93002
- font-size: 200%;
93003
- line-height: 0.1;
93004
- font-weight: bold;
93005
- }
93006
- /* Gapcursor */
93007
- .ProseMirror-gapcursor {
93008
- display: none;
93009
- pointer-events: none;
93010
- position: absolute;
93011
- margin: 0;
93012
- }
93013
- .ProseMirror-gapcursor:after {
93014
- content: '';
93015
- display: block;
93016
- position: absolute;
93017
- top: -2px;
93018
- width: 20px;
93019
- border-top: 1px solid black;
93020
- animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
93021
- }
93022
- @keyframes ProseMirror-cursor-blink {
93023
- to {
93024
- visibility: hidden;
93025
- }
93026
- }
93027
- .ProseMirror-focused .ProseMirror-gapcursor {
93028
- display: block;
93029
- }
93030
- .ProseMirror div[data-type='contentBlock'] {
93031
- position: absolute;
93032
- outline: none;
93033
- user-select: none;
93034
- z-index: -1;
93035
- }
93036
- .ProseMirror div[data-horizontal-rule='true'] {
93037
- margin-top: auto;
93038
- align-self: flex-end;
93039
- }
93040
- .sd-editor-dropcap {
93041
- float: left;
93042
- display: flex;
93043
- align-items: baseline;
93044
- margin-top: -5px;
93045
- }
93046
- .ProseMirror-search-match {
93047
- background-color: #ffff0054;
93048
- }
93049
- .ProseMirror-active-search-match {
93050
- background-color: #ff6a0054;
93051
- }
93052
- .ProseMirror span.sd-custom-selection::selection {
93053
- background: transparent;
93054
- }
93055
- .sd-custom-selection {
93056
- background-color: #d9d9d9;
93057
- border-radius: 0.1em;
93058
- }
93059
- .superdoc-toolbar svg {
93060
- width: 100%;
93061
- height: 100%;
93062
- display: block;
93063
- fill: currentColor;
93064
- }
93065
- .superdoc-toolbar svg path {
93066
- stroke: currentColor;
93067
- }
93068
- .sd-editor-toolbar-dropdown .n-dropdown-option .dropdown-select-icon {
93069
- display: flex;
93070
- width: 12px;
93071
- height: 12px;
93072
- }
93073
- /* Custom toolbar styling */
93074
- /* AI button icon styling with gradient */
93075
- .toolbar-icon__icon--ai {
93076
- position: relative;
93077
- z-index: 1;
93078
- }
93079
- .toolbar-icon__icon--ai svg {
93080
- fill: transparent;
93081
- }
93082
- .toolbar-icon__icon--ai::before {
93083
- content: '';
93084
- position: absolute;
93085
- top: 0;
93086
- left: 0;
93087
- right: 0;
93088
- bottom: 0;
93089
- z-index: -1;
93090
- background: linear-gradient(
93091
- 270deg,
93092
- rgba(218, 215, 118, 0.5) -20%,
93093
- rgba(191, 100, 100, 1) 30%,
93094
- rgba(77, 82, 217, 1) 60%,
93095
- rgb(255, 219, 102) 150%
93096
- );
93097
- -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>")
93098
- center / contain no-repeat;
93099
- 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>")
93100
- center / contain no-repeat;
93101
- filter: brightness(1.2);
93102
- transition: filter 0.2s ease;
93103
- }
93104
- .toolbar-icon__icon--ai:hover::before {
93105
- filter: brightness(1.3);
93106
- }
93107
- /* AI text appear animation */
93108
- @keyframes aiTextAppear {
93109
- from {
93110
- opacity: 0;
93111
- transform: translateY(5px);
93112
- }
93113
- to {
93114
- opacity: 1;
93115
- transform: translateY(0);
93116
- }
93117
- }
93118
- .sd-ai-text-appear {
93119
- display: inline;
93120
- opacity: 0;
93121
- animation: aiTextAppear 0.7s ease-out forwards;
93122
- animation-fill-mode: both;
93123
- will-change: opacity, transform;
93124
- /* Ensure each mark is treated as a separate animation context */
93125
- contain: content;
93126
- }
93127
- .sd-ai-loader {
93128
- display: flex;
93129
- justify-content: flex-start;
93130
- }
93131
- .sd-ai-loader > img {
93132
- width: fit-content;
93133
- height: 40px;
93134
- }
93135
- @keyframes ai-pulse {
93136
- 0% {
93137
- background-color: rgba(99, 102, 241, 0.1);
93138
- }
93139
- 50% {
93140
- background-color: rgba(99, 102, 241, 0.375);
93141
- }
93142
- 100% {
93143
- background-color: rgba(99, 102, 241, 0.1);
93144
- }
93145
- }
93146
- .sd-ai-highlight-pulse {
93147
- animation: ai-pulse 1.5s ease-in-out infinite;
93148
- }
93149
- .sd-editor-auto-page-number,
93150
- .sd-editor-auto-total-pages {
93151
- transition: all 250ms ease;
93152
- border-bottom: 1px solid #9a9a9a;
93153
- cursor: not-allowed;
93154
- }
93155
- .sd-editor-auto-page-number:hover,
93156
- .sd-editor-auto-total-pages:hover {
93157
- border-bottom-color: #4f4f4f;
93158
- }
93159
- .sd-editor-auto-page-number-content {
93160
- pointer-events: none;
93161
- }
93162
- .ProseMirror.view-mode .sd-editor-auto-page-number,
93163
- .ProseMirror.view-mode .sd-editor-auto-total-pages {
93164
- border: none;
93165
- }
93166
- :root {
93167
- --sd-editor-separator-height: 18px;
93168
- }
93169
- .pagination-section-header {
93170
- cursor: default;
93171
- }
93172
- /* To not inherit styles from the wrapper paragraph */
93173
- .pagination-section-header p {
93174
- text-align: initial;
93175
- }
93176
- .pagination-section-footer {
93177
- position: relative;
93178
- width: 100%;
93179
- min-width: 100%;
93180
- display: flex;
93181
- flex-direction: column;
93182
- justify-content: flex-end;
93183
- cursor: default;
93184
- }
93185
- /* To not inherit styles from the wrapper paragraph */
93186
- .pagination-section-footer p {
93187
- text-align: initial;
93188
- }
93189
- .pagination-break-wrapper {
93190
- width: 100%;
93191
- margin: 0;
93192
- padding: 0;
93193
- cursor: default;
93194
- position: relative;
93195
- }
93196
- .pagination-separator {
93197
- position: relative;
93198
- display: block;
93199
- height: var(--sd-editor-separator-height);
93200
- min-height: var(--sd-editor-separator-height);
93201
- min-width: 100%;
93202
- width: 100%;
93203
- border-top: 1px solid #dbdbdb;
93204
- border-bottom: 1px solid #dbdbdb;
93205
- cursor: default;
93206
- }
93207
- .pagination-separator--table {
93208
- border: 0;
93209
- }
93210
- .pagination-separator-floating {
93211
- position: absolute;
93212
- height: var(--sd-editor-separator-height);
93213
- border-top: 1px solid #dbdbdb;
93214
- border-bottom: 1px solid #dbdbdb;
93215
- pointer-events: none;
93216
- }
93217
- .pagination-inner {
93218
- position: absolute;
93219
- top: 0;
93220
- left: 0;
93221
- display: flex;
93222
- flex-direction: column;
93223
- background-color: white;
93224
- }
93225
- /**
93226
- Workaround to display pagination in footer
93227
- on the right if it is inside shape textbox.
93228
- */
93229
- .pagination-section-footer .sd-editor-shape-container:has([data-id='auto-page-number'], [data-id='auto-total-pages']) {
93230
- margin-left: auto;
93231
- }
93232
- .pagination-section-header img[contenteditable='false'],
93233
- .pagination-section-footer img[contenteditable='false'] {
93234
- pointer-events: none;
93235
- }
93236
- .pagination-break-wrapper {
93237
- font-weight: normal;
93238
- font-style: normal;
93239
- color: initial;
93240
- }
93241
- /* TODO: This is going to be enabled again */
93242
- /* .pagination-section-header div[contenteditable="false"]:not([documentmode="viewing"]),
93243
- .pagination-section-footer div[contenteditable="false"]:not([documentmode="viewing"]) {
93244
- opacity: 0.5;
93245
- } */
93246
- .sd-editor-popover {
93247
- background-color: #fff;
93248
- border-radius: 8px;
93249
- -webkit-box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
93250
- -moz-box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
93251
- box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
93252
- padding: 0;
93253
- width: auto;
93254
- height: auto;
93255
- font-size: 14px;
93256
- color: #333;
93257
- z-index: 1000;
93258
- }
93259
- .sd-editor-popover .popover-header {
93260
- font-weight: bold;
93261
- margin-bottom: 8px;
93262
- }
93263
- .tippy-box[data-theme~='sd-editor-popover'] {
93264
- background-color: #fff;
93265
- border-radius: 8px;
93266
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
93267
- border: none !important;
93268
- padding: 0 !important;
93269
- }
93270
- .tippy-box[data-theme~='sd-editor-popover'] .tippy-arrow {
93271
- color: #fff;
93272
- border: 1px solid #dbdbdb;
93273
- }
93274
- .tippy-box[data-theme~='sd-editor-popover'] .tippy-content {
93275
- padding: 0;
93276
- }
93277
- .sd-editor-placeholder::before {
93278
- content: attr(data-placeholder);
93279
- color: #aaa;
93280
- pointer-events: none;
93281
- display: block;
93282
- height: 0;
93283
- }
93284
- .sd-editor-mention {
93285
- background-color: #1355ff15;
93286
- color: #222;
93287
- font-weight: 400;
93288
- border-radius: 3px;
93289
- padding: 0 5px;
93290
- cursor: default;
93291
- display: inline-block;
93292
- box-sizing: border-box;
93293
- }
93294
- .sd-editor-comment-highlight {
93295
- transition: background-color 250ms ease;
93296
- }
93297
- .sd-editor-comment-highlight:hover {
93298
- background-color: #1354ff55;
93299
- }
93300
- .sd-editor-comment-highlight.sd-custom-selection {
93301
- background-color: #d6c0c6 !important;
93302
- }
93303
- .sd-editor-list-item-node-view {
93304
- position: relative;
93305
- width: 100%;
93306
- }
93307
- .sd-editor-list-item-numbering {
93308
- position: absolute;
93309
- top: 0;
93310
- white-space: nowrap;
93311
- user-select: none;
93312
- pointer-events: auto;
93313
- text-align: right;
93314
- z-index: 1;
93315
- }
93316
- .sd-editor-list-item-content-dom {
93317
- position: relative;
93318
- min-height: inherit;
93319
- word-wrap: break-word;
93320
- }
93321
- /* temporary fix */
93322
- .sd-editor-list-item-node-view .sd-custom-selection {
93323
- font-size: inherit !important;
93324
- }
93325
- /* Resize handles container */
93326
- .sd-editor-resize-container {
93327
- position: absolute;
93328
- pointer-events: none;
93329
- z-index: 11;
93330
- }
93331
- /* Resize handles */
93332
- .sd-editor-resize-handle {
93333
- position: absolute;
93334
- width: 12px;
93335
- height: 12px;
93336
- background-color: #4dabf7;
93337
- border: 2px solid #fff;
93338
- border-radius: 50%;
93339
- box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
93340
- pointer-events: auto;
93341
- transition: all 0.1s ease;
93342
- }
93343
- .sd-editor-resize-handle:hover {
93344
- background-color: #228be6;
93345
- transform: scale(1.1);
93346
- box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
93347
- }
93348
- /* Handle positions */
93349
- .sd-editor-resize-handle-nw {
93350
- top: -6px;
93351
- left: -6px;
93352
- cursor: nwse-resize;
93353
- }
93354
- .sd-editor-resize-handle-ne {
93355
- top: -6px;
93356
- right: -6px;
93357
- cursor: nesw-resize;
93358
- }
93359
- .sd-editor-resize-handle-sw {
93360
- bottom: -6px;
93361
- left: -6px;
93362
- cursor: nesw-resize;
93363
- }
93364
- .sd-editor-resize-handle-se {
93365
- bottom: -6px;
93366
- right: -6px;
93367
- cursor: nwse-resize;
93368
- }
93369
- /* Hide handles when editor loses focus */
93370
- .ProseMirror:not(.ProseMirror-focused) .sd-editor-resize-container {
93371
- display: none;
93372
- }
93373
- /* Smooth transitions for resizing */
93374
- .sd-editor-resizable-wrapper * {
93375
- transition: none;
93376
- }
93377
- .sd-editor-resizable-wrapper *:not([style*='width']) {
93378
- transition: all 0.2s ease;
93379
- }
93380
- /* Resize feedback indicator */
93381
- .sd-editor-resizable-wrapper::after {
93382
- content: 'Drag corners to resize';
93383
- position: absolute;
93384
- bottom: -25px;
93385
- left: 50%;
93386
- transform: translateX(-50%);
93387
- background-color: rgba(77, 171, 247, 0.9);
93388
- color: white;
93389
- font-size: 11px;
93390
- padding: 4px 8px;
93391
- border-radius: 4px;
93392
- white-space: nowrap;
93393
- pointer-events: none;
93394
- opacity: 0;
93395
- transition: opacity 0.3s ease;
93396
- z-index: 12;
93397
- }
93398
- .sd-editor-resizable-wrapper:hover::after {
93399
- opacity: 1;
93400
- }
93401
- .sd-document-section-block {
93402
- background-color: #fafafa;
93403
- border: 1px solid #ababab;
93404
- border-radius: 4px;
93405
- position: relative;
93406
- }
93407
- .sd-document-section-block-info {
93408
- position: absolute;
93409
- top: -19px;
93410
- left: -1px;
93411
- max-width: 100px;
93412
- min-width: 0;
93413
- height: 18px;
93414
- border: 1px solid #ababab;
93415
- border-bottom: none;
93416
- border-radius: 6px 6px 0 0;
93417
- padding: 0 8px;
93418
- align-items: center;
93419
- font-size: 10px;
93420
- display: none;
93421
- z-index: 100;
93422
- background-color: #fafafa;
93423
- }
93424
- .sd-document-section-block:hover {
93425
- border-radius: 0 4px 4px 4px;
93426
- }
93427
- .sd-document-section-block:hover .sd-document-section-block-info {
93428
- display: flex;
93429
- align-items: center;
93430
- }
93431
- .sd-document-section-block-info span {
93432
- max-width: 100%;
93433
- overflow: hidden;
93434
- white-space: nowrap;
93435
- text-overflow: ellipsis;
93436
- }
93437
- .sd-structured-content,
93438
- .sd-structured-content-block {
93439
- padding: 1px;
93440
- box-sizing: border-box;
93441
- border-radius: 4px;
93442
- border: 1px solid #629be7;
93443
- position: relative;
93444
- }
93445
- .sd-structured-content-draggable {
93446
- font-size: 10px;
93447
- align-items: center;
93448
- justify-content: center;
93449
- position: absolute;
93450
- left: 2px;
93451
- bottom: 100%;
93452
- width: calc(100% - 4px);
93453
- max-width: 110px;
93454
- min-width: 0;
93455
- height: 18px;
93456
- padding: 0 4px;
93457
- border: 1px solid #629be7;
93458
- border-bottom: none;
93459
- border-radius: 6px 6px 0 0;
93460
- background-color: #629be7dd;
93461
- z-index: 10;
93462
- cursor: grab;
93463
- display: none;
93464
- }
93465
- .sd-structured-content-draggable span {
93466
- max-width: 100%;
93467
- overflow: hidden;
93468
- white-space: nowrap;
93469
- text-overflow: ellipsis;
93470
- }
93471
- .sd-structured-content:hover .sd-structured-content-draggable,
93472
- .sd-structured-content-block:hover .sd-structured-content-draggable {
93473
- display: inline-flex;
93474
- }
93475
- `;
93476
- let cachedStyleSheet = null;
93477
- const defaultEditorStyles = editorStyles;
93478
- let shadowEditorStyles = defaultEditorStyles;
93479
- const supportsConstructableStylesheets = () => {
93480
- const DocumentCtor = (
93481
- /** @type {typeof Document | undefined} */
93482
- globalThis.Document
93483
- );
93484
- const CSSStyleSheetCtor = (
93485
- /** @type {typeof CSSStyleSheet | undefined} */
93486
- globalThis.CSSStyleSheet
93487
- );
93488
- if (!DocumentCtor || !CSSStyleSheetCtor) return false;
93489
- const documentPrototype = DocumentCtor.prototype;
93490
- const styleSheetPrototype = CSSStyleSheetCtor.prototype;
93491
- return !!documentPrototype && "adoptedStyleSheets" in documentPrototype && !!styleSheetPrototype && typeof styleSheetPrototype.replaceSync === "function";
93492
- };
93493
- const ensureStyleSheet = (root2) => {
93494
- if (!root2 || !shadowEditorStyles) return;
93495
- if (supportsConstructableStylesheets()) {
93496
- if (!cachedStyleSheet) {
93497
- const CSSStyleSheetCtor = (
93498
- /** @type {typeof CSSStyleSheet} */
93499
- globalThis.CSSStyleSheet
93500
- );
93501
- cachedStyleSheet = new CSSStyleSheetCtor();
93502
- cachedStyleSheet.replaceSync(shadowEditorStyles);
93503
- }
93504
- const sheets = Array.isArray(root2.adoptedStyleSheets) ? root2.adoptedStyleSheets : [];
93505
- if (!sheets.includes(cachedStyleSheet)) {
93506
- root2.adoptedStyleSheets = [...sheets, cachedStyleSheet];
93507
- }
93508
- return;
93509
- }
93510
- const doc2 = (
93511
- /** @type {Document | undefined} */
93512
- globalThis.document
93513
- );
93514
- if (!doc2 || typeof root2.querySelector !== "function") return;
93515
- if (!root2.querySelector("style[data-super-editor-styles]")) {
93516
- const styleEl = doc2.createElement("style");
93517
- styleEl.setAttribute("data-super-editor-styles", "");
93518
- styleEl.textContent = shadowEditorStyles;
93519
- root2.appendChild(styleEl);
93520
- }
93521
- };
93522
- const ensureEditorShadowRoot = (hostElement) => {
93523
- const doc2 = (
93524
- /** @type {Document | undefined} */
93525
- globalThis.document
93526
- );
93527
- if (!hostElement || !doc2 || typeof hostElement.attachShadow !== "function") {
93528
- return { root: null, mount: null };
93529
- }
93530
- const root2 = hostElement.shadowRoot || hostElement.attachShadow({ mode: "open" });
93531
- ensureStyleSheet(root2);
93532
- let mount2 = root2.querySelector(".sd-editor-mount");
93533
- if (!mount2) {
93534
- mount2 = doc2.createElement("div");
93535
- mount2.className = "sd-editor-mount";
93536
- root2.appendChild(mount2);
93537
- }
93538
- return { root: root2, mount: mount2 };
93539
- };
93540
92680
  const _hoisted_1$1$1 = { class: "super-editor-container" };
93541
92681
  const _hoisted_2$a = {
93542
92682
  key: 1,
@@ -93575,7 +92715,6 @@ on the right if it is inside shape textbox.
93575
92715
  const message = useMessage();
93576
92716
  const editorWrapper = ref$1(null);
93577
92717
  const editorElem = ref$1(null);
93578
- const editorMountPoint = shallowRef(null);
93579
92718
  const fileSource = ref$1(null);
93580
92719
  const popoverControls = reactive({
93581
92720
  visible: false,
@@ -93664,15 +92803,9 @@ on the right if it is inside shape textbox.
93664
92803
  return extensions;
93665
92804
  };
93666
92805
  const initEditor = async ({ content, media = {}, mediaFiles = {}, fonts = {} } = {}) => {
93667
- if (!editorElem.value) return;
93668
- const { mount: mount2 } = ensureEditorShadowRoot(editorElem.value);
93669
- editorMountPoint.value = mount2;
93670
- if (editorMountPoint.value) {
93671
- editorMountPoint.value.innerHTML = "";
93672
- }
93673
92806
  editor.value = new Editor({
93674
92807
  mode: "docx",
93675
- element: editorMountPoint.value || editorElem.value,
92808
+ element: editorElem.value,
93676
92809
  fileSource: fileSource.value,
93677
92810
  extensions: getExtensions(),
93678
92811
  externalExtensions: props.options.externalExtensions,
@@ -93719,12 +92852,11 @@ on the right if it is inside shape textbox.
93719
92852
  };
93720
92853
  const handleSuperEditorClick = (event) => {
93721
92854
  emit2("editor-click", { editor: editor.value });
93722
- const pmElement = editor.value?.view?.dom;
92855
+ let pmElement = editorElem.value?.querySelector(".ProseMirror");
93723
92856
  if (!pmElement || !editor.value) {
93724
92857
  return;
93725
92858
  }
93726
- const eventPath = event.composedPath?.() || [];
93727
- const isInsideEditor = eventPath.includes(pmElement);
92859
+ let isInsideEditor = pmElement.contains(event.target);
93728
92860
  if (!isInsideEditor && editor.value.isEditable) {
93729
92861
  editor.value.view?.focus();
93730
92862
  }
@@ -93737,9 +92869,7 @@ on the right if it is inside shape textbox.
93737
92869
  if (props.options?.suppressSkeletonLoader || !props.options?.collaborationProvider) editorReady.value = true;
93738
92870
  });
93739
92871
  const handleMarginClick = (event) => {
93740
- const pmElement = editor.value?.view?.dom;
93741
- const eventPath = event.composedPath?.() || [];
93742
- if (pmElement && eventPath.includes(pmElement)) return;
92872
+ if (event.target.classList.contains("ProseMirror")) return;
93743
92873
  onMarginClickCursorChange(event, editor.value);
93744
92874
  };
93745
92875
  const handleMarginChange = ({ side, value }) => {
@@ -93845,7 +92975,7 @@ on the right if it is inside shape textbox.
93845
92975
  };
93846
92976
  }
93847
92977
  };
93848
- const SuperEditor = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$1, [["__scopeId", "data-v-3d49a1a6"]]);
92978
+ const SuperEditor = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$1, [["__scopeId", "data-v-0c36dd72"]]);
93849
92979
  const _hoisted_1$h = ["innerHTML"];
93850
92980
  const _sfc_main$i = {
93851
92981
  __name: "SuperInput",
@@ -93875,7 +93005,6 @@ on the right if it is inside shape textbox.
93875
93005
  const props = __props;
93876
93006
  const editor = shallowRef();
93877
93007
  const editorElem = ref$1(null);
93878
- const editorMountPoint = shallowRef(null);
93879
93008
  const isFocused = ref$1(false);
93880
93009
  const onTransaction = ({ editor: editor2, transaction }) => {
93881
93010
  const contents = editor2.getHTML();
@@ -93895,15 +93024,10 @@ on the right if it is inside shape textbox.
93895
93024
  props.options.onTransaction = onTransaction;
93896
93025
  props.options.onFocus = onFocus;
93897
93026
  props.options.onBlur = onBlur;
93898
- const { mount: mount2 } = ensureEditorShadowRoot(editorElem.value);
93899
- editorMountPoint.value = mount2;
93900
- if (editorMountPoint.value) {
93901
- editorMountPoint.value.innerHTML = "";
93902
- }
93903
93027
  editor.value = new Editor({
93904
93028
  mode: "text",
93905
93029
  content: document.getElementById("currentContent"),
93906
- element: editorMountPoint.value || editorElem.value,
93030
+ element: editorElem.value,
93907
93031
  extensions: getRichTextExtensions(),
93908
93032
  users: props.users,
93909
93033
  ...props.options
@@ -93942,35 +93066,77 @@ on the right if it is inside shape textbox.
93942
93066
  };
93943
93067
  }
93944
93068
  };
93945
- const SuperInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["__scopeId", "data-v-23a4e794"]]);
93946
- const baseHandlers = {
93947
- ...runPropertyTranslators,
93069
+ const SuperInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["__scopeId", "data-v-4d5cff52"]]);
93070
+ const additionalHandlers = Object.freeze({
93071
+ "mc:AlternateContent": translator,
93072
+ "w:b": translator$12,
93073
+ "w:bidiVisual": translator$F,
93074
+ "w:bookmarkEnd": translator$1,
93075
+ "w:bookmarkStart": translator$2,
93076
+ "w:bottom": translator$s,
93948
93077
  "w:br": translator$16,
93949
93078
  "w:cantSplit": translator$T,
93950
93079
  "w:cnfStyle": translator$S,
93080
+ "w:color": translator$_,
93951
93081
  "w:divId": translator$R,
93082
+ "w:drawing": translator$4,
93083
+ "w:end": translator$q,
93952
93084
  "w:gridAfter": translator$Q,
93953
93085
  "w:gridBefore": translator$P,
93086
+ "w:gridCol": translator$b,
93954
93087
  "w:hidden": translator$O,
93088
+ "w:highlight": translator$15,
93955
93089
  "w:hyperlink": translator$7,
93090
+ "w:i": translator$11,
93091
+ "w:insideH": translator$o,
93092
+ "w:insideV": translator$n,
93956
93093
  "w:jc": translator$N,
93094
+ "w:left": translator$m,
93957
93095
  "w:p": translator$13,
93958
93096
  "w:r": translator$U,
93097
+ "w:rFonts": translator$Z,
93959
93098
  "w:rPr": translator$V,
93099
+ "w:rStyle": translator$Y,
93100
+ "w:right": translator$k,
93960
93101
  "w:sdt": translator$3,
93102
+ "w:shd": translator$E,
93103
+ "w:start": translator$i,
93104
+ "w:strike": translator$$,
93105
+ "w:sz": translator$X,
93106
+ "w:szCs": translator$W,
93961
93107
  "w:tab": translator$14,
93108
+ "w:tbl": translator$9,
93109
+ "w:tblBorders": translator$e,
93110
+ "w:tblCaption": translator$D,
93111
+ "w:tblCellMar": translator$d,
93962
93112
  "w:tblCellSpacing": translator$M,
93113
+ "w:tblDescription": translator$C,
93114
+ "w:tblGrid": translator$a,
93963
93115
  "w:tblHeader": translator$L,
93116
+ "w:tblInd": translator$B,
93117
+ "w:tblLayout": translator$A,
93118
+ "w:tblLook": translator$z,
93119
+ "w:tblOverlap": translator$y,
93120
+ "w:tblPr": translator$c,
93121
+ "w:tblStyle": translator$x,
93122
+ "w:tblStyleColBandSize": translator$w,
93123
+ "w:tblStyleRowBandSize": translator$v,
93124
+ "w:tblW": translator$u,
93125
+ "w:tblpPr": translator$t,
93964
93126
  "w:tc": translator$8,
93127
+ "w:top": translator$g,
93965
93128
  "w:tr": translator$G,
93966
93129
  "w:trHeight": translator$K,
93967
93130
  "w:trPr": translator$H,
93131
+ "w:u": translator$10,
93968
93132
  "w:wAfter": translator$J,
93969
93133
  "w:wBefore": translator$I,
93970
93134
  "wp:anchor": translator$6,
93971
- "wp:inline": translator$5,
93972
- "w:bookmarkStart": translator$2,
93973
- "w:bookmarkEnd": translator$1
93135
+ "wp:inline": translator$5
93136
+ });
93137
+ const baseHandlers = {
93138
+ ...runPropertyTranslators,
93139
+ ...additionalHandlers
93974
93140
  };
93975
93141
  const registeredHandlers = Object.freeze(baseHandlers);
93976
93142
  const Extensions = {