@harbour-enterprises/superdoc 0.28.0-next.7 → 0.28.0-next.9

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.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vue = require("./vue-DKMj1I9B.cjs");
4
- const superdoc = require("./index-DrY82WYq.cjs");
4
+ const superdoc = require("./index-DcpSDyC4.cjs");
5
5
  function self(vars) {
6
6
  const {
7
7
  opacityDisabled,
@@ -1,5 +1,5 @@
1
1
  import { m as defineComponent, B as h, O as Transition, $ as process$1, I as watchEffect, d as computed, r as ref, j as onMounted, W as onUnmounted, c as createElementBlock, o as openBlock, a as createBaseVNode, f as createCommentVNode, v as createVNode, x as unref } from "./vue-ZWZLQtoU.es.js";
2
- import { d as derived, c, a as cB, f as fadeInTransition, b as cM, N as NBaseLoading, w as warnOnce, u as useConfig, e as useTheme, p as pxfy, g as createKey, h as useThemeClass, i as useCompitable, _ as _export_sfc, j as useSuperdocStore, s as storeToRefs, k as useSelection } from "./index-DW9wEJ6m.es.js";
2
+ import { d as derived, c, a as cB, f as fadeInTransition, b as cM, N as NBaseLoading, w as warnOnce, u as useConfig, e as useTheme, p as pxfy, g as createKey, h as useThemeClass, i as useCompitable, _ as _export_sfc, j as useSuperdocStore, s as storeToRefs, k as useSelection } from "./index-KRsMbx-o.es.js";
3
3
  function self(vars) {
4
4
  const {
5
5
  opacityDisabled,
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const superEditor_es = require("./super-editor.es-BqTmBqM7.cjs");
2
+ const superEditor_es = require("./super-editor.es-BnJV-Q-L.cjs");
3
3
  const vue = require("./vue-DKMj1I9B.cjs");
4
4
  const blankDocx = require("./blank-docx-DfW3Eeh2.cjs");
5
5
  const eventemitter3 = require("./eventemitter3-DkXkH2rT.cjs");
@@ -17173,7 +17173,7 @@ const _sfc_main = {
17173
17173
  __name: "SuperDoc",
17174
17174
  emits: ["selection-update"],
17175
17175
  setup(__props, { emit: __emit }) {
17176
- const PdfViewer = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./PdfViewer-Bs6lahtW.cjs")));
17176
+ const PdfViewer = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./PdfViewer-B13bR8VJ.cjs")));
17177
17177
  const superdocStore = useSuperdocStore();
17178
17178
  const commentsStore = useCommentsStore();
17179
17179
  const {
@@ -1,4 +1,4 @@
1
- import { q as index, C as CommentsPluginKey, h as TrackChangesBasePluginKey, E as Editor, n as getRichTextExtensions, f as SuperInput, e as SuperEditor, A as AIWriter, g as SuperToolbar, i as createZip } from "./super-editor.es-Cv1NFWG8.es.js";
1
+ import { q as index, C as CommentsPluginKey, h as TrackChangesBasePluginKey, E as Editor, n as getRichTextExtensions, f as SuperInput, e as SuperEditor, A as AIWriter, g as SuperToolbar, i as createZip } from "./super-editor.es-DKQa7RQl.es.js";
2
2
  import { a0 as effectScope, r as ref, _ as markRaw, $ as process$1, a1 as toRaw, d as computed, a2 as isRef, a3 as isReactive, C as toRef, i as inject, p as getCurrentInstance, l as watch, x as unref, a4 as hasInjectionContext, M as reactive, s as nextTick, a5 as getCurrentScope, a6 as onScopeDispose, a7 as toRefs, g as global$1, J as shallowRef, N as readonly, j as onMounted, k as onBeforeUnmount, h as onBeforeMount, S as onActivated, q as onDeactivated, z as createTextVNode, F as Fragment, Q as Comment, m as defineComponent, D as provide, H as withDirectives, B as h, U as Teleport, R as renderSlot, V as isVNode, I as watchEffect, O as Transition, a8 as TransitionGroup, E as mergeProps, P as vShow, G as cloneVNode, T as Text, c as createElementBlock, o as openBlock, t as toDisplayString, v as createVNode, y as withCtx, a as createBaseVNode, A as normalizeStyle, f as createCommentVNode, u as createBlock, w as withModifiers, n as normalizeClass, a9 as resolveDirective, e as renderList, b as createApp, X as resolveDynamicComponent, aa as defineAsyncComponent } from "./vue-ZWZLQtoU.es.js";
3
3
  import { B as BlankDOCX } from "./blank-docx-ABm6XYAA.es.js";
4
4
  import { E as EventEmitter } from "./eventemitter3-BWEnUdTY.es.js";
@@ -17156,7 +17156,7 @@ const _sfc_main = {
17156
17156
  __name: "SuperDoc",
17157
17157
  emits: ["selection-update"],
17158
17158
  setup(__props, { emit: __emit }) {
17159
- const PdfViewer = defineAsyncComponent(() => import("./PdfViewer-Dk0kxvT5.es.js"));
17159
+ const PdfViewer = defineAsyncComponent(() => import("./PdfViewer-DRCcOt2t.es.js"));
17160
17160
  const superdocStore = useSuperdocStore();
17161
17161
  const commentsStore = useCommentsStore();
17162
17162
  const {
@@ -48488,38 +48488,93 @@ const toggleList = (listType) => ({ editor, state: state2, tr, dispatch }) => {
48488
48488
  if (dispatch) dispatch(tr);
48489
48489
  return true;
48490
48490
  };
48491
- const decreaseListIndent = () => ({ editor, tr }) => {
48491
+ const LIST_NODE_NAMES = /* @__PURE__ */ new Set(["orderedList", "bulletList"]);
48492
+ const parseLevel = (value) => {
48493
+ if (typeof value === "number") return value;
48494
+ const parsed = parseInt(value, 10);
48495
+ return Number.isNaN(parsed) ? 0 : parsed;
48496
+ };
48497
+ const resolveParentList = ($pos) => {
48498
+ if (!$pos) return null;
48499
+ for (let depth = $pos.depth; depth >= 0; depth--) {
48500
+ const node2 = $pos.node(depth);
48501
+ if (node2?.type && LIST_NODE_NAMES.has(node2.type.name)) {
48502
+ return node2;
48503
+ }
48504
+ }
48505
+ return null;
48506
+ };
48507
+ const collectTargetListItemPositions = (state2, fallbackPos) => {
48508
+ const doc2 = state2?.doc;
48509
+ const listItemType = state2?.schema?.nodes?.listItem;
48510
+ if (!doc2 || !listItemType) {
48511
+ return typeof fallbackPos === "number" ? [fallbackPos] : [];
48512
+ }
48513
+ const candidates = [];
48514
+ const { from: from2, to } = state2.selection;
48515
+ doc2.nodesBetween(from2, to, (node2, pos) => {
48516
+ if (node2.type === listItemType) {
48517
+ const size2 = typeof node2.nodeSize === "number" ? node2.nodeSize : 0;
48518
+ candidates.push({ node: node2, pos, end: pos + size2 });
48519
+ }
48520
+ });
48521
+ if (!candidates.length && typeof fallbackPos === "number") {
48522
+ return [fallbackPos];
48523
+ }
48524
+ const filtered = candidates.filter(({ pos, end: end2 }) => {
48525
+ return !candidates.some((other) => other.pos > pos && other.pos < end2);
48526
+ });
48527
+ const sorted = filtered.map(({ pos }) => pos).sort((a2, b2) => a2 - b2);
48528
+ return sorted.filter((pos, index2) => index2 === 0 || pos !== sorted[index2 - 1]);
48529
+ };
48530
+ const decreaseListIndent = (_targetPositions) => ({ editor, tr }) => {
48492
48531
  const { state: state2 } = editor;
48493
48532
  const currentItem = ListHelpers.getCurrentListItem && ListHelpers.getCurrentListItem(state2) || findParentNode((n) => n.type && n.type.name === "listItem")(state2.selection);
48494
- if (!currentItem) return false;
48495
- const parentOrdered = ListHelpers.getParentOrderedList && ListHelpers.getParentOrderedList(state2);
48496
- const parentBullet = ListHelpers.getParentBulletList && ListHelpers.getParentBulletList(state2);
48497
- const parentList = parentOrdered || parentBullet || findParentNode((n) => n.type && (n.type.name === "orderedList" || n.type.name === "bulletList"))(state2.selection);
48498
- if (!parentList) return false;
48499
- const attrs = currentItem.node.attrs || {};
48500
- const currLevel = typeof attrs.level === "number" ? attrs.level : 0;
48501
- if (currLevel <= 0) return true;
48502
- const newLevel = currLevel - 1;
48503
- const parentNumId = parentList.node?.attrs?.listId ?? null;
48504
- let numId = parentNumId ?? attrs.numId ?? null;
48505
- let createdNewId = false;
48506
- if (numId == null && ListHelpers.getNewListId) {
48507
- numId = ListHelpers.getNewListId(editor);
48508
- createdNewId = true;
48509
- }
48510
- if (createdNewId && numId != null && ListHelpers.generateNewListDefinition) {
48511
- ListHelpers.generateNewListDefinition({
48512
- numId,
48513
- listType: parentList.node.type,
48514
- editor
48533
+ const parentOrderedHelper = ListHelpers.getParentOrderedList && ListHelpers.getParentOrderedList(state2);
48534
+ const parentBulletHelper = ListHelpers.getParentBulletList && ListHelpers.getParentBulletList(state2);
48535
+ const targetPositions = _targetPositions || collectTargetListItemPositions(state2, currentItem?.pos);
48536
+ if (!targetPositions.length) return false;
48537
+ let parentListsMap = {};
48538
+ const mappedNodes = targetPositions.map((originalPos) => {
48539
+ const mappedPos = tr.mapping ? tr.mapping.map(originalPos) : originalPos;
48540
+ const node2 = tr.doc && tr.doc.nodeAt(mappedPos) || (currentItem && originalPos === currentItem.pos ? currentItem.node : null);
48541
+ return { originalPos, mappedPos, node: node2 };
48542
+ });
48543
+ const validNodes = mappedNodes.filter(({ node: node2 }) => node2 && node2.type.name === "listItem");
48544
+ validNodes.forEach(({ mappedPos, node: node2 }) => {
48545
+ const attrs = node2.attrs || {};
48546
+ const currLevel = parseLevel(attrs.level);
48547
+ if (currLevel <= 0) {
48548
+ return;
48549
+ }
48550
+ const newLevel = currLevel - 1;
48551
+ const $pos = tr.doc ? tr.doc.resolve(mappedPos) : null;
48552
+ const parentListNode = resolveParentList($pos) || parentOrderedHelper?.node || parentBulletHelper?.node || parentOrderedHelper || parentBulletHelper;
48553
+ parentListsMap[mappedPos] = parentListNode;
48554
+ if (!parentListNode) {
48555
+ return;
48556
+ }
48557
+ const fallbackListId = parentListNode.attrs?.listId ?? null;
48558
+ let numId = fallbackListId ?? attrs.numId ?? null;
48559
+ let createdNewId = false;
48560
+ if (numId == null && ListHelpers.getNewListId) {
48561
+ numId = ListHelpers.getNewListId(editor);
48562
+ createdNewId = numId != null;
48563
+ }
48564
+ if (createdNewId && numId != null && ListHelpers.generateNewListDefinition) {
48565
+ ListHelpers.generateNewListDefinition({
48566
+ numId,
48567
+ listType: parentListNode.type,
48568
+ editor
48569
+ });
48570
+ }
48571
+ tr.setNodeMarkup(mappedPos, null, {
48572
+ ...attrs,
48573
+ level: newLevel,
48574
+ numId
48515
48575
  });
48516
- }
48517
- tr.setNodeMarkup(currentItem.pos, null, {
48518
- ...attrs,
48519
- level: newLevel,
48520
- numId
48521
48576
  });
48522
- return true;
48577
+ return Object.values(parentListsMap).length ? !Object.values(parentListsMap).every((pos) => !pos) : true;
48523
48578
  };
48524
48579
  function isVisuallyEmptyParagraph(node2) {
48525
48580
  if (!node2 || node2.type.name !== "paragraph") return false;
@@ -48761,30 +48816,49 @@ const deleteListItem = () => (props) => {
48761
48816
  tr.setSelection(TextSelection$1.near($pos));
48762
48817
  return true;
48763
48818
  };
48764
- const increaseListIndent = () => ({ editor, tr }) => {
48819
+ const increaseListIndent = (_targetPositions) => ({ editor, tr }) => {
48765
48820
  const { state: state2 } = editor;
48766
48821
  const currentItem = ListHelpers.getCurrentListItem && ListHelpers.getCurrentListItem(state2) || findParentNode((n) => n.type && n.type.name === "listItem")(state2.selection);
48767
- if (!currentItem) return false;
48768
- const parentOrdered = ListHelpers.getParentOrderedList && ListHelpers.getParentOrderedList(state2);
48769
- const parentBullet = ListHelpers.getParentBulletList && ListHelpers.getParentBulletList(state2);
48770
- const parentList = parentOrdered || parentBullet || findParentNode((n) => n.type && (n.type.name === "orderedList" || n.type.name === "bulletList"))(state2.selection);
48771
- if (!parentList) return false;
48772
- const currAttrs = currentItem.node.attrs || {};
48773
- const newLevel = (typeof currAttrs.level === "number" ? currAttrs.level : 0) + 1;
48774
- let numId = currAttrs.numId;
48775
- if (numId == null) {
48776
- numId = parentList.node?.attrs?.listId ?? ListHelpers.getNewListId(editor);
48777
- if (ListHelpers.generateNewListDefinition) {
48778
- const listType = parentList.node.type === editor.schema.nodes.orderedList ? editor.schema.nodes.orderedList : editor.schema.nodes.bulletList;
48779
- ListHelpers.generateNewListDefinition({ numId, listType, editor });
48780
- }
48781
- }
48782
- tr.setNodeMarkup(currentItem.pos, null, {
48783
- ...currAttrs,
48784
- level: newLevel,
48785
- numId
48822
+ const parentOrderedHelper = ListHelpers.getParentOrderedList && ListHelpers.getParentOrderedList(state2);
48823
+ const parentBulletHelper = ListHelpers.getParentBulletList && ListHelpers.getParentBulletList(state2);
48824
+ const targetPositions = _targetPositions || collectTargetListItemPositions(state2, currentItem?.pos);
48825
+ if (!targetPositions.length) return false;
48826
+ let parentListsMap = {};
48827
+ const mappedNodes = targetPositions.map((originalPos) => {
48828
+ const mappedPos = tr.mapping ? tr.mapping.map(originalPos) : originalPos;
48829
+ const node2 = tr.doc && tr.doc.nodeAt(mappedPos) || (currentItem && originalPos === currentItem.pos ? currentItem.node : null);
48830
+ return { originalPos, mappedPos, node: node2 };
48786
48831
  });
48787
- return true;
48832
+ const validNodes = mappedNodes.filter(({ node: node2 }) => node2 && node2.type.name === "listItem");
48833
+ validNodes.forEach(({ mappedPos, node: node2 }) => {
48834
+ const attrs = node2.attrs || {};
48835
+ const currentLevel = parseLevel(attrs.level);
48836
+ const newLevel = currentLevel + 1;
48837
+ const $pos = tr.doc ? tr.doc.resolve(mappedPos) : null;
48838
+ const parentListNode = resolveParentList($pos) || parentOrderedHelper?.node || parentBulletHelper?.node || parentOrderedHelper || parentBulletHelper;
48839
+ parentListsMap[mappedPos] = parentListNode;
48840
+ if (!parentListNode) {
48841
+ return;
48842
+ }
48843
+ let numId = attrs.numId;
48844
+ if (numId == null) {
48845
+ const fallbackListId = parentListNode.attrs?.listId ?? null;
48846
+ numId = fallbackListId ?? (ListHelpers.getNewListId ? ListHelpers.getNewListId(editor) : null);
48847
+ if (numId != null && ListHelpers.generateNewListDefinition) {
48848
+ ListHelpers.generateNewListDefinition({
48849
+ numId,
48850
+ listType: parentListNode.type,
48851
+ editor
48852
+ });
48853
+ }
48854
+ }
48855
+ tr.setNodeMarkup(mappedPos, null, {
48856
+ ...attrs,
48857
+ level: newLevel,
48858
+ numId
48859
+ });
48860
+ });
48861
+ return Object.values(parentListsMap).length ? !Object.values(parentListsMap).every((pos) => !pos) : true;
48788
48862
  };
48789
48863
  const isList = (n) => !!n && (n.type?.name === "orderedList" || n.type?.name === "bulletList");
48790
48864
  const findNodePosition = (doc2, targetNode) => {
@@ -67693,10 +67767,12 @@ const getTrackChangesDecorations = (state2, onlyOriginalShown, onlyModifiedShown
67693
67767
  () => {
67694
67768
  const span = document.createElement("span");
67695
67769
  span.classList.add("track-delete-widget");
67696
- span.contentEditable = false;
67697
67770
  return span;
67698
67771
  },
67699
- { ignoreSelection: true }
67772
+ {
67773
+ ignoreSelection: true,
67774
+ key: "stable-key"
67775
+ }
67700
67776
  );
67701
67777
  decorations.push(decorationWidget);
67702
67778
  }
@@ -107322,11 +107398,11 @@ class SuperToolbar extends EventEmitter2 {
107322
107398
  * @returns {void}
107323
107399
  */
107324
107400
  increaseTextIndent: ({ item, argument }) => {
107325
- let command2 = item.command;
107326
- let { state: state2 } = this.activeEditor;
107327
- let listItem2 = findParentNode((node2) => node2.type.name === "listItem")(state2.selection);
107328
- if (listItem2) {
107329
- return this.activeEditor.commands.increaseListIndent();
107401
+ const command2 = item.command;
107402
+ const { state: state2 } = this.activeEditor;
107403
+ const listItemsInSelection = collectTargetListItemPositions(state2);
107404
+ if (listItemsInSelection.length) {
107405
+ return this.activeEditor.commands.increaseListIndent(listItemsInSelection);
107330
107406
  }
107331
107407
  if (command2 in this.activeEditor.commands) {
107332
107408
  this.activeEditor.commands[command2](argument);
@@ -107342,9 +107418,9 @@ class SuperToolbar extends EventEmitter2 {
107342
107418
  decreaseTextIndent: ({ item, argument }) => {
107343
107419
  let command2 = item.command;
107344
107420
  let { state: state2 } = this.activeEditor;
107345
- let listItem2 = findParentNode((node2) => node2.type.name === "listItem")(state2.selection);
107346
- if (listItem2) {
107347
- return this.activeEditor.commands.decreaseListIndent();
107421
+ const listItemsInSelection = collectTargetListItemPositions(state2);
107422
+ if (listItemsInSelection.length) {
107423
+ return this.activeEditor.commands.decreaseListIndent(listItemsInSelection);
107348
107424
  }
107349
107425
  if (command2 in this.activeEditor.commands) {
107350
107426
  this.activeEditor.commands[command2](argument);
@@ -48471,38 +48471,93 @@ const toggleList = (listType) => ({ editor, state: state2, tr, dispatch }) => {
48471
48471
  if (dispatch) dispatch(tr);
48472
48472
  return true;
48473
48473
  };
48474
- const decreaseListIndent = () => ({ editor, tr }) => {
48474
+ const LIST_NODE_NAMES = /* @__PURE__ */ new Set(["orderedList", "bulletList"]);
48475
+ const parseLevel = (value) => {
48476
+ if (typeof value === "number") return value;
48477
+ const parsed = parseInt(value, 10);
48478
+ return Number.isNaN(parsed) ? 0 : parsed;
48479
+ };
48480
+ const resolveParentList = ($pos) => {
48481
+ if (!$pos) return null;
48482
+ for (let depth = $pos.depth; depth >= 0; depth--) {
48483
+ const node2 = $pos.node(depth);
48484
+ if (node2?.type && LIST_NODE_NAMES.has(node2.type.name)) {
48485
+ return node2;
48486
+ }
48487
+ }
48488
+ return null;
48489
+ };
48490
+ const collectTargetListItemPositions = (state2, fallbackPos) => {
48491
+ const doc2 = state2?.doc;
48492
+ const listItemType = state2?.schema?.nodes?.listItem;
48493
+ if (!doc2 || !listItemType) {
48494
+ return typeof fallbackPos === "number" ? [fallbackPos] : [];
48495
+ }
48496
+ const candidates = [];
48497
+ const { from: from2, to } = state2.selection;
48498
+ doc2.nodesBetween(from2, to, (node2, pos) => {
48499
+ if (node2.type === listItemType) {
48500
+ const size2 = typeof node2.nodeSize === "number" ? node2.nodeSize : 0;
48501
+ candidates.push({ node: node2, pos, end: pos + size2 });
48502
+ }
48503
+ });
48504
+ if (!candidates.length && typeof fallbackPos === "number") {
48505
+ return [fallbackPos];
48506
+ }
48507
+ const filtered = candidates.filter(({ pos, end: end2 }) => {
48508
+ return !candidates.some((other) => other.pos > pos && other.pos < end2);
48509
+ });
48510
+ const sorted = filtered.map(({ pos }) => pos).sort((a2, b2) => a2 - b2);
48511
+ return sorted.filter((pos, index2) => index2 === 0 || pos !== sorted[index2 - 1]);
48512
+ };
48513
+ const decreaseListIndent = (_targetPositions) => ({ editor, tr }) => {
48475
48514
  const { state: state2 } = editor;
48476
48515
  const currentItem = ListHelpers.getCurrentListItem && ListHelpers.getCurrentListItem(state2) || findParentNode((n) => n.type && n.type.name === "listItem")(state2.selection);
48477
- if (!currentItem) return false;
48478
- const parentOrdered = ListHelpers.getParentOrderedList && ListHelpers.getParentOrderedList(state2);
48479
- const parentBullet = ListHelpers.getParentBulletList && ListHelpers.getParentBulletList(state2);
48480
- const parentList = parentOrdered || parentBullet || findParentNode((n) => n.type && (n.type.name === "orderedList" || n.type.name === "bulletList"))(state2.selection);
48481
- if (!parentList) return false;
48482
- const attrs = currentItem.node.attrs || {};
48483
- const currLevel = typeof attrs.level === "number" ? attrs.level : 0;
48484
- if (currLevel <= 0) return true;
48485
- const newLevel = currLevel - 1;
48486
- const parentNumId = parentList.node?.attrs?.listId ?? null;
48487
- let numId = parentNumId ?? attrs.numId ?? null;
48488
- let createdNewId = false;
48489
- if (numId == null && ListHelpers.getNewListId) {
48490
- numId = ListHelpers.getNewListId(editor);
48491
- createdNewId = true;
48492
- }
48493
- if (createdNewId && numId != null && ListHelpers.generateNewListDefinition) {
48494
- ListHelpers.generateNewListDefinition({
48495
- numId,
48496
- listType: parentList.node.type,
48497
- editor
48516
+ const parentOrderedHelper = ListHelpers.getParentOrderedList && ListHelpers.getParentOrderedList(state2);
48517
+ const parentBulletHelper = ListHelpers.getParentBulletList && ListHelpers.getParentBulletList(state2);
48518
+ const targetPositions = _targetPositions || collectTargetListItemPositions(state2, currentItem?.pos);
48519
+ if (!targetPositions.length) return false;
48520
+ let parentListsMap = {};
48521
+ const mappedNodes = targetPositions.map((originalPos) => {
48522
+ const mappedPos = tr.mapping ? tr.mapping.map(originalPos) : originalPos;
48523
+ const node2 = tr.doc && tr.doc.nodeAt(mappedPos) || (currentItem && originalPos === currentItem.pos ? currentItem.node : null);
48524
+ return { originalPos, mappedPos, node: node2 };
48525
+ });
48526
+ const validNodes = mappedNodes.filter(({ node: node2 }) => node2 && node2.type.name === "listItem");
48527
+ validNodes.forEach(({ mappedPos, node: node2 }) => {
48528
+ const attrs = node2.attrs || {};
48529
+ const currLevel = parseLevel(attrs.level);
48530
+ if (currLevel <= 0) {
48531
+ return;
48532
+ }
48533
+ const newLevel = currLevel - 1;
48534
+ const $pos = tr.doc ? tr.doc.resolve(mappedPos) : null;
48535
+ const parentListNode = resolveParentList($pos) || parentOrderedHelper?.node || parentBulletHelper?.node || parentOrderedHelper || parentBulletHelper;
48536
+ parentListsMap[mappedPos] = parentListNode;
48537
+ if (!parentListNode) {
48538
+ return;
48539
+ }
48540
+ const fallbackListId = parentListNode.attrs?.listId ?? null;
48541
+ let numId = fallbackListId ?? attrs.numId ?? null;
48542
+ let createdNewId = false;
48543
+ if (numId == null && ListHelpers.getNewListId) {
48544
+ numId = ListHelpers.getNewListId(editor);
48545
+ createdNewId = numId != null;
48546
+ }
48547
+ if (createdNewId && numId != null && ListHelpers.generateNewListDefinition) {
48548
+ ListHelpers.generateNewListDefinition({
48549
+ numId,
48550
+ listType: parentListNode.type,
48551
+ editor
48552
+ });
48553
+ }
48554
+ tr.setNodeMarkup(mappedPos, null, {
48555
+ ...attrs,
48556
+ level: newLevel,
48557
+ numId
48498
48558
  });
48499
- }
48500
- tr.setNodeMarkup(currentItem.pos, null, {
48501
- ...attrs,
48502
- level: newLevel,
48503
- numId
48504
48559
  });
48505
- return true;
48560
+ return Object.values(parentListsMap).length ? !Object.values(parentListsMap).every((pos) => !pos) : true;
48506
48561
  };
48507
48562
  function isVisuallyEmptyParagraph(node2) {
48508
48563
  if (!node2 || node2.type.name !== "paragraph") return false;
@@ -48744,30 +48799,49 @@ const deleteListItem = () => (props) => {
48744
48799
  tr.setSelection(TextSelection$1.near($pos));
48745
48800
  return true;
48746
48801
  };
48747
- const increaseListIndent = () => ({ editor, tr }) => {
48802
+ const increaseListIndent = (_targetPositions) => ({ editor, tr }) => {
48748
48803
  const { state: state2 } = editor;
48749
48804
  const currentItem = ListHelpers.getCurrentListItem && ListHelpers.getCurrentListItem(state2) || findParentNode((n) => n.type && n.type.name === "listItem")(state2.selection);
48750
- if (!currentItem) return false;
48751
- const parentOrdered = ListHelpers.getParentOrderedList && ListHelpers.getParentOrderedList(state2);
48752
- const parentBullet = ListHelpers.getParentBulletList && ListHelpers.getParentBulletList(state2);
48753
- const parentList = parentOrdered || parentBullet || findParentNode((n) => n.type && (n.type.name === "orderedList" || n.type.name === "bulletList"))(state2.selection);
48754
- if (!parentList) return false;
48755
- const currAttrs = currentItem.node.attrs || {};
48756
- const newLevel = (typeof currAttrs.level === "number" ? currAttrs.level : 0) + 1;
48757
- let numId = currAttrs.numId;
48758
- if (numId == null) {
48759
- numId = parentList.node?.attrs?.listId ?? ListHelpers.getNewListId(editor);
48760
- if (ListHelpers.generateNewListDefinition) {
48761
- const listType = parentList.node.type === editor.schema.nodes.orderedList ? editor.schema.nodes.orderedList : editor.schema.nodes.bulletList;
48762
- ListHelpers.generateNewListDefinition({ numId, listType, editor });
48763
- }
48764
- }
48765
- tr.setNodeMarkup(currentItem.pos, null, {
48766
- ...currAttrs,
48767
- level: newLevel,
48768
- numId
48805
+ const parentOrderedHelper = ListHelpers.getParentOrderedList && ListHelpers.getParentOrderedList(state2);
48806
+ const parentBulletHelper = ListHelpers.getParentBulletList && ListHelpers.getParentBulletList(state2);
48807
+ const targetPositions = _targetPositions || collectTargetListItemPositions(state2, currentItem?.pos);
48808
+ if (!targetPositions.length) return false;
48809
+ let parentListsMap = {};
48810
+ const mappedNodes = targetPositions.map((originalPos) => {
48811
+ const mappedPos = tr.mapping ? tr.mapping.map(originalPos) : originalPos;
48812
+ const node2 = tr.doc && tr.doc.nodeAt(mappedPos) || (currentItem && originalPos === currentItem.pos ? currentItem.node : null);
48813
+ return { originalPos, mappedPos, node: node2 };
48769
48814
  });
48770
- return true;
48815
+ const validNodes = mappedNodes.filter(({ node: node2 }) => node2 && node2.type.name === "listItem");
48816
+ validNodes.forEach(({ mappedPos, node: node2 }) => {
48817
+ const attrs = node2.attrs || {};
48818
+ const currentLevel = parseLevel(attrs.level);
48819
+ const newLevel = currentLevel + 1;
48820
+ const $pos = tr.doc ? tr.doc.resolve(mappedPos) : null;
48821
+ const parentListNode = resolveParentList($pos) || parentOrderedHelper?.node || parentBulletHelper?.node || parentOrderedHelper || parentBulletHelper;
48822
+ parentListsMap[mappedPos] = parentListNode;
48823
+ if (!parentListNode) {
48824
+ return;
48825
+ }
48826
+ let numId = attrs.numId;
48827
+ if (numId == null) {
48828
+ const fallbackListId = parentListNode.attrs?.listId ?? null;
48829
+ numId = fallbackListId ?? (ListHelpers.getNewListId ? ListHelpers.getNewListId(editor) : null);
48830
+ if (numId != null && ListHelpers.generateNewListDefinition) {
48831
+ ListHelpers.generateNewListDefinition({
48832
+ numId,
48833
+ listType: parentListNode.type,
48834
+ editor
48835
+ });
48836
+ }
48837
+ }
48838
+ tr.setNodeMarkup(mappedPos, null, {
48839
+ ...attrs,
48840
+ level: newLevel,
48841
+ numId
48842
+ });
48843
+ });
48844
+ return Object.values(parentListsMap).length ? !Object.values(parentListsMap).every((pos) => !pos) : true;
48771
48845
  };
48772
48846
  const isList = (n) => !!n && (n.type?.name === "orderedList" || n.type?.name === "bulletList");
48773
48847
  const findNodePosition = (doc2, targetNode) => {
@@ -67676,10 +67750,12 @@ const getTrackChangesDecorations = (state2, onlyOriginalShown, onlyModifiedShown
67676
67750
  () => {
67677
67751
  const span = document.createElement("span");
67678
67752
  span.classList.add("track-delete-widget");
67679
- span.contentEditable = false;
67680
67753
  return span;
67681
67754
  },
67682
- { ignoreSelection: true }
67755
+ {
67756
+ ignoreSelection: true,
67757
+ key: "stable-key"
67758
+ }
67683
67759
  );
67684
67760
  decorations.push(decorationWidget);
67685
67761
  }
@@ -107305,11 +107381,11 @@ class SuperToolbar extends EventEmitter2 {
107305
107381
  * @returns {void}
107306
107382
  */
107307
107383
  increaseTextIndent: ({ item, argument }) => {
107308
- let command2 = item.command;
107309
- let { state: state2 } = this.activeEditor;
107310
- let listItem2 = findParentNode((node2) => node2.type.name === "listItem")(state2.selection);
107311
- if (listItem2) {
107312
- return this.activeEditor.commands.increaseListIndent();
107384
+ const command2 = item.command;
107385
+ const { state: state2 } = this.activeEditor;
107386
+ const listItemsInSelection = collectTargetListItemPositions(state2);
107387
+ if (listItemsInSelection.length) {
107388
+ return this.activeEditor.commands.increaseListIndent(listItemsInSelection);
107313
107389
  }
107314
107390
  if (command2 in this.activeEditor.commands) {
107315
107391
  this.activeEditor.commands[command2](argument);
@@ -107325,9 +107401,9 @@ class SuperToolbar extends EventEmitter2 {
107325
107401
  decreaseTextIndent: ({ item, argument }) => {
107326
107402
  let command2 = item.command;
107327
107403
  let { state: state2 } = this.activeEditor;
107328
- let listItem2 = findParentNode((node2) => node2.type.name === "listItem")(state2.selection);
107329
- if (listItem2) {
107330
- return this.activeEditor.commands.decreaseListIndent();
107404
+ const listItemsInSelection = collectTargetListItemPositions(state2);
107405
+ if (listItemsInSelection.length) {
107406
+ return this.activeEditor.commands.decreaseListIndent(listItemsInSelection);
107331
107407
  }
107332
107408
  if (command2 in this.activeEditor.commands) {
107333
107409
  this.activeEditor.commands[command2](argument);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/types/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/types/index.js"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, onUnmounted, computed, createElementBlock, openBlock, withModifiers, createElementVNode, withDirectives, unref, vModelText, createCommentVNode, nextTick } from "vue";
2
2
  import { T as TextSelection } from "./chunks/converter-kpd0gAZh.js";
3
- import { _ as _export_sfc } from "./chunks/editor-D8CLRqpz.js";
3
+ import { _ as _export_sfc } from "./chunks/editor-DdEaVosL.js";
4
4
  const DEFAULT_API_ENDPOINT = "https://sd-dev-express-gateway-i6xtm.ondigitalocean.app/insights";
5
5
  const SYSTEM_PROMPT = "You are an expert copywriter and you are immersed in a document editor. You are to provide document related text responses based on the user prompts. Only write what is asked for. Do not provide explanations. Try to keep placeholders as short as possible. Do not output your prompt. Your instructions are: ";
6
6
  async function baseInsightsFetch(payload, options = {}) {