@univerjs/sheets-ui 0.21.1 → 0.22.0

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/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { BreakLineCommand, CoverContentCommand, DOCS_COMPONENT_MAIN_LAYER_INDEX, DOCS_VIEW_KEY, DOC_VERTICAL_PADDING, DeleteLeftCommand, DeleteRightCommand, DocSelectionRenderService, IEditorService, IMEInputCommand, InsertCommand, MoveCursorOperation, MoveSelectionOperation, NodePositionConvertToCursor, ReplaceSnapshotCommand, SetInlineFormatBoldCommand, SetInlineFormatCommand, SetInlineFormatFontFamilyCommand, SetInlineFormatFontSizeCommand, SetInlineFormatItalicCommand, SetInlineFormatStrikethroughCommand, SetInlineFormatSubscriptCommand, SetInlineFormatSuperscriptCommand, SetInlineFormatTextColorCommand, SetInlineFormatUnderlineCommand, VIEWPORT_KEY, convertBodyToHtml, getCanvasOffsetByEngine, getLineBounding } from "@univerjs/docs-ui";
2
- import { AbsoluteRefType, BaselineOffset, BooleanNumber, BorderStyleTypes, CellModeEnum, CellValueType, ColorKit, CommandType, CustomRangeType, DEFAULT_EMPTY_DOCUMENT_VALUE, DEFAULT_STYLES, DEFAULT_WORKSHEET_COLUMN_WIDTH, DEFAULT_WORKSHEET_COLUMN_WIDTH_KEY, DEFAULT_WORKSHEET_ROW_HEIGHT, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY, DOCS_NORMAL_EDITOR_UNIT_ID_KEY, DataStreamTreeTokenType, DependentOn, Direction, Disposable, DisposableCollection, DocumentFlavor, EDITOR_ACTIVATED, ErrorService, FOCUSING_COMMENT_EDITOR, FOCUSING_COMMON_DRAWINGS, FOCUSING_EDITOR_BUT_HIDDEN, FOCUSING_EDITOR_INPUT_FORMULA, FOCUSING_EDITOR_STANDALONE, FOCUSING_FX_BAR_EDITOR, FOCUSING_SHAPE_TEXT_EDITOR, FOCUSING_SHEET, FOCUSING_UNIVER_EDITOR, FontItalic, FontWeight, HorizontalAlign, IAuthzIoService, ICommandService, IConfigService, IConfirmService, IContextService, ILogService, IPermissionService, IUndoRedoService, IUniverInstanceService, Inject, Injector, InterceptorEffectEnum, InterceptorManager, LRUMap, LocaleService, LocaleType, NilCommand, ObjectMatrix, Optional, Plugin, PresetListType, Quantity, RANGE_TYPE, Range, Rectangle, RxDisposable, ThemeService, Tools, UndoCommandId, UniverInstanceType, UserManagerService, VerticalAlign, Workbook, WrapStrategy, cloneCellData, cloneCellDataMatrix, cloneCellDataWithSpanAndDisplay, cloneValue, composeStyles, convertCellToRange, createIdentifier, createInterceptorKey, dateKit, debounce, extractPureTextFromCell, fromEventSubject, generateRandomId, get, getEmptyCell, getNumfmtParseValueFilter, getReverseDirection, handleStyleToString, isFormulaString, isNotNullOrUndefined, isRealNum, isTextFormat, isValidRange, merge, mergeOverrideWithDependencies, nameCharacterCheck, numfmt, registerDependencies, sequenceExecute, set, skipParseTagNames, sortRules, splitIntoGrid, throttle, toDisposable, touchDependencies, willLoseNumericPrecision } from "@univerjs/core";
2
+ import { AbsoluteRefType, BaselineOffset, BooleanNumber, BorderStyleTypes, CellModeEnum, CellValueType, ColorKit, CommandType, CustomRangeType, DEFAULT_EMPTY_DOCUMENT_VALUE, DEFAULT_STYLES, DEFAULT_WORKSHEET_COLUMN_COUNT, DEFAULT_WORKSHEET_COLUMN_WIDTH, DEFAULT_WORKSHEET_COLUMN_WIDTH_KEY, DEFAULT_WORKSHEET_ROW_COUNT, DEFAULT_WORKSHEET_ROW_HEIGHT, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY, DOCS_NORMAL_EDITOR_UNIT_ID_KEY, DataStreamTreeTokenType, DependentOn, Direction, Disposable, DisposableCollection, DocumentFlavor, EDITOR_ACTIVATED, ErrorService, FOCUSING_COMMENT_EDITOR, FOCUSING_COMMON_DRAWINGS, FOCUSING_EDITOR_BUT_HIDDEN, FOCUSING_EDITOR_INPUT_FORMULA, FOCUSING_EDITOR_STANDALONE, FOCUSING_FX_BAR_EDITOR, FOCUSING_SHAPE_TEXT_EDITOR, FOCUSING_SHEET, FOCUSING_UNIVER_EDITOR, FontItalic, FontWeight, HorizontalAlign, IAuthzIoService, ICommandService, IConfigService, IConfirmService, IContextService, ILogService, IPermissionService, IUndoRedoService, IUniverInstanceService, Inject, Injector, InterceptorEffectEnum, InterceptorManager, LRUMap, LocaleService, LocaleType, NilCommand, ObjectMatrix, Optional, Plugin, PresetListType, Quantity, RANGE_TYPE, Range, Rectangle, RxDisposable, ThemeService, Tools, UndoCommandId, UniverInstanceType, UserManagerService, VerticalAlign, Workbook, WrapStrategy, cloneCellData, cloneCellDataMatrix, cloneCellDataWithSpanAndDisplay, cloneValue, composeStyles, convertCellToRange, createIdentifier, createInterceptorKey, dateKit, debounce, extractPureTextFromCell, fromEventSubject, generateRandomId, get, getEmptyCell, getNumfmtParseValueFilter, getReverseDirection, handleStyleToString, isFormulaString, isNotNullOrUndefined, isRealNum, isTextFormat, isValidRange, merge, mergeOverrideWithDependencies, nameCharacterCheck, numfmt, registerDependencies, sequenceExecute, set, skipParseTagNames, sortRules, splitIntoGrid, throttle, toDisposable, touchDependencies, willLoseNumericPrecision } from "@univerjs/core";
3
3
  import { AnchoredContextMenu, BuiltInUIPart, COLOR_PICKER_COMPONENT, ComponentContainer, ComponentManager, ContextMenuGroup, ContextMenuPosition, CopyCommand, CutCommand, DISABLE_AUTO_FOCUS_KEY, FILE_PNG_CLIPBOARD_MIME_TYPE, FILE__BMP_CLIPBOARD_MIME_TYPE, FILE__JPEG_CLIPBOARD_MIME_TYPE, FILE__WEBP_CLIPBOARD_MIME_TYPE, FONT_FAMILY_COMPONENT, FONT_FAMILY_ITEM_COMPONENT, FONT_SIZE_COMPONENT, FONT_SIZE_LIST, HTML_CLIPBOARD_MIME_TYPE, ICanvasPopupService, IClipboardInterfaceService, IContextMenuService, IDialogService, ILayoutService, IMenuManagerService, IMessageService, INotificationService, IPlatformService, IShortcutService, ISidebarService, IUIPartsService, IZenZoneService, KeyCode, MenuItemType, MetaKeys, PLAIN_TEXT_CLIPBOARD_MIME_TYPE, PasteCommand, RibbonDataGroup, RibbonPosition, RibbonStartGroup, SheetPasteShortKeyCommandName, Slider, ToolbarItem, UI_PLUGIN_CONFIG_KEY, UniverMobileUIPlugin, connectInjector, getMenuHiddenObservable, handleStringToStyle, imageMimeTypeSet, sanitizeParsedHtml, textTrim, useComponentsOfPart, useConfigValue, useDependency, useEvent, useObservable, useSidebarClick, useVirtualList } from "@univerjs/ui";
4
4
  import { CURSOR_TYPE, DEFAULT_PADDING_DATA, DashedRect, DeviceInputEventType, FIX_ONE_PIXEL_BLUR_OFFSET, Group, IRenderManagerService, Layer, RENDER_CLASS_TYPE, RENDER_RAW_FORMULA_KEY, Rect, RegularPolygon, SHEET_EXTENSION_PREFIX, SHEET_VIEWPORT_KEY, ScrollBar, ScrollTimer, ScrollTimerType, Shape, SheetExtension, Spreadsheet, SpreadsheetColumnHeader, SpreadsheetRowHeader, TRANSFORM_CHANGE_OBSERVABLE_TYPE, Vector2, Viewport, cancelRequestFrame, convertTextRotation, convertTransformToOffsetX, convertTransformToOffsetY, fixLineWidthByScale, getCurrentTypeOfRenderer, ptToPixel, requestNewFrame, withCurrentTypeOfRenderer } from "@univerjs/engine-render";
5
5
  import { AUTO_FILL_APPLY_TYPE, AUTO_FILL_HOOK_TYPE, AddMergeUndoMutationFactory, AddRangeProtectionCommand, AddRangeProtectionMutation, AddWorksheetMergeAllCommand, AddWorksheetMergeCommand, AddWorksheetMergeHorizontalCommand, AddWorksheetMergeMutation, AddWorksheetMergeVerticalCommand, AddWorksheetProtectionCommand, AutoClearContentCommand, AutoFillCommand, AutoFillController, BEFORE_CELL_EDIT, BorderStyleManagerService, COMMAND_LISTENER_SKELETON_CHANGE, COMMAND_LISTENER_VALUE_CHANGE, CancelFrozenCommand, CancelMarkDirtyRowAutoHeightOperation, ClearSelectionAllCommand, ClearSelectionContentCommand, ClearSelectionFormatCommand, CopySheetCommand, DeleteRangeMoveLeftCommand, DeleteRangeMoveUpCommand, DeleteRangeProtectionCommand, DeleteRangeProtectionMutation, DeleteWorksheetProtectionCommand, DeltaColumnWidthCommand, DeltaRowHeightCommand, EditStateEnum, IAutoFillService, IExclusiveRangeService, INTERCEPTOR_POINT, INumfmtService, IRefSelectionsService, InsertColBeforeCommand, InsertColCommand, InsertColMutation, InsertDefinedNameCommand, InsertMultiColsLeftCommand, InsertMultiColsRightCommand, InsertMultiRowsAboveCommand, InsertMultiRowsAfterCommand, InsertRangeMoveDownCommand, InsertRangeMoveRightCommand, InsertRowBeforeCommand, InsertRowCommand, InsertRowMutation, InsertSheetCommand, InsertSheetMutation, MAX_CELL_PER_SHEET_KEY, MERGE_CELL_INTERCEPTOR_CHECK, MarkDirtyRowAutoHeightOperation, MergeCellController, MoveColsCommand, MoveColsMutation, MoveRangeCommand, MoveRangeMutation, MoveRowsCommand, MoveRowsMutation, REF_SELECTIONS_ENABLED, RangeProtectionCache, RangeProtectionPermissionEditPoint, RangeProtectionPermissionViewPoint, RangeProtectionRuleModel, RefRangeService, RefSelectionsService, RefillCommand, RemoveColCommand, RemoveColMutation, RemoveDefinedNameCommand, RemoveMergeUndoMutationFactory, RemoveRowCommand, RemoveRowMutation, RemoveSheetCommand, RemoveSheetMutation, RemoveWorksheetMergeCommand, RemoveWorksheetMergeMutation, ResetBackgroundColorCommand, ResetTextColorCommand, SCOPE_WORKBOOK_VALUE_DEFINED_NAME, SELECTIONS_ENABLED, SELECTION_CONTROL_BORDER_BUFFER_COLOR, SELECTION_CONTROL_BORDER_BUFFER_WIDTH, SHEETS_PLUGIN_CONFIG_KEY, ScrollToCellOperation, SelectionMoveType, SetBackgroundColorCommand, SetBoldCommand, SetBorderBasicCommand, SetBorderCommand, SetColHiddenCommand, SetColHiddenMutation, SetColVisibleMutation, SetColWidthCommand, SetDefinedNameCommand, SetFontFamilyCommand, SetFontSizeCommand, SetFrozenCommand, SetFrozenMutation, SetFrozenMutationFactory, SetHorizontalTextAlignCommand, SetItalicCommand, SetProtectionCommand, SetRangeValuesCommand, SetRangeValuesMutation, SetRangeValuesUndoMutationFactory, SetRowHeightCommand, SetRowHiddenCommand, SetRowHiddenMutation, SetRowVisibleMutation, SetSelectedColsVisibleCommand, SetSelectedRowsVisibleCommand, SetSelectionsOperation, SetSpecificColsVisibleCommand, SetSpecificRowsVisibleCommand, SetStrikeThroughCommand, SetStyleCommand, SetTabColorCommand, SetTabColorMutation, SetTextColorCommand, SetTextRotationCommand, SetTextWrapCommand, SetUnderlineCommand, SetVerticalTextAlignCommand, SetWorksheetActivateCommand, SetWorksheetActiveOperation, SetWorksheetColWidthMutation, SetWorksheetColWidthMutationFactory, SetWorksheetHideCommand, SetWorksheetHideMutation, SetWorksheetNameCommand, SetWorksheetNameMutation, SetWorksheetOrderCommand, SetWorksheetOrderMutation, SetWorksheetPermissionPointsCommand, SetWorksheetRowAutoHeightMutation, SetWorksheetRowAutoHeightMutationFactory, SetWorksheetRowHeightMutation, SetWorksheetRowIsAutoHeightCommand, SetWorksheetRowIsAutoHeightMutation, SetWorksheetShowCommand, SheetCopyDownCommand, SheetCopyDownCommand as SheetCopyDownCommand$1, SheetCopyRightCommand, SheetCopyRightCommand as SheetCopyRightCommand$1, SheetInterceptorService, SheetPermissionCheckController, SheetPermissionInitController, SheetSkeletonService, SheetsSelectionsService, TextToNumberCommand, ToggleCellCheckboxCommand, ToggleGridlinesCommand, ToggleGridlinesMutation, UnitAction, UnitObject, UniverSheetsPlugin, ViewStateEnum, WorkbookCopyPermission, WorkbookCreateProtectPermission, WorkbookCreateSheetPermission, WorkbookDeleteColumnPermission, WorkbookDeleteRowPermission, WorkbookDeleteSheetPermission, WorkbookEditablePermission, WorkbookHideSheetPermission, WorkbookInsertColumnPermission, WorkbookInsertRowPermission, WorkbookManageCollaboratorPermission, WorkbookRenameSheetPermission, WorksheetCopyPermission, WorksheetDeleteColumnPermission, WorksheetDeleteProtectionPermission, WorksheetDeleteRowPermission, WorksheetEditPermission, WorksheetInsertColumnPermission, WorksheetInsertRowPermission, WorksheetManageCollaboratorPermission, WorksheetProtectionPointModel, WorksheetProtectionRuleModel, WorksheetSetCellStylePermission, WorksheetSetCellValuePermission, WorksheetSetColumnStylePermission, WorksheetSetRowStylePermission, WorksheetViewPermission, adjustRangeOnMutation, alignToMergedCellsBorders, attachPrimaryWithCoord, attachRangeWithCoord, attachSelectionWithCoord, baseProtectionActions, convertPrimaryWithCoordToPrimary, convertSelectionDataToRange, countCells, defaultLargeSheetOperationConfig, discreteRangeToRange, expandToContinuousRange, getAddMergeMutationRangeByType, getAllWorksheetPermissionPoint, getCellAtRowCol, getClearContentMutationParamsForRanges, getMoveRangeCommandMutations, getPrimaryForRange, getSelectionsService, getSheetCommandTarget, rangeToDiscreteRange, setEndForRange, validateDefinedName } from "@univerjs/sheets";
