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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/chunks/{PdfViewer-BrJSIJjF.cjs → PdfViewer-BR9iwva-.cjs} +1 -1
  2. package/dist/chunks/{PdfViewer-CJAEtjUD.es.js → PdfViewer-CwVW7MVJ.es.js} +1 -1
  3. package/dist/chunks/{index-NiOytIlp.cjs → index-BNA5J__D.cjs} +2 -2
  4. package/dist/chunks/{index-BDfKQQiO.es.js → index-CjQDYBP2.es.js} +2 -2
  5. package/dist/chunks/{super-editor.es-iVTtEcot.es.js → super-editor.es-C5dhT0uU.es.js} +98 -911
  6. package/dist/chunks/{super-editor.es-DmkkMNKU.cjs → super-editor.es-Ct59l8tt.cjs} +98 -911
  7. package/dist/core/types/index.d.ts.map +1 -1
  8. package/dist/style.css +11 -11
  9. package/dist/super-editor/ai-writer.es.js +2 -2
  10. package/dist/super-editor/chunks/{converter-CYC0HBJe.js → converter-DYAHhSrg.js} +65 -26
  11. package/dist/super-editor/chunks/{docx-zipper-DlwteneT.js → docx-zipper-BDbCmfbE.js} +1 -1
  12. package/dist/super-editor/chunks/{editor-BzT9rpXb.js → editor-B1W7AdgQ.js} +29 -59
  13. package/dist/super-editor/chunks/{toolbar-BnTHDmlP.js → toolbar-CCvglB_X.js} +7 -6
  14. package/dist/super-editor/converter.es.js +1 -1
  15. package/dist/super-editor/docx-zipper.es.js +2 -2
  16. package/dist/super-editor/editor.es.js +3 -3
  17. package/dist/super-editor/file-zipper.es.js +1 -1
  18. package/dist/super-editor/src/components/slash-menu/contextmenu-helpers.d.ts +1 -0
  19. package/dist/super-editor/src/core/commands/__tests__/schemaWithLists.d.ts +2 -0
  20. package/dist/super-editor/src/core/commands/__tests__/testHelpers.d.ts +4 -0
  21. package/dist/super-editor/src/core/commands/__tests__/testSchema.d.ts +2 -0
  22. package/dist/super-editor/src/core/commands/tests/commandTestUtils.d.ts +7 -0
  23. package/dist/super-editor/src/core/commands/tests/test-schema.d.ts +2 -0
  24. package/dist/super-editor/src/extensions/custom-selection/custom-selection.d.ts +1 -0
  25. package/dist/super-editor/style.css +11 -11
  26. package/dist/super-editor/super-editor.es.js +94 -878
  27. package/dist/super-editor/toolbar.es.js +2 -2
  28. package/dist/super-editor.cjs +1 -1
  29. package/dist/super-editor.es.js +1 -1
  30. package/dist/superdoc.cjs +2 -2
  31. package/dist/superdoc.es.js +2 -2
  32. package/dist/superdoc.umd.js +98 -911
  33. package/dist/superdoc.umd.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/super-editor/src/extensions/noderesizer/helpers.d.ts +0 -2
  36. package/dist/super-editor/src/extensions/run-item/index.d.ts +0 -1
  37. package/dist/super-editor/src/extensions/run-item/run-item.d.ts +0 -26
  38. package/dist/super-editor/src/utils/shadow-root.d.ts +0 -12
@@ -9,14 +9,14 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
9
9
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
10
10
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
11
11
  var _SuperToolbar_instances, initToolbarGroups_fn, _interceptedCommands, makeToolbarItems_fn, initDefaultFonts_fn, updateHighlightColors_fn, deactivateAll_fn, updateToolbarHistory_fn, runCommandWithArgumentOnly_fn;
12
- import { av as getDefaultExportFromCjs, V as v4, T as TextSelection$1, v as getMarkRange, ay as vClickOutside, H as findParentNode, az as getActiveFormatting, ap as isInTable, aA as readFromClipboard, aB as handleClipboardPaste, aC as getFileObject, aD as runPropertyTranslators, aE as translator, aF as translator$1, aG as translator$2, aH as translator$3, aI as translator$4, aJ as translator$5, aK as translator$6, aL as translator$7, aM as translator$8, aN as translator$9, aO as translator$a, aP as translator$b, aQ as translator$c, aR as translator$d, aS as translator$e, aT as translator$f, aU as translator$g, aV as translator$h, aW as translator$i, aX as translator$j, aY as translator$k, aZ as translator$l, a_ as translator$m, a$ as translator$n, b0 as translator$o, b1 as translator$p, a as Plugin } from "./chunks/converter-CYC0HBJe.js";
13
- import { b2, a5, i, a2 } from "./chunks/converter-CYC0HBJe.js";
14
- import { _ as _export_sfc, u as useHighContrastMode, a as getQuickFormatList, b as generateLinkedStyleString, c as getFileOpener, d as checkAndProcessImage, r as replaceSelectionWithImagePlaceholder, e as uploadAndInsertImage, y as yUndoPluginKey, f as undoDepth, h as redoDepth, S as SlashMenuPluginKey, E as Editor, i as getStarterExtensions, P as Placeholder, j as getRichTextExtensions, M as Mark, k as Extension, A as Attribute, N as Node } from "./chunks/editor-BzT9rpXb.js";
15
- import { n, C, o, T, l, p, m } from "./chunks/editor-BzT9rpXb.js";
12
+ import { av as getDefaultExportFromCjs, V as v4, T as TextSelection$1, v as getMarkRange, ay as vClickOutside, H as findParentNode, az as getActiveFormatting, ap as isInTable, aA as readFromClipboard, aB as handleClipboardPaste, aC as getFileObject, aD as runPropertyTranslators, aE as translator, aF as translator$1, aG as translator$2, aH as translator$3, aI as translator$4, aJ as translator$5, aK as translator$6, aL as translator$7, aM as translator$8, aN as translator$9, aO as translator$a, aP as translator$b, aQ as translator$c, aR as translator$d, aS as translator$e, aT as translator$f, aU as translator$g, aV as translator$h, aW as translator$i, aX as translator$j, aY as translator$k, aZ as translator$l, a_ as translator$m, a$ as translator$n, b0 as translator$o, b1 as translator$p, b2 as translator$q, b3 as translator$r, b4 as translator$s, b5 as translator$t, b6 as translator$u, b7 as translator$v, b8 as translator$w, b9 as translator$x, ba as translator$y, bb as translator$z, bc as translator$A, bd as translator$B, be as translator$C, bf as translator$D, bg as translator$E, bh as translator$F, bi as translator$G, bj as translator$H, bk as translator$I, bl as translator$J, bm as translator$K, bn as translator$L, bo as translator$M, bp as translator$N, bq as translator$O, br as translator$P, bs as translator$Q, bt as translator$R, bu as translator$S, bv as translator$T, bw as translator$U, bx as translator$V, by as translator$W, bz as translator$X, bA as translator$Y, bB as translator$Z, bC as translator$_, bD as translator$$, bE as translator$10, a as Plugin } from "./chunks/converter-DYAHhSrg.js";
13
+ import { bF, a5, i, a2 } from "./chunks/converter-DYAHhSrg.js";
14
+ import { _ as _export_sfc, u as useHighContrastMode, a as getQuickFormatList, b as generateLinkedStyleString, c as getFileOpener, d as checkAndProcessImage, r as replaceSelectionWithImagePlaceholder, e as uploadAndInsertImage, y as yUndoPluginKey, f as undoDepth, h as redoDepth, S as SlashMenuPluginKey, E as Editor, i as getStarterExtensions, P as Placeholder, j as getRichTextExtensions, M as Mark, k as Extension, A as Attribute, N as Node } from "./chunks/editor-B1W7AdgQ.js";
15
+ import { n, C, o, T, l, p, m } from "./chunks/editor-B1W7AdgQ.js";
16
16
  import { ref, onMounted, createElementBlock, openBlock, normalizeClass, unref, Fragment, renderList, createElementVNode, withModifiers, toDisplayString, createCommentVNode, normalizeStyle, computed, watch, withDirectives, withKeys, vModelText, createTextVNode, createVNode, h, createApp, markRaw, nextTick, onBeforeUnmount, reactive, onUnmounted, renderSlot, shallowRef, createBlock, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps } from "vue";
