@univerjs/docs 1.0.0-beta.0 → 1.0.0-beta.1

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/cjs/facade.js CHANGED
@@ -1336,6 +1336,24 @@ let FDocument = class FDocument extends _univerjs_core_facade.FBaseInitialable {
1336
1336
  return this._documentDataModel.getTitle() || "";
1337
1337
  }
1338
1338
  /**
1339
+ * Set the document name.
1340
+ * @param {string} name The new document name.
1341
+ * @returns {FDocument} The current document for chaining.
1342
+ *
1343
+ * @example
1344
+ * ```ts
1345
+ * const document = univerAPI.getActiveDocument();
1346
+ * document?.setName('Quarterly Report');
1347
+ * ```
1348
+ */
1349
+ setName(name) {
1350
+ this._commandService.syncExecuteCommand(_univerjs_docs.SetDocumentNameCommand.id, {
1351
+ unitId: this.id,
1352
+ name
1353
+ });
1354
+ return this;
1355
+ }
1356
+ /**
1339
1357
  * Returns the document's explicit layout flavor.
1340
1358
  *
1341
1359
  * Use this method when all three states matter. Do not infer a Traditional
package/lib/cjs/index.js CHANGED
@@ -349,6 +349,7 @@ const RichTextEditingMutation = {
349
349
  if (documentDataModel == null) throw new Error(`DocumentDataModel not found for unitId: ${unitId}`);
350
350
  const docSelectionManagerService = accessor.get(DocSelectionManagerService);
351
351
  const docRanges = docSelectionManagerService.getDocRanges() ?? [];
352
+ const selectionInfo = docSelectionManagerService.getSelectionInfo();
352
353
  const disabled = !!documentDataModel.getSnapshot().disabled;
353
354
  if (_univerjs_core.JSONX.isNoop(actions) || actions && actions.length === 0 || disabled) return {
354
355
  unitId,
@@ -379,11 +380,15 @@ const RichTextEditingMutation = {
379
380
  debounce,
380
381
  redoState: {
381
382
  actions,
382
- textRanges
383
+ textRanges,
384
+ options: params.options,
385
+ isEditing
383
386
  },
384
387
  undoState: {
385
388
  actions: undoActions,
386
- textRanges: prevTextRanges ?? docRanges
389
+ textRanges: prevTextRanges ?? docRanges,
390
+ options: selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.options,
391
+ isEditing: selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.isEditing
387
392
  },
388
393
  isCompositionEnd,
389
394
  isSync,
@@ -738,6 +743,53 @@ const SetDocumentDefaultParagraphStyleCommand = {
738
743
  }
739
744
  };
740
745
 
746
+ //#endregion
747
+ //#region src/commands/mutations/docs-rename.mutation.ts
748
+ const DocsRenameMutation = {
749
+ id: "doc.mutation.rename-doc",
750
+ type: _univerjs_core.CommandType.MUTATION,
751
+ handler: (accessor, params) => {
752
+ const doc = accessor.get(_univerjs_core.IUniverInstanceService).getUnit(params.unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
753
+ if (!doc) return false;
754
+ doc.setName(params.name);
755
+ return true;
756
+ }
757
+ };
758
+
759
+ //#endregion
760
+ //#region src/commands/commands/set-document-name.command.ts
761
+ const SetDocumentNameCommand = {
762
+ id: "doc.command.set-name",
763
+ type: _univerjs_core.CommandType.COMMAND,
764
+ handler: (accessor, params) => {
765
+ if (!params) return false;
766
+ const document = accessor.get(_univerjs_core.IUniverInstanceService).getUnit(params.unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
767
+ if (!document) return false;
768
+ const commandService = accessor.get(_univerjs_core.ICommandService);
769
+ const redoParams = {
770
+ unitId: params.unitId,
771
+ name: params.name
772
+ };
773
+ const undoParams = {
774
+ unitId: params.unitId,
775
+ name: document.getTitle() || ""
776
+ };
777
+ if (!commandService.syncExecuteCommand(DocsRenameMutation.id, redoParams)) return false;
778
+ accessor.get(_univerjs_core.IUndoRedoService).pushUndoRedo({
779
+ unitID: params.unitId,
780
+ redoMutations: [{
781
+ id: DocsRenameMutation.id,
782
+ params: redoParams
783
+ }],
784
+ undoMutations: [{
785
+ id: DocsRenameMutation.id,
786
+ params: undoParams
787
+ }]
788
+ });
789
+ return true;
790
+ }
791
+ };
792
+
741
793
  //#endregion
742
794
  //#region src/utils/sections.ts
743
795
  /** Returns document-level section breaks, excluding table-cell and modern-column sentinels. */
@@ -1147,7 +1199,7 @@ const InsertDocumentColumnBreakCommand = {
1147
1199
  rangeId: `docx-break-${(0, _univerjs_core.generateRandomId)()}`,
1148
1200
  rangeType: _univerjs_core.CustomRangeType.CUSTOM,
1149
1201
  wholeEntity: true,
1150
- properties: { docxBreakType: _univerjs_core.DocxBreakType.COLUMN }
1202
+ properties: { breakType: _univerjs_core.DocxBreakType.COLUMN }
1151
1203
  }]
1152
1204
  });
1153
1205
  return executeSectionTextX(context.commandService, context.documentDataModel, textX, InsertDocumentColumnBreakCommand.id);
