@univerjs/docs-thread-comment-ui 0.5.4 → 0.5.5-experimental.20250122-3362a4a

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.
package/lib/es/index.js CHANGED
@@ -1,310 +1,288 @@
1
- var De = Object.defineProperty;
2
- var Re = (e, t, r) => t in e ? De(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
3
- var K = (e, t, r) => Re(e, typeof t != "symbol" ? t + "" : t, r);
4
- import { Inject as v, Disposable as B, CommandType as w, ICommandService as M, CustomDecorationType as X, sequenceExecute as se, UniverInstanceType as S, SHEET_EDITOR_UNITS as ye, useDependency as U, IUniverInstanceService as F, Injector as de, useObservable as G, UserManagerService as Te, BuildTextUtils as Pe, DependentOn as Ue, Plugin as Ee, merge as we, IConfigService as Ne } from "@univerjs/core";
5
- import { IRenderManagerService as L, DocumentEditArea as te } from "@univerjs/engine-render";
6
- import { ThreadCommentPanelService as T, SetActiveCommentOperation as ce, ThreadCommentPanel as Ae, UniverThreadCommentUIPlugin as $e } from "@univerjs/thread-comment-ui";
7
- import { DocSelectionManagerService as H, DocSkeletonManagerService as Ve, RichTextEditingMutation as ae, SetTextSelectionsOperation as je, DocInterceptorService as Be, DOC_INTERCEPTOR_POINT as Fe } from "@univerjs/docs";
8
- import { addCustomDecorationBySelectionFactory as Le, deleteCustomDecorationFactory as He, DocSelectionRenderService as We, DocBackScrollRenderController as qe, DocRenderController as Je } from "@univerjs/docs-ui";
9
- import { IThreadCommentDataSourceService as Ke, AddCommentMutation as Ge, getDT as Ze, ThreadCommentModel as me } from "@univerjs/thread-comment";
10
- import { ISidebarService as W, MenuItemType as le, getMenuHiddenObservable as ue, RibbonStartGroup as ze, ContextMenuPosition as Ye, ContextMenuGroup as Qe, ComponentManager as Xe, IMenuManagerService as ke } from "@univerjs/ui";
11
- import { BehaviorSubject as et, Observable as fe, debounceTime as he } from "rxjs";
12
- import tt, { useMemo as Z, useState as nt, useEffect as rt, forwardRef as Ce, useRef as it, createElement as _e } from "react";
13
- const ot = "DOC_THREAD_COMMENT_UI_PLUGIN", I = "default_doc", st = "docs-thread-comment-ui.config", ne = {};
14
- var dt = Object.defineProperty, ct = Object.getOwnPropertyDescriptor, at = (e, t, r, n) => {
15
- for (var i = n > 1 ? void 0 : n ? ct(t, r) : t, o = e.length - 1, s; o >= 0; o--)
16
- (s = e[o]) && (i = (n ? s(t, r, i) : s(i)) || i);
17
- return n && i && dt(t, r, i), i;
18
- }, re = (e, t) => (r, n) => t(r, n, e);
19
- let R = class extends B {
20
- constructor(t, r) {
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
5
+ import { Inject, Disposable, CommandType, ICommandService, CustomDecorationType, sequenceExecute, UniverInstanceType, SHEET_EDITOR_UNITS, useDependency, IUniverInstanceService, Injector, isInternalEditorID, useObservable, UserManagerService, BuildTextUtils, DependentOn, Plugin, merge, IConfigService } from "@univerjs/core";
6
+ import { IRenderManagerService, DocumentEditArea } from "@univerjs/engine-render";
7
+ import { ThreadCommentPanelService, SetActiveCommentOperation, ThreadCommentPanel, UniverThreadCommentUIPlugin } from "@univerjs/thread-comment-ui";
8
+ import { DocSelectionManagerService, DocSkeletonManagerService, RichTextEditingMutation, SetTextSelectionsOperation, DocInterceptorService, DOC_INTERCEPTOR_POINT } from "@univerjs/docs";
9
+ import { addCustomDecorationBySelectionFactory, deleteCustomDecorationFactory, DocSelectionRenderService, DocBackScrollRenderController, DocRenderController } from "@univerjs/docs-ui";
10
+ import { IThreadCommentDataSourceService, AddCommentMutation, getDT, ThreadCommentModel } from "@univerjs/thread-comment";
11
+ import { ISidebarService, MenuItemType, getMenuHiddenObservable, RibbonStartGroup, ContextMenuPosition, ContextMenuGroup, ComponentManager, IMenuManagerService } from "@univerjs/ui";
12
+ import { BehaviorSubject, Observable, debounceTime, filter } from "rxjs";
13
+ import { jsx } from "react/jsx-runtime";
14
+ import { useMemo, useState, useEffect, forwardRef, useRef, createElement } from "react";
15
+ const PLUGIN_NAME = "DOC_THREAD_COMMENT_UI_PLUGIN", DEFAULT_DOC_SUBUNIT_ID = "default_doc", DOCS_THREAD_COMMENT_UI_PLUGIN_CONFIG_KEY = "docs-thread-comment-ui.config", defaultPluginConfig = {};
16
+ var __defProp$4 = Object.defineProperty, __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor, __decorateClass$4 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
17
+ for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
18
+ (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
19
+ return kind && result && __defProp$4(target, key, result), result;
20
+ }, "__decorateClass$4"), __decorateParam$4 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$4"), _a;
21
+ let DocThreadCommentService = (_a = class extends Disposable {
22
+ constructor(_sidebarService, _threadCommentPanelService) {
21
23
  super();
22
- K(this, "_addingComment$", new et(void 0));
23
- K(this, "addingComment$", this._addingComment$.asObservable());
24
- this._sidebarService = t, this._threadCommentPanelService = r, this.disposeWithMe(() => {
24
+ __publicField(this, "_addingComment$", new BehaviorSubject(void 0));
25
+ __publicField(this, "addingComment$", this._addingComment$.asObservable());
26
+ this._sidebarService = _sidebarService, this._threadCommentPanelService = _threadCommentPanelService, this.disposeWithMe(() => {
25
27
  this._addingComment$.complete();
26
28
  });
27
29
  }
28
30
  get addingComment() {
29
31
  return this._addingComment$.getValue();
30
32
  }
31
- startAdd(t) {
32
- this._addingComment$.next(t);
33
+ startAdd(comment) {
34
+ this._addingComment$.next(comment);
33
35
  }
34
36
  endAdd() {
35
37
  this._addingComment$.next(void 0);
36
38
  }
37
- };
38
- R = at([
39
- re(0, W),
40
- re(1, v(T))
41
- ], R);
42
- var z = { exports: {} }, E = {};
43
- /**
44
- * @license React
45
- * react-jsx-runtime.production.min.js
46
- *
47
- * Copyright (c) Facebook, Inc. and its affiliates.
48
- *
49
- * This source code is licensed under the MIT license found in the
50
- * LICENSE file in the root directory of this source tree.
51
- */
52
- var ie;
53
- function mt() {
54
- if (ie) return E;
55
- ie = 1;
56
- var e = tt, t = Symbol.for("react.element"), r = Symbol.for("react.fragment"), n = Object.prototype.hasOwnProperty, i = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, o = { key: !0, ref: !0, __self: !0, __source: !0 };
57
- function s(d, a, u) {
58
- var c, h = {}, C = null, _ = null;
59
- u !== void 0 && (C = "" + u), a.key !== void 0 && (C = "" + a.key), a.ref !== void 0 && (_ = a.ref);
60
- for (c in a) n.call(a, c) && !o.hasOwnProperty(c) && (h[c] = a[c]);
61
- if (d && d.defaultProps) for (c in a = d.defaultProps, a) h[c] === void 0 && (h[c] = a[c]);
62
- return { $$typeof: t, type: d, key: C, ref: _, props: h, _owner: i.current };
63
- }
64
- return E.Fragment = r, E.jsx = s, E.jsxs = s, E;
65
- }
66
- var oe;
67
- function lt() {
68
- return oe || (oe = 1, z.exports = mt()), z.exports;
69
- }
70
- var ut = lt();
71
- const pe = {
39
+ }, __name(_a, "DocThreadCommentService"), _a);
40
+ DocThreadCommentService = __decorateClass$4([
41
+ __decorateParam$4(0, ISidebarService),
42
+ __decorateParam$4(1, Inject(ThreadCommentPanelService))
43
+ ], DocThreadCommentService);
44
+ const AddDocCommentComment = {
72
45
  id: "docs.command.add-comment",
73
- type: w.COMMAND,
74
- async handler(e, t) {
75
- if (!t)
46
+ type: CommandType.COMMAND,
47
+ async handler(accessor, params) {
48
+ if (!params)
76
49
  return !1;
77
- const { comment: r, unitId: n } = t, o = await e.get(Ke).addComment(r), s = e.get(M), d = Le(
78
- e,
50
+ const { comment: originComment, unitId } = params, comment = await accessor.get(IThreadCommentDataSourceService).addComment(originComment), commandService = accessor.get(ICommandService), doMutation = addCustomDecorationBySelectionFactory(
51
+ accessor,
79
52
  {
80
- id: o.threadId,
81
- type: X.COMMENT
53
+ id: comment.threadId,
54
+ type: CustomDecorationType.COMMENT,
55
+ unitId
82
56
  }
83
57
  );
84
- if (d) {
85
- const a = {
86
- id: Ge.id,
58
+ if (doMutation) {
59
+ const addComment = {
60
+ id: AddCommentMutation.id,
87
61
  params: {
88
- unitId: n,
89
- subUnitId: I,
90
- comment: o
62
+ unitId,
63
+ subUnitId: DEFAULT_DOC_SUBUNIT_ID,
64
+ comment
91
65
  }
92
- }, u = {
93
- id: ce.id,
66
+ }, activeOperation = {
67
+ id: SetActiveCommentOperation.id,
94
68
  params: {
95
- unitId: n,
96
- subUnitId: I,
97
- commentId: o.id
69
+ unitId,
70
+ subUnitId: DEFAULT_DOC_SUBUNIT_ID,
71
+ commentId: comment.id
98
72
  }
99
73
  };
100
- return (await se([a, d, u], s)).result;
74
+ return (await sequenceExecute([addComment, doMutation, activeOperation], commandService)).result;
101
75
  }
102
76
  return !1;
103
77
  }
104
- }, ve = {
78
+ }, DeleteDocCommentComment = {
105
79
  id: "docs.command.delete-comment",
106
- type: w.COMMAND,
107
- async handler(e, t) {
108
- if (!t)
80
+ type: CommandType.COMMAND,
81
+ async handler(accessor, params) {
82
+ if (!params)
109
83
  return !1;
110
- const { commentId: r, unitId: n } = t, i = e.get(M), o = He(e, {
111
- id: r,
112
- unitId: n
84
+ const { commentId, unitId } = params, commandService = accessor.get(ICommandService), doMutation = deleteCustomDecorationFactory(accessor, {
85
+ id: commentId,
86
+ unitId
113
87
  });
114
- return o ? (await se([o], i)).result : !1;
88
+ return doMutation ? (await sequenceExecute([doMutation], commandService)).result : !1;
115
89
  }
116
- }, ge = (e) => {
117
- const t = e.get(L), r = e.get(H), n = t.getCurrent(), i = n == null ? void 0 : n.with(Ve).getSkeleton(), o = i == null ? void 0 : i.getViewModel().getEditArea();
118
- if (o === te.FOOTER || o === te.HEADER)
90
+ }, shouldDisableAddComment = /* @__PURE__ */ __name((accessor) => {
91
+ const renderManagerService = accessor.get(IRenderManagerService), docSelectionManagerService = accessor.get(DocSelectionManagerService), render2 = renderManagerService.getCurrent(), skeleton = render2 == null ? void 0 : render2.with(DocSkeletonManagerService).getSkeleton(), editArea = skeleton == null ? void 0 : skeleton.getViewModel().getEditArea();
92
+ if (editArea === DocumentEditArea.FOOTER || editArea === DocumentEditArea.HEADER)
119
93
  return !0;
120
- const s = r.getActiveTextRange();
121
- return !!(s == null || s.collapsed);
122
- };
123
- function ft(e) {
94
+ const range = docSelectionManagerService.getActiveTextRange();
95
+ return !!(range == null || range.collapsed);
96
+ }, "shouldDisableAddComment");
97
+ function AddDocCommentMenuItemFactory(accessor) {
124
98
  return {
125
- id: q.id,
126
- type: le.BUTTON,
99
+ id: StartAddCommentOperation.id,
100
+ type: MenuItemType.BUTTON,
127
101
  icon: "CommentSingle",
128
102
  title: "threadCommentUI.panel.addComment",
129
103
  tooltip: "threadCommentUI.panel.addComment",
130
- hidden$: ue(e, S.UNIVER_DOC, void 0, ye),
131
- disabled$: new fe(function(t) {
132
- const n = e.get(H).textSelection$.pipe(he(16)).subscribe(() => {
133
- t.next(ge(e));
104
+ hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_DOC, void 0, SHEET_EDITOR_UNITS),
105
+ disabled$: new Observable(function(subscribe) {
106
+ const observer = accessor.get(DocSelectionManagerService).textSelection$.pipe(debounceTime(16)).subscribe(() => {
107
+ subscribe.next(shouldDisableAddComment(accessor));
134
108
  });
135
109
  return () => {
136
- n.unsubscribe();
110
+ observer.unsubscribe();
137
111
  };
138
112
  })
139
113
  };
140
114
  }
141
- function ht(e) {
115
+ __name(AddDocCommentMenuItemFactory, "AddDocCommentMenuItemFactory");
116
+ function ToolbarDocCommentMenuItemFactory(accessor) {
142
117
  return {
143
- id: ee.id,
144
- type: le.BUTTON,
118
+ id: ToggleCommentPanelOperation.id,
119
+ type: MenuItemType.BUTTON,
145
120
  icon: "CommentSingle",
146
121
  title: "threadCommentUI.panel.addComment",
147
122
  tooltip: "threadCommentUI.panel.addComment",
148
- hidden$: ue(e, S.UNIVER_DOC)
123
+ hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_DOC)
149
124
  };
150
125
  }
151
- const y = () => {
152
- const e = U(F), t = U(de), r = Z(() => e.getCurrentTypeOfUnit$(S.UNIVER_DOC), [e]), n = G(r), i = Z(() => new fe((m) => m.next(I)), []), o = U(H), s = Z(
153
- () => o.textSelection$.pipe(he(16)),
154
- [o.textSelection$]
126
+ __name(ToolbarDocCommentMenuItemFactory, "ToolbarDocCommentMenuItemFactory");
127
+ const DocThreadCommentPanel = /* @__PURE__ */ __name(() => {
128
+ const univerInstanceService = useDependency(IUniverInstanceService), injector = useDependency(Injector), doc$ = useMemo(() => univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_DOC).pipe(filter((doc2) => !!doc2 && !isInternalEditorID(doc2.getUnitId()))), [univerInstanceService]), doc = useObservable(doc$), subUnitId$ = useMemo(() => new Observable((sub) => sub.next(DEFAULT_DOC_SUBUNIT_ID)), []), docSelectionManagerService = useDependency(DocSelectionManagerService), selectionChange$ = useMemo(
129
+ () => docSelectionManagerService.textSelection$.pipe(debounceTime(16)),
130
+ [docSelectionManagerService.textSelection$]
155
131
  );
156
- G(s);
157
- const d = U(M), a = U(R), u = G(a.addingComment$), [c, h] = nt([]);
158
- if (rt(() => {
159
- var b;
160
- const m = /* @__PURE__ */ new Set(), l = n == null ? void 0 : n.getCustomDecorations();
161
- h((b = l == null ? void 0 : l.map((f) => f.id).filter((f) => {
162
- const O = m.has(f);
163
- return m.add(f), !O;
164
- })) != null ? b : []);
165
- const g = d.onCommandExecuted((f) => {
166
- var O;
167
- if (f.id === ae.id) {
168
- const P = /* @__PURE__ */ new Set(), J = n == null ? void 0 : n.getCustomDecorations();
169
- h((O = J == null ? void 0 : J.map((N) => N.id).filter((N) => {
170
- const xe = P.has(N);
171
- return P.add(N), !xe;
172
- })) != null ? O : []);
132
+ useObservable(selectionChange$);
133
+ const commandService = useDependency(ICommandService), docCommentService = useDependency(DocThreadCommentService), tempComment = useObservable(docCommentService.addingComment$), [commentIds, setCommentIds] = useState([]);
134
+ if (useEffect(() => {
135
+ var _a6;
136
+ const set = /* @__PURE__ */ new Set(), customRanges = doc == null ? void 0 : doc.getCustomDecorations();
137
+ setCommentIds((_a6 = customRanges == null ? void 0 : customRanges.map((r) => r.id).filter((i) => {
138
+ const hasRepeat = set.has(i);
139
+ return set.add(i), !hasRepeat;
140
+ })) != null ? _a6 : []);
141
+ const dispose = commandService.onCommandExecuted((command) => {
142
+ var _a7;
143
+ if (command.id === RichTextEditingMutation.id) {
144
+ const set2 = /* @__PURE__ */ new Set(), customRanges2 = doc == null ? void 0 : doc.getCustomDecorations();
145
+ setCommentIds((_a7 = customRanges2 == null ? void 0 : customRanges2.map((r) => r.id).filter((i) => {
146
+ const hasRepeat = set2.has(i);
147
+ return set2.add(i), !hasRepeat;
148
+ })) != null ? _a7 : []);
173
149
  }
174
150
  });
175
151
  return () => {
176
- g.dispose();
152
+ dispose.dispose();
177
153
  };
178
- }, [d, n]), !n)
154
+ }, [commandService, doc]), !doc)
179
155
  return null;
180
- const C = ge(t), _ = n.getUnitId();
181
- return /* @__PURE__ */ ut.jsx(
182
- Ae,
156
+ const isInValidSelection = shouldDisableAddComment(injector), unitId = doc.getUnitId();
157
+ return /* @__PURE__ */ jsx(
158
+ ThreadCommentPanel,
183
159
  {
184
- unitId: _,
185
- subUnitId$: i,
186
- type: S.UNIVER_DOC,
187
- onAdd: () => {
188
- d.executeCommand(q.id);
189
- },
190
- getSubUnitName: () => "",
191
- disableAdd: C,
192
- tempComment: u,
193
- onAddComment: (m) => {
194
- if (!m.parentId) {
195
- const l = {
196
- unitId: _,
197
- range: u,
198
- comment: m
160
+ unitId,
161
+ subUnitId$,
162
+ type: UniverInstanceType.UNIVER_DOC,
163
+ onAdd: /* @__PURE__ */ __name(() => {
164
+ commandService.executeCommand(StartAddCommentOperation.id);
165
+ }, "onAdd"),
166
+ getSubUnitName: /* @__PURE__ */ __name(() => "", "getSubUnitName"),
167
+ disableAdd: isInValidSelection,
168
+ tempComment,
169
+ onAddComment: /* @__PURE__ */ __name((comment) => {
170
+ if (!comment.parentId) {
171
+ const params = {
172
+ unitId,
173
+ range: tempComment,
174
+ comment
199
175
  };
200
- return d.executeCommand(pe.id, l), a.endAdd(), !1;
176
+ return commandService.executeCommand(AddDocCommentComment.id, params), docCommentService.endAdd(), !1;
201
177
  }
202
178
  return !0;
203
- },
204
- onDeleteComment: (m) => {
205
- if (!m.parentId) {
206
- const l = {
207
- unitId: _,
208
- commentId: m.id
179
+ }, "onAddComment"),
180
+ onDeleteComment: /* @__PURE__ */ __name((comment) => {
181
+ if (!comment.parentId) {
182
+ const params = {
183
+ unitId,
184
+ commentId: comment.id
209
185
  };
210
- return d.executeCommand(ve.id, l), !1;
186
+ return commandService.executeCommand(DeleteDocCommentComment.id, params), !1;
211
187
  }
212
188
  return !0;
213
- },
214
- showComments: c
189
+ }, "onDeleteComment"),
190
+ showComments: commentIds
215
191
  }
216
192
  );
217
- };
218
- y.componentKey = "univer.doc.thread-comment-panel";
219
- const A = {
193
+ }, "DocThreadCommentPanel");
194
+ DocThreadCommentPanel.componentKey = "univer.doc.thread-comment-panel";
195
+ const ShowCommentPanelOperation = {
220
196
  id: "docs.operation.show-comment-panel",
221
- type: w.OPERATION,
222
- handler(e, t) {
223
- var i;
224
- const r = e.get(T), n = e.get(W);
225
- return (!r.panelVisible || ((i = n.options.children) == null ? void 0 : i.label) !== y.componentKey) && (n.open({
197
+ type: CommandType.OPERATION,
198
+ handler(accessor, params) {
199
+ var _a6;
200
+ const panelService = accessor.get(ThreadCommentPanelService), sidebarService = accessor.get(ISidebarService);
201
+ return (!panelService.panelVisible || ((_a6 = sidebarService.options.children) == null ? void 0 : _a6.label) !== DocThreadCommentPanel.componentKey) && (sidebarService.open({
226
202
  header: { title: "threadCommentUI.panel.title" },
227
- children: { label: y.componentKey },
203
+ children: { label: DocThreadCommentPanel.componentKey },
228
204
  width: 320,
229
- onClose: () => r.setPanelVisible(!1)
230
- }), r.setPanelVisible(!0)), t && r.setActiveComment(t == null ? void 0 : t.activeComment), !0;
205
+ onClose: /* @__PURE__ */ __name(() => panelService.setPanelVisible(!1), "onClose")
206
+ }), panelService.setPanelVisible(!0)), params && panelService.setActiveComment(params == null ? void 0 : params.activeComment), !0;
231
207
  }
232
- }, ee = {
208
+ }, ToggleCommentPanelOperation = {
233
209
  id: "docs.operation.toggle-comment-panel",
234
- type: w.OPERATION,
235
- handler(e) {
236
- var n;
237
- const t = e.get(T), r = e.get(W);
238
- return !t.panelVisible || ((n = r.options.children) == null ? void 0 : n.label) !== y.componentKey ? (r.open({
210
+ type: CommandType.OPERATION,
211
+ handler(accessor) {
212
+ var _a6;
213
+ const panelService = accessor.get(ThreadCommentPanelService), sidebarService = accessor.get(ISidebarService);
214
+ return !panelService.panelVisible || ((_a6 = sidebarService.options.children) == null ? void 0 : _a6.label) !== DocThreadCommentPanel.componentKey ? (sidebarService.open({
239
215
  header: { title: "threadCommentUI.panel.title" },
240
- children: { label: y.componentKey },
216
+ children: { label: DocThreadCommentPanel.componentKey },
241
217
  width: 320,
242
- onClose: () => t.setPanelVisible(!1)
243
- }), t.setPanelVisible(!0)) : (r.close(), t.setPanelVisible(!1), t.setActiveComment(null)), !0;
218
+ onClose: /* @__PURE__ */ __name(() => panelService.setPanelVisible(!1), "onClose")
219
+ }), panelService.setPanelVisible(!0)) : (sidebarService.close(), panelService.setPanelVisible(!1), panelService.setActiveComment(null)), !0;
244
220
  }
245
- }, q = {
221
+ }, StartAddCommentOperation = {
246
222
  id: "docs.operation.start-add-comment",
247
- type: w.OPERATION,
248
- handler(e) {
249
- var f, O, P;
250
- const t = e.get(T), n = e.get(F).getCurrentUnitForType(S.UNIVER_DOC), i = e.get(H), o = e.get(L), s = e.get(Te), d = e.get(R), a = e.get(M), u = e.get(W), c = i.getActiveTextRange();
251
- if (!n || !c)
223
+ type: CommandType.OPERATION,
224
+ handler(accessor) {
225
+ var _a6, _b, _c;
226
+ const panelService = accessor.get(ThreadCommentPanelService), doc = accessor.get(IUniverInstanceService).getCurrentUnitForType(UniverInstanceType.UNIVER_DOC), docSelectionManagerService = accessor.get(DocSelectionManagerService), renderManagerService = accessor.get(IRenderManagerService), userManagerService = accessor.get(UserManagerService), docCommentService = accessor.get(DocThreadCommentService), commandService = accessor.get(ICommandService), sidebarService = accessor.get(ISidebarService), textRange = docSelectionManagerService.getActiveTextRange();
227
+ if (!doc || !textRange)
252
228
  return !1;
253
- const h = (f = o.getRenderById(n.getUnitId())) == null ? void 0 : f.with(We);
254
- if (c.collapsed)
255
- return t.panelVisible ? (t.setPanelVisible(!1), u.close()) : a.executeCommand(A.id), !0;
256
- a.executeCommand(A.id);
257
- const C = n.getUnitId(), _ = ((P = (O = n.getBody()) == null ? void 0 : O.dataStream) != null ? P : "").slice(c.startOffset, c.endOffset), m = Pe.transform.getPlainText(_), l = I, g = "", b = {
258
- unitId: C,
259
- subUnitId: l,
260
- id: g,
261
- ref: m,
262
- dT: Ze(),
263
- personId: s.getCurrentUser().userID,
229
+ const docSelectionRenderManager = (_a6 = renderManagerService.getRenderById(doc.getUnitId())) == null ? void 0 : _a6.with(DocSelectionRenderService);
230
+ if (docSelectionRenderManager == null || docSelectionRenderManager.setReserveRangesStatus(!0), textRange.collapsed)
231
+ return panelService.panelVisible ? (panelService.setPanelVisible(!1), sidebarService.close()) : commandService.executeCommand(ShowCommentPanelOperation.id), !0;
232
+ commandService.executeCommand(ShowCommentPanelOperation.id);
233
+ const unitId = doc.getUnitId(), dataStream = ((_c = (_b = doc.getBody()) == null ? void 0 : _b.dataStream) != null ? _c : "").slice(textRange.startOffset, textRange.endOffset), text = BuildTextUtils.transform.getPlainText(dataStream), subUnitId = DEFAULT_DOC_SUBUNIT_ID, commentId = "", comment = {
234
+ unitId,
235
+ subUnitId,
236
+ id: commentId,
237
+ ref: text,
238
+ dT: getDT(),
239
+ personId: userManagerService.getCurrentUser().userID,
264
240
  text: {
265
241
  dataStream: `\r
266
242
  `
267
243
  },
268
- startOffset: c.startOffset,
269
- endOffset: c.endOffset,
244
+ startOffset: textRange.startOffset,
245
+ endOffset: textRange.endOffset,
270
246
  collapsed: !0,
271
- threadId: g
247
+ threadId: commentId
272
248
  };
273
- return h == null || h.blurEditor(), d.startAdd(b), t.setActiveComment({
274
- unitId: C,
275
- subUnitId: l,
276
- commentId: g
249
+ return docSelectionRenderManager == null || docSelectionRenderManager.blur(), docCommentService.startAdd(comment), panelService.setActiveComment({
250
+ unitId,
251
+ subUnitId,
252
+ commentId
277
253
  }), !0;
278
254
  }
279
255
  };
280
- var Ct = Object.defineProperty, _t = Object.getOwnPropertyDescriptor, pt = (e, t, r, n) => {
281
- for (var i = n > 1 ? void 0 : n ? _t(t, r) : t, o = e.length - 1, s; o >= 0; o--)
282
- (s = e[o]) && (i = (n ? s(t, r, i) : s(i)) || i);
283
- return n && i && Ct(t, r, i), i;
284
- }, x = (e, t) => (r, n) => t(r, n, e);
285
- let $ = class extends B {
286
- constructor(e, t, r, n, i, o) {
287
- super(), this._threadCommentPanelService = e, this._univerInstanceService = t, this._commandService = r, this._docThreadCommentService = n, this._renderManagerService = i, this._threadCommentModel = o, this._initSelectionChange(), this._initActiveCommandChange();
256
+ var __defProp$3 = Object.defineProperty, __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor, __decorateClass$3 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
257
+ for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
258
+ (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
259
+ return kind && result && __defProp$3(target, key, result), result;
260
+ }, "__decorateClass$3"), __decorateParam$3 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$3"), _a2;
261
+ let DocThreadCommentSelectionController = (_a2 = class extends Disposable {
262
+ constructor(_threadCommentPanelService, _univerInstanceService, _commandService, _docThreadCommentService, _renderManagerService, _threadCommentModel) {
263
+ super(), this._threadCommentPanelService = _threadCommentPanelService, this._univerInstanceService = _univerInstanceService, this._commandService = _commandService, this._docThreadCommentService = _docThreadCommentService, this._renderManagerService = _renderManagerService, this._threadCommentModel = _threadCommentModel, this._initSelectionChange(), this._initActiveCommandChange();
288
264
  }
289
265
  _initSelectionChange() {
290
- let e;
266
+ let lastSelection;
291
267
  this.disposeWithMe(
292
- this._commandService.onCommandExecuted((t) => {
293
- var r, n, i, o;
294
- if (t.id === je.id) {
295
- const s = t.params, { unitId: d, ranges: a } = s, u = this._univerInstanceService.getUnit(d, S.UNIVER_DOC), c = a[0];
296
- if ((e == null ? void 0 : e.startOffset) === (c == null ? void 0 : c.startOffset) && (e == null ? void 0 : e.endOffset) === (c == null ? void 0 : c.endOffset))
268
+ this._commandService.onCommandExecuted((commandInfo) => {
269
+ var _a6, _b, _c, _d;
270
+ if (commandInfo.id === SetTextSelectionsOperation.id) {
271
+ const params = commandInfo.params, { unitId, ranges } = params;
272
+ if (isInternalEditorID(unitId)) return;
273
+ const doc = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC), primary = ranges[0];
274
+ if ((lastSelection == null ? void 0 : lastSelection.startOffset) === (primary == null ? void 0 : primary.startOffset) && (lastSelection == null ? void 0 : lastSelection.endOffset) === (primary == null ? void 0 : primary.endOffset))
297
275
  return;
298
- if (e = c, c && u) {
299
- const { startOffset: h, endOffset: C, collapsed: _ } = c;
300
- let m;
301
- if (_ ? m = (n = (r = u.getBody()) == null ? void 0 : r.customDecorations) == null ? void 0 : n.find((l) => l.startIndex <= h && l.endIndex >= C - 1) : m = (o = (i = u.getBody()) == null ? void 0 : i.customDecorations) == null ? void 0 : o.find((l) => l.startIndex <= h && l.endIndex >= C - 1), m) {
302
- const l = this._threadCommentModel.getComment(d, I, m.id);
303
- l && !l.resolved && this._commandService.executeCommand(A.id, {
276
+ if (lastSelection = primary, primary && doc) {
277
+ const { startOffset, endOffset, collapsed } = primary;
278
+ let customRange;
279
+ if (collapsed ? customRange = (_b = (_a6 = doc.getBody()) == null ? void 0 : _a6.customDecorations) == null ? void 0 : _b.find((value) => value.startIndex <= startOffset && value.endIndex >= endOffset - 1) : customRange = (_d = (_c = doc.getBody()) == null ? void 0 : _c.customDecorations) == null ? void 0 : _d.find((value) => value.startIndex <= startOffset && value.endIndex >= endOffset - 1), customRange) {
280
+ const comment = this._threadCommentModel.getComment(unitId, DEFAULT_DOC_SUBUNIT_ID, customRange.id);
281
+ comment && !comment.resolved && this._commandService.executeCommand(ShowCommentPanelOperation.id, {
304
282
  activeComment: {
305
- unitId: d,
306
- subUnitId: I,
307
- commentId: m.id
283
+ unitId,
284
+ subUnitId: DEFAULT_DOC_SUBUNIT_ID,
285
+ commentId: customRange.id
308
286
  }
309
287
  });
310
288
  return;
@@ -312,260 +290,264 @@ let $ = class extends B {
312
290
  }
313
291
  if (!this._threadCommentPanelService.activeCommentId)
314
292
  return;
315
- this._commandService.executeCommand(ce.id);
293
+ this._commandService.executeCommand(SetActiveCommentOperation.id);
316
294
  }
317
295
  })
318
296
  );
319
297
  }
320
298
  _initActiveCommandChange() {
321
- this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe((e) => {
322
- var t, r, n, i;
323
- if (e) {
324
- const o = this._univerInstanceService.getUnit(e.unitId);
325
- if (o) {
326
- const s = (t = this._renderManagerService.getRenderById(e.unitId)) == null ? void 0 : t.with(qe), d = (n = (r = o.getBody()) == null ? void 0 : r.customDecorations) == null ? void 0 : n.find((a) => a.id === e.commentId);
327
- d && s && s.scrollToRange({
328
- startOffset: d.startIndex,
329
- endOffset: d.endIndex,
299
+ this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe((activeComment) => {
300
+ var _a6, _b, _c, _d;
301
+ if (activeComment) {
302
+ const doc = this._univerInstanceService.getUnit(activeComment.unitId);
303
+ if (doc) {
304
+ const backScrollController = (_a6 = this._renderManagerService.getRenderById(activeComment.unitId)) == null ? void 0 : _a6.with(DocBackScrollRenderController), customRange = (_c = (_b = doc.getBody()) == null ? void 0 : _b.customDecorations) == null ? void 0 : _c.find((range) => range.id === activeComment.commentId);
305
+ customRange && backScrollController && backScrollController.scrollToRange({
306
+ startOffset: customRange.startIndex,
307
+ endOffset: customRange.endIndex,
330
308
  collapsed: !1
331
309
  });
332
310
  }
333
311
  }
334
- (!e || e.commentId !== ((i = this._docThreadCommentService.addingComment) == null ? void 0 : i.id)) && this._docThreadCommentService.endAdd();
312
+ (!activeComment || activeComment.commentId !== ((_d = this._docThreadCommentService.addingComment) == null ? void 0 : _d.id)) && this._docThreadCommentService.endAdd();
335
313
  }));
336
314
  }
337
- };
338
- $ = pt([
339
- x(0, v(T)),
340
- x(1, F),
341
- x(2, M),
342
- x(3, v(R)),
343
- x(4, L),
344
- x(5, v(me))
345
- ], $);
346
- var p = function() {
347
- return p = Object.assign || function(e) {
348
- for (var t, r = 1, n = arguments.length; r < n; r++) {
349
- t = arguments[r];
350
- for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
315
+ }, __name(_a2, "DocThreadCommentSelectionController"), _a2);
316
+ DocThreadCommentSelectionController = __decorateClass$3([
317
+ __decorateParam$3(0, Inject(ThreadCommentPanelService)),
318
+ __decorateParam$3(1, IUniverInstanceService),
319
+ __decorateParam$3(2, ICommandService),
320
+ __decorateParam$3(3, Inject(DocThreadCommentService)),
321
+ __decorateParam$3(4, IRenderManagerService),
322
+ __decorateParam$3(5, Inject(ThreadCommentModel))
323
+ ], DocThreadCommentSelectionController);
324
+ var __assign = function() {
325
+ return __assign = Object.assign || function(t) {
326
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
327
+ s = arguments[i];
328
+ for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && (t[p] = s[p]);
351
329
  }
352
- return e;
353
- }, p.apply(this, arguments);
354
- }, vt = function(e, t) {
355
- var r = {};
356
- for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]);
357
- if (e != null && typeof Object.getOwnPropertySymbols == "function")
358
- for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++)
359
- t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]);
360
- return r;
361
- }, Ie = Ce(function(e, t) {
362
- var r = e.icon, n = e.id, i = e.className, o = e.extend, s = vt(e, ["icon", "id", "className", "extend"]), d = "univerjs-icon univerjs-icon-".concat(n, " ").concat(i || "").trim(), a = it("_".concat(St()));
363
- return Se(r, "".concat(n), { defIds: r.defIds, idSuffix: a.current }, p({ ref: t, className: d }, s), o);
330
+ return t;
331
+ }, __assign.apply(this, arguments);
332
+ }, __rest = function(s, e) {
333
+ var t = {};
334
+ for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]);
335
+ if (s != null && typeof Object.getOwnPropertySymbols == "function")
336
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)
337
+ e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]);
338
+ return t;
339
+ }, IconBase = forwardRef(function(props, ref) {
340
+ var icon = props.icon, id = props.id, className = props.className, extend = props.extend, restProps = __rest(props, ["icon", "id", "className", "extend"]), cls = "univerjs-icon univerjs-icon-".concat(id, " ").concat(className || "").trim(), idSuffix = useRef("_".concat(generateShortUuid()));
341
+ return render(icon, "".concat(id), { defIds: icon.defIds, idSuffix: idSuffix.current }, __assign({ ref, className: cls }, restProps), extend);
364
342
  });
365
- function Se(e, t, r, n, i) {
366
- return _e(e.tag, p(p({ key: t }, gt(e, r, i)), n), (It(e, r).children || []).map(function(o, s) {
367
- return Se(o, "".concat(t, "-").concat(e.tag, "-").concat(s), r, void 0, i);
343
+ function render(node, id, runtimeProps, rootProps, extend) {
344
+ return createElement(node.tag, __assign(__assign({ key: id }, replaceRuntimeIdsAndExtInAttrs(node, runtimeProps, extend)), rootProps), (replaceRuntimeIdsInDefs(node, runtimeProps).children || []).map(function(child, index) {
345
+ return render(child, "".concat(id, "-").concat(node.tag, "-").concat(index), runtimeProps, void 0, extend);
368
346
  }));
369
347
  }
370
- function gt(e, t, r) {
371
- var n = p({}, e.attrs);
372
- r != null && r.colorChannel1 && n.fill === "colorChannel1" && (n.fill = r.colorChannel1);
373
- var i = t.defIds;
374
- return !i || i.length === 0 || (e.tag === "use" && n["xlink:href"] && (n["xlink:href"] = n["xlink:href"] + t.idSuffix), Object.entries(n).forEach(function(o) {
375
- var s = o[0], d = o[1];
376
- typeof d == "string" && (n[s] = d.replace(/url\(#(.*)\)/, "url(#$1".concat(t.idSuffix, ")")));
377
- })), n;
348
+ __name(render, "render");
349
+ function replaceRuntimeIdsAndExtInAttrs(node, runtimeProps, extend) {
350
+ var attrs = __assign({}, node.attrs);
351
+ extend != null && extend.colorChannel1 && attrs.fill === "colorChannel1" && (attrs.fill = extend.colorChannel1);
352
+ var defIds = runtimeProps.defIds;
353
+ return !defIds || defIds.length === 0 || (node.tag === "use" && attrs["xlink:href"] && (attrs["xlink:href"] = attrs["xlink:href"] + runtimeProps.idSuffix), Object.entries(attrs).forEach(function(_a6) {
354
+ var key = _a6[0], value = _a6[1];
355
+ typeof value == "string" && (attrs[key] = value.replace(/url\(#(.*)\)/, "url(#$1".concat(runtimeProps.idSuffix, ")")));
356
+ })), attrs;
378
357
  }
379
- function It(e, t) {
380
- var r, n = t.defIds;
381
- return !n || n.length === 0 ? e : e.tag === "defs" && (!((r = e.children) === null || r === void 0) && r.length) ? p(p({}, e), { children: e.children.map(function(i) {
382
- return typeof i.attrs.id == "string" && n && n.indexOf(i.attrs.id) > -1 ? p(p({}, i), { attrs: p(p({}, i.attrs), { id: i.attrs.id + t.idSuffix }) }) : i;
383
- }) }) : e;
358
+ __name(replaceRuntimeIdsAndExtInAttrs, "replaceRuntimeIdsAndExtInAttrs");
359
+ function replaceRuntimeIdsInDefs(node, runtimeProps) {
360
+ var _a6, defIds = runtimeProps.defIds;
361
+ return !defIds || defIds.length === 0 ? node : node.tag === "defs" && (!((_a6 = node.children) === null || _a6 === void 0) && _a6.length) ? __assign(__assign({}, node), { children: node.children.map(function(child) {
362
+ return typeof child.attrs.id == "string" && defIds && defIds.indexOf(child.attrs.id) > -1 ? __assign(__assign({}, child), { attrs: __assign(__assign({}, child.attrs), { id: child.attrs.id + runtimeProps.idSuffix }) }) : child;
363
+ }) }) : node;
384
364
  }
385
- function St() {
365
+ __name(replaceRuntimeIdsInDefs, "replaceRuntimeIdsInDefs");
366
+ function generateShortUuid() {
386
367
  return Math.random().toString(36).substring(2, 8);
387
368
  }
388
- Ie.displayName = "UniverIcon";
389
- var Ot = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 17 17", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521C5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345ZM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521C8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345ZM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521C11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345Z", fillRule: "evenodd", clipRule: "evenodd" } }, { tag: "path", attrs: { fill: "currentColor", d: "M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521 5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345zM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521 8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345zM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521 11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345z" } }, { tag: "path", attrs: { fill: "currentColor", d: "M1.84351 3.41861C1.84351 3.01861 2.15531 2.69434 2.53993 2.69434H14.9381C15.3228 2.69434 15.6346 3.01861 15.6346 3.41861V12.4611C15.6346 12.8612 15.3228 13.1854 14.9381 13.1854H8.82117L6.06643 14.6179C5.85054 14.7301 5.59416 14.7181 5.38884 14.5862C5.18352 14.4542 5.05855 14.2211 5.05855 13.9701V13.1854H2.53993C2.15531 13.1854 1.84351 12.8612 1.84351 12.4611L1.84351 3.41861ZM6.45141 12.7982L8.34531 12.0135C8.44201 11.9632 8.54864 11.9371 8.65676 11.9371H14.2417C14.3522 11.9371 14.4417 11.8475 14.4417 11.7371V4.14271C14.4417 4.03225 14.3522 3.94271 14.2417 3.94271H3.23636C3.12591 3.94271 3.03636 4.03225 3.03636 4.14271L3.03636 11.7371C3.03636 11.8475 3.12591 11.9371 3.23636 11.9371L5.75498 11.9371C6.1396 11.9371 6.45141 12.0611 6.45141 12.4611V12.7982Z", fillRule: "evenodd", clipRule: "evenodd" } }] }, Oe = Ce(function(e, t) {
390
- return _e(Ie, Object.assign({}, e, {
369
+ __name(generateShortUuid, "generateShortUuid");
370
+ IconBase.displayName = "UniverIcon";
371
+ var element = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 17 17", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521C5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345ZM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521C8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345ZM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521C11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345Z", fillRule: "evenodd", clipRule: "evenodd" } }, { tag: "path", attrs: { fill: "currentColor", d: "M5.83725 6.78345C6.22188 6.78345 6.53368 7.10742 6.53368 7.50706V8.41159C6.53368 8.81123 6.22188 9.13521 5.83725 9.13521 5.45263 9.13521 5.14082 8.81123 5.14082 8.41159V7.50706C5.14082 7.10742 5.45263 6.78345 5.83725 6.78345zM8.73904 6.78345C9.12366 6.78345 9.43546 7.10742 9.43546 7.50706V8.41159C9.43546 8.81123 9.12366 9.13521 8.73904 9.13521 8.35441 9.13521 8.04261 8.81123 8.04261 8.41159V7.50706C8.04261 7.10742 8.35441 6.78345 8.73904 6.78345zM11.6408 6.78345C12.0254 6.78345 12.3372 7.10742 12.3372 7.50706V8.41159C12.3372 8.81123 12.0254 9.13521 11.6408 9.13521 11.2562 9.13521 10.9444 8.81123 10.9444 8.41159V7.50706C10.9444 7.10742 11.2562 6.78345 11.6408 6.78345z" } }, { tag: "path", attrs: { fill: "currentColor", d: "M1.84351 3.41861C1.84351 3.01861 2.15531 2.69434 2.53993 2.69434H14.9381C15.3228 2.69434 15.6346 3.01861 15.6346 3.41861V12.4611C15.6346 12.8612 15.3228 13.1854 14.9381 13.1854H8.82117L6.06643 14.6179C5.85054 14.7301 5.59416 14.7181 5.38884 14.5862C5.18352 14.4542 5.05855 14.2211 5.05855 13.9701V13.1854H2.53993C2.15531 13.1854 1.84351 12.8612 1.84351 12.4611L1.84351 3.41861ZM6.45141 12.7982L8.34531 12.0135C8.44201 11.9632 8.54864 11.9371 8.65676 11.9371H14.2417C14.3522 11.9371 14.4417 11.8475 14.4417 11.7371V4.14271C14.4417 4.03225 14.3522 3.94271 14.2417 3.94271H3.23636C3.12591 3.94271 3.03636 4.03225 3.03636 4.14271L3.03636 11.7371C3.03636 11.8475 3.12591 11.9371 3.23636 11.9371L5.75498 11.9371C6.1396 11.9371 6.45141 12.0611 6.45141 12.4611V12.7982Z", fillRule: "evenodd", clipRule: "evenodd" } }] }, CommentSingle = forwardRef(function(props, ref) {
372
+ return createElement(IconBase, Object.assign({}, props, {
391
373
  id: "comment-single",
392
- ref: t,
393
- icon: Ot
374
+ ref,
375
+ icon: element
394
376
  }));
395
377
  });
396
- Oe.displayName = "CommentSingle";
397
- const Mt = {
398
- [ze.OTHERS]: {
399
- [ee.id]: {
378
+ CommentSingle.displayName = "CommentSingle";
379
+ const menuSchema = {
380
+ [RibbonStartGroup.OTHERS]: {
381
+ [ToggleCommentPanelOperation.id]: {
400
382
  order: 1,
401
- menuItemFactory: ht
383
+ menuItemFactory: ToolbarDocCommentMenuItemFactory
402
384
  }
403
385
  },
404
- [Ye.MAIN_AREA]: {
405
- [Qe.DATA]: {
406
- [q.id]: {
386
+ [ContextMenuPosition.MAIN_AREA]: {
387
+ [ContextMenuGroup.DATA]: {
388
+ [StartAddCommentOperation.id]: {
407
389
  order: 1,
408
- menuItemFactory: ft
390
+ menuItemFactory: AddDocCommentMenuItemFactory
409
391
  }
410
392
  }
411
393
  }
412
394
  };
413
- var bt = Object.defineProperty, xt = Object.getOwnPropertyDescriptor, Dt = (e, t, r, n) => {
414
- for (var i = n > 1 ? void 0 : n ? xt(t, r) : t, o = e.length - 1, s; o >= 0; o--)
415
- (s = e[o]) && (i = (n ? s(t, r, i) : s(i)) || i);
416
- return n && i && bt(t, r, i), i;
417
- }, Y = (e, t) => (r, n) => t(r, n, e);
418
- let V = class extends B {
419
- constructor(e, t, r) {
420
- super(), this._commandService = e, this._menuManagerService = t, this._componentManager = r, this._initCommands(), this._initMenus(), this._initComponents();
395
+ var __defProp$2 = Object.defineProperty, __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor, __decorateClass$2 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
396
+ for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
397
+ (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
398
+ return kind && result && __defProp$2(target, key, result), result;
399
+ }, "__decorateClass$2"), __decorateParam$2 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$2"), _a3;
400
+ let DocThreadCommentUIController = (_a3 = class extends Disposable {
401
+ constructor(_commandService, _menuManagerService, _componentManager) {
402
+ super(), this._commandService = _commandService, this._menuManagerService = _menuManagerService, this._componentManager = _componentManager, this._initCommands(), this._initMenus(), this._initComponents();
421
403
  }
422
404
  _initCommands() {
423
405
  [
424
- pe,
425
- ve,
426
- A,
427
- q,
428
- ee
429
- ].forEach((e) => {
430
- this.disposeWithMe(this._commandService.registerCommand(e));
406
+ AddDocCommentComment,
407
+ DeleteDocCommentComment,
408
+ ShowCommentPanelOperation,
409
+ StartAddCommentOperation,
410
+ ToggleCommentPanelOperation
411
+ ].forEach((command) => {
412
+ this.disposeWithMe(this._commandService.registerCommand(command));
431
413
  });
432
414
  }
433
415
  _initMenus() {
434
- this._menuManagerService.mergeMenu(Mt);
416
+ this._menuManagerService.mergeMenu(menuSchema);
435
417
  }
436
418
  _initComponents() {
437
- [y].forEach((e) => {
438
- this.disposeWithMe(this._componentManager.register(e.componentKey, e));
439
- }), this.disposeWithMe(this._componentManager.register("CommentSingle", Oe));
419
+ [DocThreadCommentPanel].forEach((comp) => {
420
+ this.disposeWithMe(this._componentManager.register(comp.componentKey, comp));
421
+ }), this.disposeWithMe(this._componentManager.register("CommentSingle", CommentSingle));
440
422
  }
441
- };
442
- V = Dt([
443
- Y(0, M),
444
- Y(1, ke),
445
- Y(2, v(Xe))
446
- ], V);
447
- var Rt = Object.defineProperty, yt = Object.getOwnPropertyDescriptor, Tt = (e, t, r, n) => {
448
- for (var i = n > 1 ? void 0 : n ? yt(t, r) : t, o = e.length - 1, s; o >= 0; o--)
449
- (s = e[o]) && (i = (n ? s(t, r, i) : s(i)) || i);
450
- return n && i && Rt(t, r, i), i;
451
- }, D = (e, t) => (r, n) => t(r, n, e);
452
- let k = class extends B {
453
- constructor(e, t, r, n, i, o, s) {
454
- super(), this._context = e, this._docInterceptorService = t, this._threadCommentPanelService = r, this._docRenderController = n, this._univerInstanceService = i, this._threadCommentModel = o, this._commandService = s, this._interceptorViewModel(), this._initReRender(), this._initSyncComments();
423
+ }, __name(_a3, "DocThreadCommentUIController"), _a3);
424
+ DocThreadCommentUIController = __decorateClass$2([
425
+ __decorateParam$2(0, ICommandService),
426
+ __decorateParam$2(1, IMenuManagerService),
427
+ __decorateParam$2(2, Inject(ComponentManager))
428
+ ], DocThreadCommentUIController);
429
+ var __defProp$1 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor, __decorateClass$1 = /* @__PURE__ */ __name((decorators, target, key, kind) => {
430
+ for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
431
+ (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
432
+ return kind && result && __defProp$1(target, key, result), result;
433
+ }, "__decorateClass$1"), __decorateParam$1 = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam$1"), _a4;
434
+ let DocThreadCommentRenderController = (_a4 = class extends Disposable {
435
+ constructor(_context, _docInterceptorService, _threadCommentPanelService, _docRenderController, _univerInstanceService, _threadCommentModel, _commandService) {
436
+ super(), this._context = _context, this._docInterceptorService = _docInterceptorService, this._threadCommentPanelService = _threadCommentPanelService, this._docRenderController = _docRenderController, this._univerInstanceService = _univerInstanceService, this._threadCommentModel = _threadCommentModel, this._commandService = _commandService, this._interceptorViewModel(), this._initReRender(), this._initSyncComments();
455
437
  }
456
438
  _initReRender() {
457
- this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe((e) => {
458
- var r;
459
- if (e) {
460
- this._docRenderController.reRender(e.unitId);
439
+ this.disposeWithMe(this._threadCommentPanelService.activeCommentId$.subscribe((activeComment) => {
440
+ var _a6;
441
+ if (activeComment) {
442
+ this._docRenderController.reRender(activeComment.unitId);
461
443
  return;
462
444
  }
463
- const t = (r = this._univerInstanceService.getCurrentUnitForType(S.UNIVER_DOC)) == null ? void 0 : r.getUnitId();
464
- t && this._docRenderController.reRender(t);
465
- })), this.disposeWithMe(this._threadCommentModel.commentUpdate$.subscribe((e) => {
466
- e.type === "resolve" && this._docRenderController.reRender(e.unitId);
445
+ const unitId = (_a6 = this._univerInstanceService.getCurrentUnitForType(UniverInstanceType.UNIVER_DOC)) == null ? void 0 : _a6.getUnitId();
446
+ unitId && this._docRenderController.reRender(unitId);
447
+ })), this.disposeWithMe(this._threadCommentModel.commentUpdate$.subscribe((update) => {
448
+ update.type === "resolve" && this._docRenderController.reRender(update.unitId);
467
449
  }));
468
450
  }
469
451
  _interceptorViewModel() {
470
- this._docInterceptorService.intercept(Fe.CUSTOM_DECORATION, {
471
- handler: (e, t, r) => {
472
- if (!e)
473
- return r(e);
474
- const { unitId: n, index: i, customDecorations: o } = t, s = this._threadCommentPanelService.activeCommentId, { commentId: d, unitId: a } = s || {}, u = o.find((_) => _.id === d), c = this._threadCommentModel.getComment(n, I, e.id);
475
- if (!c)
476
- return r({
477
- ...e,
452
+ this._docInterceptorService.intercept(DOC_INTERCEPTOR_POINT.CUSTOM_DECORATION, {
453
+ handler: /* @__PURE__ */ __name((data, pos, next) => {
454
+ if (!data)
455
+ return next(data);
456
+ const { unitId, index, customDecorations } = pos, activeComment = this._threadCommentPanelService.activeCommentId, { commentId, unitId: commentUnitID } = activeComment || {}, activeCustomDecoration = customDecorations.find((i) => i.id === commentId), comment = this._threadCommentModel.getComment(unitId, DEFAULT_DOC_SUBUNIT_ID, data.id);
457
+ if (!comment)
458
+ return next({
459
+ ...data,
478
460
  show: !1
479
461
  });
480
- const h = u && i >= u.startIndex && i <= u.endIndex, C = a === n && e.id === d;
481
- return r({
482
- ...e,
483
- active: C || h,
484
- show: !c.resolved
462
+ const isActiveIndex = activeCustomDecoration && index >= activeCustomDecoration.startIndex && index <= activeCustomDecoration.endIndex, isActive = commentUnitID === unitId && data.id === commentId;
463
+ return next({
464
+ ...data,
465
+ active: isActive || isActiveIndex,
466
+ show: !comment.resolved
485
467
  });
486
- }
468
+ }, "handler")
487
469
  });
488
470
  }
489
471
  _initSyncComments() {
490
- var i, o, s;
491
- const e = this._context.unit.getUnitId(), t = I, r = (s = (o = (i = this._context.unit.getBody()) == null ? void 0 : i.customDecorations) == null ? void 0 : o.filter((d) => d.type === X.COMMENT).map((d) => d.id)) != null ? s : [];
492
- r.forEach((d) => {
493
- this._threadCommentModel.getComment(e, t, d) || this._threadCommentModel.addComment(e, t, { id: d, threadId: d, ref: "", dT: "", personId: "", text: { dataStream: "" }, unitId: e, subUnitId: t });
494
- }), r.length && this._threadCommentModel.syncThreadComments(this._context.unit.getUnitId(), I, r);
495
- let n = r.sort();
496
- this.disposeWithMe(this._commandService.onCommandExecuted((d) => {
497
- var a, u, c;
498
- if (d.id === ae.id) {
499
- if (d.params.unitId !== this._context.unit.getUnitId())
472
+ var _a6, _b, _c;
473
+ const unitId = this._context.unit.getUnitId(), subUnitId = DEFAULT_DOC_SUBUNIT_ID, threadIds = (_c = (_b = (_a6 = this._context.unit.getBody()) == null ? void 0 : _a6.customDecorations) == null ? void 0 : _b.filter((i) => i.type === CustomDecorationType.COMMENT).map((i) => i.id)) != null ? _c : [];
474
+ threadIds.forEach((id) => {
475
+ this._threadCommentModel.getComment(unitId, subUnitId, id) || this._threadCommentModel.addComment(unitId, subUnitId, { id, threadId: id, ref: "", dT: "", personId: "", text: { dataStream: "" }, unitId, subUnitId });
476
+ }), threadIds.length && this._threadCommentModel.syncThreadComments(this._context.unit.getUnitId(), DEFAULT_DOC_SUBUNIT_ID, threadIds);
477
+ let prevThreadIds = threadIds.sort();
478
+ this.disposeWithMe(this._commandService.onCommandExecuted((commandInfo) => {
479
+ var _a7, _b2, _c2;
480
+ if (commandInfo.id === RichTextEditingMutation.id) {
481
+ if (commandInfo.params.unitId !== this._context.unit.getUnitId())
500
482
  return;
501
- const C = (c = (u = (a = this._context.unit.getBody()) == null ? void 0 : a.customDecorations) == null ? void 0 : u.filter((m) => m.type === X.COMMENT).map((m) => m.id)) != null ? c : [], _ = C.sort();
502
- if (JSON.stringify(n) !== JSON.stringify(_)) {
503
- const m = new Set(n), l = new Set(_), g = /* @__PURE__ */ new Set(), b = /* @__PURE__ */ new Set();
504
- C.forEach((f) => {
505
- m.has(f) || g.add(f);
506
- }), n.forEach((f) => {
507
- l.has(f) || b.add(f);
508
- }), n = _, g.forEach((f) => {
509
- this._threadCommentModel.getComment(e, t, f) || this._threadCommentModel.addComment(e, t, { id: f, threadId: f, ref: "", dT: "", personId: "", text: { dataStream: "" }, unitId: e, subUnitId: t });
510
- }), this._threadCommentModel.syncThreadComments(e, t, [...g]);
483
+ const currentThreadIds = (_c2 = (_b2 = (_a7 = this._context.unit.getBody()) == null ? void 0 : _a7.customDecorations) == null ? void 0 : _b2.filter((i) => i.type === CustomDecorationType.COMMENT).map((i) => i.id)) != null ? _c2 : [], currentThreadIdsSorted = currentThreadIds.sort();
484
+ if (JSON.stringify(prevThreadIds) !== JSON.stringify(currentThreadIdsSorted)) {
485
+ const preIds = new Set(prevThreadIds), currentIds = new Set(currentThreadIdsSorted), addIds = /* @__PURE__ */ new Set(), deleteIds = /* @__PURE__ */ new Set();
486
+ currentThreadIds.forEach((id) => {
487
+ preIds.has(id) || addIds.add(id);
488
+ }), prevThreadIds.forEach((id) => {
489
+ currentIds.has(id) || deleteIds.add(id);
490
+ }), prevThreadIds = currentThreadIdsSorted, addIds.forEach((id) => {
491
+ this._threadCommentModel.getComment(unitId, subUnitId, id) || this._threadCommentModel.addComment(unitId, subUnitId, { id, threadId: id, ref: "", dT: "", personId: "", text: { dataStream: "" }, unitId, subUnitId });
492
+ }), this._threadCommentModel.syncThreadComments(unitId, subUnitId, [...addIds]);
511
493
  }
512
494
  }
513
495
  }));
514
496
  }
515
- };
516
- k = Tt([
517
- D(1, v(Be)),
518
- D(2, v(T)),
519
- D(3, v(Je)),
520
- D(4, F),
521
- D(5, v(me)),
522
- D(6, M)
523
- ], k);
524
- var Me = Object.defineProperty, Pt = Object.getOwnPropertyDescriptor, Ut = (e, t, r) => t in e ? Me(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, Et = (e, t, r, n) => {
525
- for (var i = n > 1 ? void 0 : n ? Pt(t, r) : t, o = e.length - 1, s; o >= 0; o--)
526
- (s = e[o]) && (i = (n ? s(t, r, i) : s(i)) || i);
527
- return n && i && Me(t, r, i), i;
528
- }, Q = (e, t) => (r, n) => t(r, n, e), be = (e, t, r) => Ut(e, typeof t != "symbol" ? t + "" : t, r);
529
- let j = class extends Ee {
530
- constructor(e = ne, t, r, n) {
531
- super(), this._config = e, this._injector = t, this._renderManagerSrv = r, this._configService = n;
532
- const { menu: i, ...o } = we(
497
+ }, __name(_a4, "DocThreadCommentRenderController"), _a4);
498
+ DocThreadCommentRenderController = __decorateClass$1([
499
+ __decorateParam$1(1, Inject(DocInterceptorService)),
500
+ __decorateParam$1(2, Inject(ThreadCommentPanelService)),
501
+ __decorateParam$1(3, Inject(DocRenderController)),
502
+ __decorateParam$1(4, IUniverInstanceService),
503
+ __decorateParam$1(5, Inject(ThreadCommentModel)),
504
+ __decorateParam$1(6, ICommandService)
505
+ ], DocThreadCommentRenderController);
506
+ var __defProp2 = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __defNormalProp2 = /* @__PURE__ */ __name((obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, "__defNormalProp"), __decorateClass = /* @__PURE__ */ __name((decorators, target, key, kind) => {
507
+ for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--)
508
+ (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result);
509
+ return kind && result && __defProp2(target, key, result), result;
510
+ }, "__decorateClass"), __decorateParam = /* @__PURE__ */ __name((index, decorator) => (target, key) => decorator(target, key, index), "__decorateParam"), __publicField2 = /* @__PURE__ */ __name((obj, key, value) => __defNormalProp2(obj, typeof key != "symbol" ? key + "" : key, value), "__publicField"), _a5;
511
+ let UniverDocsThreadCommentUIPlugin = (_a5 = class extends Plugin {
512
+ constructor(_config = defaultPluginConfig, _injector, _renderManagerSrv, _configService) {
513
+ super(), this._config = _config, this._injector = _injector, this._renderManagerSrv = _renderManagerSrv, this._configService = _configService;
514
+ const { menu, ...rest } = merge(
533
515
  {},
534
- ne,
516
+ defaultPluginConfig,
535
517
  this._config
536
518
  );
537
- i && this._configService.setConfig("menu", i, { merge: !0 }), this._configService.setConfig(st, o);
519
+ menu && this._configService.setConfig("menu", menu, { merge: !0 }), this._configService.setConfig(DOCS_THREAD_COMMENT_UI_PLUGIN_CONFIG_KEY, rest);
538
520
  }
539
521
  onStarting() {
540
522
  [
541
- [V],
542
- [$],
543
- [R]
544
- ].forEach((e) => {
545
- this._injector.add(e);
523
+ [DocThreadCommentUIController],
524
+ [DocThreadCommentSelectionController],
525
+ [DocThreadCommentService]
526
+ ].forEach((dep) => {
527
+ this._injector.add(dep);
546
528
  });
547
529
  }
548
530
  onRendered() {
549
- this._initRenderModule(), this._injector.get($), this._injector.get(V);
531
+ this._initRenderModule(), this._injector.get(DocThreadCommentSelectionController), this._injector.get(DocThreadCommentUIController);
550
532
  }
551
533
  _initRenderModule() {
552
- [k].forEach((e) => {
553
- this._renderManagerSrv.registerRenderModule(S.UNIVER_DOC, e);
534
+ [DocThreadCommentRenderController].forEach((dep) => {
535
+ this._renderManagerSrv.registerRenderModule(UniverInstanceType.UNIVER_DOC, dep);
554
536
  });
555
537
  }
556
- };
557
- be(j, "pluginName", ot);
558
- be(j, "type", S.UNIVER_DOC);
559
- j = Et([
560
- Ue($e),
561
- Q(1, v(de)),
562
- Q(2, L),
563
- Q(3, Ne)
564
- ], j);
538
+ }, __name(_a5, "UniverDocsThreadCommentUIPlugin"), _a5);
539
+ __publicField2(UniverDocsThreadCommentUIPlugin, "pluginName", PLUGIN_NAME);
540
+ __publicField2(UniverDocsThreadCommentUIPlugin, "type", UniverInstanceType.UNIVER_DOC);
541
+ UniverDocsThreadCommentUIPlugin = __decorateClass([
542
+ DependentOn(UniverThreadCommentUIPlugin),
543
+ __decorateParam(1, Inject(Injector)),
544
+ __decorateParam(2, IRenderManagerService),
545
+ __decorateParam(3, IConfigService)
546
+ ], UniverDocsThreadCommentUIPlugin);
565
547
  export {
566
- pe as AddDocCommentComment,
567
- ve as DeleteDocCommentComment,
568
- A as ShowCommentPanelOperation,
569
- q as StartAddCommentOperation,
570
- j as UniverDocsThreadCommentUIPlugin
548
+ AddDocCommentComment,
549
+ DeleteDocCommentComment,
550
+ ShowCommentPanelOperation,
551
+ StartAddCommentOperation,
552
+ UniverDocsThreadCommentUIPlugin
571
553
  };