17
- import { t as toolbarIcons, s as sanitizeNumber, T as Toolbar, m as magicWandIcon, p as plusIconSvg, a as trashIconSvg, l as linkIconSvg, b as tableIconSvg, c as scissorsIconSvg, d as copyIconSvg, e as pasteIconSvg, f as borderNoneIconSvg, g as arrowsToDotIconSvg, h as arrowsLeftRightIconSvg, w as wrenchIconSvg, u as useMessage, N as NSkeleton } from "./chunks/toolbar-BnTHDmlP.js";
17
+ import { t as toolbarIcons, s as sanitizeNumber, T as Toolbar, m as magicWandIcon, p as plusIconSvg, a as trashIconSvg, l as linkIconSvg, b as tableIconSvg, c as scissorsIconSvg, d as copyIconSvg, e as pasteIconSvg, f as borderNoneIconSvg, g as arrowsToDotIconSvg, h as arrowsLeftRightIconSvg, w as wrenchIconSvg, u as useMessage, N as NSkeleton } from "./chunks/toolbar-CCvglB_X.js";
18
18
  import AIWriter from "./ai-writer.es.js";
19
- import { D } from "./chunks/docx-zipper-DlwteneT.js";
19
+ import { D } from "./chunks/docx-zipper-BDbCmfbE.js";
20
20
  import { createZip } from "./file-zipper.es.js";
21
21
  var eventemitter3 = { exports: {} };
22
22
  var hasRequiredEventemitter3;
@@ -3695,6 +3695,14 @@ function getStructureFromResolvedPos(state, pos) {
3695
3695
  return null;
3696
3696
  }
3697
3697
  }
