@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 +18 -0
- package/lib/cjs/index.js +76 -21
- package/lib/es/facade.js +19 -1
- package/lib/es/index.js +76 -22
- package/lib/facade.js +19 -1
- package/lib/index.js +76 -22
- package/lib/types/commands/commands/set-document-name.command.d.ts +21 -0
- package/lib/types/commands/mutations/docs-rename.mutation.d.ts +2 -2
- package/lib/types/facade/f-document.d.ts +12 -0
- package/lib/types/index.d.ts +2 -0
- package/lib/types/services/doc-state-emit.service.d.ts +4 -0
- package/lib/umd/facade.js +1 -1
- package/lib/umd/index.js +2 -2
- package/package.json +4 -4
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: {
|
|
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.
|
|
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: {
|
|
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.
|
|
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: {
|
|
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.
|
|
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 {
|
|
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:
|
|
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
|
*
|
package/lib/types/index.d.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
66
|
-
"@univerjs/engine-render": "1.0.0-beta.
|
|
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.
|
|
72
|
+
"@univerjs-infra/shared": "1.0.0-beta.1"
|
|
73
73
|
},
|
|
74
74
|
"scripts": {
|
|
75
75
|
"test": "vitest run",
|