@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
@@ -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
  }
@@ -69456,45 +69454,6 @@ const Search = Extension.create({
69456
69454
  };
69457
69455
  }
69458
69456
  });
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
69457
  const NodeResizerKey = new PluginKey("node-resizer");
69499
69458
  const nodeResizer = (nodeNames = ["image"], editor) => {
69500
69459
  let resizeState = {
@@ -69549,19 +69508,16 @@ const nodeResizer = (nodeNames = ["image"], editor) => {
69549
69508
  view(view) {
69550
69509
  editorView = view;
69551
69510
  globalClickHandler = (event) => {
69552
- const wrapperInPath = findInEventPath(event, ".sd-editor-resizable-wrapper");
69553
- const containerInPath = findInEventPath(event, ".sd-editor-resize-container");
69554
- if (!wrapperInPath && !containerInPath) {
69511
+ if (!event.target.closest(".sd-editor-resizable-wrapper") && !event.target.closest(".sd-editor-resize-container")) {
69555
69512
  hideResizeHandles();
69556
69513
  }
69557
69514
  };
69558
69515
  document.addEventListener("click", globalClickHandler);
69559
69516
  globalMousedownHandler = (event) => {
69560
- const handle = findInEventPath(event, ".sd-editor-resize-handle");
69561
- if (handle) {
69517
+ if (event.target.closest(".sd-editor-resize-handle")) {
69562
69518
  event.preventDefault();
69563
69519
  event.stopPropagation();
69564
- startResize(editorView, event, handle);
69520
+ startResize(editorView, event, event.target);
69565
69521
  return true;
69566
69522
  }
69567
69523
  };
@@ -69578,7 +69534,7 @@ const nodeResizer = (nodeNames = ["image"], editor) => {
69578
69534
  const prevSelection = prevState.selection;
69579
69535
  if (selection.from !== prevSelection.from || selection.to !== prevSelection.to) {
69580
69536
  setTimeout(() => {
69581
- const selectedResizableWrapper = queryWithinRoot(editorView?.dom, ".sd-editor-resizable-wrapper");
69537
+ const selectedResizableWrapper = document.querySelector(".sd-editor-resizable-wrapper");
69582
69538
  if (selectedResizableWrapper) {
69583
69539
  showResizeHandles(view2, selectedResizableWrapper);
69584
69540
  } else {
@@ -79691,7 +79647,6 @@ const _sfc_main$1$1 = {
79691
79647
  const toolbarItemRefs = ref$1([]);
79692
79648
  const props = __props;
79693
79649
  const currentItem = ref$1(null);
79694
- const { proxy } = getCurrentInstance();
79695
79650
  const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode();
79696
79651
  const isMobile = window.matchMedia("(max-width: 768px)").matches;
79697
79652
  const styleMap = {
@@ -79790,8 +79745,10 @@ const _sfc_main$1$1 = {
79790
79745
  nextButtonGroup.setAttribute("tabindex", "0");
79791
79746
  nextButtonGroup.focus();
79792
79747
  } else {
79793
- const editorDom = proxy?.$toolbar?.activeEditor?.view?.dom;
79794
- editorDom?.focus();
79748
+ const editor = document.querySelector(".ProseMirror");
79749
+ if (editor) {
79750
+ editor.focus();
79751
+ }
79795
79752
  }
79796
79753
  };
79797
79754
  const moveToPreviousButtonGroup = (e) => {
@@ -79937,7 +79894,7 @@ const _sfc_main$1$1 = {
79937
79894
  };
79938
79895
  }
79939
79896
  };
79940
- const ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1$1, [["__scopeId", "data-v-c1b3551b"]]);
79897
+ const ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1$1, [["__scopeId", "data-v-f42ec7e6"]]);
79941
79898
  const _sfc_main$f = {
79942
79899
  __name: "Toolbar",
79943
79900
  emits: ["command", "toggle", "select"],
@@ -84711,12 +84668,10 @@ const _sfc_main$4 = {
84711
84668
  }
84712
84669
  };
84713
84670
  function adjustPaginationBreaks(editorElem, editor) {
84714
- const hostElement = editorElem.value;
84715
- if (!hostElement || !editor?.value?.options?.scale) return;
84671
+ if (!editorElem.value || !editor?.value?.options?.scale) return;
84716
84672
  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");
84673
+ const bounds = editorElem.value.getBoundingClientRect();
84674
+ const breakNodes = editorElem.value.querySelectorAll(".pagination-break-wrapper");
84720
84675
  let firstLeft;
84721
84676
  breakNodes.forEach((node) => {
84722
84677
  const nodeBounds = node.getBoundingClientRect();
@@ -85007,821 +84962,6 @@ const _sfc_main$2 = {
85007
84962
  };
85008
84963
  const GenericPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-cbddcc0f"]]);
85009
84964
  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
84965
  const _hoisted_1$1 = { class: "super-editor-container" };
85826
84966
  const _hoisted_2 = {
85827
84967
  key: 1,
@@ -85860,7 +85000,6 @@ const _sfc_main$1 = {
85860
85000
  const message = useMessage();
85861
85001
  const editorWrapper = ref$1(null);
85862
85002
  const editorElem = ref$1(null);
85863
- const editorMountPoint = shallowRef(null);
85864
85003
  const fileSource = ref$1(null);
85865
85004
  const popoverControls = reactive({
85866
85005
  visible: false,
@@ -85949,15 +85088,9 @@ const _sfc_main$1 = {
85949
85088
  return extensions;
85950
85089
  };
85951
85090
  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
85091
  editor.value = new Editor({
85959
85092
  mode: "docx",
85960
- element: editorMountPoint.value || editorElem.value,
85093
+ element: editorElem.value,
85961
85094
  fileSource: fileSource.value,
85962
85095
  extensions: getExtensions(),
85963
85096
  externalExtensions: props.options.externalExtensions,
@@ -86004,12 +85137,11 @@ const _sfc_main$1 = {
86004
85137
  };
86005
85138
  const handleSuperEditorClick = (event) => {
86006
85139
  emit("editor-click", { editor: editor.value });
86007
- const pmElement = editor.value?.view?.dom;
85140
+ let pmElement = editorElem.value?.querySelector(".ProseMirror");
86008
85141
  if (!pmElement || !editor.value) {
86009
85142
  return;
86010
85143
  }
86011
- const eventPath = event.composedPath?.() || [];
86012
- const isInsideEditor = eventPath.includes(pmElement);
85144
+ let isInsideEditor = pmElement.contains(event.target);
86013
85145
  if (!isInsideEditor && editor.value.isEditable) {
86014
85146
  editor.value.view?.focus();
86015
85147
  }
@@ -86022,9 +85154,7 @@ const _sfc_main$1 = {
86022
85154
  if (props.options?.suppressSkeletonLoader || !props.options?.collaborationProvider) editorReady.value = true;
86023
85155
  });
86024
85156
  const handleMarginClick = (event) => {
86025
- const pmElement = editor.value?.view?.dom;
86026
- const eventPath = event.composedPath?.() || [];
86027
- if (pmElement && eventPath.includes(pmElement)) return;
85157
+ if (event.target.classList.contains("ProseMirror")) return;
86028
85158
  onMarginClickCursorChange(event, editor.value);
86029
85159
  };
86030
85160
  const handleMarginChange = ({ side, value }) => {
@@ -86130,7 +85260,7 @@ const _sfc_main$1 = {
86130
85260
  };
86131
85261
  }
86132
85262
  };
86133
- const SuperEditor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3d49a1a6"]]);
85263
+ const SuperEditor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-0c36dd72"]]);
86134
85264
  const _hoisted_1 = ["innerHTML"];
86135
85265
  const _sfc_main = {
86136
85266
  __name: "SuperInput",
@@ -86160,7 +85290,6 @@ const _sfc_main = {
86160
85290
  const props = __props;
86161
85291
  const editor = shallowRef();
86162
85292
  const editorElem = ref$1(null);
86163
- const editorMountPoint = shallowRef(null);
86164
85293
  const isFocused = ref$1(false);
86165
85294
  const onTransaction = ({ editor: editor2, transaction }) => {
86166
85295
  const contents = editor2.getHTML();
@@ -86180,15 +85309,10 @@ const _sfc_main = {
86180
85309
  props.options.onTransaction = onTransaction;
86181
85310
  props.options.onFocus = onFocus;
86182
85311
  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
85312
  editor.value = new Editor({
86189
85313
  mode: "text",
86190
85314
  content: document.getElementById("currentContent"),
86191
- element: editorMountPoint.value || editorElem.value,
85315
+ element: editorElem.value,
86192
85316
  extensions: getRichTextExtensions(),
86193
85317
  users: props.users,
86194
85318
  ...props.options
@@ -86227,35 +85351,77 @@ const _sfc_main = {
86227
85351
  };
86228
85352
  }
86229
85353
  };
86230
- const SuperInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-23a4e794"]]);
86231
- const baseHandlers = {
86232
- ...runPropertyTranslators,
85354
+ const SuperInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4d5cff52"]]);
85355
+ const additionalHandlers = Object.freeze({
85356
+ "mc:AlternateContent": translator,
85357
+ "w:b": translator$12,
85358
+ "w:bidiVisual": translator$F,
85359
+ "w:bookmarkEnd": translator$1,
85360
+ "w:bookmarkStart": translator$2,
85361
+ "w:bottom": translator$s,
86233
85362
  "w:br": translator$16,
86234
85363
  "w:cantSplit": translator$T,
86235
85364
  "w:cnfStyle": translator$S,
85365
+ "w:color": translator$_,
86236
85366
  "w:divId": translator$R,
85367
+ "w:drawing": translator$4,
85368
+ "w:end": translator$q,
86237
85369
  "w:gridAfter": translator$Q,
86238
85370
  "w:gridBefore": translator$P,
85371
+ "w:gridCol": translator$b,
86239
85372
  "w:hidden": translator$O,
85373
+ "w:highlight": translator$15,
86240
85374
  "w:hyperlink": translator$7,
85375
+ "w:i": translator$11,
85376
+ "w:insideH": translator$o,
85377
+ "w:insideV": translator$n,
86241
85378
  "w:jc": translator$N,
85379
+ "w:left": translator$m,
86242
85380
  "w:p": translator$13,
86243
85381
  "w:r": translator$U,
85382
+ "w:rFonts": translator$Z,
86244
85383
  "w:rPr": translator$V,
85384
+ "w:rStyle": translator$Y,
85385
+ "w:right": translator$k,
86245
85386
  "w:sdt": translator$3,
85387
+ "w:shd": translator$E,
85388
+ "w:start": translator$i,
85389
+ "w:strike": translator$$,
85390
+ "w:sz": translator$X,
85391
+ "w:szCs": translator$W,
86246
85392
  "w:tab": translator$14,
85393
+ "w:tbl": translator$9,
85394
+ "w:tblBorders": translator$e,
85395
+ "w:tblCaption": translator$D,
85396
+ "w:tblCellMar": translator$d,
86247
85397
  "w:tblCellSpacing": translator$M,
85398
+ "w:tblDescription": translator$C,
85399
+ "w:tblGrid": translator$a,
86248
85400
  "w:tblHeader": translator$L,
85401
+ "w:tblInd": translator$B,
85402
+ "w:tblLayout": translator$A,
85403
+ "w:tblLook": translator$z,
85404
+ "w:tblOverlap": translator$y,
85405
+ "w:tblPr": translator$c,
85406
+ "w:tblStyle": translator$x,
85407
+ "w:tblStyleColBandSize": translator$w,
85408
+ "w:tblStyleRowBandSize": translator$v,
85409
+ "w:tblW": translator$u,
85410
+ "w:tblpPr": translator$t,
86249
85411
  "w:tc": translator$8,
85412
+ "w:top": translator$g,
86250
85413
  "w:tr": translator$G,
86251
85414
  "w:trHeight": translator$K,
86252
85415
  "w:trPr": translator$H,
85416
+ "w:u": translator$10,
86253
85417
  "w:wAfter": translator$J,
86254
85418
  "w:wBefore": translator$I,
86255
85419
  "wp:anchor": translator$6,
86256
- "wp:inline": translator$5,
86257
- "w:bookmarkStart": translator$2,
86258
- "w:bookmarkEnd": translator$1
85420
+ "wp:inline": translator$5
85421
+ });
85422
+ const baseHandlers = {
85423
+ ...runPropertyTranslators,
85424
+ ...additionalHandlers
86259
85425
  };
86260
85426
  const registeredHandlers = Object.freeze(baseHandlers);
86261
85427
  const Extensions = {