@@ -1387,20 +1439,7 @@ function composeActions(actions) {
1387
1439
  //#endregion
1388
1440
  //#region package.json
1389
1441
  var name = "@univerjs/docs";
1390
- var version = "1.0.0-beta.0";
1391
-
1392
- //#endregion
1393
- //#region src/commands/mutations/docs-rename.mutation.ts
1394
- const DocsRenameMutation = {
1395
- id: "doc.mutation.rename-doc",
1396
- type: _univerjs_core.CommandType.MUTATION,
1397
- handler: (accessor, params) => {
1398
- const doc = accessor.get(_univerjs_core.IUniverInstanceService).getUnit(params.unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
1399
- if (!doc) return false;
1400
- doc.setName(params.name);
1401
- return true;
1402
- }
1403
- };
1442
+ var version = "1.0.0-beta.1";
1404
1443
 
1405
1444
  //#endregion
1406
1445
  //#region src/config/config.ts
@@ -1603,6 +1642,8 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends _u
1603
1642
  if (type === "history" && (trigger === _univerjs_core.RedoCommandId || trigger === _univerjs_core.UndoCommandId)) return;
1604
1643
  const stateCache = type === "history" ? this._historyStateCache : this._changeStateCache;
1605
1644
  const cb = type === "history" ? this._pushHistory.bind(this) : this._emitChangeState.bind(this);
1645
+ const pendingStates = stateCache.get(unitId);
1646
+ if ((pendingStates === null || pendingStates === void 0 ? void 0 : pendingStates.length) && pendingStates[pendingStates.length - 1].segmentId !== changeState.segmentId) cb(unitId);
1606
1647
  if (stateCache.has(unitId)) {
1607
1648
  const cacheStates = stateCache.get(unitId);
1608
1649
  cacheStates === null || cacheStates === void 0 || cacheStates.push(changeState);
@@ -1631,12 +1672,18 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends _u
1631
1672
  const redoParams = {
1632
1673
  unitId,
1633
1674
  actions: cacheStates.reduce((acc, cur) => _univerjs_core.JSONX.compose(acc, cur.redoState.actions), null),
1634
- textRanges: lastState.redoState.textRanges
1675
+ textRanges: lastState.redoState.textRanges,
1676
+ segmentId: lastState.segmentId,
1677
+ options: lastState.redoState.options,
1678
+ isEditing: lastState.redoState.isEditing
1635
1679
  };
1636
1680
  const undoParams = {
1637
1681
  unitId,
1638
1682
  actions: cacheStates.reverse().reduce((acc, cur) => _univerjs_core.JSONX.compose(acc, cur.undoState.actions), null),
1639
- textRanges: firstState.undoState.textRanges
1683
+ textRanges: firstState.undoState.textRanges,
1684
+ segmentId: firstState.segmentId,
1685
+ options: firstState.undoState.options,
1686
+ isEditing: firstState.undoState.isEditing
1640
1687
  };
1641
1688
  undoRedoService.pushUndoRedo({
1642
1689
  unitID: unitId,
@@ -1665,12 +1712,18 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends _u
1665
1712
  redoState: {
1666
1713
  unitId,
1667
1714
  actions: cacheStates.reduce((acc, cur) => _univerjs_core.JSONX.compose(acc, cur.redoState.actions), null),
1668
- textRanges: lastState.redoState.textRanges
1715
+ textRanges: lastState.redoState.textRanges,
1716
+ segmentId: lastState.segmentId,
1717
+ options: lastState.redoState.options,
1718
+ isEditing: lastState.redoState.isEditing
1669
1719
  },
1670
1720
  undoState: {
1671
1721
  unitId,
1672
1722
  actions: cacheStates.reverse().reduce((acc, cur) => _univerjs_core.JSONX.compose(acc, cur.undoState.actions), null),
1673
- textRanges: firstState.undoState.textRanges
1723
+ textRanges: firstState.undoState.textRanges,
1724
+ segmentId: firstState.segmentId,
1725
+ options: firstState.undoState.options,
1726
+ isEditing: firstState.undoState.isEditing
1674
1727
  },
1675
1728
  segmentId,
1676
1729
  noHistory,
@@ -1783,6 +1836,7 @@ let UniverDocsPlugin = class UniverDocsPlugin extends _univerjs_core.Plugin {
1783
1836
  UpdateTextCommand,
1784
1837
  CreateHeaderFooterCommand,
1785
1838
  SetDocumentDefaultParagraphStyleCommand,
1839
+ SetDocumentNameCommand,
1786
1840
  SetSectionHeaderFooterLinkCommand,
1787
1841
  UpdateDocumentParagraphStyleCommand,
1788
1842
  UpdateDocumentSectionCommand,
@@ -2175,6 +2229,7 @@ exports.InsertDocumentSectionBreakCommand = InsertDocumentSectionBreakCommand;
2175
2229
  exports.InsertTextCommand = InsertTextCommand;
2176
2230
  exports.RichTextEditingMutation = RichTextEditingMutation;
2177
2231
  exports.SetDocumentDefaultParagraphStyleCommand = SetDocumentDefaultParagraphStyleCommand;
2232
+ exports.SetDocumentNameCommand = SetDocumentNameCommand;
2178
2233
  exports.SetSectionHeaderFooterLinkCommand = SetSectionHeaderFooterLinkCommand;
2179
2234
  exports.SetTextSelectionsOperation = SetTextSelectionsOperation;
2180
2235
  Object.defineProperty(exports, 'UniverDocsPlugin', {
package/lib/es/facade.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { BooleanNumber, ColumnSeparatorType, DashStyleType, DataStreamTreeTokenType, DocumentFlavor, ICommandService, IResourceLoaderService, IUniverInstanceService, Inject, Injector, JSONX, PageOrientType, PresetListType, RESTORE_INSERTED_PARAGRAPH_IDS, RedoCommand, SectionType, TextX, TextXActionType, Tools, UndoCommand, UniverInstanceType, UpdateDocsAttributeType, createParagraphId, createSectionId, generateRandomId, getParagraphContentStartOffset, getRichTextEditPath, getSectionHeaderFooterReferenceKey, regexp, resolveSectionHeaderFooterReference } from "@univerjs/core";
2
2
  import { FBaseInitialable, FEnum, FUniver } from "@univerjs/core/facade";
3
- import { CreateHeaderFooterCommand, DeleteDocumentSectionBreakCommand, HeaderFooterType, InsertDocumentColumnBreakCommand, InsertDocumentSectionBreakCommand, RichTextEditingMutation, SetSectionHeaderFooterLinkCommand, UpdateDocumentParagraphStyleCommand, UpdateDocumentSectionCommand, createSectionColumnProperties, generateParagraphs, getEffectiveSectionPageSetup, getSectionContentWidth, getTopLevelSectionBreaks } from "@univerjs/docs";
3
+ import { CreateHeaderFooterCommand, DeleteDocumentSectionBreakCommand, HeaderFooterType, InsertDocumentColumnBreakCommand, InsertDocumentSectionBreakCommand, RichTextEditingMutation, SetDocumentNameCommand, SetSectionHeaderFooterLinkCommand, UpdateDocumentParagraphStyleCommand, UpdateDocumentSectionCommand, createSectionColumnProperties, generateParagraphs, getEffectiveSectionPageSetup, getSectionContentWidth, getTopLevelSectionBreaks } from "@univerjs/docs";
4
4
 
5
5
  //#region src/facade/utils.ts
6
6
  function cloneParagraphStyle(paragraphStyle) {
@@ -1335,6 +1335,24 @@ let FDocument = class FDocument extends FBaseInitialable {
1335
1335
  return this._documentDataModel.getTitle() || "";
1336
1336
  }
1337
1337
  /**
1338
+ * Set the document name.
1339
+ * @param {string} name The new document name.
1340
+ * @returns {FDocument} The current document for chaining.
1341
+ *
1342
+ * @example
1343
+ * ```ts
1344
+ * const document = univerAPI.getActiveDocument();
1345
+ * document?.setName('Quarterly Report');
1346
+ * ```
1347
+ */
1348
+ setName(name) {
1349
+ this._commandService.syncExecuteCommand(SetDocumentNameCommand.id, {
1350
+ unitId: this.id,
1351
+ name
1352
+ });
1353
+ return this;
1354
+ }
1355
+ /**
1338
1356
  * Returns the document's explicit layout flavor.
1339
1357
  *
1340
1358
  * Use this method when all three states matter. Do not infer a Traditional
package/lib/es/index.js CHANGED
@@ -348,6 +348,7 @@ const RichTextEditingMutation = {
348
348
  if (documentDataModel == null) throw new Error(`DocumentDataModel not found for unitId: ${unitId}`);
349
349
  const docSelectionManagerService = accessor.get(DocSelectionManagerService);
350
350
  const docRanges = docSelectionManagerService.getDocRanges() ?? [];
351
+ const selectionInfo = docSelectionManagerService.getSelectionInfo();
351
352
  const disabled = !!documentDataModel.getSnapshot().disabled;
352
353
  if (JSONX.isNoop(actions) || actions && actions.length === 0 || disabled) return {
353
354
  unitId,
@@ -378,11 +379,15 @@ const RichTextEditingMutation = {
378
379
  debounce,
379
380
  redoState: {
380
381
  actions,
381
- textRanges
382
+ textRanges,
383
+ options: params.options,
384
+ isEditing
382
385
  },
383
386
  undoState: {
384
387
  actions: undoActions,
385
- textRanges: prevTextRanges ?? docRanges
388
+ textRanges: prevTextRanges ?? docRanges,
389
+ options: selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.options,
390
+ isEditing: selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.isEditing
386
391
  },
387
392
  isCompositionEnd,
388
393
  isSync,
@@ -737,6 +742,53 @@ const SetDocumentDefaultParagraphStyleCommand = {
737
742
  }
738
743
  };
739
744
 
745
+ //#endregion
746
+ //#region src/commands/mutations/docs-rename.mutation.ts
747
+ const DocsRenameMutation = {
748
+ id: "doc.mutation.rename-doc",
749
+ type: CommandType.MUTATION,
750
+ handler: (accessor, params) => {
751
+ const doc = accessor.get(IUniverInstanceService).getUnit(params.unitId, UniverInstanceType.UNIVER_DOC);
752
+ if (!doc) return false;
753
+ doc.setName(params.name);
754
+ return true;
755
+ }
756
+ };
757
+
758
+ //#endregion
759
+ //#region src/commands/commands/set-document-name.command.ts
760
+ const SetDocumentNameCommand = {
761
+ id: "doc.command.set-name",
762
+ type: CommandType.COMMAND,
763
+ handler: (accessor, params) => {
764
+ if (!params) return false;
765
+ const document = accessor.get(IUniverInstanceService).getUnit(params.unitId, UniverInstanceType.UNIVER_DOC);
766
+ if (!document) return false;
767
+ const commandService = accessor.get(ICommandService);
768
+ const redoParams = {
769
+ unitId: params.unitId,
770
+ name: params.name
771
+ };
772
+ const undoParams = {
773
+ unitId: params.unitId,
774
+ name: document.getTitle() || ""
775
+ };
776
+ if (!commandService.syncExecuteCommand(DocsRenameMutation.id, redoParams)) return false;
777
+ accessor.get(IUndoRedoService).pushUndoRedo({
778
+ unitID: params.unitId,
779
+ redoMutations: [{
780
+ id: DocsRenameMutation.id,
781
+ params: redoParams
782
+ }],
783
+ undoMutations: [{
784
+ id: DocsRenameMutation.id,
785
+ params: undoParams
786
+ }]
787
+ });
788
+ return true;
789
+ }
790
+ };
791
+
740
792
  //#endregion
741
793
  //#region src/utils/sections.ts
742
794
  /** Returns document-level section breaks, excluding table-cell and modern-column sentinels. */
@@ -1146,7 +1198,7 @@ const InsertDocumentColumnBreakCommand = {
1146
1198
  rangeId: `docx-break-${generateRandomId()}`,
1147
1199
  rangeType: CustomRangeType.CUSTOM,
1148
1200
  wholeEntity: true,
1149
- properties: { docxBreakType: DocxBreakType.COLUMN }
1201
+ properties: { breakType: DocxBreakType.COLUMN }
1150
1202
  }]
1151
1203
  });
1152
1204
  return executeSectionTextX(context.commandService, context.documentDataModel, textX, InsertDocumentColumnBreakCommand.id);
@@ -1386,20 +1438,7 @@ function composeActions(actions) {
1386
1438
  //#endregion
1387
1439
  //#region package.json
1388
1440
  var name = "@univerjs/docs";
1389
- var version = "1.0.0-beta.0";
1390
-
1391
- //#endregion
1392
- //#region src/commands/mutations/docs-rename.mutation.ts
1393
- const DocsRenameMutation = {
1394
- id: "doc.mutation.rename-doc",
1395
- type: CommandType.MUTATION,
1396
- handler: (accessor, params) => {
1397
- const doc = accessor.get(IUniverInstanceService).getUnit(params.unitId, UniverInstanceType.UNIVER_DOC);
1398
- if (!doc) return false;
1399
- doc.setName(params.name);
1400
- return true;
1401
- }
1402
- };
1441
+ var version = "1.0.0-beta.1";
1403
1442
 
1404
1443
  //#endregion
1405
1444
  //#region src/config/config.ts
@@ -1602,6 +1641,8 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends Rx
1602
1641
  if (type === "history" && (trigger === RedoCommandId || trigger === UndoCommandId)) return;
1603
1642
  const stateCache = type === "history" ? this._historyStateCache : this._changeStateCache;
1604
1643
  const cb = type === "history" ? this._pushHistory.bind(this) : this._emitChangeState.bind(this);
1644
+ const pendingStates = stateCache.get(unitId);
1645
+ if ((pendingStates === null || pendingStates === void 0 ? void 0 : pendingStates.length) && pendingStates[pendingStates.length - 1].segmentId !== changeState.segmentId) cb(unitId);
1605
1646
  if (stateCache.has(unitId)) {
1606
1647
  const cacheStates = stateCache.get(unitId);
1607
1648
  cacheStates === null || cacheStates === void 0 || cacheStates.push(changeState);
@@ -1630,12 +1671,18 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends Rx
1630
1671
  const redoParams = {
1631
1672
  unitId,
1632
1673
  actions: cacheStates.reduce((acc, cur) => JSONX.compose(acc, cur.redoState.actions), null),
1633
- textRanges: lastState.redoState.textRanges
1674
+ textRanges: lastState.redoState.textRanges,
1675
+ segmentId: lastState.segmentId,
1676
+ options: lastState.redoState.options,
1677
+ isEditing: lastState.redoState.isEditing
1634
1678
  };
1635
1679
  const undoParams = {
1636
1680
  unitId,
1637
1681
  actions: cacheStates.reverse().reduce((acc, cur) => JSONX.compose(acc, cur.undoState.actions), null),
1638
- textRanges: firstState.undoState.textRanges
1682
+ textRanges: firstState.undoState.textRanges,
1683
+ segmentId: firstState.segmentId,
1684
+ options: firstState.undoState.options,
1685
+ isEditing: firstState.undoState.isEditing
1639
1686
  };
1640
1687
  undoRedoService.pushUndoRedo({
1641
1688
  unitID: unitId,
@@ -1664,12 +1711,18 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends Rx
1664
1711
  redoState: {
1665
1712
  unitId,
1666
1713
  actions: cacheStates.reduce((acc, cur) => JSONX.compose(acc, cur.redoState.actions), null),
1667
- textRanges: lastState.redoState.textRanges
1714
+ textRanges: lastState.redoState.textRanges,
1715
+ segmentId: lastState.segmentId,
1716
+ options: lastState.redoState.options,
1717
+ isEditing: lastState.redoState.isEditing
1668
1718
  },
1669
1719
  undoState: {
1670
1720
  unitId,
1671
1721
  actions: cacheStates.reverse().reduce((acc, cur) => JSONX.compose(acc, cur.undoState.actions), null),
1672
- textRanges: firstState.undoState.textRanges
1722
+ textRanges: firstState.undoState.textRanges,
1723
+ segmentId: firstState.segmentId,
1724
+ options: firstState.undoState.options,
1725
+ isEditing: firstState.undoState.isEditing
1673
1726
  },
1674
1727
  segmentId,
1675
1728
  noHistory,
@@ -1782,6 +1835,7 @@ let UniverDocsPlugin = class UniverDocsPlugin extends Plugin {
1782
1835
  UpdateTextCommand,
1783
1836
  CreateHeaderFooterCommand,
1784
1837
  SetDocumentDefaultParagraphStyleCommand,
1838
+ SetDocumentNameCommand,
1785
1839
  SetSectionHeaderFooterLinkCommand,
1786
1840
  UpdateDocumentParagraphStyleCommand,
1787
1841
  UpdateDocumentSectionCommand,
@@ -2133,4 +2187,4 @@ function normalizeTextRange(textRange) {
2133
2187
  }
2134
2188
 
2135
2189
  //#endregion
2136
- export { CreateHeaderFooterCommand, DOC_INTERCEPTOR_POINT, DOC_SELECTION_OPTION_PRESERVE_CARET, DeleteDocumentSectionBreakCommand, DeleteTextCommand, DocBlockMoveValidatorService, DocContentInsertService, DocInterceptorService, DocSelectionManagerService, DocSkeletonManagerService, DocStateChangeManagerService, DocStateEmitService, DocTextResolverService, EMBED_DOCS_CUSTOM_BLOCK_DEFAULT_COMPONENT_KEY, HeaderFooterType, IDocStateChangeInterceptorService, InsertDocumentColumnBreakCommand, InsertDocumentSectionBreakCommand, InsertTextCommand, RichTextEditingMutation, SetDocumentDefaultParagraphStyleCommand, SetSectionHeaderFooterLinkCommand, SetTextSelectionsOperation, UniverDocsPlugin, UpdateDocumentParagraphStyleCommand, UpdateDocumentSectionCommand, UpdateTextCommand, addCustomRangeBySelectionFactory, addCustomRangeFactory, buildDocTransform, consumeContentInsertRange, createDocsCustomBlockDrawing, createDocsCustomBlockInsertMutation, createDocsCustomBlockRemoveMutation, createEmbedDocsCustomBlockData, createInsertCustomBlockActions, createRemoveCustomBlockActions, createSectionColumnProperties, deleteCustomRangeFactory, docDrawingPositionToTransform, generateParagraphs, getContentInsertRange, getEffectiveSectionPageSetup, getSectionContentWidth, getTopLevelSectionBreaks, isEmbedDocsCustomBlockData, isHeaderFooterSelection, isSheetLikeDocsCustomBlockChildType, normalizeTextRange, replaceSelectionFactory, resolveDocsCustomBlockSize, shouldUseInlineTextSelectionForDocsCustomBlockDrawing, transformToDocDrawingPosition };
2190
+ export { CreateHeaderFooterCommand, DOC_INTERCEPTOR_POINT, DOC_SELECTION_OPTION_PRESERVE_CARET, DeleteDocumentSectionBreakCommand, DeleteTextCommand, DocBlockMoveValidatorService, DocContentInsertService, DocInterceptorService, DocSelectionManagerService, DocSkeletonManagerService, DocStateChangeManagerService, DocStateEmitService, DocTextResolverService, EMBED_DOCS_CUSTOM_BLOCK_DEFAULT_COMPONENT_KEY, HeaderFooterType, IDocStateChangeInterceptorService, InsertDocumentColumnBreakCommand, InsertDocumentSectionBreakCommand, InsertTextCommand, RichTextEditingMutation, SetDocumentDefaultParagraphStyleCommand, SetDocumentNameCommand, SetSectionHeaderFooterLinkCommand, SetTextSelectionsOperation, UniverDocsPlugin, UpdateDocumentParagraphStyleCommand, UpdateDocumentSectionCommand, UpdateTextCommand, addCustomRangeBySelectionFactory, addCustomRangeFactory, buildDocTransform, consumeContentInsertRange, createDocsCustomBlockDrawing, createDocsCustomBlockInsertMutation, createDocsCustomBlockRemoveMutation, createEmbedDocsCustomBlockData, createInsertCustomBlockActions, createRemoveCustomBlockActions, createSectionColumnProperties, deleteCustomRangeFactory, docDrawingPositionToTransform, generateParagraphs, getContentInsertRange, getEffectiveSectionPageSetup, getSectionContentWidth, getTopLevelSectionBreaks, isEmbedDocsCustomBlockData, isHeaderFooterSelection, isSheetLikeDocsCustomBlockChildType, normalizeTextRange, replaceSelectionFactory, resolveDocsCustomBlockSize, shouldUseInlineTextSelectionForDocsCustomBlockDrawing, transformToDocDrawingPosition };
package/lib/facade.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { BooleanNumber, ColumnSeparatorType, DashStyleType, DataStreamTreeTokenType, DocumentFlavor, ICommandService, IResourceLoaderService, IUniverInstanceService, Inject, Injector, JSONX, PageOrientType, PresetListType, RESTORE_INSERTED_PARAGRAPH_IDS, RedoCommand, SectionType, TextX, TextXActionType, Tools, UndoCommand, UniverInstanceType, UpdateDocsAttributeType, createParagraphId, createSectionId, generateRandomId, getParagraphContentStartOffset, getRichTextEditPath, getSectionHeaderFooterReferenceKey, regexp, resolveSectionHeaderFooterReference } from "@univerjs/core";
2
2
  import { FBaseInitialable, FEnum, FUniver } from "@univerjs/core/facade";
3
- import { CreateHeaderFooterCommand, DeleteDocumentSectionBreakCommand, HeaderFooterType, InsertDocumentColumnBreakCommand, InsertDocumentSectionBreakCommand, RichTextEditingMutation, SetSectionHeaderFooterLinkCommand, UpdateDocumentParagraphStyleCommand, UpdateDocumentSectionCommand, createSectionColumnProperties, generateParagraphs, getEffectiveSectionPageSetup, getSectionContentWidth, getTopLevelSectionBreaks } from "@univerjs/docs";
3
+ import { CreateHeaderFooterCommand, DeleteDocumentSectionBreakCommand, HeaderFooterType, InsertDocumentColumnBreakCommand, InsertDocumentSectionBreakCommand, RichTextEditingMutation, SetDocumentNameCommand, SetSectionHeaderFooterLinkCommand, UpdateDocumentParagraphStyleCommand, UpdateDocumentSectionCommand, createSectionColumnProperties, generateParagraphs, getEffectiveSectionPageSetup, getSectionContentWidth, getTopLevelSectionBreaks } from "@univerjs/docs";
4
4
 
5
5
  //#region src/facade/utils.ts
6
6
  function cloneParagraphStyle(paragraphStyle) {
@@ -1335,6 +1335,24 @@ let FDocument = class FDocument extends FBaseInitialable {
1335
1335
  return this._documentDataModel.getTitle() || "";
1336
1336
  }
1337
1337
  /**
1338
+ * Set the document name.
1339
+ * @param {string} name The new document name.
1340
+ * @returns {FDocument} The current document for chaining.
1341
+ *
1342
+ * @example
1343
+ * ```ts
1344
+ * const document = univerAPI.getActiveDocument();
1345
+ * document?.setName('Quarterly Report');
1346
+ * ```
1347
+ */
1348
+ setName(name) {
1349
+ this._commandService.syncExecuteCommand(SetDocumentNameCommand.id, {
1350
+ unitId: this.id,
1351
+ name
1352
+ });
1353
+ return this;
1354
+ }
1355
+ /**
1338
1356
  * Returns the document's explicit layout flavor.
1339
1357
  *
1340
1358
  * Use this method when all three states matter. Do not infer a Traditional
package/lib/index.js CHANGED
@@ -348,6 +348,7 @@ const RichTextEditingMutation = {
348
348
  if (documentDataModel == null) throw new Error(`DocumentDataModel not found for unitId: ${unitId}`);
349
349
  const docSelectionManagerService = accessor.get(DocSelectionManagerService);
350
350
  const docRanges = docSelectionManagerService.getDocRanges() ?? [];
351
+ const selectionInfo = docSelectionManagerService.getSelectionInfo();
351
352
  const disabled = !!documentDataModel.getSnapshot().disabled;
352
353
  if (JSONX.isNoop(actions) || actions && actions.length === 0 || disabled) return {
353
354
  unitId,
@@ -378,11 +379,15 @@ const RichTextEditingMutation = {
378
379
  debounce,
379
380
  redoState: {
380
381
  actions,
381
- textRanges
382
+ textRanges,
383
+ options: params.options,
384
+ isEditing
382
385
  },
383
386
  undoState: {
384
387
  actions: undoActions,
385
- textRanges: prevTextRanges ?? docRanges
388
+ textRanges: prevTextRanges ?? docRanges,
389
+ options: selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.options,
390
+ isEditing: selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.isEditing
386
391
  },
387
392
  isCompositionEnd,
388
393
  isSync,
@@ -737,6 +742,53 @@ const SetDocumentDefaultParagraphStyleCommand = {
737
742
  }
738
743
  };
739
744
 
745
+ //#endregion
746
+ //#region src/commands/mutations/docs-rename.mutation.ts
747
+ const DocsRenameMutation = {
748
+ id: "doc.mutation.rename-doc",
749
+ type: CommandType.MUTATION,
750
+ handler: (accessor, params) => {
751
+ const doc = accessor.get(IUniverInstanceService).getUnit(params.unitId, UniverInstanceType.UNIVER_DOC);
752
+ if (!doc) return false;
753
+ doc.setName(params.name);
754
+ return true;
755
+ }
756
+ };
757
+
758
+ //#endregion
759
+ //#region src/commands/commands/set-document-name.command.ts
760
+ const SetDocumentNameCommand = {
761
+ id: "doc.command.set-name",
762
+ type: CommandType.COMMAND,
763
+ handler: (accessor, params) => {
764
+ if (!params) return false;
765
+ const document = accessor.get(IUniverInstanceService).getUnit(params.unitId, UniverInstanceType.UNIVER_DOC);
766
+ if (!document) return false;
767
+ const commandService = accessor.get(ICommandService);
768
+ const redoParams = {
769
+ unitId: params.unitId,
770
+ name: params.name
771
+ };
772
+ const undoParams = {
773
+ unitId: params.unitId,
774
+ name: document.getTitle() || ""
775
+ };
776
+ if (!commandService.syncExecuteCommand(DocsRenameMutation.id, redoParams)) return false;
777
+ accessor.get(IUndoRedoService).pushUndoRedo({
778
+ unitID: params.unitId,
779
+ redoMutations: [{
780
+ id: DocsRenameMutation.id,
781
+ params: redoParams
782
+ }],
783
+ undoMutations: [{
784
+ id: DocsRenameMutation.id,
785
+ params: undoParams
786
+ }]
787
+ });
788
+ return true;
789
+ }
790
+ };
791
+
740
792
  //#endregion
741
793
  //#region src/utils/sections.ts
742
794
  /** Returns document-level section breaks, excluding table-cell and modern-column sentinels. */
@@ -1146,7 +1198,7 @@ const InsertDocumentColumnBreakCommand = {
1146
1198
  rangeId: `docx-break-${generateRandomId()}`,
1147
1199
  rangeType: CustomRangeType.CUSTOM,
1148
1200
  wholeEntity: true,
1149
- properties: { docxBreakType: DocxBreakType.COLUMN }
1201
+ properties: { breakType: DocxBreakType.COLUMN }
1150
1202
  }]
1151
1203
  });
1152
1204
  return executeSectionTextX(context.commandService, context.documentDataModel, textX, InsertDocumentColumnBreakCommand.id);
@@ -1386,20 +1438,7 @@ function composeActions(actions) {
1386
1438
  //#endregion
1387
1439
  //#region package.json
1388
1440
  var name = "@univerjs/docs";
1389
- var version = "1.0.0-beta.0";
1390
-
1391
- //#endregion
1392
- //#region src/commands/mutations/docs-rename.mutation.ts
1393
- const DocsRenameMutation = {
1394
- id: "doc.mutation.rename-doc",
1395
- type: CommandType.MUTATION,
1396
- handler: (accessor, params) => {
1397
- const doc = accessor.get(IUniverInstanceService).getUnit(params.unitId, UniverInstanceType.UNIVER_DOC);
1398
- if (!doc) return false;
1399
- doc.setName(params.name);
1400
- return true;
1401
- }
1402
- };
1441
+ var version = "1.0.0-beta.1";
1403
1442
 
1404
1443
  //#endregion
1405
1444
  //#region src/config/config.ts
@@ -1602,6 +1641,8 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends Rx
1602
1641
  if (type === "history" && (trigger === RedoCommandId || trigger === UndoCommandId)) return;
1603
1642
  const stateCache = type === "history" ? this._historyStateCache : this._changeStateCache;
1604
1643
  const cb = type === "history" ? this._pushHistory.bind(this) : this._emitChangeState.bind(this);
1644
+ const pendingStates = stateCache.get(unitId);
1645
+ if ((pendingStates === null || pendingStates === void 0 ? void 0 : pendingStates.length) && pendingStates[pendingStates.length - 1].segmentId !== changeState.segmentId) cb(unitId);
1605
1646
  if (stateCache.has(unitId)) {
1606
1647
  const cacheStates = stateCache.get(unitId);
1607
1648
  cacheStates === null || cacheStates === void 0 || cacheStates.push(changeState);
@@ -1630,12 +1671,18 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends Rx
1630
1671
  const redoParams = {
1631
1672
  unitId,
1632
1673
  actions: cacheStates.reduce((acc, cur) => JSONX.compose(acc, cur.redoState.actions), null),
1633
- textRanges: lastState.redoState.textRanges
1674
+ textRanges: lastState.redoState.textRanges,
1675
+ segmentId: lastState.segmentId,
1676
+ options: lastState.redoState.options,
1677
+ isEditing: lastState.redoState.isEditing
1634
1678
  };
1635
1679
  const undoParams = {
1636
1680
  unitId,
1637
1681
  actions: cacheStates.reverse().reduce((acc, cur) => JSONX.compose(acc, cur.undoState.actions), null),
1638
- textRanges: firstState.undoState.textRanges
1682
+ textRanges: firstState.undoState.textRanges,
1683
+ segmentId: firstState.segmentId,
1684
+ options: firstState.undoState.options,
1685
+ isEditing: firstState.undoState.isEditing
1639
1686
  };
1640
1687
  undoRedoService.pushUndoRedo({
1641
1688
  unitID: unitId,
@@ -1664,12 +1711,18 @@ let DocStateChangeManagerService = class DocStateChangeManagerService extends Rx
1664
1711
  redoState: {
1665
1712
  unitId,
1666
1713
  actions: cacheStates.reduce((acc, cur) => JSONX.compose(acc, cur.redoState.actions), null),
1667
- textRanges: lastState.redoState.textRanges
1714
+ textRanges: lastState.redoState.textRanges,
1715
+ segmentId: lastState.segmentId,
1716
+ options: lastState.redoState.options,
1717
+ isEditing: lastState.redoState.isEditing
1668
1718
  },
1669
1719
  undoState: {
1670
1720
  unitId,
1671
1721
  actions: cacheStates.reverse().reduce((acc, cur) => JSONX.compose(acc, cur.undoState.actions), null),
1672
- textRanges: firstState.undoState.textRanges
1722
+ textRanges: firstState.undoState.textRanges,
1723
+ segmentId: firstState.segmentId,
1724
+ options: firstState.undoState.options,
1725
+ isEditing: firstState.undoState.isEditing
1673
1726
  },
1674
1727
  segmentId,
1675
1728
  noHistory,
@@ -1782,6 +1835,7 @@ let UniverDocsPlugin = class UniverDocsPlugin extends Plugin {
1782
1835
  UpdateTextCommand,
1783
1836
  CreateHeaderFooterCommand,
1784
1837
  SetDocumentDefaultParagraphStyleCommand,
1838
+ SetDocumentNameCommand,
1785
1839
  SetSectionHeaderFooterLinkCommand,
1786
1840
  UpdateDocumentParagraphStyleCommand,
1787
1841
  UpdateDocumentSectionCommand,
@@ -2133,4 +2187,4 @@ function normalizeTextRange(textRange) {
2133
2187
  }
2134
2188
 
2135
2189
  //#endregion
2136
- export { CreateHeaderFooterCommand, DOC_INTERCEPTOR_POINT, DOC_SELECTION_OPTION_PRESERVE_CARET, DeleteDocumentSectionBreakCommand, DeleteTextCommand, DocBlockMoveValidatorService, DocContentInsertService, DocInterceptorService, DocSelectionManagerService, DocSkeletonManagerService, DocStateChangeManagerService, DocStateEmitService, DocTextResolverService, EMBED_DOCS_CUSTOM_BLOCK_DEFAULT_COMPONENT_KEY, HeaderFooterType, IDocStateChangeInterceptorService, InsertDocumentColumnBreakCommand, InsertDocumentSectionBreakCommand, InsertTextCommand, RichTextEditingMutation, SetDocumentDefaultParagraphStyleCommand, SetSectionHeaderFooterLinkCommand, SetTextSelectionsOperation, UniverDocsPlugin, UpdateDocumentParagraphStyleCommand, UpdateDocumentSectionCommand, UpdateTextCommand, addCustomRangeBySelectionFactory, addCustomRangeFactory, buildDocTransform, consumeContentInsertRange, createDocsCustomBlockDrawing, createDocsCustomBlockInsertMutation, createDocsCustomBlockRemoveMutation, createEmbedDocsCustomBlockData, createInsertCustomBlockActions, createRemoveCustomBlockActions, createSectionColumnProperties, deleteCustomRangeFactory, docDrawingPositionToTransform, generateParagraphs, getContentInsertRange, getEffectiveSectionPageSetup, getSectionContentWidth, getTopLevelSectionBreaks, isEmbedDocsCustomBlockData, isHeaderFooterSelection, isSheetLikeDocsCustomBlockChildType, normalizeTextRange, replaceSelectionFactory, resolveDocsCustomBlockSize, shouldUseInlineTextSelectionForDocsCustomBlockDrawing, transformToDocDrawingPosition };
2190
+ export { CreateHeaderFooterCommand, DOC_INTERCEPTOR_POINT, DOC_SELECTION_OPTION_PRESERVE_CARET, DeleteDocumentSectionBreakCommand, DeleteTextCommand, DocBlockMoveValidatorService, DocContentInsertService, DocInterceptorService, DocSelectionManagerService, DocSkeletonManagerService, DocStateChangeManagerService, DocStateEmitService, DocTextResolverService, EMBED_DOCS_CUSTOM_BLOCK_DEFAULT_COMPONENT_KEY, HeaderFooterType, IDocStateChangeInterceptorService, InsertDocumentColumnBreakCommand, InsertDocumentSectionBreakCommand, InsertTextCommand, RichTextEditingMutation, SetDocumentDefaultParagraphStyleCommand, SetDocumentNameCommand, SetSectionHeaderFooterLinkCommand, SetTextSelectionsOperation, UniverDocsPlugin, UpdateDocumentParagraphStyleCommand, UpdateDocumentSectionCommand, UpdateTextCommand, addCustomRangeBySelectionFactory, addCustomRangeFactory, buildDocTransform, consumeContentInsertRange, createDocsCustomBlockDrawing, createDocsCustomBlockInsertMutation, createDocsCustomBlockRemoveMutation, createEmbedDocsCustomBlockData, createInsertCustomBlockActions, createRemoveCustomBlockActions, createSectionColumnProperties, deleteCustomRangeFactory, docDrawingPositionToTransform, generateParagraphs, getContentInsertRange, getEffectiveSectionPageSetup, getSectionContentWidth, getTopLevelSectionBreaks, isEmbedDocsCustomBlockData, isHeaderFooterSelection, isSheetLikeDocsCustomBlockChildType, normalizeTextRange, replaceSelectionFactory, resolveDocsCustomBlockSize, shouldUseInlineTextSelectionForDocsCustomBlockDrawing, transformToDocDrawingPosition };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Co., Ltd.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { ICommand } from '@univerjs/core';
17
+ export interface ISetDocumentNameCommandParams {
18
+ unitId: string;
19
+ name: string;
20
+ }
21
+ export declare const SetDocumentNameCommand: ICommand<ISetDocumentNameCommandParams>;
@@ -13,9 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import type { ICommand } from '@univerjs/core';
16
+ import type { IMutation } from '@univerjs/core';
17
17
  export interface IDocsRenameMutationParams {
18
18
  name: string;
19
19
  unitId: string;
20
20
  }
21
- export declare const DocsRenameMutation: ICommand;
21
+ export declare const DocsRenameMutation: IMutation<IDocsRenameMutationParams>;
@@ -132,6 +132,18 @@ export declare class FDocument extends FBaseInitialable {
132
132
  * ```
133
133
  */
134
134
  getName(): string;
135
+ /**
136
+ * Set the document name.
137
+ * @param {string} name The new document name.
138
+ * @returns {FDocument} The current document for chaining.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * const document = univerAPI.getActiveDocument();
143
+ * document?.setName('Quarterly Report');
144
+ * ```
145
+ */
146
+ setName(name: string): this;
135
147
  /**
136
148
  * Returns the document's explicit layout flavor.
137
149
  *
@@ -19,6 +19,8 @@ export { CreateHeaderFooterCommand, HeaderFooterType } from './commands/commands
19
19
  export type { HeaderFooterCreateMode, ICreateHeaderFooterCommandParams, IHeaderFooterProps, } from './commands/commands/create-header-footer.command';
20
20
  export { SetDocumentDefaultParagraphStyleCommand } from './commands/commands/set-document-default-paragraph-style.command';
21
21
  export type { IDocumentDefaultParagraphStylePatch, ISetDocumentDefaultParagraphStyleCommandParams, } from './commands/commands/set-document-default-paragraph-style.command';
22
+ export { SetDocumentNameCommand } from './commands/commands/set-document-name.command';
23
+ export type { ISetDocumentNameCommandParams } from './commands/commands/set-document-name.command';
22
24
  export { SetSectionHeaderFooterLinkCommand } from './commands/commands/set-section-header-footer-link.command';
23
25
  export type { ISetSectionHeaderFooterLinkCommandParams } from './commands/commands/set-section-header-footer-link.command';
24
26
  export { UpdateDocumentParagraphStyleCommand } from './commands/commands/update-document-paragraph-style.command';
@@ -19,6 +19,10 @@ import { RxDisposable } from '@univerjs/core';
19
19
  interface IDocChangeState {
20
20
  actions: JSONXActions;
21
21
  textRanges: Nullable<ITextRangeWithStyle[]>;
22
+ options?: {
23
+ [key: string]: boolean;
24
+ };
25
+ isEditing?: boolean;
22
26
  }
23
27
  export interface IDocStateChangeParams {
24
28
  commandId: string;
package/lib/umd/facade.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/core/facade"),require("@univerjs/docs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/core/facade`,`@univerjs/docs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsFacade={},e.UniverCore,e.UniverCoreFacade,e.UniverDocs))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function i(e){return e==null?e:JSON.parse(JSON.stringify(e))}function a(e){return e.replace(/\r\n/g,`\r`).replace(/\n/g,`\r`)}function o(e,t){let n=a(e);return t&&n.length>1&&n.startsWith(`\r`)?1:0}function s(e,n={}){let r=a(e).slice(o(e,n.removeLeadingParagraphBreak)),s={dataStream:r,customDecorations:[],customRanges:[],textRuns:[]},c=[],l=new Set;for(let e=0;e<r.length;e++)r[e]===`\r`&&c.push({startIndex:e,paragraphId:(0,t.createParagraphId)(l),...n.paragraphStyle==null?{}:{paragraphStyle:i(n.paragraphStyle)}});return c.length>0&&(s.paragraphs=c),s}function c(e,n,i,a){let{startOffset:o,endOffset:s,segmentId:c}=e,l=new t.TextX;o>0&&l.push({t:t.TextXActionType.RETAIN,len:o}),s>o&&l.push({t:t.TextXActionType.DELETE,len:s-o}),n.dataStream.length>0&&l.push({t:t.TextXActionType.INSERT,body:n,len:n.dataStream.length});let u=t.JSONX.getInstance().editOp(l.serialize(),(0,t.getRichTextEditPath)(i,c)),d=a.get(t.ICommandService).syncExecuteCommand(r.RichTextEditingMutation.id,{unitId:i.getUnitId(),segmentId:c,actions:u,textRanges:[],isEditing:!1});return!!(d!=null&&d.actions&&d.actions.length>0)}function l(e,n,i,a,o){var s,c;let{startOffset:l,endOffset:u,segmentId:d}=e,f=o.get(t.ICommandService);if((s=n.textRuns)!=null&&s.length&&((c=a.getSelfOrHeaderFooterModel(d))==null||(c=c.getBody())==null?void 0:c.textRuns)==null){let e=t.JSONX.getInstance().replaceOp([...(0,t.getRichTextEditPath)(a,d),`textRuns`],void 0,[]);f.syncExecuteCommand(r.RichTextEditingMutation.id,{unitId:a.getUnitId(),segmentId:d,actions:e,textRanges:[],isEditing:!1})}let p=new t.TextX;l>0&&p.push({t:t.TextXActionType.RETAIN,len:l}),p.push({t:t.TextXActionType.RETAIN,body:n,coverType:i,len:u-l});let m=t.JSONX.getInstance().editOp(p.serialize(),(0,t.getRichTextEditPath)(a,d)),h=f.syncExecuteCommand(r.RichTextEditingMutation.id,{unitId:a.getUnitId(),segmentId:d,actions:m,textRanges:[],isEditing:!1});return!!(h!=null&&h.actions&&h.actions.length>0)}function u(e){return Array.from(e).map(e=>e===t.DataStreamTreeTokenType.PARAGRAPH?`
2
- `:e).filter(e=>e!==t.DataStreamTreeTokenType.BLOCK_START&&e!==t.DataStreamTreeTokenType.BLOCK_END&&e!==t.DataStreamTreeTokenType.SECTION_BREAK).join(``).replace(/\n$/,``)}var d=class extends n.FBaseInitialable{constructor(e,t,n,r,i){super(i),this._document=e,this._startOffset=t,this._endOffset=n,this._segmentId=r,this._injector=i,this._validateRange()}getRange(){return{startOffset:this._startOffset,endOffset:this._endOffset,segmentId:this._segmentId}}getText(){return this._document.getBody(this._segmentId).dataStream.slice(this._startOffset,this._endOffset)}getExplicitTextStyleRuns(){let{textRuns:e=[]}=this._document.getBody(this._segmentId);return e.filter(e=>e.st<this._endOffset&&e.ed>this._startOffset).map(e=>({startOffset:Math.max(e.st,this._startOffset),endOffset:Math.min(e.ed,this._endOffset),textStyle:t.Tools.deepClone(e.ts??{})}))}getCommonExplicitTextStyle(){if(this._startOffset===this._endOffset)return{};let[e,...n]=this._getStyleSegments(),r=t.Tools.deepClone(e.textStyle);for(let e of Object.keys(r))n.some(t=>!f(t.textStyle[e],r[e]))&&delete r[e];return r}describe(){let e=this.getExplicitTextStyleRuns(),t=this.getCommonExplicitTextStyle();return{...this.getRange(),text:this.getText(),length:this._endOffset-this._startOffset,explicitTextStyleRuns:e,commonExplicitTextStyle:t}}setTextStyle(e){return this._startOffset!==this._endOffset&&l(this.getRange(),{dataStream:``,textRuns:[{st:0,ed:this._endOffset-this._startOffset,ts:t.Tools.deepClone(e)}]},t.UpdateDocsAttributeType.COVER,this._document.getDocumentDataModel(),this._injector)}setText(e){return c(this.getRange(),s(e),this._document.getDocumentDataModel(),this._injector)}_validateRange(){let e=this._document.getBody(this._segmentId).dataStream.length;if(!Number.isInteger(this._startOffset)||!Number.isInteger(this._endOffset)||this._startOffset<0||this._endOffset<this._startOffset||this._endOffset>e)throw RangeError(`Invalid document text range [${this._startOffset}, ${this._endOffset}) for body length ${e}.`)}_getStyleSegments(){let e=this.getExplicitTextStyleRuns(),t=[],n=this._startOffset;for(let r of e)n<r.startOffset&&t.push({startOffset:n,endOffset:r.startOffset,textStyle:{}}),t.push(r),n=r.endOffset;return n<this._endOffset&&t.push({startOffset:n,endOffset:this._endOffset,textStyle:{}}),t}};function f(e,t){return JSON.stringify(e)===JSON.stringify(t)}function p(e,t){return function(n,r){t(n,r,e)}}function m(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let h=class extends n.FBaseInitialable{constructor(e,t,n=``,r,i){super(r),this._document=e,this._paragraphId=t,this._segmentId=n,this._injector=r,this._commandService=i}getId(){return this._paragraphId}getSegmentId(){return this._segmentId}getInfo(){let e=this._document.getBody(this._segmentId),{paragraphs:n=[]}=e,r=n.map((e,t)=>({paragraph:e,paragraphIndex:t})).filter(({paragraph:e})=>e.paragraphId===this._paragraphId);if(r.length===0)throw Error(`Document paragraph with id ${this._paragraphId} not found`);if(r.length>1)throw Error(`Multiple document paragraphs with id ${this._paragraphId} found`);let{paragraph:i,paragraphIndex:a}=r[0];return{paragraph:i,paragraphIndex:a,startOffset:(0,t.getParagraphContentStartOffset)(e,i),endOffset:i.startIndex}}getRange(){let{startOffset:e,endOffset:t}=this.getInfo();return{startOffset:e,endOffset:t,segmentId:this._segmentId}}getTextRange(){let{startOffset:e,endOffset:t}=this.getInfo();return this._injector.createInstance(d,this._document,e,t,this._segmentId,this._injector)}findText(e,t={}){let n=t.occurrence??0;if(!Number.isInteger(n)||n<0)throw RangeError(`Text occurrence must be a non-negative integer.`);return this.findAllText(e,t)[n]??null}findAllText(e,n={}){if(e.length===0)throw TypeError(`Text to find must not be empty.`);let r=n.matchCase??!0,i=this.getText(),a=t.regexp.createLiteralRegExp(e,r?`gu`:`giu`),{startOffset:o}=this.getInfo(),s=[];for(let e of i.matchAll(a)){let t=o+e.index;s.push(this._injector.createInstance(d,this._document,t,t+e[0].length,this._segmentId,this._injector))}return s}getText(){let{dataStream:e}=this._document.getBody(this._segmentId),{startOffset:t,endOffset:n}=this.getInfo();return e.slice(t,n)}setText(e){let{startOffset:t,endOffset:n}=this.getInfo();return c({startOffset:t,endOffset:n,segmentId:this._segmentId},s(e),this._document.getDocumentDataModel(),this._injector)}appendText(e){let{endOffset:t}=this.getInfo();return this._document.insertText(t,e,this._segmentId)}setStyle(e){let{startOffset:t,endOffset:n}=this.getInfo();return this._commandService.syncExecuteCommand(r.UpdateDocumentParagraphStyleCommand.id,{unitId:this._document.getId(),segmentId:this._segmentId,paragraphId:this._paragraphId,startOffset:t,endOffset:n,style:e})}isListItem(){let{paragraph:e}=this.getInfo();return!!e.bullet}isTask(){var e;let{paragraph:n}=this.getInfo(),r=(e=n.bullet)==null?void 0:e.listType;return r===t.PresetListType.CHECK_LIST||r===t.PresetListType.CHECK_LIST_CHECKED}setTaskChecked(e){if(!this.isTask())return!1;let{paragraph:n,endOffset:r}=this.getInfo(),i=n.bullet,a={dataStream:``,paragraphs:[{...n,startIndex:0,bullet:{...i,listType:e?t.PresetListType.CHECK_LIST_CHECKED:t.PresetListType.CHECK_LIST}}]};return this._preserveExplicitParagraphIds(a),l({startOffset:r,endOffset:r+1,segmentId:this._segmentId},a,t.UpdateDocsAttributeType.REPLACE,this._document.getDocumentDataModel(),this._injector)}remove(){let{startOffset:e,endOffset:t}=this.getInfo();return this._document.deleteRange({startOffset:e,endOffset:t+1,segmentId:this._segmentId})}_preserveExplicitParagraphIds(e){e[t.RESTORE_INSERTED_PARAGRAPH_IDS]=!0}};h=m([p(4,t.ICommandService)],h);function g(e){return typeof e!=`object`||!e?!1:typeof e.getId==`function`&&typeof e.getSegmentId==`function`&&typeof e.getInfo==`function`&&typeof e.getRange==`function`}function _(e){let{pageNumberStart:n,pageSize:r,pageOrient:i,marginTop:a,marginBottom:o,marginLeft:s,marginRight:c}=e;if(n!=null&&(!Number.isInteger(n)||n<1))throw RangeError(`Section page number start must be a positive integer.`);if(r&&[r.width,r.height].some(e=>e!=null&&(!Number.isFinite(e)||e<=0)))throw RangeError(`Section page size must be finite and positive.`);if(i!=null&&!Object.values(t.PageOrientType).includes(i))throw RangeError(`Invalid section page orientation.`);if([a,o,s,c].some(e=>e!=null&&(!Number.isFinite(e)||e<0)))throw RangeError(`Section page margins must be finite and non-negative.`)}var v=class extends Error{constructor(){super(`Section column APIs are supported only in traditional documents. Use ColumnGroup APIs for modern documents, or resolve an unspecified document flavor first.`),this.name=`DocsSectionUnsupportedDocumentFlavorError`}};let y=class{constructor(e,t,n){this._document=e,this._sectionId=t,this._commandService=n}getId(){return this._sectionId}getIndex(){return this._resolve().index}getConfig(){return this._getConfigSnapshot()}getRange(){return this._getRange(this._resolve().index)}getColumns(){return t.Tools.deepClone(this._getConfigSnapshot().columnProperties??[])}describe(){let{index:e}=this._resolve(),n=this._getConfigSnapshot(),r=n.columnProperties??[],i={defaultHeader:this._describeHeaderFooterReference(`header`,`default`),defaultFooter:this._describeHeaderFooterReference(`footer`,`default`),firstHeader:this._describeHeaderFooterReference(`header`,`first`),firstFooter:this._describeHeaderFooterReference(`footer`,`first`),evenHeader:this._describeHeaderFooterReference(`header`,`even`),evenFooter:this._describeHeaderFooterReference(`footer`,`even`)};return{sectionId:this._sectionId,index:e,range:this._getRange(e),columnCount:r.length||1,columns:t.Tools.deepClone(r),columnSeparatorType:n.columnSeparatorType??t.ColumnSeparatorType.NONE,sectionType:n.sectionType??t.SectionType.SECTION_TYPE_UNSPECIFIED,headerFooter:i,config:n}}setColumns(e,n={}){if(this._assertTraditionalDocument(),!Number.isInteger(e)||e<1)throw RangeError(`Section column count must be a positive integer.`);if(n.widths&&n.widths.length!==e)throw RangeError(`Section column widths must match the column count.`);if(n.gap!=null&&(!Number.isFinite(n.gap)||n.gap<0))throw RangeError(`Section column gap must be finite and non-negative.`);let i=Math.max(0,n.gap??18),a=this._getConfigSnapshot(),o=(0,r.createSectionColumnProperties)(this._document.getDocumentDataModel().getSnapshot().documentStyle,a,e,i,n.widths),s=typeof n.separator==`boolean`?n.separator?t.ColumnSeparatorType.BETWEEN_EACH_COLUMN:t.ColumnSeparatorType.NONE:n.separator??t.ColumnSeparatorType.NONE;if(!Object.values(t.ColumnSeparatorType).includes(s))throw RangeError(`Invalid section column separator type.`);return this._update({columnProperties:o,columnSeparatorType:s})}setColumnProperties(e,n=t.ColumnSeparatorType.NONE){if(this._assertTraditionalDocument(),!Object.values(t.ColumnSeparatorType).includes(n))throw RangeError(`Invalid section column separator type.`);if(e.some(({width:e,paddingEnd:t})=>!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0))throw RangeError(`Section column widths and padding must be finite and non-negative.`);let i=(0,r.getSectionContentWidth)(this._document.getDocumentDataModel().getSnapshot().documentStyle,this._getConfigSnapshot());if(e.reduce((e,{width:t,paddingEnd:n})=>e+t+n,0)>i)throw RangeError(`Section columns exceed the available page content width.`);return this._update({columnProperties:t.Tools.deepClone(e),columnSeparatorType:n})}setSectionType(e){if(this._assertTraditionalDocument(),!Object.values(t.SectionType).includes(e))throw RangeError(`Invalid section type.`);return this._update({sectionType:e})}getPageSetup(){let{pageNumberStart:e,pageSize:n,pageOrient:r,marginTop:i,marginBottom:a,marginLeft:o,marginRight:s}=this._getConfigSnapshot();return t.Tools.deepClone({pageNumberStart:e,pageSize:n,pageOrient:r,marginTop:i,marginBottom:a,marginLeft:o,marginRight:s})}getEffectivePageSetup(){this._assertTraditionalDocument();let e=this._document.getDocumentDataModel().getSnapshot().documentStyle;return t.Tools.deepClone((0,r.getEffectiveSectionPageSetup)(e,this._getConfigSnapshot()))}setPageSetup(e){this._assertTraditionalDocument(),_(e);let n=t.Tools.deepClone(e);t.Tools.removeNull(n);let i=this._document.getDocumentDataModel().getSnapshot().documentStyle;return(0,r.getEffectiveSectionPageSetup)(i,{...this._getConfigSnapshot(),...n}),this._update(n)}ensureHeader(e=`default`){return this._ensureHeaderFooter(`header`,e)}ensureFooter(e=`default`){return this._ensureHeaderFooter(`footer`,e)}getHeaderId(e=`default`){return this._getHeaderFooterReference(`header`,e).segmentId??null}getFooterId(e=`default`){return this._getHeaderFooterReference(`footer`,e).segmentId??null}isHeaderLinkedToPrevious(e=`default`){return this._getHeaderFooterReference(`header`,e).linkedToPrevious}isFooterLinkedToPrevious(e=`default`){return this._getHeaderFooterReference(`footer`,e).linkedToPrevious}setHeaderLinkedToPrevious(e,t=`default`){return this._setHeaderFooterLinkedToPrevious(`header`,t,e)}setFooterLinkedToPrevious(e,t=`default`){return this._setHeaderFooterLinkedToPrevious(`footer`,t,e)}setHeaderFooterOptions(e){return this._assertTraditionalDocument(),this._update(e)}remove(){return this._assertTraditionalDocument(),this._commandService.syncExecuteCommand(r.DeleteDocumentSectionBreakCommand.id,{unitId:this._document.getId(),sectionId:this._sectionId})}_update(e){let{sectionId:t,startIndex:n,...i}=e;return this._commandService.syncExecuteCommand(r.UpdateDocumentSectionCommand.id,{unitId:this._document.getId(),updates:[{sectionId:this._sectionId,config:i}]})}_ensureHeaderFooter(e,n){this._assertTraditionalDocument();let{index:i}=this._resolve(),a=this._getConfigSnapshot()[(0,t.getSectionHeaderFooterReferenceKey)(e,n)];if(typeof a==`string`&&a)return a;if(i>0){let i=(0,t.generateRandomId)(6);if(!this._commandService.syncExecuteCommand(r.SetSectionHeaderFooterLinkCommand.id,{unitId:this._document.getId(),sectionId:this._sectionId,kind:e,variant:n,linkedToPrevious:!1,segmentId:i}))throw Error(`Failed to create section ${e}.`);return i}let o={default:e===`header`?r.HeaderFooterType.DEFAULT_HEADER:r.HeaderFooterType.DEFAULT_FOOTER,first:e===`header`?r.HeaderFooterType.FIRST_PAGE_HEADER:r.HeaderFooterType.FIRST_PAGE_FOOTER,even:e===`header`?r.HeaderFooterType.EVEN_PAGE_HEADER:r.HeaderFooterType.EVEN_PAGE_FOOTER},s=(0,t.generateRandomId)(6);if(!this._commandService.syncExecuteCommand(r.CreateHeaderFooterCommand.id,{unitId:this._document.getId(),segmentId:s,createType:o[n],sectionId:this._sectionId}))throw Error(`Failed to create section ${e}.`);return s}_getHeaderFooterReference(e,n){let{index:i}=this._resolve();return(0,t.resolveSectionHeaderFooterReference)(this._document.getDocumentDataModel().getSnapshot().documentStyle,(0,r.getTopLevelSectionBreaks)(this._document.getBody()),i,(0,t.getSectionHeaderFooterReferenceKey)(e,n))}_describeHeaderFooterReference(e,t){let n=this._getHeaderFooterReference(e,t);return{segmentId:n.segmentId??null,linkedToPrevious:n.linkedToPrevious}}_setHeaderFooterLinkedToPrevious(e,n,i){return this._assertTraditionalDocument(),this._commandService.syncExecuteCommand(r.SetSectionHeaderFooterLinkCommand.id,{unitId:this._document.getId(),sectionId:this._sectionId,kind:e,variant:n,linkedToPrevious:i,...i?{}:{segmentId:(0,t.generateRandomId)(6)}})}_assertTraditionalDocument(){if(this._document.getDocumentDataModel().getSnapshot().documentStyle.documentFlavor!==t.DocumentFlavor.TRADITIONAL)throw new v}_getConfigSnapshot(){return t.Tools.deepClone(this._resolve().sectionBreak)}_getRange(e){let t=(0,r.getTopLevelSectionBreaks)(this._document.getBody());return{startOffset:e===0?0:t[e-1].startIndex+1,endOffset:t[e].startIndex,segmentId:``}}_resolve(){this._assertTraditionalDocument();let e=(0,r.getTopLevelSectionBreaks)(this._document.getBody()),t=e.findIndex(e=>e.sectionId===this._sectionId);if(t<0)throw Error(`Document section with id ${this._sectionId} not found.`);return{index:t,sectionBreak:e[t]}}};y=m([p(2,t.ICommandService)],y);function b(e){"@babel/helpers - typeof";return b=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},b(e)}function x(e,t){if(b(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(b(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function S(e){var t=x(e,`string`);return b(t)==`symbol`?t:t+``}function C(e,t,n){return(t=S(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let w=class extends n.FBaseInitialable{constructor(e,t,n,r,i){super(t),this._documentDataModel=e,this._injector=t,this._univerInstanceService=n,this._resourceLoaderService=r,this._commandService=i,C(this,`id`,void 0),this.id=this._documentDataModel.getUnitId()}getDocumentDataModel(e=``){let t=this._documentDataModel.getSelfOrHeaderFooterModel(e);if(!t)throw Error(e===``?`Document data model is not found.`:`Document data model is not found in the segment: ${e}`);return t}getCustomBlockLayout(){var e;return{blocks:(((e=this._documentDataModel.getBody())==null?void 0:e.customBlocks)??[]).map(({blockId:e,startIndex:t},n)=>({blockId:e,startIndex:t,index:n}))}}getBody(e=``){var t;let n=(t=this._documentDataModel.getSelfOrHeaderFooterModel(e))==null?void 0:t.getBody();if(!n)throw Error(e===``?`Body is not found in the document.`:`Body is not found in the segment: ${e}`);return n}dispose(){super.dispose()}getId(){return this.id}getName(){return this._documentDataModel.getTitle()||``}getDocumentFlavor(){return this._resolveDocumentFlavor()}isTraditional(){return this._resolveDocumentFlavor()===t.DocumentFlavor.TRADITIONAL}isModern(){return this._resolveDocumentFlavor()===t.DocumentFlavor.MODERN}_resolveDocumentFlavor(){return this._documentDataModel.getSnapshot().documentStyle.documentFlavor??t.DocumentFlavor.UNSPECIFIED}save(){return this._resourceLoaderService.saveUnit(this._documentDataModel.getUnitId())}undo(){return this._univerInstanceService.focusUnit(this.id),this._commandService.syncExecuteCommand(t.UndoCommand.id)}redo(){return this._univerInstanceService.focusUnit(this.id),this._commandService.syncExecuteCommand(t.RedoCommand.id)}ensurePageHeader(e=0){return this._ensureHeaderFooter(`header`,e)}ensurePageFooter(e=0){return this._ensureHeaderFooter(`footer`,e)}insertText(e,t,n=``){return c({startOffset:e,endOffset:e,segmentId:n},s(t),this._documentDataModel,this._injector)}getHeaderFooterOptions(){let e=this._documentDataModel.getSnapshot().documentStyle;return{marginHeader:e.marginHeader,marginFooter:e.marginFooter,useFirstPageHeaderFooter:e.useFirstPageHeaderFooter,evenAndOddHeaders:e.evenAndOddHeaders}}setHeaderFooterOptions(e){if(this.isModern())throw Error(`The document is a modern document, header/footer is not supported.`);return this._commandService.syncExecuteCommand(r.CreateHeaderFooterCommand.id,{unitId:this.getId(),headerFooterProps:e})}getTextRange(e,t,n=``){return this._injector.createInstance(d,this,e,t,n,this._injector)}getSections(){return this._documentDataModel.getSnapshot().documentStyle.documentFlavor===t.DocumentFlavor.TRADITIONAL?(0,r.getTopLevelSectionBreaks)(this.getBody()).map(e=>this._injector.createInstance(y,this,e.sectionId)):[]}getSection(e){return this.getSections()[e]??null}getSectionAt(e){return this.getSections().find(t=>{let n=t.getRange();return e>=n.startOffset&&e<n.endOffset})??null}insertSectionBreak(e,n={}){if(this._documentDataModel.getSnapshot().documentStyle.documentFlavor!==t.DocumentFlavor.TRADITIONAL)throw new v;let{nextSectionType:i,...a}=n,o=(0,t.createSectionId)(new Set((this.getBody().sectionBreaks??[]).map(e=>e.sectionId)));return this._commandService.syncExecuteCommand(r.InsertDocumentSectionBreakCommand.id,{unitId:this.getId(),offset:e,sectionId:o,config:a,nextSectionType:i})?this._injector.createInstance(y,this,o):null}insertColumnBreak(e){if(this._documentDataModel.getSnapshot().documentStyle.documentFlavor!==t.DocumentFlavor.TRADITIONAL)throw new v;return this._commandService.syncExecuteCommand(r.InsertDocumentColumnBreakCommand.id,{unitId:this.getId(),offset:e})}insertHorizontalRule(e,n={padding:5,color:{rgb:`#CDD0D8`},width:1,dashStyle:t.DashStyleType.SOLID},i=``){var a;let o=this.getBody(i),s=(0,r.generateParagraphs)(t.DataStreamTreeTokenType.PARAGRAPH,void 0,n,(a=o.paragraphs)==null?void 0:a.map(e=>e.paragraphId)),l=s[0].paragraphId;return c({startOffset:e,endOffset:e,segmentId:i},{dataStream:t.DataStreamTreeTokenType.PARAGRAPH,paragraphs:s},this._documentDataModel,this._injector)?this.getParagraph(l,i):null}getParagraphs(e=``){let{paragraphs:t=[]}=this.getBody(e);return t.map(t=>this._createFDocumentParagraph(t.paragraphId,e))}getParagraph(e,t=``){let{paragraphs:n=[]}=this.getBody(t);return n.find(t=>t.paragraphId===e)?this._createFDocumentParagraph(e,t):null}findParagraphByText(e,t=``){return this.findParagraphs({text:e,segmentId:t})[0]||null}findParagraphs(e){let{text:t,paragraphId:n,segmentId:r=``}=typeof e==`string`?{text:e}:e;return this.getParagraphs(r).filter(e=>!(n&&e.getId()!==n||t&&!e.getText().includes(t)))}insertParagraph(e,t=``,n=``){let r=this._getParagraphInsertOffset(e,n);if(!c({startOffset:r,endOffset:r,segmentId:n},s(`${t}\r`),this._documentDataModel,this._injector))throw Error(`Failed to insert paragraph.`);let{paragraphs:i=[]}=this.getBody(n),a=i[e];if(!a)throw Error(`Failed to insert paragraph.`);return this._createFDocumentParagraph(a.paragraphId,n)}appendParagraph(e=``,t=``){let{paragraphs:n=[]}=this.getBody(t);return this.insertParagraph(n.length,e,t)}deleteRange(e){let t=this._normalizeDeleteRange(e);return t.startOffset>=t.endOffset?!1:c(t,{dataStream:``},this._documentDataModel,this._injector)}_createFDocumentParagraph(e,t=``){return this._injector.createInstance(h,this,e,t,this._injector)}_normalizeDeleteRange(e){let t=this.getBody(e.segmentId),n=t.dataStream.endsWith(`\r
2
+ `:e).filter(e=>e!==t.DataStreamTreeTokenType.BLOCK_START&&e!==t.DataStreamTreeTokenType.BLOCK_END&&e!==t.DataStreamTreeTokenType.SECTION_BREAK).join(``).replace(/\n$/,``)}var d=class extends n.FBaseInitialable{constructor(e,t,n,r,i){super(i),this._document=e,this._startOffset=t,this._endOffset=n,this._segmentId=r,this._injector=i,this._validateRange()}getRange(){return{startOffset:this._startOffset,endOffset:this._endOffset,segmentId:this._segmentId}}getText(){return this._document.getBody(this._segmentId).dataStream.slice(this._startOffset,this._endOffset)}getExplicitTextStyleRuns(){let{textRuns:e=[]}=this._document.getBody(this._segmentId);return e.filter(e=>e.st<this._endOffset&&e.ed>this._startOffset).map(e=>({startOffset:Math.max(e.st,this._startOffset),endOffset:Math.min(e.ed,this._endOffset),textStyle:t.Tools.deepClone(e.ts??{})}))}getCommonExplicitTextStyle(){if(this._startOffset===this._endOffset)return{};let[e,...n]=this._getStyleSegments(),r=t.Tools.deepClone(e.textStyle);for(let e of Object.keys(r))n.some(t=>!f(t.textStyle[e],r[e]))&&delete r[e];return r}describe(){let e=this.getExplicitTextStyleRuns(),t=this.getCommonExplicitTextStyle();return{...this.getRange(),text:this.getText(),length:this._endOffset-this._startOffset,explicitTextStyleRuns:e,commonExplicitTextStyle:t}}setTextStyle(e){return this._startOffset!==this._endOffset&&l(this.getRange(),{dataStream:``,textRuns:[{st:0,ed:this._endOffset-this._startOffset,ts:t.Tools.deepClone(e)}]},t.UpdateDocsAttributeType.COVER,this._document.getDocumentDataModel(),this._injector)}setText(e){return c(this.getRange(),s(e),this._document.getDocumentDataModel(),this._injector)}_validateRange(){let e=this._document.getBody(this._segmentId).dataStream.length;if(!Number.isInteger(this._startOffset)||!Number.isInteger(this._endOffset)||this._startOffset<0||this._endOffset<this._startOffset||this._endOffset>e)throw RangeError(`Invalid document text range [${this._startOffset}, ${this._endOffset}) for body length ${e}.`)}_getStyleSegments(){let e=this.getExplicitTextStyleRuns(),t=[],n=this._startOffset;for(let r of e)n<r.startOffset&&t.push({startOffset:n,endOffset:r.startOffset,textStyle:{}}),t.push(r),n=r.endOffset;return n<this._endOffset&&t.push({startOffset:n,endOffset:this._endOffset,textStyle:{}}),t}};function f(e,t){return JSON.stringify(e)===JSON.stringify(t)}function p(e,t){return function(n,r){t(n,r,e)}}function m(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let h=class extends n.FBaseInitialable{constructor(e,t,n=``,r,i){super(r),this._document=e,this._paragraphId=t,this._segmentId=n,this._injector=r,this._commandService=i}getId(){return this._paragraphId}getSegmentId(){return this._segmentId}getInfo(){let e=this._document.getBody(this._segmentId),{paragraphs:n=[]}=e,r=n.map((e,t)=>({paragraph:e,paragraphIndex:t})).filter(({paragraph:e})=>e.paragraphId===this._paragraphId);if(r.length===0)throw Error(`Document paragraph with id ${this._paragraphId} not found`);if(r.length>1)throw Error(`Multiple document paragraphs with id ${this._paragraphId} found`);let{paragraph:i,paragraphIndex:a}=r[0];return{paragraph:i,paragraphIndex:a,startOffset:(0,t.getParagraphContentStartOffset)(e,i),endOffset:i.startIndex}}getRange(){let{startOffset:e,endOffset:t}=this.getInfo();return{startOffset:e,endOffset:t,segmentId:this._segmentId}}getTextRange(){let{startOffset:e,endOffset:t}=this.getInfo();return this._injector.createInstance(d,this._document,e,t,this._segmentId,this._injector)}findText(e,t={}){let n=t.occurrence??0;if(!Number.isInteger(n)||n<0)throw RangeError(`Text occurrence must be a non-negative integer.`);return this.findAllText(e,t)[n]??null}findAllText(e,n={}){if(e.length===0)throw TypeError(`Text to find must not be empty.`);let r=n.matchCase??!0,i=this.getText(),a=t.regexp.createLiteralRegExp(e,r?`gu`:`giu`),{startOffset:o}=this.getInfo(),s=[];for(let e of i.matchAll(a)){let t=o+e.index;s.push(this._injector.createInstance(d,this._document,t,t+e[0].length,this._segmentId,this._injector))}return s}getText(){let{dataStream:e}=this._document.getBody(this._segmentId),{startOffset:t,endOffset:n}=this.getInfo();return e.slice(t,n)}setText(e){let{startOffset:t,endOffset:n}=this.getInfo();return c({startOffset:t,endOffset:n,segmentId:this._segmentId},s(e),this._document.getDocumentDataModel(),this._injector)}appendText(e){let{endOffset:t}=this.getInfo();return this._document.insertText(t,e,this._segmentId)}setStyle(e){let{startOffset:t,endOffset:n}=this.getInfo();return this._commandService.syncExecuteCommand(r.UpdateDocumentParagraphStyleCommand.id,{unitId:this._document.getId(),segmentId:this._segmentId,paragraphId:this._paragraphId,startOffset:t,endOffset:n,style:e})}isListItem(){let{paragraph:e}=this.getInfo();return!!e.bullet}isTask(){var e;let{paragraph:n}=this.getInfo(),r=(e=n.bullet)==null?void 0:e.listType;return r===t.PresetListType.CHECK_LIST||r===t.PresetListType.CHECK_LIST_CHECKED}setTaskChecked(e){if(!this.isTask())return!1;let{paragraph:n,endOffset:r}=this.getInfo(),i=n.bullet,a={dataStream:``,paragraphs:[{...n,startIndex:0,bullet:{...i,listType:e?t.PresetListType.CHECK_LIST_CHECKED:t.PresetListType.CHECK_LIST}}]};return this._preserveExplicitParagraphIds(a),l({startOffset:r,endOffset:r+1,segmentId:this._segmentId},a,t.UpdateDocsAttributeType.REPLACE,this._document.getDocumentDataModel(),this._injector)}remove(){let{startOffset:e,endOffset:t}=this.getInfo();return this._document.deleteRange({startOffset:e,endOffset:t+1,segmentId:this._segmentId})}_preserveExplicitParagraphIds(e){e[t.RESTORE_INSERTED_PARAGRAPH_IDS]=!0}};h=m([p(4,t.ICommandService)],h);function g(e){return typeof e!=`object`||!e?!1:typeof e.getId==`function`&&typeof e.getSegmentId==`function`&&typeof e.getInfo==`function`&&typeof e.getRange==`function`}function _(e){let{pageNumberStart:n,pageSize:r,pageOrient:i,marginTop:a,marginBottom:o,marginLeft:s,marginRight:c}=e;if(n!=null&&(!Number.isInteger(n)||n<1))throw RangeError(`Section page number start must be a positive integer.`);if(r&&[r.width,r.height].some(e=>e!=null&&(!Number.isFinite(e)||e<=0)))throw RangeError(`Section page size must be finite and positive.`);if(i!=null&&!Object.values(t.PageOrientType).includes(i))throw RangeError(`Invalid section page orientation.`);if([a,o,s,c].some(e=>e!=null&&(!Number.isFinite(e)||e<0)))throw RangeError(`Section page margins must be finite and non-negative.`)}var v=class extends Error{constructor(){super(`Section column APIs are supported only in traditional documents. Use ColumnGroup APIs for modern documents, or resolve an unspecified document flavor first.`),this.name=`DocsSectionUnsupportedDocumentFlavorError`}};let y=class{constructor(e,t,n){this._document=e,this._sectionId=t,this._commandService=n}getId(){return this._sectionId}getIndex(){return this._resolve().index}getConfig(){return this._getConfigSnapshot()}getRange(){return this._getRange(this._resolve().index)}getColumns(){return t.Tools.deepClone(this._getConfigSnapshot().columnProperties??[])}describe(){let{index:e}=this._resolve(),n=this._getConfigSnapshot(),r=n.columnProperties??[],i={defaultHeader:this._describeHeaderFooterReference(`header`,`default`),defaultFooter:this._describeHeaderFooterReference(`footer`,`default`),firstHeader:this._describeHeaderFooterReference(`header`,`first`),firstFooter:this._describeHeaderFooterReference(`footer`,`first`),evenHeader:this._describeHeaderFooterReference(`header`,`even`),evenFooter:this._describeHeaderFooterReference(`footer`,`even`)};return{sectionId:this._sectionId,index:e,range:this._getRange(e),columnCount:r.length||1,columns:t.Tools.deepClone(r),columnSeparatorType:n.columnSeparatorType??t.ColumnSeparatorType.NONE,sectionType:n.sectionType??t.SectionType.SECTION_TYPE_UNSPECIFIED,headerFooter:i,config:n}}setColumns(e,n={}){if(this._assertTraditionalDocument(),!Number.isInteger(e)||e<1)throw RangeError(`Section column count must be a positive integer.`);if(n.widths&&n.widths.length!==e)throw RangeError(`Section column widths must match the column count.`);if(n.gap!=null&&(!Number.isFinite(n.gap)||n.gap<0))throw RangeError(`Section column gap must be finite and non-negative.`);let i=Math.max(0,n.gap??18),a=this._getConfigSnapshot(),o=(0,r.createSectionColumnProperties)(this._document.getDocumentDataModel().getSnapshot().documentStyle,a,e,i,n.widths),s=typeof n.separator==`boolean`?n.separator?t.ColumnSeparatorType.BETWEEN_EACH_COLUMN:t.ColumnSeparatorType.NONE:n.separator??t.ColumnSeparatorType.NONE;if(!Object.values(t.ColumnSeparatorType).includes(s))throw RangeError(`Invalid section column separator type.`);return this._update({columnProperties:o,columnSeparatorType:s})}setColumnProperties(e,n=t.ColumnSeparatorType.NONE){if(this._assertTraditionalDocument(),!Object.values(t.ColumnSeparatorType).includes(n))throw RangeError(`Invalid section column separator type.`);if(e.some(({width:e,paddingEnd:t})=>!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0))throw RangeError(`Section column widths and padding must be finite and non-negative.`);let i=(0,r.getSectionContentWidth)(this._document.getDocumentDataModel().getSnapshot().documentStyle,this._getConfigSnapshot());if(e.reduce((e,{width:t,paddingEnd:n})=>e+t+n,0)>i)throw RangeError(`Section columns exceed the available page content width.`);return this._update({columnProperties:t.Tools.deepClone(e),columnSeparatorType:n})}setSectionType(e){if(this._assertTraditionalDocument(),!Object.values(t.SectionType).includes(e))throw RangeError(`Invalid section type.`);return this._update({sectionType:e})}getPageSetup(){let{pageNumberStart:e,pageSize:n,pageOrient:r,marginTop:i,marginBottom:a,marginLeft:o,marginRight:s}=this._getConfigSnapshot();return t.Tools.deepClone({pageNumberStart:e,pageSize:n,pageOrient:r,marginTop:i,marginBottom:a,marginLeft:o,marginRight:s})}getEffectivePageSetup(){this._assertTraditionalDocument();let e=this._document.getDocumentDataModel().getSnapshot().documentStyle;return t.Tools.deepClone((0,r.getEffectiveSectionPageSetup)(e,this._getConfigSnapshot()))}setPageSetup(e){this._assertTraditionalDocument(),_(e);let n=t.Tools.deepClone(e);t.Tools.removeNull(n);let i=this._document.getDocumentDataModel().getSnapshot().documentStyle;return(0,r.getEffectiveSectionPageSetup)(i,{...this._getConfigSnapshot(),...n}),this._update(n)}ensureHeader(e=`default`){return this._ensureHeaderFooter(`header`,e)}ensureFooter(e=`default`){return this._ensureHeaderFooter(`footer`,e)}getHeaderId(e=`default`){return this._getHeaderFooterReference(`header`,e).segmentId??null}getFooterId(e=`default`){return this._getHeaderFooterReference(`footer`,e).segmentId??null}isHeaderLinkedToPrevious(e=`default`){return this._getHeaderFooterReference(`header`,e).linkedToPrevious}isFooterLinkedToPrevious(e=`default`){return this._getHeaderFooterReference(`footer`,e).linkedToPrevious}setHeaderLinkedToPrevious(e,t=`default`){return this._setHeaderFooterLinkedToPrevious(`header`,t,e)}setFooterLinkedToPrevious(e,t=`default`){return this._setHeaderFooterLinkedToPrevious(`footer`,t,e)}setHeaderFooterOptions(e){return this._assertTraditionalDocument(),this._update(e)}remove(){return this._assertTraditionalDocument(),this._commandService.syncExecuteCommand(r.DeleteDocumentSectionBreakCommand.id,{unitId:this._document.getId(),sectionId:this._sectionId})}_update(e){let{sectionId:t,startIndex:n,...i}=e;return this._commandService.syncExecuteCommand(r.UpdateDocumentSectionCommand.id,{unitId:this._document.getId(),updates:[{sectionId:this._sectionId,config:i}]})}_ensureHeaderFooter(e,n){this._assertTraditionalDocument();let{index:i}=this._resolve(),a=this._getConfigSnapshot()[(0,t.getSectionHeaderFooterReferenceKey)(e,n)];if(typeof a==`string`&&a)return a;if(i>0){let i=(0,t.generateRandomId)(6);if(!this._commandService.syncExecuteCommand(r.SetSectionHeaderFooterLinkCommand.id,{unitId:this._document.getId(),sectionId:this._sectionId,kind:e,variant:n,linkedToPrevious:!1,segmentId:i}))throw Error(`Failed to create section ${e}.`);return i}let o={default:e===`header`?r.HeaderFooterType.DEFAULT_HEADER:r.HeaderFooterType.DEFAULT_FOOTER,first:e===`header`?r.HeaderFooterType.FIRST_PAGE_HEADER:r.HeaderFooterType.FIRST_PAGE_FOOTER,even:e===`header`?r.HeaderFooterType.EVEN_PAGE_HEADER:r.HeaderFooterType.EVEN_PAGE_FOOTER},s=(0,t.generateRandomId)(6);if(!this._commandService.syncExecuteCommand(r.CreateHeaderFooterCommand.id,{unitId:this._document.getId(),segmentId:s,createType:o[n],sectionId:this._sectionId}))throw Error(`Failed to create section ${e}.`);return s}_getHeaderFooterReference(e,n){let{index:i}=this._resolve();return(0,t.resolveSectionHeaderFooterReference)(this._document.getDocumentDataModel().getSnapshot().documentStyle,(0,r.getTopLevelSectionBreaks)(this._document.getBody()),i,(0,t.getSectionHeaderFooterReferenceKey)(e,n))}_describeHeaderFooterReference(e,t){let n=this._getHeaderFooterReference(e,t);return{segmentId:n.segmentId??null,linkedToPrevious:n.linkedToPrevious}}_setHeaderFooterLinkedToPrevious(e,n,i){return this._assertTraditionalDocument(),this._commandService.syncExecuteCommand(r.SetSectionHeaderFooterLinkCommand.id,{unitId:this._document.getId(),sectionId:this._sectionId,kind:e,variant:n,linkedToPrevious:i,...i?{}:{segmentId:(0,t.generateRandomId)(6)}})}_assertTraditionalDocument(){if(this._document.getDocumentDataModel().getSnapshot().documentStyle.documentFlavor!==t.DocumentFlavor.TRADITIONAL)throw new v}_getConfigSnapshot(){return t.Tools.deepClone(this._resolve().sectionBreak)}_getRange(e){let t=(0,r.getTopLevelSectionBreaks)(this._document.getBody());return{startOffset:e===0?0:t[e-1].startIndex+1,endOffset:t[e].startIndex,segmentId:``}}_resolve(){this._assertTraditionalDocument();let e=(0,r.getTopLevelSectionBreaks)(this._document.getBody()),t=e.findIndex(e=>e.sectionId===this._sectionId);if(t<0)throw Error(`Document section with id ${this._sectionId} not found.`);return{index:t,sectionBreak:e[t]}}};y=m([p(2,t.ICommandService)],y);function b(e){"@babel/helpers - typeof";return b=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},b(e)}function x(e,t){if(b(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(b(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function S(e){var t=x(e,`string`);return b(t)==`symbol`?t:t+``}function C(e,t,n){return(t=S(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let w=class extends n.FBaseInitialable{constructor(e,t,n,r,i){super(t),this._documentDataModel=e,this._injector=t,this._univerInstanceService=n,this._resourceLoaderService=r,this._commandService=i,C(this,`id`,void 0),this.id=this._documentDataModel.getUnitId()}getDocumentDataModel(e=``){let t=this._documentDataModel.getSelfOrHeaderFooterModel(e);if(!t)throw Error(e===``?`Document data model is not found.`:`Document data model is not found in the segment: ${e}`);return t}getCustomBlockLayout(){var e;return{blocks:(((e=this._documentDataModel.getBody())==null?void 0:e.customBlocks)??[]).map(({blockId:e,startIndex:t},n)=>({blockId:e,startIndex:t,index:n}))}}getBody(e=``){var t;let n=(t=this._documentDataModel.getSelfOrHeaderFooterModel(e))==null?void 0:t.getBody();if(!n)throw Error(e===``?`Body is not found in the document.`:`Body is not found in the segment: ${e}`);return n}dispose(){super.dispose()}getId(){return this.id}getName(){return this._documentDataModel.getTitle()||``}setName(e){return this._commandService.syncExecuteCommand(r.SetDocumentNameCommand.id,{unitId:this.id,name:e}),this}getDocumentFlavor(){return this._resolveDocumentFlavor()}isTraditional(){return this._resolveDocumentFlavor()===t.DocumentFlavor.TRADITIONAL}isModern(){return this._resolveDocumentFlavor()===t.DocumentFlavor.MODERN}_resolveDocumentFlavor(){return this._documentDataModel.getSnapshot().documentStyle.documentFlavor??t.DocumentFlavor.UNSPECIFIED}save(){return this._resourceLoaderService.saveUnit(this._documentDataModel.getUnitId())}undo(){return this._univerInstanceService.focusUnit(this.id),this._commandService.syncExecuteCommand(t.UndoCommand.id)}redo(){return this._univerInstanceService.focusUnit(this.id),this._commandService.syncExecuteCommand(t.RedoCommand.id)}ensurePageHeader(e=0){return this._ensureHeaderFooter(`header`,e)}ensurePageFooter(e=0){return this._ensureHeaderFooter(`footer`,e)}insertText(e,t,n=``){return c({startOffset:e,endOffset:e,segmentId:n},s(t),this._documentDataModel,this._injector)}getHeaderFooterOptions(){let e=this._documentDataModel.getSnapshot().documentStyle;return{marginHeader:e.marginHeader,marginFooter:e.marginFooter,useFirstPageHeaderFooter:e.useFirstPageHeaderFooter,evenAndOddHeaders:e.evenAndOddHeaders}}setHeaderFooterOptions(e){if(this.isModern())throw Error(`The document is a modern document, header/footer is not supported.`);return this._commandService.syncExecuteCommand(r.CreateHeaderFooterCommand.id,{unitId:this.getId(),headerFooterProps:e})}getTextRange(e,t,n=``){return this._injector.createInstance(d,this,e,t,n,this._injector)}getSections(){return this._documentDataModel.getSnapshot().documentStyle.documentFlavor===t.DocumentFlavor.TRADITIONAL?(0,r.getTopLevelSectionBreaks)(this.getBody()).map(e=>this._injector.createInstance(y,this,e.sectionId)):[]}getSection(e){return this.getSections()[e]??null}getSectionAt(e){return this.getSections().find(t=>{let n=t.getRange();return e>=n.startOffset&&e<n.endOffset})??null}insertSectionBreak(e,n={}){if(this._documentDataModel.getSnapshot().documentStyle.documentFlavor!==t.DocumentFlavor.TRADITIONAL)throw new v;let{nextSectionType:i,...a}=n,o=(0,t.createSectionId)(new Set((this.getBody().sectionBreaks??[]).map(e=>e.sectionId)));return this._commandService.syncExecuteCommand(r.InsertDocumentSectionBreakCommand.id,{unitId:this.getId(),offset:e,sectionId:o,config:a,nextSectionType:i})?this._injector.createInstance(y,this,o):null}insertColumnBreak(e){if(this._documentDataModel.getSnapshot().documentStyle.documentFlavor!==t.DocumentFlavor.TRADITIONAL)throw new v;return this._commandService.syncExecuteCommand(r.InsertDocumentColumnBreakCommand.id,{unitId:this.getId(),offset:e})}insertHorizontalRule(e,n={padding:5,color:{rgb:`#CDD0D8`},width:1,dashStyle:t.DashStyleType.SOLID},i=``){var a;let o=this.getBody(i),s=(0,r.generateParagraphs)(t.DataStreamTreeTokenType.PARAGRAPH,void 0,n,(a=o.paragraphs)==null?void 0:a.map(e=>e.paragraphId)),l=s[0].paragraphId;return c({startOffset:e,endOffset:e,segmentId:i},{dataStream:t.DataStreamTreeTokenType.PARAGRAPH,paragraphs:s},this._documentDataModel,this._injector)?this.getParagraph(l,i):null}getParagraphs(e=``){let{paragraphs:t=[]}=this.getBody(e);return t.map(t=>this._createFDocumentParagraph(t.paragraphId,e))}getParagraph(e,t=``){let{paragraphs:n=[]}=this.getBody(t);return n.find(t=>t.paragraphId===e)?this._createFDocumentParagraph(e,t):null}findParagraphByText(e,t=``){return this.findParagraphs({text:e,segmentId:t})[0]||null}findParagraphs(e){let{text:t,paragraphId:n,segmentId:r=``}=typeof e==`string`?{text:e}:e;return this.getParagraphs(r).filter(e=>!(n&&e.getId()!==n||t&&!e.getText().includes(t)))}insertParagraph(e,t=``,n=``){let r=this._getParagraphInsertOffset(e,n);if(!c({startOffset:r,endOffset:r,segmentId:n},s(`${t}\r`),this._documentDataModel,this._injector))throw Error(`Failed to insert paragraph.`);let{paragraphs:i=[]}=this.getBody(n),a=i[e];if(!a)throw Error(`Failed to insert paragraph.`);return this._createFDocumentParagraph(a.paragraphId,n)}appendParagraph(e=``,t=``){let{paragraphs:n=[]}=this.getBody(t);return this.insertParagraph(n.length,e,t)}deleteRange(e){let t=this._normalizeDeleteRange(e);return t.startOffset>=t.endOffset?!1:c(t,{dataStream:``},this._documentDataModel,this._injector)}_createFDocumentParagraph(e,t=``){return this._injector.createInstance(h,this,e,t,this._injector)}_normalizeDeleteRange(e){let t=this.getBody(e.segmentId),n=t.dataStream.endsWith(`\r
3
3
  `)?Math.max(0,t.dataStream.length-2):t.dataStream.length,r=Math.min(Math.max(e.endOffset,0),n);return{...e,startOffset:Math.min(Math.max(e.startOffset,0),r),endOffset:r}}_getParagraphInsertOffset(e,n=``){if(e<=0)return 0;let r=this.getBody(n),{dataStream:i,paragraphs:a=[]}=r;return a.length===0?Math.max(0,i.length-1):e>=a.length?a[a.length-1].startIndex+1:(0,t.getParagraphContentStartOffset)(r,a[e])}_ensureHeaderFooter(e,n){if(this.isModern())throw Error(`The document is a modern document, header/footer is not supported.`);let{createType:i,segmentId:a}=this._getHeaderFooterCreateInfo(e,n);if(a)return a;let o=(0,t.generateRandomId)(6);if(!this._commandService.syncExecuteCommand(r.CreateHeaderFooterCommand.id,{unitId:this.getId(),segmentId:o,createType:i}))throw Error(`Failed to create page ${e}.`);return o}_getHeaderFooterCreateInfo(e,n){let{documentStyle:i}=this._documentDataModel.getSnapshot(),a=n===0,o=(n+1)%2==0;return a&&i.useFirstPageHeaderFooter===t.BooleanNumber.TRUE?e===`header`?{createType:r.HeaderFooterType.FIRST_PAGE_HEADER,segmentId:i.firstPageHeaderId??``}:{createType:r.HeaderFooterType.FIRST_PAGE_FOOTER,segmentId:i.firstPageFooterId??``}:o&&i.evenAndOddHeaders===t.BooleanNumber.TRUE?e===`header`?{createType:r.HeaderFooterType.EVEN_PAGE_HEADER,segmentId:i.evenPageHeaderId??``}:{createType:r.HeaderFooterType.EVEN_PAGE_FOOTER,segmentId:i.evenPageFooterId??``}:e===`header`?{createType:r.HeaderFooterType.DEFAULT_HEADER,segmentId:i.defaultHeaderId??``}:{createType:r.HeaderFooterType.DEFAULT_FOOTER,segmentId:i.defaultFooterId??``}}};w=m([p(1,(0,t.Inject)(t.Injector)),p(2,t.IUniverInstanceService),p(3,(0,t.Inject)(t.IResourceLoaderService)),p(4,t.ICommandService)],w);var T=class extends n.FUniver{createDocument(e){let n=this._injector.get(t.IUniverInstanceService).createUnit(t.UniverInstanceType.UNIVER_DOC,e);return this._injector.createInstance(w,n)}getActiveDocument(){let e=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC);return e?this._injector.createInstance(w,e):null}getDocument(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);return n?this._injector.createInstance(w,n):null}};n.FUniver.extend(T);var E=class extends n.FEnum{get DocumentFlavor(){return t.DocumentFlavor}get SectionType(){return t.SectionType}get ColumnSeparatorType(){return t.ColumnSeparatorType}};n.FEnum.extend(E),e.DocsSectionUnsupportedDocumentFlavorError=v,e.FDocsEnumMixin=E,Object.defineProperty(e,"FDocument",{enumerable:!0,get:function(){return w}}),Object.defineProperty(e,"FDocumentParagraph",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"FDocumentSection",{enumerable:!0,get:function(){return y}}),e.FDocumentTextRange=d,e.isParagraphFacade=g,e.stripBlockTokens=u});
package/lib/umd/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/engine-render"),require("rxjs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/engine-render`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocs={},e.UniverCore,e.UniverEngineRender,e.rxjs))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i={id:`doc.operation.set-selections`,type:t.CommandType.OPERATION,handler:()=>!0};function a(e){"@babel/helpers - typeof";return a=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},a(e)}function o(e,t){if(a(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(a(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function s(e){var t=o(e,`string`);return a(t)==`symbol`?t:t+``}function c(e,t,n){return(t=s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let d=class extends t.RxDisposable{constructor(e,t){super(),this._commandService=e,this._univerInstanceService=t,c(this,`_currentSelection`,null),c(this,`_textSelectionInfo`,new Map),c(this,`_textSelection$`,new r.Subject),c(this,`textSelection$`,this._textSelection$.asObservable()),c(this,`_refreshSelection$`,new r.BehaviorSubject(null)),c(this,`refreshSelection$`,this._refreshSelection$.asObservable()),this._listenCurrentUnit()}_listenCurrentUnit(){this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_DOC).pipe((0,r.takeUntil)(this.dispose$)).subscribe(e=>{if(e==null)return;let t=e.getUnitId();this._setCurrentSelectionNotRefresh({unitId:t,subUnitId:t})})}__getCurrentSelection(){return this._currentSelection}getSelectionInfo(e=this._currentSelection){return this._getTextRanges(e)}refreshSelection(e=this._currentSelection){e!=null&&this._refresh(e)}__TEST_ONLY_setCurrentSelection(e){this._currentSelection=e,this._refresh(e)}getTextRanges(e=this._currentSelection){var t;return(t=this._getTextRanges(e))==null?void 0:t.textRanges}getRectRanges(e=this._currentSelection){var t;return(t=this._getTextRanges(e))==null?void 0:t.rectRanges}getDocRanges(e=this._currentSelection){let t=this.getTextRanges(e)??[],n=this.getRectRanges(e)??[];return[...t,...n].filter(e=>e.startOffset!=null&&e.endOffset!=null).sort((e,t)=>e.startOffset>t.startOffset?1:e.startOffset<t.startOffset?-1:0)}getActiveTextRange(){let e=this._getTextRanges(this._currentSelection);if(e==null)return;let{textRanges:t}=e;return t.find(e=>e.isActive)}__TEST_ONLY_add(e,t=!0){this._currentSelection!=null&&this._addByParam({...this._currentSelection,textRanges:e,rectRanges:[],segmentId:``,segmentPage:-1,isEditing:t,style:n.NORMAL_TEXT_SELECTION_PLUGIN_STYLE})}replaceDocRanges(e,t=this._currentSelection,n=!0,r){if(t==null)return;let{unitId:i,subUnitId:a}=t;this._refreshSelection$.next({unitId:i,subUnitId:a,docRanges:e,isEditing:n,options:r})}__replaceTextRangesWithNoRefresh(e,t){if(this._currentSelection==null)return;let n={...e,...t};this._replaceByParam(n),this._textSelection$.next(n);let{unitId:r,subUnitId:a,segmentId:o,style:s,textRanges:c,rectRanges:l,isEditing:u}=n,d=[...c,...l].filter(e=>e.startOffset!=null&&e.endOffset!=null).sort((e,t)=>e.startOffset>t.startOffset?1:e.startOffset<t.startOffset?-1:0);this._commandService.executeCommand(i.id,{unitId:r,subUnitId:a,segmentId:o,style:s,isEditing:u,ranges:d})}dispose(){this._textSelection$.complete(),this._refreshSelection$.complete()}_setCurrentSelectionNotRefresh(e){this._currentSelection=e}_getTextRanges(e){var t;if(e==null)return;let{unitId:n,subUnitId:r=``}=e;return(t=this._textSelectionInfo.get(n))==null?void 0:t.get(r)}_refresh(e){let t=this._getTextRanges(e);if(t==null)return;let{textRanges:n,rectRanges:r,options:i}=t,a=[...n,...r],{unitId:o,subUnitId:s}=e;this._refreshSelection$.next({unitId:o,subUnitId:s,docRanges:a,isEditing:!1,options:i})}_replaceByParam(e){let{unitId:t,subUnitId:n,...r}=e;this._textSelectionInfo.has(t)||this._textSelectionInfo.set(t,new Map),this._textSelectionInfo.get(t).set(n,{...r})}_addByParam(e){let{unitId:t,subUnitId:n,...r}=e;this._textSelectionInfo.has(t)||this._textSelectionInfo.set(t,new Map);let i=this._textSelectionInfo.get(t);i.has(n)?i.get(n).textRanges.push(...e.textRanges):i.set(n,{...r})}};d=u([l(0,t.ICommandService),l(1,t.IUniverInstanceService)],d);let f=class extends t.RxDisposable{constructor(e,n,i){super(),this._context=e,this._localeService=n,this._univerInstanceService=i,c(this,`_skeleton`,void 0),c(this,`_docViewModel`,void 0),c(this,`_currentSkeleton$`,new r.BehaviorSubject(null)),c(this,`currentSkeleton$`,this._currentSkeleton$.asObservable()),c(this,`_currentSkeletonBefore$`,new r.BehaviorSubject(null)),c(this,`currentSkeletonBefore$`,this._currentSkeletonBefore$.asObservable()),c(this,`_currentViewModel$`,new r.BehaviorSubject(null)),c(this,`currentViewModel$`,this._currentViewModel$.asObservable()),this._init(),this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_DOC).pipe((0,r.takeUntil)(this.dispose$)).subscribe(e=>{e&&e.getUnitId()===this._context.unitId&&this._update(e)})}dispose(){super.dispose(),this._currentSkeletonBefore$.complete(),this._currentSkeleton$.complete()}getSkeleton(){return this._skeleton}getViewModel(){return this._docViewModel}recalculate(){let e=this._skeleton;return e.calculate(),this._currentSkeletonBefore$.next(e),this._currentSkeleton$.next(e),e}_init(){let e=this._context.unit;this._update(e)}_update(e){let n=this._context.unitId;e.getBody()!=null&&(this._docViewModel&&(0,t.isInternalEditorID)(n)?(this._docViewModel.reset(e),this._context.unit=e):this._docViewModel||=this._buildDocViewModel(e),this._skeleton||=this._buildSkeleton(this._docViewModel),this.recalculate(),this._currentViewModel$.next(this._docViewModel))}_buildSkeleton(e){return n.DocumentSkeleton.create(e,this._localeService)}_buildDocViewModel(e){return new n.DocumentViewModel(e)}};f=u([l(1,(0,t.Inject)(t.LocaleService)),l(2,t.IUniverInstanceService)],f);var p=class extends t.RxDisposable{constructor(){super(),c(this,`_docStateChangeParams$`,new r.BehaviorSubject(null)),c(this,`docStateChangeParams$`,this._docStateChangeParams$.asObservable())}emitStateChangeInfo(e){this._docStateChangeParams$.next(e)}dispose(){super.dispose(),this._docStateChangeParams$.complete()}};let m=`doc.mutation.rich-text-editing`;function h(e,t){if(!t)return`body`;let{headers:n,footers:r}=e.getSnapshot();return n!=null&&n[t]?`header`:r!=null&&r[t]?`footer`:`body`}function g(e,n){let r=e.getSelfOrHeaderFooterModel(n),i=r==null?void 0:r.getBody();if(!i)return;let a=h(e,n),o=(0,t.validateDocBodyStructure)(i,{segmentType:a,segmentId:n||void 0});if(!o.length)return;let s=o.map(e=>`${e.code}${e.index==null?``:`@${e.index}`}`).join(`, `),c=n?`${a} ${n}`:a;throw Error(`[DocStructure] ${c}: ${s}`)}let _={id:m,type:t.CommandType.MUTATION,handler:(e,r,i)=>{var a;let{unitId:o,segmentId:s=``,actions:c,textRanges:l,prevTextRanges:u,trigger:h,noHistory:_,isCompositionEnd:v,noNeedSetTextRange:y,debounce:b,isEditing:x=!0,isSync:S,syncer:C}=r,w=S||(i==null?void 0:i.fromCollab)||(i==null?void 0:i.fromChangeset),T=e.get(t.IUniverInstanceService),E=e.get(n.IRenderManagerService),D=e.get(p),O=T.getUnit(o,t.UniverInstanceType.UNIVER_DOC),k=(a=E.getRenderUnitById(o))==null?void 0:a.with(f).getViewModel();if(O==null)throw Error(`DocumentDataModel not found for unitId: ${o}`);let A=e.get(d),j=A.getDocRanges()??[],ee=!!O.getSnapshot().disabled;if(t.JSONX.isNoop(c)||c&&c.length===0||ee)return{unitId:o,actions:[],textRanges:j};let M=t.JSONX.invertWithDoc(c,O.getSnapshot());O.apply(c);try{g(O,s)}catch(e){throw O.apply(M),e}k==null||k.reset(O),!y&&l&&h!=null&&!w&&queueMicrotask(()=>{A.replaceDocRanges(l,{unitId:o,subUnitId:o},x,r.options)});let N={commandId:m,unitId:o,segmentId:s,trigger:h,noHistory:_,debounce:b,redoState:{actions:c,textRanges:l},undoState:{actions:M,textRanges:u??j},isCompositionEnd:v,isSync:w,syncer:C};return D.emitStateChangeInfo(N),{unitId:o,actions:M,textRanges:j}}},v={id:`doc.command.insert-text`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r;let i=e.get(t.ICommandService),{range:a,segmentId:o,body:s,unitId:c,cursorOffset:l}=n,u=e.get(d),f=e.get(t.IUniverInstanceService).getUnit(c,t.UniverInstanceType.UNIVER_DOC);if(f==null)return!1;let p=u.getActiveTextRange(),m=`segmentId`in a?a.segmentId:void 0,h=o??m??(p==null?void 0:p.segmentId)??``,g=(r=f.getSelfOrHeaderFooterModel(h))==null?void 0:r.getBody();if(g==null)return!1;let{startOffset:v,collapsed:y}=a,b=l??s.dataStream.length,x=[{startOffset:v+b,endOffset:v+b,style:p==null?void 0:p.style,collapsed:y}],S={id:_.id,params:{unitId:c,actions:[],textRanges:x,debounce:!0}},C=new t.TextX,w=t.JSONX.getInstance();if(y)v>0&&C.push({t:t.TextXActionType.RETAIN,len:v}),C.push({t:t.TextXActionType.INSERT,body:s,len:s.dataStream.length});else{let e=t.BuildTextUtils.selection.delete([a],g,0,s);C.push(...e)}S.params.textRanges=[{startOffset:v+b,endOffset:v+b,collapsed:y}];let T=(0,t.getRichTextEditPath)(f,o);return S.params.actions=w.editOp(C.serialize(),T),!!i.syncExecuteCommand(S.id,S.params)}},y={id:`doc.command.delete-text`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r,i;let a=e.get(t.ICommandService),o=e.get(t.IUniverInstanceService),{range:s,segmentId:c,unitId:l,direction:u,len:d=1}=n,f=o.getUnit(l,t.UniverInstanceType.UNIVER_DOC),p=f==null||(r=f.getSelfOrHeaderFooterModel(c))==null?void 0:r.getBody();if(f==null||p==null)return!1;let{startOffset:m}=s,h=u===t.DeleteDirection.LEFT?m-d:m,g=u===t.DeleteDirection.LEFT?m-1:m+d-1,v=(i=p.customRanges)==null?void 0:i.find(e=>e.startIndex<=h&&e.endIndex>=g);v!=null&&v.wholeEntity&&(h=v.startIndex,g=Math.max(g,v.endIndex));let y={id:_.id,params:{unitId:l,actions:[],textRanges:[{startOffset:h,endOffset:h,collapsed:!0}],debounce:!0}},b=new t.TextX,x=t.JSONX.getInstance();b.push(...t.BuildTextUtils.selection.delete([{...s,startOffset:h,endOffset:g+1,collapsed:!1}],p));let S=(0,t.getRichTextEditPath)(f,c);return y.params.actions=x.editOp(b.serialize(),S),!!a.syncExecuteCommand(y.id,y.params)}},b={id:`doc.command.update-text`,type:t.CommandType.COMMAND,handler:(e,n)=>{let{range:r,segmentId:i,updateBody:a,coverType:o,unitId:s,textRanges:c}=n,l=e.get(t.ICommandService),u=e.get(t.IUniverInstanceService).getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC);if(u==null)return!1;let d={id:_.id,params:{unitId:s,actions:[],textRanges:c}},f=new t.TextX,p=t.JSONX.getInstance(),{startOffset:m,endOffset:h}=r;f.push({t:t.TextXActionType.RETAIN,len:m}),f.push({t:t.TextXActionType.RETAIN,body:a,len:h-m,coverType:o});let g=(0,t.getRichTextEditPath)(u,i);return d.params.actions=p.editOp(f.serialize(),g),!!l.syncExecuteCommand(d.id,d.params)}},x=function(e){return e[e.FIRST_PAGE_HEADER=0]=`FIRST_PAGE_HEADER`,e[e.FIRST_PAGE_FOOTER=1]=`FIRST_PAGE_FOOTER`,e[e.DEFAULT_HEADER=2]=`DEFAULT_HEADER`,e[e.DEFAULT_FOOTER=3]=`DEFAULT_FOOTER`,e[e.EVEN_PAGE_HEADER=4]=`EVEN_PAGE_HEADER`,e[e.EVEN_PAGE_FOOTER=5]=`EVEN_PAGE_FOOTER`,e}({});function S(){return{dataStream:`\r
2
- `,textRuns:[{st:0,ed:0,ts:{fs:9}}],customBlocks:[],paragraphs:[{startIndex:0,paragraphId:(0,t.createParagraphId)(new Set),paragraphStyle:{spaceAbove:{v:0},lineSpacing:1.5,spaceBelow:{v:0}}}],sectionBreaks:[{sectionId:(0,t.createSectionId)(new Set),startIndex:1}]}}function C(e,n,r,i,a=`single`,o=[`documentStyle`]){let s=t.JSONX.getInstance(),c=e??(0,t.generateRandomId)(6),l=n===2||n===0||n===4,u=s.insertOp([l?`headers`:`footers`,c],{[l?`headerId`:`footerId`]:c,body:S()});i.push(u);let d=`defaultHeaderId`,f=`defaultFooterId`;switch(n){case 2:d=`defaultHeaderId`,f=`defaultFooterId`;break;case 3:d=`defaultFooterId`,f=`defaultHeaderId`;break;case 0:d=`firstPageHeaderId`,f=`firstPageFooterId`;break;case 1:d=`firstPageFooterId`,f=`firstPageHeaderId`;break;case 4:d=`evenPageHeaderId`,f=`evenPageFooterId`;break;case 5:d=`evenPageFooterId`,f=`evenPageHeaderId`;break;default:throw Error(`Unknown header footer type: ${n}`)}let p=[[d,c]];if(a===`pair`&&f!=null){let e=(0,t.generateRandomId)(6),n=s.insertOp([l?`footers`:`headers`,e],{[l?`footerId`:`headerId`]:e,body:S()});i.push(n),p.push([f,e])}for(let[e,t]of p)if(r[e]!=null){let n=s.replaceOp([...o,e],r[e],t);i.push(n)}else{let n=s.insertOp([...o,e],t);i.push(n)}return i}let w={id:`doc.command.create-header-footer`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r,i;let a=e.get(t.ICommandService),o=e.get(t.IUniverInstanceService),{unitId:s,segmentId:c,createType:l,headerFooterProps:u,createMode:d=`single`,sectionId:f}=n,p=o.getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(p==null)return!1;let{documentStyle:m,body:h}=p.getSnapshot();if(m.documentFlavor===t.DocumentFlavor.MODERN)return!1;let g=[],v=t.JSONX.getInstance(),y=f==null?-1:(h==null||(r=h.sectionBreaks)==null?void 0:r.findIndex(e=>e.sectionId===f))??-1,b=y<0||h==null||(i=h.sectionBreaks)==null?void 0:i[y];if(f!=null&&!b)return!1;let x=b??m,S=f==null?[`documentStyle`]:[`body`,`sectionBreaks`,y];if(l!=null&&C(c,l,x,g,d,S),u!=null&&Object.keys(u).forEach(e=>{let t=u[e],n=x[e];if(t===n)return;let r=n===void 0?v.insertOp([...S,e],t):v.replaceOp([...S,e],n,t);g.push(r)}),g.length===0)return!1;let w={id:_.id,params:{unitId:s,actions:g.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:[{startOffset:0,endOffset:0,collapsed:!0}],debounce:!0}};return((u==null?void 0:u.marginFooter)!=null||(u==null?void 0:u.marginHeader)!=null)&&(w.params.noNeedSetTextRange=!0),!!a.syncExecuteCommand(w.id,w.params)}},T={id:`doc.command.set-default-paragraph-style`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(n==null)return!1;let r=e.get(t.ICommandService),i=e.get(t.IUniverInstanceService).getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC);if(i==null)return!1;let a=i.getSnapshot().documentStyle.defaultParagraphStyle,o=t.JSONX.getInstance(),s=[`documentStyle`,`defaultParagraphStyle`],c=[];if(n.defaultParagraphStyle==null)a!=null&&c.push(o.removeOp(s,a));else if(a==null){let e=Object.fromEntries(Object.entries(n.defaultParagraphStyle).filter(([,e])=>e!=null).map(([e,n])=>[e,t.Tools.deepClone(n)]));Object.keys(e).length>0&&c.push(o.insertOp(s,e))}else Object.entries(n.defaultParagraphStyle).forEach(([e,n])=>{let r=a[e],i=[...s,e];n==null?r!=null&&c.push(o.removeOp(i,r)):r==null?c.push(o.insertOp(i,t.Tools.deepClone(n))):c.push(o.replaceOp(i,r,t.Tools.deepClone(n)))});let l=c.reduce((e,n)=>t.JSONX.compose(e,n),null);if(c.length===0||t.JSONX.isNoop(l))return!1;let u={id:_.id,params:{unitId:n.unitId,actions:l,textRanges:null,noNeedSetTextRange:!0,debounce:!0,isEditing:!1}};return!!r.syncExecuteCommand(u.id,u.params)}};function E(e){let n=new Map((e.sectionBreaks??[]).map(e=>[e.startIndex,e])),r=[],i=0,a=0;for(let o=0;o<e.dataStream.length;o++){let s=e.dataStream[o];if(s===t.DataStreamTreeTokenType.TABLE_CELL_START)i++;else if(s===t.DataStreamTreeTokenType.TABLE_CELL_END)i=Math.max(0,i-1);else if(s===t.DataStreamTreeTokenType.COLUMN_START)a++;else if(s===t.DataStreamTreeTokenType.COLUMN_END)a=Math.max(0,a-1);else if(s===t.DataStreamTreeTokenType.SECTION_BREAK&&i===0&&a===0){let e=n.get(o);e&&r.push(e)}}return r}let D={id:`doc.command.set-section-header-footer-link`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r;if(!n)return!1;let i=e.get(t.IUniverInstanceService),a=e.get(t.ICommandService),o=i.getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC),s=o==null?void 0:o.getSnapshot();if(!o||!(s!=null&&s.body)||s.documentStyle.documentFlavor!==t.DocumentFlavor.TRADITIONAL)return!1;let c=E(s.body),l=c.findIndex(e=>e.sectionId===n.sectionId);if(l<=0)return!1;let u=((r=s.body.sectionBreaks)==null?void 0:r.findIndex(e=>e.sectionId===n.sectionId))??-1;if(u<0)return!1;let d={snapshot:s,sections:c,sectionIndex:l,storageIndex:u,key:(0,t.getSectionHeaderFooterReferenceKey)(n.kind,n.variant)},f=n.linkedToPrevious?O(d,n.kind):k(d,n.kind,n.segmentId);if(!f)return!1;let p={id:_.id,params:{unitId:n.unitId,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,noNeedSetTextRange:!0,debounce:!0,isEditing:!1,trigger:D.id}};return!!a.syncExecuteCommand(p.id,p.params)}};function O(e,n){let{snapshot:r,sections:i,sectionIndex:a,storageIndex:o,key:s}=e,c=i[a],l=c[s];if(typeof l!=`string`||!l)return null;let u=t.JSONX.getInstance(),d=[u.removeOp([`body`,`sectionBreaks`,o,s],l)],f=n===`header`?[`defaultHeaderId`,`firstPageHeaderId`,`evenPageHeaderId`]:[`defaultFooterId`,`firstPageFooterId`,`evenPageFooterId`],p=f.some(e=>r.documentStyle[e]===l),m=i.some(e=>f.some(t=>(e.sectionId!==c.sectionId||t!==s)&&e[t]===l)),h=n===`header`?r.headers:r.footers;return!p&&!m&&h!=null&&h[l]&&d.push(u.removeOp([n===`header`?`headers`:`footers`,l],h[l])),d}function k(e,n,r){let{snapshot:i,sections:a,sectionIndex:o,storageIndex:s,key:c}=e,l=a[o][c];if(typeof l==`string`&&l)return null;let u=(0,t.resolveSectionHeaderFooterReference)(i.documentStyle,a,o-1,c).segmentId,d=r??(0,t.generateRandomId)(6),f=n===`header`?i.headers:i.footers;if(f!=null&&f[d])return null;let p=u?f==null?void 0:f[u]:void 0,m=n===`header`?`headerId`:`footerId`,h=p?{...t.Tools.deepClone(p),[m]:d}:{[m]:d,body:S()},g=t.JSONX.getInstance();return[g.insertOp([n===`header`?`headers`:`footers`,d],h),g.insertOp([`body`,`sectionBreaks`,s,c],d)]}function A(e){return!!(e!=null&&e.unitId&&e.paragraphId&&Number.isInteger(e.startOffset)&&Number.isInteger(e.endOffset)&&e.startOffset>=0&&e.endOffset>=e.startOffset&&e.style&&Object.keys(e.style).length>0)}function j(e,n){let r=(e.paragraphs??[]).filter(e=>e.paragraphId===n.paragraphId);if(r.length!==1)return null;let i=r[0];return(0,t.getParagraphContentStartOffset)(e,i)===n.startOffset&&i.startIndex===n.endOffset&&e.dataStream[n.endOffset]===`\r`?i:null}function ee(e,n,r){let i=new t.TextX,a=!!(r.style.textStyle&&r.startOffset<r.endOffset&&e.textRuns==null);r.startOffset>0&&i.push({t:t.TextXActionType.RETAIN,len:r.startOffset}),r.style.textStyle&&r.startOffset<r.endOffset&&!a?i.push({t:t.TextXActionType.RETAIN,len:r.endOffset-r.startOffset,coverType:t.UpdateDocsAttributeType.COVER,body:{dataStream:``,textRuns:[{st:0,ed:r.endOffset-r.startOffset,ts:t.Tools.deepClone(r.style.textStyle)}]}}):r.startOffset<r.endOffset&&i.push({t:t.TextXActionType.RETAIN,len:r.endOffset-r.startOffset});let o={dataStream:``,paragraphs:[{...t.Tools.deepClone(n),startIndex:0,paragraphStyle:{...t.Tools.deepClone(n.paragraphStyle??{}),...t.Tools.deepClone(r.style)}}]};return Object.defineProperty(o,t.RESTORE_INSERTED_PARAGRAPH_IDS,{value:!0,enumerable:!0}),i.push({t:t.TextXActionType.RETAIN,len:1,coverType:t.UpdateDocsAttributeType.REPLACE,body:o}),{textX:i,initializesTextRuns:a}}let M={id:`doc.command.update-paragraph-style`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r;if(!A(n))return!1;let i=e.get(t.IUniverInstanceService),a=e.get(t.ICommandService),o=i.getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC),s=n.segmentId??``,c=o==null||(r=o.getSelfOrHeaderFooterModel(s))==null?void 0:r.getBody();if(!o||!c)return!1;let l=j(c,n);if(!l)return!1;let{textX:u,initializesTextRuns:d}=ee(c,l,n),f=t.JSONX.getInstance(),p=(0,t.getRichTextEditPath)(o,s),m=f.editOp(u.serialize(),p);if(d){let e=f.replaceOp([...p,`textRuns`],void 0,[{st:n.startOffset,ed:n.endOffset,ts:t.Tools.deepClone(n.style.textStyle)}]);m=t.JSONX.compose(e,m)}return!!a.syncExecuteCommand(_.id,{unitId:n.unitId,segmentId:s,actions:m,textRanges:null,noNeedSetTextRange:!0,isEditing:!1,trigger:M.id})}};function N(e,t,n){return e??t??n}function te(e,n){var r,i,a,o;let s=t.PAGE_SIZE[t.PaperType.A4];return{width:N(n==null||(r=n.pageSize)==null?void 0:r.width,e==null||(i=e.pageSize)==null?void 0:i.width,s.width),height:N(n==null||(a=n.pageSize)==null?void 0:a.height,e==null||(o=e.pageSize)==null?void 0:o.height,s.height)}}function ne(e,n){return{top:N(n==null?void 0:n.marginTop,e==null?void 0:e.marginTop,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN),bottom:N(n==null?void 0:n.marginBottom,e==null?void 0:e.marginBottom,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN),left:N(n==null?void 0:n.marginLeft,e==null?void 0:e.marginLeft,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN),right:N(n==null?void 0:n.marginRight,e==null?void 0:e.marginRight,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN)}}function re(e,t){if(![e.width,e.height,t.width,t.height].every(e=>Number.isFinite(e)&&e>0))throw RangeError(`Effective section page setup must leave a positive content area and use finite positive page dimensions.`)}function ie(e,n){let r=te(e,n),i=ne(e,n),a={width:P(e,n),height:r.height-i.top-i.bottom};re(r,a);let o=(n==null?void 0:n.pageNumberStart)??(e==null?void 0:e.pageNumberStart);return{pageSize:r,pageOrient:N(n==null?void 0:n.pageOrient,e==null?void 0:e.pageOrient,t.PageOrientType.PORTRAIT),margins:i,contentSize:a,...o==null?{}:{pageNumberStart:o}}}function P(e,n){var r,i;let a=N(n==null||(r=n.pageSize)==null?void 0:r.width,e==null||(i=e.pageSize)==null?void 0:i.width,t.PAGE_SIZE[t.PaperType.A4].width);return Math.max(0,a-N(n==null?void 0:n.marginLeft,e==null?void 0:e.marginLeft,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN)-N(n==null?void 0:n.marginRight,e==null?void 0:e.marginRight,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN))}function ae(e,t,n,r,i){if(n<=1)return[];let a=Math.max(0,r),o=P(e,t),s=Math.max(0,o-a*(n-1));if(i){if(i.some(e=>!Number.isFinite(e)||e<0))throw RangeError(`Section column widths must be finite and non-negative.`);if(i.reduce((e,t)=>e+t,0)>s)throw RangeError(`Section columns exceed the available page content width.`)}return(i??Array.from({length:n},()=>s/n)).map((e,t)=>({width:Math.max(0,e),paddingEnd:t===n-1?0:a}))}let F={id:`doc.command.update-section`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!(n!=null&&n.updates.length)||n.updates.some(({sectionId:e,config:t})=>!e||Object.keys(t).length===0))return!1;let r=e.get(t.IUniverInstanceService),i=e.get(t.ICommandService),a=r.getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC);if(!a||a.getDocumentStyle().documentFlavor!==t.DocumentFlavor.TRADITIONAL)return!1;let o=a.getBody();if(!o)return!1;let s=new Map(n.updates.map(({sectionId:e,config:t})=>[e,t]));if(s.size!==n.updates.length)return!1;let c=new Set(s.keys()),l=E(o).filter(e=>c.has(e.sectionId)).sort((e,t)=>e.startIndex-t.startIndex);if(l.length!==c.size)return!1;let u=a.getDocumentStyle();if(l.some(e=>!V({...e,...s.get(e.sectionId)},u)))return!1;let d=new t.MemoryCursor,f=new t.TextX;for(let e of l)f.push({t:t.TextXActionType.RETAIN,len:e.startIndex-d.cursor}),f.push({t:t.TextXActionType.RETAIN,len:1,coverType:t.UpdateDocsAttributeType.REPLACE,body:{dataStream:``,sectionBreaks:[{...t.Tools.deepClone(e),...t.Tools.deepClone(s.get(e.sectionId)),sectionId:e.sectionId,startIndex:0}]}}),d.moveCursorTo(e.startIndex+1);let p=t.JSONX.getInstance(),m={id:_.id,params:{unitId:n.unitId,actions:p.editOp(f.serialize(),(0,t.getRichTextEditPath)(a)),textRanges:null,noNeedSetTextRange:!0,debounce:!0,isEditing:!1,trigger:F.id}};return!!i.syncExecuteCommand(m.id,m.params)}},I={id:`doc.command.insert-section-break`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r;if(!n)return!1;let i=z(e,n.unitId);if(!i||!n.sectionId||!Number.isInteger(n.offset)||n.nextSectionType!=null&&!U(t.SectionType,n.nextSectionType))return!1;let{body:a,documentDataModel:o,commandService:s}=i,c={...t.Tools.deepClone(n.config??{}),sectionId:n.sectionId,startIndex:n.offset};if(!B(a,n.offset)||(r=a.sectionBreaks)!=null&&r.some(e=>e.sectionId===n.sectionId)||!V(c,o.getDocumentStyle()))return!1;let l=n.nextSectionType==null?void 0:E(a).find(e=>e.startIndex>=n.offset);if(n.nextSectionType!=null&&!l)return!1;let u=new t.TextX;return u.retain(n.offset),u.insert(1,{dataStream:t.DataStreamTreeTokenType.SECTION_BREAK,sectionBreaks:[{...c,startIndex:0}]}),l&&n.nextSectionType!=null&&(u.retain(l.startIndex-n.offset),u.push({t:t.TextXActionType.RETAIN,len:1,coverType:t.UpdateDocsAttributeType.REPLACE,body:{dataStream:``,sectionBreaks:[{...t.Tools.deepClone(l),sectionType:n.nextSectionType,startIndex:0}]}})),W(s,o,u,I.id)}},L={id:`doc.command.insert-column-break`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let r=z(e,n.unitId);if(!r||!B(r.body,n.offset))return!1;let i=new t.TextX;return i.retain(n.offset),i.insert(1,{dataStream:t.DataStreamTreeTokenType.COLUMN_BREAK,customRanges:[{startIndex:0,endIndex:0,rangeId:`docx-break-${(0,t.generateRandomId)()}`,rangeType:t.CustomRangeType.CUSTOM,wholeEntity:!0,properties:{docxBreakType:t.DocxBreakType.COLUMN}}]}),W(r.commandService,r.documentDataModel,i,L.id)}},R={id:`doc.command.delete-section-break`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let r=z(e,n.unitId);if(!r||!n.sectionId)return!1;let i=E(r.body);if(i.length<=1)return!1;let a=i.find(e=>e.sectionId===n.sectionId);if(!a||a===i[i.length-1])return!1;let o=new t.TextX;return o.retain(a.startIndex),o.delete(1),W(r.commandService,r.documentDataModel,o,R.id)}};function z(e,n){if(!n)return null;let r=e.get(t.IUniverInstanceService).getUnit(n,t.UniverInstanceType.UNIVER_DOC),i=r==null?void 0:r.getBody();return!r||!i||r.getDocumentStyle().documentFlavor!==t.DocumentFlavor.TRADITIONAL?null:{body:i,documentDataModel:r,commandService:e.get(t.ICommandService)}}function B(e,n){var r,i,a;return Number.isInteger(n)&&n>=0&&n<=e.dataStream.length&&!((r=e.tables)!=null&&r.some(e=>(0,t.containsInteriorInsertionOffset)((0,t.getTableRangeInterval)(e),n)))&&!((i=e.columnGroups)!=null&&i.some(e=>(0,t.containsInteriorInsertionOffset)((0,t.getColumnGroupRangeInterval)(e),n)))&&!((a=e.blockRanges)!=null&&a.some(e=>(0,t.containsInteriorInsertionOffset)((0,t.getBlockRangeInterval)(e),n)))}function V(e,n){if(e.sectionType!=null&&!U(t.SectionType,e.sectionType)||e.pageOrient!=null&&!U(t.PageOrientType,e.pageOrient)||e.columnSeparatorType!=null&&!U(t.ColumnSeparatorType,e.columnSeparatorType)||e.pageNumberStart!=null&&(!Number.isInteger(e.pageNumberStart)||e.pageNumberStart<1)||e.pageSize&&(!H(e.pageSize.width)||!H(e.pageSize.height))||[e.marginTop,e.marginBottom,e.marginLeft,e.marginRight].some(e=>e!=null&&(!Number.isFinite(e)||e<0)))return!1;let r=e.pageSize??n.pageSize,i=e.marginTop??n.marginTop??0,a=e.marginBottom??n.marginBottom??0,o=e.marginLeft??n.marginLeft??0,s=e.marginRight??n.marginRight??0;if((r==null?void 0:r.width)!=null&&o+s>=r.width||(r==null?void 0:r.height)!=null&&i+a>=r.height)return!1;let c=e.columnProperties??[];return!c.some(({width:e,paddingEnd:t})=>!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0)&&c.reduce((e,{width:t,paddingEnd:n})=>e+t+n,0)<=P(n,e)}function H(e){return e!=null&&Number.isFinite(e)&&e>0}function U(e,t){return Object.values(e).includes(t)}function W(e,n,r,i){let a=t.JSONX.getInstance().editOp(r.serialize(),(0,t.getRichTextEditPath)(n));return!!e.syncExecuteCommand(_.id,{unitId:n.getUnitId(),actions:a,textRanges:null,noNeedSetTextRange:!0,debounce:!0,isEditing:!1,trigger:i})}let oe={width:720,height:360},se={width:960,height:480},ce={width:720,height:405};function le(e){return _e(e.unitId,e.segmentId,G(e))}function ue(e){return _e(e.unitId,e.segmentId,de(e))}function G(e){let n=new t.TextX;return e.startIndex>0&&n.push({t:t.TextXActionType.RETAIN,len:e.startIndex}),n.push({t:t.TextXActionType.INSERT,body:{dataStream:`\b`,customBlocks:[{startIndex:0,blockId:e.blockId}]},len:1}),q([ve(n,e.segmentId),ye(e)])}function de(e){let n=new t.TextX;return e.startIndex>0&&n.push({t:t.TextXActionType.RETAIN,len:e.startIndex}),n.push({t:t.TextXActionType.DELETE,len:1}),q([ve(n,e.segmentId),be(e)])}function K(e){let n=fe(e.childType),r=e.interactionMode===`inline`;return{unitId:e.unitId,subUnitId:e.unitId,drawingId:e.blockId,drawingType:t.DrawingTypeEnum.DRAWING_DOM,componentKey:e.componentKey??`UniverEmbedDocsCustomBlock`,data:me(e),title:e.blockId,description:`Univer embedded unit custom block`,layoutType:r?t.PositionedObjectLayoutType.INLINE:t.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,allowTransform:!1,docTransform:{size:{width:n.width,height:n.height},positionH:{relativeFrom:r?t.ObjectRelativeFromH.PAGE:t.ObjectRelativeFromH.COLUMN,...r?{posOffset:0}:{align:t.AlignTypeH.LEFT}},positionV:{relativeFrom:r?t.ObjectRelativeFromV.PAGE:t.ObjectRelativeFromV.PARAGRAPH,posOffset:0},angle:0},transform:{left:0,top:0,width:n.width,height:n.height}}}function fe(e){return e===t.UniverInstanceType.UNIVER_SHEET||e===t.UniverInstanceType.UNIVER_BASE?se:e===t.UniverInstanceType.UNIVER_SLIDE?ce:oe}function pe(e){return e===t.UniverInstanceType.UNIVER_SHEET||e===t.UniverInstanceType.UNIVER_BASE}function me(e){return{version:1,embedId:e.embedId??e.blockId,hostUnitId:e.unitId,hostAnchorId:e.blockId,childUnitId:e.childUnitId,childType:e.childType,interactionMode:e.interactionMode??`block`}}function he(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.version===1&&typeof t.embedId==`string`&&typeof t.hostAnchorId==`string`}function ge(e){let t=e&&typeof e==`object`?e.data:void 0;return!he(t)||t.interactionMode===`inline`}function _e(e,t,n){return{id:_.id,params:{unitId:e,segmentId:t,actions:n,textRanges:[],isEditing:!1,noNeedSetTextRange:!0}}}function ve(e,n){return t.JSONX.getInstance().editOp(e.serialize(),n?[`headers`,n,`body`]:[`body`])??[]}function ye(e){if(e.segmentId)return[];let n=t.JSONX.getInstance(),r=K(e);return q([n.insertOp([`drawings`,e.blockId],r)??[],n.insertOp([`drawingsOrder`,e.drawingOrderIndex??0],e.blockId)??[]])}function be(e){if(e.segmentId)return[];let n=t.JSONX.getInstance(),r=K(e);return q([n.removeOp([`drawings`,e.blockId],r)??[],n.removeOp([`drawingsOrder`,e.drawingOrderIndex??0],e.blockId)??[]])}function q(e){return e.reduce((e,n)=>!n||t.JSONX.isNoop(n)||n.length===0?e:!e||t.JSONX.isNoop(e)||e.length===0?n:t.JSONX.compose(e,n)??[],[])}var xe=`@univerjs/docs`,Se=`1.0.0-beta.0`;let Ce={id:`doc.mutation.rename-doc`,type:t.CommandType.MUTATION,handler:(e,n)=>{let r=e.get(t.IUniverInstanceService).getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC);return r?(r.setName(n.name),!0):!1}},we={},J=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,this._initSelectionChange()}_transformCustomRange(e,n){var r;let{startOffset:i,endOffset:a,collapsed:o}=n,s=(r=e.getCustomRanges())==null?void 0:r.filter(e=>!e.wholeEntity||i<=e.startIndex&&a>e.endIndex?!1:o?e.startIndex<i&&e.endIndex>=a:t.BuildTextUtils.range.isIntersects(i,a-1,e.startIndex,e.endIndex));if(s!=null&&s.length){let e=i,t=a;return s.forEach(n=>{e=Math.min(n.startIndex,e),t=Math.max(n.endIndex+1,t)}),{...n,startOffset:e,endOffset:t,collapsed:e===t}}return n}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===i.id){let{unitId:t,ranges:n,isEditing:r}=e.params,i=this._univerInstanceService.getUnit(t);if(!i)return;let a=n.map(e=>this._transformCustomRange(i,e));a.some((e,t)=>n[t]!==e)&&this._textSelectionManagerService.replaceDocRanges(a,void 0,r)}}))}};J=u([l(0,t.ICommandService),l(1,(0,t.Inject)(d)),l(2,t.IUniverInstanceService)],J);var Te=class extends t.Disposable{constructor(...e){super(...e),c(this,`_validators`,[]),c(this,`_transformers`,[])}registerValidator(e){return this._validators.push(e),this.disposeWithMe((0,t.toDisposable)(()=>(0,t.remove)(this._validators,e)))}registerTransformer(e){return this._transformers.push(e),this.disposeWithMe((0,t.toDisposable)(()=>(0,t.remove)(this._transformers,e)))}canMoveBlock(e){return this._validators.every(t=>t(e))}transformMoveResult(e){return this._transformers.reduce((t,n)=>n({...e,result:t}),e.result)}},Y=class extends t.Disposable{constructor(...e){super(...e),c(this,`_range`,null)}setInsertRange(e){this._range=e}consumeInsertRange(e){if(!this._range||e&&this._range.unitId!==e)return null;let t=this._range;return this._range=null,t}clearInsertRange(){this._range=null}};let Ee=(0,t.createIdentifier)(`doc.state-change-interceptor-service`),X=class extends t.RxDisposable{constructor(e,t,n,i,a){super(),this._undoRedoService=e,this._commandService=t,this._univerInstanceService=n,this._docStateEmitService=i,this._docStateChangeInterceptorService=a,c(this,`_docStateChange$`,new r.BehaviorSubject(null)),c(this,`docStateChange$`,this._docStateChange$.asObservable()),c(this,`_historyStateCache`,new Map),c(this,`_changeStateCache`,new Map),c(this,`_historyTimer`,null),c(this,`_changeStateCacheTimer`,null),this._initialize(),this._listenDocStateChange()}getStateCache(e){return{history:this._historyStateCache.get(e)??[],collaboration:this._changeStateCache.get(e)??[]}}setStateCache(e,t){this._historyStateCache.set(e,t.history),this._changeStateCache.set(e,t.collaboration)}_setChangeState(e){this._cacheChangeState(e,`history`),this._cacheChangeState(e,`collaboration`)}_initialize(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{if(e.id===t.UndoCommandId||e.id===t.RedoCommandId){let e=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC);if(e==null)return;let n=e.getUnitId();this._pushHistory(n),this._emitChangeState(n)}}))}_listenDocStateChange(){this._docStateEmitService.docStateChangeParams$.pipe((0,r.takeUntil)(this.dispose$)).subscribe(e=>{var t;if(e==null)return;let n=((t=this._docStateChangeInterceptorService)==null?void 0:t.transformChangeStateInfo(e))??e;if(n==null||n.isSync)return;let{isCompositionEnd:r,isSync:i,syncer:a,...o}=n;this._setChangeState(o)})}_cacheChangeState(e,n=`history`){let{trigger:r,unitId:i,noHistory:a,debounce:o=!1}=e;if(a||n===`history`&&r==null||n===`history`&&(r===t.RedoCommandId||r===t.UndoCommandId))return;let s=n===`history`?this._historyStateCache:this._changeStateCache,c=n===`history`?this._pushHistory.bind(this):this._emitChangeState.bind(this);if(s.has(i)){let t=s.get(i);t==null||t.push(e)}else s.set(i,[e]);o?n===`history`?(this._historyTimer&&clearTimeout(this._historyTimer),this._historyTimer=setTimeout(()=>{c(i)},300)):(this._changeStateCacheTimer&&clearTimeout(this._changeStateCacheTimer),this._changeStateCacheTimer=setTimeout(()=>{c(i)},300)):c(i)}_pushHistory(e){let n=this._undoRedoService,r=this._historyStateCache.get(e);if(n==null||!Array.isArray(r)||r.length===0)return;let i=r.length,a=r[0].commandId,o=r[0],s=r[i-1],c={unitId:e,actions:r.reduce((e,n)=>t.JSONX.compose(e,n.redoState.actions),null),textRanges:s.redoState.textRanges},l={unitId:e,actions:r.reverse().reduce((e,n)=>t.JSONX.compose(e,n.undoState.actions),null),textRanges:o.undoState.textRanges};n.pushUndoRedo({unitID:e,undoMutations:[{id:a,params:l}],redoMutations:[{id:a,params:c}]}),r.length=0}_emitChangeState(e){let n=this._changeStateCache.get(e);if(!Array.isArray(n)||n.length===0)return;let r=n.length,{commandId:i,trigger:a,segmentId:o,noHistory:s,debounce:c}=n[0],l=n[0],u=n[r-1],d={commandId:i,unitId:e,trigger:a,redoState:{unitId:e,actions:n.reduce((e,n)=>t.JSONX.compose(e,n.redoState.actions),null),textRanges:u.redoState.textRanges},undoState:{unitId:e,actions:n.reverse().reduce((e,n)=>t.JSONX.compose(e,n.undoState.actions),null),textRanges:l.undoState.textRanges},segmentId:o,noHistory:s,debounce:c};n.length=0,this._docStateChange$.next(d)}};X=u([l(0,(0,t.Optional)(t.IUndoRedoService)),l(1,t.ICommandService),l(2,t.IUniverInstanceService),l(3,(0,t.Inject)(p)),l(4,(0,t.Optional)(Ee))],X);var De=class extends t.Disposable{constructor(...e){super(...e),c(this,`_resolvers`,new Set),c(this,`_textChanged$`,new r.Subject),c(this,`textChanged$`,this._textChanged$.asObservable())}register(e){return this._resolvers.add(e),(0,t.toDisposable)(()=>this._resolvers.delete(e))}notifyTextChanged(e){this._textChanged$.next(e)}resolve(e,t){let n=this._collectReplacements(e,t),r=[],i=``,a=0;for(let e of n){let n=t.dataStream.slice(a,e.startOffset);i+=n;for(let t=a;t<e.startOffset;t+=1)r.push({startOffset:t,endOffset:t+1,replaceable:!0});i+=e.text;for(let t=0;t<e.text.length;t+=1)r.push({startOffset:e.startOffset,endOffset:e.endOffset,replaceable:e.replaceable??!1});a=e.endOffset}i+=t.dataStream.slice(a);for(let e=a;e<t.dataStream.length;e+=1)r.push({startOffset:e,endOffset:e+1,replaceable:!0});return{characters:r,text:i}}_collectReplacements(e,t){let n=[...this._resolvers].flatMap(n=>n.resolve(e,t)).filter(e=>Number.isInteger(e.startOffset)&&Number.isInteger(e.endOffset)&&e.startOffset>=0&&e.endOffset>e.startOffset&&e.endOffset<=t.dataStream.length).sort((e,t)=>e.startOffset-t.startOffset||t.endOffset-e.endOffset),r=[],i=-1;for(let e of n)e.startOffset<i||(r.push(e),i=e.endOffset);return r}dispose(){this._textChanged$.complete(),super.dispose()}};let Z=class extends t.Plugin{constructor(e=we,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},we,this._config);this._configService.setConfig(`docs.config`,i)}onStarting(){this._initializeDependencies(),this._initializeCommands()}_initializeCommands(){[v,y,b,w,T,D,M,F,I,L,R,_,Ce,i].forEach(e=>{this._injector.get(t.ICommandService).registerCommand(e)})}_initializeDependencies(){[[d],[p],[X],[Te],[Y],[De],[J]].forEach(e=>this._injector.add(e))}onReady(){this._injector.get(X),this._injector.get(J)}};c(Z,`pluginName`,`DOCS_PLUGIN`),c(Z,`packageName`,xe),c(Z,`version`,Se),Z=u([l(1,(0,t.Inject)(t.Injector)),l(2,t.IConfigService)],Z);let Q={CUSTOM_RANGE:(0,t.createInterceptorKey)(`CUSTOM_RANGE`),CUSTOM_DECORATION:(0,t.createInterceptorKey)(`CUSTOM_DECORATION`)},$=class extends t.Disposable{constructor(e,n){super(),this._context=e,this._docSkeletonManagerService=n,c(this,`_interceptorsByName`,new Map);let r=this._docSkeletonManagerService.getViewModel(),i=r.getDataModel().getUnitId();if(i===t.DOCS_NORMAL_EDITOR_UNIT_ID_KEY||i===t.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY)return;this.disposeWithMe(this.interceptDocumentViewModel(r)),this.disposeWithMe(this.intercept(Q.CUSTOM_RANGE,{priority:-1,handler:(e,t,n)=>n(e)}));let a=new t.DisposableCollection;r.segmentViewModels$.subscribe(e=>{a.dispose(),a=new t.DisposableCollection,e.forEach(e=>{a.add(this.interceptDocumentViewModel(e))})}),this.disposeWithMe(a)}intercept(e,n){let r=e;this._interceptorsByName.has(r)||this._interceptorsByName.set(r,[]);let i=this._interceptorsByName.get(r);return i.push(n),this._interceptorsByName.set(r,i.sort((e,t)=>(t.priority??0)-(e.priority??0))),this.disposeWithMe((0,t.toDisposable)(()=>(0,t.remove)(this._interceptorsByName.get(r),n)))}fetchThroughInterceptors(e){let n=e;return(0,t.composeInterceptors)(this._interceptorsByName.get(n)||[])}interceptDocumentViewModel(e){let n=new t.DisposableCollection;return n.add(e.registerCustomRangeInterceptor({getCustomRange:t=>this.fetchThroughInterceptors(Q.CUSTOM_RANGE)(e.getCustomRangeRaw(t),{index:t,unitId:e.getDataModel().getUnitId(),customRanges:e.getDataModel().getCustomRanges()??[]}),getCustomDecoration:t=>this.fetchThroughInterceptors(Q.CUSTOM_DECORATION)(e.getCustomDecorationRaw(t),{index:t,unitId:e.getDataModel().getUnitId(),customDecorations:e.getDataModel().getCustomDecorations()??[]})})),n}};$=u([l(1,(0,t.Inject)(f))],$);function Oe(e,n,r){let{unitId:i,segmentId:a}=n,o=e.get(t.IUniverInstanceService).getUnit(i);if(!o)return!1;let s={id:_.id,params:{unitId:n.unitId,actions:[],textRanges:void 0}},c=t.JSONX.getInstance(),l=t.BuildTextUtils.customRange.add({...n,body:r});if(!l)return!1;let u=(0,t.getRichTextEditPath)(o,a);return s.params.actions=c.editOp(l.serialize(),u),s}function ke(e,n){var r,i;let{rangeId:a,rangeType:o,wholeEntity:s,properties:c,unitId:l,selections:u}=n,f=e.get(d),p=e.get(t.IUniverInstanceService),m=u??f.getTextRanges({unitId:l,subUnitId:l}),h=m==null||(r=m[0])==null?void 0:r.segmentId;if(!(m!=null&&m.length))return!1;let g=p.getUnit(l,t.UniverInstanceType.UNIVER_DOC);if(!g)return!1;let v=(i=g.getSelfOrHeaderFooterModel(h))==null?void 0:i.getBody();if(!v)return!1;let y=t.BuildTextUtils.customRange.add({ranges:m,rangeId:a,rangeType:o,segmentId:h,wholeEntity:s,properties:c,body:v});if(!y)return!1;let b=t.JSONX.getInstance(),x={id:_.id,params:{unitId:l,actions:[],textRanges:y.selections,segmentId:h},textX:y},S=(0,t.getRichTextEditPath)(g,h);return x.params.actions=b.editOp(y.serialize(),S),x}function Ae(e,n){let{unitId:r,segmentId:i,insert:a}=n,o=e.get(t.IUniverInstanceService).getUnit(r);if(!o)return!1;let s={id:_.id,params:{unitId:n.unitId,actions:[],textRanges:void 0,segmentId:i}},c=t.JSONX.getInstance(),l=t.BuildTextUtils.customRange.delete({documentDataModel:o,rangeId:n.rangeId,insert:a,segmentId:i});if(!l)return!1;let u=(0,t.getRichTextEditPath)(o,i);return s.params.actions=c.editOp(l.serialize(),u),s.params.textRanges=l.selections,s}function je(e,n,r,i=[]){let a=[],o=new Set(i);for(let n=0,r=e.length;n<r;n++)e[n]===t.DataStreamTreeTokenType.PARAGRAPH&&a.push({startIndex:n,paragraphId:(0,t.createParagraphId)(o)});for(let e of a)n!=null&&n.bullet&&(e.bullet=t.Tools.deepClone(n.bullet)),n!=null&&n.paragraphStyle&&(e.paragraphStyle=t.Tools.deepClone(n.paragraphStyle),delete e.paragraphStyle.borderBottom,n.paragraphStyle.headingId&&(e.paragraphStyle.headingId=(0,t.generateRandomId)(6))),r&&(e.paragraphStyle??={},e.paragraphStyle.borderBottom=t.Tools.deepClone(r),e.paragraphStyle.spaceBelow={v:10});return a}function Me(e,n){var r,i;let{unitId:a,body:o,doc:s}=n,c=s;if(c||=e.get(t.IUniverInstanceService).getUnit(a),!c)return!1;let l=(r=n.selection)==null?void 0:r.segmentId,u=(i=c.getSelfOrHeaderFooterModel(l))==null?void 0:i.getBody();if(!u)return!1;let f=e.get(d),p=n.selection??f.getActiveTextRange();if(!p||!u)return!1;let m=n.textRanges??[{startOffset:p.startOffset+o.dataStream.length,endOffset:p.startOffset+o.dataStream.length,collapsed:!0,segmentId:l}],h=t.BuildTextUtils.selection.replace({selection:p,body:o,doc:c});if(!h)return!1;let g={id:_.id,params:{unitId:a,actions:[],textRanges:m,debounce:!0,segmentId:l},textX:h},v=t.JSONX.getInstance();return g.params.actions=v.editOp(h.serialize()),g}function Ne(e,n,r){return{size:{width:e,height:n},positionH:{relativeFrom:t.ObjectRelativeFromH.PAGE,posOffset:(r==null?void 0:r.left)??0},positionV:{relativeFrom:t.ObjectRelativeFromV.PARAGRAPH,posOffset:(r==null?void 0:r.top)??0},angle:0}}function Pe(e){return{left:e.positionH.posOffset,top:e.positionV.posOffset,width:e.size.width,height:e.size.height,flipX:e.flipX,flipY:e.flipY}}function Fe(e,n=0,r=0){return{size:{width:e.width,height:e.height},positionH:{relativeFrom:t.ObjectRelativeFromH.MARGIN,posOffset:(e.left||0)-n},positionV:{relativeFrom:t.ObjectRelativeFromV.PAGE,posOffset:(e.top||0)-r},angle:e.angle||0,flipX:e.flipX,flipY:e.flipY}}function Ie(e,t){try{return e.get(Y).consumeInsertRange(t)}catch{return null}}function Le(e,n){var r;let i=n??((r=e.get(t.IUniverInstanceService).getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC))==null?void 0:r.getUnitId());if(!i)return null;let a=Ie(e,i);return a?{...a,collapsed:(a==null?void 0:a.startOffset)===(a==null?void 0:a.endOffset)}:null}function Re(e){return!!(e!=null&&e.segmentId)}function ze(e){let t=e.endOffset??e.startOffset;return{...e,endOffset:t,collapsed:e.collapsed??e.startOffset===t,segmentId:e.segmentId??``}}e.CreateHeaderFooterCommand=w,e.DOC_INTERCEPTOR_POINT=Q,e.DOC_SELECTION_OPTION_PRESERVE_CARET=`preserveCaret`,e.DeleteDocumentSectionBreakCommand=R,e.DeleteTextCommand=y,e.DocBlockMoveValidatorService=Te,e.DocContentInsertService=Y,Object.defineProperty(e,"DocInterceptorService",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"DocSelectionManagerService",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"DocSkeletonManagerService",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"DocStateChangeManagerService",{enumerable:!0,get:function(){return X}}),e.DocStateEmitService=p,e.DocTextResolverService=De,e.EMBED_DOCS_CUSTOM_BLOCK_DEFAULT_COMPONENT_KEY=`UniverEmbedDocsCustomBlock`,e.HeaderFooterType=x,e.IDocStateChangeInterceptorService=Ee,e.InsertDocumentColumnBreakCommand=L,e.InsertDocumentSectionBreakCommand=I,e.InsertTextCommand=v,e.RichTextEditingMutation=_,e.SetDocumentDefaultParagraphStyleCommand=T,e.SetSectionHeaderFooterLinkCommand=D,e.SetTextSelectionsOperation=i,Object.defineProperty(e,"UniverDocsPlugin",{enumerable:!0,get:function(){return Z}}),e.UpdateDocumentParagraphStyleCommand=M,e.UpdateDocumentSectionCommand=F,e.UpdateTextCommand=b,e.addCustomRangeBySelectionFactory=ke,e.addCustomRangeFactory=Oe,e.buildDocTransform=Ne,e.consumeContentInsertRange=Ie,e.createDocsCustomBlockDrawing=K,e.createDocsCustomBlockInsertMutation=le,e.createDocsCustomBlockRemoveMutation=ue,e.createEmbedDocsCustomBlockData=me,e.createInsertCustomBlockActions=G,e.createRemoveCustomBlockActions=de,e.createSectionColumnProperties=ae,e.deleteCustomRangeFactory=Ae,e.docDrawingPositionToTransform=Pe,e.generateParagraphs=je,e.getContentInsertRange=Le,e.getEffectiveSectionPageSetup=ie,e.getSectionContentWidth=P,e.getTopLevelSectionBreaks=E,e.isEmbedDocsCustomBlockData=he,e.isHeaderFooterSelection=Re,e.isSheetLikeDocsCustomBlockChildType=pe,e.normalizeTextRange=ze,e.replaceSelectionFactory=Me,e.resolveDocsCustomBlockSize=fe,e.shouldUseInlineTextSelectionForDocsCustomBlockDrawing=ge,e.transformToDocDrawingPosition=Fe});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/engine-render"),require("rxjs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/engine-render`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocs={},e.UniverCore,e.UniverEngineRender,e.rxjs))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i={id:`doc.operation.set-selections`,type:t.CommandType.OPERATION,handler:()=>!0};function a(e){"@babel/helpers - typeof";return a=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},a(e)}function o(e,t){if(a(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(a(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function s(e){var t=o(e,`string`);return a(t)==`symbol`?t:t+``}function c(e,t,n){return(t=s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let d=class extends t.RxDisposable{constructor(e,t){super(),this._commandService=e,this._univerInstanceService=t,c(this,`_currentSelection`,null),c(this,`_textSelectionInfo`,new Map),c(this,`_textSelection$`,new r.Subject),c(this,`textSelection$`,this._textSelection$.asObservable()),c(this,`_refreshSelection$`,new r.BehaviorSubject(null)),c(this,`refreshSelection$`,this._refreshSelection$.asObservable()),this._listenCurrentUnit()}_listenCurrentUnit(){this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_DOC).pipe((0,r.takeUntil)(this.dispose$)).subscribe(e=>{if(e==null)return;let t=e.getUnitId();this._setCurrentSelectionNotRefresh({unitId:t,subUnitId:t})})}__getCurrentSelection(){return this._currentSelection}getSelectionInfo(e=this._currentSelection){return this._getTextRanges(e)}refreshSelection(e=this._currentSelection){e!=null&&this._refresh(e)}__TEST_ONLY_setCurrentSelection(e){this._currentSelection=e,this._refresh(e)}getTextRanges(e=this._currentSelection){var t;return(t=this._getTextRanges(e))==null?void 0:t.textRanges}getRectRanges(e=this._currentSelection){var t;return(t=this._getTextRanges(e))==null?void 0:t.rectRanges}getDocRanges(e=this._currentSelection){let t=this.getTextRanges(e)??[],n=this.getRectRanges(e)??[];return[...t,...n].filter(e=>e.startOffset!=null&&e.endOffset!=null).sort((e,t)=>e.startOffset>t.startOffset?1:e.startOffset<t.startOffset?-1:0)}getActiveTextRange(){let e=this._getTextRanges(this._currentSelection);if(e==null)return;let{textRanges:t}=e;return t.find(e=>e.isActive)}__TEST_ONLY_add(e,t=!0){this._currentSelection!=null&&this._addByParam({...this._currentSelection,textRanges:e,rectRanges:[],segmentId:``,segmentPage:-1,isEditing:t,style:n.NORMAL_TEXT_SELECTION_PLUGIN_STYLE})}replaceDocRanges(e,t=this._currentSelection,n=!0,r){if(t==null)return;let{unitId:i,subUnitId:a}=t;this._refreshSelection$.next({unitId:i,subUnitId:a,docRanges:e,isEditing:n,options:r})}__replaceTextRangesWithNoRefresh(e,t){if(this._currentSelection==null)return;let n={...e,...t};this._replaceByParam(n),this._textSelection$.next(n);let{unitId:r,subUnitId:a,segmentId:o,style:s,textRanges:c,rectRanges:l,isEditing:u}=n,d=[...c,...l].filter(e=>e.startOffset!=null&&e.endOffset!=null).sort((e,t)=>e.startOffset>t.startOffset?1:e.startOffset<t.startOffset?-1:0);this._commandService.executeCommand(i.id,{unitId:r,subUnitId:a,segmentId:o,style:s,isEditing:u,ranges:d})}dispose(){this._textSelection$.complete(),this._refreshSelection$.complete()}_setCurrentSelectionNotRefresh(e){this._currentSelection=e}_getTextRanges(e){var t;if(e==null)return;let{unitId:n,subUnitId:r=``}=e;return(t=this._textSelectionInfo.get(n))==null?void 0:t.get(r)}_refresh(e){let t=this._getTextRanges(e);if(t==null)return;let{textRanges:n,rectRanges:r,options:i}=t,a=[...n,...r],{unitId:o,subUnitId:s}=e;this._refreshSelection$.next({unitId:o,subUnitId:s,docRanges:a,isEditing:!1,options:i})}_replaceByParam(e){let{unitId:t,subUnitId:n,...r}=e;this._textSelectionInfo.has(t)||this._textSelectionInfo.set(t,new Map),this._textSelectionInfo.get(t).set(n,{...r})}_addByParam(e){let{unitId:t,subUnitId:n,...r}=e;this._textSelectionInfo.has(t)||this._textSelectionInfo.set(t,new Map);let i=this._textSelectionInfo.get(t);i.has(n)?i.get(n).textRanges.push(...e.textRanges):i.set(n,{...r})}};d=u([l(0,t.ICommandService),l(1,t.IUniverInstanceService)],d);let f=class extends t.RxDisposable{constructor(e,n,i){super(),this._context=e,this._localeService=n,this._univerInstanceService=i,c(this,`_skeleton`,void 0),c(this,`_docViewModel`,void 0),c(this,`_currentSkeleton$`,new r.BehaviorSubject(null)),c(this,`currentSkeleton$`,this._currentSkeleton$.asObservable()),c(this,`_currentSkeletonBefore$`,new r.BehaviorSubject(null)),c(this,`currentSkeletonBefore$`,this._currentSkeletonBefore$.asObservable()),c(this,`_currentViewModel$`,new r.BehaviorSubject(null)),c(this,`currentViewModel$`,this._currentViewModel$.asObservable()),this._init(),this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_DOC).pipe((0,r.takeUntil)(this.dispose$)).subscribe(e=>{e&&e.getUnitId()===this._context.unitId&&this._update(e)})}dispose(){super.dispose(),this._currentSkeletonBefore$.complete(),this._currentSkeleton$.complete()}getSkeleton(){return this._skeleton}getViewModel(){return this._docViewModel}recalculate(){let e=this._skeleton;return e.calculate(),this._currentSkeletonBefore$.next(e),this._currentSkeleton$.next(e),e}_init(){let e=this._context.unit;this._update(e)}_update(e){let n=this._context.unitId;e.getBody()!=null&&(this._docViewModel&&(0,t.isInternalEditorID)(n)?(this._docViewModel.reset(e),this._context.unit=e):this._docViewModel||=this._buildDocViewModel(e),this._skeleton||=this._buildSkeleton(this._docViewModel),this.recalculate(),this._currentViewModel$.next(this._docViewModel))}_buildSkeleton(e){return n.DocumentSkeleton.create(e,this._localeService)}_buildDocViewModel(e){return new n.DocumentViewModel(e)}};f=u([l(1,(0,t.Inject)(t.LocaleService)),l(2,t.IUniverInstanceService)],f);var p=class extends t.RxDisposable{constructor(){super(),c(this,`_docStateChangeParams$`,new r.BehaviorSubject(null)),c(this,`docStateChangeParams$`,this._docStateChangeParams$.asObservable())}emitStateChangeInfo(e){this._docStateChangeParams$.next(e)}dispose(){super.dispose(),this._docStateChangeParams$.complete()}};let m=`doc.mutation.rich-text-editing`;function h(e,t){if(!t)return`body`;let{headers:n,footers:r}=e.getSnapshot();return n!=null&&n[t]?`header`:r!=null&&r[t]?`footer`:`body`}function g(e,n){let r=e.getSelfOrHeaderFooterModel(n),i=r==null?void 0:r.getBody();if(!i)return;let a=h(e,n),o=(0,t.validateDocBodyStructure)(i,{segmentType:a,segmentId:n||void 0});if(!o.length)return;let s=o.map(e=>`${e.code}${e.index==null?``:`@${e.index}`}`).join(`, `),c=n?`${a} ${n}`:a;throw Error(`[DocStructure] ${c}: ${s}`)}let _={id:m,type:t.CommandType.MUTATION,handler:(e,r,i)=>{var a;let{unitId:o,segmentId:s=``,actions:c,textRanges:l,prevTextRanges:u,trigger:h,noHistory:_,isCompositionEnd:v,noNeedSetTextRange:y,debounce:b,isEditing:x=!0,isSync:S,syncer:C}=r,w=S||(i==null?void 0:i.fromCollab)||(i==null?void 0:i.fromChangeset),T=e.get(t.IUniverInstanceService),E=e.get(n.IRenderManagerService),D=e.get(p),O=T.getUnit(o,t.UniverInstanceType.UNIVER_DOC),k=(a=E.getRenderUnitById(o))==null?void 0:a.with(f).getViewModel();if(O==null)throw Error(`DocumentDataModel not found for unitId: ${o}`);let A=e.get(d),j=A.getDocRanges()??[],M=A.getSelectionInfo(),ee=!!O.getSnapshot().disabled;if(t.JSONX.isNoop(c)||c&&c.length===0||ee)return{unitId:o,actions:[],textRanges:j};let N=t.JSONX.invertWithDoc(c,O.getSnapshot());O.apply(c);try{g(O,s)}catch(e){throw O.apply(N),e}k==null||k.reset(O),!y&&l&&h!=null&&!w&&queueMicrotask(()=>{A.replaceDocRanges(l,{unitId:o,subUnitId:o},x,r.options)});let P={commandId:m,unitId:o,segmentId:s,trigger:h,noHistory:_,debounce:b,redoState:{actions:c,textRanges:l,options:r.options,isEditing:x},undoState:{actions:N,textRanges:u??j,options:M==null?void 0:M.options,isEditing:M==null?void 0:M.isEditing},isCompositionEnd:v,isSync:w,syncer:C};return D.emitStateChangeInfo(P),{unitId:o,actions:N,textRanges:j}}},v={id:`doc.command.insert-text`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r;let i=e.get(t.ICommandService),{range:a,segmentId:o,body:s,unitId:c,cursorOffset:l}=n,u=e.get(d),f=e.get(t.IUniverInstanceService).getUnit(c,t.UniverInstanceType.UNIVER_DOC);if(f==null)return!1;let p=u.getActiveTextRange(),m=`segmentId`in a?a.segmentId:void 0,h=o??m??(p==null?void 0:p.segmentId)??``,g=(r=f.getSelfOrHeaderFooterModel(h))==null?void 0:r.getBody();if(g==null)return!1;let{startOffset:v,collapsed:y}=a,b=l??s.dataStream.length,x=[{startOffset:v+b,endOffset:v+b,style:p==null?void 0:p.style,collapsed:y}],S={id:_.id,params:{unitId:c,actions:[],textRanges:x,debounce:!0}},C=new t.TextX,w=t.JSONX.getInstance();if(y)v>0&&C.push({t:t.TextXActionType.RETAIN,len:v}),C.push({t:t.TextXActionType.INSERT,body:s,len:s.dataStream.length});else{let e=t.BuildTextUtils.selection.delete([a],g,0,s);C.push(...e)}S.params.textRanges=[{startOffset:v+b,endOffset:v+b,collapsed:y}];let T=(0,t.getRichTextEditPath)(f,o);return S.params.actions=w.editOp(C.serialize(),T),!!i.syncExecuteCommand(S.id,S.params)}},y={id:`doc.command.delete-text`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r,i;let a=e.get(t.ICommandService),o=e.get(t.IUniverInstanceService),{range:s,segmentId:c,unitId:l,direction:u,len:d=1}=n,f=o.getUnit(l,t.UniverInstanceType.UNIVER_DOC),p=f==null||(r=f.getSelfOrHeaderFooterModel(c))==null?void 0:r.getBody();if(f==null||p==null)return!1;let{startOffset:m}=s,h=u===t.DeleteDirection.LEFT?m-d:m,g=u===t.DeleteDirection.LEFT?m-1:m+d-1,v=(i=p.customRanges)==null?void 0:i.find(e=>e.startIndex<=h&&e.endIndex>=g);v!=null&&v.wholeEntity&&(h=v.startIndex,g=Math.max(g,v.endIndex));let y={id:_.id,params:{unitId:l,actions:[],textRanges:[{startOffset:h,endOffset:h,collapsed:!0}],debounce:!0}},b=new t.TextX,x=t.JSONX.getInstance();b.push(...t.BuildTextUtils.selection.delete([{...s,startOffset:h,endOffset:g+1,collapsed:!1}],p));let S=(0,t.getRichTextEditPath)(f,c);return y.params.actions=x.editOp(b.serialize(),S),!!a.syncExecuteCommand(y.id,y.params)}},b={id:`doc.command.update-text`,type:t.CommandType.COMMAND,handler:(e,n)=>{let{range:r,segmentId:i,updateBody:a,coverType:o,unitId:s,textRanges:c}=n,l=e.get(t.ICommandService),u=e.get(t.IUniverInstanceService).getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC);if(u==null)return!1;let d={id:_.id,params:{unitId:s,actions:[],textRanges:c}},f=new t.TextX,p=t.JSONX.getInstance(),{startOffset:m,endOffset:h}=r;f.push({t:t.TextXActionType.RETAIN,len:m}),f.push({t:t.TextXActionType.RETAIN,body:a,len:h-m,coverType:o});let g=(0,t.getRichTextEditPath)(u,i);return d.params.actions=p.editOp(f.serialize(),g),!!l.syncExecuteCommand(d.id,d.params)}},x=function(e){return e[e.FIRST_PAGE_HEADER=0]=`FIRST_PAGE_HEADER`,e[e.FIRST_PAGE_FOOTER=1]=`FIRST_PAGE_FOOTER`,e[e.DEFAULT_HEADER=2]=`DEFAULT_HEADER`,e[e.DEFAULT_FOOTER=3]=`DEFAULT_FOOTER`,e[e.EVEN_PAGE_HEADER=4]=`EVEN_PAGE_HEADER`,e[e.EVEN_PAGE_FOOTER=5]=`EVEN_PAGE_FOOTER`,e}({});function S(){return{dataStream:`\r
2
+ `,textRuns:[{st:0,ed:0,ts:{fs:9}}],customBlocks:[],paragraphs:[{startIndex:0,paragraphId:(0,t.createParagraphId)(new Set),paragraphStyle:{spaceAbove:{v:0},lineSpacing:1.5,spaceBelow:{v:0}}}],sectionBreaks:[{sectionId:(0,t.createSectionId)(new Set),startIndex:1}]}}function C(e,n,r,i,a=`single`,o=[`documentStyle`]){let s=t.JSONX.getInstance(),c=e??(0,t.generateRandomId)(6),l=n===2||n===0||n===4,u=s.insertOp([l?`headers`:`footers`,c],{[l?`headerId`:`footerId`]:c,body:S()});i.push(u);let d=`defaultHeaderId`,f=`defaultFooterId`;switch(n){case 2:d=`defaultHeaderId`,f=`defaultFooterId`;break;case 3:d=`defaultFooterId`,f=`defaultHeaderId`;break;case 0:d=`firstPageHeaderId`,f=`firstPageFooterId`;break;case 1:d=`firstPageFooterId`,f=`firstPageHeaderId`;break;case 4:d=`evenPageHeaderId`,f=`evenPageFooterId`;break;case 5:d=`evenPageFooterId`,f=`evenPageHeaderId`;break;default:throw Error(`Unknown header footer type: ${n}`)}let p=[[d,c]];if(a===`pair`&&f!=null){let e=(0,t.generateRandomId)(6),n=s.insertOp([l?`footers`:`headers`,e],{[l?`footerId`:`headerId`]:e,body:S()});i.push(n),p.push([f,e])}for(let[e,t]of p)if(r[e]!=null){let n=s.replaceOp([...o,e],r[e],t);i.push(n)}else{let n=s.insertOp([...o,e],t);i.push(n)}return i}let w={id:`doc.command.create-header-footer`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r,i;let a=e.get(t.ICommandService),o=e.get(t.IUniverInstanceService),{unitId:s,segmentId:c,createType:l,headerFooterProps:u,createMode:d=`single`,sectionId:f}=n,p=o.getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(p==null)return!1;let{documentStyle:m,body:h}=p.getSnapshot();if(m.documentFlavor===t.DocumentFlavor.MODERN)return!1;let g=[],v=t.JSONX.getInstance(),y=f==null?-1:(h==null||(r=h.sectionBreaks)==null?void 0:r.findIndex(e=>e.sectionId===f))??-1,b=y<0||h==null||(i=h.sectionBreaks)==null?void 0:i[y];if(f!=null&&!b)return!1;let x=b??m,S=f==null?[`documentStyle`]:[`body`,`sectionBreaks`,y];if(l!=null&&C(c,l,x,g,d,S),u!=null&&Object.keys(u).forEach(e=>{let t=u[e],n=x[e];if(t===n)return;let r=n===void 0?v.insertOp([...S,e],t):v.replaceOp([...S,e],n,t);g.push(r)}),g.length===0)return!1;let w={id:_.id,params:{unitId:s,actions:g.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:[{startOffset:0,endOffset:0,collapsed:!0}],debounce:!0}};return((u==null?void 0:u.marginFooter)!=null||(u==null?void 0:u.marginHeader)!=null)&&(w.params.noNeedSetTextRange=!0),!!a.syncExecuteCommand(w.id,w.params)}},T={id:`doc.command.set-default-paragraph-style`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(n==null)return!1;let r=e.get(t.ICommandService),i=e.get(t.IUniverInstanceService).getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC);if(i==null)return!1;let a=i.getSnapshot().documentStyle.defaultParagraphStyle,o=t.JSONX.getInstance(),s=[`documentStyle`,`defaultParagraphStyle`],c=[];if(n.defaultParagraphStyle==null)a!=null&&c.push(o.removeOp(s,a));else if(a==null){let e=Object.fromEntries(Object.entries(n.defaultParagraphStyle).filter(([,e])=>e!=null).map(([e,n])=>[e,t.Tools.deepClone(n)]));Object.keys(e).length>0&&c.push(o.insertOp(s,e))}else Object.entries(n.defaultParagraphStyle).forEach(([e,n])=>{let r=a[e],i=[...s,e];n==null?r!=null&&c.push(o.removeOp(i,r)):r==null?c.push(o.insertOp(i,t.Tools.deepClone(n))):c.push(o.replaceOp(i,r,t.Tools.deepClone(n)))});let l=c.reduce((e,n)=>t.JSONX.compose(e,n),null);if(c.length===0||t.JSONX.isNoop(l))return!1;let u={id:_.id,params:{unitId:n.unitId,actions:l,textRanges:null,noNeedSetTextRange:!0,debounce:!0,isEditing:!1}};return!!r.syncExecuteCommand(u.id,u.params)}},E={id:`doc.mutation.rename-doc`,type:t.CommandType.MUTATION,handler:(e,n)=>{let r=e.get(t.IUniverInstanceService).getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC);return r?(r.setName(n.name),!0):!1}},D={id:`doc.command.set-name`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let r=e.get(t.IUniverInstanceService).getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC);if(!r)return!1;let i=e.get(t.ICommandService),a={unitId:n.unitId,name:n.name},o={unitId:n.unitId,name:r.getTitle()||``};return i.syncExecuteCommand(E.id,a)?(e.get(t.IUndoRedoService).pushUndoRedo({unitID:n.unitId,redoMutations:[{id:E.id,params:a}],undoMutations:[{id:E.id,params:o}]}),!0):!1}};function O(e){let n=new Map((e.sectionBreaks??[]).map(e=>[e.startIndex,e])),r=[],i=0,a=0;for(let o=0;o<e.dataStream.length;o++){let s=e.dataStream[o];if(s===t.DataStreamTreeTokenType.TABLE_CELL_START)i++;else if(s===t.DataStreamTreeTokenType.TABLE_CELL_END)i=Math.max(0,i-1);else if(s===t.DataStreamTreeTokenType.COLUMN_START)a++;else if(s===t.DataStreamTreeTokenType.COLUMN_END)a=Math.max(0,a-1);else if(s===t.DataStreamTreeTokenType.SECTION_BREAK&&i===0&&a===0){let e=n.get(o);e&&r.push(e)}}return r}let k={id:`doc.command.set-section-header-footer-link`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r;if(!n)return!1;let i=e.get(t.IUniverInstanceService),a=e.get(t.ICommandService),o=i.getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC),s=o==null?void 0:o.getSnapshot();if(!o||!(s!=null&&s.body)||s.documentStyle.documentFlavor!==t.DocumentFlavor.TRADITIONAL)return!1;let c=O(s.body),l=c.findIndex(e=>e.sectionId===n.sectionId);if(l<=0)return!1;let u=((r=s.body.sectionBreaks)==null?void 0:r.findIndex(e=>e.sectionId===n.sectionId))??-1;if(u<0)return!1;let d={snapshot:s,sections:c,sectionIndex:l,storageIndex:u,key:(0,t.getSectionHeaderFooterReferenceKey)(n.kind,n.variant)},f=n.linkedToPrevious?A(d,n.kind):j(d,n.kind,n.segmentId);if(!f)return!1;let p={id:_.id,params:{unitId:n.unitId,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,noNeedSetTextRange:!0,debounce:!0,isEditing:!1,trigger:k.id}};return!!a.syncExecuteCommand(p.id,p.params)}};function A(e,n){let{snapshot:r,sections:i,sectionIndex:a,storageIndex:o,key:s}=e,c=i[a],l=c[s];if(typeof l!=`string`||!l)return null;let u=t.JSONX.getInstance(),d=[u.removeOp([`body`,`sectionBreaks`,o,s],l)],f=n===`header`?[`defaultHeaderId`,`firstPageHeaderId`,`evenPageHeaderId`]:[`defaultFooterId`,`firstPageFooterId`,`evenPageFooterId`],p=f.some(e=>r.documentStyle[e]===l),m=i.some(e=>f.some(t=>(e.sectionId!==c.sectionId||t!==s)&&e[t]===l)),h=n===`header`?r.headers:r.footers;return!p&&!m&&h!=null&&h[l]&&d.push(u.removeOp([n===`header`?`headers`:`footers`,l],h[l])),d}function j(e,n,r){let{snapshot:i,sections:a,sectionIndex:o,storageIndex:s,key:c}=e,l=a[o][c];if(typeof l==`string`&&l)return null;let u=(0,t.resolveSectionHeaderFooterReference)(i.documentStyle,a,o-1,c).segmentId,d=r??(0,t.generateRandomId)(6),f=n===`header`?i.headers:i.footers;if(f!=null&&f[d])return null;let p=u?f==null?void 0:f[u]:void 0,m=n===`header`?`headerId`:`footerId`,h=p?{...t.Tools.deepClone(p),[m]:d}:{[m]:d,body:S()},g=t.JSONX.getInstance();return[g.insertOp([n===`header`?`headers`:`footers`,d],h),g.insertOp([`body`,`sectionBreaks`,s,c],d)]}function M(e){return!!(e!=null&&e.unitId&&e.paragraphId&&Number.isInteger(e.startOffset)&&Number.isInteger(e.endOffset)&&e.startOffset>=0&&e.endOffset>=e.startOffset&&e.style&&Object.keys(e.style).length>0)}function ee(e,n){let r=(e.paragraphs??[]).filter(e=>e.paragraphId===n.paragraphId);if(r.length!==1)return null;let i=r[0];return(0,t.getParagraphContentStartOffset)(e,i)===n.startOffset&&i.startIndex===n.endOffset&&e.dataStream[n.endOffset]===`\r`?i:null}function N(e,n,r){let i=new t.TextX,a=!!(r.style.textStyle&&r.startOffset<r.endOffset&&e.textRuns==null);r.startOffset>0&&i.push({t:t.TextXActionType.RETAIN,len:r.startOffset}),r.style.textStyle&&r.startOffset<r.endOffset&&!a?i.push({t:t.TextXActionType.RETAIN,len:r.endOffset-r.startOffset,coverType:t.UpdateDocsAttributeType.COVER,body:{dataStream:``,textRuns:[{st:0,ed:r.endOffset-r.startOffset,ts:t.Tools.deepClone(r.style.textStyle)}]}}):r.startOffset<r.endOffset&&i.push({t:t.TextXActionType.RETAIN,len:r.endOffset-r.startOffset});let o={dataStream:``,paragraphs:[{...t.Tools.deepClone(n),startIndex:0,paragraphStyle:{...t.Tools.deepClone(n.paragraphStyle??{}),...t.Tools.deepClone(r.style)}}]};return Object.defineProperty(o,t.RESTORE_INSERTED_PARAGRAPH_IDS,{value:!0,enumerable:!0}),i.push({t:t.TextXActionType.RETAIN,len:1,coverType:t.UpdateDocsAttributeType.REPLACE,body:o}),{textX:i,initializesTextRuns:a}}let P={id:`doc.command.update-paragraph-style`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r;if(!M(n))return!1;let i=e.get(t.IUniverInstanceService),a=e.get(t.ICommandService),o=i.getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC),s=n.segmentId??``,c=o==null||(r=o.getSelfOrHeaderFooterModel(s))==null?void 0:r.getBody();if(!o||!c)return!1;let l=ee(c,n);if(!l)return!1;let{textX:u,initializesTextRuns:d}=N(c,l,n),f=t.JSONX.getInstance(),p=(0,t.getRichTextEditPath)(o,s),m=f.editOp(u.serialize(),p);if(d){let e=f.replaceOp([...p,`textRuns`],void 0,[{st:n.startOffset,ed:n.endOffset,ts:t.Tools.deepClone(n.style.textStyle)}]);m=t.JSONX.compose(e,m)}return!!a.syncExecuteCommand(_.id,{unitId:n.unitId,segmentId:s,actions:m,textRanges:null,noNeedSetTextRange:!0,isEditing:!1,trigger:P.id})}};function F(e,t,n){return e??t??n}function te(e,n){var r,i,a,o;let s=t.PAGE_SIZE[t.PaperType.A4];return{width:F(n==null||(r=n.pageSize)==null?void 0:r.width,e==null||(i=e.pageSize)==null?void 0:i.width,s.width),height:F(n==null||(a=n.pageSize)==null?void 0:a.height,e==null||(o=e.pageSize)==null?void 0:o.height,s.height)}}function ne(e,n){return{top:F(n==null?void 0:n.marginTop,e==null?void 0:e.marginTop,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN),bottom:F(n==null?void 0:n.marginBottom,e==null?void 0:e.marginBottom,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN),left:F(n==null?void 0:n.marginLeft,e==null?void 0:e.marginLeft,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN),right:F(n==null?void 0:n.marginRight,e==null?void 0:e.marginRight,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN)}}function re(e,t){if(![e.width,e.height,t.width,t.height].every(e=>Number.isFinite(e)&&e>0))throw RangeError(`Effective section page setup must leave a positive content area and use finite positive page dimensions.`)}function ie(e,n){let r=te(e,n),i=ne(e,n),a={width:I(e,n),height:r.height-i.top-i.bottom};re(r,a);let o=(n==null?void 0:n.pageNumberStart)??(e==null?void 0:e.pageNumberStart);return{pageSize:r,pageOrient:F(n==null?void 0:n.pageOrient,e==null?void 0:e.pageOrient,t.PageOrientType.PORTRAIT),margins:i,contentSize:a,...o==null?{}:{pageNumberStart:o}}}function I(e,n){var r,i;let a=F(n==null||(r=n.pageSize)==null?void 0:r.width,e==null||(i=e.pageSize)==null?void 0:i.width,t.PAGE_SIZE[t.PaperType.A4].width);return Math.max(0,a-F(n==null?void 0:n.marginLeft,e==null?void 0:e.marginLeft,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN)-F(n==null?void 0:n.marginRight,e==null?void 0:e.marginRight,t.TRADITIONAL_DOCUMENT_DEFAULT_MARGIN))}function ae(e,t,n,r,i){if(n<=1)return[];let a=Math.max(0,r),o=I(e,t),s=Math.max(0,o-a*(n-1));if(i){if(i.some(e=>!Number.isFinite(e)||e<0))throw RangeError(`Section column widths must be finite and non-negative.`);if(i.reduce((e,t)=>e+t,0)>s)throw RangeError(`Section columns exceed the available page content width.`)}return(i??Array.from({length:n},()=>s/n)).map((e,t)=>({width:Math.max(0,e),paddingEnd:t===n-1?0:a}))}let L={id:`doc.command.update-section`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!(n!=null&&n.updates.length)||n.updates.some(({sectionId:e,config:t})=>!e||Object.keys(t).length===0))return!1;let r=e.get(t.IUniverInstanceService),i=e.get(t.ICommandService),a=r.getUnit(n.unitId,t.UniverInstanceType.UNIVER_DOC);if(!a||a.getDocumentStyle().documentFlavor!==t.DocumentFlavor.TRADITIONAL)return!1;let o=a.getBody();if(!o)return!1;let s=new Map(n.updates.map(({sectionId:e,config:t})=>[e,t]));if(s.size!==n.updates.length)return!1;let c=new Set(s.keys()),l=O(o).filter(e=>c.has(e.sectionId)).sort((e,t)=>e.startIndex-t.startIndex);if(l.length!==c.size)return!1;let u=a.getDocumentStyle();if(l.some(e=>!se({...e,...s.get(e.sectionId)},u)))return!1;let d=new t.MemoryCursor,f=new t.TextX;for(let e of l)f.push({t:t.TextXActionType.RETAIN,len:e.startIndex-d.cursor}),f.push({t:t.TextXActionType.RETAIN,len:1,coverType:t.UpdateDocsAttributeType.REPLACE,body:{dataStream:``,sectionBreaks:[{...t.Tools.deepClone(e),...t.Tools.deepClone(s.get(e.sectionId)),sectionId:e.sectionId,startIndex:0}]}}),d.moveCursorTo(e.startIndex+1);let p=t.JSONX.getInstance(),m={id:_.id,params:{unitId:n.unitId,actions:p.editOp(f.serialize(),(0,t.getRichTextEditPath)(a)),textRanges:null,noNeedSetTextRange:!0,debounce:!0,isEditing:!1,trigger:L.id}};return!!i.syncExecuteCommand(m.id,m.params)}},R={id:`doc.command.insert-section-break`,type:t.CommandType.COMMAND,handler:(e,n)=>{var r;if(!n)return!1;let i=V(e,n.unitId);if(!i||!n.sectionId||!Number.isInteger(n.offset)||n.nextSectionType!=null&&!H(t.SectionType,n.nextSectionType))return!1;let{body:a,documentDataModel:o,commandService:s}=i,c={...t.Tools.deepClone(n.config??{}),sectionId:n.sectionId,startIndex:n.offset};if(!oe(a,n.offset)||(r=a.sectionBreaks)!=null&&r.some(e=>e.sectionId===n.sectionId)||!se(c,o.getDocumentStyle()))return!1;let l=n.nextSectionType==null?void 0:O(a).find(e=>e.startIndex>=n.offset);if(n.nextSectionType!=null&&!l)return!1;let u=new t.TextX;return u.retain(n.offset),u.insert(1,{dataStream:t.DataStreamTreeTokenType.SECTION_BREAK,sectionBreaks:[{...c,startIndex:0}]}),l&&n.nextSectionType!=null&&(u.retain(l.startIndex-n.offset),u.push({t:t.TextXActionType.RETAIN,len:1,coverType:t.UpdateDocsAttributeType.REPLACE,body:{dataStream:``,sectionBreaks:[{...t.Tools.deepClone(l),sectionType:n.nextSectionType,startIndex:0}]}})),U(s,o,u,R.id)}},z={id:`doc.command.insert-column-break`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let r=V(e,n.unitId);if(!r||!oe(r.body,n.offset))return!1;let i=new t.TextX;return i.retain(n.offset),i.insert(1,{dataStream:t.DataStreamTreeTokenType.COLUMN_BREAK,customRanges:[{startIndex:0,endIndex:0,rangeId:`docx-break-${(0,t.generateRandomId)()}`,rangeType:t.CustomRangeType.CUSTOM,wholeEntity:!0,properties:{breakType:t.DocxBreakType.COLUMN}}]}),U(r.commandService,r.documentDataModel,i,z.id)}},B={id:`doc.command.delete-section-break`,type:t.CommandType.COMMAND,handler:(e,n)=>{if(!n)return!1;let r=V(e,n.unitId);if(!r||!n.sectionId)return!1;let i=O(r.body);if(i.length<=1)return!1;let a=i.find(e=>e.sectionId===n.sectionId);if(!a||a===i[i.length-1])return!1;let o=new t.TextX;return o.retain(a.startIndex),o.delete(1),U(r.commandService,r.documentDataModel,o,B.id)}};function V(e,n){if(!n)return null;let r=e.get(t.IUniverInstanceService).getUnit(n,t.UniverInstanceType.UNIVER_DOC),i=r==null?void 0:r.getBody();return!r||!i||r.getDocumentStyle().documentFlavor!==t.DocumentFlavor.TRADITIONAL?null:{body:i,documentDataModel:r,commandService:e.get(t.ICommandService)}}function oe(e,n){var r,i,a;return Number.isInteger(n)&&n>=0&&n<=e.dataStream.length&&!((r=e.tables)!=null&&r.some(e=>(0,t.containsInteriorInsertionOffset)((0,t.getTableRangeInterval)(e),n)))&&!((i=e.columnGroups)!=null&&i.some(e=>(0,t.containsInteriorInsertionOffset)((0,t.getColumnGroupRangeInterval)(e),n)))&&!((a=e.blockRanges)!=null&&a.some(e=>(0,t.containsInteriorInsertionOffset)((0,t.getBlockRangeInterval)(e),n)))}function se(e,n){if(e.sectionType!=null&&!H(t.SectionType,e.sectionType)||e.pageOrient!=null&&!H(t.PageOrientType,e.pageOrient)||e.columnSeparatorType!=null&&!H(t.ColumnSeparatorType,e.columnSeparatorType)||e.pageNumberStart!=null&&(!Number.isInteger(e.pageNumberStart)||e.pageNumberStart<1)||e.pageSize&&(!ce(e.pageSize.width)||!ce(e.pageSize.height))||[e.marginTop,e.marginBottom,e.marginLeft,e.marginRight].some(e=>e!=null&&(!Number.isFinite(e)||e<0)))return!1;let r=e.pageSize??n.pageSize,i=e.marginTop??n.marginTop??0,a=e.marginBottom??n.marginBottom??0,o=e.marginLeft??n.marginLeft??0,s=e.marginRight??n.marginRight??0;if((r==null?void 0:r.width)!=null&&o+s>=r.width||(r==null?void 0:r.height)!=null&&i+a>=r.height)return!1;let c=e.columnProperties??[];return!c.some(({width:e,paddingEnd:t})=>!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0)&&c.reduce((e,{width:t,paddingEnd:n})=>e+t+n,0)<=I(n,e)}function ce(e){return e!=null&&Number.isFinite(e)&&e>0}function H(e,t){return Object.values(e).includes(t)}function U(e,n,r,i){let a=t.JSONX.getInstance().editOp(r.serialize(),(0,t.getRichTextEditPath)(n));return!!e.syncExecuteCommand(_.id,{unitId:n.getUnitId(),actions:a,textRanges:null,noNeedSetTextRange:!0,debounce:!0,isEditing:!1,trigger:i})}let le={width:720,height:360},ue={width:960,height:480},de={width:720,height:405};function fe(e){return xe(e.unitId,e.segmentId,me(e))}function pe(e){return xe(e.unitId,e.segmentId,he(e))}function me(e){let n=new t.TextX;return e.startIndex>0&&n.push({t:t.TextXActionType.RETAIN,len:e.startIndex}),n.push({t:t.TextXActionType.INSERT,body:{dataStream:`\b`,customBlocks:[{startIndex:0,blockId:e.blockId}]},len:1}),K([G(n,e.segmentId),Se(e)])}function he(e){let n=new t.TextX;return e.startIndex>0&&n.push({t:t.TextXActionType.RETAIN,len:e.startIndex}),n.push({t:t.TextXActionType.DELETE,len:1}),K([G(n,e.segmentId),Ce(e)])}function W(e){let n=ge(e.childType),r=e.interactionMode===`inline`;return{unitId:e.unitId,subUnitId:e.unitId,drawingId:e.blockId,drawingType:t.DrawingTypeEnum.DRAWING_DOM,componentKey:e.componentKey??`UniverEmbedDocsCustomBlock`,data:ve(e),title:e.blockId,description:`Univer embedded unit custom block`,layoutType:r?t.PositionedObjectLayoutType.INLINE:t.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,allowTransform:!1,docTransform:{size:{width:n.width,height:n.height},positionH:{relativeFrom:r?t.ObjectRelativeFromH.PAGE:t.ObjectRelativeFromH.COLUMN,...r?{posOffset:0}:{align:t.AlignTypeH.LEFT}},positionV:{relativeFrom:r?t.ObjectRelativeFromV.PAGE:t.ObjectRelativeFromV.PARAGRAPH,posOffset:0},angle:0},transform:{left:0,top:0,width:n.width,height:n.height}}}function ge(e){return e===t.UniverInstanceType.UNIVER_SHEET||e===t.UniverInstanceType.UNIVER_BASE?ue:e===t.UniverInstanceType.UNIVER_SLIDE?de:le}function _e(e){return e===t.UniverInstanceType.UNIVER_SHEET||e===t.UniverInstanceType.UNIVER_BASE}function ve(e){return{version:1,embedId:e.embedId??e.blockId,hostUnitId:e.unitId,hostAnchorId:e.blockId,childUnitId:e.childUnitId,childType:e.childType,interactionMode:e.interactionMode??`block`}}function ye(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.version===1&&typeof t.embedId==`string`&&typeof t.hostAnchorId==`string`}function be(e){let t=e&&typeof e==`object`?e.data:void 0;return!ye(t)||t.interactionMode===`inline`}function xe(e,t,n){return{id:_.id,params:{unitId:e,segmentId:t,actions:n,textRanges:[],isEditing:!1,noNeedSetTextRange:!0}}}function G(e,n){return t.JSONX.getInstance().editOp(e.serialize(),n?[`headers`,n,`body`]:[`body`])??[]}function Se(e){if(e.segmentId)return[];let n=t.JSONX.getInstance(),r=W(e);return K([n.insertOp([`drawings`,e.blockId],r)??[],n.insertOp([`drawingsOrder`,e.drawingOrderIndex??0],e.blockId)??[]])}function Ce(e){if(e.segmentId)return[];let n=t.JSONX.getInstance(),r=W(e);return K([n.removeOp([`drawings`,e.blockId],r)??[],n.removeOp([`drawingsOrder`,e.drawingOrderIndex??0],e.blockId)??[]])}function K(e){return e.reduce((e,n)=>!n||t.JSONX.isNoop(n)||n.length===0?e:!e||t.JSONX.isNoop(e)||e.length===0?n:t.JSONX.compose(e,n)??[],[])}var we=`@univerjs/docs`,Te=`1.0.0-beta.1`;let Ee={},q=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,this._initSelectionChange()}_transformCustomRange(e,n){var r;let{startOffset:i,endOffset:a,collapsed:o}=n,s=(r=e.getCustomRanges())==null?void 0:r.filter(e=>!e.wholeEntity||i<=e.startIndex&&a>e.endIndex?!1:o?e.startIndex<i&&e.endIndex>=a:t.BuildTextUtils.range.isIntersects(i,a-1,e.startIndex,e.endIndex));if(s!=null&&s.length){let e=i,t=a;return s.forEach(n=>{e=Math.min(n.startIndex,e),t=Math.max(n.endIndex+1,t)}),{...n,startOffset:e,endOffset:t,collapsed:e===t}}return n}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===i.id){let{unitId:t,ranges:n,isEditing:r}=e.params,i=this._univerInstanceService.getUnit(t);if(!i)return;let a=n.map(e=>this._transformCustomRange(i,e));a.some((e,t)=>n[t]!==e)&&this._textSelectionManagerService.replaceDocRanges(a,void 0,r)}}))}};q=u([l(0,t.ICommandService),l(1,(0,t.Inject)(d)),l(2,t.IUniverInstanceService)],q);var De=class extends t.Disposable{constructor(...e){super(...e),c(this,`_validators`,[]),c(this,`_transformers`,[])}registerValidator(e){return this._validators.push(e),this.disposeWithMe((0,t.toDisposable)(()=>(0,t.remove)(this._validators,e)))}registerTransformer(e){return this._transformers.push(e),this.disposeWithMe((0,t.toDisposable)(()=>(0,t.remove)(this._transformers,e)))}canMoveBlock(e){return this._validators.every(t=>t(e))}transformMoveResult(e){return this._transformers.reduce((t,n)=>n({...e,result:t}),e.result)}},J=class extends t.Disposable{constructor(...e){super(...e),c(this,`_range`,null)}setInsertRange(e){this._range=e}consumeInsertRange(e){if(!this._range||e&&this._range.unitId!==e)return null;let t=this._range;return this._range=null,t}clearInsertRange(){this._range=null}};let Oe=(0,t.createIdentifier)(`doc.state-change-interceptor-service`),Y=class extends t.RxDisposable{constructor(e,t,n,i,a){super(),this._undoRedoService=e,this._commandService=t,this._univerInstanceService=n,this._docStateEmitService=i,this._docStateChangeInterceptorService=a,c(this,`_docStateChange$`,new r.BehaviorSubject(null)),c(this,`docStateChange$`,this._docStateChange$.asObservable()),c(this,`_historyStateCache`,new Map),c(this,`_changeStateCache`,new Map),c(this,`_historyTimer`,null),c(this,`_changeStateCacheTimer`,null),this._initialize(),this._listenDocStateChange()}getStateCache(e){return{history:this._historyStateCache.get(e)??[],collaboration:this._changeStateCache.get(e)??[]}}setStateCache(e,t){this._historyStateCache.set(e,t.history),this._changeStateCache.set(e,t.collaboration)}_setChangeState(e){this._cacheChangeState(e,`history`),this._cacheChangeState(e,`collaboration`)}_initialize(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{if(e.id===t.UndoCommandId||e.id===t.RedoCommandId){let e=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC);if(e==null)return;let n=e.getUnitId();this._pushHistory(n),this._emitChangeState(n)}}))}_listenDocStateChange(){this._docStateEmitService.docStateChangeParams$.pipe((0,r.takeUntil)(this.dispose$)).subscribe(e=>{var t;if(e==null)return;let n=((t=this._docStateChangeInterceptorService)==null?void 0:t.transformChangeStateInfo(e))??e;if(n==null||n.isSync)return;let{isCompositionEnd:r,isSync:i,syncer:a,...o}=n;this._setChangeState(o)})}_cacheChangeState(e,n=`history`){let{trigger:r,unitId:i,noHistory:a,debounce:o=!1}=e;if(a||n===`history`&&r==null||n===`history`&&(r===t.RedoCommandId||r===t.UndoCommandId))return;let s=n===`history`?this._historyStateCache:this._changeStateCache,c=n===`history`?this._pushHistory.bind(this):this._emitChangeState.bind(this),l=s.get(i);if(l!=null&&l.length&&l[l.length-1].segmentId!==e.segmentId&&c(i),s.has(i)){let t=s.get(i);t==null||t.push(e)}else s.set(i,[e]);o?n===`history`?(this._historyTimer&&clearTimeout(this._historyTimer),this._historyTimer=setTimeout(()=>{c(i)},300)):(this._changeStateCacheTimer&&clearTimeout(this._changeStateCacheTimer),this._changeStateCacheTimer=setTimeout(()=>{c(i)},300)):c(i)}_pushHistory(e){let n=this._undoRedoService,r=this._historyStateCache.get(e);if(n==null||!Array.isArray(r)||r.length===0)return;let i=r.length,a=r[0].commandId,o=r[0],s=r[i-1],c={unitId:e,actions:r.reduce((e,n)=>t.JSONX.compose(e,n.redoState.actions),null),textRanges:s.redoState.textRanges,segmentId:s.segmentId,options:s.redoState.options,isEditing:s.redoState.isEditing},l={unitId:e,actions:r.reverse().reduce((e,n)=>t.JSONX.compose(e,n.undoState.actions),null),textRanges:o.undoState.textRanges,segmentId:o.segmentId,options:o.undoState.options,isEditing:o.undoState.isEditing};n.pushUndoRedo({unitID:e,undoMutations:[{id:a,params:l}],redoMutations:[{id:a,params:c}]}),r.length=0}_emitChangeState(e){let n=this._changeStateCache.get(e);if(!Array.isArray(n)||n.length===0)return;let r=n.length,{commandId:i,trigger:a,segmentId:o,noHistory:s,debounce:c}=n[0],l=n[0],u=n[r-1],d={commandId:i,unitId:e,trigger:a,redoState:{unitId:e,actions:n.reduce((e,n)=>t.JSONX.compose(e,n.redoState.actions),null),textRanges:u.redoState.textRanges,segmentId:u.segmentId,options:u.redoState.options,isEditing:u.redoState.isEditing},undoState:{unitId:e,actions:n.reverse().reduce((e,n)=>t.JSONX.compose(e,n.undoState.actions),null),textRanges:l.undoState.textRanges,segmentId:l.segmentId,options:l.undoState.options,isEditing:l.undoState.isEditing},segmentId:o,noHistory:s,debounce:c};n.length=0,this._docStateChange$.next(d)}};Y=u([l(0,(0,t.Optional)(t.IUndoRedoService)),l(1,t.ICommandService),l(2,t.IUniverInstanceService),l(3,(0,t.Inject)(p)),l(4,(0,t.Optional)(Oe))],Y);var ke=class extends t.Disposable{constructor(...e){super(...e),c(this,`_resolvers`,new Set),c(this,`_textChanged$`,new r.Subject),c(this,`textChanged$`,this._textChanged$.asObservable())}register(e){return this._resolvers.add(e),(0,t.toDisposable)(()=>this._resolvers.delete(e))}notifyTextChanged(e){this._textChanged$.next(e)}resolve(e,t){let n=this._collectReplacements(e,t),r=[],i=``,a=0;for(let e of n){let n=t.dataStream.slice(a,e.startOffset);i+=n;for(let t=a;t<e.startOffset;t+=1)r.push({startOffset:t,endOffset:t+1,replaceable:!0});i+=e.text;for(let t=0;t<e.text.length;t+=1)r.push({startOffset:e.startOffset,endOffset:e.endOffset,replaceable:e.replaceable??!1});a=e.endOffset}i+=t.dataStream.slice(a);for(let e=a;e<t.dataStream.length;e+=1)r.push({startOffset:e,endOffset:e+1,replaceable:!0});return{characters:r,text:i}}_collectReplacements(e,t){let n=[...this._resolvers].flatMap(n=>n.resolve(e,t)).filter(e=>Number.isInteger(e.startOffset)&&Number.isInteger(e.endOffset)&&e.startOffset>=0&&e.endOffset>e.startOffset&&e.endOffset<=t.dataStream.length).sort((e,t)=>e.startOffset-t.startOffset||t.endOffset-e.endOffset),r=[],i=-1;for(let e of n)e.startOffset<i||(r.push(e),i=e.endOffset);return r}dispose(){this._textChanged$.complete(),super.dispose()}};let X=class extends t.Plugin{constructor(e=Ee,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},Ee,this._config);this._configService.setConfig(`docs.config`,i)}onStarting(){this._initializeDependencies(),this._initializeCommands()}_initializeCommands(){[v,y,b,w,T,D,k,P,L,R,z,B,_,E,i].forEach(e=>{this._injector.get(t.ICommandService).registerCommand(e)})}_initializeDependencies(){[[d],[p],[Y],[De],[J],[ke],[q]].forEach(e=>this._injector.add(e))}onReady(){this._injector.get(Y),this._injector.get(q)}};c(X,`pluginName`,`DOCS_PLUGIN`),c(X,`packageName`,we),c(X,`version`,Te),X=u([l(1,(0,t.Inject)(t.Injector)),l(2,t.IConfigService)],X);let Z={CUSTOM_RANGE:(0,t.createInterceptorKey)(`CUSTOM_RANGE`),CUSTOM_DECORATION:(0,t.createInterceptorKey)(`CUSTOM_DECORATION`)},Q=class extends t.Disposable{constructor(e,n){super(),this._context=e,this._docSkeletonManagerService=n,c(this,`_interceptorsByName`,new Map);let r=this._docSkeletonManagerService.getViewModel(),i=r.getDataModel().getUnitId();if(i===t.DOCS_NORMAL_EDITOR_UNIT_ID_KEY||i===t.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY)return;this.disposeWithMe(this.interceptDocumentViewModel(r)),this.disposeWithMe(this.intercept(Z.CUSTOM_RANGE,{priority:-1,handler:(e,t,n)=>n(e)}));let a=new t.DisposableCollection;r.segmentViewModels$.subscribe(e=>{a.dispose(),a=new t.DisposableCollection,e.forEach(e=>{a.add(this.interceptDocumentViewModel(e))})}),this.disposeWithMe(a)}intercept(e,n){let r=e;this._interceptorsByName.has(r)||this._interceptorsByName.set(r,[]);let i=this._interceptorsByName.get(r);return i.push(n),this._interceptorsByName.set(r,i.sort((e,t)=>(t.priority??0)-(e.priority??0))),this.disposeWithMe((0,t.toDisposable)(()=>(0,t.remove)(this._interceptorsByName.get(r),n)))}fetchThroughInterceptors(e){let n=e;return(0,t.composeInterceptors)(this._interceptorsByName.get(n)||[])}interceptDocumentViewModel(e){let n=new t.DisposableCollection;return n.add(e.registerCustomRangeInterceptor({getCustomRange:t=>this.fetchThroughInterceptors(Z.CUSTOM_RANGE)(e.getCustomRangeRaw(t),{index:t,unitId:e.getDataModel().getUnitId(),customRanges:e.getDataModel().getCustomRanges()??[]}),getCustomDecoration:t=>this.fetchThroughInterceptors(Z.CUSTOM_DECORATION)(e.getCustomDecorationRaw(t),{index:t,unitId:e.getDataModel().getUnitId(),customDecorations:e.getDataModel().getCustomDecorations()??[]})})),n}};Q=u([l(1,(0,t.Inject)(f))],Q);function Ae(e,n,r){let{unitId:i,segmentId:a}=n,o=e.get(t.IUniverInstanceService).getUnit(i);if(!o)return!1;let s={id:_.id,params:{unitId:n.unitId,actions:[],textRanges:void 0}},c=t.JSONX.getInstance(),l=t.BuildTextUtils.customRange.add({...n,body:r});if(!l)return!1;let u=(0,t.getRichTextEditPath)(o,a);return s.params.actions=c.editOp(l.serialize(),u),s}function je(e,n){var r,i;let{rangeId:a,rangeType:o,wholeEntity:s,properties:c,unitId:l,selections:u}=n,f=e.get(d),p=e.get(t.IUniverInstanceService),m=u??f.getTextRanges({unitId:l,subUnitId:l}),h=m==null||(r=m[0])==null?void 0:r.segmentId;if(!(m!=null&&m.length))return!1;let g=p.getUnit(l,t.UniverInstanceType.UNIVER_DOC);if(!g)return!1;let v=(i=g.getSelfOrHeaderFooterModel(h))==null?void 0:i.getBody();if(!v)return!1;let y=t.BuildTextUtils.customRange.add({ranges:m,rangeId:a,rangeType:o,segmentId:h,wholeEntity:s,properties:c,body:v});if(!y)return!1;let b=t.JSONX.getInstance(),x={id:_.id,params:{unitId:l,actions:[],textRanges:y.selections,segmentId:h},textX:y},S=(0,t.getRichTextEditPath)(g,h);return x.params.actions=b.editOp(y.serialize(),S),x}function Me(e,n){let{unitId:r,segmentId:i,insert:a}=n,o=e.get(t.IUniverInstanceService).getUnit(r);if(!o)return!1;let s={id:_.id,params:{unitId:n.unitId,actions:[],textRanges:void 0,segmentId:i}},c=t.JSONX.getInstance(),l=t.BuildTextUtils.customRange.delete({documentDataModel:o,rangeId:n.rangeId,insert:a,segmentId:i});if(!l)return!1;let u=(0,t.getRichTextEditPath)(o,i);return s.params.actions=c.editOp(l.serialize(),u),s.params.textRanges=l.selections,s}function Ne(e,n,r,i=[]){let a=[],o=new Set(i);for(let n=0,r=e.length;n<r;n++)e[n]===t.DataStreamTreeTokenType.PARAGRAPH&&a.push({startIndex:n,paragraphId:(0,t.createParagraphId)(o)});for(let e of a)n!=null&&n.bullet&&(e.bullet=t.Tools.deepClone(n.bullet)),n!=null&&n.paragraphStyle&&(e.paragraphStyle=t.Tools.deepClone(n.paragraphStyle),delete e.paragraphStyle.borderBottom,n.paragraphStyle.headingId&&(e.paragraphStyle.headingId=(0,t.generateRandomId)(6))),r&&(e.paragraphStyle??={},e.paragraphStyle.borderBottom=t.Tools.deepClone(r),e.paragraphStyle.spaceBelow={v:10});return a}function Pe(e,n){var r,i;let{unitId:a,body:o,doc:s}=n,c=s;if(c||=e.get(t.IUniverInstanceService).getUnit(a),!c)return!1;let l=(r=n.selection)==null?void 0:r.segmentId,u=(i=c.getSelfOrHeaderFooterModel(l))==null?void 0:i.getBody();if(!u)return!1;let f=e.get(d),p=n.selection??f.getActiveTextRange();if(!p||!u)return!1;let m=n.textRanges??[{startOffset:p.startOffset+o.dataStream.length,endOffset:p.startOffset+o.dataStream.length,collapsed:!0,segmentId:l}],h=t.BuildTextUtils.selection.replace({selection:p,body:o,doc:c});if(!h)return!1;let g={id:_.id,params:{unitId:a,actions:[],textRanges:m,debounce:!0,segmentId:l},textX:h},v=t.JSONX.getInstance();return g.params.actions=v.editOp(h.serialize()),g}function Fe(e,n,r){return{size:{width:e,height:n},positionH:{relativeFrom:t.ObjectRelativeFromH.PAGE,posOffset:(r==null?void 0:r.left)??0},positionV:{relativeFrom:t.ObjectRelativeFromV.PARAGRAPH,posOffset:(r==null?void 0:r.top)??0},angle:0}}function Ie(e){return{left:e.positionH.posOffset,top:e.positionV.posOffset,width:e.size.width,height:e.size.height,flipX:e.flipX,flipY:e.flipY}}function Le(e,n=0,r=0){return{size:{width:e.width,height:e.height},positionH:{relativeFrom:t.ObjectRelativeFromH.MARGIN,posOffset:(e.left||0)-n},positionV:{relativeFrom:t.ObjectRelativeFromV.PAGE,posOffset:(e.top||0)-r},angle:e.angle||0,flipX:e.flipX,flipY:e.flipY}}function $(e,t){try{return e.get(J).consumeInsertRange(t)}catch{return null}}function Re(e,n){var r;let i=n??((r=e.get(t.IUniverInstanceService).getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC))==null?void 0:r.getUnitId());if(!i)return null;let a=$(e,i);return a?{...a,collapsed:(a==null?void 0:a.startOffset)===(a==null?void 0:a.endOffset)}:null}function ze(e){return!!(e!=null&&e.segmentId)}function Be(e){let t=e.endOffset??e.startOffset;return{...e,endOffset:t,collapsed:e.collapsed??e.startOffset===t,segmentId:e.segmentId??``}}e.CreateHeaderFooterCommand=w,e.DOC_INTERCEPTOR_POINT=Z,e.DOC_SELECTION_OPTION_PRESERVE_CARET=`preserveCaret`,e.DeleteDocumentSectionBreakCommand=B,e.DeleteTextCommand=y,e.DocBlockMoveValidatorService=De,e.DocContentInsertService=J,Object.defineProperty(e,"DocInterceptorService",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"DocSelectionManagerService",{enumerable:!0,get:function(){return d}}),Object.defineProperty(e,"DocSkeletonManagerService",{enumerable:!0,get:function(){return f}}),Object.defineProperty(e,"DocStateChangeManagerService",{enumerable:!0,get:function(){return Y}}),e.DocStateEmitService=p,e.DocTextResolverService=ke,e.EMBED_DOCS_CUSTOM_BLOCK_DEFAULT_COMPONENT_KEY=`UniverEmbedDocsCustomBlock`,e.HeaderFooterType=x,e.IDocStateChangeInterceptorService=Oe,e.InsertDocumentColumnBreakCommand=z,e.InsertDocumentSectionBreakCommand=R,e.InsertTextCommand=v,e.RichTextEditingMutation=_,e.SetDocumentDefaultParagraphStyleCommand=T,e.SetDocumentNameCommand=D,e.SetSectionHeaderFooterLinkCommand=k,e.SetTextSelectionsOperation=i,Object.defineProperty(e,"UniverDocsPlugin",{enumerable:!0,get:function(){return X}}),e.UpdateDocumentParagraphStyleCommand=P,e.UpdateDocumentSectionCommand=L,e.UpdateTextCommand=b,e.addCustomRangeBySelectionFactory=je,e.addCustomRangeFactory=Ae,e.buildDocTransform=Fe,e.consumeContentInsertRange=$,e.createDocsCustomBlockDrawing=W,e.createDocsCustomBlockInsertMutation=fe,e.createDocsCustomBlockRemoveMutation=pe,e.createEmbedDocsCustomBlockData=ve,e.createInsertCustomBlockActions=me,e.createRemoveCustomBlockActions=he,e.createSectionColumnProperties=ae,e.deleteCustomRangeFactory=Me,e.docDrawingPositionToTransform=Ie,e.generateParagraphs=Ne,e.getContentInsertRange=Re,e.getEffectiveSectionPageSetup=ie,e.getSectionContentWidth=I,e.getTopLevelSectionBreaks=O,e.isEmbedDocsCustomBlockData=ye,e.isHeaderFooterSelection=ze,e.isSheetLikeDocsCustomBlockChildType=_e,e.normalizeTextRange=Be,e.replaceSelectionFactory=Pe,e.resolveDocsCustomBlockSize=ge,e.shouldUseInlineTextSelectionForDocsCustomBlockDrawing=be,e.transformToDocDrawingPosition=Le});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/docs",
3
- "version": "1.0.0-beta.0",
3
+ "version": "1.0.0-beta.1",
4
4
  "private": false,
5
5
  "description": "Core document model and rich-text operations for Univer Docs.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -62,14 +62,14 @@
62
62
  "rxjs": ">=7.0.0"
63
63
  },
64
64
  "dependencies": {
65
- "@univerjs/core": "1.0.0-beta.0",
66
- "@univerjs/engine-render": "1.0.0-beta.0"
65
+ "@univerjs/core": "1.0.0-beta.1",
66
+ "@univerjs/engine-render": "1.0.0-beta.1"
67
67
  },
68
68
  "devDependencies": {
69
69
  "rxjs": "^7.8.2",
70
70
  "typescript": "^6.0.3",
71
71
  "vitest": "^4.1.10",
72
- "@univerjs-infra/shared": "1.0.0-beta.0"
72
+ "@univerjs-infra/shared": "1.0.0-beta.1"
73
73
  },
74
74
  "scripts": {
75
75
  "test": "vitest run",