3698
+ const shouldBypassContextMenu = (event) => {
3699
+ if (!event) return false;
3700
+ if (event.ctrlKey || event.metaKey) {
3701
+ return true;
3702
+ }
3703
+ const isKeyboardInvocation = event.type === "contextmenu" && typeof event.detail === "number" && event.detail === 0 && (event.button === 0 || event.button === void 0) && event.clientX === 0 && event.clientY === 0;
3704
+ return Boolean(isKeyboardInvocation);
3705
+ };
3698
3706
  const isModuleEnabled = (editorOptions, moduleName) => {
3699
3707
  switch (moduleName) {
3700
3708
  case "ai":
@@ -4069,8 +4077,7 @@ const _sfc_main$4 = {
4069
4077
  };
4070
4078
  const handleRightClick = async (event) => {
4071
4079
  const readOnly = !props.editor?.isEditable;
4072
- const isHoldingCtrl = event.ctrlKey;
4073
- if (readOnly || isHoldingCtrl) {
4080
+ if (readOnly || shouldBypassContextMenu(event)) {
4074
4081
  return;
4075
4082
  }
4076
4083
  event.preventDefault();
@@ -4231,12 +4238,10 @@ const _sfc_main$4 = {
4231
4238
  }
4232
4239
  };
4233
4240
  function adjustPaginationBreaks(editorElem, editor) {
4234
- const hostElement = editorElem.value;
4235
- if (!hostElement || !editor?.value?.options?.scale) return;
4241
+ if (!editorElem.value || !editor?.value?.options?.scale) return;
4236
4242
  const zoom = editor.value.options.scale;
4237
- const bounds = hostElement.getBoundingClientRect();
4238
- const searchRoot = hostElement.shadowRoot || hostElement;
4239
- const breakNodes = searchRoot.querySelectorAll(".pagination-break-wrapper");
4243
+ const bounds = editorElem.value.getBoundingClientRect();
4244
+ const breakNodes = editorElem.value.querySelectorAll(".pagination-break-wrapper");
4240
4245
  let firstLeft;
4241
4246
  breakNodes.forEach((node) => {
4242
4247
  const nodeBounds = node.getBoundingClientRect();
@@ -4527,821 +4532,6 @@ const _sfc_main$2 = {
4527
4532
  };
4528
4533
  const GenericPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-cbddcc0f"]]);
4529
4534
  const BlankDOCX = "data:application/octet-stream;base64,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";
4530
- const editorStyles = `:root {
4531
- /* CSS variables */
4532
- }
4533
- .sd-input-active {
4534
- border: 1px solid #1355ff !important;
4535
- }
4536
- .sd-super-editor-html .ProseMirror {
4537
- border: 1px solid #d9d9d9;
4538
- outline: none;
4539
- border-radius: 8px;
4540
- height: 100%;
4541
- width: 100%;
4542
- outline: none;
4543
- }
4544
- a {
4545
- text-decoration: auto;
4546
- }
4547
- /**
4548
- * Basic ProseMirror styles.
4549
- * https://github.com/ProseMirror/prosemirror-view/blob/master/style/prosemirror.css
4550
- */
4551
- .ProseMirror {
4552
- position: relative;
4553
- }
4554
- .ProseMirror {
4555
- word-wrap: break-word;
4556
- white-space: pre-wrap;
4557
- white-space: break-spaces;
4558
- -webkit-font-variant-ligatures: none;
4559
- font-variant-ligatures: none;
4560
- font-feature-settings: 'liga' 0; /* the above doesn't seem to work in Edge */
4561
- }
4562
- .ProseMirror pre {
4563
- white-space: pre-wrap;
4564
- }
4565
- .ProseMirror ol,
4566
- .ProseMirror ul {
4567
- margin-block-start: 0;
4568
- margin-block-end: 0;
4569
- margin-inline-start: 0;
4570
- margin-inline-end: 0;
4571
- }
4572
- .ProseMirror ol,
4573
- .ProseMirror ul {
4574
- padding-inline-start: 0;
4575
- padding-left: 0;
4576
- list-style: none;
4577
- }
4578
- .ProseMirror li::marker {
4579
- content: none;
4580
- }
4581
- .ProseMirror li::marker {
4582
- padding: 0;
4583
- margin: 0;
4584
- }
4585
- .ProseMirror li > p {
4586
- margin: 0;
4587
- padding: 0;
4588
- display: inline-block;
4589
- }
4590
- .ProseMirror.header-footer-edit > p img,
4591
- .ProseMirror.header-footer-edit > p a,
4592
- .ProseMirror.header-footer-edit li img,
4593
- .ProseMirror.header-footer-edit li a,
4594
- .ProseMirror.header-footer-edit span img,
4595
- .ProseMirror.header-footer-edit span a {
4596
- opacity: 1;
4597
- }
4598
- .ProseMirror.header-footer-edit .pagination-break-wrapper {
4599
- color: initial !important;
4600
- }
4601
- .ProseMirror.header-footer-edit .pagination-break-wrapper span {
4602
- color: initial !important;
4603
- }
4604
- .ProseMirror.header-footer-edit .pagination-break-wrapper img,
4605
- .ProseMirror.header-footer-edit .pagination-break-wrapper a {
4606
- opacity: 1;
4607
- }
4608
- .pagination-section-header div[contenteditable='false'] {
4609
- user-select: none;
4610
- }
4611
- /**
4612
- * Hide marker for indented lists.
4613
- * If a list-item contains a list but doesn't contain a "p" tag with text.
4614
- */
4615
- .ProseMirror ol {
4616
- margin: 0;
4617
- }
4618
- .ProseMirror li:has(> ul:first-child, > ol:first-child):not(:has(> p)) {
4619
- list-style-type: none;
4620
- }
4621
- .ProseMirror li:has(> ul:first-child, > ol:first-child):not(:has(> p))::marker {
4622
- content: '';
4623
- }
4624
- .ProseMirror-hideselection *::selection {
4625
- background: transparent;
4626
- }
4627
- .ProseMirror-hideselection *::-moz-selection {
4628
- background: transparent;
4629
- }
4630
- .ProseMirror-hideselection * {
4631
- caret-color: transparent;
4632
- }
4633
- /* See https://github.com/ProseMirror/prosemirror/issues/1421#issuecomment-1759320191 */
4634
- .ProseMirror [draggable][contenteditable='false'] {
4635
- user-select: text;
4636
- }
4637
- .ProseMirror-selectednode {
4638
- outline: 2px solid #8cf;
4639
- }
4640
- /* Make sure li selections wrap around markers */
4641
- li.ProseMirror-selectednode {
4642
- outline: none;
4643
- }
4644
- li.ProseMirror-selectednode:after {
4645
- content: '';
4646
- position: absolute;
4647
- left: -32px;
4648
- right: -2px;
4649
- top: -2px;
4650
- bottom: -2px;
4651
- border: 2px solid #8cf;
4652
- pointer-events: none;
4653
- }
4654
- .ProseMirror img {
4655
- height: auto;
4656
- max-width: 100%;
4657
- }
4658
- /* Protect against generic img rules */
4659
- img.ProseMirror-separator {
4660
- display: inline !important;
4661
- border: none !important;
4662
- margin: 0 !important;
4663
- }
4664
- .ProseMirror .sd-editor-tab {
4665
- display: inline-block;
4666
- vertical-align: text-bottom;
4667
- }
4668
- .ProseMirror u .sd-editor-tab:not(.pagination-inner .sd-editor-tab) {
4669
- white-space: pre;
4670
- border-bottom: 1px solid #000;
4671
- margin-bottom: 1.5px;
4672
- }
4673
- /*
4674
- Tables
4675
- https://github.com/ProseMirror/prosemirror-tables/blob/master/style/tables.css
4676
- https://github.com/ProseMirror/prosemirror-tables/blob/master/demo/index.html
4677
- */
4678
- .ProseMirror.resize-cursor {
4679
- cursor: ew-resize;
4680
- cursor: col-resize;
4681
- }
4682
- .ProseMirror .tableWrapper {
4683
- --table-border-width: 1px;
4684
- --offset: 2px;
4685
-
4686
- overflow-x: auto;
4687
- scrollbar-width: thin;
4688
- overflow: hidden;
4689
-
4690
- /*
4691
- The border width does not need to be multiplied by two,
4692
- for tables it works differently. */
4693
- width: calc(100% + (var(--table-border-width) + var(--offset)));
4694
- }
4695
- .ProseMirror table {
4696
- border-collapse: collapse;
4697
- border-spacing: 0;
4698
- table-layout: fixed;
4699
- margin: 0;
4700
- /* width: 100%; */
4701
- }
4702
- .ProseMirror tr {
4703
- position: relative;
4704
- }
4705
- .ProseMirror td,
4706
- .ProseMirror th {
4707
- min-width: 1em;
4708
- position: relative;
4709
- vertical-align: top;
4710
- box-sizing: border-box;
4711
- overflow-wrap: anywhere;
4712
- }
4713
- .ProseMirror th {
4714
- font-weight: bold;
4715
- text-align: left;
4716
- }
4717
- .ProseMirror table .column-resize-handle {
4718
- position: absolute;
4719
- right: -2px;
4720
- top: 0;
4721
- bottom: -2px; /* 0 */
4722
- width: 4px;
4723
- z-index: 20;
4724
- background-color: #adf;
4725
- pointer-events: none;
4726
- }
4727
- .ProseMirror table .selectedCell:after {
4728
- position: absolute;
4729
- content: '';
4730
- left: 0;
4731
- right: 0;
4732
- top: 0;
4733
- bottom: 0;
4734
- background: rgba(200, 200, 255, 0.4);
4735
- pointer-events: none;
4736
- z-index: 2;
4737
- }
4738
- /* Tables - end */
4739
- /* Track changes */
4740
- .ProseMirror .track-insert-dec,
4741
- .ProseMirror .track-delete-dec,
4742
- .ProseMirror .track-format-dec {
4743
- pointer-events: none;
4744
- }
4745
- .ProseMirror .track-insert-dec.hidden,
4746
- .ProseMirror .track-delete-dec.hidden {
4747
- display: none;
4748
- }
4749
- .ProseMirror .track-insert-dec.highlighted {
4750
- border-top: 1px dashed #00853d;
4751
- border-bottom: 1px dashed #00853d;
4752
- background-color: #399c7222;
4753
- }
4754
- .ProseMirror .track-delete-dec.highlighted {
4755
- border-top: 1px dashed #cb0e47;
4756
- border-bottom: 1px dashed #cb0e47;
4757
- background-color: #cb0e4722;
4758
- text-decoration: line-through;
4759
- text-decoration-thickness: 2px;
4760
- }
4761
- .ProseMirror .track-format-dec.highlighted {
4762
- border-bottom: 2px solid gold;
4763
- }
4764
- .ProseMirror .track-delete-widget {
4765
- visibility: hidden;
4766
- }
4767
- /* Track changes - end */
4768
- /* Collaboration cursors */
4769
- .ProseMirror > .ProseMirror-yjs-cursor:first-child {
4770
- margin-top: 16px;
4771
- }
4772
- .ProseMirror-yjs-cursor {
4773
- position: relative;
4774
- margin-left: -1px;
4775
- margin-right: -1px;
4776
- border-left: 1px solid black;
4777
- border-right: 1px solid black;
4778
- border-color: orange;
4779
- word-break: normal;
4780
- pointer-events: none;
4781
- }
4782
- .ProseMirror-yjs-cursor > div {
4783
- position: absolute;
4784
- top: -1.05em;
4785
- left: -1px;
4786
- font-size: 13px;
4787
- background-color: rgb(250, 129, 0);
4788
- font-family: serif;
4789
- font-style: normal;
4790
- font-weight: normal;
4791
- line-height: normal;
4792
- user-select: none;
4793
- color: white;
4794
- padding-left: 2px;
4795
- padding-right: 2px;
4796
- white-space: nowrap;
4797
- }
4798
- /* Collaboration cursors - end */
4799
- /* Image placeholder */
4800
- .ProseMirror placeholder {
4801
- display: inline;
4802
- border: 1px solid #ccc;
4803
- color: #ccc;
4804
- }
4805
- .ProseMirror placeholder:after {
4806
- content: '☁';
4807
- font-size: 200%;
4808
- line-height: 0.1;
4809
- font-weight: bold;
4810
- }
4811
- /* Gapcursor */
4812
- .ProseMirror-gapcursor {
4813
- display: none;
4814
- pointer-events: none;
4815
- position: absolute;
4816
- margin: 0;
4817
- }
4818
- .ProseMirror-gapcursor:after {
4819
- content: '';
4820
- display: block;
4821
- position: absolute;
4822
- top: -2px;
4823
- width: 20px;
4824
- border-top: 1px solid black;
4825
- animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
4826
- }
4827
- @keyframes ProseMirror-cursor-blink {
4828
- to {
4829
- visibility: hidden;
4830
- }
4831
- }
4832
- .ProseMirror-focused .ProseMirror-gapcursor {
4833
- display: block;
4834
- }
4835
- .ProseMirror div[data-type='contentBlock'] {
4836
- position: absolute;
4837
- outline: none;
4838
- user-select: none;
4839
- z-index: -1;
4840
- }
4841
- .ProseMirror div[data-horizontal-rule='true'] {
4842
- margin-top: auto;
4843
- align-self: flex-end;
4844
- }
4845
- .sd-editor-dropcap {
4846
- float: left;
4847
- display: flex;
4848
- align-items: baseline;
4849
- margin-top: -5px;
4850
- }
4851
- .ProseMirror-search-match {
4852
- background-color: #ffff0054;
4853
- }
4854
- .ProseMirror-active-search-match {
4855
- background-color: #ff6a0054;
4856
- }
4857
- .ProseMirror span.sd-custom-selection::selection {
4858
- background: transparent;
4859
- }
4860
- .sd-custom-selection {
4861
- background-color: #d9d9d9;
4862
- border-radius: 0.1em;
4863
- }
4864
- .superdoc-toolbar svg {
4865
- width: 100%;
4866
- height: 100%;
4867
- display: block;
4868
- fill: currentColor;
4869
- }
4870
- .superdoc-toolbar svg path {
4871
- stroke: currentColor;
4872
- }
4873
- .sd-editor-toolbar-dropdown .n-dropdown-option .dropdown-select-icon {
4874
- display: flex;
4875
- width: 12px;
4876
- height: 12px;
4877
- }
4878
- /* Custom toolbar styling */
4879
- /* AI button icon styling with gradient */
4880
- .toolbar-icon__icon--ai {
4881
- position: relative;
4882
- z-index: 1;
4883
- }
4884
- .toolbar-icon__icon--ai svg {
4885
- fill: transparent;
4886
- }
4887
- .toolbar-icon__icon--ai::before {
4888
- content: '';
4889
- position: absolute;
4890
- top: 0;
4891
- left: 0;
4892
- right: 0;
4893
- bottom: 0;
4894
- z-index: -1;
4895
- background: linear-gradient(
4896
- 270deg,
4897
- rgba(218, 215, 118, 0.5) -20%,
4898
- rgba(191, 100, 100, 1) 30%,
4899
- rgba(77, 82, 217, 1) 60%,
4900
- rgb(255, 219, 102) 150%
4901
- );
4902
- -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>")
4903
- center / contain no-repeat;
4904
- 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>")
4905
- center / contain no-repeat;
4906
- filter: brightness(1.2);
4907
- transition: filter 0.2s ease;
4908
- }
4909
- .toolbar-icon__icon--ai:hover::before {
4910
- filter: brightness(1.3);
4911
- }
4912
- /* AI text appear animation */
4913
- @keyframes aiTextAppear {
4914
- from {
4915
- opacity: 0;
4916
- transform: translateY(5px);
4917
- }
4918
- to {
4919
- opacity: 1;
4920
- transform: translateY(0);
4921
- }
4922
- }
4923
- .sd-ai-text-appear {
4924
- display: inline;
4925
- opacity: 0;
4926
- animation: aiTextAppear 0.7s ease-out forwards;
4927
- animation-fill-mode: both;
4928
- will-change: opacity, transform;
4929
- /* Ensure each mark is treated as a separate animation context */
4930
- contain: content;
4931
- }
4932
- .sd-ai-loader {
4933
- display: flex;
4934
- justify-content: flex-start;
4935
- }
4936
- .sd-ai-loader > img {
4937
- width: fit-content;
4938
- height: 40px;
4939
- }
4940
- @keyframes ai-pulse {
4941
- 0% {
4942
- background-color: rgba(99, 102, 241, 0.1);
4943
- }
4944
- 50% {
4945
- background-color: rgba(99, 102, 241, 0.375);
4946
- }
4947
- 100% {
4948
- background-color: rgba(99, 102, 241, 0.1);
4949
- }
4950
- }
4951
- .sd-ai-highlight-pulse {
4952
- animation: ai-pulse 1.5s ease-in-out infinite;
4953
- }
4954
- .sd-editor-auto-page-number,
4955
- .sd-editor-auto-total-pages {
4956
- transition: all 250ms ease;
4957
- border-bottom: 1px solid #9a9a9a;
4958
- cursor: not-allowed;
4959
- }
4960
- .sd-editor-auto-page-number:hover,
4961
- .sd-editor-auto-total-pages:hover {
4962
- border-bottom-color: #4f4f4f;
4963
- }
4964
- .sd-editor-auto-page-number-content {
4965
- pointer-events: none;
4966
- }
4967
- .ProseMirror.view-mode .sd-editor-auto-page-number,
4968
- .ProseMirror.view-mode .sd-editor-auto-total-pages {
4969
- border: none;
4970
- }
4971
- :root {
4972
- --sd-editor-separator-height: 18px;
4973
- }
4974
- .pagination-section-header {
4975
- cursor: default;
4976
- }
4977
- /* To not inherit styles from the wrapper paragraph */
4978
- .pagination-section-header p {
4979
- text-align: initial;
4980
- }
4981
- .pagination-section-footer {
4982
- position: relative;
4983
- width: 100%;
4984
- min-width: 100%;
4985
- display: flex;
4986
- flex-direction: column;
4987
- justify-content: flex-end;
4988
- cursor: default;
4989
- }
4990
- /* To not inherit styles from the wrapper paragraph */
4991
- .pagination-section-footer p {
4992
- text-align: initial;
4993
- }
4994
- .pagination-break-wrapper {
4995
- width: 100%;
4996
- margin: 0;
4997
- padding: 0;
4998
- cursor: default;
4999
- position: relative;
5000
- }
5001
- .pagination-separator {
5002
- position: relative;
5003
- display: block;
5004
- height: var(--sd-editor-separator-height);
5005
- min-height: var(--sd-editor-separator-height);
5006
- min-width: 100%;
5007
- width: 100%;
5008
- border-top: 1px solid #dbdbdb;
5009
- border-bottom: 1px solid #dbdbdb;
5010
- cursor: default;
5011
- }
5012
- .pagination-separator--table {
5013
- border: 0;
5014
- }
5015
- .pagination-separator-floating {
5016
- position: absolute;
5017
- height: var(--sd-editor-separator-height);
5018
- border-top: 1px solid #dbdbdb;
5019
- border-bottom: 1px solid #dbdbdb;
5020
- pointer-events: none;
5021
- }
5022
- .pagination-inner {
5023
- position: absolute;
5024
- top: 0;
5025
- left: 0;
5026
- display: flex;
5027
- flex-direction: column;
5028
- background-color: white;
5029
- }
5030
- /**
5031
- Workaround to display pagination in footer
5032
- on the right if it is inside shape textbox.
5033
- */
5034
- .pagination-section-footer .sd-editor-shape-container:has([data-id='auto-page-number'], [data-id='auto-total-pages']) {
5035
- margin-left: auto;
5036
- }
5037
- .pagination-section-header img[contenteditable='false'],
5038
- .pagination-section-footer img[contenteditable='false'] {
5039
- pointer-events: none;
5040
- }
5041
- .pagination-break-wrapper {
5042
- font-weight: normal;
5043
- font-style: normal;
5044
- color: initial;
5045
- }
5046
- /* TODO: This is going to be enabled again */
5047
- /* .pagination-section-header div[contenteditable="false"]:not([documentmode="viewing"]),
5048
- .pagination-section-footer div[contenteditable="false"]:not([documentmode="viewing"]) {
5049
- opacity: 0.5;
5050
- } */
5051
- .sd-editor-popover {
5052
- background-color: #fff;
5053
- border-radius: 8px;
5054
- -webkit-box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
5055
- -moz-box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
5056
- box-shadow: 0px 4px 12px 0px rgba(50, 50, 50, 0.15);
5057
- padding: 0;
5058
- width: auto;
5059
- height: auto;
5060
- font-size: 14px;
5061
- color: #333;
5062
- z-index: 1000;
5063
- }
5064
- .sd-editor-popover .popover-header {
5065
- font-weight: bold;
5066
- margin-bottom: 8px;
5067
- }
5068
- .tippy-box[data-theme~='sd-editor-popover'] {
5069
- background-color: #fff;
5070
- border-radius: 8px;
5071
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
5072
- border: none !important;
5073
- padding: 0 !important;
5074
- }
5075
- .tippy-box[data-theme~='sd-editor-popover'] .tippy-arrow {
5076
- color: #fff;
5077
- border: 1px solid #dbdbdb;
5078
- }
5079
- .tippy-box[data-theme~='sd-editor-popover'] .tippy-content {
5080
- padding: 0;
5081
- }
5082
- .sd-editor-placeholder::before {
5083
- content: attr(data-placeholder);
5084
- color: #aaa;
5085
- pointer-events: none;
5086
- display: block;
5087
- height: 0;
5088
- }
5089
- .sd-editor-mention {
5090
- background-color: #1355ff15;
5091
- color: #222;
5092
- font-weight: 400;
5093
- border-radius: 3px;
5094
- padding: 0 5px;
5095
- cursor: default;
5096
- display: inline-block;
5097
- box-sizing: border-box;
5098
- }
5099
- .sd-editor-comment-highlight {
5100
- transition: background-color 250ms ease;
5101
- }
5102
- .sd-editor-comment-highlight:hover {
5103
- background-color: #1354ff55;
5104
- }
5105
- .sd-editor-comment-highlight.sd-custom-selection {
5106
- background-color: #d6c0c6 !important;
5107
- }
5108
- .sd-editor-list-item-node-view {
5109
- position: relative;
5110
- width: 100%;
5111
- }
5112
- .sd-editor-list-item-numbering {
5113
- position: absolute;
5114
- top: 0;
5115
- white-space: nowrap;
5116
- user-select: none;
5117
- pointer-events: auto;
5118
- text-align: right;
5119
- z-index: 1;
5120
- }
5121
- .sd-editor-list-item-content-dom {
5122
- position: relative;
5123
- min-height: inherit;
5124
- word-wrap: break-word;
5125
- }
5126
- /* temporary fix */
5127
- .sd-editor-list-item-node-view .sd-custom-selection {
5128
- font-size: inherit !important;
5129
- }
5130
- /* Resize handles container */
5131
- .sd-editor-resize-container {
5132
- position: absolute;
5133
- pointer-events: none;
5134
- z-index: 11;
5135
- }
5136
- /* Resize handles */
5137
- .sd-editor-resize-handle {
5138
- position: absolute;
5139
- width: 12px;
5140
- height: 12px;
5141
- background-color: #4dabf7;
5142
- border: 2px solid #fff;
5143
- border-radius: 50%;
5144
- box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
5145
- pointer-events: auto;
5146
- transition: all 0.1s ease;
5147
- }
5148
- .sd-editor-resize-handle:hover {
5149
- background-color: #228be6;
5150
- transform: scale(1.1);
5151
- box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
5152
- }
5153
- /* Handle positions */
5154
- .sd-editor-resize-handle-nw {
5155
- top: -6px;
5156
- left: -6px;
5157
- cursor: nwse-resize;
5158
- }
5159
- .sd-editor-resize-handle-ne {
5160
- top: -6px;
5161
- right: -6px;
5162
- cursor: nesw-resize;
5163
- }
5164
- .sd-editor-resize-handle-sw {
5165
- bottom: -6px;
5166
- left: -6px;
5167
- cursor: nesw-resize;
5168
- }
5169
- .sd-editor-resize-handle-se {
5170
- bottom: -6px;
5171
- right: -6px;
5172
- cursor: nwse-resize;
5173
- }
5174
- /* Hide handles when editor loses focus */
5175
- .ProseMirror:not(.ProseMirror-focused) .sd-editor-resize-container {
5176
- display: none;
5177
- }
5178
- /* Smooth transitions for resizing */
5179
- .sd-editor-resizable-wrapper * {
5180
- transition: none;
5181
- }
5182
- .sd-editor-resizable-wrapper *:not([style*='width']) {
5183
- transition: all 0.2s ease;
5184
- }
5185
- /* Resize feedback indicator */
5186
- .sd-editor-resizable-wrapper::after {
5187
- content: 'Drag corners to resize';
5188
- position: absolute;
5189
- bottom: -25px;
5190
- left: 50%;
5191
- transform: translateX(-50%);
5192
- background-color: rgba(77, 171, 247, 0.9);
5193
- color: white;
5194
- font-size: 11px;
5195
- padding: 4px 8px;
5196
- border-radius: 4px;
5197
- white-space: nowrap;
5198
- pointer-events: none;
5199
- opacity: 0;
5200
- transition: opacity 0.3s ease;
5201
- z-index: 12;
5202
- }
5203
- .sd-editor-resizable-wrapper:hover::after {
5204
- opacity: 1;
5205
- }
5206
- .sd-document-section-block {
5207
- background-color: #fafafa;
5208
- border: 1px solid #ababab;
5209
- border-radius: 4px;
5210
- position: relative;
5211
- }
5212
- .sd-document-section-block-info {
5213
- position: absolute;
5214
- top: -19px;
5215
- left: -1px;
5216
- max-width: 100px;
5217
- min-width: 0;
5218
- height: 18px;
5219
- border: 1px solid #ababab;
5220
- border-bottom: none;
5221
- border-radius: 6px 6px 0 0;
5222
- padding: 0 8px;
5223
- align-items: center;
5224
- font-size: 10px;
5225
- display: none;
5226
- z-index: 100;
5227
- background-color: #fafafa;
5228
- }
5229
- .sd-document-section-block:hover {
5230
- border-radius: 0 4px 4px 4px;
5231
- }
5232
- .sd-document-section-block:hover .sd-document-section-block-info {
5233
- display: flex;
5234
- align-items: center;
5235
- }
5236
- .sd-document-section-block-info span {
5237
- max-width: 100%;
5238
- overflow: hidden;
5239
- white-space: nowrap;
5240
- text-overflow: ellipsis;
5241
- }
5242
- .sd-structured-content,
5243
- .sd-structured-content-block {
5244
- padding: 1px;
5245
- box-sizing: border-box;
5246
- border-radius: 4px;
5247
- border: 1px solid #629be7;
5248
- position: relative;
5249
- }
5250
- .sd-structured-content-draggable {
5251
- font-size: 10px;
5252
- align-items: center;
5253
- justify-content: center;
5254
- position: absolute;
5255
- left: 2px;
5256
- bottom: 100%;
5257
- width: calc(100% - 4px);
5258
- max-width: 110px;
5259
- min-width: 0;
5260
- height: 18px;
5261
- padding: 0 4px;
5262
- border: 1px solid #629be7;
5263
- border-bottom: none;
5264
- border-radius: 6px 6px 0 0;
5265
- background-color: #629be7dd;
5266
- z-index: 10;
5267
- cursor: grab;
5268
- display: none;
5269
- }
5270
- .sd-structured-content-draggable span {
5271
- max-width: 100%;
5272
- overflow: hidden;
5273
- white-space: nowrap;
5274
- text-overflow: ellipsis;
5275
- }
5276
- .sd-structured-content:hover .sd-structured-content-draggable,
5277
- .sd-structured-content-block:hover .sd-structured-content-draggable {
5278
- display: inline-flex;
5279
- }
5280
- `;
5281
- let cachedStyleSheet = null;
5282
- const defaultEditorStyles = editorStyles;
5283
- let shadowEditorStyles = defaultEditorStyles;
5284
- const supportsConstructableStylesheets = () => {
5285
- const DocumentCtor = (
5286
- /** @type {typeof Document | undefined} */
5287
- globalThis.Document
5288
- );
5289
- const CSSStyleSheetCtor = (
5290
- /** @type {typeof CSSStyleSheet | undefined} */
5291
- globalThis.CSSStyleSheet
5292
- );
5293
- if (!DocumentCtor || !CSSStyleSheetCtor) return false;
5294
- const documentPrototype = DocumentCtor.prototype;
5295
- const styleSheetPrototype = CSSStyleSheetCtor.prototype;
5296
- return !!documentPrototype && "adoptedStyleSheets" in documentPrototype && !!styleSheetPrototype && typeof styleSheetPrototype.replaceSync === "function";
5297
- };
5298
- const ensureStyleSheet = (root) => {
5299
- if (!root || !shadowEditorStyles) return;
5300
- if (supportsConstructableStylesheets()) {
5301
- if (!cachedStyleSheet) {
5302
- const CSSStyleSheetCtor = (
5303
- /** @type {typeof CSSStyleSheet} */
5304
- globalThis.CSSStyleSheet
5305
- );
5306
- cachedStyleSheet = new CSSStyleSheetCtor();
5307
- cachedStyleSheet.replaceSync(shadowEditorStyles);
5308
- }
5309
- const sheets = Array.isArray(root.adoptedStyleSheets) ? root.adoptedStyleSheets : [];
5310
- if (!sheets.includes(cachedStyleSheet)) {
5311
- root.adoptedStyleSheets = [...sheets, cachedStyleSheet];
5312
- }
5313
- return;
5314
- }
5315
- const doc = (
5316
- /** @type {Document | undefined} */
5317
- globalThis.document
5318
- );
5319
- if (!doc || typeof root.querySelector !== "function") return;
5320
- if (!root.querySelector("style[data-super-editor-styles]")) {
5321
- const styleEl = doc.createElement("style");
5322
- styleEl.setAttribute("data-super-editor-styles", "");
5323
- styleEl.textContent = shadowEditorStyles;
5324
- root.appendChild(styleEl);
5325
- }
5326
- };
5327
- const ensureEditorShadowRoot = (hostElement) => {
5328
- const doc = (
5329
- /** @type {Document | undefined} */
5330
- globalThis.document
5331
- );
5332
- if (!hostElement || !doc || typeof hostElement.attachShadow !== "function") {
5333
- return { root: null, mount: null };
5334
- }
5335
- const root = hostElement.shadowRoot || hostElement.attachShadow({ mode: "open" });
5336
- ensureStyleSheet(root);
5337
- let mount = root.querySelector(".sd-editor-mount");
5338
- if (!mount) {
5339
- mount = doc.createElement("div");
5340
- mount.className = "sd-editor-mount";
5341
- root.appendChild(mount);
5342
- }
5343
- return { root, mount };
5344
- };
5345
4535
  const _hoisted_1$1 = { class: "super-editor-container" };
5346
4536
  const _hoisted_2 = {
5347
4537
  key: 1,
@@ -5380,7 +4570,6 @@ const _sfc_main$1 = {
5380
4570
  const message = useMessage();
5381
4571
  const editorWrapper = ref(null);
5382
4572
  const editorElem = ref(null);
5383
- const editorMountPoint = shallowRef(null);
5384
4573
  const fileSource = ref(null);
5385
4574
  const popoverControls = reactive({
5386
4575
  visible: false,
@@ -5469,15 +4658,9 @@ const _sfc_main$1 = {
5469
4658
  return extensions;
5470
4659
  };
5471
4660
  const initEditor = async ({ content, media = {}, mediaFiles = {}, fonts = {} } = {}) => {
5472
- if (!editorElem.value) return;
5473
- const { mount } = ensureEditorShadowRoot(editorElem.value);
5474
- editorMountPoint.value = mount;
5475
- if (editorMountPoint.value) {
5476
- editorMountPoint.value.innerHTML = "";
5477
- }
5478
4661
  editor.value = new Editor({
5479
4662
  mode: "docx",
5480
- element: editorMountPoint.value || editorElem.value,
4663
+ element: editorElem.value,
5481
4664
  fileSource: fileSource.value,
5482
4665
  extensions: getExtensions(),
5483
4666
  externalExtensions: props.options.externalExtensions,
@@ -5524,12 +4707,11 @@ const _sfc_main$1 = {
5524
4707
  };
5525
4708
  const handleSuperEditorClick = (event) => {
5526
4709
  emit("editor-click", { editor: editor.value });
5527
- const pmElement = editor.value?.view?.dom;
4710
+ let pmElement = editorElem.value?.querySelector(".ProseMirror");
5528
4711
  if (!pmElement || !editor.value) {
5529
4712
  return;
5530
4713
  }
5531
- const eventPath = event.composedPath?.() || [];
5532
- const isInsideEditor = eventPath.includes(pmElement);
4714
+ let isInsideEditor = pmElement.contains(event.target);
5533
4715
  if (!isInsideEditor && editor.value.isEditable) {
5534
4716
  editor.value.view?.focus();
5535
4717
  }
@@ -5542,9 +4724,7 @@ const _sfc_main$1 = {
5542
4724
  if (props.options?.suppressSkeletonLoader || !props.options?.collaborationProvider) editorReady.value = true;
5543
4725
  });
5544
4726
  const handleMarginClick = (event) => {
5545
- const pmElement = editor.value?.view?.dom;
5546
- const eventPath = event.composedPath?.() || [];
5547
- if (pmElement && eventPath.includes(pmElement)) return;
4727
+ if (event.target.classList.contains("ProseMirror")) return;
5548
4728
  onMarginClickCursorChange(event, editor.value);
5549
4729
  };
5550
4730
  const handleMarginChange = ({ side, value }) => {
@@ -5650,7 +4830,7 @@ const _sfc_main$1 = {
5650
4830
  };
5651
4831
  }
5652
4832
  };
5653
- const SuperEditor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3d49a1a6"]]);
4833
+ const SuperEditor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-0c36dd72"]]);
5654
4834
  const _hoisted_1 = ["innerHTML"];
5655
4835
  const _sfc_main = {
5656
4836
  __name: "SuperInput",
@@ -5680,7 +4860,6 @@ const _sfc_main = {
5680
4860
  const props = __props;
5681
4861
  const editor = shallowRef();
5682
4862
  const editorElem = ref(null);
5683
- const editorMountPoint = shallowRef(null);
5684
4863
  const isFocused = ref(false);
5685
4864
  const onTransaction = ({ editor: editor2, transaction }) => {
5686
4865
  const contents = editor2.getHTML();
@@ -5700,15 +4879,10 @@ const _sfc_main = {
5700
4879
  props.options.onTransaction = onTransaction;
5701
4880
  props.options.onFocus = onFocus;
5702
4881
  props.options.onBlur = onBlur;
5703
- const { mount } = ensureEditorShadowRoot(editorElem.value);
5704
- editorMountPoint.value = mount;
5705
- if (editorMountPoint.value) {
5706
- editorMountPoint.value.innerHTML = "";
5707
- }
5708
4882
  editor.value = new Editor({
5709
4883
  mode: "text",
5710
4884
  content: document.getElementById("currentContent"),
5711
- element: editorMountPoint.value || editorElem.value,
4885
+ element: editorElem.value,
5712
4886
  extensions: getRichTextExtensions(),
5713
4887
  users: props.users,
5714
4888
  ...props.options
@@ -5747,35 +4921,77 @@ const _sfc_main = {
5747
4921
  };
5748
4922
  }
5749
4923
  };
5750
- const SuperInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-23a4e794"]]);
4924
+ const SuperInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4d5cff52"]]);
4925
+ const additionalHandlers = Object.freeze({
4926
+ "mc:AlternateContent": translator$10,
4927
+ "w:b": translator$$,
4928
+ "w:bidiVisual": translator$_,
4929
+ "w:bookmarkEnd": translator$Z,
4930
+ "w:bookmarkStart": translator$Y,
4931
+ "w:bottom": translator$X,
4932
+ "w:br": translator$W,
4933
+ "w:cantSplit": translator$V,
4934
+ "w:cnfStyle": translator$U,
4935
+ "w:color": translator$T,
4936
+ "w:divId": translator$S,
4937
+ "w:drawing": translator$R,
4938
+ "w:end": translator$Q,
4939
+ "w:gridAfter": translator$P,
4940
+ "w:gridBefore": translator$O,
4941
+ "w:gridCol": translator$N,
4942
+ "w:hidden": translator$M,
4943
+ "w:highlight": translator$L,
4944
+ "w:hyperlink": translator$K,
4945
+ "w:i": translator$J,
4946
+ "w:insideH": translator$I,
4947
+ "w:insideV": translator$H,
4948
+ "w:jc": translator$G,
4949
+ "w:left": translator$F,
4950
+ "w:p": translator$E,
4951
+ "w:r": translator$D,
4952
+ "w:rFonts": translator$C,
4953
+ "w:rPr": translator$B,
4954
+ "w:rStyle": translator$A,
4955
+ "w:right": translator$z,
4956
+ "w:sdt": translator$y,
4957
+ "w:shd": translator$x,
4958
+ "w:start": translator$w,
4959
+ "w:strike": translator$v,
4960
+ "w:sz": translator$u,
4961
+ "w:szCs": translator$t,
4962
+ "w:tab": translator$s,
4963
+ "w:tbl": translator$r,
4964
+ "w:tblBorders": translator$q,
4965
+ "w:tblCaption": translator$p,
4966
+ "w:tblCellMar": translator$o,
4967
+ "w:tblCellSpacing": translator$n,
4968
+ "w:tblDescription": translator$m,
4969
+ "w:tblGrid": translator$l,
4970
+ "w:tblHeader": translator$k,
4971
+ "w:tblInd": translator$j,
4972
+ "w:tblLayout": translator$i,
4973
+ "w:tblLook": translator$h,
4974
+ "w:tblOverlap": translator$g,
4975
+ "w:tblPr": translator$f,
4976
+ "w:tblStyle": translator$e,
4977
+ "w:tblStyleColBandSize": translator$d,
4978
+ "w:tblStyleRowBandSize": translator$c,
4979
+ "w:tblW": translator$b,
4980
+ "w:tblpPr": translator$a,
4981
+ "w:tc": translator$9,
4982
+ "w:top": translator$8,
4983
+ "w:tr": translator$7,
4984
+ "w:trHeight": translator$6,
4985
+ "w:trPr": translator$5,
4986
+ "w:u": translator$4,
4987
+ "w:wAfter": translator$3,
4988
+ "w:wBefore": translator$2,
4989
+ "wp:anchor": translator$1,
4990
+ "wp:inline": translator
4991
+ });
5751
4992
  const baseHandlers = {
5752
4993
  ...runPropertyTranslators,
5753
- "w:br": translator$p,
5754
- "w:cantSplit": translator$o,
5755
- "w:cnfStyle": translator$n,
5756
- "w:divId": translator$m,
5757
- "w:gridAfter": translator$l,
5758
- "w:gridBefore": translator$k,
5759
- "w:hidden": translator$j,
5760
- "w:hyperlink": translator$i,
5761
- "w:jc": translator$h,
5762
- "w:p": translator$g,
5763
- "w:r": translator$f,
5764
- "w:rPr": translator$e,
5765
- "w:sdt": translator$d,
5766
- "w:tab": translator$c,
5767
- "w:tblCellSpacing": translator$b,
5768
- "w:tblHeader": translator$a,
5769
- "w:tc": translator$9,
5770
- "w:tr": translator$8,
5771
- "w:trHeight": translator$7,
5772
- "w:trPr": translator$6,
5773
- "w:wAfter": translator$5,
5774
- "w:wBefore": translator$4,
5775
- "wp:anchor": translator$3,
5776
- "wp:inline": translator$2,
5777
- "w:bookmarkStart": translator$1,
5778
- "w:bookmarkEnd": translator
4994
+ ...additionalHandlers
5779
4995
  };
5780
4996
  const registeredHandlers = Object.freeze(baseHandlers);
5781
4997
  const Extensions = {
@@ -5788,7 +5004,7 @@ const Extensions = {
5788
5004
  export {
5789
5005
  AIWriter,
5790
5006
  n as AnnotatorHelpers,
5791
- b2 as BasicUpload,
5007
+ bF as BasicUpload,
5792
5008
  C as CommentsPluginKey,
5793
5009
  D as DocxZipper,
5794
5010
  Editor,