| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832 |
- var qe = Object.defineProperty;
- var Ze = (t, e, n) => e in t ? qe(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
- var V = (t, e, n) => Ze(t, typeof e != "symbol" ? e + "" : e, n);
- import { Inject as Ue, Disposable as Je, UniverInstanceType as he, IUniverInstanceService as Ke, CommandType as Pe, DependentOn as Ge, Injector as Ye, Plugin as Qe, merge as Xe, mergeOverrideWithDependencies as et, ICommandService as oe, IConfigService as tt, useDependency as U, LocaleService as pe, DOCS_NORMAL_EDITOR_UNIT_ID_KEY as nt, BuildTextUtils as Ce, Tools as rt, CustomRangeType as ot, getBodySlice as it, UserManagerService as ge, generateRandomId as at } from "@univerjs/core";
- import { UniverThreadCommentPlugin as st, ThreadCommentModel as Oe, getDT as dt, AddCommentCommand as lt, UpdateCommentCommand as mt, ResolveCommentCommand as ct, DeleteCommentTreeCommand as Re, DeleteCommentCommand as ut } from "@univerjs/thread-comment";
- import { ISidebarService as $e, KeyCode as Ie, useObservable as B } from "@univerjs/ui";
- import { BehaviorSubject as xe, filter as ht, debounceTime as Ct } from "rxjs";
- import ft, { forwardRef as L, useRef as re, createElement as W, useState as k, useEffect as me, useMemo as ne, useImperativeHandle as vt } from "react";
- import { Button as ce, Tooltip as pt, DropdownLegacy as gt, Menu as It, MenuItem as be, Select as _e } from "@univerjs/design";
- import { IEditorService as xt, BreakLineCommand as bt, RichTextEditor as _t } from "@univerjs/docs-ui";
- var St = Object.defineProperty, yt = Object.getOwnPropertyDescriptor, Tt = (t, e, n, r) => {
- for (var o = r > 1 ? void 0 : r ? yt(e, n) : e, s = t.length - 1, l; s >= 0; s--)
- (l = t[s]) && (o = (r ? l(e, n, o) : l(o)) || o);
- return r && o && St(e, n, o), o;
- }, Se = (t, e) => (n, r) => e(n, r, t);
- let J = class extends Je {
- constructor(e, n) {
- super();
- V(this, "_panelVisible", !1);
- V(this, "_panelVisible$", new xe(!1));
- V(this, "_activeCommentId");
- V(this, "_activeCommentId$", new xe(void 0));
- V(this, "panelVisible$", this._panelVisible$.asObservable());
- V(this, "activeCommentId$", this._activeCommentId$.asObservable());
- this._sidebarService = e, this._univerInstanceService = n, this._init(), this.disposeWithMe(() => {
- this._activeCommentId$.complete(), this._panelVisible$.complete();
- });
- }
- _init() {
- this.disposeWithMe(
- this._sidebarService.sidebarOptions$.subscribe((e) => {
- e.visible || this.setPanelVisible(!1);
- })
- ), this.disposeWithMe(
- this._univerInstanceService.getCurrentTypeOfUnit$(he.UNIVER_SHEET).pipe(ht((e) => !e)).subscribe(() => {
- this._sidebarService.close();
- })
- );
- }
- get panelVisible() {
- return this._panelVisible;
- }
- get activeCommentId() {
- return this._activeCommentId;
- }
- setPanelVisible(e) {
- this._panelVisible = e, this._panelVisible$.next(e);
- }
- setActiveComment(e) {
- this._activeCommentId = e, this._activeCommentId$.next(e);
- }
- };
- J = Tt([
- Se(0, Ue($e)),
- Se(1, Ke)
- ], J);
- const jt = "thread-comment-panel", Nt = "UNIVER_THREAD_COMMENT_UI_PLUGIN", Et = {
- id: "thread-comment-ui.operation.toggle-panel",
- type: Pe.OPERATION,
- handler(t) {
- const e = t.get($e), n = t.get(J);
- return n.panelVisible ? (e.close(), n.setPanelVisible(!1)) : (e.open({
- header: { title: "threadCommentUI.panel.title" },
- children: { label: jt },
- width: 330
- }), n.setPanelVisible(!0)), !0;
- }
- }, F = {
- id: "thread-comment-ui.operation.set-active-comment",
- type: Pe.OPERATION,
- handler(t, e) {
- return t.get(J).setActiveComment(e), !0;
- }
- }, Ut = "thread-comment-ui.config", ye = {};
- var De = Object.defineProperty, Pt = Object.getOwnPropertyDescriptor, Ot = (t, e, n) => e in t ? De(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n, Rt = (t, e, n, r) => {
- for (var o = r > 1 ? void 0 : r ? Pt(e, n) : e, s = t.length - 1, l; s >= 0; s--)
- (l = t[s]) && (o = (r ? l(e, n, o) : l(o)) || o);
- return r && o && De(e, n, o), o;
- }, fe = (t, e) => (n, r) => e(n, r, t), He = (t, e, n) => Ot(t, typeof e != "symbol" ? e + "" : e, n);
- let ue = class extends Qe {
- constructor(t = ye, e, n, r) {
- super(), this._config = t, this._injector = e, this._commandService = n, this._configService = r;
- const { menu: o, ...s } = Xe(
- {},
- ye,
- this._config
- );
- o && this._configService.setConfig("menu", o, { merge: !0 }), this._configService.setConfig(Ut, s);
- }
- onStarting() {
- var t;
- et([
- [J]
- ], (t = this._config) == null ? void 0 : t.overrides).forEach((e) => {
- this._injector.add(e);
- }), [Et, F].forEach((e) => {
- this._commandService.registerCommand(e);
- });
- }
- };
- He(ue, "pluginName", Nt);
- He(ue, "type", he.UNIVER_UNKNOWN);
- ue = Rt([
- Ge(st),
- fe(1, Ue(Ye)),
- fe(2, oe),
- fe(3, tt)
- ], ue);
- var ve = { exports: {} }, ee = {};
- /**
- * @license React
- * react-jsx-runtime.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- var Te;
- function $t() {
- if (Te) return ee;
- Te = 1;
- var t = ft, e = Symbol.for("react.element"), n = Symbol.for("react.fragment"), r = Object.prototype.hasOwnProperty, o = t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, s = { key: !0, ref: !0, __self: !0, __source: !0 };
- function l(h, c, x) {
- var C, T = {}, b = null, _ = null;
- x !== void 0 && (b = "" + x), c.key !== void 0 && (b = "" + c.key), c.ref !== void 0 && (_ = c.ref);
- for (C in c) r.call(c, C) && !s.hasOwnProperty(C) && (T[C] = c[C]);
- if (h && h.defaultProps) for (C in c = h.defaultProps, c) T[C] === void 0 && (T[C] = c[C]);
- return { $$typeof: e, type: h, key: b, ref: _, props: T, _owner: o.current };
- }
- return ee.Fragment = n, ee.jsx = l, ee.jsxs = l, ee;
- }
- var je;
- function Dt() {
- return je || (je = 1, ve.exports = $t()), ve.exports;
- }
- var i = Dt(), $ = function() {
- return $ = Object.assign || function(t) {
- for (var e, n = 1, r = arguments.length; n < r; n++) {
- e = arguments[n];
- for (var o in e) Object.prototype.hasOwnProperty.call(e, o) && (t[o] = e[o]);
- }
- return t;
- }, $.apply(this, arguments);
- }, Ht = function(t, e) {
- var n = {};
- for (var r in t) Object.prototype.hasOwnProperty.call(t, r) && e.indexOf(r) < 0 && (n[r] = t[r]);
- if (t != null && typeof Object.getOwnPropertySymbols == "function")
- for (var o = 0, r = Object.getOwnPropertySymbols(t); o < r.length; o++)
- e.indexOf(r[o]) < 0 && Object.prototype.propertyIsEnumerable.call(t, r[o]) && (n[r[o]] = t[r[o]]);
- return n;
- }, z = L(function(t, e) {
- var n = t.icon, r = t.id, o = t.className, s = t.extend, l = Ht(t, ["icon", "id", "className", "extend"]), h = "univerjs-icon univerjs-icon-".concat(r, " ").concat(o || "").trim(), c = re("_".concat(kt()));
- return Me(n, "".concat(r), { defIds: n.defIds, idSuffix: c.current }, $({ ref: e, className: h }, l), s);
- });
- function Me(t, e, n, r, o) {
- return W(t.tag, $($({ key: e }, Mt(t, n, o)), r), (wt(t, n).children || []).map(function(s, l) {
- return Me(s, "".concat(e, "-").concat(t.tag, "-").concat(l), n, void 0, o);
- }));
- }
- function Mt(t, e, n) {
- var r = $({}, t.attrs);
- n != null && n.colorChannel1 && r.fill === "colorChannel1" && (r.fill = n.colorChannel1);
- var o = e.defIds;
- return !o || o.length === 0 || (t.tag === "use" && r["xlink:href"] && (r["xlink:href"] = r["xlink:href"] + e.idSuffix), Object.entries(r).forEach(function(s) {
- var l = s[0], h = s[1];
- typeof h == "string" && (r[l] = h.replace(/url\(#(.*)\)/, "url(#$1".concat(e.idSuffix, ")")));
- })), r;
- }
- function wt(t, e) {
- var n, r = e.defIds;
- return !r || r.length === 0 ? t : t.tag === "defs" && (!((n = t.children) === null || n === void 0) && n.length) ? $($({}, t), { children: t.children.map(function(o) {
- return typeof o.attrs.id == "string" && r && r.indexOf(o.attrs.id) > -1 ? $($({}, o), { attrs: $($({}, o.attrs), { id: o.attrs.id + e.idSuffix }) }) : o;
- }) }) : t;
- }
- function kt() {
- return Math.random().toString(36).substring(2, 8);
- }
- z.displayName = "UniverIcon";
- var Lt = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M5.3313 1.4667C5.3313 1.13533 5.59993.866699 5.9313.866699H10.069C10.4004.866699 10.669 1.13533 10.669 1.4667 10.669 1.79807 10.4004 2.0667 10.069 2.0667H5.9313C5.59993 2.0667 5.3313 1.79807 5.3313 1.4667zM1.09985 3.64443C1.09985 3.31306 1.36848 3.04443 1.69985 3.04443H14.2999C14.6312 3.04443 14.8999 3.31306 14.8999 3.64443 14.8999 3.9758 14.6312 4.24443 14.2999 4.24443H1.69985C1.36848 4.24443 1.09985 3.9758 1.09985 3.64443zM6.12398 8.30171C6.35829 8.0674 6.73819 8.0674 6.97251 8.30171L8.00007 9.32928 9.02764 8.30171C9.26195 8.0674 9.64185 8.0674 9.87617 8.30171 10.1105 8.53603 10.1105 8.91593 9.87617 9.15024L8.8486 10.1778 9.87617 11.2054C10.1105 11.4397 10.1105 11.8196 9.87617 12.0539 9.64185 12.2882 9.26195 12.2882 9.02764 12.0539L8.00007 11.0263 6.97251 12.0539C6.73819 12.2882 6.35829 12.2882 6.12398 12.0539 5.88966 11.8196 5.88966 11.4397 6.12398 11.2054L7.15154 10.1778 6.12398 9.15024C5.88966 8.91593 5.88966 8.53603 6.12398 8.30171z" } }, { tag: "path", attrs: { fill: "currentColor", d: "M4.75332 5.22217C3.86966 5.22217 3.15332 5.93851 3.15332 6.82217V12.5331C3.15332 13.9691 4.31738 15.1332 5.75332 15.1332H10.2465C11.6825 15.1332 12.8465 13.9691 12.8465 12.5331V6.82217C12.8465 5.93851 12.1302 5.22217 11.2465 5.22217H4.75332ZM4.35332 6.82217C4.35332 6.60125 4.53241 6.42217 4.75332 6.42217H11.2465C11.4674 6.42217 11.6465 6.60125 11.6465 6.82217V12.5331C11.6465 13.3063 11.0197 13.9332 10.2465 13.9332H5.75332C4.98012 13.9332 4.35332 13.3063 4.35332 12.5331V6.82217Z", fillRule: "evenodd", clipRule: "evenodd" } }] }, we = L(function(t, e) {
- return W(z, Object.assign({}, t, {
- id: "delete-single",
- ref: e,
- icon: Lt
- }));
- });
- we.displayName = "DeleteSingle";
- var At = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M8.6 1.99991C8.60001 1.66854 8.33138 1.39991 8.00001 1.3999C7.66864 1.3999 7.40001 1.66853 7.4 1.9999L7.39996 7.3999H1.9999C1.66853 7.3999 1.3999 7.66853 1.3999 7.9999C1.3999 8.33127 1.66853 8.5999 1.9999 8.5999H7.39995L7.3999 13.9999C7.3999 14.3313 7.66853 14.5999 7.9999 14.5999C8.33127 14.5999 8.5999 14.3313 8.5999 13.9999L8.59995 8.5999H13.9999C14.3313 8.5999 14.5999 8.33127 14.5999 7.9999C14.5999 7.66853 14.3313 7.3999 13.9999 7.3999H8.59996L8.6 1.99991Z" } }] }, ke = L(function(t, e) {
- return W(z, Object.assign({}, t, {
- id: "increase-single",
- ref: e,
- icon: At
- }));
- });
- ke.displayName = "IncreaseSingle";
- var Vt = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M3 9C3.55228 9 4 8.55228 4 8 4 7.44772 3.55228 7 3 7 2.44772 7 2 7.44772 2 8 2 8.55228 2.44772 9 3 9zM8 9C8.55228 9 9 8.55228 9 8 9 7.44772 8.55228 7 8 7 7.44772 7 7 7.44772 7 8 7 8.55228 7.44772 9 8 9zM13 9C13.5523 9 14 8.55228 14 8 14 7.44772 13.5523 7 13 7 12.4477 7 12 7.44772 12 8 12 8.55228 12.4477 9 13 9z" } }] }, Le = L(function(t, e) {
- return W(z, Object.assign({}, t, {
- id: "more-horizontal-single",
- ref: e,
- icon: Vt
- }));
- });
- Le.displayName = "MoreHorizontalSingle";
- var Bt = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { stroke: "currentColor", d: "M7.48389 10.3267V12.1905C7.48389 12.7428 7.9316 13.1905 8.48389 13.1905H11.2216L12.2955 14.2644L13.3695 13.1905H14.1593C14.7116 13.1905 15.1593 12.7428 15.1593 12.1905V8.46289C15.1593 7.91061 14.7116 7.46289 14.1593 7.46289H12.2955", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.2 } }, { tag: "path", attrs: { stroke: "currentColor", d: "M0.840332 3.73535C0.840332 2.63078 1.73576 1.73535 2.84033 1.73535H10.2955C11.4001 1.73535 12.2955 2.63078 12.2955 3.73535V8.32676C12.2955 9.43132 11.4001 10.3268 10.2955 10.3268H5.6014L4.1695 11.7587L3.05978 10.3268H2.84033C1.73576 10.3268 0.840332 9.43133 0.840332 8.32676V3.73535Z", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.2 } }, { tag: "path", attrs: { stroke: "currentColor", d: "M6.41016 6.1311H6.76813M8.91626 6.1311H9.27424M3.90454 6.1311H4.26252", strokeLinecap: "round", strokeWidth: 1.2 } }] }, Ae = L(function(t, e) {
- return W(z, Object.assign({}, t, {
- id: "reply-to-comment-single",
- ref: e,
- icon: Bt
- }));
- });
- Ae.displayName = "ReplyToCommentSingle";
- var Ft = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 17 17", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M8.6106 15.4036C12.4766 15.4036 15.6106 12.2696 15.6106 8.40356C15.6106 4.53757 12.4766 1.40356 8.6106 1.40356C4.7446 1.40356 1.6106 4.53757 1.6106 8.40356C1.6106 12.2696 4.7446 15.4036 8.6106 15.4036ZM12.3351 6.82773C12.5694 6.59342 12.5694 6.21352 12.3351 5.9792C12.1007 5.74489 11.7208 5.74489 11.4865 5.9792L7.91079 9.55494L6.33506 7.9792C6.10074 7.74489 5.72084 7.74489 5.48653 7.9792C5.25221 8.21352 5.25221 8.59342 5.48653 8.82773L7.48653 10.8277C7.72084 11.062 8.10074 11.062 8.33506 10.8277L12.3351 6.82773Z", fillRule: "evenodd", clipRule: "evenodd" } }] }, Ve = L(function(t, e) {
- return W(z, Object.assign({}, t, {
- id: "resolved-single",
- ref: e,
- icon: Ft
- }));
- });
- Ve.displayName = "ResolvedSingle";
- var Wt = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 17 17", width: "1em", height: "1em" }, children: [{ tag: "circle", attrs: { cx: 8.73, cy: 8.4, r: 6.4, stroke: "currentColor", strokeWidth: 1.2 } }, { tag: "path", attrs: { stroke: "currentColor", d: "M6.02637 8.40356L8.02637 10.4036L12.0264 6.40356", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.2 } }] }, Be = L(function(t, e) {
- return W(z, Object.assign({}, t, {
- id: "solve-single",
- ref: e,
- icon: Wt
- }));
- });
- Be.displayName = "SolveSingle";
- function Fe(t) {
- var e, n, r = "";
- if (typeof t == "string" || typeof t == "number") r += t;
- else if (typeof t == "object") if (Array.isArray(t)) {
- var o = t.length;
- for (e = 0; e < o; e++) t[e] && (n = Fe(t[e])) && (r && (r += " "), r += n);
- } else for (n in t) t[n] && (r && (r += " "), r += n);
- return r;
- }
- function zt() {
- for (var t, e, n = 0, r = "", o = arguments.length; n < o; n++) (t = arguments[n]) && (e = Fe(t)) && (r && (r += " "), r += e);
- return r;
- }
- const qt = "univer-thread-comment-editor-buttons", Zt = "univer-thread-comment-editor-suggestion", Jt = "univer-thread-comment-editor-suggestionActive", Kt = "univer-thread-comment-editor-suggestion-icon", Ne = {
- threadCommentEditorButtons: qt,
- threadCommentEditorSuggestion: Zt,
- threadCommentEditorSuggestionActive: Jt,
- threadCommentEditorSuggestionIcon: Kt
- };
- function Ee(t) {
- return {
- id: "d",
- body: t,
- documentStyle: {}
- };
- }
- const We = L((t, e) => {
- var M;
- const { comment: n, onSave: r, id: o, onCancel: s, autoFocus: l, unitId: h, type: c } = t, x = U(oe), C = U(pe), [T, b] = k(!1), _ = U(xt), u = re(null), g = c === he.UNIVER_SHEET ? nt : h, [O, j] = k(() => {
- var m, f, I;
- return Ce.transform.getPlainText((I = (f = (m = u.current) == null ? void 0 : m.getDocumentData().body) == null ? void 0 : f.dataStream) != null ? I : "");
- });
- me(() => {
- var f, I, d, v;
- j(Ce.transform.getPlainText((d = (I = (f = u.current) == null ? void 0 : f.getDocumentData().body) == null ? void 0 : I.dataStream) != null ? d : ""));
- const m = (v = u.current) == null ? void 0 : v.selectionChange$.subscribe(() => {
- var q, N, y;
- j(Ce.transform.getPlainText((y = (N = (q = u.current) == null ? void 0 : q.getDocumentData().body) == null ? void 0 : N.dataStream) != null ? y : ""));
- });
- return () => m == null ? void 0 : m.unsubscribe();
- }, [(M = u.current) == null ? void 0 : M.selectionChange$]);
- const D = ne(() => ({
- keyCodes: [{ keyCode: Ie.ENTER }],
- handler: (m) => {
- m === Ie.ENTER && x.executeCommand(
- bt.id
- );
- }
- }), [x]);
- vt(e, () => ({
- reply(m) {
- var f, I;
- (f = u.current) == null || f.focus(), (I = u.current) == null || I.setDocumentData(Ee(m));
- }
- }));
- const S = () => {
- if (u.current) {
- const m = rt.deepClone(u.current.getDocumentData().body);
- b(!1), r == null || r({
- ...n,
- text: m
- }), u.current.replaceText(""), setTimeout(() => {
- var f, I;
- (f = u.current) == null || f.setSelectionRanges([]), (I = u.current) == null || I.blur();
- }, 10);
- }
- };
- return /* @__PURE__ */ i.jsxs("div", { className: Ne.threadCommentEditor, onClick: (m) => m.preventDefault(), children: [
- /* @__PURE__ */ i.jsx(
- _t,
- {
- ref: u,
- autoFocus: l,
- style: { width: "100%" },
- keyboardEventConfig: D,
- placeholder: C.t("threadCommentUI.editor.placeholder"),
- initialValue: (n == null ? void 0 : n.text) && Ee(n.text),
- onFocusChange: (m) => m && b(m),
- isSingle: !1,
- maxHeight: 64,
- onClickOutside: () => {
- setTimeout(() => {
- _.focus(g);
- }, 30);
- }
- }
- ),
- T ? /* @__PURE__ */ i.jsxs("div", { className: Ne.threadCommentEditorButtons, children: [
- /* @__PURE__ */ i.jsx(
- ce,
- {
- style: { marginRight: 12 },
- onClick: () => {
- var m;
- s == null || s(), b(!1), (m = u.current) == null || m.replaceText("", !0), x.executeCommand(F.id);
- },
- children: C.t("threadCommentUI.editor.cancel")
- }
- ),
- /* @__PURE__ */ i.jsx(
- ce,
- {
- type: "primary",
- disabled: !O,
- onClick: S,
- children: C.t(o ? "threadCommentUI.editor.save" : "threadCommentUI.editor.reply")
- }
- )
- ] }) : null
- ] });
- }), Gt = (t) => {
- const { dataStream: e, customRanges: n } = t, r = e.endsWith(`\r
- `) ? e.length - 2 : e.length, o = [];
- let s = 0;
- return n == null || n.forEach((l) => {
- s < l.startIndex && o.push({
- type: "text",
- content: e.slice(s, l.startIndex)
- }), o.push({
- type: "mention",
- content: {
- label: e.slice(l.startIndex, l.endIndex + 1),
- id: l.rangeId
- }
- }), s = l.endIndex + 1;
- }), o.push({
- type: "text",
- content: e.slice(s, r)
- }), o;
- }, Yt = (t) => {
- const { paragraphs: e = [] } = t;
- let n = 0;
- return e.map((r) => {
- const o = it(t, n, r.startIndex);
- return n = r.startIndex + 1, Gt(o);
- });
- }, Qt = (t) => {
- let e = "";
- const n = [];
- return t.forEach((r) => {
- switch (r.type) {
- case "text":
- e += r.content;
- break;
- case "mention": {
- const o = e.length;
- e += r.content.label;
- const s = e.length - 1;
- n.push({
- rangeId: r.content.id,
- rangeType: ot.MENTION,
- startIndex: o,
- endIndex: s,
- properties: {}
- });
- break;
- }
- }
- }), e += `
- \r`, {
- textRuns: [],
- paragraphs: [
- {
- startIndex: e.length - 2,
- paragraphStyle: {}
- }
- ],
- sectionBreaks: [
- {
- startIndex: e.length - 1
- }
- ],
- dataStream: e,
- customRanges: n
- };
- }, Xt = "univer-thread-comment", en = "univer-thread-comment-active", tn = "univer-thread-comment-content", nn = "univer-thread-comment-highlight", rn = "univer-thread-comment-icon-container", on = "univer-thread-comment-icon", an = "univer-thread-comment-title", sn = "univer-thread-comment-title-position", dn = "univer-thread-comment-title-highlight", ln = "univer-thread-comment-title-position-text", mn = "univer-thread-comment-username", cn = "univer-thread-comment-item", un = "univer-thread-comment-item-head", hn = "univer-thread-comment-item-title", Cn = "univer-thread-comment-item-title-position", fn = "univer-thread-comment-item-title-highlight", vn = "univer-thread-comment-item-time", pn = "univer-thread-comment-item-content", gn = "univer-thread-comment-item-at", p = {
- threadComment: Xt,
- threadCommentActive: en,
- threadCommentContent: tn,
- threadCommentHighlight: nn,
- threadCommentIconContainer: rn,
- threadCommentIcon: on,
- threadCommentTitle: an,
- threadCommentTitlePosition: sn,
- threadCommentTitleHighlight: dn,
- threadCommentTitlePositionText: ln,
- threadCommentUsername: mn,
- threadCommentItem: cn,
- threadCommentItemHead: un,
- threadCommentItemTitle: hn,
- threadCommentItemTitlePosition: Cn,
- threadCommentItemTitleHighlight: fn,
- threadCommentItemTime: vn,
- threadCommentItemContent: pn,
- threadCommentItemAt: gn
- }, ze = "__mock__", In = (t) => {
- const { item: e, unitId: n, subUnitId: r, editing: o, onEditingChange: s, onReply: l, resolved: h, isRoot: c, onClose: x, onDeleteComment: C, type: T } = t, b = U(oe), _ = U(pe), u = U(ge), g = u.getUser(e.personId), O = B(u.currentUser$), j = (O == null ? void 0 : O.userID) === e.personId, D = e.id === ze, [S, M] = k(!1), m = () => {
- (C == null ? void 0 : C(e)) !== !1 && (b.executeCommand(
- c ? Re.id : ut.id,
- {
- unitId: n,
- subUnitId: r,
- commentId: e.id
- }
- ), c && (x == null || x()));
- };
- return /* @__PURE__ */ i.jsxs("div", { className: p.threadCommentItem, onMouseLeave: () => M(!1), onMouseEnter: () => M(!0), children: [
- /* @__PURE__ */ i.jsx("img", { className: p.threadCommentItemHead, src: g == null ? void 0 : g.avatar }),
- /* @__PURE__ */ i.jsxs("div", { className: p.threadCommentItemTitle, children: [
- /* @__PURE__ */ i.jsx("div", { className: p.threadCommentUsername, children: (g == null ? void 0 : g.name) || " " }),
- /* @__PURE__ */ i.jsxs("div", { children: [
- D || h ? null : S ? /* @__PURE__ */ i.jsx("div", { className: p.threadCommentIcon, onClick: () => l(g), children: /* @__PURE__ */ i.jsx(Ae, {}) }) : null,
- j && !D && !h ? /* @__PURE__ */ i.jsx(
- gt,
- {
- overlay: /* @__PURE__ */ i.jsxs(It, { children: [
- /* @__PURE__ */ i.jsx(be, { onClick: () => s == null ? void 0 : s(!0), children: _.t("threadCommentUI.item.edit") }, "edit"),
- /* @__PURE__ */ i.jsx(be, { onClick: m, children: _.t("threadCommentUI.item.delete") }, "delete")
- ] }),
- children: /* @__PURE__ */ i.jsx("div", { className: p.threadCommentIcon, children: /* @__PURE__ */ i.jsx(Le, {}) })
- }
- ) : null
- ] })
- ] }),
- /* @__PURE__ */ i.jsx("div", { className: p.threadCommentItemTime, children: e.dT }),
- o ? /* @__PURE__ */ i.jsx(
- We,
- {
- type: T,
- id: e.id,
- comment: e,
- onCancel: () => s == null ? void 0 : s(!1),
- autoFocus: !0,
- unitId: n,
- subUnitId: r,
- onSave: ({ text: f, attachments: I }) => {
- s == null || s(!1), b.executeCommand(
- mt.id,
- {
- unitId: n,
- subUnitId: r,
- payload: {
- commentId: e.id,
- text: f,
- attachments: I
- }
- }
- );
- }
- }
- ) : /* @__PURE__ */ i.jsx("div", { className: p.threadCommentItemContent, children: Yt(e.text).map((f, I) => /* @__PURE__ */ i.jsx("div", { children: f.map((d, v) => {
- switch (d.type) {
- case "mention":
- return /* @__PURE__ */ i.jsxs("a", { className: p.threadCommentItemAt, children: [
- d.content.label,
- " "
- ] }, v);
- default:
- return d.content;
- }
- }) }, I)) })
- ] });
- }, xn = (t) => {
- var Q, X, se;
- const {
- id: e,
- unitId: n,
- subUnitId: r,
- refStr: o,
- showEdit: s = !0,
- onClick: l,
- showHighlight: h,
- onClose: c,
- getSubUnitName: x,
- prefix: C,
- autoFocus: T,
- onMouseEnter: b,
- onMouseLeave: _,
- onAddComment: u,
- onDeleteComment: g,
- onResolve: O,
- type: j
- } = t, D = U(Oe), [S, M] = k(!1), [m, f] = k(""), I = ne(() => D.commentUpdate$.pipe(Ct(16)), [D]);
- B(I);
- const d = e ? D.getCommentWithChildren(n, r, e) : null, v = U(oe), q = U(ge), N = d == null ? void 0 : d.root.resolved, y = B(q.currentUser$), Z = re(null), ie = [
- ...d ? [d.root] : (
- // mock empty comment
- [{
- id: ze,
- text: {
- dataStream: `
- \r`
- },
- personId: (Q = y == null ? void 0 : y.userID) != null ? Q : "",
- ref: o != null ? o : "",
- dT: "",
- unitId: n,
- subUnitId: r,
- threadId: ""
- }]
- ),
- ...(X = d == null ? void 0 : d.children) != null ? X : []
- ], R = re(null), K = (E) => {
- E.stopPropagation(), N ? v.executeCommand(F.id, {
- unitId: n,
- subUnitId: r,
- commentId: e
- }) : v.executeCommand(F.id), v.executeCommand(ct.id, {
- unitId: n,
- subUnitId: r,
- commentId: e,
- resolved: !N
- }), O == null || O(!N);
- }, w = (E) => {
- E.stopPropagation(), v.executeCommand(F.id), !(d != null && d.root && (g == null ? void 0 : g(d.root)) === !1) && (v.executeCommand(
- Re.id,
- {
- unitId: n,
- subUnitId: r,
- commentId: e
- }
- ), c == null || c());
- };
- me(() => _ == null ? void 0 : _(), []);
- const G = x((se = d == null ? void 0 : d.root.subUnitId) != null ? se : r), Y = s && !m && !N, ae = `${o || (d == null ? void 0 : d.root.ref) || ""}${G ? " · " : ""}${G}`;
- return /* @__PURE__ */ i.jsxs(
- "div",
- {
- className: zt(p.threadComment, {
- [p.threadCommentActive]: !N && (h || S || C === "cell")
- }),
- onClick: l,
- id: `${C}-${n}-${r}-${e}`,
- onMouseEnter: () => {
- b == null || b(), M(!0);
- },
- onMouseLeave: () => {
- _ == null || _(), M(!1);
- },
- children: [
- !N && h ? /* @__PURE__ */ i.jsx("div", { className: p.threadCommentHighlight }) : null,
- /* @__PURE__ */ i.jsxs("div", { className: p.threadCommentTitle, children: [
- /* @__PURE__ */ i.jsxs("div", { className: p.threadCommentTitlePosition, children: [
- /* @__PURE__ */ i.jsx("div", { className: p.threadCommentTitleHighlight }),
- /* @__PURE__ */ i.jsx(pt, { showIfEllipsis: !0, title: ae, children: /* @__PURE__ */ i.jsx("div", { className: p.threadCommentTitlePositionText, children: ae }) })
- ] }),
- d ? /* @__PURE__ */ i.jsxs("div", { className: p.threadCommentIconContainer, children: [
- /* @__PURE__ */ i.jsx(
- "div",
- {
- onClick: K,
- className: p.threadCommentIcon,
- style: { color: N ? "rgb(var(--green-500))" : "" },
- children: N ? /* @__PURE__ */ i.jsx(Ve, {}) : /* @__PURE__ */ i.jsx(Be, {})
- }
- ),
- (y == null ? void 0 : y.userID) === d.root.personId ? /* @__PURE__ */ i.jsx("div", { className: p.threadCommentIcon, onClick: w, children: /* @__PURE__ */ i.jsx(we, {}) }) : null
- ] }) : null
- ] }),
- /* @__PURE__ */ i.jsx("div", { className: p.threadCommentContent, ref: R, children: ie.map(
- (E) => /* @__PURE__ */ i.jsx(
- In,
- {
- onClose: c,
- unitId: n,
- subUnitId: r,
- item: E,
- isRoot: E.id === (d == null ? void 0 : d.root.id),
- editing: m === E.id,
- resolved: d == null ? void 0 : d.root.resolved,
- type: j,
- onEditingChange: (a) => {
- f(a ? E.id : "");
- },
- onReply: (a) => {
- a && requestAnimationFrame(() => {
- var H;
- (H = Z.current) == null || H.reply(Qt([{
- type: "mention",
- content: {
- id: a.userID,
- label: a.name
- }
- }]));
- });
- },
- onAddComment: u,
- onDeleteComment: g
- },
- E.id
- )
- ) }),
- Y ? /* @__PURE__ */ i.jsx("div", { children: /* @__PURE__ */ i.jsx(
- We,
- {
- ref: Z,
- type: j,
- unitId: n,
- subUnitId: r,
- onSave: async ({ text: E, attachments: a }) => {
- const H = {
- text: E,
- attachments: a,
- dT: dt(),
- id: at(),
- ref: o,
- personId: y == null ? void 0 : y.userID,
- parentId: d == null ? void 0 : d.root.id,
- unitId: n,
- subUnitId: r,
- threadId: d == null ? void 0 : d.root.threadId
- };
- (u == null ? void 0 : u(H)) !== !1 && (await v.executeCommand(
- lt.id,
- {
- unitId: n,
- subUnitId: r,
- comment: H
- }
- ), R.current && (R.current.scrollTop = R.current.scrollHeight));
- },
- autoFocus: T || !d,
- onCancel: () => {
- d || c == null || c();
- }
- },
- `${T}`
- ) }) : null
- ]
- }
- );
- }, bn = "univer-thread-comment-panel", _n = "univer-thread-comment", Sn = "univer-thread-comment-panel-forms", yn = "univer-select", Tn = "univer-thread-comment-panel-empty", jn = "univer-thread-comment-panel-add", Nn = "univer-thread-comment-panel-solved", te = {
- threadCommentPanel: bn,
- threadComment: _n,
- threadCommentPanelForms: Sn,
- select: yn,
- threadCommentPanelEmpty: Tn,
- threadCommentPanelAdd: jn,
- threadCommentPanelSolved: Nn
- }, Mn = (t) => {
- const {
- unitId: e,
- subUnitId$: n,
- type: r,
- onAdd: o,
- getSubUnitName: s,
- onResolve: l,
- sortComments: h,
- onItemLeave: c,
- onItemEnter: x,
- disableAdd: C,
- tempComment: T,
- onAddComment: b,
- onDeleteComment: _,
- showComments: u
- } = t, [g, O] = k("all"), [j, D] = k("all"), S = U(pe), M = U(ge), m = U(Oe), [f, I] = k(() => m.getUnit(e)), d = U(J), v = B(d.activeCommentId$), q = B(m.commentUpdate$), N = U(oe), y = B(n), Z = re(!0), ie = "panel", R = B(M.currentUser$), K = ne(() => {
- var le;
- const a = g === "all" ? f : (le = f.filter((P) => P.subUnitId === y)) != null ? le : [], H = h != null ? h : (P) => P, de = a.map((P) => {
- var A;
- return { ...P.root, children: (A = P.children) != null ? A : [], users: P.relativeUsers };
- });
- if (u) {
- const P = /* @__PURE__ */ new Map();
- return de.forEach((A) => {
- P.set(A.id, A);
- }), [...u, ""].map((A) => P.get(A)).filter(Boolean);
- } else
- return H(de);
- }, [u, g, f, h, y]), w = ne(() => [
- ...K.filter((a) => !a.resolved),
- ...K.filter((a) => a.resolved)
- ], [K]), G = ne(() => j === "resolved" ? w.filter((a) => a.resolved) : j === "unsolved" ? w.filter((a) => !a.resolved) : j === "concern_me" && R != null && R.userID ? w.filter((a) => a == null ? void 0 : a.users.has(R.userID)) : w, [w, R == null ? void 0 : R.userID, j]), Y = T ? [T, ...G] : G, ae = Y.filter((a) => !a.resolved), Q = Y.filter((a) => a.resolved), X = j !== "all" || g !== "all", se = () => {
- D("all"), O("all");
- };
- me(() => {
- e && I(
- m.getUnit(e)
- );
- }, [e, m, q]), me(() => {
- var P;
- if (!v)
- return;
- if (!Z.current) {
- Z.current = !0;
- return;
- }
- const { unitId: a, subUnitId: H, commentId: de } = v, le = `${ie}-${a}-${H}-${de}`;
- (P = document.getElementById(le)) == null || P.scrollIntoView({ block: "center" });
- }, [v]);
- const E = (a) => /* @__PURE__ */ i.jsx(
- xn,
- {
- prefix: ie,
- getSubUnitName: s,
- id: a.id,
- unitId: a.unitId,
- subUnitId: a.subUnitId,
- refStr: a.ref,
- type: r,
- showEdit: (v == null ? void 0 : v.commentId) === a.id,
- showHighlight: (v == null ? void 0 : v.commentId) === a.id,
- onClick: () => {
- Z.current = !1, a.resolved ? N.executeCommand(F.id) : N.executeCommand(
- F.id,
- {
- unitId: a.unitId,
- subUnitId: a.subUnitId,
- commentId: a.id,
- temp: !1
- }
- );
- },
- onMouseEnter: () => x == null ? void 0 : x(a),
- onMouseLeave: () => c == null ? void 0 : c(a),
- onAddComment: b,
- onDeleteComment: _,
- onResolve: (H) => l == null ? void 0 : l(a.id, H)
- },
- a.id
- );
- return /* @__PURE__ */ i.jsxs("div", { className: te.threadCommentPanel, children: [
- /* @__PURE__ */ i.jsxs("div", { className: te.threadCommentPanelForms, children: [
- r === he.UNIVER_SHEET ? /* @__PURE__ */ i.jsx(
- _e,
- {
- borderless: !0,
- value: g,
- onChange: (a) => O(a),
- options: [
- {
- value: "current",
- label: S.t("threadCommentUI.filter.sheet.current")
- },
- {
- value: "all",
- label: S.t("threadCommentUI.filter.sheet.all")
- }
- ]
- }
- ) : null,
- /* @__PURE__ */ i.jsx(
- _e,
- {
- borderless: !0,
- value: j,
- onChange: (a) => D(a),
- options: [
- {
- value: "all",
- label: S.t("threadCommentUI.filter.status.all")
- },
- {
- value: "resolved",
- label: S.t("threadCommentUI.filter.status.resolved")
- },
- {
- value: "unsolved",
- label: S.t("threadCommentUI.filter.status.unsolved")
- },
- {
- value: "concern_me",
- label: S.t("threadCommentUI.filter.status.concernMe")
- }
- ]
- }
- )
- ] }),
- ae.map(E),
- Q.length ? /* @__PURE__ */ i.jsx("div", { className: te.threadCommentPanelSolved, children: "已解决" }) : null,
- Q.map(E),
- Y.length ? null : /* @__PURE__ */ i.jsxs("div", { className: te.threadCommentPanelEmpty, children: [
- X ? S.t("threadCommentUI.panel.filterEmpty") : S.t("threadCommentUI.panel.empty"),
- X ? /* @__PURE__ */ i.jsx(
- ce,
- {
- onClick: se,
- type: "link",
- children: S.t("threadCommentUI.panel.reset")
- }
- ) : /* @__PURE__ */ i.jsxs(
- ce,
- {
- id: "thread-comment-add",
- className: te.threadCommentPanelAdd,
- type: "primary",
- onClick: o,
- disabled: C,
- children: [
- /* @__PURE__ */ i.jsx(ke, {}),
- S.t("threadCommentUI.panel.addComment")
- ]
- }
- )
- ] })
- ] });
- };
- export {
- F as SetActiveCommentOperation,
- jt as THREAD_COMMENT_PANEL,
- Mn as ThreadCommentPanel,
- J as ThreadCommentPanelService,
- xn as ThreadCommentTree,
- Et as ToggleSheetCommentPanelOperation,
- ue as UniverThreadCommentUIPlugin
- };
|