@@ -41,6 +41,16 @@ function whenSheetFocused(contextService) {
41
41
  function whenSheetEditorFocused(contextService) {
42
42
  return contextService.getContextValue(FOCUSING_SHEET) && contextService.getContextValue(FOCUSING_UNIVER_EDITOR) && !contextService.getContextValue(EDITOR_ACTIVATED) && !contextService.getContextValue(FOCUSING_COMMON_DRAWINGS);
43
43
  }
44
+ /**
45
+ * Requires the currently focused unit to be Workbook, regardless of whether the cell editor is activated.
46
+ * Used by inline-format shortcuts (bold/italic/underline/strikethrough) so they can also fire
47
+ * inside the cell editor — the corresponding command will route to the docs inline-format command
48
+ * when EDITOR_ACTIVATED is true.
49
+ * @param contextService
50
+ */
51
+ function whenSheetFocusedInlineFormat(contextService) {
52
+ return contextService.getContextValue(FOCUSING_SHEET) && contextService.getContextValue(FOCUSING_UNIVER_EDITOR) && !contextService.getContextValue(FOCUSING_COMMON_DRAWINGS);
53
+ }
44
54
  function whenSheetEditorFocusedAndFxNotFocused(contextService) {
45
55
  return contextService.getContextValue(FOCUSING_SHEET) && contextService.getContextValue(FOCUSING_UNIVER_EDITOR) && !contextService.getContextValue(EDITOR_ACTIVATED) && !contextService.getContextValue(FOCUSING_FX_BAR_EDITOR) && !contextService.getContextValue(FOCUSING_COMMON_DRAWINGS);
46
56
  }
@@ -175,7 +185,7 @@ let SHEET_VIEW_KEY = /* @__PURE__ */ function(SHEET_VIEW_KEY) {
175
185
  }({});
176
186
 
177
187
  //#endregion
178
- //#region \0@oxc-project+runtime@0.124.0/helpers/typeof.js
188
+ //#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
179
189
  function _typeof(o) {
180
190
  "@babel/helpers - typeof";
181
191
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -186,7 +196,7 @@ function _typeof(o) {
186
196
  }
187
197
 
188
198
  //#endregion
189
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPrimitive.js
199
+ //#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
190
200
  function toPrimitive(t, r) {
191
201
  if ("object" != _typeof(t) || !t) return t;
192
202
  var e = t[Symbol.toPrimitive];
@@ -199,14 +209,14 @@ function toPrimitive(t, r) {
199
209
  }
200
210
 
201
211
  //#endregion
202
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPropertyKey.js
212
+ //#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
203
213
  function toPropertyKey(t) {
204
214
  var i = toPrimitive(t, "string");
205
215
  return "symbol" == _typeof(i) ? i : i + "";
206
216
  }
207
217
 
208
218
  //#endregion
209
- //#region \0@oxc-project+runtime@0.124.0/helpers/defineProperty.js
219
+ //#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
210
220
  function _defineProperty(e, r, t) {
211
221
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
212
222
  value: t,
@@ -347,7 +357,7 @@ const SetRowHeaderWidthCommand = {
347
357
  if (render) {
348
358
  renderManagerSrv.getRenderById(unitId).with(SheetSkeletonManagerService).setRowHeaderSize(render, subUnitId, size);
349
359
  const { components } = render;
350
- const renderComponent = components.get(SHEET_VIEW_KEY.ROW);
360
+ const renderComponent = components.get("__SpreadsheetRowHeader__");
351
361
  if (renderComponent) renderComponent.setCustomHeader({ headerStyle: { size } }, subUnitId);
352
362
  }
353
363
  return true;
@@ -365,7 +375,7 @@ const SetColumnHeaderHeightCommand = {
365
375
  if (render) {
366
376
  renderManagerSrv.getRenderById(unitId).with(SheetSkeletonManagerService).setColumnHeaderSize(render, subUnitId, size);
367
377
  const { components } = render;
368
- const renderComponent = components.get(SHEET_VIEW_KEY.COLUMN);
378
+ const renderComponent = components.get("__SpreadsheetColumnHeader__");
369
379
  if (renderComponent) renderComponent.setCustomHeader({ headerStyle: { size } }, subUnitId);
370
380
  }
371
381
  return true;
@@ -954,7 +964,7 @@ function genSelectionByRange(skeleton, range) {
954
964
  }
955
965
 
956
966
  //#endregion
957
- //#region \0@oxc-project+runtime@0.124.0/helpers/decorateParam.js
967
+ //#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
958
968
  function __decorateParam(paramIndex, decorator) {
959
969
  return function(target, key) {
960
970
  decorator(target, key, paramIndex);
@@ -962,7 +972,7 @@ function __decorateParam(paramIndex, decorator) {
962
972
  }
963
973
 
964
974
  //#endregion
965
- //#region \0@oxc-project+runtime@0.124.0/helpers/decorate.js
975
+ //#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
966
976
  function __decorate(decorators, target, key, desc) {
967
977
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
968
978
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1763,41 +1773,6 @@ var SelectionShapeExtension = class {
1763
1773
 
1764
1774
  //#endregion
1765
1775
  //#region src/services/selection/selection-control.ts
1766
- let SELECTION_MANAGER_KEY = /* @__PURE__ */ function(SELECTION_MANAGER_KEY) {
1767
- SELECTION_MANAGER_KEY["Selection"] = "__SpreadsheetSelectionShape__";
1768
- SELECTION_MANAGER_KEY["top"] = "__SpreadsheetSelectionTopControl__";
1769
- SELECTION_MANAGER_KEY["bottom"] = "__SpreadsheetSelectionBottomControl__";
1770
- SELECTION_MANAGER_KEY["left"] = "__SpreadsheetSelectionShapeLeftControl__";
1771
- SELECTION_MANAGER_KEY["right"] = "__SpreadsheetSelectionShapeRightControl__";
1772
- SELECTION_MANAGER_KEY["backgroundTop"] = "__SpreadsheetSelectionBackgroundControlTop__";
1773
- SELECTION_MANAGER_KEY["backgroundMiddleLeft"] = "__SpreadsheetSelectionBackgroundControlMiddleLeft__";
1774
- SELECTION_MANAGER_KEY["backgroundMiddleRight"] = "__SpreadsheetSelectionBackgroundControlMiddleRight__";
1775
- SELECTION_MANAGER_KEY["backgroundBottom"] = "__SpreadsheetSelectionBackgroundControlBottom__";
1776
- SELECTION_MANAGER_KEY["fill"] = "__SpreadsheetSelectionFillControl__";
1777
- SELECTION_MANAGER_KEY["fillTopLeft"] = "__SpreadsheetSelectionFillControlTopLeft__";
1778
- SELECTION_MANAGER_KEY["fillBottomRight"] = "__SpreadsheetSelectionFillControlBottomRight__";
1779
- SELECTION_MANAGER_KEY["fillTopLeftInner"] = "__SpreadsheetSelectionFillControlTopLeftInner__";
1780
- SELECTION_MANAGER_KEY["fillBottomRightInner"] = "__SpreadsheetSelectionFillControlBottomRightInner__";
1781
- SELECTION_MANAGER_KEY["lineMain"] = "__SpreadsheetDragLineMainControl__";
1782
- SELECTION_MANAGER_KEY["lineContent"] = "__SpreadsheetDragLineContentControl__";
1783
- SELECTION_MANAGER_KEY["line"] = "__SpreadsheetDragLineControl__";
1784
- SELECTION_MANAGER_KEY["dash"] = "__SpreadsheetDragDashControl__";
1785
- SELECTION_MANAGER_KEY["rowHeaderBackground"] = "__SpreadSheetSelectionRowHeaderBackground__";
1786
- SELECTION_MANAGER_KEY["rowHeaderBorder"] = "__SpreadSheetSelectionRowHeaderBorder__";
1787
- SELECTION_MANAGER_KEY["rowHeaderGroup"] = "__SpreadSheetSelectionRowHeaderGroup__";
1788
- SELECTION_MANAGER_KEY["columnHeaderBackground"] = "__SpreadSheetSelectionColumnHeaderBackground__";
1789
- SELECTION_MANAGER_KEY["columnHeaderBorder"] = "__SpreadSheetSelectionColumnHeaderBorder__";
1790
- SELECTION_MANAGER_KEY["columnHeaderGroup"] = "__SpreadSheetSelectionColumnHeaderGroup__";
1791
- SELECTION_MANAGER_KEY["topLeftWidget"] = "__SpreadSheetSelectionTopLeftWidget__";
1792
- SELECTION_MANAGER_KEY["topCenterWidget"] = "__SpreadSheetSelectionTopCenterWidget__";
1793
- SELECTION_MANAGER_KEY["topRightWidget"] = "__SpreadSheetSelectionTopRightWidget__";
1794
- SELECTION_MANAGER_KEY["middleLeftWidget"] = "__SpreadSheetSelectionMiddleLeftWidget__";
1795
- SELECTION_MANAGER_KEY["middleRightWidget"] = "__SpreadSheetSelectionMiddleRightWidget__";
1796
- SELECTION_MANAGER_KEY["bottomLeftWidget"] = "__SpreadSheetSelectionBottomLeftWidget__";
1797
- SELECTION_MANAGER_KEY["bottomCenterWidget"] = "__SpreadSheetSelectionBottomCenterWidget__";
1798
- SELECTION_MANAGER_KEY["bottomRightWidget"] = "__SpreadSheetSelectionBottomRightWidget__";
1799
- return SELECTION_MANAGER_KEY;
1800
- }({});
1801
1776
  const SELECTION_TITLE_HIGHLIGHT_ALPHA = .3;
1802
1777
  /**
1803
1778
  * The main selection canvas component, includes leftControl,rightControl,topControl,bottomControl,backgroundControlTop,backgroundControlMiddleLeft,backgroundControlMiddleRight,backgroundControlBottom,fillControl
@@ -1868,29 +1843,29 @@ var SelectionControl = class extends Disposable {
1868
1843
  this._currentStyle = genNormalSelectionStyle(this._themeService);
1869
1844
  this._selectionRenderModel = new SelectionRenderModel();
1870
1845
  const zIndex = this._zIndex;
1871
- this._leftBorder = new Rect(SELECTION_MANAGER_KEY.left + zIndex, { zIndex });
1872
- this._rightBorder = new Rect(SELECTION_MANAGER_KEY.right + zIndex, { zIndex });
1873
- this._topBorder = new Rect(SELECTION_MANAGER_KEY.top + zIndex, { zIndex });
1874
- this._bottomBorder = new Rect(SELECTION_MANAGER_KEY.bottom + zIndex, { zIndex });
1875
- this._backgroundControlTop = new Rect(SELECTION_MANAGER_KEY.backgroundTop + zIndex, {
1846
+ this._leftBorder = new Rect("__SpreadsheetSelectionShapeLeftControl__" + zIndex, { zIndex });
1847
+ this._rightBorder = new Rect("__SpreadsheetSelectionShapeRightControl__" + zIndex, { zIndex });
1848
+ this._topBorder = new Rect("__SpreadsheetSelectionTopControl__" + zIndex, { zIndex });
1849
+ this._bottomBorder = new Rect("__SpreadsheetSelectionBottomControl__" + zIndex, { zIndex });
1850
+ this._backgroundControlTop = new Rect("__SpreadsheetSelectionBackgroundControlTop__" + zIndex, {
1876
1851
  zIndex: zIndex - 1,
1877
1852
  evented: false
1878
1853
  });
1879
- this._backgroundControlBottom = new Rect(SELECTION_MANAGER_KEY.backgroundBottom + zIndex, {
1854
+ this._backgroundControlBottom = new Rect("__SpreadsheetSelectionBackgroundControlBottom__" + zIndex, {
1880
1855
  zIndex: zIndex - 1,
1881
1856
  evented: false
1882
1857
  });
1883
- this._backgroundControlMiddleLeft = new Rect(SELECTION_MANAGER_KEY.backgroundMiddleLeft + zIndex, {
1858
+ this._backgroundControlMiddleLeft = new Rect("__SpreadsheetSelectionBackgroundControlMiddleLeft__" + zIndex, {
1884
1859
  zIndex: zIndex - 1,
1885
1860
  evented: false
1886
1861
  });
1887
- this._backgroundControlMiddleRight = new Rect(SELECTION_MANAGER_KEY.backgroundMiddleRight + zIndex, {
1862
+ this._backgroundControlMiddleRight = new Rect("__SpreadsheetSelectionBackgroundControlMiddleRight__" + zIndex, {
1888
1863
  zIndex: zIndex - 1,
1889
1864
  evented: false
1890
1865
  });
1891
- this._autoFillControl = new Rect(SELECTION_MANAGER_KEY.fill + zIndex, { zIndex: zIndex + 1 });
1866
+ this._autoFillControl = new Rect("__SpreadsheetSelectionFillControl__" + zIndex, { zIndex: zIndex + 1 });
1892
1867
  this._autoFillControl.hide();
1893
- this._dashedRect = new DashedRect(SELECTION_MANAGER_KEY.dash + zIndex, {
1868
+ this._dashedRect = new DashedRect("__SpreadsheetDragDashControl__" + zIndex, {
1894
1869
  zIndex: zIndex + 2,
1895
1870
  evented: false,
1896
1871
  stroke: "#fff"
@@ -1908,7 +1883,7 @@ var SelectionControl = class extends Disposable {
1908
1883
  this._dashedRect
1909
1884
  ];
1910
1885
  this._widgetRects = this._initialWidget();
1911
- this._selectionShapeGroup = new Group(SELECTION_MANAGER_KEY.Selection + zIndex, ...shapes, ...this._widgetRects);
1886
+ this._selectionShapeGroup = new Group("__SpreadsheetSelectionShape__" + zIndex, ...shapes, ...this._widgetRects);
1912
1887
  this._selectionShapeGroup.hide();
1913
1888
  this._selectionShapeGroup.evented = false;
1914
1889
  this._selectionShapeGroup.zIndex = zIndex;
@@ -1922,27 +1897,27 @@ var SelectionControl = class extends Disposable {
1922
1897
  }
1923
1898
  _initialHeader() {
1924
1899
  const zIndex = this._zIndex;
1925
- this._rowHeaderBackground = new Rect(SELECTION_MANAGER_KEY.rowHeaderBackground + zIndex, {
1900
+ this._rowHeaderBackground = new Rect("__SpreadSheetSelectionRowHeaderBackground__" + zIndex, {
1926
1901
  zIndex: zIndex - 1,
1927
1902
  evented: false
1928
1903
  });
1929
- this._rowHeaderBorder = new Rect(SELECTION_MANAGER_KEY.rowHeaderBorder + zIndex, {
1904
+ this._rowHeaderBorder = new Rect("__SpreadSheetSelectionRowHeaderBorder__" + zIndex, {
1930
1905
  zIndex: zIndex - 1,
1931
1906
  evented: false
1932
1907
  });
1933
- this._rowHeaderGroup = new Group(SELECTION_MANAGER_KEY.rowHeaderGroup + zIndex, this._rowHeaderBackground, this._rowHeaderBorder);
1908
+ this._rowHeaderGroup = new Group("__SpreadSheetSelectionRowHeaderGroup__" + zIndex, this._rowHeaderBackground, this._rowHeaderBorder);
1934
1909
  this._rowHeaderGroup.hide();
1935
1910
  this._rowHeaderGroup.evented = false;
1936
1911
  this._rowHeaderGroup.zIndex = zIndex;
1937
- this._columnHeaderBackground = new Rect(SELECTION_MANAGER_KEY.columnHeaderBackground + zIndex, {
1912
+ this._columnHeaderBackground = new Rect("__SpreadSheetSelectionColumnHeaderBackground__" + zIndex, {
1938
1913
  zIndex: zIndex - 1,
1939
1914
  evented: false
1940
1915
  });
1941
- this._columnHeaderBorder = new Rect(SELECTION_MANAGER_KEY.columnHeaderBorder + zIndex, {
1916
+ this._columnHeaderBorder = new Rect("__SpreadSheetSelectionColumnHeaderBorder__" + zIndex, {
1942
1917
  zIndex: zIndex - 1,
1943
1918
  evented: false
1944
1919
  });
1945
- this._columnHeaderGroup = new Group(SELECTION_MANAGER_KEY.columnHeaderGroup + zIndex, this._columnHeaderBackground, this._columnHeaderBorder);
1920
+ this._columnHeaderGroup = new Group("__SpreadSheetSelectionColumnHeaderGroup__" + zIndex, this._columnHeaderBackground, this._columnHeaderBorder);
1946
1921
  this._columnHeaderGroup.hide();
1947
1922
  this._columnHeaderGroup.evented = false;
1948
1923
  this._columnHeaderGroup.zIndex = zIndex;
@@ -1950,14 +1925,14 @@ var SelectionControl = class extends Disposable {
1950
1925
  }
1951
1926
  _initialWidget() {
1952
1927
  const zIndex = this._zIndex;
1953
- this._topLeftWidget = new Rect(SELECTION_MANAGER_KEY.topLeftWidget + zIndex, { zIndex: zIndex + 1 });
1954
- this._topCenterWidget = new Rect(SELECTION_MANAGER_KEY.topCenterWidget + zIndex, { zIndex: zIndex + 1 });
1955
- this._topRightWidget = new Rect(SELECTION_MANAGER_KEY.topRightWidget + zIndex, { zIndex: zIndex + 1 });
1956
- this._middleLeftWidget = new Rect(SELECTION_MANAGER_KEY.middleLeftWidget + zIndex, { zIndex: zIndex + 1 });
1957
- this._middleRightWidget = new Rect(SELECTION_MANAGER_KEY.middleRightWidget + zIndex, { zIndex: zIndex + 1 });
1958
- this._bottomLeftWidget = new Rect(SELECTION_MANAGER_KEY.bottomLeftWidget + zIndex, { zIndex: zIndex + 1 });
1959
- this._bottomCenterWidget = new Rect(SELECTION_MANAGER_KEY.bottomCenterWidget + zIndex, { zIndex: zIndex + 1 });
1960
- this._bottomRightWidget = new Rect(SELECTION_MANAGER_KEY.bottomRightWidget + zIndex, { zIndex: zIndex + 1 });
1928
+ this._topLeftWidget = new Rect("__SpreadSheetSelectionTopLeftWidget__" + zIndex, { zIndex: zIndex + 1 });
1929
+ this._topCenterWidget = new Rect("__SpreadSheetSelectionTopCenterWidget__" + zIndex, { zIndex: zIndex + 1 });
1930
+ this._topRightWidget = new Rect("__SpreadSheetSelectionTopRightWidget__" + zIndex, { zIndex: zIndex + 1 });
1931
+ this._middleLeftWidget = new Rect("__SpreadSheetSelectionMiddleLeftWidget__" + zIndex, { zIndex: zIndex + 1 });
1932
+ this._middleRightWidget = new Rect("__SpreadSheetSelectionMiddleRightWidget__" + zIndex, { zIndex: zIndex + 1 });
1933
+ this._bottomLeftWidget = new Rect("__SpreadSheetSelectionBottomLeftWidget__" + zIndex, { zIndex: zIndex + 1 });
1934
+ this._bottomCenterWidget = new Rect("__SpreadSheetSelectionBottomCenterWidget__" + zIndex, { zIndex: zIndex + 1 });
1935
+ this._bottomRightWidget = new Rect("__SpreadSheetSelectionBottomRightWidget__" + zIndex, { zIndex: zIndex + 1 });
1961
1936
  return [
1962
1937
  this._topLeftWidget,
1963
1938
  this._topCenterWidget,
@@ -2591,7 +2566,7 @@ var SelectionControl = class extends Disposable {
2591
2566
 
2592
2567
  //#endregion
2593
2568
  //#region src/services/mark-selection/mark-selection.service.ts
2594
- const DEFAULT_Z_INDEX = SELECTION_SHAPE_DEPTH.MARK_SELECTION;
2569
+ const DEFAULT_Z_INDEX = 1e4;
2595
2570
  const IMarkSelectionService = createIdentifier("univer.mark-selection-service");
2596
2571
  let MarkSelectionService = class MarkSelectionService extends Disposable {
2597
2572
  constructor(_currentService, _sheetSkeletonService, _renderManagerService, _themeService) {
@@ -2971,6 +2946,7 @@ var HtmlToUSMService = class HtmlToUSMService {
2971
2946
  _defineProperty(this, "_styleRules", []);
2972
2947
  _defineProperty(this, "_afterProcessRules", []);
2973
2948
  _defineProperty(this, "_dom", null);
2949
+ _defineProperty(this, "_msoNumfmtMap", /* @__PURE__ */ new Map());
2974
2950
  _defineProperty(this, "_getCurrentSkeleton", void 0);
2975
2951
  this._getCurrentSkeleton = props.getCurrentSkeleton;
2976
2952
  }
@@ -2984,6 +2960,8 @@ var HtmlToUSMService = class HtmlToUSMService {
2984
2960
  this._dom = parseToDom(html);
2985
2961
  const style = this._dom.querySelector("style");
2986
2962
  if (style) {
2963
+ var _style$textContent;
2964
+ this._parseMsoNumfmtFromCssText((_style$textContent = style.textContent) !== null && _style$textContent !== void 0 ? _style$textContent : "");
2987
2965
  const shadowHost = document.createElement("div");
2988
2966
  const shadowRoot = shadowHost.attachShadow({ mode: "open" });
2989
2967
  document.body.appendChild(shadowHost);
@@ -3079,6 +3057,40 @@ var HtmlToUSMService = class HtmlToUSMService {
3079
3057
  cellMatrix: valueMatrix
3080
3058
  };
3081
3059
  }
3060
+ /**
3061
+ * Parse mso-number-format from raw CSS text before the browser drops proprietary properties.
3062
+ * Must be called with style.textContent BEFORE the style element is moved into a shadow DOM.
3063
+ */
3064
+ _parseMsoNumfmtFromCssText(rawCssText) {
3065
+ const ruleRegex = /([^{]+)\{([^}]*)\}/g;
3066
+ let match;
3067
+ while ((match = ruleRegex.exec(rawCssText)) !== null) {
3068
+ const selectors = match[1].trim();
3069
+ const numfmtMatch = match[2].match(/mso-number-format\s*:\s*("(?:[^"\\]|\\.)*"|[^;]+)/i);
3070
+ if (!numfmtMatch) continue;
3071
+ let value = numfmtMatch[1].trim();
3072
+ if (value.startsWith("\"") && value.endsWith("\"")) value = value.slice(1, -1);
3073
+ const decoded = decodeMsoNumberFormat(value);
3074
+ selectors.split(",").forEach((sel) => {
3075
+ this._msoNumfmtMap.set(sel.trim(), decoded);
3076
+ });
3077
+ }
3078
+ }
3079
+ /**
3080
+ * Get the mso-number-format value for a given DOM node,
3081
+ * following the same priority as _getStyle: class > id > tag.
3082
+ */
3083
+ _getMsoNumfmtForNode(node) {
3084
+ for (const className of node.classList) {
3085
+ const fmt = this._msoNumfmtMap.get(`.${className}`);
3086
+ if (fmt) return fmt;
3087
+ }
3088
+ if (node.id) {
3089
+ const fmt = this._msoNumfmtMap.get(`#${node.id}`);
3090
+ if (fmt) return fmt;
3091
+ }
3092
+ return this._msoNumfmtMap.get(node.nodeName.toLowerCase());
3093
+ }
3082
3094
  _getStyleBySelectorText(selectorText, cssText) {
3083
3095
  var _this$_styleMap$get;
3084
3096
  const css = (_this$_styleMap$get = this._styleMap.get(selectorText)) === null || _this$_styleMap$get === void 0 ? void 0 : _this$_styleMap$get.getPropertyValue(cssText);
@@ -3161,6 +3173,13 @@ var HtmlToUSMService = class HtmlToUSMService {
3161
3173
  rowSpan: value.rowSpan,
3162
3174
  colSpan: value.colSpan
3163
3175
  };
3176
+ if (value.numfmtPattern) {
3177
+ cellValue.s = {
3178
+ ...cellValue.s,
3179
+ n: { pattern: value.numfmtPattern }
3180
+ };
3181
+ cellValue.v = Number(cellValue.v);
3182
+ }
3164
3183
  valueMatrix.setValue(row, col, cellValue);
3165
3184
  });
3166
3185
  return {
@@ -3202,7 +3221,33 @@ var HtmlToUSMService = class HtmlToUSMService {
3202
3221
  if (borderRight && textTrim(borderRight.substr(borderRight.indexOf(":") + 1)) !== "none") cellStyle = cellStyle.replace(/border-left:[^;]+;/, "");
3203
3222
  }
3204
3223
  }
3205
- const { cellText, cellRichStyle } = this._getCellTextAndRichText(cell, cellStyle, skeleton);
3224
+ let cellText = "";
3225
+ let cellRichStyle;
3226
+ let numfmtPattern;
3227
+ const pattern = this._getMsoNumfmtForNode(cell);
3228
+ if (pattern) {
3229
+ cellText = cell.innerHTML;
3230
+ if (cellText.includes("mso-spacerun:yes")) cellText = cleanMsoSpaceRun(cellText);
3231
+ const parseData = getNumfmtParseValueFilter(cellText);
3232
+ if (typeof (parseData === null || parseData === void 0 ? void 0 : parseData.v) === "number" && (parseData.z === pattern || numfmt.format(pattern, parseData.v) === cellText)) {
3233
+ cellText = parseData.v.toString();
3234
+ numfmtPattern = pattern;
3235
+ } else if (parseData && parseData.z) {
3236
+ cellText = parseData.v.toString();
3237
+ numfmtPattern = parseData.z;
3238
+ } else if (!parseData) {
3239
+ const extractedNumber = extractNumber(cellText);
3240
+ if (extractedNumber !== null && !Number.isNaN(extractedNumber) && numfmt.format(pattern, extractedNumber) === cellText) {
3241
+ cellText = extractedNumber.toString();
3242
+ numfmtPattern = pattern;
3243
+ }
3244
+ }
3245
+ }
3246
+ if (!numfmtPattern) {
3247
+ const cellTextAndRichText = this._getCellTextAndRichText(cell, cellStyle, skeleton);
3248
+ cellText = cellTextAndRichText.cellText;
3249
+ cellRichStyle = cellTextAndRichText.cellRichStyle;
3250
+ }
3206
3251
  const cellValue = {
3207
3252
  rowSpan,
3208
3253
  colSpan,
@@ -3211,7 +3256,8 @@ var HtmlToUSMService = class HtmlToUSMService {
3211
3256
  richTextParma: {
3212
3257
  p: cellRichStyle,
3213
3258
  v: cellText
3214
- }
3259
+ },
3260
+ numfmtPattern
3215
3261
  };
3216
3262
  if (cellMatrix.getValue(rowIndex, colSetValueIndex)) {
3217
3263
  colSetValueIndex += 1;
@@ -3269,9 +3315,9 @@ var HtmlToUSMService = class HtmlToUSMService {
3269
3315
  * "<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1,234.57 "
3270
3316
  */
3271
3317
  if (cell.innerHTML.includes("mso-spacerun:yes")) {
3272
- const cellText = cell.innerHTML.replace(/<span[^>]*mso-spacerun:yes[^>]*>[\s\S]*?<\/span>/gi, "").replace(/\s/g, "");
3318
+ const cellText = cleanMsoSpaceRun(cell.innerHTML);
3273
3319
  const parseInfo = getNumfmtParseValueFilter(cellText);
3274
- if (parseInfo && parseInfo.z && isRealNum(parseInfo.v)) return {
3320
+ if (parseInfo && parseInfo.z && typeof parseInfo.v === "number") return {
3275
3321
  cellText,
3276
3322
  cellRichStyle: void 0
3277
3323
  };
@@ -3391,6 +3437,7 @@ var HtmlToUSMService = class HtmlToUSMService {
3391
3437
  this._dom = null;
3392
3438
  this._styleCache.clear();
3393
3439
  this._styleMap.clear();
3440
+ this._msoNumfmtMap.clear();
3394
3441
  }
3395
3442
  };
3396
3443
  _defineProperty(HtmlToUSMService, "_pluginList", []);
@@ -3489,11 +3536,38 @@ function setMergedCellStyle(cellMatrix, cellStyle, cellValue, indexParams) {
3489
3536
  });
3490
3537
  else cellMatrix.setValue(i, j, { style: cellStyle });
3491
3538
  }
3539
+ /**
3540
+ * Decode mso-number-format value from Excel HTML CSS.
3541
+ * Excel escapes certain characters in CSS with backslash, and uses \0022 for double-quote.
3542
+ * e.g. "_\(* \#\,\#\#0_\)\;_\(* \\\(\#\,\#\#0\\\)\;_\(* \0022-\0022??_\)\;_\(\@_\)"
3543
+ * → "_(* #,##0_);_(* \(#,##0\);_(* \"-\"??_);_(@_)"
3544
+ */
3545
+ function decodeMsoNumberFormat(value) {
3546
+ let result = value.replace(/\\([0-9a-fA-F]{4})/g, (_, hex) => String.fromCharCode(Number.parseInt(hex, 16)));
3547
+ result = result.replace(/\\\\/g, "\0BACKSLASH\0");
3548
+ result = result.replace(/\\([^\\])/g, "$1");
3549
+ result = result.replace(/\x00BACKSLASH\x00/g, "\\");
3550
+ return result;
3551
+ }
3552
+ function cleanMsoSpaceRun(value) {
3553
+ return value.replace(/<span[^>]*mso-spacerun:yes[^>]*>/gi, "").replace(/<\/span>/gi, "").replace(/\u00A0|&nbsp;/gi, "");
3554
+ }
3555
+ function extractNumber(value) {
3556
+ const match = value.match(/\(?-?\d[\d,]*(\.\d+)?%?\)?/);
3557
+ if (!match) return null;
3558
+ let numStr = match[0];
3559
+ const isPercent = numStr.includes("%");
3560
+ numStr = numStr.replace(/[,%]/g, "");
3561
+ if (/^\(.*\)$/.test(numStr)) numStr = `-${numStr.slice(1, -1)}`;
3562
+ let num = Number(numStr);
3563
+ if (isPercent) num = num / 100;
3564
+ return num;
3565
+ }
3492
3566
 
3493
3567
  //#endregion
3494
3568
  //#region src/services/clipboard/html-to-usm/paste-plugins/plugin-lark.ts
3495
3569
  const LarkPastePlugin = {
3496
- name: "univer-doc-paste-plugin-lark",
3570
+ name: "univer-sheet-paste-plugin-lark",
3497
3571
  checkPasteType(html) {
3498
3572
  return /lark-record-clipboard/i.test(html);
3499
3573
  },
@@ -3522,7 +3596,7 @@ const LarkPastePlugin = {
3522
3596
  //#endregion
3523
3597
  //#region src/services/clipboard/html-to-usm/paste-plugins/plugin-univer.ts
3524
3598
  const UniverPastePlugin = {
3525
- name: "univer-doc-paste-plugin-univer",
3599
+ name: "univer-sheet-paste-plugin-univer",
3526
3600
  checkPasteType(html) {
3527
3601
  return /UniverNormal/i.test(html);
3528
3602
  },
@@ -3545,7 +3619,7 @@ const UniverPastePlugin = {
3545
3619
  //#endregion
3546
3620
  //#region src/services/clipboard/html-to-usm/paste-plugins/plugin-word.ts
3547
3621
  const WordPastePlugin = {
3548
- name: "univer-doc-paste-plugin-word",
3622
+ name: "univer-sheet-paste-plugin-word",
3549
3623
  checkPasteType(html) {
3550
3624
  return /word|mso/i.test(html);
3551
3625
  },
@@ -3944,7 +4018,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
3944
4018
  return this._copyContentCache;
3945
4019
  }
3946
4020
  generateCopyContent(workbookId, worksheetId, range, options) {
3947
- const { copyType = COPY_TYPE.COPY, copyHookType = PREDEFINED_HOOK_NAME_COPY.DEFAULT_COPY } = options || {};
4021
+ const { copyType = "COPY", copyHookType = PREDEFINED_HOOK_NAME_COPY.DEFAULT_COPY } = options || {};
3948
4022
  let hooks = this._clipboardHooks;
3949
4023
  if (copyHookType === PREDEFINED_HOOK_NAME_COPY.SPECIAL_COPY_FORMULA_ONLY) hooks = this._clipboardHooks.filter((h) => h.id === copyHookType);
3950
4024
  hooks.forEach((h) => {
@@ -3966,7 +4040,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
3966
4040
  if (!workbook || !worksheet) return false;
3967
4041
  const workbookId = workbook.getUnitId();
3968
4042
  const worksheetId = worksheet.getSheetId();
3969
- const { copyType = COPY_TYPE.COPY, copyHookType = PREDEFINED_HOOK_NAME_COPY.DEFAULT_COPY } = options || {};
4043
+ const { copyType = "COPY", copyHookType = PREDEFINED_HOOK_NAME_COPY.DEFAULT_COPY } = options || {};
3970
4044
  const copyContent = this.generateCopyContent(workbookId, worksheetId, selection.range, {
3971
4045
  copyType,
3972
4046
  copyHookType
@@ -3990,7 +4064,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
3990
4064
  return true;
3991
4065
  }
3992
4066
  async cut() {
3993
- return this.copy({ copyType: COPY_TYPE.CUT });
4067
+ return this.copy({ copyType: "CUT" });
3994
4068
  }
3995
4069
  async paste(item, pasteType = PREDEFINED_HOOK_NAME_PASTE.DEFAULT_PASTE) {
3996
4070
  const types = item.types;
@@ -4036,7 +4110,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
4036
4110
  const undoRedoService = this._injector.get(IUndoRedoService);
4037
4111
  const element = undoRedoService.pitchTopUndoElement();
4038
4112
  if (element) {
4039
- if (sequenceExecute(element.undoMutations, this._commandService)) undoRedoService.popUndoToRedo();
4113
+ if (sequenceExecute(element.undoMutations, this._commandService).result) undoRedoService.popUndoToRedo();
4040
4114
  }
4041
4115
  const { cellMatrix, rowProperties = [], colProperties = [], source, target } = pasteOptionsCache;
4042
4116
  this._pasteUSM({
@@ -4280,7 +4354,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
4280
4354
  range.rows.forEach((j) => {
4281
4355
  rowProperties.push({ height: `${rowManager.getRowHeight(j)}` });
4282
4356
  });
4283
- if (cachedData.copyType === COPY_TYPE.CUT) {
4357
+ if (cachedData.copyType === "CUT") {
4284
4358
  const start = pasteTarget.pastedRange.rows[0];
4285
4359
  const end = range.rows[range.rows.length - 1] - range.rows[0] + start;
4286
4360
  pasteTarget.pastedRange.rows = Array.from(new Array(end + 1).keys()).slice(start);
@@ -4296,7 +4370,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
4296
4370
  copyType: cachedData.copyType,
4297
4371
  copyId
4298
4372
  });
4299
- if (cachedData.copyType === COPY_TYPE.CUT) {
4373
+ if (cachedData.copyType === "CUT") {
4300
4374
  this._copyContentCache.set(copyId, {
4301
4375
  ...cachedData,
4302
4376
  matrix: null
@@ -4332,7 +4406,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
4332
4406
  range: source.range
4333
4407
  } : null;
4334
4408
  const payload = {
4335
- copyType: (source === null || source === void 0 ? void 0 : source.copyType) || COPY_TYPE.COPY,
4409
+ copyType: (source === null || source === void 0 ? void 0 : source.copyType) || "COPY",
4336
4410
  copyId: source === null || source === void 0 ? void 0 : source.copyId,
4337
4411
  pasteType
4338
4412
  };
@@ -4369,7 +4443,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
4369
4443
  undoMutationsInfo.push(...contentReturn.undos);
4370
4444
  }
4371
4445
  });
4372
- if (payload.copyType === COPY_TYPE.COPY) {
4446
+ if (payload.copyType === "COPY") {
4373
4447
  const setSelectionOperation = this._getSetSelectionOperation(unitId, subUnitId, pastedRange, cellMatrix, pasteType);
4374
4448
  if (setSelectionOperation) redoMutationsInfo.push(setSelectionOperation);
4375
4449
  }
@@ -4784,6 +4858,7 @@ function getCellTextForClipboard(cell) {
4784
4858
  if (isNotNullOrUndefined(cell.displayV)) return cell.displayV;
4785
4859
  return extractPureTextFromCell(cell);
4786
4860
  }
4861
+ const escapeSpecialCode = (cellStr) => cellStr.replace(/&/g, "&amp;").replace(/\uFEFF/g, "").replace(/</g, "&lt;").replace(/>/g, "&gt;");
4787
4862
  function rowAcrossMergedCell(row, startColumn, endColumn, worksheet) {
4788
4863
  return worksheet.getMergeData().some((mergedCell) => mergedCell.startRow <= row && row < mergedCell.endRow && startColumn <= mergedCell.startColumn && mergedCell.startColumn <= endColumn);
4789
4864
  }
@@ -6138,7 +6213,7 @@ let FormatPainterService = class FormatPainterService extends Disposable {
6138
6213
  _defineProperty(this, "_status$", void 0);
6139
6214
  _defineProperty(this, "_defaultHook", null);
6140
6215
  _defineProperty(this, "_extendHooks", []);
6141
- this._status$ = new BehaviorSubject(FormatPainterStatus.OFF);
6216
+ this._status$ = new BehaviorSubject(0);
6142
6217
  this.status$ = this._status$.asObservable();
6143
6218
  this._selectionFormat = {
6144
6219
  styles: new ObjectMatrix(),
@@ -6209,11 +6284,11 @@ let FormatPainterService = class FormatPainterService extends Disposable {
6209
6284
  }
6210
6285
  _updateRangeMark(status) {
6211
6286
  this._markSelectionService.removeAllShapes();
6212
- if (status !== FormatPainterStatus.OFF) {
6287
+ if (status !== 0) {
6213
6288
  const selection = this._selectionManagerService.getCurrentLastSelection();
6214
6289
  if (selection) {
6215
6290
  const style = createCopyPasteSelectionStyle(this._themeService);
6216
- if (status === FormatPainterStatus.INFINITE) this._markId = this._markSelectionService.addShape({
6291
+ if (status === 2) this._markId = this._markSelectionService.addShape({
6217
6292
  ...selection,
6218
6293
  style
6219
6294
  });
@@ -6254,8 +6329,8 @@ const SetInfiniteFormatPainterCommand = {
6254
6329
  handler: async (accessor) => {
6255
6330
  const status = accessor.get(IFormatPainterService).getStatus();
6256
6331
  let newStatus;
6257
- if (status !== FormatPainterStatus.OFF) newStatus = FormatPainterStatus.OFF;
6258
- else newStatus = FormatPainterStatus.INFINITE;
6332
+ if (status !== 0) newStatus = 0;
6333
+ else newStatus = 2;
6259
6334
  return accessor.get(ICommandService).executeCommand(SetFormatPainterOperation.id, { status: newStatus });
6260
6335
  }
6261
6336
  };
@@ -6265,8 +6340,8 @@ const SetOnceFormatPainterCommand = {
6265
6340
  handler: async (accessor) => {
6266
6341
  const status = accessor.get(IFormatPainterService).getStatus();
6267
6342
  let newStatus;
6268
- if (status !== FormatPainterStatus.OFF) newStatus = FormatPainterStatus.OFF;
6269
- else newStatus = FormatPainterStatus.ONCE;
6343
+ if (status !== 0) newStatus = 0;
6344
+ else newStatus = 1;
6270
6345
  return accessor.get(ICommandService).executeCommand(SetFormatPainterOperation.id, { status: newStatus });
6271
6346
  }
6272
6347
  };
@@ -6403,14 +6478,6 @@ SheetScrollManagerService = __decorate([__decorateParam(1, Inject(SheetSkeletonM
6403
6478
 
6404
6479
  //#endregion
6405
6480
  //#region src/commands/commands/set-frozen.command.ts
6406
- let SetSelectionFrozenType = /* @__PURE__ */ function(SetSelectionFrozenType) {
6407
- SetSelectionFrozenType[SetSelectionFrozenType["RowColumn"] = 0] = "RowColumn";
6408
- SetSelectionFrozenType[SetSelectionFrozenType["Row"] = 1] = "Row";
6409
- SetSelectionFrozenType[SetSelectionFrozenType["Column"] = 2] = "Column";
6410
- SetSelectionFrozenType[SetSelectionFrozenType["FirstRow"] = 3] = "FirstRow";
6411
- SetSelectionFrozenType[SetSelectionFrozenType["FirstColumn"] = 4] = "FirstColumn";
6412
- return SetSelectionFrozenType;
6413
- }({});
6414
6481
  const SetSelectionFrozenCommand = {
6415
6482
  type: CommandType.COMMAND,
6416
6483
  id: "sheet.command.set-selection-frozen",
@@ -6429,12 +6496,12 @@ const SetSelectionFrozenCommand = {
6429
6496
  let startColumn;
6430
6497
  let freezedRowCount;
6431
6498
  let freezedColCount;
6432
- if (type === SetSelectionFrozenType.FirstRow) {
6499
+ if (type === 3) {
6433
6500
  startRow = sheetViewStartRow + 1;
6434
6501
  freezedRowCount = 1;
6435
6502
  startColumn = -1;
6436
6503
  freezedColCount = 0;
6437
- } else if (type === SetSelectionFrozenType.FirstColumn) {
6504
+ } else if (type === 4) {
6438
6505
  startRow = -1;
6439
6506
  freezedRowCount = 0;
6440
6507
  startColumn = sheetViewStartColumn + 1;
@@ -6447,12 +6514,12 @@ const SetSelectionFrozenCommand = {
6447
6514
  let selectColumn = (_primary$startColumn = primary === null || primary === void 0 ? void 0 : primary.startColumn) !== null && _primary$startColumn !== void 0 ? _primary$startColumn : range.startColumn;
6448
6515
  if (selectColumn === 0) selectColumn = 1;
6449
6516
  const rangeType = range.rangeType;
6450
- if (rangeType === RANGE_TYPE.ROW || type === SetSelectionFrozenType.Row) {
6517
+ if (rangeType === RANGE_TYPE.ROW || type === 1) {
6451
6518
  startRow = selectRow;
6452
6519
  freezedRowCount = selectRow - sheetViewStartRow;
6453
6520
  startColumn = -1;
6454
6521
  freezedColCount = 0;
6455
- } else if (rangeType === RANGE_TYPE.COLUMN || type === SetSelectionFrozenType.Column) {
6522
+ } else if (rangeType === RANGE_TYPE.COLUMN || type === 2) {
6456
6523
  startRow = -1;
6457
6524
  freezedRowCount = 0;
6458
6525
  startColumn = selectColumn;
@@ -6494,7 +6561,7 @@ const SetRowFrozenCommand = {
6494
6561
  type: CommandType.COMMAND,
6495
6562
  id: "sheet.command.set-row-frozen",
6496
6563
  handler: async (accessor) => {
6497
- accessor.get(ICommandService).executeCommand(SetSelectionFrozenCommand.id, { type: SetSelectionFrozenType.Row });
6564
+ accessor.get(ICommandService).executeCommand(SetSelectionFrozenCommand.id, { type: 1 });
6498
6565
  return true;
6499
6566
  }
6500
6567
  };
@@ -6502,7 +6569,7 @@ const SetColumnFrozenCommand = {
6502
6569
  type: CommandType.COMMAND,
6503
6570
  id: "sheet.command.set-col-frozen",
6504
6571
  handler: async (accessor) => {
6505
- accessor.get(ICommandService).executeCommand(SetSelectionFrozenCommand.id, { type: SetSelectionFrozenType.Column });
6572
+ accessor.get(ICommandService).executeCommand(SetSelectionFrozenCommand.id, { type: 2 });
6506
6573
  return true;
6507
6574
  }
6508
6575
  };
@@ -6510,7 +6577,7 @@ const SetFirstRowFrozenCommand = {
6510
6577
  type: CommandType.COMMAND,
6511
6578
  id: "sheet.command.set-first-row-frozen",
6512
6579
  handler: async (accessor) => {
6513
- accessor.get(ICommandService).executeCommand(SetSelectionFrozenCommand.id, { type: SetSelectionFrozenType.FirstRow });
6580
+ accessor.get(ICommandService).executeCommand(SetSelectionFrozenCommand.id, { type: 3 });
6514
6581
  return true;
6515
6582
  }
6516
6583
  };
@@ -6518,7 +6585,7 @@ const SetFirstColumnFrozenCommand = {
6518
6585
  type: CommandType.COMMAND,
6519
6586
  id: "sheet.command.set-first-column-frozen",
6520
6587
  handler: async (accessor) => {
6521
- accessor.get(ICommandService).executeCommand(SetSelectionFrozenCommand.id, { type: SetSelectionFrozenType.FirstColumn });
6588
+ accessor.get(ICommandService).executeCommand(SetSelectionFrozenCommand.id, { type: 4 });
6522
6589
  return true;
6523
6590
  }
6524
6591
  };
@@ -6616,7 +6683,7 @@ const MoveSelectionCommand = {
6616
6683
  }
6617
6684
  }
6618
6685
  const startRange = getStartRange(range, primary, direction);
6619
- const next = jumpOver === JumpOver.moveGap ? findNextGapRange(startRange, direction, worksheet) : findNextRange(startRange, direction, worksheet);
6686
+ const next = jumpOver === 1 ? findNextGapRange(startRange, direction, worksheet) : findNextRange(startRange, direction, worksheet);
6620
6687
  const destRange = getCellAtRowCol(next.startRow, next.startColumn, worksheet);
6621
6688
  if (Rectangle.equals(destRange, startRange)) return false;
6622
6689
  const unitId = workbook.getUnitId();
@@ -6808,7 +6875,7 @@ const ExpandSelectionCommand = {
6808
6875
  const destRange = !checkIfShrink({
6809
6876
  range: startRange,
6810
6877
  primary
6811
- }, direction, worksheet) ? jumpOver === JumpOver.moveGap ? expandToNextGapRange(startRange, direction, worksheet) : expandToNextCell(startRange, direction, worksheet) : jumpOver === JumpOver.moveGap ? shrinkToNextGapRange(startRange, {
6878
+ }, direction, worksheet) ? jumpOver === 1 ? expandToNextGapRange(startRange, direction, worksheet) : expandToNextCell(startRange, direction, worksheet) : jumpOver === 1 ? shrinkToNextGapRange(startRange, {
6812
6879
  ...Rectangle.clone(primary),
6813
6880
  rangeType: RANGE_TYPE.NORMAL
6814
6881
  }, direction, worksheet) : shrinkToNextCell(startRange, direction, worksheet);
@@ -6890,8 +6957,7 @@ const SelectAllCommand = {
6890
6957
  params: { range }
6891
6958
  });
6892
6959
  if (interceptor.redos.length) redos.push(...interceptor.redos);
6893
- sequenceExecute(redos, accessor.get(ICommandService));
6894
- return true;
6960
+ return sequenceExecute(redos, accessor.get(ICommandService)).result;
6895
6961
  }
6896
6962
  };
6897
6963
 
@@ -6925,9 +6991,9 @@ function getSheetObject(univerInstanceService, renderManagerService) {
6925
6991
  if (!components || !mainComponent) return null;
6926
6992
  return {
6927
6993
  spreadsheet: mainComponent,
6928
- spreadsheetRowHeader: components.get(SHEET_VIEW_KEY.ROW),
6929
- spreadsheetColumnHeader: components.get(SHEET_VIEW_KEY.COLUMN),
6930
- spreadsheetLeftTopPlaceholder: components.get(SHEET_VIEW_KEY.LEFT_TOP),
6994
+ spreadsheetRowHeader: components.get("__SpreadsheetRowHeader__"),
6995
+ spreadsheetColumnHeader: components.get("__SpreadsheetColumnHeader__"),
6996
+ spreadsheetLeftTopPlaceholder: components.get("__SpreadsheetLeftTopPlaceholder__"),
6931
6997
  scene,
6932
6998
  engine
6933
6999
  };
@@ -9661,21 +9727,21 @@ let RepeatLastActionService = class RepeatLastActionService extends Disposable {
9661
9727
  _defineProperty(this, "_repeatableCommands", new Set(SHEETS_BASIC_REPEATABLE_COMMANDS));
9662
9728
  _defineProperty(this, "_customCommandHandlers", /* @__PURE__ */ new Map());
9663
9729
  _defineProperty(this, "_permissionCheckMap", new Map([
9664
- [RepeatLastActionPermission.Editable, new Set([
9730
+ ["editable", new Set([
9665
9731
  InsertRowCommand.id,
9666
9732
  InsertColCommand.id,
9667
9733
  RemoveRowCommand.id,
9668
9734
  RemoveColCommand.id
9669
9735
  ])],
9670
- [RepeatLastActionPermission.CellStyle, new Set([
9736
+ ["cellStyle", new Set([
9671
9737
  SetStyleCommand.id,
9672
9738
  SetBorderCommand.id,
9673
9739
  ClearSelectionFormatCommand.id,
9674
9740
  ClearSelectionAllCommand.id
9675
9741
  ])],
9676
- [RepeatLastActionPermission.CellValue, new Set([ClearSelectionContentCommand.id, ClearSelectionAllCommand.id])],
9677
- [RepeatLastActionPermission.RowStyle, new Set([SetRowHeightCommand.id])],
9678
- [RepeatLastActionPermission.ColumnStyle, new Set([SetColWidthCommand.id])]
9742
+ ["cellValue", new Set([ClearSelectionContentCommand.id, ClearSelectionAllCommand.id])],
9743
+ ["rowStyle", new Set([SetRowHeightCommand.id])],
9744
+ ["columnStyle", new Set([SetColWidthCommand.id])]
9679
9745
  ]));
9680
9746
  }
9681
9747
  dispose() {
@@ -9696,13 +9762,13 @@ let RepeatLastActionService = class RepeatLastActionService extends Disposable {
9696
9762
  return this._repeatableCommands;
9697
9763
  }
9698
9764
  getActionPermission() {
9699
- if (!this._action) return RepeatLastActionPermission.None;
9765
+ if (!this._action) return "none";
9700
9766
  const permissions = [];
9701
9767
  for (const [permission, commandSet] of this._permissionCheckMap.entries()) if (commandSet.has(this._action.id)) permissions.push(permission);
9702
- if (permissions.length === 0) return RepeatLastActionPermission.None;
9768
+ if (permissions.length === 0) return "none";
9703
9769
  return permissions.length === 1 ? permissions[0] : permissions;
9704
9770
  }
9705
- registerRepeatableCommand(commandId, handler, permissionType = RepeatLastActionPermission.None) {
9771
+ registerRepeatableCommand(commandId, handler, permissionType = "none") {
9706
9772
  var _this$_permissionChec;
9707
9773
  this._repeatableCommands.add(commandId);
9708
9774
  this._customCommandHandlers.set(commandId, handler);
@@ -9772,7 +9838,7 @@ RepeatLastActionService = __decorate([__decorateParam(0, ICommandService)], Repe
9772
9838
  //#endregion
9773
9839
  //#region src/commands/commands/repeat-last-action.command.ts
9774
9840
  const permissionCheckMap = {
9775
- [RepeatLastActionPermission.Editable]: {
9841
+ ["editable"]: {
9776
9842
  permissionTypes: {
9777
9843
  workbookTypes: [WorkbookEditablePermission],
9778
9844
  worksheetTypes: [WorksheetEditPermission],
@@ -9780,7 +9846,7 @@ const permissionCheckMap = {
9780
9846
  },
9781
9847
  errorMessageKey: "permission.dialog.editErr"
9782
9848
  },
9783
- [RepeatLastActionPermission.CellStyle]: {
9849
+ ["cellStyle"]: {
9784
9850
  permissionTypes: {
9785
9851
  workbookTypes: [WorkbookEditablePermission],
9786
9852
  worksheetTypes: [WorksheetEditPermission, WorksheetSetCellStylePermission],
@@ -9788,7 +9854,7 @@ const permissionCheckMap = {
9788
9854
  },
9789
9855
  errorMessageKey: "permission.dialog.setStyleErr"
9790
9856
  },
9791
- [RepeatLastActionPermission.CellValue]: {
9857
+ ["cellValue"]: {
9792
9858
  permissionTypes: {
9793
9859
  workbookTypes: [WorkbookEditablePermission],
9794
9860
  worksheetTypes: [WorksheetEditPermission, WorksheetSetCellValuePermission],
@@ -9796,7 +9862,7 @@ const permissionCheckMap = {
9796
9862
  },
9797
9863
  errorMessageKey: "permission.dialog.editErr"
9798
9864
  },
9799
- [RepeatLastActionPermission.RowStyle]: {
9865
+ ["rowStyle"]: {
9800
9866
  permissionTypes: {
9801
9867
  workbookTypes: [WorkbookEditablePermission],
9802
9868
  worksheetTypes: [WorksheetEditPermission, WorksheetSetRowStylePermission],
@@ -9804,7 +9870,7 @@ const permissionCheckMap = {
9804
9870
  },
9805
9871
  errorMessageKey: "permission.dialog.setRowColStyleErr"
9806
9872
  },
9807
- [RepeatLastActionPermission.ColumnStyle]: {
9873
+ ["columnStyle"]: {
9808
9874
  permissionTypes: {
9809
9875
  workbookTypes: [WorkbookEditablePermission],
9810
9876
  worksheetTypes: [WorksheetEditPermission, WorksheetSetColumnStylePermission],
@@ -9825,14 +9891,14 @@ const RepeatLastActionCommand = {
9825
9891
  const localeService = accessor.get(LocaleService);
9826
9892
  const actionPermissionType = repeatLastActionService.getActionPermission();
9827
9893
  if (Array.isArray(actionPermissionType)) for (const permissionType of actionPermissionType) {
9828
- if (permissionType === RepeatLastActionPermission.None) continue;
9894
+ if (permissionType === "none") continue;
9829
9895
  const permissionConfig = permissionCheckMap[permissionType];
9830
9896
  if (!sheetPermissionCheckController.permissionCheckWithRanges(permissionConfig.permissionTypes)) {
9831
9897
  sheetPermissionCheckController.blockExecuteWithoutPermission(localeService.t(permissionConfig.errorMessageKey));
9832
9898
  return false;
9833
9899
  }
9834
9900
  }
9835
- else if (actionPermissionType !== RepeatLastActionPermission.None) {
9901
+ else if (actionPermissionType !== "none") {
9836
9902
  const permissionConfig = permissionCheckMap[actionPermissionType];
9837
9903
  if (!sheetPermissionCheckController.permissionCheckWithRanges(permissionConfig.permissionTypes)) {
9838
9904
  sheetPermissionCheckController.blockExecuteWithoutPermission(localeService.t(permissionConfig.errorMessageKey));
@@ -10247,12 +10313,6 @@ const isRangeSelector = (unitId) => {
10247
10313
  //#endregion
10248
10314
  //#region src/controllers/editor/editing.render-controller.ts
10249
10315
  const HIDDEN_EDITOR_POSITION$1 = -1e3;
10250
- var CursorChange = /* @__PURE__ */ function(CursorChange) {
10251
- CursorChange[CursorChange["InitialState"] = 0] = "InitialState";
10252
- CursorChange[CursorChange["StartEditor"] = 1] = "StartEditor";
10253
- CursorChange[CursorChange["CursorChange"] = 2] = "CursorChange";
10254
- return CursorChange;
10255
- }(CursorChange || {});
10256
10316
  let EditingRenderController = class EditingRenderController extends Disposable {
10257
10317
  constructor(_undoRedoService, _contextService, _renderManagerService, _editorBridgeService, _cellEditorManagerService, _lexerTreeBuilder, _functionService, _textSelectionManagerService, _commandService, _localService, _editorService, _univerInstanceService, _sheetInterceptorService, _sheetCellEditorResizeService, _selectionManagerService, _configService) {
10258
10318
  super();
@@ -10272,7 +10332,7 @@ let EditingRenderController = class EditingRenderController extends Disposable {
10272
10332
  this._sheetCellEditorResizeService = _sheetCellEditorResizeService;
10273
10333
  this._selectionManagerService = _selectionManagerService;
10274
10334
  this._configService = _configService;
10275
- _defineProperty(this, "_cursorChange", CursorChange.InitialState);
10335
+ _defineProperty(this, "_cursorChange", 0);
10276
10336
  _defineProperty(this, "_editingUnit", "");
10277
10337
  _defineProperty(this, "_cursorTimeout", void 0);
10278
10338
  this.disposeWithMe(this._init());
@@ -10448,19 +10508,19 @@ let EditingRenderController = class EditingRenderController extends Disposable {
10448
10508
  * the up, down, left, and right keys can no longer switch editing cells,
10449
10509
  * but move the cursor within the editor instead.
10450
10510
  */
10451
- if (keycode != null && (this._cursorChange === CursorChange.CursorChange || this._contextService.getContextValue(FOCUSING_FX_BAR_EDITOR))) {
10511
+ if (keycode != null && (this._cursorChange === 2 || this._contextService.getContextValue(FOCUSING_FX_BAR_EDITOR))) {
10452
10512
  this._moveInEditor(keycode, isShift);
10453
10513
  return;
10454
10514
  }
10455
10515
  this._commandService.syncExecuteCommand(SetCellEditVisibleOperation.id, params);
10456
10516
  }
10457
- if (command.id === SetCellEditVisibleWithF2Operation.id) this._cursorChange = CursorChange.CursorChange;
10517
+ if (command.id === SetCellEditVisibleWithF2Operation.id) this._cursorChange = 2;
10458
10518
  }));
10459
10519
  }
10460
10520
  _handleEditorVisible(param) {
10461
10521
  var _this$_sheetCellEdito4, _this$_renderManagerS5;
10462
10522
  const { eventType, keycode } = param;
10463
- this._cursorChange = eventType === DeviceInputEventType.PointerDown || eventType === DeviceInputEventType.Dblclick ? CursorChange.CursorChange : CursorChange.StartEditor;
10523
+ this._cursorChange = eventType === DeviceInputEventType.PointerDown || eventType === DeviceInputEventType.Dblclick ? 2 : 1;
10464
10524
  const editCellState = this._editorBridgeService.getEditLocation();
10465
10525
  if (editCellState == null) return;
10466
10526
  this._commandService.syncExecuteCommand(ScrollToRangeOperation.id, { range: {
@@ -10544,7 +10604,7 @@ let EditingRenderController = class EditingRenderController extends Disposable {
10544
10604
  const documentDataModel = this._univerInstanceService.getUnit(DOCS_NORMAL_EDITOR_UNIT_ID_KEY);
10545
10605
  const snapshot = Tools.deepClone(documentDataModel === null || documentDataModel === void 0 ? void 0 : documentDataModel.getSnapshot());
10546
10606
  const { keycode } = param;
10547
- this._cursorChange = CursorChange.InitialState;
10607
+ this._cursorChange = 0;
10548
10608
  const currentUnitId = (_editCellState$unitId = editCellState === null || editCellState === void 0 ? void 0 : editCellState.unitId) !== null && _editCellState$unitId !== void 0 ? _editCellState$unitId : "";
10549
10609
  this._exitInput(param);
10550
10610
  if (editCellState == null) return;
@@ -10692,7 +10752,7 @@ let EditingRenderController = class EditingRenderController extends Disposable {
10692
10752
  if (!(editorObject === null || editorObject === void 0 ? void 0 : editorObject.document)) return;
10693
10753
  const { document: documentComponent } = editorObject;
10694
10754
  d.add(toDisposable(documentComponent.onPointerDown$.subscribeEvent(() => {
10695
- if (this._cursorChange === CursorChange.StartEditor) this._cursorChange = CursorChange.CursorChange;
10755
+ if (this._cursorChange === 1) this._cursorChange = 2;
10696
10756
  })));
10697
10757
  }
10698
10758
  _moveInEditor(keycode, isShift) {
@@ -10875,7 +10935,7 @@ function cleanCellDataObject(cellData) {
10875
10935
  function getDefaultOnPasteCellMutations(pasteFrom, pasteTo, data, payload, accessor) {
10876
10936
  const redoMutationsInfo = [];
10877
10937
  const undoMutationsInfo = [];
10878
- if (payload.copyType === COPY_TYPE.CUT) {
10938
+ if (payload.copyType === "CUT") {
10879
10939
  const { undos, redos } = getMoveRangeMutations(pasteFrom, pasteTo, accessor);
10880
10940
  redoMutationsInfo.push(...redos);
10881
10941
  undoMutationsInfo.push(...undos);
@@ -11369,7 +11429,13 @@ let SheetClipboardController = class SheetClipboardController extends RxDisposab
11369
11429
  var _cell$p, _cell$p2;
11370
11430
  const cell = currentSheet.getCell(row, col);
11371
11431
  if ((cell === null || cell === void 0 || (_cell$p = cell.p) === null || _cell$p === void 0 || (_cell$p = _cell$p.body) === null || _cell$p === void 0 ? void 0 : _cell$p.paragraphs) || (cell === null || cell === void 0 || (_cell$p2 = cell.p) === null || _cell$p2 === void 0 || (_cell$p2 = _cell$p2.body) === null || _cell$p2 === void 0 ? void 0 : _cell$p2.textRuns)) return convertBodyToHtml(cell.p);
11372
- return cell ? extractPureTextFromCell(cell) : "";
11432
+ const content = extractPureTextFromCell(cell);
11433
+ if (content.trim() === "") return content;
11434
+ /**
11435
+ * Used for generating the copied HTML, so we need to escape special code to avoid breaking the HTML structure.
11436
+ * For example, if the cell value contains <, > or &, it would break the HTML structure and cause the copied content to be incorrect.
11437
+ */
11438
+ return escapeSpecialCode(content);
11373
11439
  },
11374
11440
  onCopyCellStyle: (row, col, rowSpan, colSpan) => {
11375
11441
  const properties = {};
@@ -11903,8 +11969,9 @@ DragRenderController = __decorate([
11903
11969
 
11904
11970
  //#endregion
11905
11971
  //#region src/services/editor/formula-editor-manager.service.ts
11906
- var FormulaEditorManagerService = class {
11907
- constructor() {
11972
+ var FormulaEditorManagerService = class extends Disposable {
11973
+ constructor(..._args) {
11974
+ super(..._args);
11908
11975
  _defineProperty(this, "_position", null);
11909
11976
  _defineProperty(this, "_position$", new BehaviorSubject(null));
11910
11977
  _defineProperty(this, "position$", this._position$.asObservable());
@@ -11917,6 +11984,7 @@ var FormulaEditorManagerService = class {
11917
11984
  _defineProperty(this, "foldBtnStatus$", this._foldBtnStatus$.asObservable());
11918
11985
  }
11919
11986
  dispose() {
11987
+ super.dispose();
11920
11988
  this._position$.complete();
11921
11989
  this._focus$.complete();
11922
11990
  this._position = null;
@@ -12502,7 +12570,7 @@ let HoverManagerService = class HoverManagerService extends Disposable {
12502
12570
  const cellData = worksheet.getCell(overflowLocation.row, overflowLocation.col);
12503
12571
  const { topOffset = 0, leftOffset = 0 } = (_cellData$fontRenderE = cellData === null || cellData === void 0 ? void 0 : cellData.fontRenderExtension) !== null && _cellData$fontRenderE !== void 0 ? _cellData$fontRenderE : {};
12504
12572
  if (font === null || font === void 0 ? void 0 : font.documentSkeleton) {
12505
- const { paddingLeft, paddingTop } = calcPadding(cell, font, (cellData === null || cellData === void 0 ? void 0 : cellData.v) !== null && (cellData === null || cellData === void 0 ? void 0 : cellData.v) !== void 0 ? !Number.isNaN(+cellData.v) : false);
12573
+ const { paddingLeft, paddingTop } = calcPadding(cell, font, (cellData === null || cellData === void 0 ? void 0 : cellData.p) ? false : isRealNum(cellData === null || cellData === void 0 ? void 0 : cellData.v) && (!(cellData === null || cellData === void 0 ? void 0 : cellData.t) || cellData.t === CellValueType.NUMBER));
12506
12574
  const rects = calculateDocSkeletonRects(font.documentSkeleton, paddingLeft, paddingTop);
12507
12575
  const innerX = offsetX - position.startX - leftOffset;
12508
12576
  const innerY = offsetY - position.startY - topOffset;
@@ -12734,8 +12802,8 @@ let HoverRenderController = class HoverRenderController extends Disposable {
12734
12802
  disposeSet.add(mainComponent.onPointerLeave$.subscribeEvent(() => {
12735
12803
  this._active = false;
12736
12804
  }));
12737
- const rowHeader = components.get(SHEET_VIEW_KEY.ROW);
12738
- const colHeader = components.get(SHEET_VIEW_KEY.COLUMN);
12805
+ const rowHeader = components.get("__SpreadsheetRowHeader__");
12806
+ const colHeader = components.get("__SpreadsheetColumnHeader__");
12739
12807
  if (rowHeader) {
12740
12808
  disposeSet.add(rowHeader.onPointerMove$.subscribeEvent((evt) => {
12741
12809
  this._hoverManagerService.triggerRowHeaderMouseMove(unitId, evt.offsetX, evt.offsetY);
@@ -12968,18 +13036,6 @@ SheetPermissionCheckUIController = __decorate([
12968
13036
 
12969
13037
  //#endregion
12970
13038
  //#region src/controllers/render-controllers/freeze.render-controller.ts
12971
- var FREEZE_DIRECTION_TYPE = /* @__PURE__ */ function(FREEZE_DIRECTION_TYPE) {
12972
- FREEZE_DIRECTION_TYPE[FREEZE_DIRECTION_TYPE["ROW"] = 0] = "ROW";
12973
- FREEZE_DIRECTION_TYPE[FREEZE_DIRECTION_TYPE["COLUMN"] = 1] = "COLUMN";
12974
- return FREEZE_DIRECTION_TYPE;
12975
- }(FREEZE_DIRECTION_TYPE || {});
12976
- var ResetScrollType = /* @__PURE__ */ function(ResetScrollType) {
12977
- ResetScrollType[ResetScrollType["NONE"] = 0] = "NONE";
12978
- ResetScrollType[ResetScrollType["X"] = 1] = "X";
12979
- ResetScrollType[ResetScrollType["Y"] = 2] = "Y";
12980
- ResetScrollType[ResetScrollType["ALL"] = 3] = "ALL";
12981
- return ResetScrollType;
12982
- }(ResetScrollType || {});
12983
13039
  const FREEZE_ROW_MAIN_NAME = "__SpreadsheetFreezeRowMainName__";
12984
13040
  const FREEZE_ROW_HEADER_NAME = "__SpreadsheetFreezeRowHeaderName__";
12985
13041
  const FREEZE_COLUMN_MAIN_NAME = "__SpreadsheetFreezeColumnMainName__";
@@ -13031,7 +13087,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13031
13087
  this._bindViewportScroll();
13032
13088
  this._zoomRefresh();
13033
13089
  }
13034
- _createFreeze(freezeDirectionType = FREEZE_DIRECTION_TYPE.ROW, freezeConfig) {
13090
+ _createFreeze(freezeDirectionType = 0, freezeConfig) {
13035
13091
  var _this$_sheetSkeletonM;
13036
13092
  const config = freezeConfig !== null && freezeConfig !== void 0 ? freezeConfig : this._getFreeze();
13037
13093
  if (config == null) return null;
@@ -13048,7 +13104,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13048
13104
  this._changeToOffsetY = startY;
13049
13105
  const scale = Math.max(scene.scaleX, scene.scaleY);
13050
13106
  let freezeSize = FREEZE_SIZE_NORMAL / Math.max(1, scale);
13051
- if (freezeDirectionType === FREEZE_DIRECTION_TYPE.ROW) {
13107
+ if (freezeDirectionType === 0) {
13052
13108
  if (freezeRow === -1 || freezeRow === 0) freezeSize = freezeSize * 2;
13053
13109
  const freezeOffset = freezeSize;
13054
13110
  this._rowFreezeHeaderRect = new Rect(FREEZE_ROW_HEADER_NAME, {
@@ -13095,10 +13151,10 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13095
13151
  }
13096
13152
  this._eventBinding(freezeDirectionType);
13097
13153
  }
13098
- _eventBinding(freezeDirectionType = FREEZE_DIRECTION_TYPE.ROW) {
13154
+ _eventBinding(freezeDirectionType = 0) {
13099
13155
  let freezeObjectHeaderRect = this._rowFreezeHeaderRect;
13100
13156
  let freezeObjectMainRect = this._rowFreezeMainRect;
13101
- if (freezeDirectionType === FREEZE_DIRECTION_TYPE.COLUMN) {
13157
+ if (freezeDirectionType === 1) {
13102
13158
  freezeObjectHeaderRect = this._columnFreezeHeaderRect;
13103
13159
  freezeObjectMainRect = this._columnFreezeMainRect;
13104
13160
  }
@@ -13197,7 +13253,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13197
13253
  if (!viewports) return null;
13198
13254
  return viewports.find((i) => i.isHit(new Vector2(evt.offsetX, evt.offsetY))) || null;
13199
13255
  }
13200
- _freezeDown(evt, freezeObjectHeaderRect, freezeObjectMainRect, freezeDirectionType = FREEZE_DIRECTION_TYPE.ROW) {
13256
+ _freezeDown(evt, freezeObjectHeaderRect, freezeObjectMainRect, freezeDirectionType = 0) {
13201
13257
  var _this$_sheetSkeletonM3;
13202
13258
  const skeleton = (_this$_sheetSkeletonM3 = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM3 === void 0 ? void 0 : _this$_sheetSkeletonM3.skeleton;
13203
13259
  if (skeleton == null) return;
@@ -13222,7 +13278,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13222
13278
  if (!this.interceptor.fetchThroughInterceptors(FREEZE_PERMISSION_CHECK)(true, null)) return false;
13223
13279
  scene.setCursor(CURSOR_TYPE.GRABBING);
13224
13280
  const FREEZE_SIZE = FREEZE_SIZE_NORMAL / Math.max(scene.scaleX, scene.scaleY);
13225
- if (freezeDirectionType === FREEZE_DIRECTION_TYPE.ROW) {
13281
+ if (freezeDirectionType === 0) {
13226
13282
  var _freezeObjectHeaderRe, _freezeObjectMainRect;
13227
13283
  (_freezeObjectHeaderRe = freezeObjectHeaderRect.transformByState({ top: Math.min(startY, lastRowY) - FREEZE_SIZE / 2 })) === null || _freezeObjectHeaderRe === void 0 || _freezeObjectHeaderRe.setProps({ fill: this._freezeActiveColor });
13228
13284
  (_freezeObjectMainRect = freezeObjectMainRect.transformByState({ top: Math.min(startY, lastRowY) - FREEZE_SIZE / 2 })) === null || _freezeObjectMainRect === void 0 || _freezeObjectMainRect.setProps({ fill: this._freezeNormalHeaderColor });
@@ -13244,7 +13300,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13244
13300
  scene.enableObjectsEvent();
13245
13301
  this._clearObserverEvent();
13246
13302
  const { rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop } = skeleton;
13247
- if (freezeDirectionType === FREEZE_DIRECTION_TYPE.ROW && (this._changeToRow === 0 || this._changeToRow === -1) || freezeDirectionType === FREEZE_DIRECTION_TYPE.COLUMN && (this._changeToColumn === 0 || this._changeToColumn === -1)) {
13303
+ if (freezeDirectionType === 0 && (this._changeToRow === 0 || this._changeToRow === -1) || freezeDirectionType === 1 && (this._changeToColumn === 0 || this._changeToColumn === -1)) {
13248
13304
  freezeObjectHeaderRect.setProps({ fill: this._freezeNormalHeaderColor });
13249
13305
  freezeObjectMainRect.setProps({ fill: this._freezeNormalMainColor });
13250
13306
  } else {
@@ -13252,7 +13308,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13252
13308
  freezeObjectMainRect === null || freezeObjectMainRect === void 0 || freezeObjectMainRect.setProps({ fill: this._freezeNormalHeaderColor });
13253
13309
  }
13254
13310
  const FREEZE_SIZE = FREEZE_SIZE_NORMAL / Math.max(scene.scaleX, scene.scaleY);
13255
- if (freezeDirectionType === FREEZE_DIRECTION_TYPE.ROW) {
13311
+ if (freezeDirectionType === 0) {
13256
13312
  if (this._changeToRow === 0 || this._changeToRow === -1) {
13257
13313
  freezeObjectHeaderRect.transformByState({ top: columnHeaderHeightAndMarginTop - FREEZE_SIZE });
13258
13314
  freezeObjectMainRect.transformByState({ top: columnHeaderHeightAndMarginTop - FREEZE_SIZE });
@@ -13273,12 +13329,12 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13273
13329
  let xSplit = (oldFreeze === null || oldFreeze === void 0 ? void 0 : oldFreeze.xSplit) || 0;
13274
13330
  let ySplit = (oldFreeze === null || oldFreeze === void 0 ? void 0 : oldFreeze.ySplit) || 0;
13275
13331
  const viewPortKey = (_this$_activeViewport = this._activeViewport) === null || _this$_activeViewport === void 0 ? void 0 : _this$_activeViewport.viewportKey;
13276
- if (freezeDirectionType === FREEZE_DIRECTION_TYPE.ROW) {
13332
+ if (freezeDirectionType === 0) {
13277
13333
  if (!viewPortKey || viewPortKey === SHEET_VIEWPORT_KEY.VIEW_LEFT_TOP || viewPortKey === SHEET_VIEWPORT_KEY.VIEW_MAIN_LEFT_TOP || viewPortKey === SHEET_VIEWPORT_KEY.VIEW_MAIN_TOP || viewPortKey === SHEET_VIEWPORT_KEY.VIEW_ROW_TOP) ySplit = this._changeToRow - (oldFreeze.startRow - oldFreeze.ySplit);
13278
13334
  else ySplit = this._changeToRow - sheetViewStartRow;
13279
13335
  ySplit = ySplit < 0 ? 0 : ySplit;
13280
13336
  }
13281
- if (freezeDirectionType === FREEZE_DIRECTION_TYPE.COLUMN) {
13337
+ if (freezeDirectionType === 1) {
13282
13338
  if (!viewPortKey || viewPortKey === SHEET_VIEWPORT_KEY.VIEW_LEFT_TOP || viewPortKey === SHEET_VIEWPORT_KEY.VIEW_MAIN_LEFT_TOP || viewPortKey === SHEET_VIEWPORT_KEY.VIEW_MAIN_LEFT || viewPortKey === SHEET_VIEWPORT_KEY.VIEW_COLUMN_LEFT) xSplit = this._changeToColumn - (oldFreeze.startColumn - oldFreeze.xSplit);
13283
13339
  else xSplit = this._changeToColumn - sheetViewStartColumn;
13284
13340
  xSplit = xSplit < 0 ? 0 : xSplit;
@@ -13344,7 +13400,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13344
13400
  });
13345
13401
  }));
13346
13402
  }
13347
- _updateViewport(row = -1, column = -1, ySplit = 0, xSplit = 0, resetScroll = ResetScrollType.ALL) {
13403
+ _updateViewport(row = -1, column = -1, ySplit = 0, xSplit = 0, resetScroll = 3) {
13348
13404
  var _this$_sheetSkeletonM4;
13349
13405
  const skeleton = (_this$_sheetSkeletonM4 = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM4 === void 0 ? void 0 : _this$_sheetSkeletonM4.skeleton;
13350
13406
  if (skeleton == null) return;
@@ -13439,7 +13495,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13439
13495
  startX: 0,
13440
13496
  endX: 0
13441
13497
  });
13442
- if (resetScroll & ResetScrollType.Y) this._commandService.executeCommand(ScrollCommand.id, {
13498
+ if (resetScroll & 2) this._commandService.executeCommand(ScrollCommand.id, {
13443
13499
  sheetViewStartRow: 0,
13444
13500
  offsetY: 0
13445
13501
  });
@@ -13483,7 +13539,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13483
13539
  startY: 0,
13484
13540
  endY: 0
13485
13541
  });
13486
- if (resetScroll & ResetScrollType.X) this._commandService.executeCommand(ScrollCommand.id, {
13542
+ if (resetScroll & 1) this._commandService.executeCommand(ScrollCommand.id, {
13487
13543
  sheetViewStartColumn: 0,
13488
13544
  offsetX: 0
13489
13545
  });
@@ -13530,11 +13586,11 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13530
13586
  endX: endSheetView.startX
13531
13587
  });
13532
13588
  if (resetScroll) this._commandService.executeCommand(ScrollCommand.id, {
13533
- ...resetScroll & ResetScrollType.X ? {
13589
+ ...resetScroll & 1 ? {
13534
13590
  sheetViewStartColumn: 0,
13535
13591
  offsetX: 0
13536
13592
  } : null,
13537
- ...resetScroll & ResetScrollType.Y ? {
13593
+ ...resetScroll & 2 ? {
13538
13594
  sheetViewStartRow: 0,
13539
13595
  offsetY: 0
13540
13596
  } : null
@@ -13620,7 +13676,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13620
13676
  const worksheet = this._context.unit.getActiveSheet();
13621
13677
  if (!worksheet) return;
13622
13678
  const { startRow = -1, startColumn = -1, ySplit = 0, xSplit = 0 } = worksheet.getConfig().freeze;
13623
- this._refreshFreeze(startRow, startColumn, ySplit, xSplit, ResetScrollType.NONE);
13679
+ this._refreshFreeze(startRow, startColumn, ySplit, xSplit, 0);
13624
13680
  }
13625
13681
  _themeChangeListener() {
13626
13682
  this._themeChange(this._themeService.getCurrentTheme());
@@ -13650,7 +13706,7 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13650
13706
  const worksheet = workbook.getActiveSheet();
13651
13707
  if (!worksheet) return empty;
13652
13708
  const subUnitId = worksheet.getSheetId();
13653
- this._refreshFreeze(newFreeze.startRow, newFreeze.startColumn, newFreeze.ySplit, newFreeze.xSplit, ResetScrollType.NONE);
13709
+ this._refreshFreeze(newFreeze.startRow, newFreeze.startColumn, newFreeze.ySplit, newFreeze.xSplit, 0);
13654
13710
  const redoMutationParams = {
13655
13711
  ...newFreeze,
13656
13712
  unitId,
@@ -13786,11 +13842,11 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13786
13842
  const freeze = worksheet.getConfig().freeze;
13787
13843
  this._lastFreeze = freeze;
13788
13844
  if (freeze == null) return;
13789
- let resetScroll = ResetScrollType.NONE;
13845
+ let resetScroll = 0;
13790
13846
  const { startRow = -1, startColumn = -1, ySplit = 0, xSplit = 0 } = freeze;
13791
- if (!lastFreeze || lastFreeze.startRow !== startRow || lastFreeze.ySplit !== ySplit) resetScroll |= ResetScrollType.Y;
13792
- if (!lastFreeze || lastFreeze.startColumn !== startColumn || lastFreeze.xSplit !== xSplit) resetScroll |= ResetScrollType.X;
13793
- if (params.resetScroll === false) resetScroll = ResetScrollType.NONE;
13847
+ if (!lastFreeze || lastFreeze.startRow !== startRow || lastFreeze.ySplit !== ySplit) resetScroll |= 2;
13848
+ if (!lastFreeze || lastFreeze.startColumn !== startColumn || lastFreeze.xSplit !== xSplit) resetScroll |= 1;
13849
+ if (params.resetScroll === false) resetScroll = 0;
13794
13850
  this._refreshFreeze(startRow, startColumn, ySplit, xSplit, resetScroll);
13795
13851
  }
13796
13852
  break;
@@ -13924,8 +13980,8 @@ let HeaderFreezeRenderController = class HeaderFreezeRenderController extends Di
13924
13980
  xSplit
13925
13981
  };
13926
13982
  this._clearFreeze();
13927
- this._createFreeze(FREEZE_DIRECTION_TYPE.ROW, newFreeze);
13928
- this._createFreeze(FREEZE_DIRECTION_TYPE.COLUMN, newFreeze);
13983
+ this._createFreeze(0, newFreeze);
13984
+ this._createFreeze(1, newFreeze);
13929
13985
  this._updateViewport(startRow, startColumn, ySplit, xSplit, resetScroll);
13930
13986
  (_this$_getSheetObject2 = this._getSheetObject()) === null || _this$_getSheetObject2 === void 0 || _this$_getSheetObject2.spreadsheet.makeForceDirty();
13931
13987
  }
@@ -14066,8 +14122,8 @@ let HeaderMoveRenderController = class HeaderMoveRenderController extends Dispos
14066
14122
  this._initialRowOrColumn(RANGE_TYPE.COLUMN);
14067
14123
  }
14068
14124
  _initialRowOrColumn(initialType = RANGE_TYPE.ROW) {
14069
- const spreadsheetColumnHeader = this._context.components.get(SHEET_VIEW_KEY.COLUMN);
14070
- const spreadsheetRowHeader = this._context.components.get(SHEET_VIEW_KEY.ROW);
14125
+ const spreadsheetColumnHeader = this._context.components.get("__SpreadsheetColumnHeader__");
14126
+ const spreadsheetRowHeader = this._context.components.get("__SpreadsheetRowHeader__");
14071
14127
  const scene = this._context.scene;
14072
14128
  const eventBindingObject = initialType === RANGE_TYPE.ROW ? spreadsheetRowHeader : spreadsheetColumnHeader;
14073
14129
  const pointerMoveHandler = (evt) => {
@@ -14286,11 +14342,6 @@ HeaderMoveRenderController = __decorate([
14286
14342
 
14287
14343
  //#endregion
14288
14344
  //#region src/views/header-resize-shape.ts
14289
- let HEADER_RESIZE_SHAPE_TYPE = /* @__PURE__ */ function(HEADER_RESIZE_SHAPE_TYPE) {
14290
- HEADER_RESIZE_SHAPE_TYPE[HEADER_RESIZE_SHAPE_TYPE["VERTICAL"] = 0] = "VERTICAL";
14291
- HEADER_RESIZE_SHAPE_TYPE[HEADER_RESIZE_SHAPE_TYPE["HORIZONTAL"] = 1] = "HORIZONTAL";
14292
- return HEADER_RESIZE_SHAPE_TYPE;
14293
- }({});
14294
14345
  const HEADER_MENU_SHAPE_RECT_BACKGROUND_FILL = "rgba(120, 120, 120, 0.01)";
14295
14346
  const HEADER_MENU_SHAPE_RECT_FILL = "rgb(68, 71, 70)";
14296
14347
  const HEADER_MENU_SHAPE_SIZE = 12;
@@ -14300,7 +14351,7 @@ var HeaderMenuResizeShape = class extends Shape {
14300
14351
  super(key, props);
14301
14352
  _defineProperty(this, "_size", 12);
14302
14353
  _defineProperty(this, "_color", HEADER_MENU_SHAPE_RECT_FILL);
14303
- _defineProperty(this, "_mode", HEADER_RESIZE_SHAPE_TYPE.VERTICAL);
14354
+ _defineProperty(this, "_mode", 0);
14304
14355
  this.setShapeProps(props);
14305
14356
  }
14306
14357
  get size() {
@@ -14322,7 +14373,7 @@ var HeaderMenuResizeShape = class extends Shape {
14322
14373
  let { width, height } = this;
14323
14374
  let left = 0;
14324
14375
  let top = 0;
14325
- if (this.mode === HEADER_RESIZE_SHAPE_TYPE.VERTICAL) {
14376
+ if (this.mode === 0) {
14326
14377
  width = HEADER_MENU_SHAPE_THUMB_SIZE_SCALE;
14327
14378
  left = HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE - HEADER_MENU_SHAPE_THUMB_SIZE_SCALE;
14328
14379
  } else {
@@ -14356,7 +14407,7 @@ var HeaderMenuResizeShape = class extends Shape {
14356
14407
  if (props === null || props === void 0 ? void 0 : props.size) this._size = props.size;
14357
14408
  if (props === null || props === void 0 ? void 0 : props.mode) this._mode = props.mode;
14358
14409
  if (props === null || props === void 0 ? void 0 : props.color) this._color = props.color;
14359
- if (this.mode === HEADER_RESIZE_SHAPE_TYPE.VERTICAL) this.transformByState({
14410
+ if (this.mode === 0) this.transformByState({
14360
14411
  width: 12,
14361
14412
  height: this.size
14362
14413
  });
@@ -14375,11 +14426,6 @@ const HEADER_RESIZE_CONTROLLER_SHAPE_COLUMN = "__SpreadsheetHeaderResizeControll
14375
14426
  const HEADER_RESIZE_CONTROLLER_SHAPE_HELPER = "__SpreadsheetHeaderResizeControllerShapeHelper__";
14376
14427
  const HEADER_RESIZE_CONTROLLER_SHAPE_HELPER_COLOR = "rgb(199, 199, 199)";
14377
14428
  const MINIMAL_OFFSET$1 = 2;
14378
- var HEADER_RESIZE_TYPE = /* @__PURE__ */ function(HEADER_RESIZE_TYPE) {
14379
- HEADER_RESIZE_TYPE[HEADER_RESIZE_TYPE["ROW"] = 0] = "ROW";
14380
- HEADER_RESIZE_TYPE[HEADER_RESIZE_TYPE["COLUMN"] = 1] = "COLUMN";
14381
- return HEADER_RESIZE_TYPE;
14382
- }(HEADER_RESIZE_TYPE || {});
14383
14429
  const HEADER_RESIZE_PERMISSION_CHECK = createInterceptorKey("headerResizePermissionCheck");
14384
14430
  let HeaderResizeRenderController = class HeaderResizeRenderController extends Disposable {
14385
14431
  constructor(_context, _sheetSkeletonManagerService, _selectionManagerService, _commandService) {
@@ -14414,25 +14460,25 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14414
14460
  const scene = this._context.scene;
14415
14461
  this._rowResizeRect = new HeaderMenuResizeShape(HEADER_RESIZE_CONTROLLER_SHAPE_ROW, {
14416
14462
  visible: false,
14417
- mode: HEADER_RESIZE_SHAPE_TYPE.HORIZONTAL,
14463
+ mode: 1,
14418
14464
  zIndex: 100
14419
14465
  });
14420
14466
  this._columnResizeRect = new HeaderMenuResizeShape(HEADER_RESIZE_CONTROLLER_SHAPE_COLUMN, {
14421
14467
  visible: false,
14422
- mode: HEADER_RESIZE_SHAPE_TYPE.VERTICAL,
14468
+ mode: 0,
14423
14469
  zIndex: 100
14424
14470
  });
14425
14471
  scene.addObjects([this._rowResizeRect, this._columnResizeRect], 10);
14426
- this._initialHover(HEADER_RESIZE_TYPE.ROW);
14427
- this._initialHover(HEADER_RESIZE_TYPE.COLUMN);
14428
- this._initialHoverResize(HEADER_RESIZE_TYPE.ROW);
14429
- this._initialHoverResize(HEADER_RESIZE_TYPE.COLUMN);
14430
- }
14431
- _initialHover(initialType = HEADER_RESIZE_TYPE.ROW) {
14432
- const spreadsheetColumnHeader = this._context.components.get(SHEET_VIEW_KEY.COLUMN);
14433
- const spreadsheetRowHeader = this._context.components.get(SHEET_VIEW_KEY.ROW);
14472
+ this._initialHover(0);
14473
+ this._initialHover(1);
14474
+ this._initialHoverResize(0);
14475
+ this._initialHoverResize(1);
14476
+ }
14477
+ _initialHover(initialType = 0) {
14478
+ const spreadsheetColumnHeader = this._context.components.get("__SpreadsheetColumnHeader__");
14479
+ const spreadsheetRowHeader = this._context.components.get("__SpreadsheetRowHeader__");
14434
14480
  const scene = this._context.scene;
14435
- const eventBindingObject = initialType === HEADER_RESIZE_TYPE.ROW ? spreadsheetRowHeader : spreadsheetColumnHeader;
14481
+ const eventBindingObject = initialType === 0 ? spreadsheetRowHeader : spreadsheetColumnHeader;
14436
14482
  const pointerLeaveEvent = (_evt, _state) => {
14437
14483
  var _this$_rowResizeRect2, _this$_columnResizeRe2;
14438
14484
  (_this$_rowResizeRect2 = this._rowResizeRect) === null || _this$_rowResizeRect2 === void 0 || _this$_rowResizeRect2.hide();
@@ -14444,12 +14490,15 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14444
14490
  if (skeleton == null || this._rowResizeRect == null || this._columnResizeRect == null) return;
14445
14491
  const { rowHeaderWidth, columnHeaderHeight } = skeleton;
14446
14492
  const { startX, startY, endX, endY, row, column } = getCoordByOffset(evt.offsetX, evt.offsetY, scene, skeleton);
14493
+ const isLastRow = row === skeleton.worksheet.getRowCount() - 1;
14494
+ const isLastColumn = column === skeleton.worksheet.getColumnCount() - 1;
14447
14495
  const transformCoord = getTransformCoord(evt.offsetX, evt.offsetY, scene, skeleton);
14448
14496
  const { scaleX, scaleY } = scene.getAncestorScale();
14449
14497
  const HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE = 12 / Math.max(scaleX, scaleY);
14450
- if (initialType === HEADER_RESIZE_TYPE.ROW) {
14498
+ if (initialType === 0) {
14451
14499
  let top = startY - HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2;
14452
- if (transformCoord.y <= startY + HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2 && transformCoord.y >= startY) this._currentRow = row - 1;
14500
+ if (isLastRow && endY - startY <= HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2) this._currentRow = row;
14501
+ else if (transformCoord.y <= startY + HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2 && transformCoord.y >= startY) this._currentRow = row - 1;
14453
14502
  else if (transformCoord.y >= endY - HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2 && transformCoord.y <= endY) {
14454
14503
  this._currentRow = row;
14455
14504
  top = endY - HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2;
@@ -14468,7 +14517,8 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14468
14517
  this._rowResizeRect.show();
14469
14518
  } else {
14470
14519
  let left = startX - HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2;
14471
- if (transformCoord.x <= startX + HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2 && transformCoord.x >= startX) this._currentColumn = column - 1;
14520
+ if (isLastColumn && endX - startX <= HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2) this._currentColumn = column;
14521
+ else if (transformCoord.x <= startX + HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2 && transformCoord.x >= startX) this._currentColumn = column - 1;
14472
14522
  else if (transformCoord.x >= endX - HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2 && transformCoord.x <= endX) {
14473
14523
  this._currentColumn = column;
14474
14524
  left = endX - HEADER_MENU_SHAPE_WIDTH_HEIGHT_SCALE / 2;
@@ -14491,14 +14541,14 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14491
14541
  this._headerPointerSubs.add(eventBindingObject === null || eventBindingObject === void 0 ? void 0 : eventBindingObject.onPointerMove$.subscribeEvent(pointerMoveEvent));
14492
14542
  this._headerPointerSubs.add(eventBindingObject === null || eventBindingObject === void 0 ? void 0 : eventBindingObject.onPointerLeave$.subscribeEvent(pointerLeaveEvent));
14493
14543
  }
14494
- _initialHoverResize(initialType = HEADER_RESIZE_TYPE.ROW) {
14544
+ _initialHoverResize(initialType = 0) {
14495
14545
  const scene = this._context.scene;
14496
- const eventBindingObject = initialType === HEADER_RESIZE_TYPE.ROW ? this._rowResizeRect : this._columnResizeRect;
14546
+ const eventBindingObject = initialType === 0 ? this._rowResizeRect : this._columnResizeRect;
14497
14547
  if (eventBindingObject == null) return;
14498
14548
  this.disposeWithMe(eventBindingObject.onPointerEnter$.subscribeEvent(() => {
14499
14549
  if (eventBindingObject == null) return;
14500
14550
  eventBindingObject.show();
14501
- scene.setCursor(initialType === HEADER_RESIZE_TYPE.ROW ? CURSOR_TYPE.ROW_RESIZE : CURSOR_TYPE.COLUMN_RESIZE);
14551
+ scene.setCursor(initialType === 0 ? CURSOR_TYPE.ROW_RESIZE : CURSOR_TYPE.COLUMN_RESIZE);
14502
14552
  }));
14503
14553
  this.disposeWithMe(eventBindingObject.onPointerLeave$.subscribeEvent(() => {
14504
14554
  if (eventBindingObject == null) return;
@@ -14530,7 +14580,7 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14530
14580
  const shapeWidth = canvasMaxWidth > columnTotalWidth + rowHeaderWidth ? canvasMaxWidth : columnTotalWidth + rowHeaderWidth;
14531
14581
  const shapeHeight = canvasMaxHeight > rowTotalHeight + columnHeaderHeight ? canvasMaxHeight : rowTotalHeight + columnHeaderHeight;
14532
14582
  const HEADER_MENU_SHAPE_THUMB_SIZE_SCALE = 4 / Math.max(scaleX, scaleY);
14533
- if (initialType === HEADER_RESIZE_TYPE.ROW) this._resizeHelperShape = new Rect(HEADER_RESIZE_CONTROLLER_SHAPE_HELPER, {
14583
+ if (initialType === 0) this._resizeHelperShape = new Rect(HEADER_RESIZE_CONTROLLER_SHAPE_HELPER, {
14534
14584
  width: shapeWidth,
14535
14585
  height: HEADER_MENU_SHAPE_THUMB_SIZE_SCALE,
14536
14586
  fill: HEADER_RESIZE_CONTROLLER_SHAPE_HELPER_COLOR,
@@ -14556,8 +14606,8 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14556
14606
  const HEADER_MENU_SHAPE_THUMB_SIZE_SCALE = 4 / Math.max(scaleX, scaleY);
14557
14607
  moveChangeX = moveOffsetX - this._startOffsetX - HEADER_MENU_SHAPE_THUMB_SIZE_SCALE / 2;
14558
14608
  moveChangeY = moveOffsetY - this._startOffsetY - HEADER_MENU_SHAPE_THUMB_SIZE_SCALE / 2;
14559
- if (Math.abs(initialType === HEADER_RESIZE_TYPE.ROW ? moveChangeY : moveChangeX) >= MINIMAL_OFFSET$1) isStartMove = true;
14560
- if (initialType === HEADER_RESIZE_TYPE.ROW) {
14609
+ if (Math.abs(initialType === 0 ? moveChangeY : moveChangeX) >= MINIMAL_OFFSET$1) isStartMove = true;
14610
+ if (initialType === 0) {
14561
14611
  if (moveChangeY > canvasMaxHeight - scrollBarHorizontalHeight + scrollXY.y - cell.startY) moveChangeY = canvasMaxHeight - scrollBarHorizontalHeight + scrollXY.y - cell.startY;
14562
14612
  if (moveChangeY < -(cell.endY - cell.startY) + 2) moveChangeY = -(cell.endY - cell.startY) + 2;
14563
14613
  if (isStartMove) {
@@ -14591,7 +14641,7 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14591
14641
  scene.resetCursor();
14592
14642
  (_this$_rowResizeRect6 = this._rowResizeRect) === null || _this$_rowResizeRect6 === void 0 || _this$_rowResizeRect6.hide();
14593
14643
  (_this$_columnResizeRe6 = this._columnResizeRect) === null || _this$_columnResizeRe6 === void 0 || _this$_columnResizeRe6.hide();
14594
- if (initialType === HEADER_RESIZE_TYPE.ROW) this._commandService.executeCommand(DeltaRowHeightCommand.id, {
14644
+ if (initialType === 0) this._commandService.executeCommand(DeltaRowHeightCommand.id, {
14595
14645
  deltaY: moveChangeY,
14596
14646
  anchorRow: this._currentRow
14597
14647
  });
@@ -14612,7 +14662,7 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14612
14662
  const endRow = sk.worksheet.getRowCount() - 1 || 0;
14613
14663
  const endColumn = sk.worksheet.getColumnCount() - 1 || 0;
14614
14664
  switch (initialType) {
14615
- case HEADER_RESIZE_TYPE.COLUMN: {
14665
+ case 1: {
14616
14666
  var _this$_columnResizeRe7;
14617
14667
  const curSelections = this._selectionManagerService.getCurrentSelections();
14618
14668
  const ranges = [];
@@ -14635,7 +14685,7 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14635
14685
  (_this$_columnResizeRe7 = this._columnResizeRect) === null || _this$_columnResizeRe7 === void 0 || _this$_columnResizeRe7.hide();
14636
14686
  break;
14637
14687
  }
14638
- case HEADER_RESIZE_TYPE.ROW:
14688
+ case 0:
14639
14689
  var _this$_rowResizeRect7;
14640
14690
  this._commandService.executeCommand(SetWorksheetRowIsAutoHeightCommand.id, { ranges: [{
14641
14691
  startRow: this._currentRow,
@@ -14788,11 +14838,11 @@ let SheetRenderController = class SheetRenderController extends RxDisposable {
14788
14838
  _addComponent(workbook) {
14789
14839
  const { scene, components } = this._context;
14790
14840
  const worksheet = workbook.getActiveSheet();
14791
- const spreadsheet = new Spreadsheet(SHEET_VIEW_KEY.MAIN);
14841
+ const spreadsheet = new Spreadsheet("__SpreadsheetRender__");
14792
14842
  this._addViewport(worksheet);
14793
- const spreadsheetRowHeader = new SpreadsheetRowHeader(SHEET_VIEW_KEY.ROW);
14794
- const spreadsheetColumnHeader = new SpreadsheetColumnHeader(SHEET_VIEW_KEY.COLUMN);
14795
- const SpreadsheetLeftTopPlaceholder = new Rect(SHEET_VIEW_KEY.LEFT_TOP, {
14843
+ const spreadsheetRowHeader = new SpreadsheetRowHeader("__SpreadsheetRowHeader__");
14844
+ const spreadsheetColumnHeader = new SpreadsheetColumnHeader("__SpreadsheetColumnHeader__");
14845
+ const SpreadsheetLeftTopPlaceholder = new Rect("__SpreadsheetLeftTopPlaceholder__", {
14796
14846
  zIndex: 2,
14797
14847
  left: -1,
14798
14848
  top: -1,
@@ -14801,10 +14851,10 @@ let SheetRenderController = class SheetRenderController extends RxDisposable {
14801
14851
  strokeWidth: 1
14802
14852
  });
14803
14853
  this._context.mainComponent = spreadsheet;
14804
- components.set(SHEET_VIEW_KEY.MAIN, spreadsheet);
14805
- components.set(SHEET_VIEW_KEY.ROW, spreadsheetRowHeader);
14806
- components.set(SHEET_VIEW_KEY.COLUMN, spreadsheetColumnHeader);
14807
- components.set(SHEET_VIEW_KEY.LEFT_TOP, SpreadsheetLeftTopPlaceholder);
14854
+ components.set("__SpreadsheetRender__", spreadsheet);
14855
+ components.set("__SpreadsheetRowHeader__", spreadsheetRowHeader);
14856
+ components.set("__SpreadsheetColumnHeader__", spreadsheetColumnHeader);
14857
+ components.set("__SpreadsheetLeftTopPlaceholder__", SpreadsheetLeftTopPlaceholder);
14808
14858
  scene.addObjects([spreadsheet], 0);
14809
14859
  scene.addObjects([
14810
14860
  spreadsheetRowHeader,
@@ -14918,9 +14968,9 @@ let SheetRenderController = class SheetRenderController extends RxDisposable {
14918
14968
  if (workbook == null || worksheet == null) return;
14919
14969
  const { mainComponent, components } = this._context;
14920
14970
  const spreadsheet = mainComponent;
14921
- const spreadsheetRowHeader = components.get(SHEET_VIEW_KEY.ROW);
14922
- const spreadsheetColumnHeader = components.get(SHEET_VIEW_KEY.COLUMN);
14923
- const spreadsheetLeftTopPlaceholder = components.get(SHEET_VIEW_KEY.LEFT_TOP);
14971
+ const spreadsheetRowHeader = components.get("__SpreadsheetRowHeader__");
14972
+ const spreadsheetColumnHeader = components.get("__SpreadsheetColumnHeader__");
14973
+ const spreadsheetLeftTopPlaceholder = components.get("__SpreadsheetLeftTopPlaceholder__");
14924
14974
  const { rowHeaderWidth, columnHeaderHeight } = spreadsheetSkeleton;
14925
14975
  spreadsheet === null || spreadsheet === void 0 || spreadsheet.updateSkeleton(spreadsheetSkeleton);
14926
14976
  spreadsheetRowHeader === null || spreadsheetRowHeader === void 0 || spreadsheetRowHeader.updateSkeleton(spreadsheetSkeleton);
@@ -16008,15 +16058,20 @@ function getCurrentRangeDisable$(accessor, permissionTypes = {}, supportCellEdit
16008
16058
  if (!workbook || (visible === null || visible === void 0 ? void 0 : visible.visible) && visible.unitId === workbook.getUnitId() && !supportCellEdit || formulaEditorFocus && !supportCellEdit) return of(true);
16009
16059
  return workbook.activeSheet$.pipe(switchMap$1((worksheet) => {
16010
16060
  if (!worksheet) return of(true);
16011
- const selectionManagerService = accessor.get(SheetsSelectionsService);
16061
+ const unitId = workbook.getUnitId();
16062
+ const subUnitId = worksheet.getSheetId();
16012
16063
  const rangeProtectionRuleModel = accessor.get(RangeProtectionRuleModel);
16013
16064
  const worksheetRuleModel = accessor.get(WorksheetProtectionRuleModel);
16065
+ const selectionManagerService = accessor.get(SheetsSelectionsService);
16066
+ const selectionChanged$ = selectionManagerService.selectionChanged$.pipe(startWith$1(selectionManagerService.getWorkbookSelections(unitId).getSelectionsOfWorksheet(subUnitId)));
16014
16067
  const focusedOnDrawing$ = accessor.get(IContextService).subscribeContextValue$(FOCUSING_COMMON_DRAWINGS).pipe(startWith$1(false));
16015
- return combineLatest([selectionManagerService.selectionMoveEnd$, focusedOnDrawing$]).pipe(switchMap$1(([selection, focusOnDrawings]) => {
16068
+ const permissionService = accessor.get(IPermissionService);
16069
+ return combineLatest([
16070
+ selectionChanged$,
16071
+ focusedOnDrawing$,
16072
+ permissionService.permissionPointUpdate$.pipe(debounceTime(100), startWith$1(null))
16073
+ ]).pipe(switchMap$1(([selection, focusOnDrawings]) => {
16016
16074
  if (focusOnDrawings && !focusingShapeTextEditor) return of(true);
16017
- const unitId = workbook.getUnitId();
16018
- const subUnitId = worksheet.getSheetId();
16019
- const permissionService = accessor.get(IPermissionService);
16020
16075
  const { workbookTypes = [WorkbookEditablePermission], worksheetTypes, rangeTypes } = permissionTypes;
16021
16076
  const permissionIds = [];
16022
16077
  workbookTypes === null || workbookTypes === void 0 || workbookTypes.forEach((F) => {
@@ -16156,23 +16211,24 @@ function getCellMenuHidden$(accessor, type) {
16156
16211
  }
16157
16212
  function getWorkbookPermissionDisable$(accessor, workbookPermissionTypes) {
16158
16213
  const workbook$ = accessor.get(IUniverInstanceService).getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET);
16159
- const worksheetRuleModel = accessor.get(WorksheetProtectionRuleModel);
16160
- const selectionRuleModel = accessor.get(RangeProtectionRuleModel);
16161
16214
  const permissionService = accessor.get(IPermissionService);
16162
16215
  return combineLatest([accessor.get(UserManagerService).currentUser$, workbook$]).pipe(switchMap$1(([_user, workbook]) => {
16163
16216
  if (!workbook) return of(true);
16164
- return workbook.activeSheet$.pipe(switchMap$1((activeSheet) => {
16165
- if (!activeSheet) return of(true);
16217
+ return workbook.activeSheet$.pipe(switchMap$1((worksheet) => {
16218
+ var _permissionService$co;
16219
+ if (!worksheet) return of(true);
16166
16220
  const unitId = workbook.getUnitId();
16221
+ const subUnitId = worksheet.getSheetId();
16222
+ const selectionProtectionRuleModel = accessor.get(RangeProtectionRuleModel);
16223
+ const worksheetProtectionRuleModel = accessor.get(WorksheetProtectionRuleModel);
16167
16224
  const workbookPermissionIds = [];
16168
16225
  workbookPermissionTypes.forEach((F) => workbookPermissionIds.push(new F(unitId).id));
16169
- return permissionService.composePermission$(workbookPermissionIds).pipe(map$1((list) => list.every((item) => item.value === true))).pipe(map$1((basePermission) => {
16170
- if (!basePermission) return true;
16171
- const subUnitId = activeSheet.getSheetId();
16172
- const worksheetRule = worksheetRuleModel.getRule(unitId, subUnitId);
16173
- const rangeRuleList = selectionRuleModel.getSubunitRuleList(unitId, subUnitId);
16174
- if (worksheetRule || rangeRuleList.length) return true;
16175
- return false;
16226
+ return combineLatest([(_permissionService$co = permissionService.composePermission$(workbookPermissionIds).pipe(map$1((list) => list.every((item) => item.value === true)))) !== null && _permissionService$co !== void 0 ? _permissionService$co : of(false), merge$1(selectionProtectionRuleModel.ruleChange$, worksheetProtectionRuleModel.ruleChange$).pipe(startWith$1(null))]).pipe(map$1(([permission, _]) => {
16227
+ var _selectionProtectionR;
16228
+ if (!permission) return true;
16229
+ const worksheetRule = worksheetProtectionRuleModel.getRule(unitId, subUnitId);
16230
+ if (worksheetRule === null || worksheetRule === void 0 ? void 0 : worksheetRule.permissionId) return true;
16231
+ return ((_selectionProtectionR = selectionProtectionRuleModel.getSubunitRuleList(unitId, subUnitId)) === null || _selectionProtectionR === void 0 ? void 0 : _selectionProtectionR.filter((item) => item === null || item === void 0 ? void 0 : item.permissionId)).length > 0;
16176
16232
  }));
16177
16233
  }));
16178
16234
  }));
@@ -16948,7 +17004,7 @@ function FormatPainterMenuItemFactory(accessor) {
16948
17004
  activated$: new Observable((subscriber) => {
16949
17005
  let active = false;
16950
17006
  const status$ = formatPainterService.status$.subscribe((s) => {
16951
- active = s !== FormatPainterStatus.OFF;
17007
+ active = s !== 0;
16952
17008
  subscriber.next(active);
16953
17009
  });
16954
17010
  subscriber.next(active);
@@ -18194,15 +18250,14 @@ function getRemovePermissionFromSheetBarDisable$(accessor) {
18194
18250
  return combineLatest([univerInstanceService.getCurrentTypeOfUnit$(UniverInstanceType.UNIVER_SHEET), accessor.get(UserManagerService).currentUser$]).pipe(switchMap(([workbook, _]) => {
18195
18251
  if (!workbook) return of(true);
18196
18252
  return workbook.activeSheet$.pipe(switchMap((worksheet) => {
18253
+ var _permissionService$ge2, _permissionService$ge3;
18197
18254
  if (!worksheet) return of(true);
18198
18255
  const unitId = workbook.getUnitId();
18199
18256
  const subUnitId = worksheet.getSheetId();
18200
18257
  const worksheetProtectionRuleModel = accessor.get(WorksheetProtectionRuleModel);
18201
- return worksheetProtectionRuleModel.ruleChange$.pipe(startWith(null)).pipe(map(() => {
18202
- if (worksheetProtectionRuleModel.getRule(unitId, subUnitId)) {
18203
- var _permissionService$ge2;
18204
- return ((_permissionService$ge2 = permissionService.getPermissionPoint(new WorksheetDeleteProtectionPermission(unitId, subUnitId).id)) === null || _permissionService$ge2 === void 0 ? void 0 : _permissionService$ge2.value) === false;
18205
- }
18258
+ return combineLatest([(_permissionService$ge2 = (_permissionService$ge3 = permissionService.getPermissionPoint$(new WorksheetDeleteProtectionPermission(unitId, subUnitId).id)) === null || _permissionService$ge3 === void 0 ? void 0 : _permissionService$ge3.pipe(map((e) => !!e.value))) !== null && _permissionService$ge2 !== void 0 ? _permissionService$ge2 : of(false), worksheetProtectionRuleModel.ruleChange$.pipe(startWith(null))]).pipe(map(([permission, _]) => {
18259
+ const worksheetRule = worksheetProtectionRuleModel.getRule(unitId, subUnitId);
18260
+ if (worksheetRule === null || worksheetRule === void 0 ? void 0 : worksheetRule.permissionId) return !permission;
18206
18261
  return true;
18207
18262
  }));
18208
18263
  }));
@@ -18217,19 +18272,15 @@ function getSetPermissionFromSheetBarDisable$(accessor) {
18217
18272
  var _permissionService$co4;
18218
18273
  if (!worksheet) return of(true);
18219
18274
  const unitId = workbook.getUnitId();
18275
+ const subUnitId = worksheet.getSheetId();
18220
18276
  const selectionProtectionRuleModel = accessor.get(RangeProtectionRuleModel);
18221
18277
  const worksheetProtectionRuleModel = accessor.get(WorksheetProtectionRuleModel);
18222
- return combineLatest([
18223
- (_permissionService$co4 = permissionService.composePermission$([new WorkbookCreateProtectPermission(unitId).id, new WorkbookManageCollaboratorPermission(unitId).id]).pipe(map((permissions) => permissions.every((permission) => permission.value)))) !== null && _permissionService$co4 !== void 0 ? _permissionService$co4 : of(false),
18224
- worksheetProtectionRuleModel.ruleChange$.pipe(startWith(null)),
18225
- selectionProtectionRuleModel.ruleChange$.pipe(startWith(null))
18226
- ]).pipe(map(([permission, _, __]) => {
18278
+ return combineLatest([(_permissionService$co4 = permissionService.composePermission$([new WorkbookCreateProtectPermission(unitId).id, new WorkbookManageCollaboratorPermission(unitId).id]).pipe(map((permissions) => permissions.every((permission) => permission.value)))) !== null && _permissionService$co4 !== void 0 ? _permissionService$co4 : of(false), merge$1(selectionProtectionRuleModel.ruleChange$, worksheetProtectionRuleModel.ruleChange$).pipe(startWith(null))]).pipe(map(([permission, _]) => {
18279
+ var _selectionProtectionR2;
18227
18280
  if (!permission) return true;
18228
- const subUnitId = worksheet.getSheetId();
18229
18281
  const worksheetRule = worksheetProtectionRuleModel.getRule(unitId, subUnitId);
18230
- const selectionRuleList = selectionProtectionRuleModel.getSubunitRuleList(unitId, subUnitId);
18231
- if (worksheetRule || selectionRuleList.length) return false;
18232
- return true;
18282
+ if (worksheetRule === null || worksheetRule === void 0 ? void 0 : worksheetRule.permissionId) return false;
18283
+ return ((_selectionProtectionR2 = selectionProtectionRuleModel.getSubunitRuleList(unitId, subUnitId)) === null || _selectionProtectionR2 === void 0 ? void 0 : _selectionProtectionR2.filter((item) => item === null || item === void 0 ? void 0 : item.permissionId)).length === 0;
18233
18284
  }));
18234
18285
  }));
18235
18286
  }));
@@ -18254,8 +18305,8 @@ function getRemovePermissionDisable$(accessor) {
18254
18305
  if ((selectionRange === null || selectionRange === void 0 ? void 0 : selectionRange.rangeType) === RANGE_TYPE.ALL || (selectionRange === null || selectionRange === void 0 ? void 0 : selectionRange.rangeType) === RANGE_TYPE.COLUMN || (selectionRange === null || selectionRange === void 0 ? void 0 : selectionRange.rangeType) === RANGE_TYPE.ROW) return true;
18255
18306
  const worksheetRule = worksheetProtectionRuleModel.getRule(unitId, subUnitId);
18256
18307
  if (worksheetRule === null || worksheetRule === void 0 ? void 0 : worksheetRule.permissionId) {
18257
- var _permissionService$ge3;
18258
- return ((_permissionService$ge3 = permissionService.getPermissionPoint(new WorksheetDeleteProtectionPermission(unitId, subUnitId).id)) === null || _permissionService$ge3 === void 0 ? void 0 : _permissionService$ge3.value) === false;
18308
+ var _permissionService$ge4;
18309
+ return ((_permissionService$ge4 = permissionService.getPermissionPoint(new WorksheetDeleteProtectionPermission(unitId, subUnitId).id)) === null || _permissionService$ge4 === void 0 ? void 0 : _permissionService$ge4.value) === false;
18259
18310
  }
18260
18311
  if (selectionProtectionRuleModel.getSubunitRuleList(unitId, subUnitId).filter((rule) => {
18261
18312
  return rule.ranges.some((range) => {
@@ -18290,10 +18341,10 @@ function getViewPermissionDisable$(accessor) {
18290
18341
  ]).pipe(switchMap(([workbook, _, visible, formulaEditorFocus]) => {
18291
18342
  if (!workbook || (visible === null || visible === void 0 ? void 0 : visible.visible) && visible.unitId === workbook.getUnitId() || formulaEditorFocus) return of(true);
18292
18343
  return workbook.activeSheet$.pipe(switchMap((worksheet) => {
18293
- var _permissionService$ge4, _permissionService$ge5;
18344
+ var _permissionService$ge5, _permissionService$ge6;
18294
18345
  if (!worksheet) return of(true);
18295
18346
  const unitId = workbook.getUnitId();
18296
- return ((_permissionService$ge4 = (_permissionService$ge5 = permissionService.getPermissionPoint$(new WorkbookEditablePermission(unitId).id)) === null || _permissionService$ge5 === void 0 ? void 0 : _permissionService$ge5.pipe(map((e) => !!e.value))) !== null && _permissionService$ge4 !== void 0 ? _permissionService$ge4 : of(false)).pipe(map((permission) => !permission));
18347
+ return ((_permissionService$ge5 = (_permissionService$ge6 = permissionService.getPermissionPoint$(new WorkbookEditablePermission(unitId).id)) === null || _permissionService$ge6 === void 0 ? void 0 : _permissionService$ge6.pipe(map((e) => !!e.value))) !== null && _permissionService$ge5 !== void 0 ? _permissionService$ge5 : of(false)).pipe(map((permission) => !permission));
18297
18348
  }));
18298
18349
  }));
18299
18350
  }
@@ -20050,6 +20101,8 @@ const DefinedNameContainer = () => {
20050
20101
  const localeService = useDependency(LocaleService);
20051
20102
  const definedNamesService = useDependency(IDefinedNamesService);
20052
20103
  const selectionManagerService = useDependency(SheetsSelectionsService);
20104
+ const permissionService = useDependency(IPermissionService);
20105
+ const sheetPermissionCheckController = useDependency(SheetPermissionCheckController);
20053
20106
  const workbook = univerInstanceService.getCurrentUnitOfType(UniverInstanceType.UNIVER_SHEET);
20054
20107
  const unitId = workbook === null || workbook === void 0 ? void 0 : workbook.getUnitId();
20055
20108
  const getDefinedNameMap = () => {
@@ -20062,6 +20115,7 @@ const DefinedNameContainer = () => {
20062
20115
  const [definedNames, setDefinedNames] = useState([]);
20063
20116
  const [editorKey, setEditorKey] = useState(null);
20064
20117
  const [deleteConformKey, setDeleteConformKey] = useState();
20118
+ const [permissionCheckVersion, setPermissionCheckVersion] = useState(0);
20065
20119
  const listContainerRef = useRef(void 0);
20066
20120
  const [virtualDefinedNames, virtualActions] = useVirtualList(definedNames, {
20067
20121
  containerTarget: listContainerRef,
@@ -20080,7 +20134,21 @@ const DefinedNameContainer = () => {
20080
20134
  definedNamesSubscription.unsubscribe();
20081
20135
  };
20082
20136
  }, []);
20137
+ useEffect(() => {
20138
+ const permissionSubscription = permissionService.permissionPointUpdate$.subscribe(() => {
20139
+ setPermissionCheckVersion((v) => v + 1);
20140
+ });
20141
+ return () => {
20142
+ permissionSubscription.unsubscribe();
20143
+ };
20144
+ }, [permissionService]);
20083
20145
  if (!workbook || !unitId) return;
20146
+ const checkWorkbookPermission = sheetPermissionCheckController.permissionCheckWithoutRange({ workbookTypes: [WorkbookEditablePermission] }, unitId);
20147
+ const checkDefinedNamePermission = (definedName) => {
20148
+ const { localSheetId } = definedName;
20149
+ if (!localSheetId || localSheetId === SCOPE_WORKBOOK_VALUE_DEFINED_NAME) return checkWorkbookPermission;
20150
+ return sheetPermissionCheckController.permissionCheckWithoutRange({ worksheetTypes: [WorksheetEditPermission] }, unitId, localSheetId);
20151
+ };
20084
20152
  const insertConfirm = (param) => {
20085
20153
  const { name, formulaOrRefString, comment, localSheetId, hidden } = param;
20086
20154
  let id = param.id;
@@ -20180,6 +20248,7 @@ const DefinedNameContainer = () => {
20180
20248
  className: "univer-mb-4",
20181
20249
  children: [/* @__PURE__ */ jsxs(Button, {
20182
20250
  className: clsx("univer-w-full", { "univer-hidden": editState }),
20251
+ disabled: !checkWorkbookPermission,
20183
20252
  onClick: openInsertCloseKeyEditor,
20184
20253
  children: [/* @__PURE__ */ jsx(IncreaseIcon, {}), /* @__PURE__ */ jsx("span", {
20185
20254
  className: "univer-ml-1",
@@ -20221,7 +20290,7 @@ const DefinedNameContainer = () => {
20221
20290
  title: definedName.formulaOrRefString,
20222
20291
  children: definedName.formulaOrRefString
20223
20292
  })]
20224
- }), /* @__PURE__ */ jsxs("div", {
20293
+ }), checkDefinedNamePermission(definedName) && /* @__PURE__ */ jsxs("div", {
20225
20294
  className: "univer-absolute univer-right-5 univer-top-1/2 univer-hidden -univer-translate-y-1/2 univer-cursor-pointer univer-items-center univer-justify-end univer-gap-7 univer-text-xs univer-text-primary-600 group-hover:univer-flex dark:hover:!univer-bg-gray-600",
20226
20295
  children: [/* @__PURE__ */ jsx(Tooltip, {
20227
20296
  title: localeService.t("definedName.updateButton"),
@@ -20597,24 +20666,16 @@ const EditorContainer = () => {
20597
20666
 
20598
20667
  //#endregion
20599
20668
  //#region src/services/utils/defined-name-utils.ts
20600
- let DefinedNameBoxActionType = /* @__PURE__ */ function(DefinedNameBoxActionType) {
20601
- DefinedNameBoxActionType["Noop"] = "noop";
20602
- DefinedNameBoxActionType["FocusDefinedName"] = "focusDefinedName";
20603
- DefinedNameBoxActionType["FocusSelection"] = "focusSelection";
20604
- DefinedNameBoxActionType["CreateDefinedName"] = "createDefinedName";
20605
- DefinedNameBoxActionType["Reset"] = "reset";
20606
- return DefinedNameBoxActionType;
20607
- }({});
20608
20669
  function resolveDefinedNameBoxAction(params) {
20609
20670
  const { inputValue, rangeString, unitId, formulaOrRefString, univerInstanceService, definedNamesService, superTableService, functionService } = params;
20610
- if (inputValue === rangeString) return { type: DefinedNameBoxActionType.Noop };
20671
+ if (inputValue === rangeString) return { type: "noop" };
20611
20672
  const definedName = definedNamesService.getValueByName(unitId, inputValue);
20612
20673
  if (definedName) return {
20613
- type: DefinedNameBoxActionType.FocusDefinedName,
20674
+ type: "focusDefinedName",
20614
20675
  definedName
20615
20676
  };
20616
20677
  if (isReferenceStringWithEffectiveColumn(inputValue)) return {
20617
- type: DefinedNameBoxActionType.FocusSelection,
20678
+ type: "focusSelection",
20618
20679
  refString: inputValue
20619
20680
  };
20620
20681
  if (validateDefinedName(inputValue, {
@@ -20625,10 +20686,10 @@ function resolveDefinedNameBoxAction(params) {
20625
20686
  superTableService,
20626
20687
  functionService
20627
20688
  }) === true) return {
20628
- type: DefinedNameBoxActionType.CreateDefinedName,
20689
+ type: "createDefinedName",
20629
20690
  name: inputValue
20630
20691
  };
20631
- return { type: DefinedNameBoxActionType.Reset };
20692
+ return { type: "reset" };
20632
20693
  }
20633
20694
  function getAbsoluteRefStringFromSelection(workbook, selections, lexerTreeBuilder) {
20634
20695
  var _workbook$getActiveSh;
@@ -20755,6 +20816,7 @@ function DefinedName({ disable }) {
20755
20816
  const superTableService = useDependency(ISuperTableService);
20756
20817
  const functionService = useDependency(IFunctionService);
20757
20818
  const layoutService = useDependency(ILayoutService);
20819
+ const sheetPermissionCheckController = useDependency(SheetPermissionCheckController);
20758
20820
  const workbook = univerInstanceService.getCurrentUnitOfType(UniverInstanceType.UNIVER_SHEET);
20759
20821
  const unitId = workbook === null || workbook === void 0 ? void 0 : workbook.getUnitId();
20760
20822
  const themeService = useDependency(ThemeService);
@@ -20843,19 +20905,19 @@ function DefinedName({ disable }) {
20843
20905
  functionService
20844
20906
  });
20845
20907
  switch (action.type) {
20846
- case DefinedNameBoxActionType.Noop: return true;
20847
- case DefinedNameBoxActionType.FocusDefinedName:
20908
+ case "noop": return true;
20909
+ case "focusDefinedName":
20848
20910
  setRangeString(action.definedName.name);
20849
20911
  setInputValue(action.definedName.name);
20850
20912
  focusDefinedName(action.definedName);
20851
20913
  return true;
20852
- case DefinedNameBoxActionType.FocusSelection:
20914
+ case "focusSelection":
20853
20915
  setRangeString(action.refString);
20854
20916
  setInputValue(action.refString);
20855
20917
  focusSelection(action.refString);
20856
20918
  return true;
20857
- case DefinedNameBoxActionType.CreateDefinedName: {
20858
- if (!formulaOrRefString) {
20919
+ case "createDefinedName": {
20920
+ if (!formulaOrRefString || !sheetPermissionCheckController.permissionCheckWithoutRange({ workbookTypes: [WorkbookEditablePermission] }, unitId)) {
20859
20921
  resetValue();
20860
20922
  return false;
20861
20923
  }
@@ -20872,7 +20934,7 @@ function DefinedName({ disable }) {
20872
20934
  } else resetValue();
20873
20935
  return !!result;
20874
20936
  }
20875
- case DefinedNameBoxActionType.Reset:
20937
+ case "reset":
20876
20938
  resetValue();
20877
20939
  return false;
20878
20940
  }
@@ -20944,16 +21006,11 @@ function DefinedName({ disable }) {
20944
21006
 
20945
21007
  //#endregion
20946
21008
  //#region src/views/formula-bar/FormulaBar.tsx
20947
- var ArrowDirection = /* @__PURE__ */ function(ArrowDirection) {
20948
- ArrowDirection[ArrowDirection["Down"] = 0] = "Down";
20949
- ArrowDirection[ArrowDirection["Up"] = 1] = "Up";
20950
- return ArrowDirection;
20951
- }(ArrowDirection || {});
20952
21009
  function FormulaBar(props) {
20953
21010
  var _editState$documentLa, _editState$documentLa2;
20954
21011
  const { className, disableDefinedName } = props;
20955
21012
  const [iconActivated, setIconActivated] = useState(false);
20956
- const [arrowDirection, setArrowDirection] = useState(ArrowDirection.Down);
21013
+ const [arrowDirection, setArrowDirection] = useState(0);
20957
21014
  const formulaEditorManagerService = useDependency(IFormulaEditorManagerService);
20958
21015
  const editorBridgeService = useDependency(IEditorBridgeService);
20959
21016
  const worksheetProtectionRuleModel = useDependency(WorksheetProtectionRuleModel);
@@ -20974,7 +21031,7 @@ function FormulaBar(props) {
20974
21031
  const editState = useObservable(editorBridgeService.currentEditCellState$);
20975
21032
  const keyCodeConfig = useKeyEventConfig(isRefSelecting, editState === null || editState === void 0 ? void 0 : editState.unitId);
20976
21033
  const FormulaEditor = componentManager.get(EMBEDDING_FORMULA_EDITOR_COMPONENT_KEY);
20977
- const formulaAuxUIParts = useComponentsOfPart(SheetsUIPart.FORMULA_AUX);
21034
+ const formulaAuxUIParts = useComponentsOfPart("formula-aux");
20978
21035
  const contextService = useDependency(IContextService);
20979
21036
  useObservable(useMemo(() => contextService.subscribeContextValue$(FOCUSING_FX_BAR_EDITOR), [contextService]));
20980
21037
  const isFocusFxBar = contextService.getContextValue(FOCUSING_FX_BAR_EDITOR);
@@ -21054,9 +21111,9 @@ function FormulaBar(props) {
21054
21111
  }
21055
21112
  }, [formulaEditorManagerService]);
21056
21113
  function handleArrowClick() {
21057
- setArrowDirection(arrowDirection === ArrowDirection.Down ? ArrowDirection.Up : ArrowDirection.Down);
21114
+ setArrowDirection(arrowDirection === 0 ? 1 : 0);
21058
21115
  setTimeout(() => {
21059
- formulaEditorManagerService.handleFoldBtnClick(arrowDirection === ArrowDirection.Up);
21116
+ formulaEditorManagerService.handleFoldBtnClick(arrowDirection === 1);
21060
21117
  }, 150);
21061
21118
  }
21062
21119
  function handleCloseBtnClick() {
@@ -21109,8 +21166,8 @@ function FormulaBar(props) {
21109
21166
  return /* @__PURE__ */ jsxs("div", {
21110
21167
  "data-u-comp": "formula-bar",
21111
21168
  className: clsx("univer-box-border univer-flex univer-bg-white univer-transition-[height] univer-ease-linear dark:!univer-bg-gray-900", borderBottomClassName, className, {
21112
- "univer-h-7": arrowDirection === ArrowDirection.Down,
21113
- "univer-h-20": arrowDirection === ArrowDirection.Up,
21169
+ "univer-h-7": arrowDirection === 0,
21170
+ "univer-h-20": arrowDirection === 1,
21114
21171
  "univer-pointer-events-none": editDisable
21115
21172
  }),
21116
21173
  children: [
@@ -21175,7 +21232,7 @@ function FormulaBar(props) {
21175
21232
  }), /* @__PURE__ */ jsx("div", {
21176
21233
  className: clsx("univer-flex univer-h-full univer-w-5 univer-cursor-pointer univer-items-center univer-justify-center univer-text-xs univer-text-gray-700 dark:!univer-text-gray-200", { "univer-cursor-not-allowed univer-text-gray-200 dark:!univer-text-gray-700": editDisable }),
21177
21234
  onClick: handleArrowClick,
21178
- children: /* @__PURE__ */ jsx(DropdownIcon, { className: clsx({ "univer-rotate-180": arrowDirection === ArrowDirection.Up }) })
21235
+ children: /* @__PURE__ */ jsx(DropdownIcon, { className: clsx({ "univer-rotate-180": arrowDirection === 1 }) })
21179
21236
  })]
21180
21237
  })]
21181
21238
  }),
@@ -21404,15 +21461,10 @@ const CONFIG = {
21404
21461
  cancel(v) {},
21405
21462
  complete(v) {}
21406
21463
  };
21407
- let AnimateStatus = /* @__PURE__ */ function(AnimateStatus) {
21408
- AnimateStatus[AnimateStatus["Request"] = 0] = "Request";
21409
- AnimateStatus[AnimateStatus["Cancel"] = 1] = "Cancel";
21410
- return AnimateStatus;
21411
- }({});
21412
21464
  var Animate = class {
21413
21465
  constructor(config) {
21414
21466
  _defineProperty(this, "_config", void 0);
21415
- _defineProperty(this, "_status", AnimateStatus.Request);
21467
+ _defineProperty(this, "_status", 0);
21416
21468
  _defineProperty(this, "_start", 0);
21417
21469
  _defineProperty(this, "_handle", 0);
21418
21470
  _defineProperty(this, "_delayHandle", null);
@@ -21445,20 +21497,20 @@ var Animate = class {
21445
21497
  }
21446
21498
  request() {
21447
21499
  if (this._config.delay === 0) {
21448
- this._status = AnimateStatus.Request;
21500
+ this._status = 0;
21449
21501
  this._start = Date.now();
21450
21502
  this._fakeHandle();
21451
21503
  } else {
21452
21504
  this._delayHandle && clearTimeout(this._delayHandle);
21453
21505
  this._delayHandle = setTimeout(() => {
21454
- this._status = AnimateStatus.Request;
21506
+ this._status = 0;
21455
21507
  this._start = Date.now();
21456
21508
  this._fakeHandle();
21457
21509
  }, this._config.delay);
21458
21510
  }
21459
21511
  }
21460
21512
  cancel() {
21461
- this._status = AnimateStatus.Cancel;
21513
+ this._status = 1;
21462
21514
  this._delayHandle && clearTimeout(this._delayHandle);
21463
21515
  cancelAnimationFrame(this._handle);
21464
21516
  }
@@ -21467,7 +21519,7 @@ var Animate = class {
21467
21519
  times = times >= this._config.duration ? this._config.duration : times;
21468
21520
  const fix = Tween[this._config.type](times, this._config.begin, this._config.end - this._config.begin, this._config.duration, .7).toFixed(2);
21469
21521
  this._config.receive(fix);
21470
- if (this._status === AnimateStatus.Cancel) {
21522
+ if (this._status === 1) {
21471
21523
  this._config.cancel(fix);
21472
21524
  this._config.complete(fix);
21473
21525
  return;
@@ -21757,7 +21809,8 @@ var SlideScrollbar = class {
21757
21809
  constructor(slideTabBar) {
21758
21810
  _defineProperty(this, "_slideTabBar", void 0);
21759
21811
  _defineProperty(this, "_scrollX", void 0);
21760
- this._scrollX = slideTabBar.primeval().scrollLeft;
21812
+ const primeval = slideTabBar.primeval();
21813
+ this._scrollX = primeval.scrollLeft;
21761
21814
  this._slideTabBar = slideTabBar;
21762
21815
  }
21763
21816
  scrollX(x) {
@@ -22650,6 +22703,8 @@ const SheetBar = () => {
22650
22703
  const unitId = useActiveWorkbook().getUnitId();
22651
22704
  const workbookEditablePermission = useObservable(permissionService.getPermissionPoint$((_WorkbookEditablePerm = new WorkbookEditablePermission(unitId)) === null || _WorkbookEditablePerm === void 0 ? void 0 : _WorkbookEditablePerm.id));
22652
22705
  const workbookCreateSheetPermission = useObservable(permissionService.getPermissionPoint$((_WorkbookCreateSheetP = new WorkbookCreateSheetPermission(unitId)) === null || _WorkbookCreateSheetP === void 0 ? void 0 : _WorkbookCreateSheetP.id));
22706
+ const config = useConfigValue(SHEETS_UI_PLUGIN_CONFIG_KEY);
22707
+ const { show: addSheetButtonShow = true, defaultRowCount = DEFAULT_WORKSHEET_ROW_COUNT, defaultColumnCount = DEFAULT_WORKSHEET_COLUMN_COUNT } = ((config === null || config === void 0 ? void 0 : config.footer) || {}).addSheetButtonConfig || {};
22653
22708
  const updateScrollButtonState = (state) => {
22654
22709
  const { leftEnd, rightEnd } = state;
22655
22710
  setLeftScrollState(leftEnd);
@@ -22664,7 +22719,10 @@ const SheetBar = () => {
22664
22719
  };
22665
22720
  }, []);
22666
22721
  const addSheet = () => {
22667
- commandService.executeCommand(InsertSheetCommand.id);
22722
+ commandService.executeCommand(InsertSheetCommand.id, { sheet: {
22723
+ rowCount: defaultRowCount,
22724
+ columnCount: defaultColumnCount
22725
+ } });
22668
22726
  setTimeout(() => {
22669
22727
  sheetBarService.setAddSheet(0);
22670
22728
  }, 0);
@@ -22680,7 +22738,7 @@ const SheetBar = () => {
22680
22738
  children: [
22681
22739
  /* @__PURE__ */ jsxs("div", {
22682
22740
  className: "univer-flex univer-items-center",
22683
- children: [/* @__PURE__ */ jsx(SheetBarButton, {
22741
+ children: [addSheetButtonShow && /* @__PURE__ */ jsx(SheetBarButton, {
22684
22742
  className: "univer-mr-2",
22685
22743
  onClick: addSheet,
22686
22744
  disabled: !((workbookCreateSheetPermission === null || workbookCreateSheetPermission === void 0 ? void 0 : workbookCreateSheetPermission.value) && (workbookEditablePermission === null || workbookEditablePermission === void 0 ? void 0 : workbookEditablePermission.value)),
@@ -23182,7 +23240,7 @@ const MoveSelectionEndDownShortcutItem = {
23182
23240
  preconditions: whenSheetEditorFocused,
23183
23241
  staticParameters: {
23184
23242
  direction: Direction.DOWN,
23185
- jumpOver: JumpOver.moveGap
23243
+ jumpOver: 1
23186
23244
  }
23187
23245
  };
23188
23246
  const MoveSelectionEndUpShortcutItem = {
@@ -23193,7 +23251,7 @@ const MoveSelectionEndUpShortcutItem = {
23193
23251
  preconditions: whenSheetEditorFocused,
23194
23252
  staticParameters: {
23195
23253
  direction: Direction.UP,
23196
- jumpOver: JumpOver.moveGap
23254
+ jumpOver: 1
23197
23255
  }
23198
23256
  };
23199
23257
  const MoveSelectionEndLeftShortcutItem = {
@@ -23204,7 +23262,7 @@ const MoveSelectionEndLeftShortcutItem = {
23204
23262
  preconditions: whenSheetEditorFocused,
23205
23263
  staticParameters: {
23206
23264
  direction: Direction.LEFT,
23207
- jumpOver: JumpOver.moveGap
23265
+ jumpOver: 1
23208
23266
  }
23209
23267
  };
23210
23268
  const MoveSelectionEndRightShortcutItem = {
@@ -23215,7 +23273,7 @@ const MoveSelectionEndRightShortcutItem = {
23215
23273
  preconditions: whenSheetEditorFocused,
23216
23274
  staticParameters: {
23217
23275
  direction: Direction.RIGHT,
23218
- jumpOver: JumpOver.moveGap
23276
+ jumpOver: 1
23219
23277
  }
23220
23278
  };
23221
23279
  const ExpandSelectionDownShortcutItem = {
@@ -23258,7 +23316,7 @@ const ExpandSelectionEndDownShortcutItem = {
23258
23316
  preconditions: whenSheetEditorFocused,
23259
23317
  staticParameters: {
23260
23318
  direction: Direction.DOWN,
23261
- jumpOver: JumpOver.moveGap
23319
+ jumpOver: 1
23262
23320
  }
23263
23321
  };
23264
23322
  const ExpandSelectionEndUpShortcutItem = {
@@ -23269,7 +23327,7 @@ const ExpandSelectionEndUpShortcutItem = {
23269
23327
  preconditions: whenSheetEditorFocused,
23270
23328
  staticParameters: {
23271
23329
  direction: Direction.UP,
23272
- jumpOver: JumpOver.moveGap
23330
+ jumpOver: 1
23273
23331
  }
23274
23332
  };
23275
23333
  const ExpandSelectionEndLeftShortcutItem = {
@@ -23280,7 +23338,7 @@ const ExpandSelectionEndLeftShortcutItem = {
23280
23338
  preconditions: whenSheetEditorFocused,
23281
23339
  staticParameters: {
23282
23340
  direction: Direction.LEFT,
23283
- jumpOver: JumpOver.moveGap
23341
+ jumpOver: 1
23284
23342
  }
23285
23343
  };
23286
23344
  const ExpandSelectionEndRightShortcutItem = {
@@ -23291,7 +23349,7 @@ const ExpandSelectionEndRightShortcutItem = {
23291
23349
  preconditions: whenSheetEditorFocused,
23292
23350
  staticParameters: {
23293
23351
  direction: Direction.RIGHT,
23294
- jumpOver: JumpOver.moveGap
23352
+ jumpOver: 1
23295
23353
  }
23296
23354
  };
23297
23355
  const SelectAllShortcutItem = {
@@ -23312,28 +23370,28 @@ const SetBoldShortcutItem = {
23312
23370
  id: SetRangeBoldCommand.id,
23313
23371
  description: "shortcut.sheet.set-bold",
23314
23372
  group: "4_sheet-edit",
23315
- preconditions: (contextService) => whenSheetEditorFocused(contextService),
23373
+ preconditions: (contextService) => whenSheetFocusedInlineFormat(contextService),
23316
23374
  binding: KeyCode.B | MetaKeys.CTRL_COMMAND
23317
23375
  };
23318
23376
  const SetItalicShortcutItem = {
23319
23377
  id: SetRangeItalicCommand.id,
23320
23378
  description: "shortcut.sheet.set-italic",
23321
23379
  group: "4_sheet-edit",
23322
- preconditions: (contextService) => whenSheetEditorFocused(contextService),
23380
+ preconditions: (contextService) => whenSheetFocusedInlineFormat(contextService),
23323
23381
  binding: KeyCode.I | MetaKeys.CTRL_COMMAND
23324
23382
  };
23325
23383
  const SetUnderlineShortcutItem = {
23326
23384
  id: SetRangeUnderlineCommand.id,
23327
23385
  description: "shortcut.sheet.set-underline",
23328
23386
  group: "4_sheet-edit",
23329
- preconditions: (contextService) => whenSheetEditorFocused(contextService),
23387
+ preconditions: (contextService) => whenSheetFocusedInlineFormat(contextService),
23330
23388
  binding: KeyCode.U | MetaKeys.CTRL_COMMAND
23331
23389
  };
23332
23390
  const SetStrikeThroughShortcutItem = {
23333
23391
  id: SetRangeStrickThroughCommand.id,
23334
23392
  description: "shortcut.sheet.set-strike-through",
23335
23393
  group: "4_sheet-edit",
23336
- preconditions: (contextService) => whenSheetEditorFocused(contextService),
23394
+ preconditions: (contextService) => whenSheetFocusedInlineFormat(contextService),
23337
23395
  binding: KeyCode.X | MetaKeys.SHIFT | MetaKeys.CTRL_COMMAND
23338
23396
  };
23339
23397
 
@@ -23892,7 +23950,7 @@ const useHighlightRange = (ranges = []) => {
23892
23950
  //#endregion
23893
23951
  //#region package.json
23894
23952
  var name = "@univerjs/sheets-ui";
23895
- var version = "0.21.1";
23953
+ var version = "0.22.0";
23896
23954
 
23897
23955
  //#endregion
23898
23956
  //#region src/services/cell-alert-manager.service.ts
@@ -23982,9 +24040,9 @@ function CellAlert({ popup }) {
23982
24040
  if (!alert) return null;
23983
24041
  const { type, title, message } = alert;
23984
24042
  const iconMap = {
23985
- [CellAlertType.ERROR]: /* @__PURE__ */ jsx(ErrorIcon, { className: "univer-mr-1.5 univer-text-red-500" }),
23986
- [CellAlertType.INFO]: /* @__PURE__ */ jsx(InfoIcon, { className: "univer-mr-1.5 univer-text-blue-500" }),
23987
- [CellAlertType.WARNING]: /* @__PURE__ */ jsx(WarningIcon, { className: "univer-mr-1.5 univer-text-yellow-500" })
24043
+ [2]: /* @__PURE__ */ jsx(ErrorIcon, { className: "univer-mr-1.5 univer-text-red-500" }),
24044
+ [0]: /* @__PURE__ */ jsx(InfoIcon, { className: "univer-mr-1.5 univer-text-blue-500" }),
24045
+ [1]: /* @__PURE__ */ jsx(WarningIcon, { className: "univer-mr-1.5 univer-text-yellow-500" })
23988
24046
  };
23989
24047
  return /* @__PURE__ */ jsxs("div", {
23990
24048
  className: "univer-z-[100] univer-box-border univer-w-[156px] univer-rounded-lg univer-bg-white univer-px-2 univer-py-1 univer-text-gray-900 univer-shadow dark:!univer-bg-black dark:!univer-text-white",
@@ -24438,7 +24496,7 @@ let ForceStringAlertRenderController = class ForceStringAlertRenderController ex
24438
24496
  return;
24439
24497
  }
24440
24498
  this._cellAlertManagerService.showAlert({
24441
- type: CellAlertType.ERROR,
24499
+ type: 2,
24442
24500
  title: this._localeService.t("info.error"),
24443
24501
  message: this._localeService.t("info.forceStringInfo"),
24444
24502
  location,
@@ -24547,7 +24605,7 @@ let FormatPainterController = class FormatPainterController extends Disposable {
24547
24605
  priority: 0,
24548
24606
  isDefaultHook: true,
24549
24607
  onStatusChange: (status) => {
24550
- if (status !== FormatPainterStatus.OFF) {
24608
+ if (status !== 0) {
24551
24609
  const format = this._collectSelectionRangeFormat();
24552
24610
  if (format) this._formatPainterService.setSelectionFormat(format);
24553
24611
  }
@@ -26963,7 +27021,7 @@ let FormatPainterRenderController = class FormatPainterRenderController extends
26963
27021
  }
26964
27022
  _commandExecutedListener() {
26965
27023
  this.disposeWithMe(this._selectionRenderService.selectionMoveEnd$.subscribe((selections) => {
26966
- if (this._formatPainterService.getStatus() !== FormatPainterStatus.OFF) {
27024
+ if (this._formatPainterService.getStatus() !== 0) {
26967
27025
  var _this$_context$unit$g;
26968
27026
  const { rangeWithCoord } = selections[selections.length - 1];
26969
27027
  this._commandService.executeCommand(ApplyFormatPainterCommand.id, {
@@ -26976,7 +27034,7 @@ let FormatPainterRenderController = class FormatPainterRenderController extends
26976
27034
  endColumn: rangeWithCoord.endColumn
26977
27035
  }
26978
27036
  });
26979
- if (this._formatPainterService.getStatus() === FormatPainterStatus.ONCE) this._commandService.executeCommand(SetOnceFormatPainterCommand.id);
27037
+ if (this._formatPainterService.getStatus() === 1) this._commandService.executeCommand(SetOnceFormatPainterCommand.id);
26980
27038
  }
26981
27039
  }));
26982
27040
  }
@@ -26984,7 +27042,7 @@ let FormatPainterRenderController = class FormatPainterRenderController extends
26984
27042
  this.disposeWithMe(toDisposable(this._formatPainterService.status$.subscribe((status) => {
26985
27043
  const scene = this._context.scene;
26986
27044
  if (!scene) return;
26987
- if (status !== FormatPainterStatus.OFF) scene.setDefaultCursor(CURSOR_TYPE.CELL);
27045
+ if (status !== 0) scene.setDefaultCursor(CURSOR_TYPE.CELL);
26988
27046
  else scene.setDefaultCursor(CURSOR_TYPE.DEFAULT);
26989
27047
  })));
26990
27048
  }
@@ -26997,11 +27055,6 @@ FormatPainterRenderController = __decorate([
26997
27055
 
26998
27056
  //#endregion
26999
27057
  //#region src/menu/header-menu-shape.ts
27000
- let HEADER_MENU_SHAPE_TYPE = /* @__PURE__ */ function(HEADER_MENU_SHAPE_TYPE) {
27001
- HEADER_MENU_SHAPE_TYPE[HEADER_MENU_SHAPE_TYPE["NORMAL"] = 0] = "NORMAL";
27002
- HEADER_MENU_SHAPE_TYPE[HEADER_MENU_SHAPE_TYPE["HIGHLIGHT"] = 1] = "HIGHLIGHT";
27003
- return HEADER_MENU_SHAPE_TYPE;
27004
- }({});
27005
27058
  const HEADER_MENU_SHAPE_CIRCLE_FILL = "rgba(0, 0, 0, 0.15)";
27006
27059
  const HEADER_MENU_SHAPE_TRIANGLE_FILL = "rgb(0, 0, 0)";
27007
27060
  const HEADER_MENU_BACKGROUND_COLOR = "rgb(255, 255, 255, 1)";
@@ -27010,7 +27063,7 @@ var HeaderMenuShape = class extends Shape {
27010
27063
  super(key, props);
27011
27064
  _defineProperty(this, "_size", 12);
27012
27065
  _defineProperty(this, "_iconRatio", .4);
27013
- _defineProperty(this, "_mode", HEADER_MENU_SHAPE_TYPE.NORMAL);
27066
+ _defineProperty(this, "_mode", 0);
27014
27067
  this.setShapeProps(props);
27015
27068
  }
27016
27069
  setShapeProps(props) {
@@ -27022,7 +27075,7 @@ var HeaderMenuShape = class extends Shape {
27022
27075
  });
27023
27076
  }
27024
27077
  _draw(ctx) {
27025
- if (this._mode === HEADER_MENU_SHAPE_TYPE.HIGHLIGHT) Rect.drawWith(ctx, {
27078
+ if (this._mode === 1) Rect.drawWith(ctx, {
27026
27079
  width: this._size,
27027
27080
  height: this._size,
27028
27081
  radius: this._size,
@@ -27057,11 +27110,6 @@ var HeaderMenuShape = class extends Shape {
27057
27110
  const HEADER_MENU_CONTROLLER_SHAPE = "__SpreadsheetHeaderMenuSHAPEControllerShape__";
27058
27111
  const HEADER_MENU_CONTROLLER_MENU = "__SpreadsheetHeaderMenuMAINControllerShape__";
27059
27112
  const HEADER_MENU_CONTROLLER_SHAPE_COLOR = "rgba(0, 0, 0, 0.1)";
27060
- var HEADER_HOVER_TYPE = /* @__PURE__ */ function(HEADER_HOVER_TYPE) {
27061
- HEADER_HOVER_TYPE[HEADER_HOVER_TYPE["ROW"] = 0] = "ROW";
27062
- HEADER_HOVER_TYPE[HEADER_HOVER_TYPE["COLUMN"] = 1] = "COLUMN";
27063
- return HEADER_HOVER_TYPE;
27064
- }(HEADER_HOVER_TYPE || {});
27065
27113
  let HeaderMenuRenderController = class HeaderMenuRenderController extends Disposable {
27066
27114
  constructor(_context, _sheetSkeletonManagerService, _contextMenuService, _commandService, _selectionManagerService) {
27067
27115
  super();
@@ -27095,22 +27143,22 @@ let HeaderMenuRenderController = class HeaderMenuRenderController extends Dispos
27095
27143
  visible: false
27096
27144
  });
27097
27145
  scene.addObjects([this._hoverRect, this._hoverMenu], 10);
27098
- this._initialHover(HEADER_HOVER_TYPE.ROW);
27099
- this._initialHover(HEADER_HOVER_TYPE.COLUMN);
27146
+ this._initialHover(0);
27147
+ this._initialHover(1);
27100
27148
  this._initialHoverMenu();
27101
27149
  }
27102
- _initialHover(initialType = HEADER_HOVER_TYPE.ROW) {
27150
+ _initialHover(initialType = 0) {
27103
27151
  var _this$_headerPointerS2, _this$_headerPointerS3, _this$_headerPointerS4;
27104
- const spreadsheetColumnHeader = this._context.components.get(SHEET_VIEW_KEY.COLUMN);
27105
- const spreadsheetRowHeader = this._context.components.get(SHEET_VIEW_KEY.ROW);
27106
- const eventBindingObject = initialType === HEADER_HOVER_TYPE.ROW ? spreadsheetRowHeader : spreadsheetColumnHeader;
27152
+ const spreadsheetColumnHeader = this._context.components.get("__SpreadsheetColumnHeader__");
27153
+ const spreadsheetRowHeader = this._context.components.get("__SpreadsheetRowHeader__");
27154
+ const eventBindingObject = initialType === 0 ? spreadsheetRowHeader : spreadsheetColumnHeader;
27107
27155
  const pointerMoveHandler = (evt) => {
27108
27156
  var _this$_sheetSkeletonM;
27109
27157
  const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
27110
27158
  if (skeleton == null) return;
27111
27159
  const { rowHeaderWidth, columnHeaderHeight } = skeleton;
27112
27160
  const { startX, startY, endX, endY, column } = getCoordByOffset(evt.offsetX, evt.offsetY, this._context.scene, skeleton);
27113
- if (initialType === HEADER_HOVER_TYPE.ROW) {
27161
+ if (initialType === 0) {
27114
27162
  var _this$_hoverRect2;
27115
27163
  (_this$_hoverRect2 = this._hoverRect) === null || _this$_hoverRect2 === void 0 || _this$_hoverRect2.transformByState({
27116
27164
  width: rowHeaderWidth,
@@ -27163,7 +27211,7 @@ let HeaderMenuRenderController = class HeaderMenuRenderController extends Dispos
27163
27211
  this._hoverMenu.onPointerEnter$.subscribeEvent(() => {
27164
27212
  if (this._hoverMenu == null) return;
27165
27213
  this._hoverMenu.setProps({
27166
- mode: HEADER_MENU_SHAPE_TYPE.HIGHLIGHT,
27214
+ mode: 1,
27167
27215
  visible: true
27168
27216
  });
27169
27217
  this._context.scene.setCursor(CURSOR_TYPE.POINTER);
@@ -27171,7 +27219,7 @@ let HeaderMenuRenderController = class HeaderMenuRenderController extends Dispos
27171
27219
  this._hoverMenu.onPointerLeave$.subscribeEvent(() => {
27172
27220
  if (this._hoverMenu == null) return;
27173
27221
  this._hoverMenu.setProps({
27174
- mode: HEADER_MENU_SHAPE_TYPE.NORMAL,
27222
+ mode: 0,
27175
27223
  visible: false
27176
27224
  });
27177
27225
  this._context.scene.resetCursor();
@@ -27232,11 +27280,6 @@ HeaderMenuRenderController = __decorate([
27232
27280
 
27233
27281
  //#endregion
27234
27282
  //#region src/views/header-unhide-shape.ts
27235
- let HeaderUnhideShapeType = /* @__PURE__ */ function(HeaderUnhideShapeType) {
27236
- HeaderUnhideShapeType[HeaderUnhideShapeType["ROW"] = 0] = "ROW";
27237
- HeaderUnhideShapeType[HeaderUnhideShapeType["COLUMN"] = 1] = "COLUMN";
27238
- return HeaderUnhideShapeType;
27239
- }({});
27240
27283
  const UNHIDE_ICON_SIZE = 12;
27241
27284
  const UNHIDE_ARROW_RATIO = .4;
27242
27285
  var HeaderUnhideShape = class extends Shape {
@@ -27259,12 +27302,12 @@ var HeaderUnhideShape = class extends Shape {
27259
27302
  if (props.hasPrevious !== void 0) this._hasPrevious = props.hasPrevious;
27260
27303
  if (props.hasNext !== void 0) this._hasNext = props.hasNext;
27261
27304
  this.transformByState({
27262
- width: this._size * (this._unhideType === HeaderUnhideShapeType.COLUMN ? 2 : 1),
27263
- height: this._size * (this._unhideType === HeaderUnhideShapeType.ROW ? 2 : 1)
27305
+ width: this._size * (this._unhideType === 1 ? 2 : 1),
27306
+ height: this._size * (this._unhideType === 0 ? 2 : 1)
27264
27307
  });
27265
27308
  }
27266
27309
  _draw(ctx) {
27267
- if (this._unhideType === HeaderUnhideShapeType.ROW) this._drawOnRow(ctx);
27310
+ if (this._unhideType === 0) this._drawOnRow(ctx);
27268
27311
  else this._drawOnCol(ctx);
27269
27312
  }
27270
27313
  _drawOnRow(ctx) {
@@ -27440,7 +27483,7 @@ let HeaderUnhideRenderController = class HeaderUnhideRenderController extends Rx
27440
27483
  const hasPrevious = startRow !== 0;
27441
27484
  const hasNext = endRow !== rowCount - 1;
27442
27485
  return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
27443
- type: HeaderUnhideShapeType.ROW,
27486
+ type: 0,
27444
27487
  hovered: false,
27445
27488
  hasPrevious,
27446
27489
  hasNext,
@@ -27459,7 +27502,7 @@ let HeaderUnhideRenderController = class HeaderUnhideRenderController extends Rx
27459
27502
  const hasPrevious = startColumn !== 0;
27460
27503
  const hasNext = endColumn !== colCount - 1;
27461
27504
  return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
27462
- type: HeaderUnhideShapeType.COLUMN,
27505
+ type: 1,
27463
27506
  hovered: false,
27464
27507
  hasPrevious,
27465
27508
  hasNext,
@@ -27532,17 +27575,17 @@ const MAIN_AREA_VIEWPORT_KEYS = new Set([
27532
27575
  SHEET_VIEWPORT_KEY.VIEW_LEFT_TOP
27533
27576
  ]);
27534
27577
  const SELECTION_OBJECT_PREFIXES = [
27535
- SELECTION_MANAGER_KEY.Selection,
27536
- SELECTION_MANAGER_KEY.top,
27537
- SELECTION_MANAGER_KEY.bottom,
27538
- SELECTION_MANAGER_KEY.left,
27539
- SELECTION_MANAGER_KEY.right,
27540
- SELECTION_MANAGER_KEY.fillTopLeft,
27541
- SELECTION_MANAGER_KEY.fillBottomRight,
27542
- SELECTION_MANAGER_KEY.backgroundTop,
27543
- SELECTION_MANAGER_KEY.backgroundMiddleLeft,
27544
- SELECTION_MANAGER_KEY.backgroundMiddleRight,
27545
- SELECTION_MANAGER_KEY.backgroundBottom
27578
+ "__SpreadsheetSelectionShape__",
27579
+ "__SpreadsheetSelectionTopControl__",
27580
+ "__SpreadsheetSelectionBottomControl__",
27581
+ "__SpreadsheetSelectionShapeLeftControl__",
27582
+ "__SpreadsheetSelectionShapeRightControl__",
27583
+ "__SpreadsheetSelectionFillControlTopLeft__",
27584
+ "__SpreadsheetSelectionFillControlBottomRight__",
27585
+ "__SpreadsheetSelectionBackgroundControlTop__",
27586
+ "__SpreadsheetSelectionBackgroundControlMiddleLeft__",
27587
+ "__SpreadsheetSelectionBackgroundControlMiddleRight__",
27588
+ "__SpreadsheetSelectionBackgroundControlBottom__"
27546
27589
  ];
27547
27590
  function isSelectionObjectKey(objectKey) {
27548
27591
  return !!objectKey && SELECTION_OBJECT_PREFIXES.some((prefix) => objectKey.startsWith(prefix));
@@ -27793,12 +27836,12 @@ let MobileHeaderResizeRenderController = class MobileHeaderResizeRenderControlle
27793
27836
  const scene = this._context.scene;
27794
27837
  this._rowResizeButton = new HeaderMenuResizeShape(MOBILE_HEADER_RESIZE_CONTROLLER_SHAPE_ROW, {
27795
27838
  visible: false,
27796
- mode: HEADER_RESIZE_SHAPE_TYPE.HORIZONTAL,
27839
+ mode: 1,
27797
27840
  zIndex: 100
27798
27841
  });
27799
27842
  this._columnResizeButton = new HeaderMenuResizeShape(MOBILE_HEADER_RESIZE_CONTROLLER_SHAPE_COLUMN, {
27800
27843
  visible: false,
27801
- mode: HEADER_RESIZE_SHAPE_TYPE.VERTICAL,
27844
+ mode: 0,
27802
27845
  zIndex: 100
27803
27846
  });
27804
27847
  scene.addObjects([this._rowResizeButton, this._columnResizeButton], 10);
@@ -29287,7 +29330,7 @@ var MobileSelectionControl = class extends SelectionControl {
29287
29330
  const stroke = defaultStyle.stroke;
29288
29331
  const AutofillStroke = defaultStyle.autofillStroke;
29289
29332
  const zIndex = this.zIndex;
29290
- this._fillControlTopLeft = new Rect(SELECTION_MANAGER_KEY.fillTopLeft + zIndex, {
29333
+ this._fillControlTopLeft = new Rect("__SpreadsheetSelectionFillControlTopLeft__" + zIndex, {
29291
29334
  zIndex: zIndex + 2,
29292
29335
  width: expandCornerSize,
29293
29336
  height: expandCornerSize,
@@ -29296,7 +29339,7 @@ var MobileSelectionControl = class extends SelectionControl {
29296
29339
  visualHeight: expandCornerInnerSize,
29297
29340
  strokeWidth: AutofillStrokeWidth
29298
29341
  });
29299
- this._fillControlBottomRight = new Rect(SELECTION_MANAGER_KEY.fillBottomRight + zIndex, {
29342
+ this._fillControlBottomRight = new Rect("__SpreadsheetSelectionFillControlBottomRight__" + zIndex, {
29300
29343
  zIndex: zIndex + 2,
29301
29344
  width: expandCornerSize,
29302
29345
  height: expandCornerSize,
@@ -29436,15 +29479,6 @@ var MobileSelectionControl = class extends SelectionControl {
29436
29479
 
29437
29480
  //#endregion
29438
29481
  //#region src/services/selection/mobile-selection-render.service.ts
29439
- var ExpandingControl = /* @__PURE__ */ function(ExpandingControl) {
29440
- ExpandingControl["BOTTOM_RIGHT"] = "bottom-right";
29441
- ExpandingControl["TOP_LEFT"] = "top-left";
29442
- ExpandingControl["LEFT"] = "left";
29443
- ExpandingControl["RIGHT"] = "right";
29444
- ExpandingControl["TOP"] = "top";
29445
- ExpandingControl["BOTTOM"] = "bottom";
29446
- return ExpandingControl;
29447
- }(ExpandingControl || {});
29448
29482
  let MobileSheetsSelectionRenderService = class MobileSheetsSelectionRenderService extends BaseSelectionRenderService {
29449
29483
  constructor(_context, injector, themeService, shortcutService, selectionManagerService, sheetSkeletonManagerService, _logService, _commandService, _contextService, _scrollManagerService) {
29450
29484
  super(injector, themeService, shortcutService, sheetSkeletonManagerService, _contextService);
@@ -29457,7 +29491,7 @@ let MobileSheetsSelectionRenderService = class MobileSheetsSelectionRenderServic
29457
29491
  _defineProperty(this, "_renderDisposable", null);
29458
29492
  _defineProperty(this, "_expandingSelection", false);
29459
29493
  _defineProperty(this, "_selectionControls", []);
29460
- _defineProperty(this, "expandingControlMode", ExpandingControl.BOTTOM_RIGHT);
29494
+ _defineProperty(this, "expandingControlMode", "bottom-right");
29461
29495
  _defineProperty(this, "_anchorCellForExpanding", null);
29462
29496
  this._workbookSelections = selectionManagerService.getWorkbookSelections(this._context.unitId);
29463
29497
  this._init();
@@ -29667,24 +29701,24 @@ let MobileSheetsSelectionRenderService = class MobileSheetsSelectionRenderServic
29667
29701
  const { expandingModeForTopLeft, expandingModeForBottomRight } = (() => {
29668
29702
  switch (rangeType) {
29669
29703
  case RANGE_TYPE.NORMAL: return {
29670
- expandingModeForTopLeft: ExpandingControl.TOP_LEFT,
29671
- expandingModeForBottomRight: ExpandingControl.BOTTOM_RIGHT
29704
+ expandingModeForTopLeft: "top-left",
29705
+ expandingModeForBottomRight: "bottom-right"
29672
29706
  };
29673
29707
  case RANGE_TYPE.ROW: return {
29674
- expandingModeForTopLeft: ExpandingControl.TOP,
29675
- expandingModeForBottomRight: ExpandingControl.BOTTOM
29708
+ expandingModeForTopLeft: "top",
29709
+ expandingModeForBottomRight: "bottom"
29676
29710
  };
29677
29711
  case RANGE_TYPE.COLUMN: return {
29678
- expandingModeForTopLeft: ExpandingControl.LEFT,
29679
- expandingModeForBottomRight: ExpandingControl.RIGHT
29712
+ expandingModeForTopLeft: "left",
29713
+ expandingModeForBottomRight: "right"
29680
29714
  };
29681
29715
  case RANGE_TYPE.ALL: return {
29682
- expandingModeForTopLeft: ExpandingControl.TOP_LEFT,
29683
- expandingModeForBottomRight: ExpandingControl.BOTTOM_RIGHT
29716
+ expandingModeForTopLeft: "top-left",
29717
+ expandingModeForBottomRight: "bottom-right"
29684
29718
  };
29685
29719
  default: return {
29686
- expandingModeForTopLeft: ExpandingControl.TOP_LEFT,
29687
- expandingModeForBottomRight: ExpandingControl.BOTTOM_RIGHT
29720
+ expandingModeForTopLeft: "top-left",
29721
+ expandingModeForBottomRight: "bottom-right"
29688
29722
  };
29689
29723
  }
29690
29724
  })();
@@ -29729,7 +29763,8 @@ let MobileSheetsSelectionRenderService = class MobileSheetsSelectionRenderServic
29729
29763
  const viewportMain = scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_MAIN);
29730
29764
  const activeSelectionControl = this.getActiveSelectionControl();
29731
29765
  if (!activeSelectionControl) return;
29732
- this._anchorCellForExpanding = this._changeCurrCellWhenControlPointerDown();
29766
+ const anchorCell = this._changeCurrCellWhenControlPointerDown();
29767
+ this._anchorCellForExpanding = anchorCell;
29733
29768
  this._selectionMoveStart$.next(this.getSelectionDataWithStyle());
29734
29769
  this._clearUpdatingListeners();
29735
29770
  this._addEndingListeners();
@@ -29741,7 +29776,7 @@ let MobileSheetsSelectionRenderService = class MobileSheetsSelectionRenderServic
29741
29776
  this.endSelection();
29742
29777
  this._expandingSelection = false;
29743
29778
  this._contextService.setContextValue(MOBILE_EXPANDING_SELECTION, false);
29744
- this.expandingControlMode = ExpandingControl.BOTTOM_RIGHT;
29779
+ this.expandingControlMode = "bottom-right";
29745
29780
  this._selectionMoveEnd$.next(this.getSelectionDataWithStyle());
29746
29781
  disposableShortcut.dispose();
29747
29782
  });
@@ -29752,28 +29787,28 @@ let MobileSheetsSelectionRenderService = class MobileSheetsSelectionRenderServic
29752
29787
  let currCellRange;
29753
29788
  const { startRow, startColumn, endRow, endColumn } = activeSelectionControl.model;
29754
29789
  switch (this.expandingControlMode) {
29755
- case ExpandingControl.TOP_LEFT:
29790
+ case "top-left":
29756
29791
  currCellRange = skeleton.getCellWithCoordByIndex(endRow, endColumn);
29757
29792
  break;
29758
- case ExpandingControl.BOTTOM_RIGHT:
29793
+ case "bottom-right":
29759
29794
  currCellRange = skeleton.getCellWithCoordByIndex(startRow, startColumn);
29760
29795
  break;
29761
- case ExpandingControl.LEFT:
29796
+ case "left":
29762
29797
  currCellRange = skeleton.getCellWithCoordByIndex(startRow, endColumn);
29763
29798
  currCellRange.isMerged = false;
29764
29799
  currCellRange.isMergedMainCell = false;
29765
29800
  break;
29766
- case ExpandingControl.RIGHT:
29801
+ case "right":
29767
29802
  currCellRange = skeleton.getCellWithCoordByIndex(startRow, startColumn);
29768
29803
  currCellRange.isMerged = false;
29769
29804
  currCellRange.isMergedMainCell = false;
29770
29805
  break;
29771
- case ExpandingControl.TOP:
29806
+ case "top":
29772
29807
  currCellRange = skeleton.getCellWithCoordByIndex(endRow, startColumn);
29773
29808
  currCellRange.isMerged = false;
29774
29809
  currCellRange.isMergedMainCell = false;
29775
29810
  break;
29776
- case ExpandingControl.BOTTOM:
29811
+ case "bottom":
29777
29812
  currCellRange = skeleton.getCellWithCoordByIndex(startRow, startColumn);
29778
29813
  currCellRange.isMerged = false;
29779
29814
  currCellRange.isMergedMainCell = false;
@@ -30102,8 +30137,8 @@ let SheetContextMenuRenderController = class SheetContextMenuRenderController ex
30102
30137
  }
30103
30138
  });
30104
30139
  this.disposeWithMe(spreadsheetSubscription);
30105
- const spreadsheetColumnHeader = this._context.components.get(SHEET_VIEW_KEY.COLUMN);
30106
- const rowHeaderSub = this._context.components.get(SHEET_VIEW_KEY.ROW).onPointerDown$.subscribeEvent((event) => {
30140
+ const spreadsheetColumnHeader = this._context.components.get("__SpreadsheetColumnHeader__");
30141
+ const rowHeaderSub = this._context.components.get("__SpreadsheetRowHeader__").onPointerDown$.subscribeEvent((event) => {
30107
30142
  if (event.button === 2) this._contextMenuService.triggerContextMenu(event, ContextMenuPosition.ROW_HEADER);
30108
30143
  });
30109
30144
  this.disposeWithMe(rowHeaderSub);