@univerjs/docs 0.24.0 → 0.25.0-insiders.20260608-e4336f7

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,4 +1,4 @@
1
- import { BuildTextUtils, CommandType, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY, DOCS_NORMAL_EDITOR_UNIT_ID_KEY, Disposable, DisposableCollection, ICommandService, IConfigService, IUniverInstanceService, Inject, Injector, JSONX, LocaleService, Plugin, RxDisposable, UniverInstanceType, composeInterceptors, createInterceptorKey, isInternalEditorID, merge, remove, toDisposable } from "@univerjs/core";
1
+ import { BuildTextUtils, CommandType, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY, DOCS_NORMAL_EDITOR_UNIT_ID_KEY, DeleteDirection, Disposable, DisposableCollection, ICommandService, IConfigService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, LocaleService, Optional, Plugin, RedoCommandId, RxDisposable, TextX, TextXActionType, UndoCommandId, UniverInstanceType, composeInterceptors, createIdentifier, createInterceptorKey, getRichTextEditPath, isInternalEditorID, merge, remove, toDisposable } from "@univerjs/core";
2
2
  import { DocumentSkeleton, DocumentViewModel, IRenderManagerService, NORMAL_TEXT_SELECTION_PLUGIN_STYLE } from "@univerjs/engine-render";
3
3
  import { BehaviorSubject, Subject, takeUntil } from "rxjs";
4
4
 
@@ -12,7 +12,7 @@ const SetTextSelectionsOperation = {
12
12
  };
13
13
 
14
14
  //#endregion
