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