index.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609
  1. var ie = Object.defineProperty;
  2. var re = (i, e, t) => e in i ? ie(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
  3. var u = (i, e, t) => re(i, typeof e != "symbol" ? e + "" : e, t);
  4. import { CommandType as N, RxDisposable as V, UniverInstanceType as b, ICommandService as B, IUniverInstanceService as p, Inject as w, LocaleService as oe, isInternalEditorID as ce, JSONX as O, Disposable as Q, BuildTextUtils as C, Injector as ae, Plugin as le, merge as ue, IConfigService as de, createInterceptorKey as Z, DOCS_NORMAL_EDITOR_UNIT_ID_KEY as ge, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY as _e, DisposableCollection as $, toDisposable as fe, remove as he, composeInterceptors as Se } from "@univerjs/core";
  5. import { NORMAL_TEXT_SELECTION_PLUGIN_STYLE as pe, DocumentSkeleton as Ie, DocumentViewModel as me, IRenderManagerService as Re } from "@univerjs/engine-render";
  6. import { Subject as ve, BehaviorSubject as x, takeUntil as ee } from "rxjs";
  7. const j = {
  8. id: "doc.operation.set-selections",
  9. type: N.OPERATION,
  10. handler: () => !0
  11. };
  12. var Oe = Object.defineProperty, xe = Object.getOwnPropertyDescriptor, Ce = (i, e, t, n) => {
  13. for (var s = n > 1 ? void 0 : n ? xe(e, t) : e, r = i.length - 1, o; r >= 0; r--)
  14. (o = i[r]) && (s = (n ? o(e, t, s) : o(s)) || s);
  15. return n && s && Oe(e, t, s), s;
  16. }, W = (i, e) => (t, n) => e(t, n, i);
  17. let m = class extends V {
  18. constructor(e, t) {
  19. super();
  20. u(this, "_currentSelection", null);
  21. u(this, "_textSelectionInfo", /* @__PURE__ */ new Map());
  22. u(this, "_textSelection$", new ve());
  23. u(this, "textSelection$", this._textSelection$.asObservable());
  24. u(this, "_refreshSelection$", new x(null));
  25. u(this, "refreshSelection$", this._refreshSelection$.asObservable());
  26. this._commandService = e, this._univerInstanceService = t, this._listenCurrentUnit();
  27. }
  28. _listenCurrentUnit() {
  29. this._univerInstanceService.getCurrentTypeOfUnit$(b.UNIVER_DOC).pipe(ee(this.dispose$)).subscribe((e) => {
  30. if (e == null)
  31. return;
  32. const t = e.getUnitId();
  33. this._setCurrentSelectionNotRefresh({
  34. unitId: t,
  35. subUnitId: t
  36. });
  37. });
  38. }
  39. __getCurrentSelection() {
  40. return this._currentSelection;
  41. }
  42. getSelectionInfo(e = this._currentSelection) {
  43. return this._getTextRanges(e);
  44. }
  45. refreshSelection(e = this._currentSelection) {
  46. e != null && this._refresh(e);
  47. }
  48. // **Only used in test case** because this does not go through the render layer.
  49. __TEST_ONLY_setCurrentSelection(e) {
  50. this._currentSelection = e, this._refresh(e);
  51. }
  52. getTextRanges(e = this._currentSelection) {
  53. var t;
  54. return (t = this._getTextRanges(e)) == null ? void 0 : t.textRanges;
  55. }
  56. getRectRanges(e = this._currentSelection) {
  57. var t;
  58. return (t = this._getTextRanges(e)) == null ? void 0 : t.rectRanges;
  59. }
  60. getDocRanges(e = this._currentSelection) {
  61. var r, o;
  62. const t = (r = this.getTextRanges(e)) != null ? r : [], n = (o = this.getRectRanges(e)) != null ? o : [];
  63. return [...t, ...n].filter((c) => c.startOffset != null && c.endOffset != null).sort((c, a) => c.startOffset > a.startOffset ? 1 : c.startOffset < a.startOffset ? -1 : 0);
  64. }
  65. getActiveTextRange() {
  66. const e = this._getTextRanges(this._currentSelection);
  67. if (e == null)
  68. return;
  69. const { textRanges: t } = e;
  70. return t.find((n) => n.isActive);
  71. }
  72. /**
  73. *
  74. * @deprecated
  75. */
  76. getActiveRectRange() {
  77. const e = this._getTextRanges(this._currentSelection);
  78. if (e == null)
  79. return;
  80. const { rectRanges: t } = e;
  81. return t.find((n) => n.isActive);
  82. }
  83. // **Only used in test case** because this does not go through the render layer.
  84. __TEST_ONLY_add(e, t = !0) {
  85. this._currentSelection != null && this._addByParam({
  86. ...this._currentSelection,
  87. textRanges: e,
  88. rectRanges: [],
  89. segmentId: "",
  90. segmentPage: -1,
  91. isEditing: t,
  92. style: pe
  93. // mock style.
  94. });
  95. }
  96. // Use to replace the current editor selection.
  97. /**
  98. * @deprecated pls use replaceDocRanges.
  99. */
  100. replaceTextRanges(e, t = !0, n) {
  101. return this.replaceDocRanges(
  102. e,
  103. this._currentSelection,
  104. t,
  105. n
  106. );
  107. }
  108. replaceDocRanges(e, t = this._currentSelection, n = !0, s) {
  109. if (t == null)
  110. return;
  111. const { unitId: r, subUnitId: o } = t;
  112. this._refreshSelection$.next({
  113. unitId: r,
  114. subUnitId: o,
  115. docRanges: e,
  116. isEditing: n,
  117. options: s
  118. });
  119. }
  120. // Only use in doc-selection-render.controller.ts
  121. __replaceTextRangesWithNoRefresh(e, t) {
  122. if (this._currentSelection == null)
  123. return;
  124. const n = {
  125. ...e,
  126. ...t
  127. };
  128. this._replaceByParam(n), this._textSelection$.next(n);
  129. const { unitId: s, subUnitId: r, segmentId: o, style: c, textRanges: a, rectRanges: l, isEditing: d } = n, _ = [...a, ...l].filter((g) => g.startOffset != null && g.endOffset != null).sort((g, f) => g.startOffset > f.startOffset ? 1 : g.startOffset < f.startOffset ? -1 : 0);
  130. this._commandService.executeCommand(j.id, {
  131. unitId: s,
  132. subUnitId: r,
  133. segmentId: o,
  134. style: c,
  135. isEditing: d,
  136. ranges: _
  137. });
  138. }
  139. dispose() {
  140. this._textSelection$.complete();
  141. }
  142. _setCurrentSelectionNotRefresh(e) {
  143. this._currentSelection = e;
  144. }
  145. _getTextRanges(e) {
  146. var s;
  147. if (e == null)
  148. return;
  149. const { unitId: t, subUnitId: n = "" } = e;
  150. return (s = this._textSelectionInfo.get(t)) == null ? void 0 : s.get(n);
  151. }
  152. _refresh(e) {
  153. const t = this._getTextRanges(e);
  154. if (t == null)
  155. return;
  156. const { textRanges: n, rectRanges: s } = t, r = [...n, ...s], { unitId: o, subUnitId: c } = e;
  157. this._refreshSelection$.next({
  158. unitId: o,
  159. subUnitId: c,
  160. docRanges: r,
  161. isEditing: !1
  162. });
  163. }
  164. _replaceByParam(e) {
  165. const { unitId: t, subUnitId: n, ...s } = e;
  166. this._textSelectionInfo.has(t) || this._textSelectionInfo.set(t, /* @__PURE__ */ new Map()), this._textSelectionInfo.get(t).set(n, { ...s });
  167. }
  168. _addByParam(e) {
  169. const { unitId: t, subUnitId: n, ...s } = e;
  170. this._textSelectionInfo.has(t) || this._textSelectionInfo.set(t, /* @__PURE__ */ new Map());
  171. const r = this._textSelectionInfo.get(t);
  172. r.has(n) ? r.get(n).textRanges.push(...e.textRanges) : r.set(n, { ...s });
  173. }
  174. };
  175. m = Ce([
  176. W(0, B),
  177. W(1, p)
  178. ], m);
  179. var Me = Object.defineProperty, De = Object.getOwnPropertyDescriptor, Te = (i, e, t, n) => {
  180. for (var s = n > 1 ? void 0 : n ? De(e, t) : e, r = i.length - 1, o; r >= 0; r--)
  181. (o = i[r]) && (s = (n ? o(e, t, s) : o(s)) || s);
  182. return n && s && Me(e, t, s), s;
  183. }, Y = (i, e) => (t, n) => e(t, n, i);
  184. let D = class extends V {
  185. constructor(e, t, n) {
  186. super();
  187. u(this, "_skeleton");
  188. u(this, "_docViewModel");
  189. u(this, "_currentSkeleton$", new x(null));
  190. u(this, "currentSkeleton$", this._currentSkeleton$.asObservable());
  191. // CurrentSkeletonBefore for pre-triggered logic during registration
  192. u(this, "_currentSkeletonBefore$", new x(null));
  193. u(this, "currentSkeletonBefore$", this._currentSkeletonBefore$.asObservable());
  194. u(this, "_currentViewModel$", new x(null));
  195. u(this, "currentViewModel$", this._currentViewModel$.asObservable());
  196. this._context = e, this._localeService = t, this._univerInstanceService = n, this._init(), this._univerInstanceService.getCurrentTypeOfUnit$(b.UNIVER_DOC).pipe(ee(this.dispose$)).subscribe((s) => {
  197. s && s.getUnitId() === this._context.unitId && this._update(s);
  198. });
  199. }
  200. dispose() {
  201. super.dispose(), this._currentSkeletonBefore$.complete(), this._currentSkeleton$.complete();
  202. }
  203. getSkeleton() {
  204. return this._skeleton;
  205. }
  206. getViewModel() {
  207. return this._docViewModel;
  208. }
  209. _init() {
  210. const e = this._context.unit;
  211. this._update(e);
  212. }
  213. _update(e) {
  214. const t = this._context.unitId;
  215. if (e.getBody() == null)
  216. return;
  217. this._docViewModel && ce(t) ? (this._docViewModel.reset(e), this._context.unit = e) : this._docViewModel || (this._docViewModel = this._buildDocViewModel(e)), this._skeleton || (this._skeleton = this._buildSkeleton(this._docViewModel));
  218. const n = this._skeleton;
  219. n.calculate(), this._currentSkeletonBefore$.next(n), this._currentSkeleton$.next(n), this._currentViewModel$.next(this._docViewModel);
  220. }
  221. _buildSkeleton(e) {
  222. return Ie.create(e, this._localeService);
  223. }
  224. _buildDocViewModel(e) {
  225. return new me(e);
  226. }
  227. };
  228. D = Te([
  229. Y(1, w(oe)),
  230. Y(2, p)
  231. ], D);
  232. class te extends V {
  233. constructor() {
  234. super();
  235. u(this, "_docStateChangeParams$", new x(null));
  236. u(this, "docStateChangeParams$", this._docStateChangeParams$.asObservable());
  237. }
  238. emitStateChangeInfo(t) {
  239. this._docStateChangeParams$.next(t);
  240. }
  241. dispose() {
  242. super.dispose(), this._docStateChangeParams$.complete();
  243. }
  244. }
  245. const K = "doc.mutation.rich-text-editing", M = {
  246. id: K,
  247. type: N.MUTATION,
  248. // eslint-disable-next-line max-lines-per-function
  249. handler: (i, e) => {
  250. var z, F;
  251. const {
  252. unitId: t,
  253. segmentId: n = "",
  254. actions: s,
  255. textRanges: r,
  256. prevTextRanges: o,
  257. trigger: c,
  258. noHistory: a,
  259. isCompositionEnd: l,
  260. noNeedSetTextRange: d,
  261. debounce: _,
  262. isEditing: g = !0,
  263. isSync: f,
  264. syncer: h
  265. } = e, R = i.get(p), I = i.get(Re), v = i.get(te), S = R.getUniverDocInstance(t), L = (z = I.getRenderById(t)) == null ? void 0 : z.with(D).getViewModel();
  266. if (S == null || L == null)
  267. throw new Error(`DocumentDataModel or documentViewModel not found for unitId: ${t}`);
  268. const X = i.get(m), y = (F = X.getDocRanges()) != null ? F : [], ne = !!S.getSnapshot().disabled;
  269. if (O.isNoop(s) || s && s.length === 0 || ne)
  270. return {
  271. unitId: t,
  272. actions: [],
  273. textRanges: y
  274. };
  275. const G = O.invertWithDoc(s, S.getSnapshot());
  276. S.apply(s), L.reset(S), !d && r && c != null && !f && queueMicrotask(() => {
  277. X.replaceDocRanges(r, { unitId: t, subUnitId: t }, g, e.options);
  278. });
  279. const se = {
  280. commandId: K,
  281. unitId: t,
  282. segmentId: n,
  283. trigger: c,
  284. noHistory: a,
  285. debounce: _,
  286. redoState: {
  287. actions: s,
  288. textRanges: r
  289. },
  290. undoState: {
  291. actions: G,
  292. textRanges: o != null ? o : y
  293. },
  294. isCompositionEnd: l,
  295. isSync: f,
  296. syncer: h
  297. };
  298. return v.emitStateChangeInfo(se), {
  299. unitId: t,
  300. actions: G,
  301. textRanges: y
  302. };
  303. }
  304. }, be = {
  305. id: "doc.mutation.rename-doc",
  306. type: N.MUTATION,
  307. handler: (i, e) => {
  308. const n = i.get(p).getUnit(e.unitId, b.UNIVER_DOC);
  309. return n ? (n.setName(e.name), !0) : !1;
  310. }
  311. }, we = "docs.config", H = {};
  312. var ye = Object.defineProperty, $e = Object.getOwnPropertyDescriptor, Ue = (i, e, t, n) => {
  313. for (var s = n > 1 ? void 0 : n ? $e(e, t) : e, r = i.length - 1, o; r >= 0; r--)
  314. (o = i[r]) && (s = (n ? o(e, t, s) : o(s)) || s);
  315. return n && s && ye(e, t, s), s;
  316. }, U = (i, e) => (t, n) => e(t, n, i);
  317. let T = class extends Q {
  318. constructor(i, e, t) {
  319. super(), this._commandService = i, this._textSelectionManagerService = e, this._univerInstanceService = t, this._initSelectionChange();
  320. }
  321. _transformCustomRange(i, e) {
  322. var o;
  323. const { startOffset: t, endOffset: n, collapsed: s } = e, r = (o = i.getCustomRanges()) == null ? void 0 : o.filter((c) => !c.wholeEntity || t <= c.startIndex && n > c.endIndex ? !1 : s ? c.startIndex < t && c.endIndex >= n : C.range.isIntersects(t, n - 1, c.startIndex, c.endIndex));
  324. if (r != null && r.length) {
  325. let c = t, a = n;
  326. return r.forEach((l) => {
  327. c = Math.min(l.startIndex, c), a = Math.max(l.endIndex + 1, a);
  328. }), {
  329. ...e,
  330. startOffset: c,
  331. endOffset: a,
  332. collapsed: c === a
  333. };
  334. }
  335. return e;
  336. }
  337. _initSelectionChange() {
  338. this.disposeWithMe(this._commandService.onCommandExecuted((i) => {
  339. if (i.id === j.id) {
  340. const e = i.params, { unitId: t, ranges: n, isEditing: s } = e, r = this._univerInstanceService.getUnit(t);
  341. if (!r)
  342. return;
  343. const o = n.map((c) => this._transformCustomRange(r, c));
  344. o.some((c, a) => n[a] !== c) && this._textSelectionManagerService.replaceTextRanges(o, s);
  345. }
  346. }));
  347. }
  348. };
  349. T = Ue([
  350. U(0, B),
  351. U(1, w(m)),
  352. U(2, p)
  353. ], T);
  354. var Ee = Object.defineProperty, Pe = Object.getOwnPropertyDescriptor, Ne = (i, e, t, n) => {
  355. for (var s = n > 1 ? void 0 : n ? Pe(e, t) : e, r = i.length - 1, o; r >= 0; r--)
  356. (o = i[r]) && (s = (n ? o(e, t, s) : o(s)) || s);
  357. return n && s && Ee(e, t, s), s;
  358. }, k = (i, e) => (t, n) => e(t, n, i);
  359. const Ve = "DOCS_PLUGIN";
  360. var P;
  361. let q = (P = class extends le {
  362. // static override type = UniverInstanceType.UNIVER_DOC;
  363. constructor(i = H, e, t) {
  364. super(), this._config = i, this._injector = e, this._configService = t;
  365. const { ...n } = ue(
  366. {},
  367. H,
  368. this._config
  369. );
  370. this._configService.setConfig(we, n);
  371. }
  372. onStarting() {
  373. this._initializeDependencies(), this._initializeCommands();
  374. }
  375. _initializeCommands() {
  376. [
  377. M,
  378. be,
  379. j
  380. ].forEach((i) => {
  381. this._injector.get(B).registerCommand(i);
  382. });
  383. }
  384. _initializeDependencies() {
  385. [
  386. [m],
  387. [te],
  388. [T]
  389. ].forEach((i) => this._injector.add(i));
  390. }
  391. onReady() {
  392. this._injector.get(T);
  393. }
  394. }, u(P, "pluginName", Ve), P);
  395. q = Ne([
  396. k(1, w(ae)),
  397. k(2, de)
  398. ], q);
  399. const Be = Z("CUSTOM_RANGE"), je = Z("CUSTOM_DECORATION"), E = {
  400. CUSTOM_RANGE: Be,
  401. CUSTOM_DECORATION: je
  402. };
  403. var Ae = Object.defineProperty, Le = Object.getOwnPropertyDescriptor, Xe = (i, e, t, n) => {
  404. for (var s = n > 1 ? void 0 : n ? Le(e, t) : e, r = i.length - 1, o; r >= 0; r--)
  405. (o = i[r]) && (s = (n ? o(e, t, s) : o(s)) || s);
  406. return n && s && Ae(e, t, s), s;
  407. }, Ge = (i, e) => (t, n) => e(t, n, i);
  408. let J = class extends Q {
  409. constructor(e, t) {
  410. super();
  411. u(this, "_interceptorsByName", /* @__PURE__ */ new Map());
  412. this._context = e, this._docSkeletonManagerService = t;
  413. const n = this._docSkeletonManagerService.getViewModel(), s = n.getDataModel().getUnitId();
  414. if (s === ge || s === _e)
  415. return;
  416. this.disposeWithMe(this.interceptDocumentViewModel(n)), this.disposeWithMe(this.intercept(E.CUSTOM_RANGE, {
  417. priority: -1,
  418. handler: (o, c, a) => a(o)
  419. }));
  420. let r = new $();
  421. n.segmentViewModels$.subscribe((o) => {
  422. r.dispose(), r = new $(), o.forEach((c) => {
  423. r.add(this.interceptDocumentViewModel(c));
  424. });
  425. }), this.disposeWithMe(r);
  426. }
  427. intercept(e, t) {
  428. const n = e;
  429. this._interceptorsByName.has(n) || this._interceptorsByName.set(n, []);
  430. const s = this._interceptorsByName.get(n);
  431. return s.push(t), this._interceptorsByName.set(
  432. n,
  433. s.sort((r, o) => {
  434. var c, a;
  435. return ((c = o.priority) != null ? c : 0) - ((a = r.priority) != null ? a : 0);
  436. })
  437. ), this.disposeWithMe(fe(() => he(this._interceptorsByName.get(n), t)));
  438. }
  439. fetchThroughInterceptors(e) {
  440. const t = e, n = this._interceptorsByName.get(t);
  441. return Se(n || []);
  442. }
  443. interceptDocumentViewModel(e) {
  444. const t = new $();
  445. return t.add(e.registerCustomRangeInterceptor({
  446. getCustomRange: (n) => {
  447. var s;
  448. return this.fetchThroughInterceptors(E.CUSTOM_RANGE)(
  449. e.getCustomRangeRaw(n),
  450. {
  451. index: n,
  452. unitId: e.getDataModel().getUnitId(),
  453. customRanges: (s = e.getDataModel().getCustomRanges()) != null ? s : []
  454. }
  455. );
  456. },
  457. getCustomDecoration: (n) => {
  458. var s;
  459. return this.fetchThroughInterceptors(E.CUSTOM_DECORATION)(
  460. e.getCustomDecorationRaw(n),
  461. {
  462. index: n,
  463. unitId: e.getDataModel().getUnitId(),
  464. customDecorations: (s = e.getDataModel().getCustomDecorations()) != null ? s : []
  465. }
  466. );
  467. }
  468. })), t;
  469. }
  470. };
  471. J = Xe([
  472. Ge(1, w(D))
  473. ], J);
  474. function A(i, e = "") {
  475. if (!e)
  476. return ["body"];
  477. const { headers: t, footers: n } = i.getSnapshot();
  478. if (t == null && n == null)
  479. throw new Error("Document data model must have headers or footers when update by segment id");
  480. if ((t == null ? void 0 : t[e]) != null)
  481. return ["headers", e, "body"];
  482. if ((n == null ? void 0 : n[e]) != null)
  483. return ["footers", e, "body"];
  484. throw new Error("Segment id not found in headers or footers");
  485. }
  486. function Ke(i, e, t) {
  487. const { unitId: n, segmentId: s } = e, o = i.get(p).getUnit(n);
  488. if (!o)
  489. return !1;
  490. const c = {
  491. id: M.id,
  492. params: {
  493. unitId: e.unitId,
  494. actions: [],
  495. textRanges: void 0
  496. }
  497. }, a = O.getInstance(), l = C.customRange.add({ ...e, body: t });
  498. if (!l)
  499. return !1;
  500. const d = A(o, s);
  501. return c.params.actions = a.editOp(l.serialize(), d), c;
  502. }
  503. function He(i, e) {
  504. var S;
  505. const { rangeId: t, rangeType: n, wholeEntity: s, properties: r, unitId: o, selections: c } = e, a = i.get(m), l = i.get(p), d = c != null ? c : a.getTextRanges({ unitId: o, subUnitId: o }), _ = (S = d == null ? void 0 : d[0]) == null ? void 0 : S.segmentId;
  506. if (!(d != null && d.length))
  507. return !1;
  508. const g = l.getUnit(o, b.UNIVER_DOC);
  509. if (!g)
  510. return !1;
  511. const f = g.getSelfOrHeaderFooterModel(_).getBody();
  512. if (!f)
  513. return !1;
  514. const h = C.customRange.add({
  515. ranges: d,
  516. rangeId: t,
  517. rangeType: n,
  518. segmentId: _,
  519. wholeEntity: s,
  520. properties: r,
  521. body: f
  522. });
  523. if (!h)
  524. return !1;
  525. const R = O.getInstance(), I = {
  526. id: M.id,
  527. params: {
  528. unitId: o,
  529. actions: [],
  530. textRanges: h.selections,
  531. segmentId: _
  532. },
  533. textX: h
  534. }, v = A(g, _);
  535. return I.params.actions = R.editOp(h.serialize(), v), I;
  536. }
  537. function ke(i, e) {
  538. const { unitId: t, segmentId: n, insert: s } = e, o = i.get(p).getUnit(t);
  539. if (!o)
  540. return !1;
  541. const c = {
  542. id: M.id,
  543. params: {
  544. unitId: e.unitId,
  545. actions: [],
  546. textRanges: void 0,
  547. segmentId: n
  548. }
  549. }, a = O.getInstance(), l = C.customRange.delete({
  550. documentDataModel: o,
  551. rangeId: e.rangeId,
  552. insert: s,
  553. segmentId: n
  554. });
  555. if (!l)
  556. return !1;
  557. const d = A(o, n);
  558. return c.params.actions = a.editOp(l.serialize(), d), c.params.textRanges = l.selections, c;
  559. }
  560. function qe(i, e) {
  561. var h, R, I, v;
  562. const { unitId: t, body: n, doc: s } = e;
  563. let r = s;
  564. if (r || (r = i.get(p).getUnit(t)), !r)
  565. return !1;
  566. const o = (h = e.selection) == null ? void 0 : h.segmentId, c = (R = r.getSelfOrHeaderFooterModel(o)) == null ? void 0 : R.getBody();
  567. if (!c) return !1;
  568. const a = i.get(m), l = (I = e.selection) != null ? I : a.getActiveTextRange();
  569. if (!l || !c)
  570. return !1;
  571. const d = (v = e.textRanges) != null ? v : [{
  572. startOffset: l.startOffset + n.dataStream.length,
  573. endOffset: l.startOffset + n.dataStream.length,
  574. collapsed: !0,
  575. segmentId: o
  576. }], _ = C.selection.replace({
  577. selection: l,
  578. body: n,
  579. doc: r
  580. });
  581. if (!_)
  582. return !1;
  583. const g = {
  584. id: M.id,
  585. params: {
  586. unitId: t,
  587. actions: [],
  588. textRanges: d,
  589. debounce: !0,
  590. segmentId: o
  591. },
  592. textX: _
  593. }, f = O.getInstance();
  594. return g.params.actions = f.editOp(_.serialize()), g;
  595. }
  596. export {
  597. E as DOC_INTERCEPTOR_POINT,
  598. J as DocInterceptorService,
  599. m as DocSelectionManagerService,
  600. D as DocSkeletonManagerService,
  601. te as DocStateEmitService,
  602. M as RichTextEditingMutation,
  603. j as SetTextSelectionsOperation,
  604. q as UniverDocsPlugin,
  605. He as addCustomRangeBySelectionFactory,
  606. Ke as addCustomRangeFactory,
  607. ke as deleteCustomRangeFactory,
  608. qe as replaceSelectionFactory
  609. };