15
- //#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
15
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/typeof.js
16
16
  function _typeof(o) {
17
17
  "@babel/helpers - typeof";
18
18
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -23,7 +23,7 @@ function _typeof(o) {
23
23
  }
24
24
 
25
25
  //#endregion
26
- //#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
26
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/toPrimitive.js
27
27
  function toPrimitive(t, r) {
28
28
  if ("object" != _typeof(t) || !t) return t;
29
29
  var e = t[Symbol.toPrimitive];
@@ -36,14 +36,14 @@ function toPrimitive(t, r) {
36
36
  }
37
37
 
38
38
  //#endregion
39
- //#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
39
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/toPropertyKey.js
40
40
  function toPropertyKey(t) {
41
41
  var i = toPrimitive(t, "string");
42
42
  return "symbol" == _typeof(i) ? i : i + "";
43
43
  }
44
44
 
45
45
  //#endregion
46
- //#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
46
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/defineProperty.js
47
47
  function _defineProperty(e, r, t) {
48
48
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
49
49
  value: t,
@@ -54,7 +54,7 @@ function _defineProperty(e, r, t) {
54
54
  }
55
55
 
56
56
  //#endregion
57
- //#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
57
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/decorateParam.js
58
58
  function __decorateParam(paramIndex, decorator) {
59
59
  return function(target, key) {
60
60
  decorator(target, key, paramIndex);
@@ -62,7 +62,7 @@ function __decorateParam(paramIndex, decorator) {
62
62
  }
63
63
 
64
64
  //#endregion
65
- //#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
65
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/decorate.js
66
66
  function __decorate(decorators, target, key, desc) {
67
67
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
68
68
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -322,15 +322,16 @@ const RichTextEditingMutationId = "doc.mutation.rich-text-editing";
322
322
  const RichTextEditingMutation = {
323
323
  id: RichTextEditingMutationId,
324
324
  type: CommandType.MUTATION,
325
- handler: (accessor, params) => {
325
+ handler: (accessor, params, options) => {
326
326
  var _renderManagerService, _docSelectionManagerS;
327
- const { unitId, segmentId = "", actions, textRanges, prevTextRanges, trigger, noHistory, isCompositionEnd, noNeedSetTextRange, debounce, isEditing = true, isSync, syncer } = params;
327
+ const { unitId, segmentId = "", actions, textRanges, prevTextRanges, trigger, noHistory, isCompositionEnd, noNeedSetTextRange, debounce, isEditing = true, isSync: paramsIsSync, syncer } = params;
328
+ const isSync = paramsIsSync || (options === null || options === void 0 ? void 0 : options.fromCollab) || (options === null || options === void 0 ? void 0 : options.fromChangeset);
328
329
  const univerInstanceService = accessor.get(IUniverInstanceService);
329
330
  const renderManagerService = accessor.get(IRenderManagerService);
330
331
  const docStateEmitService = accessor.get(DocStateEmitService);
331
- const documentDataModel = univerInstanceService.getUniverDocInstance(unitId);
332
- const documentViewModel = (_renderManagerService = renderManagerService.getRenderById(unitId)) === null || _renderManagerService === void 0 ? void 0 : _renderManagerService.with(DocSkeletonManagerService).getViewModel();
333
- if (documentDataModel == null || documentViewModel == null) throw new Error(`DocumentDataModel or documentViewModel not found for unitId: ${unitId}`);
332
+ const documentDataModel = univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
333
+ const documentViewModel = (_renderManagerService = renderManagerService.getRenderUnitById(unitId)) === null || _renderManagerService === void 0 ? void 0 : _renderManagerService.with(DocSkeletonManagerService).getViewModel();
334
+ if (documentDataModel == null) throw new Error(`DocumentDataModel not found for unitId: ${unitId}`);
334
335
  const docSelectionManagerService = accessor.get(DocSelectionManagerService);
335
336
  const docRanges = (_docSelectionManagerS = docSelectionManagerService.getDocRanges()) !== null && _docSelectionManagerS !== void 0 ? _docSelectionManagerS : [];
336
337
  const disabled = !!documentDataModel.getSnapshot().disabled;
@@ -341,7 +342,7 @@ const RichTextEditingMutation = {
341
342
  };
342
343
  const undoActions = JSONX.invertWithDoc(actions, documentDataModel.getSnapshot());
343
344
  documentDataModel.apply(actions);
344
- documentViewModel.reset(documentDataModel);
345
+ documentViewModel === null || documentViewModel === void 0 || documentViewModel.reset(documentDataModel);
345
346
  if (!noNeedSetTextRange && textRanges && trigger != null && !isSync) queueMicrotask(() => {
346
347
  docSelectionManagerService.replaceDocRanges(textRanges, {
347
348
  unitId,
@@ -376,10 +377,162 @@ const RichTextEditingMutation = {
376
377
  }
377
378
  };
378
379
 
380
+ //#endregion
381
+ //#region src/commands/commands/core-editing.command.ts
382
+ /**
383
+ * The command to insert text. The changed range could be non-collapsed, mainly use in line break and normal input.
384
+ */
385
+ const InsertTextCommand = {
386
+ id: "doc.command.insert-text",
387
+ type: CommandType.COMMAND,
388
+ handler: async (accessor, params) => {
389
+ var _activeRange$segmentI;
390
+ const commandService = accessor.get(ICommandService);
391
+ const { range, segmentId, body, unitId, cursorOffset } = params;
392
+ const docSelectionManagerService = accessor.get(DocSelectionManagerService);
393
+ const docDataModel = accessor.get(IUniverInstanceService).getUnit(unitId, UniverInstanceType.UNIVER_DOC);
394
+ if (docDataModel == null) return false;
395
+ const activeRange = docSelectionManagerService.getActiveTextRange();
396
+ const originBody = docDataModel.getSelfOrHeaderFooterModel((_activeRange$segmentI = activeRange === null || activeRange === void 0 ? void 0 : activeRange.segmentId) !== null && _activeRange$segmentI !== void 0 ? _activeRange$segmentI : "").getBody();
397
+ if (originBody == null) return false;
398
+ const { startOffset, collapsed } = range;
399
+ const cursorMove = cursorOffset !== null && cursorOffset !== void 0 ? cursorOffset : body.dataStream.length;
400
+ const textRanges = [{
401
+ startOffset: startOffset + cursorMove,
402
+ endOffset: startOffset + cursorMove,
403
+ style: activeRange === null || activeRange === void 0 ? void 0 : activeRange.style,
404
+ collapsed
405
+ }];
406
+ const doMutation = {
407
+ id: RichTextEditingMutation.id,
408
+ params: {
409
+ unitId,
410
+ actions: [],
411
+ textRanges,
412
+ debounce: true
413
+ }
414
+ };
415
+ const textX = new TextX();
416
+ const jsonX = JSONX.getInstance();
417
+ if (collapsed) {
418
+ if (startOffset > 0) textX.push({
419
+ t: TextXActionType.RETAIN,
420
+ len: startOffset
421
+ });
422
+ textX.push({
423
+ t: TextXActionType.INSERT,
424
+ body,
425
+ len: body.dataStream.length
426
+ });
427
+ } else {
428
+ const dos = BuildTextUtils.selection.delete([range], originBody, 0, body);
429
+ textX.push(...dos);
430
+ }
431
+ doMutation.params.textRanges = [{
432
+ startOffset: startOffset + cursorMove,
433
+ endOffset: startOffset + cursorMove,
434
+ collapsed
435
+ }];
436
+ const path = getRichTextEditPath(docDataModel, segmentId);
437
+ doMutation.params.actions = jsonX.editOp(textX.serialize(), path);
438
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
439
+ return Boolean(result);
440
+ }
441
+ };
442
+ /**
443
+ * The command to delete text, mainly used in BACKSPACE and DELETE when collapsed is true. ONLY handle collapsed range!!!
444
+ */
445
+ const DeleteTextCommand = {
446
+ id: "doc.command.delete-text",
447
+ type: CommandType.COMMAND,
448
+ handler: async (accessor, params) => {
449
+ var _body$customRanges;
450
+ const commandService = accessor.get(ICommandService);
451
+ const univerInstanceService = accessor.get(IUniverInstanceService);
452
+ const { range, segmentId, unitId, direction, len = 1 } = params;
453
+ const docDataModel = univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_DOC);
454
+ const body = docDataModel === null || docDataModel === void 0 ? void 0 : docDataModel.getSelfOrHeaderFooterModel(segmentId).getBody();
455
+ if (docDataModel == null || body == null) return false;
456
+ const { startOffset } = range;
457
+ let start = direction === DeleteDirection.LEFT ? startOffset - len : startOffset;
458
+ let end = direction === DeleteDirection.LEFT ? startOffset - 1 : startOffset + len - 1;
459
+ const customRange = (_body$customRanges = body.customRanges) === null || _body$customRanges === void 0 ? void 0 : _body$customRanges.find((customRange) => customRange.startIndex <= start && customRange.endIndex >= end);
460
+ if (customRange === null || customRange === void 0 ? void 0 : customRange.wholeEntity) {
461
+ start = customRange.startIndex;
462
+ end = Math.max(end, customRange.endIndex);
463
+ }
464
+ const doMutation = {
465
+ id: RichTextEditingMutation.id,
466
+ params: {
467
+ unitId,
468
+ actions: [],
469
+ textRanges: [{
470
+ startOffset: start,
471
+ endOffset: start,
472
+ collapsed: true
473
+ }],
474
+ debounce: true
475
+ }
476
+ };
477
+ const textX = new TextX();
478
+ const jsonX = JSONX.getInstance();
479
+ textX.push({
480
+ t: TextXActionType.RETAIN,
481
+ len: start - 0
482
+ });
483
+ textX.push({
484
+ t: TextXActionType.DELETE,
485
+ len: end - start + 1
486
+ });
487
+ const path = getRichTextEditPath(docDataModel, segmentId);
488
+ doMutation.params.actions = jsonX.editOp(textX.serialize(), path);
489
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
490
+ return Boolean(result);
491
+ }
492
+ };
493
+ /**
494
+ * The command to update text properties, mainly used in BACKSPACE.
495
+ */
496
+ const UpdateTextCommand = {
497
+ id: "doc.command.update-text",
498
+ type: CommandType.COMMAND,
499
+ handler: async (accessor, params) => {
500
+ const { range, segmentId, updateBody, coverType, unitId, textRanges } = params;
501
+ const commandService = accessor.get(ICommandService);
502
+ const docDataModel = accessor.get(IUniverInstanceService).getCurrentUniverDocInstance();
503
+ if (docDataModel == null) return false;
504
+ const doMutation = {
505
+ id: RichTextEditingMutation.id,
506
+ params: {
507
+ unitId,
508
+ actions: [],
509
+ textRanges
510
+ }
511
+ };
512
+ const textX = new TextX();
513
+ const jsonX = JSONX.getInstance();
514
+ const { startOffset, endOffset } = range;
515
+ textX.push({
516
+ t: TextXActionType.RETAIN,
517
+ len: startOffset
518
+ });
519
+ textX.push({
520
+ t: TextXActionType.RETAIN,
521
+ body: updateBody,
522
+ len: endOffset - startOffset,
523
+ coverType
524
+ });
525
+ const path = getRichTextEditPath(docDataModel, segmentId);
526
+ doMutation.params.actions = jsonX.editOp(textX.serialize(), path);
527
+ const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
528
+ return Boolean(result);
529
+ }
530
+ };
531
+
379
532
  //#endregion
380
533
  //#region package.json
381
534
  var name = "@univerjs/docs";
382
- var version = "0.24.0";
535
+ var version = "0.25.0-insiders.20260608-e4336f7";
383
536
 
384
537
  //#endregion
385
538
  //#region src/commands/mutations/docs-rename.mutation.ts
@@ -468,6 +621,192 @@ DocCustomRangeController = __decorate([
468
621
  __decorateParam(2, IUniverInstanceService)
469
622
  ], DocCustomRangeController);
470
623
 
624
+ //#endregion
625
+ //#region src/services/doc-content-insert.service.ts
626
+ /**
627
+ * Copyright 2023-present DreamNum Co., Ltd.
628
+ *
629
+ * Licensed under the Apache License, Version 2.0 (the "License");
630
+ * you may not use this file except in compliance with the License.
631
+ * You may obtain a copy of the License at
632
+ *
633
+ * http://www.apache.org/licenses/LICENSE-2.0
634
+ *
635
+ * Unless required by applicable law or agreed to in writing, software
636
+ * distributed under the License is distributed on an "AS IS" BASIS,
637
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
638
+ * See the License for the specific language governing permissions and
639
+ * limitations under the License.
640
+ */
641
+ var DocContentInsertService = class extends Disposable {
642
+ constructor(..._args) {
643
+ super(..._args);
644
+ _defineProperty(this, "_range", null);
645
+ }
646
+ setInsertRange(range) {
647
+ this._range = range;
648
+ }
649
+ consumeInsertRange(unitId) {
650
+ if (!this._range) return null;
651
+ if (unitId && this._range.unitId !== unitId) return null;
652
+ const range = this._range;
653
+ this._range = null;
654
+ return range;
655
+ }
656
+ clearInsertRange() {
657
+ this._range = null;
658
+ }
659
+ };
660
+
661
+ //#endregion
662
+ //#region src/services/doc-state-change-manager.service.ts
663
+ const DEBOUNCE_DELAY = 300;
664
+ const IDocStateChangeInterceptorService = createIdentifier("doc.state-change-interceptor-service");
665
+ let DocStateChangeManagerService = class DocStateChangeManagerService extends RxDisposable {
666
+ constructor(_undoRedoService, _commandService, _univerInstanceService, _docStateEmitService, _docStateChangeInterceptorService) {
667
+ super();
668
+ this._undoRedoService = _undoRedoService;
669
+ this._commandService = _commandService;
670
+ this._univerInstanceService = _univerInstanceService;
671
+ this._docStateEmitService = _docStateEmitService;
672
+ this._docStateChangeInterceptorService = _docStateChangeInterceptorService;
673
+ _defineProperty(this, "_docStateChange$", new BehaviorSubject(null));
674
+ _defineProperty(this, "docStateChange$", this._docStateChange$.asObservable());
675
+ _defineProperty(this, "_historyStateCache", /* @__PURE__ */ new Map());
676
+ _defineProperty(this, "_changeStateCache", /* @__PURE__ */ new Map());
677
+ _defineProperty(this, "_historyTimer", null);
678
+ _defineProperty(this, "_changeStateCacheTimer", null);
679
+ this._initialize();
680
+ this._listenDocStateChange();
681
+ }
682
+ getStateCache(unitId) {
683
+ var _this$_historyStateCa, _this$_changeStateCac;
684
+ return {
685
+ history: (_this$_historyStateCa = this._historyStateCache.get(unitId)) !== null && _this$_historyStateCa !== void 0 ? _this$_historyStateCa : [],
686
+ collaboration: (_this$_changeStateCac = this._changeStateCache.get(unitId)) !== null && _this$_changeStateCac !== void 0 ? _this$_changeStateCac : []
687
+ };
688
+ }
689
+ setStateCache(unitId, cache) {
690
+ this._historyStateCache.set(unitId, cache.history);
691
+ this._changeStateCache.set(unitId, cache.collaboration);
692
+ }
693
+ _setChangeState(changeState) {
694
+ this._cacheChangeState(changeState, "history");
695
+ this._cacheChangeState(changeState, "collaboration");
696
+ }
697
+ _initialize() {
698
+ this.disposeWithMe(this._commandService.beforeCommandExecuted((command) => {
699
+ if (command.id === UndoCommandId || command.id === RedoCommandId) {
700
+ const univerDoc = this._univerInstanceService.getCurrentUniverDocInstance();
701
+ if (univerDoc == null) return;
702
+ const unitId = univerDoc.getUnitId();
703
+ this._pushHistory(unitId);
704
+ this._emitChangeState(unitId);
705
+ }
706
+ }));
707
+ }
708
+ _listenDocStateChange() {
709
+ this._docStateEmitService.docStateChangeParams$.pipe(takeUntil(this.dispose$)).subscribe((changeStateInfo) => {
710
+ var _this$_docStateChange, _this$_docStateChange2;
711
+ if (changeStateInfo == null) return;
712
+ const interceptedChangeStateInfo = (_this$_docStateChange = (_this$_docStateChange2 = this._docStateChangeInterceptorService) === null || _this$_docStateChange2 === void 0 ? void 0 : _this$_docStateChange2.transformChangeStateInfo(changeStateInfo)) !== null && _this$_docStateChange !== void 0 ? _this$_docStateChange : changeStateInfo;
713
+ if (interceptedChangeStateInfo == null) return;
714
+ if (interceptedChangeStateInfo.isSync) return;
715
+ const { isCompositionEnd: _isCompositionEnd, isSync: _isSync, syncer: _syncer, ...changeState } = interceptedChangeStateInfo;
716
+ this._setChangeState(changeState);
717
+ });
718
+ }
719
+ _cacheChangeState(changeState, type = "history") {
720
+ const { trigger, unitId, noHistory, debounce = false } = changeState;
721
+ if (noHistory || type === "history" && trigger == null) return;
722
+ if (type === "history" && (trigger === RedoCommandId || trigger === UndoCommandId)) return;
723
+ const stateCache = type === "history" ? this._historyStateCache : this._changeStateCache;
724
+ const cb = type === "history" ? this._pushHistory.bind(this) : this._emitChangeState.bind(this);
725
+ if (stateCache.has(unitId)) {
726
+ const cacheStates = stateCache.get(unitId);
727
+ cacheStates === null || cacheStates === void 0 || cacheStates.push(changeState);
728
+ } else stateCache.set(unitId, [changeState]);
729
+ if (debounce) if (type === "history") {
730
+ if (this._historyTimer) clearTimeout(this._historyTimer);
731
+ this._historyTimer = setTimeout(() => {
732
+ cb(unitId);
733
+ }, DEBOUNCE_DELAY);
734
+ } else {
735
+ if (this._changeStateCacheTimer) clearTimeout(this._changeStateCacheTimer);
736
+ this._changeStateCacheTimer = setTimeout(() => {
737
+ cb(unitId);
738
+ }, DEBOUNCE_DELAY);
739
+ }
740
+ else cb(unitId);
741
+ }
742
+ _pushHistory(unitId) {
743
+ const undoRedoService = this._undoRedoService;
744
+ const cacheStates = this._historyStateCache.get(unitId);
745
+ if (undoRedoService == null || !Array.isArray(cacheStates) || cacheStates.length === 0) return;
746
+ const len = cacheStates.length;
747
+ const commandId = cacheStates[0].commandId;
748
+ const firstState = cacheStates[0];
749
+ const lastState = cacheStates[len - 1];
750
+ const redoParams = {
751
+ unitId,
752
+ actions: cacheStates.reduce((acc, cur) => JSONX.compose(acc, cur.redoState.actions), null),
753
+ textRanges: lastState.redoState.textRanges
754
+ };
755
+ const undoParams = {
756
+ unitId,
757
+ actions: cacheStates.reverse().reduce((acc, cur) => JSONX.compose(acc, cur.undoState.actions), null),
758
+ textRanges: firstState.undoState.textRanges
759
+ };
760
+ undoRedoService.pushUndoRedo({
761
+ unitID: unitId,
762
+ undoMutations: [{
763
+ id: commandId,
764
+ params: undoParams
765
+ }],
766
+ redoMutations: [{
767
+ id: commandId,
768
+ params: redoParams
769
+ }]
770
+ });
771
+ cacheStates.length = 0;
772
+ }
773
+ _emitChangeState(unitId) {
774
+ const cacheStates = this._changeStateCache.get(unitId);
775
+ if (!Array.isArray(cacheStates) || cacheStates.length === 0) return;
776
+ const len = cacheStates.length;
777
+ const { commandId, trigger, segmentId, noHistory, debounce } = cacheStates[0];
778
+ const firstState = cacheStates[0];
779
+ const lastState = cacheStates[len - 1];
780
+ const changeState = {
781
+ commandId,
782
+ unitId,
783
+ trigger,
784
+ redoState: {
785
+ unitId,
786
+ actions: cacheStates.reduce((acc, cur) => JSONX.compose(acc, cur.redoState.actions), null),
787
+ textRanges: lastState.redoState.textRanges
788
+ },
789
+ undoState: {
790
+ unitId,
791
+ actions: cacheStates.reverse().reduce((acc, cur) => JSONX.compose(acc, cur.undoState.actions), null),
792
+ textRanges: firstState.undoState.textRanges
793
+ },
794
+ segmentId,
795
+ noHistory,
796
+ debounce
797
+ };
798
+ cacheStates.length = 0;
799
+ this._docStateChange$.next(changeState);
800
+ }
801
+ };
802
+ DocStateChangeManagerService = __decorate([
803
+ __decorateParam(0, Optional(IUndoRedoService)),
804
+ __decorateParam(1, ICommandService),
805
+ __decorateParam(2, IUniverInstanceService),
806
+ __decorateParam(3, Inject(DocStateEmitService)),
807
+ __decorateParam(4, Optional(IDocStateChangeInterceptorService))
808
+ ], DocStateChangeManagerService);
809
+
471
810
  //#endregion
472
811
  //#region src/plugin.ts
473
812
  let UniverDocsPlugin = class UniverDocsPlugin extends Plugin {
@@ -485,6 +824,9 @@ let UniverDocsPlugin = class UniverDocsPlugin extends Plugin {
485
824
  }
486
825
  _initializeCommands() {
487
826
  [
827
+ InsertTextCommand,
828
+ DeleteTextCommand,
829
+ UpdateTextCommand,
488
830
  RichTextEditingMutation,
489
831
  DocsRenameMutation,
490
832
  SetTextSelectionsOperation
@@ -496,10 +838,13 @@ let UniverDocsPlugin = class UniverDocsPlugin extends Plugin {
496
838
  [
497
839
  [DocSelectionManagerService],
498
840
  [DocStateEmitService],
841
+ [DocStateChangeManagerService],
842
+ [DocContentInsertService],
499
843
  [DocCustomRangeController]
500
844
  ].forEach((d) => this._injector.add(d));
501
845
  }
502
846
  onReady() {
847
+ this._injector.get(DocStateChangeManagerService);
503
848
  this._injector.get(DocCustomRangeController);
504
849
  }
505
850
  };
@@ -587,25 +932,6 @@ DocInterceptorService = __decorate([__decorateParam(1, Inject(DocSkeletonManager
587
932
 
588
933
  //#endregion
589
934
  //#region src/utils/custom-range-factory.ts
590
- /**
591
- * @deprecated This is a duplication from docs-ui to avoid making too much breaking changes.
592
- */
593
- function getRichTextEditPath(docDataModel, segmentId = "") {
594
- if (!segmentId) return ["body"];
595
- const { headers, footers } = docDataModel.getSnapshot();
596
- if (headers == null && footers == null) throw new Error("Document data model must have headers or footers when update by segment id");
597
- if ((headers === null || headers === void 0 ? void 0 : headers[segmentId]) != null) return [
598
- "headers",
599
- segmentId,
600
- "body"
601
- ];
602
- else if ((footers === null || footers === void 0 ? void 0 : footers[segmentId]) != null) return [
603
- "footers",
604
- segmentId,
605
- "body"
606
- ];
607
- else throw new Error("Segment id not found in headers or footers");
608
- }
609
935
  function addCustomRangeFactory(accessor, param, body) {
610
936
  const { unitId, segmentId } = param;
611
937
  const documentDataModel = accessor.get(IUniverInstanceService).getUnit(unitId);
@@ -738,4 +1064,4 @@ function replaceSelectionFactory(accessor, params) {
738
1064
  }
739
1065
 
740
1066
  //#endregion
741
- export { DOC_INTERCEPTOR_POINT, DocInterceptorService, DocSelectionManagerService, DocSkeletonManagerService, DocStateEmitService, RichTextEditingMutation, SetTextSelectionsOperation, UniverDocsPlugin, addCustomRangeBySelectionFactory, addCustomRangeFactory, deleteCustomRangeFactory, replaceSelectionFactory };
1067
+ export { DOC_INTERCEPTOR_POINT, DeleteTextCommand, DocContentInsertService, DocInterceptorService, DocSelectionManagerService, DocSkeletonManagerService, DocStateChangeManagerService, DocStateEmitService, IDocStateChangeInterceptorService, InsertTextCommand, RichTextEditingMutation, SetTextSelectionsOperation, UniverDocsPlugin, UpdateTextCommand, addCustomRangeBySelectionFactory, addCustomRangeFactory, deleteCustomRangeFactory, replaceSelectionFactory };