@univerjs/sheets-ui 0.22.1 → 0.23.0-insiders.20260522-e8f2a3b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/es/index.js CHANGED
@@ -489,11 +489,13 @@ var BaseSelectionRenderService = class extends Disposable {
489
489
  }
490
490
  newSelectionControl(scene, skeleton, selection) {
491
491
  const zIndex = this.getSelectionControls().length;
492
- const { rowHeaderWidth, columnHeaderHeight } = skeleton;
492
+ const { rowHeaderWidth, rowHeaderWidthAndMarginLeft, columnHeaderHeight, columnHeaderHeightAndMarginTop } = skeleton;
493
493
  const control = new SelectionControl(scene, zIndex, this._selectionTheme, {
494
494
  highlightHeader: this._highlightHeader,
495
495
  rowHeaderWidth,
496
- columnHeaderHeight
496
+ columnHeaderHeight,
497
+ rowHeaderOffsetX: Math.max(0, rowHeaderWidthAndMarginLeft - rowHeaderWidth),
498
+ columnHeaderOffsetY: Math.max(0, columnHeaderHeightAndMarginTop - columnHeaderHeight)
497
499
  });
498
500
  this._selectionControls.push(control);
499
501
  const selectionWithCoord = attachSelectionWithCoord(selection, skeleton);
@@ -1779,7 +1781,7 @@ const SELECTION_TITLE_HIGHLIGHT_ALPHA = .3;
1779
1781
  */
1780
1782
  var SelectionControl = class extends Disposable {
1781
1783
  constructor(_scene, _zIndex, _themeService, options) {
1782
- var _options$enableAutoFi, _options$highlightHea, _options$rowHeaderWid, _options$columnHeader;
1784
+ var _options$enableAutoFi, _options$highlightHea, _options$rowHeaderWid, _options$columnHeader, _options$rowHeaderOff, _options$columnHeader2;
1783
1785
  super();
1784
1786
  this._scene = _scene;
1785
1787
  this._zIndex = _zIndex;
@@ -1818,6 +1820,8 @@ var SelectionControl = class extends Disposable {
1818
1820
  _defineProperty(this, "_currentStyle", void 0);
1819
1821
  _defineProperty(this, "_rowHeaderWidth", 0);
1820
1822
  _defineProperty(this, "_columnHeaderHeight", 0);
1823
+ _defineProperty(this, "_rowHeaderOffsetX", 0);
1824
+ _defineProperty(this, "_columnHeaderOffsetY", 0);
1821
1825
  _defineProperty(this, "_widgetRects", []);
1822
1826
  _defineProperty(this, "_controlExtension", void 0);
1823
1827
  _defineProperty(this, "_dispose$", new BehaviorSubject(this));
@@ -1835,6 +1839,8 @@ var SelectionControl = class extends Disposable {
1835
1839
  this._highlightHeader = (_options$highlightHea = options === null || options === void 0 ? void 0 : options.highlightHeader) !== null && _options$highlightHea !== void 0 ? _options$highlightHea : true;
1836
1840
  this._rowHeaderWidth = (_options$rowHeaderWid = options === null || options === void 0 ? void 0 : options.rowHeaderWidth) !== null && _options$rowHeaderWid !== void 0 ? _options$rowHeaderWid : 0;
1837
1841
  this._columnHeaderHeight = (_options$columnHeader = options === null || options === void 0 ? void 0 : options.columnHeaderHeight) !== null && _options$columnHeader !== void 0 ? _options$columnHeader : 0;
1842
+ this._rowHeaderOffsetX = (_options$rowHeaderOff = options === null || options === void 0 ? void 0 : options.rowHeaderOffsetX) !== null && _options$rowHeaderOff !== void 0 ? _options$rowHeaderOff : 0;
1843
+ this._columnHeaderOffsetY = (_options$columnHeader2 = options === null || options === void 0 ? void 0 : options.columnHeaderOffsetY) !== null && _options$columnHeader2 !== void 0 ? _options$columnHeader2 : 0;
1838
1844
  this._initializeSheetBody();
1839
1845
  this._initialHeader();
1840
1846
  }
@@ -2199,6 +2205,8 @@ var SelectionControl = class extends Disposable {
2199
2205
  if (sk) {
2200
2206
  this._rowHeaderWidth = sk.rowHeaderWidth;
2201
2207
  this._columnHeaderHeight = sk.columnHeaderHeight;
2208
+ this._rowHeaderOffsetX = Math.max(0, sk.rowHeaderWidthAndMarginLeft - sk.rowHeaderWidth);
2209
+ this._columnHeaderOffsetY = Math.max(0, sk.columnHeaderHeightAndMarginTop - sk.columnHeaderHeight);
2202
2210
  }
2203
2211
  this._selectionRenderModel.setValue(selectionWthCoord.rangeWithCoord, selectionWthCoord.primaryWithCoord);
2204
2212
  this._showAutoFill = selectionWthCoord.primaryWithCoord !== null;
@@ -2219,6 +2227,8 @@ var SelectionControl = class extends Disposable {
2219
2227
  update(newSelectionRange, rowHeaderWidth = 0, columnHeaderHeight = 0, style, primaryCell) {
2220
2228
  this._rowHeaderWidth = rowHeaderWidth;
2221
2229
  this._columnHeaderHeight = columnHeaderHeight;
2230
+ this._rowHeaderOffsetX = 0;
2231
+ this._columnHeaderOffsetY = 0;
2222
2232
  this.updateRangeBySelectionWithCoord({
2223
2233
  rangeWithCoord: newSelectionRange,
2224
2234
  primaryWithCoord: primaryCell,
@@ -2338,6 +2348,8 @@ var SelectionControl = class extends Disposable {
2338
2348
  columnHeaderStrokeWidth /= scale;
2339
2349
  const rowHeaderWidth = this._rowHeaderWidth;
2340
2350
  const columnHeaderHeight = this._columnHeaderHeight;
2351
+ const rowHeaderOffsetX = this._rowHeaderOffsetX;
2352
+ const columnHeaderOffsetY = this._columnHeaderOffsetY;
2341
2353
  if (this._highlightHeader && columnHeaderHeight > 0) {
2342
2354
  let highlightTitleColor = columnHeaderFill;
2343
2355
  if (rangeType === RANGE_TYPE.COLUMN) highlightTitleColor = new ColorKit(stroke).setAlpha(SELECTION_TITLE_HIGHLIGHT_ALPHA).toString();
@@ -2350,7 +2362,7 @@ var SelectionControl = class extends Disposable {
2350
2362
  top: columnHeaderHeight - columnHeaderStrokeWidth + 1 / scale
2351
2363
  });
2352
2364
  this._columnHeaderGroup.show();
2353
- this._columnHeaderGroup.translate(startX, 0);
2365
+ this._columnHeaderGroup.translate(startX, columnHeaderOffsetY);
2354
2366
  } else this._columnHeaderGroup.hide();
2355
2367
  this._columnHeaderGroup.makeDirty(true);
2356
2368
  if (this._highlightHeader && rowHeaderWidth > 0) {
@@ -2365,7 +2377,7 @@ var SelectionControl = class extends Disposable {
2365
2377
  left: rowHeaderWidth - rowHeaderStrokeWidth + 1 / scale
2366
2378
  });
2367
2379
  this._rowHeaderGroup.show();
2368
- this._rowHeaderGroup.translate(0, startY);
2380
+ this._rowHeaderGroup.translate(rowHeaderOffsetX, startY);
2369
2381
  } else this._rowHeaderGroup.hide();
2370
2382
  this._rowHeaderGroup.makeDirty(true);
2371
2383
  }
@@ -2705,10 +2717,6 @@ function cloneCellDataWithSpanInfo(cell) {
2705
2717
  //#endregion
2706
2718
  //#region src/services/clipboard/copy-content-cache.ts
2707
2719
  const COPY_CONTENT_CACHE_LIMIT = 10;
2708
- const ID_LENGTH = 6;
2709
- function genId() {
2710
- return generateRandomId(ID_LENGTH);
2711
- }
2712
2720
  function extractId(html) {
2713
2721
  const match = html.match(/data-copy-id="([^\s]+)"/);
2714
2722
  if (match && match[1]) return match[1];
@@ -4196,7 +4204,7 @@ let SheetClipboardService = class SheetClipboardService extends Disposable {
4196
4204
  rowIndex += 1;
4197
4205
  }
4198
4206
  for (let c = startColumn; c <= endColumn; c++) discreteRange.cols.push(c);
4199
- const copyId = genId();
4207
+ const copyId = generateRandomId(6);
4200
4208
  const html = this._usmToHtml.convert(matrix, discreteRange, hooks, copyId);
4201
4209
  return {
4202
4210
  copyId,
@@ -14488,7 +14496,7 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14488
14496
  var _this$_sheetSkeletonM;
14489
14497
  const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
14490
14498
  if (skeleton == null || this._rowResizeRect == null || this._columnResizeRect == null) return;
14491
- const { rowHeaderWidth, columnHeaderHeight } = skeleton;
14499
+ const { rowBaseWidth, rowGutterWidth, columnBaseHeight, columnGutterHeight } = getHeaderBaseLayout$1(skeleton);
14492
14500
  const { startX, startY, endX, endY, row, column } = getCoordByOffset(evt.offsetX, evt.offsetY, scene, skeleton);
14493
14501
  const isLastRow = row === skeleton.worksheet.getRowCount() - 1;
14494
14502
  const isLastColumn = column === skeleton.worksheet.getColumnCount() - 1;
@@ -14508,9 +14516,9 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14508
14516
  }
14509
14517
  if (this._currentRow === -1) return;
14510
14518
  if (!this.interceptor.fetchThroughInterceptors(HEADER_RESIZE_PERMISSION_CHECK)(null, { row: this._currentRow })) return false;
14511
- const rowSize = Math.min(44, rowHeaderWidth / 3);
14519
+ const rowSize = Math.min(44, rowBaseWidth / 3);
14512
14520
  this._rowResizeRect.transformByState({
14513
- left: rowHeaderWidth / 2 - rowSize / 2,
14521
+ left: rowGutterWidth + rowBaseWidth / 2 - rowSize / 2,
14514
14522
  top
14515
14523
  });
14516
14524
  this._rowResizeRect.setShapeProps({ size: rowSize });
@@ -14528,10 +14536,10 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14528
14536
  }
14529
14537
  if (this._currentColumn === -1) return;
14530
14538
  if (!this.interceptor.fetchThroughInterceptors(HEADER_RESIZE_PERMISSION_CHECK)(null, { col: this._currentColumn })) return false;
14531
- const columnSize = columnHeaderHeight * .7;
14539
+ const columnSize = columnBaseHeight * .7;
14532
14540
  this._columnResizeRect.transformByState({
14533
14541
  left,
14534
- top: columnHeaderHeight / 2 - columnSize / 2
14542
+ top: columnGutterHeight + columnBaseHeight / 2 - columnSize / 2
14535
14543
  });
14536
14544
  this._columnResizeRect.setShapeProps({ size: columnSize });
14537
14545
  this._columnResizeRect.show();
@@ -14576,9 +14584,9 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends Di
14576
14584
  let isStartMove = false;
14577
14585
  let moveChangeX = 0;
14578
14586
  let moveChangeY = 0;
14579
- const { columnTotalWidth, rowHeaderWidth, rowTotalHeight, columnHeaderHeight } = skeleton;
14580
- const shapeWidth = canvasMaxWidth > columnTotalWidth + rowHeaderWidth ? canvasMaxWidth : columnTotalWidth + rowHeaderWidth;
14581
- const shapeHeight = canvasMaxHeight > rowTotalHeight + columnHeaderHeight ? canvasMaxHeight : rowTotalHeight + columnHeaderHeight;
14587
+ const { columnTotalWidth, rowHeaderWidthAndMarginLeft, rowTotalHeight, columnHeaderHeightAndMarginTop } = skeleton;
14588
+ const shapeWidth = canvasMaxWidth > columnTotalWidth + rowHeaderWidthAndMarginLeft ? canvasMaxWidth : columnTotalWidth + rowHeaderWidthAndMarginLeft;
14589
+ const shapeHeight = canvasMaxHeight > rowTotalHeight + columnHeaderHeightAndMarginTop ? canvasMaxHeight : rowTotalHeight + columnHeaderHeightAndMarginTop;
14582
14590
  const HEADER_MENU_SHAPE_THUMB_SIZE_SCALE = 4 / Math.max(scaleX, scaleY);
14583
14591
  if (initialType === 0) this._resizeHelperShape = new Rect(HEADER_RESIZE_CONTROLLER_SHAPE_HELPER, {
14584
14592
  width: shapeWidth,
@@ -14711,126 +14719,498 @@ HeaderResizeRenderController = __decorate([
14711
14719
  __decorateParam(2, Inject(SheetsSelectionsService)),
14712
14720
  __decorateParam(3, ICommandService)
14713
14721
  ], HeaderResizeRenderController);
14722
+ function getHeaderBaseLayout$1(skeleton) {
14723
+ var _skeleton$worksheet$g, _skeleton$worksheet, _config$rowHeader, _config$columnHeader;
14724
+ const config = (_skeleton$worksheet$g = (_skeleton$worksheet = skeleton.worksheet).getConfig) === null || _skeleton$worksheet$g === void 0 ? void 0 : _skeleton$worksheet$g.call(_skeleton$worksheet);
14725
+ const configuredRowWidth = config === null || config === void 0 || (_config$rowHeader = config.rowHeader) === null || _config$rowHeader === void 0 ? void 0 : _config$rowHeader.width;
14726
+ const configuredColumnHeight = config === null || config === void 0 || (_config$columnHeader = config.columnHeader) === null || _config$columnHeader === void 0 ? void 0 : _config$columnHeader.height;
14727
+ const rowBaseWidth = typeof configuredRowWidth === "number" && configuredRowWidth > 0 ? Math.min(configuredRowWidth, skeleton.rowHeaderWidth) : skeleton.rowHeaderWidth;
14728
+ const columnBaseHeight = typeof configuredColumnHeight === "number" && configuredColumnHeight > 0 ? Math.min(configuredColumnHeight, skeleton.columnHeaderHeight) : skeleton.columnHeaderHeight;
14729
+ return {
14730
+ rowBaseWidth,
14731
+ rowGutterWidth: Math.max(0, skeleton.rowHeaderWidthAndMarginLeft - rowBaseWidth),
14732
+ columnBaseHeight,
14733
+ columnGutterHeight: Math.max(0, skeleton.columnHeaderHeightAndMarginTop - columnBaseHeight)
14734
+ };
14735
+ }
14714
14736
 
14715
14737
  //#endregion
14716
- //#region src/controllers/render-controllers/sheet.render-controller.ts
14717
- const FRAME_STACK_THRESHOLD = 60;
14718
- let SheetRenderController = class SheetRenderController extends RxDisposable {
14719
- constructor(_context, _configService, _sheetSkeletonManagerService, _sheetRenderService, _commandService, _telemetryService) {
14720
- super();
14721
- this._context = _context;
14722
- this._configService = _configService;
14723
- this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
14724
- this._sheetRenderService = _sheetRenderService;
14725
- this._commandService = _commandService;
14726
- this._telemetryService = _telemetryService;
14727
- _defineProperty(this, "_renderMetric$", new Subject());
14728
- _defineProperty(this, "renderMetric$", this._renderMetric$.asObservable());
14729
- _defineProperty(this, "_renderFrameTimeMetric", null);
14730
- _defineProperty(this, "_renderFrameTags", {});
14731
- _defineProperty(this, "_afterRenderMetric$", new Subject());
14732
- this._addNewRender();
14733
- this._initRenderMetricSubscriber();
14738
+ //#region src/services/header-unhide-range.service.ts
14739
+ let HeaderUnhideRangeAxis = /* @__PURE__ */ function(HeaderUnhideRangeAxis) {
14740
+ HeaderUnhideRangeAxis["ROW"] = "row";
14741
+ HeaderUnhideRangeAxis["COLUMN"] = "column";
14742
+ return HeaderUnhideRangeAxis;
14743
+ }({});
14744
+ var HeaderUnhideRangeService = class {
14745
+ constructor() {
14746
+ _defineProperty(this, "_visibleHandlers", /* @__PURE__ */ new Set());
14734
14747
  }
14735
- _addNewRender() {
14736
- const { scene, engine, unit: workbook } = this._context;
14737
- this._addComponent(workbook);
14738
- this._initRerenderScheduler();
14739
- this._initCommandListener();
14740
- const worksheet = this._context.unit.getActiveSheet();
14741
- if (!worksheet) throw new Error("No active sheet found");
14742
- const sheetId = worksheet.getSheetId();
14743
- this._sheetSkeletonManagerService.setCurrent({ sheetId });
14744
- const frameFn = () => scene.render();
14745
- this.disposeWithMe(this._context.activated$.subscribe((activated) => {
14746
- if (activated) engine.runRenderLoop(frameFn);
14747
- else engine.stopRenderLoop(frameFn);
14748
- }));
14748
+ registerRangeVisibleHandler(handler) {
14749
+ this._visibleHandlers.add(handler);
14750
+ const dispose = () => this._visibleHandlers.delete(handler);
14751
+ return {
14752
+ dispose,
14753
+ unsubscribe: dispose
14754
+ };
14749
14755
  }
14750
- _initRenderMetricSubscriber() {
14751
- const { engine } = this._context;
14752
- engine.beginFrame$.subscribe(() => {
14753
- this._renderFrameTimeMetric = null;
14754
- this._renderFrameTags = {};
14756
+ shouldRenderRange(visible, payload) {
14757
+ let nextVisible = visible;
14758
+ for (const handler of this._visibleHandlers) nextVisible = handler(nextVisible, payload);
14759
+ return nextVisible;
14760
+ }
14761
+ };
14762
+
14763
+ //#endregion
14764
+ //#region src/menu/header-menu-shape.ts
14765
+ const HEADER_MENU_SHAPE_CIRCLE_FILL = "rgba(0, 0, 0, 0.15)";
14766
+ const HEADER_MENU_SHAPE_TRIANGLE_FILL = "rgb(0, 0, 0)";
14767
+ const HEADER_MENU_BACKGROUND_COLOR = "rgb(255, 255, 255, 1)";
14768
+ var HeaderMenuShape = class extends Shape {
14769
+ constructor(key, props) {
14770
+ super(key, props);
14771
+ _defineProperty(this, "_size", 12);
14772
+ _defineProperty(this, "_iconRatio", .4);
14773
+ _defineProperty(this, "_mode", 0);
14774
+ this.setShapeProps(props);
14775
+ }
14776
+ setShapeProps(props) {
14777
+ if (props === null || props === void 0 ? void 0 : props.size) this._size = props.size;
14778
+ if (props === null || props === void 0 ? void 0 : props.mode) this._mode = props.mode;
14779
+ this.transformByState({
14780
+ width: this._size,
14781
+ height: this._size
14755
14782
  });
14756
- engine.endFrame$.subscribe(() => {
14757
- if (this._renderFrameTimeMetric && Object.keys(this._renderFrameTimeMetric).filter((key) => key.startsWith(SHEET_EXTENSION_PREFIX)).length > 0) this._afterRenderMetric$.next({
14758
- frameTimeMetric: this._renderFrameTimeMetric,
14759
- tags: this._renderFrameTags
14760
- });
14783
+ }
14784
+ _draw(ctx) {
14785
+ if (this._mode === 1) Rect.drawWith(ctx, {
14786
+ width: this._size,
14787
+ height: this._size,
14788
+ radius: this._size,
14789
+ fill: HEADER_MENU_SHAPE_CIRCLE_FILL
14761
14790
  });
14762
- engine.renderFrameTimeMetric$.subscribe(([key, value]) => {
14763
- if (!this._renderFrameTimeMetric) this._renderFrameTimeMetric = {};
14764
- if (!this._renderFrameTimeMetric[key]) this._renderFrameTimeMetric[key] = [];
14765
- this._renderFrameTimeMetric[key].push(Math.round(value * 100) / 100);
14791
+ const iconSize = this._size * .5 * this._iconRatio;
14792
+ const sixtyDegree = Math.PI / 180 * 60;
14793
+ const left = iconSize * Math.sin(sixtyDegree);
14794
+ const top = iconSize * Math.cos(sixtyDegree);
14795
+ RegularPolygon.drawWith(ctx, {
14796
+ pointsGroup: [[
14797
+ {
14798
+ x: -left + this._size / 2,
14799
+ y: -top + this._size / 2
14800
+ },
14801
+ {
14802
+ x: left + this._size / 2,
14803
+ y: -top + this._size / 2
14804
+ },
14805
+ {
14806
+ x: this._size / 2,
14807
+ y: iconSize + this._size / 2
14808
+ }
14809
+ ]],
14810
+ fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
14766
14811
  });
14767
- engine.renderFrameTags$.subscribe(([key, value]) => {
14768
- this._renderFrameTags[key] = value;
14812
+ }
14813
+ };
14814
+
14815
+ //#endregion
14816
+ //#region src/views/header-unhide-shape.ts
14817
+ const UNHIDE_ICON_SIZE = 12;
14818
+ const UNHIDE_ARROW_RATIO = .4;
14819
+ var HeaderUnhideShape = class extends Shape {
14820
+ constructor(key, props, onClick) {
14821
+ super(key, props);
14822
+ _defineProperty(this, "_size", 12);
14823
+ _defineProperty(this, "_iconRatio", UNHIDE_ARROW_RATIO);
14824
+ _defineProperty(this, "_hovered", true);
14825
+ _defineProperty(this, "_hasPrevious", true);
14826
+ _defineProperty(this, "_hasNext", true);
14827
+ _defineProperty(this, "_unhideType", void 0);
14828
+ if (props) this.setShapeProps(props);
14829
+ this.onPointerEnter$.subscribeEvent(() => this.setShapeProps({ hovered: true }));
14830
+ this.onPointerLeave$.subscribeEvent(() => this.setShapeProps({ hovered: false }));
14831
+ this.onPointerDown$.subscribeEvent(() => onClick === null || onClick === void 0 ? void 0 : onClick());
14832
+ }
14833
+ setShapeProps(props) {
14834
+ if (props.type !== void 0) this._unhideType = props.type;
14835
+ if (props.hovered !== void 0) this._hovered = props.hovered;
14836
+ if (props.hasPrevious !== void 0) this._hasPrevious = props.hasPrevious;
14837
+ if (props.hasNext !== void 0) this._hasNext = props.hasNext;
14838
+ this.transformByState({
14839
+ width: this._size * (this._unhideType === 1 ? 2 : 1),
14840
+ height: this._size * (this._unhideType === 0 ? 2 : 1)
14769
14841
  });
14770
- const frameInfoList = [];
14771
- this._afterRenderMetric$.pipe(withLatestFrom(engine.endFrame$)).subscribe(([sceneRenderDetail, basicFrameTimeInfo]) => {
14772
- frameInfoList.push({
14773
- FPS: basicFrameTimeInfo.FPS,
14774
- elapsedTime: basicFrameTimeInfo.elapsedTime,
14775
- frameTime: Math.round(basicFrameTimeInfo.frameTime * 100) / 100,
14776
- ...sceneRenderDetail.frameTimeMetric,
14777
- ...sceneRenderDetail.tags
14778
- });
14779
- if (frameInfoList.length > FRAME_STACK_THRESHOLD) {
14780
- this._captureRenderMetric(frameInfoList);
14781
- frameInfoList.length = 0;
14782
- }
14842
+ }
14843
+ _draw(ctx) {
14844
+ if (this._unhideType === 0) this._drawOnRow(ctx);
14845
+ else this._drawOnCol(ctx);
14846
+ }
14847
+ _drawOnRow(ctx) {
14848
+ if (this._hovered) if (!this._hasNext || !this._hasPrevious) Rect.drawWith(ctx, {
14849
+ width: this._size,
14850
+ height: this._size,
14851
+ stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
14852
+ fill: HEADER_MENU_BACKGROUND_COLOR
14853
+ });
14854
+ else Rect.drawWith(ctx, {
14855
+ width: this._size,
14856
+ height: 2 * this._size,
14857
+ stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
14858
+ fill: HEADER_MENU_BACKGROUND_COLOR
14859
+ });
14860
+ const iconSize = this._size * .5 * this._iconRatio;
14861
+ const sixtyDegree = Math.PI / 3;
14862
+ const top = iconSize * Math.cos(sixtyDegree);
14863
+ const left = iconSize * Math.sin(sixtyDegree);
14864
+ if (this._hasPrevious) RegularPolygon.drawWith(ctx, {
14865
+ pointsGroup: [[
14866
+ {
14867
+ x: this._size / 2,
14868
+ y: this._size / 2 - left
14869
+ },
14870
+ {
14871
+ x: this._size / 2 - left,
14872
+ y: this._size / 2 + top
14873
+ },
14874
+ {
14875
+ x: this._size / 2 + left,
14876
+ y: this._size / 2 + top
14877
+ }
14878
+ ]],
14879
+ fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
14783
14880
  });
14881
+ if (this._hasNext) {
14882
+ const offset = this._hasPrevious ? 3 : 1;
14883
+ RegularPolygon.drawWith(ctx, {
14884
+ pointsGroup: [[
14885
+ {
14886
+ x: this._size / 2,
14887
+ y: this._size * offset / 2 + left
14888
+ },
14889
+ {
14890
+ x: this._size / 2 - left,
14891
+ y: this._size * offset / 2 - top
14892
+ },
14893
+ {
14894
+ x: this._size / 2 + left,
14895
+ y: this._size * offset / 2 - top
14896
+ }
14897
+ ]],
14898
+ fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
14899
+ });
14900
+ }
14784
14901
  }
14785
14902
  /**
14786
- * Send render metric to telemetry service
14787
- * @param frameInfoList
14903
+ *
14904
+ * @param ctx
14788
14905
  */
14789
- _captureRenderMetric(frameInfoList) {
14790
- var _this$_telemetryServi;
14791
- const filteredFrameInfo = frameInfoList;
14792
- if (filteredFrameInfo.length === 0) return;
14793
- const sumValueForNumListFields = (data) => {
14794
- let totalSum = 0;
14795
- const sums = Object.entries(data).filter(([_, value]) => Array.isArray(value)).map(([key]) => key).reduce((acc, key) => {
14796
- acc[key] = data[key].reduce((sum, num) => sum + num, 0);
14797
- return acc;
14798
- }, {});
14799
- Object.keys(data).filter((key) => key.startsWith(SHEET_EXTENSION_PREFIX)).forEach((key) => {
14800
- totalSum += sums[key];
14801
- });
14802
- return {
14803
- ...sums,
14804
- extensionTotal: totalSum
14805
- };
14806
- };
14807
- const frameTimeListAfterSum = frameInfoList.map((info) => {
14808
- return {
14809
- ...info,
14810
- ...sumValueForNumListFields(info)
14811
- };
14906
+ _drawOnCol(ctx) {
14907
+ if (this._hovered) if (!this._hasNext || !this._hasPrevious) Rect.drawWith(ctx, {
14908
+ width: this._size,
14909
+ height: this._size,
14910
+ stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
14911
+ fill: HEADER_MENU_BACKGROUND_COLOR
14812
14912
  });
14813
- const getSummaryStats = (list) => {
14814
- return Object.entries(list[0]).filter(([key, _]) => !["elapsedTime"].includes(key)).filter(([_, value]) => typeof value === "number").map(([key]) => key).reduce((acc, key) => {
14815
- const values = list.map((obj) => obj[key]);
14816
- const max = Math.max(...values);
14817
- const min = Math.min(...values);
14818
- const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
14819
- acc[key] = {
14820
- max: Math.round(max * 100) / 100,
14821
- min: Math.round(min * 100) / 100,
14822
- avg: Math.round(avg * 100) / 100
14823
- };
14824
- return acc;
14825
- }, {});
14826
- };
14827
- const summaryFrameStats = getSummaryStats(frameTimeListAfterSum);
14828
- const elapsedTimeToStart = filteredFrameInfo[filteredFrameInfo.length - 1].elapsedTime;
14829
- const telemetryData = {
14830
- sheetId: this._context.unit.getActiveSheet().getSheetId(),
14831
- unitId: this._context.unit.getUnitId(),
14832
- elapsedTimeToStart,
14833
- ...summaryFrameStats
14913
+ else Rect.drawWith(ctx, {
14914
+ width: 2 * this._size,
14915
+ height: this._size,
14916
+ stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
14917
+ fill: HEADER_MENU_BACKGROUND_COLOR
14918
+ });
14919
+ const iconSize = this._size * .5 * this._iconRatio;
14920
+ const sixtyDegree = Math.PI / 3;
14921
+ const top = iconSize * Math.cos(sixtyDegree);
14922
+ const left = iconSize * Math.sin(sixtyDegree);
14923
+ if (this._hasPrevious) RegularPolygon.drawWith(ctx, {
14924
+ pointsGroup: [[
14925
+ {
14926
+ x: -top + this._size / 2,
14927
+ y: this._size / 2
14928
+ },
14929
+ {
14930
+ x: this._size / 2 + left,
14931
+ y: this._size / 2 - left
14932
+ },
14933
+ {
14934
+ x: this._size / 2 + left,
14935
+ y: this._size / 2 + left
14936
+ }
14937
+ ]],
14938
+ fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
14939
+ });
14940
+ if (this._hasNext) {
14941
+ const offset = this._hasPrevious ? 3 : 1;
14942
+ RegularPolygon.drawWith(ctx, {
14943
+ pointsGroup: [[
14944
+ {
14945
+ x: top + this._size * offset / 2,
14946
+ y: this._size / 2
14947
+ },
14948
+ {
14949
+ x: -left + this._size * offset / 2,
14950
+ y: this._size / 2 - left
14951
+ },
14952
+ {
14953
+ x: -left + this._size * offset / 2,
14954
+ y: this._size / 2 + left
14955
+ }
14956
+ ]],
14957
+ fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
14958
+ });
14959
+ }
14960
+ }
14961
+ };
14962
+
14963
+ //#endregion
14964
+ //#region src/controllers/render-controllers/header-unhide.render-controller.ts
14965
+ const HEADER_UNHIDE_CONTROLLER_SHAPE = "__SpreadsheetHeaderUnhideSHAPEControllerShape__";
14966
+ const HEADER_UNHIDE_RANGE_VISIBLE_CHECK = createInterceptorKey("headerUnhideRangeVisibleCheck");
14967
+ let HeaderUnhideRenderController = class HeaderUnhideRenderController extends RxDisposable {
14968
+ get _workbook() {
14969
+ return this._context.unit;
14970
+ }
14971
+ constructor(_context, _sheetSkeletonManagerService, _headerUnhideRangeService, _commandService) {
14972
+ super();
14973
+ this._context = _context;
14974
+ this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
14975
+ this._headerUnhideRangeService = _headerUnhideRangeService;
14976
+ this._commandService = _commandService;
14977
+ _defineProperty(this, "_shapes", {
14978
+ cols: [],
14979
+ rows: []
14980
+ });
14981
+ _defineProperty(this, "interceptor", new InterceptorManager({ HEADER_UNHIDE_RANGE_VISIBLE_CHECK }));
14982
+ this._init();
14983
+ }
14984
+ dispose() {
14985
+ super.dispose();
14986
+ this._clearShapes();
14987
+ }
14988
+ _init() {
14989
+ let activeSheetId = "";
14990
+ this._context.unit.activeSheet$.pipe(takeUntil(this.dispose$)).subscribe((worksheet) => {
14991
+ this._clearShapes();
14992
+ if (!worksheet) {
14993
+ activeSheetId = "";
14994
+ return;
14995
+ }
14996
+ activeSheetId = worksheet.getSheetId();
14997
+ this._update(this._workbook, worksheet);
14998
+ });
14999
+ this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((param) => {
15000
+ if (param) {
15001
+ const { unitId, sheetId } = param;
15002
+ if (unitId === this._workbook.getUnitId() && sheetId === activeSheetId) {
15003
+ const worksheet = this._workbook.getSheetBySheetId(sheetId);
15004
+ if (worksheet) this._update(this._workbook, worksheet);
15005
+ }
15006
+ }
15007
+ }));
15008
+ }
15009
+ _update(workbook, worksheet) {
15010
+ var _this$_sheetSkeletonM;
15011
+ const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getSkeletonParam(worksheet.getSheetId())) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
15012
+ if (!skeleton) return;
15013
+ const visibleCheck = this.interceptor.fetchThroughInterceptors(HEADER_UNHIDE_RANGE_VISIBLE_CHECK);
15014
+ const shouldRenderRange = (payload) => {
15015
+ var _visibleCheck;
15016
+ return this._headerUnhideRangeService.shouldRenderRange((_visibleCheck = visibleCheck(true, payload)) !== null && _visibleCheck !== void 0 ? _visibleCheck : true, payload);
15017
+ };
15018
+ const hiddenRowRanges = worksheet.getHiddenRows().filter((range) => shouldRenderRange({
15019
+ axis: "row",
15020
+ range,
15021
+ workbook,
15022
+ worksheet
15023
+ }));
15024
+ const hiddenColRanges = worksheet.getHiddenCols().filter((range) => shouldRenderRange({
15025
+ axis: "column",
15026
+ range,
15027
+ workbook,
15028
+ worksheet
15029
+ }));
15030
+ const { scene } = this._getSheetObject();
15031
+ const rowCount = worksheet.getRowCount();
15032
+ const rowShapes = hiddenRowRanges.map((range) => {
15033
+ const { startRow, endRow } = range;
15034
+ const position = getCoordByCell(startRow, 0, scene, skeleton);
15035
+ const hasPrevious = startRow !== 0;
15036
+ const hasNext = endRow !== rowCount - 1;
15037
+ return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
15038
+ type: 0,
15039
+ hovered: false,
15040
+ hasPrevious,
15041
+ hasNext,
15042
+ top: position.startY - (hasPrevious ? 12 : 0),
15043
+ left: position.startX - 12
15044
+ }, () => this._commandService.executeCommand(SetSpecificRowsVisibleCommand.id, {
15045
+ unitId: workbook.getUnitId(),
15046
+ subUnitId: worksheet.getSheetId(),
15047
+ ranges: [range]
15048
+ }));
15049
+ });
15050
+ const colCount = worksheet.getColumnCount();
15051
+ const colShapes = hiddenColRanges.map((range) => {
15052
+ const { startColumn, endColumn } = range;
15053
+ const position = getCoordByCell(0, startColumn, scene, skeleton);
15054
+ const hasPrevious = startColumn !== 0;
15055
+ const hasNext = endColumn !== colCount - 1;
15056
+ return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
15057
+ type: 1,
15058
+ hovered: false,
15059
+ hasPrevious,
15060
+ hasNext,
15061
+ top: Math.max(skeleton.columnHeaderHeight, skeleton.columnHeaderHeightAndMarginTop) - 12,
15062
+ left: position.startX - (hasPrevious ? 12 : 0)
15063
+ }, () => this._commandService.executeCommand(SetSpecificColsVisibleCommand.id, {
15064
+ unitId: workbook.getUnitId(),
15065
+ subUnitId: worksheet.getSheetId(),
15066
+ ranges: [range]
15067
+ }));
15068
+ });
15069
+ scene.addObjects(colShapes, 12);
15070
+ scene.addObjects(rowShapes, 12);
15071
+ this._clearShapes();
15072
+ this._shapes = {
15073
+ cols: colShapes,
15074
+ rows: rowShapes
15075
+ };
15076
+ }
15077
+ _clearShapes() {
15078
+ this._shapes.cols.forEach((shape) => shape.dispose());
15079
+ this._shapes.rows.forEach((shape) => shape.dispose());
15080
+ this._shapes = {
15081
+ cols: [],
15082
+ rows: []
15083
+ };
15084
+ }
15085
+ _getSheetObject() {
15086
+ return getSheetObject(this._workbook, this._context);
15087
+ }
15088
+ };
15089
+ HeaderUnhideRenderController = __decorate([
15090
+ __decorateParam(1, Inject(SheetSkeletonManagerService)),
15091
+ __decorateParam(2, Inject(HeaderUnhideRangeService)),
15092
+ __decorateParam(3, ICommandService)
15093
+ ], HeaderUnhideRenderController);
15094
+
15095
+ //#endregion
15096
+ //#region src/controllers/render-controllers/sheet.render-controller.ts
15097
+ const FRAME_STACK_THRESHOLD = 60;
15098
+ let SheetRenderController = class SheetRenderController extends RxDisposable {
15099
+ constructor(_context, _configService, _sheetSkeletonManagerService, _sheetRenderService, _commandService, _telemetryService) {
15100
+ super();
15101
+ this._context = _context;
15102
+ this._configService = _configService;
15103
+ this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
15104
+ this._sheetRenderService = _sheetRenderService;
15105
+ this._commandService = _commandService;
15106
+ this._telemetryService = _telemetryService;
15107
+ _defineProperty(this, "_renderMetric$", new Subject());
15108
+ _defineProperty(this, "renderMetric$", this._renderMetric$.asObservable());
15109
+ _defineProperty(this, "_renderFrameTimeMetric", null);
15110
+ _defineProperty(this, "_renderFrameTags", {});
15111
+ _defineProperty(this, "_afterRenderMetric$", new Subject());
15112
+ this._addNewRender();
15113
+ this._initRenderMetricSubscriber();
15114
+ }
15115
+ _addNewRender() {
15116
+ const { scene, engine, unit: workbook } = this._context;
15117
+ this._addComponent(workbook);
15118
+ this._initRerenderScheduler();
15119
+ this._initCommandListener();
15120
+ const worksheet = this._context.unit.getActiveSheet();
15121
+ if (!worksheet) throw new Error("No active sheet found");
15122
+ const sheetId = worksheet.getSheetId();
15123
+ this._sheetSkeletonManagerService.setCurrent({ sheetId });
15124
+ const frameFn = () => scene.render();
15125
+ this.disposeWithMe(this._context.activated$.subscribe((activated) => {
15126
+ if (activated) engine.runRenderLoop(frameFn);
15127
+ else engine.stopRenderLoop(frameFn);
15128
+ }));
15129
+ }
15130
+ _initRenderMetricSubscriber() {
15131
+ const { engine } = this._context;
15132
+ this.disposeWithMe(engine.beginFrame$.subscribe(() => {
15133
+ this._renderFrameTimeMetric = null;
15134
+ this._renderFrameTags = {};
15135
+ }));
15136
+ this.disposeWithMe(engine.endFrame$.subscribe(() => {
15137
+ if (this._renderFrameTimeMetric && Object.keys(this._renderFrameTimeMetric).filter((key) => key.startsWith(SHEET_EXTENSION_PREFIX)).length > 0) this._afterRenderMetric$.next({
15138
+ frameTimeMetric: this._renderFrameTimeMetric,
15139
+ tags: this._renderFrameTags
15140
+ });
15141
+ }));
15142
+ this.disposeWithMe(engine.renderFrameTimeMetric$.subscribe(([key, value]) => {
15143
+ if (!this._renderFrameTimeMetric) this._renderFrameTimeMetric = {};
15144
+ if (!this._renderFrameTimeMetric[key]) this._renderFrameTimeMetric[key] = [];
15145
+ this._renderFrameTimeMetric[key].push(Math.round(value * 100) / 100);
15146
+ }));
15147
+ this.disposeWithMe(engine.renderFrameTags$.subscribe(([key, value]) => {
15148
+ this._renderFrameTags[key] = value;
15149
+ }));
15150
+ const frameInfoList = [];
15151
+ this.disposeWithMe(this._afterRenderMetric$.pipe(withLatestFrom(engine.endFrame$)).subscribe(([sceneRenderDetail, basicFrameTimeInfo]) => {
15152
+ frameInfoList.push({
15153
+ FPS: basicFrameTimeInfo.FPS,
15154
+ elapsedTime: basicFrameTimeInfo.elapsedTime,
15155
+ frameTime: Math.round(basicFrameTimeInfo.frameTime * 100) / 100,
15156
+ ...sceneRenderDetail.frameTimeMetric,
15157
+ ...sceneRenderDetail.tags
15158
+ });
15159
+ if (frameInfoList.length > FRAME_STACK_THRESHOLD) {
15160
+ this._captureRenderMetric(frameInfoList);
15161
+ frameInfoList.length = 0;
15162
+ }
15163
+ }));
15164
+ }
15165
+ /**
15166
+ * Send render metric to telemetry service
15167
+ * @param frameInfoList
15168
+ */
15169
+ _captureRenderMetric(frameInfoList) {
15170
+ var _this$_telemetryServi;
15171
+ const filteredFrameInfo = frameInfoList;
15172
+ if (filteredFrameInfo.length === 0) return;
15173
+ const sumValueForNumListFields = (data) => {
15174
+ let totalSum = 0;
15175
+ const sums = Object.entries(data).filter(([_, value]) => Array.isArray(value)).map(([key]) => key).reduce((acc, key) => {
15176
+ acc[key] = data[key].reduce((sum, num) => sum + num, 0);
15177
+ return acc;
15178
+ }, {});
15179
+ Object.keys(data).filter((key) => key.startsWith(SHEET_EXTENSION_PREFIX)).forEach((key) => {
15180
+ totalSum += sums[key];
15181
+ });
15182
+ return {
15183
+ ...sums,
15184
+ extensionTotal: totalSum
15185
+ };
15186
+ };
15187
+ const frameTimeListAfterSum = frameInfoList.map((info) => {
15188
+ return {
15189
+ ...info,
15190
+ ...sumValueForNumListFields(info)
15191
+ };
15192
+ });
15193
+ const getSummaryStats = (list) => {
15194
+ return Object.entries(list[0]).filter(([key, _]) => !["elapsedTime"].includes(key)).filter(([_, value]) => typeof value === "number").map(([key]) => key).reduce((acc, key) => {
15195
+ const values = list.map((obj) => obj[key]);
15196
+ const max = Math.max(...values);
15197
+ const min = Math.min(...values);
15198
+ const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
15199
+ acc[key] = {
15200
+ max: Math.round(max * 100) / 100,
15201
+ min: Math.round(min * 100) / 100,
15202
+ avg: Math.round(avg * 100) / 100
15203
+ };
15204
+ return acc;
15205
+ }, {});
15206
+ };
15207
+ const summaryFrameStats = getSummaryStats(frameTimeListAfterSum);
15208
+ const elapsedTimeToStart = filteredFrameInfo[filteredFrameInfo.length - 1].elapsedTime;
15209
+ const telemetryData = {
15210
+ sheetId: this._context.unit.getActiveSheet().getSheetId(),
15211
+ unitId: this._context.unit.getUnitId(),
15212
+ elapsedTimeToStart,
15213
+ ...summaryFrameStats
14834
15214
  };
14835
15215
  this._renderMetric$.next(telemetryData);
14836
15216
  (_this$_telemetryServi = this._telemetryService) === null || _this$_telemetryServi === void 0 || _this$_telemetryServi.capture("sheet_render_cost", telemetryData);
@@ -14971,13 +15351,13 @@ let SheetRenderController = class SheetRenderController extends RxDisposable {
14971
15351
  const spreadsheetRowHeader = components.get("__SpreadsheetRowHeader__");
14972
15352
  const spreadsheetColumnHeader = components.get("__SpreadsheetColumnHeader__");
14973
15353
  const spreadsheetLeftTopPlaceholder = components.get("__SpreadsheetLeftTopPlaceholder__");
14974
- const { rowHeaderWidth, columnHeaderHeight } = spreadsheetSkeleton;
15354
+ const leftTopPlaceholderSize = getLeftTopPlaceholderSize(spreadsheetSkeleton);
14975
15355
  spreadsheet === null || spreadsheet === void 0 || spreadsheet.updateSkeleton(spreadsheetSkeleton);
14976
15356
  spreadsheetRowHeader === null || spreadsheetRowHeader === void 0 || spreadsheetRowHeader.updateSkeleton(spreadsheetSkeleton);
14977
15357
  spreadsheetColumnHeader === null || spreadsheetColumnHeader === void 0 || spreadsheetColumnHeader.updateSkeleton(spreadsheetSkeleton);
14978
15358
  spreadsheetLeftTopPlaceholder === null || spreadsheetLeftTopPlaceholder === void 0 || spreadsheetLeftTopPlaceholder.transformByState({
14979
- width: rowHeaderWidth,
14980
- height: columnHeaderHeight
15359
+ width: leftTopPlaceholderSize.width,
15360
+ height: leftTopPlaceholderSize.height
14981
15361
  });
14982
15362
  }));
14983
15363
  }
@@ -15097,6 +15477,13 @@ SheetRenderController = __decorate([
15097
15477
  __decorateParam(4, ICommandService),
15098
15478
  __decorateParam(5, Optional(ITelemetryService))
15099
15479
  ], SheetRenderController);
15480
+ function getLeftTopPlaceholderSize(skeleton) {
15481
+ var _skeleton$rowHeaderWi, _skeleton$columnHeade;
15482
+ return {
15483
+ width: (_skeleton$rowHeaderWi = skeleton.rowHeaderWidthAndMarginLeft) !== null && _skeleton$rowHeaderWi !== void 0 ? _skeleton$rowHeaderWi : skeleton.rowHeaderWidth,
15484
+ height: (_skeleton$columnHeade = skeleton.columnHeaderHeightAndMarginTop) !== null && _skeleton$columnHeade !== void 0 ? _skeleton$columnHeade : skeleton.columnHeaderHeight
15485
+ };
15486
+ }
15100
15487
 
15101
15488
  //#endregion
15102
15489
  //#region src/components/border-panel/border-line/icons/BorderDashDot.tsx
@@ -16292,7 +16679,6 @@ function ClearSelectionContentMenuItemFactory(accessor) {
16292
16679
  return {
16293
16680
  id: ClearSelectionContentCommand.id,
16294
16681
  type: MenuItemType.BUTTON,
16295
- icon: "ClearFormatDoubleIcon",
16296
16682
  title: "rightClick.clearContent",
16297
16683
  disabled$: getObservableWithExclusiveRange$(accessor, getCurrentRangeDisable$(accessor, {
16298
16684
  workbookTypes: [WorkbookEditablePermission],
@@ -16306,7 +16692,6 @@ function ClearSelectionFormatMenuItemFactory(accessor) {
16306
16692
  return {
16307
16693
  id: ClearSelectionFormatCommand.id,
16308
16694
  type: MenuItemType.BUTTON,
16309
- icon: "ClearFormatDoubleIcon",
16310
16695
  title: "rightClick.clearFormat",
16311
16696
  disabled$: getCurrentRangeDisable$(accessor, {
16312
16697
  workbookTypes: [WorkbookEditablePermission],
@@ -16316,11 +16701,28 @@ function ClearSelectionFormatMenuItemFactory(accessor) {
16316
16701
  hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_SHEET)
16317
16702
  };
16318
16703
  }
16319
- function ClearSelectionAllMenuItemFactory(accessor) {
16704
+ function ClearSelectionAllToolbarMenuItemFactory(accessor) {
16320
16705
  return {
16321
16706
  id: ClearSelectionAllCommand.id,
16322
16707
  type: MenuItemType.BUTTON,
16323
16708
  icon: "ClearFormatDoubleIcon",
16709
+ tooltip: "rightClick.clearAll",
16710
+ disabled$: getObservableWithExclusiveRange$(accessor, getCurrentRangeDisable$(accessor, {
16711
+ workbookTypes: [WorkbookEditablePermission],
16712
+ worksheetTypes: [
16713
+ WorksheetEditPermission,
16714
+ WorksheetSetCellValuePermission,
16715
+ WorksheetSetCellStylePermission
16716
+ ],
16717
+ rangeTypes: [RangeProtectionPermissionEditPoint]
16718
+ })),
16719
+ hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_SHEET)
16720
+ };
16721
+ }
16722
+ function ClearSelectionAllMenuItemFactory(accessor) {
16723
+ return {
16724
+ id: ClearSelectionAllCommand.id,
16725
+ type: MenuItemType.BUTTON,
16324
16726
  title: "rightClick.clearAll",
16325
16727
  tooltip: "rightClick.clearAll",
16326
16728
  disabled$: getObservableWithExclusiveRange$(accessor, getCurrentRangeDisable$(accessor, {
@@ -18617,7 +19019,7 @@ const menuSchema = {
18617
19019
  },
18618
19020
  [ClearSelectionAllCommand.id]: {
18619
19021
  order: 3,
18620
- menuItemFactory: ClearSelectionAllMenuItemFactory
19022
+ menuItemFactory: ClearSelectionAllToolbarMenuItemFactory
18621
19023
  }
18622
19024
  },
18623
19025
  [RibbonStartGroup.FORMAT]: {
@@ -23961,7 +24363,7 @@ const useHighlightRange = (ranges = []) => {
23961
24363
  //#endregion
23962
24364
  //#region package.json
23963
24365
  var name = "@univerjs/sheets-ui";
23964
- var version = "0.22.1";
24366
+ var version = "0.23.0-insiders.20260522-e8f2a3b";
23965
24367
 
23966
24368
  //#endregion
23967
24369
  //#region src/services/cell-alert-manager.service.ts
@@ -26755,28 +27157,30 @@ var RangeProtectionRenderExtension = class extends SheetExtension {
26755
27157
  getShadowStrategy() {
26756
27158
  return this._shadowStrategy;
26757
27159
  }
26758
- draw(ctx, _parentScale, spreadsheetSkeleton) {
27160
+ draw(ctx, _parentScale, spreadsheetSkeleton, diffRanges) {
26759
27161
  const { worksheet } = spreadsheetSkeleton;
26760
27162
  if (!worksheet) return;
26761
27163
  ctx.save();
26762
27164
  if (!this._pattern) this._pattern = ctx.createPattern(this._img, "repeat");
26763
27165
  this.renderCache.clear();
26764
- Range.foreach(spreadsheetSkeleton.rowColumnSegment, (row, col) => {
26765
- if (!worksheet.getRowVisible(row) || !worksheet.getColVisible(col)) return;
26766
- const { selectionProtection = [] } = worksheet.getCell(row, col) || {};
26767
- if (!this._pattern) return;
26768
- ctx.fillStyle = this._pattern;
26769
- selectionProtection.forEach((config) => {
26770
- if (!config.ruleId) return;
26771
- if (this.shouldRender(config)) {
26772
- if (this.renderCache.has(config.ruleId)) return;
26773
- this.renderCache.add(config.ruleId);
26774
- config.ranges.forEach((range) => {
26775
- const start = spreadsheetSkeleton.getCellWithCoordByIndex(range.startRow, range.startColumn, false);
26776
- const end = spreadsheetSkeleton.getCellWithCoordByIndex(range.endRow, range.endColumn, false);
26777
- ctx.fillRect(start.startX, start.startY, end.endX - start.startX, end.endY - start.startY);
26778
- });
26779
- }
27166
+ ((diffRanges === null || diffRanges === void 0 ? void 0 : diffRanges.length) ? diffRanges : [spreadsheetSkeleton.rowColumnSegment]).forEach((range) => {
27167
+ Range.foreach(range, (row, col) => {
27168
+ if (!worksheet.getRowVisible(row) || !worksheet.getColVisible(col)) return;
27169
+ const { selectionProtection = [] } = worksheet.getCell(row, col) || {};
27170
+ if (!this._pattern) return;
27171
+ ctx.fillStyle = this._pattern;
27172
+ selectionProtection.forEach((config) => {
27173
+ if (!config.ruleId) return;
27174
+ if (this.shouldRender(config)) {
27175
+ if (this.renderCache.has(config.ruleId)) return;
27176
+ this.renderCache.add(config.ruleId);
27177
+ config.ranges.forEach((range) => {
27178
+ const start = spreadsheetSkeleton.getCellWithCoordByIndex(range.startRow, range.startColumn, false);
27179
+ const end = spreadsheetSkeleton.getCellWithCoordByIndex(range.endRow, range.endColumn, false);
27180
+ ctx.fillRect(start.startX, start.startY, end.endX - start.startX, end.endY - start.startY);
27181
+ });
27182
+ }
27183
+ });
26780
27184
  });
26781
27185
  });
26782
27186
  ctx.restore();
@@ -26862,690 +27266,394 @@ var WorksheetProtectionRenderExtension = class extends SheetExtension {
26862
27266
  getShadowStrategy() {
26863
27267
  return this._shadowStrategy;
26864
27268
  }
26865
- setZIndex(zIndex) {
26866
- this.Z_INDEX = zIndex;
26867
- }
26868
- };
26869
-
26870
- //#endregion
26871
- //#region src/controllers/permission/sheet-permission-render.controller.ts
26872
- let SheetPermissionRenderManagerController = class SheetPermissionRenderManagerController extends Disposable {
26873
- constructor(_injector, _componentManager) {
26874
- super();
26875
- this._injector = _injector;
26876
- this._componentManager = _componentManager;
26877
- this._init();
26878
- }
26879
- _init() {
26880
- this._initComponents();
26881
- this._initUiPartComponents();
26882
- }
26883
- _initComponents() {
26884
- [
26885
- [permissionMenuIconKey, ProtectIcon],
26886
- [permissionDeleteIconKey, DeleteIcon],
26887
- [permissionEditIconKey, WriteIcon],
26888
- [permissionCheckIconKey, CheckMarkIcon],
26889
- [permissionLockIconKey, LockIcon],
26890
- [UNIVER_SHEET_PERMISSION_PANEL, SheetPermissionPanel],
26891
- [UNIVER_SHEET_PERMISSION_USER_DIALOG, SheetPermissionUserDialog],
26892
- [UNIVER_SHEET_PERMISSION_DIALOG, SheetPermissionDialog],
26893
- [UNIVER_SHEET_PERMISSION_ALERT_DIALOG, AlertDialog]
26894
- ].forEach(([key, comp]) => {
26895
- this.disposeWithMe(this._componentManager.register(key, comp));
26896
- });
26897
- }
26898
- _initUiPartComponents() {
26899
- const config = this._injector.get(IConfigService).getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
26900
- if (config === null || config === void 0 ? void 0 : config.protectedRangeUserSelector) {
26901
- const { component, framework } = config.protectedRangeUserSelector;
26902
- this.disposeWithMe(this._componentManager.register(UNIVER_SHEET_PERMISSION_USER_PART, component, { framework }));
26903
- }
26904
- }
26905
- };
26906
- SheetPermissionRenderManagerController = __decorate([__decorateParam(0, Inject(Injector)), __decorateParam(1, Inject(ComponentManager))], SheetPermissionRenderManagerController);
26907
- let SheetPermissionRenderController = class SheetPermissionRenderController extends Disposable {
26908
- constructor(_context, _rangeProtectionRuleModel, _sheetSkeletonManagerService, _permissionService, _configService) {
26909
- super();
26910
- this._context = _context;
26911
- this._rangeProtectionRuleModel = _rangeProtectionRuleModel;
26912
- this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
26913
- this._permissionService = _permissionService;
26914
- this._configService = _configService;
26915
- _defineProperty(this, "_rangeProtectionCanViewRenderExtension", void 0);
26916
- _defineProperty(this, "_rangeProtectionCanNotViewRenderExtension", void 0);
26917
- const config = this._configService.getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
26918
- const shadowStrategy = convertToShadowStrategy(config === null || config === void 0 ? void 0 : config.protectedRangeShadow);
26919
- this._rangeProtectionCanViewRenderExtension = new RangeProtectionCanViewRenderExtension(shadowStrategy);
26920
- this._rangeProtectionCanNotViewRenderExtension = new RangeProtectionCanNotViewRenderExtension(shadowStrategy);
26921
- this._initSkeleton();
26922
- this._initRender();
26923
- this.disposeWithMe(this._rangeProtectionRuleModel.ruleChange$.subscribe((info) => {
26924
- var _info$oldRule, _info$oldRule2;
26925
- if (((_info$oldRule = info.oldRule) === null || _info$oldRule === void 0 ? void 0 : _info$oldRule.id) && this._rangeProtectionCanViewRenderExtension.renderCache.has(info.oldRule.id) || this._rangeProtectionCanViewRenderExtension.renderCache.has(info.rule.id)) this._rangeProtectionCanViewRenderExtension.clearCache();
26926
- if (((_info$oldRule2 = info.oldRule) === null || _info$oldRule2 === void 0 ? void 0 : _info$oldRule2.id) && this._rangeProtectionCanNotViewRenderExtension.renderCache.has(info.oldRule.id) || this._rangeProtectionCanNotViewRenderExtension.renderCache.has(info.rule.id)) this._rangeProtectionCanNotViewRenderExtension.clearCache();
26927
- }));
26928
- }
26929
- _initRender() {
26930
- const spreadsheetRender = this._context.mainComponent;
26931
- if (spreadsheetRender) {
26932
- if (!spreadsheetRender.getExtensionByKey("RANGE_PROTECTION_CAN_VIEW_RENDER_EXTENSION_KEY")) spreadsheetRender.register(this._rangeProtectionCanViewRenderExtension);
26933
- if (!spreadsheetRender.getExtensionByKey("RANGE_PROTECTION_CAN_NOT_VIEW_RENDER_EXTENSION_KEY")) spreadsheetRender.register(this._rangeProtectionCanNotViewRenderExtension);
26934
- }
26935
- }
26936
- _initSkeleton() {
26937
- const markDirtySkeleton = () => {
26938
- var _this$_context$mainCo;
26939
- this._sheetSkeletonManagerService.reCalculate();
26940
- (_this$_context$mainCo = this._context.mainComponent) === null || _this$_context$mainCo === void 0 || _this$_context$mainCo.makeDirty();
26941
- };
26942
- this.disposeWithMe(merge$1(this._permissionService.permissionPointUpdate$.pipe(throttleTime(300, void 0, { trailing: true })), this._rangeProtectionRuleModel.rangeRuleInitStateChange$, this._rangeProtectionRuleModel.ruleChange$).pipe().subscribe(markDirtySkeleton));
26943
- }
26944
- };
26945
- SheetPermissionRenderController = __decorate([
26946
- __decorateParam(1, Inject(RangeProtectionRuleModel)),
26947
- __decorateParam(2, Inject(SheetSkeletonManagerService)),
26948
- __decorateParam(3, IPermissionService),
26949
- __decorateParam(4, IConfigService)
26950
- ], SheetPermissionRenderController);
26951
- let WorksheetProtectionRenderController = class WorksheetProtectionRenderController extends Disposable {
26952
- constructor(_context, _renderManagerService, _sheetSkeletonManagerService, _worksheetProtectionRuleModel, _configService) {
26953
- super();
26954
- this._context = _context;
26955
- this._renderManagerService = _renderManagerService;
26956
- this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
26957
- this._worksheetProtectionRuleModel = _worksheetProtectionRuleModel;
26958
- this._configService = _configService;
26959
- _defineProperty(this, "_worksheetProtectionRenderExtension", void 0);
26960
- const config = this._configService.getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
26961
- const shadowStrategy = convertToShadowStrategy(config === null || config === void 0 ? void 0 : config.protectedRangeShadow);
26962
- this._worksheetProtectionRenderExtension = new WorksheetProtectionRenderExtension(shadowStrategy);
26963
- this._initSkeleton();
26964
- if (shadowStrategy === "none") return;
26965
- this._initRender();
26966
- }
26967
- _initRender() {
26968
- const renderId = this._context.unitId;
26969
- const render = renderId && this._renderManagerService.getRenderById(renderId);
26970
- const spreadsheetRender = render && render.mainComponent;
26971
- if (spreadsheetRender) {
26972
- if (!spreadsheetRender.getExtensionByKey("worksheet-protection")) spreadsheetRender.register(this._worksheetProtectionRenderExtension);
26973
- }
26974
- }
26975
- _initSkeleton() {
26976
- const markDirtySkeleton = () => {
26977
- var _this$_context$mainCo2;
26978
- this._sheetSkeletonManagerService.reCalculate();
26979
- (_this$_context$mainCo2 = this._context.mainComponent) === null || _this$_context$mainCo2 === void 0 || _this$_context$mainCo2.makeDirty();
26980
- };
26981
- this.disposeWithMe(merge$1(this._worksheetProtectionRuleModel.worksheetRuleInitStateChange$).pipe().subscribe(markDirtySkeleton));
26982
- }
26983
- };
26984
- WorksheetProtectionRenderController = __decorate([
26985
- __decorateParam(1, Inject(IRenderManagerService)),
26986
- __decorateParam(2, Inject(SheetSkeletonManagerService)),
26987
- __decorateParam(3, Inject(WorksheetProtectionRuleModel)),
26988
- __decorateParam(4, Inject(IConfigService))
26989
- ], WorksheetProtectionRenderController);
26990
-
26991
- //#endregion
26992
- //#region src/controllers/render-controllers/clipboard.render-controller.ts
26993
- let ClipboardRenderController = class ClipboardRenderController extends Disposable {
26994
- constructor(_context, _sheetSkeletonManagerService, _sheetClipboardService, _sheetClipboardController) {
26995
- super();
26996
- this._context = _context;
26997
- this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
26998
- this._sheetClipboardService = _sheetClipboardService;
26999
- this._sheetClipboardController = _sheetClipboardController;
27000
- this._initialize();
27001
- }
27002
- _initialize() {
27003
- this.disposeWithMe(toDisposable(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((skeleton) => {
27004
- if (!(skeleton === null || skeleton === void 0 ? void 0 : skeleton.unitId)) return;
27005
- if (!this._sheetClipboardService.getPasteMenuVisible()) return;
27006
- const pasteOptionsCache = this._sheetClipboardService.getPasteOptionsCache();
27007
- const menuUnitId = pasteOptionsCache === null || pasteOptionsCache === void 0 ? void 0 : pasteOptionsCache.target.unitId;
27008
- if (skeleton.unitId === menuUnitId) this._sheetClipboardController.refreshOptionalPaste();
27009
- })));
27010
- }
27011
- };
27012
- ClipboardRenderController = __decorate([
27013
- __decorateParam(1, Inject(SheetSkeletonManagerService)),
27014
- __decorateParam(2, ISheetClipboardService),
27015
- __decorateParam(3, Inject(SheetClipboardController))
27016
- ], ClipboardRenderController);
27017
-
27018
- //#endregion
27019
- //#region src/controllers/render-controllers/format-painter.render-controller.ts
27020
- let FormatPainterRenderController = class FormatPainterRenderController extends Disposable {
27021
- constructor(_context, _formatPainterService, _selectionRenderService, _commandService) {
27022
- super();
27023
- this._context = _context;
27024
- this._formatPainterService = _formatPainterService;
27025
- this._selectionRenderService = _selectionRenderService;
27026
- this._commandService = _commandService;
27027
- this._initialize();
27028
- }
27029
- _initialize() {
27030
- this._bindFormatPainterStatus();
27031
- this._commandExecutedListener();
27032
- }
27033
- _commandExecutedListener() {
27034
- this.disposeWithMe(this._selectionRenderService.selectionMoveEnd$.subscribe((selections) => {
27035
- if (this._formatPainterService.getStatus() !== 0) {
27036
- var _this$_context$unit$g;
27037
- const { rangeWithCoord } = selections[selections.length - 1];
27038
- this._commandService.executeCommand(ApplyFormatPainterCommand.id, {
27039
- unitId: this._context.unitId,
27040
- subUnitId: ((_this$_context$unit$g = this._context.unit.getActiveSheet()) === null || _this$_context$unit$g === void 0 ? void 0 : _this$_context$unit$g.getSheetId()) || "",
27041
- range: {
27042
- startRow: rangeWithCoord.startRow,
27043
- startColumn: rangeWithCoord.startColumn,
27044
- endRow: rangeWithCoord.endRow,
27045
- endColumn: rangeWithCoord.endColumn
27046
- }
27047
- });
27048
- if (this._formatPainterService.getStatus() === 1) this._commandService.executeCommand(SetOnceFormatPainterCommand.id);
27049
- }
27050
- }));
27051
- }
27052
- _bindFormatPainterStatus() {
27053
- this.disposeWithMe(toDisposable(this._formatPainterService.status$.subscribe((status) => {
27054
- const scene = this._context.scene;
27055
- if (!scene) return;
27056
- if (status !== 0) scene.setDefaultCursor(CURSOR_TYPE.CELL);
27057
- else scene.setDefaultCursor(CURSOR_TYPE.DEFAULT);
27058
- })));
27059
- }
27269
+ setZIndex(zIndex) {
27270
+ this.Z_INDEX = zIndex;
27271
+ }
27060
27272
  };
27061
- FormatPainterRenderController = __decorate([
27062
- __decorateParam(1, IFormatPainterService),
27063
- __decorateParam(2, ISheetSelectionRenderService),
27064
- __decorateParam(3, ICommandService)
27065
- ], FormatPainterRenderController);
27066
27273
 
27067
27274
  //#endregion
27068
- //#region src/menu/header-menu-shape.ts
27069
- const HEADER_MENU_SHAPE_CIRCLE_FILL = "rgba(0, 0, 0, 0.15)";
27070
- const HEADER_MENU_SHAPE_TRIANGLE_FILL = "rgb(0, 0, 0)";
27071
- const HEADER_MENU_BACKGROUND_COLOR = "rgb(255, 255, 255, 1)";
27072
- var HeaderMenuShape = class extends Shape {
27073
- constructor(key, props) {
27074
- super(key, props);
27075
- _defineProperty(this, "_size", 12);
27076
- _defineProperty(this, "_iconRatio", .4);
27077
- _defineProperty(this, "_mode", 0);
27078
- this.setShapeProps(props);
27275
+ //#region src/controllers/permission/sheet-permission-render.controller.ts
27276
+ let SheetPermissionRenderManagerController = class SheetPermissionRenderManagerController extends Disposable {
27277
+ constructor(_injector, _componentManager) {
27278
+ super();
27279
+ this._injector = _injector;
27280
+ this._componentManager = _componentManager;
27281
+ this._init();
27079
27282
  }
27080
- setShapeProps(props) {
27081
- if (props === null || props === void 0 ? void 0 : props.size) this._size = props.size;
27082
- if (props === null || props === void 0 ? void 0 : props.mode) this._mode = props.mode;
27083
- this.transformByState({
27084
- width: this._size,
27085
- height: this._size
27086
- });
27283
+ _init() {
27284
+ this._initComponents();
27285
+ this._initUiPartComponents();
27087
27286
  }
27088
- _draw(ctx) {
27089
- if (this._mode === 1) Rect.drawWith(ctx, {
27090
- width: this._size,
27091
- height: this._size,
27092
- radius: this._size,
27093
- fill: HEADER_MENU_SHAPE_CIRCLE_FILL
27094
- });
27095
- const iconSize = this._size * .5 * this._iconRatio;
27096
- const sixtyDegree = Math.PI / 180 * 60;
27097
- const left = iconSize * Math.sin(sixtyDegree);
27098
- const top = iconSize * Math.cos(sixtyDegree);
27099
- RegularPolygon.drawWith(ctx, {
27100
- pointsGroup: [[
27101
- {
27102
- x: -left + this._size / 2,
27103
- y: -top + this._size / 2
27104
- },
27105
- {
27106
- x: left + this._size / 2,
27107
- y: -top + this._size / 2
27108
- },
27109
- {
27110
- x: this._size / 2,
27111
- y: iconSize + this._size / 2
27112
- }
27113
- ]],
27114
- fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
27287
+ _initComponents() {
27288
+ [
27289
+ [permissionMenuIconKey, ProtectIcon],
27290
+ [permissionDeleteIconKey, DeleteIcon],
27291
+ [permissionEditIconKey, WriteIcon],
27292
+ [permissionCheckIconKey, CheckMarkIcon],
27293
+ [permissionLockIconKey, LockIcon],
27294
+ [UNIVER_SHEET_PERMISSION_PANEL, SheetPermissionPanel],
27295
+ [UNIVER_SHEET_PERMISSION_USER_DIALOG, SheetPermissionUserDialog],
27296
+ [UNIVER_SHEET_PERMISSION_DIALOG, SheetPermissionDialog],
27297
+ [UNIVER_SHEET_PERMISSION_ALERT_DIALOG, AlertDialog]
27298
+ ].forEach(([key, comp]) => {
27299
+ this.disposeWithMe(this._componentManager.register(key, comp));
27115
27300
  });
27116
27301
  }
27302
+ _initUiPartComponents() {
27303
+ const config = this._injector.get(IConfigService).getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
27304
+ if (config === null || config === void 0 ? void 0 : config.protectedRangeUserSelector) {
27305
+ const { component, framework } = config.protectedRangeUserSelector;
27306
+ this.disposeWithMe(this._componentManager.register(UNIVER_SHEET_PERMISSION_USER_PART, component, { framework }));
27307
+ }
27308
+ }
27117
27309
  };
27118
-
27119
- //#endregion
27120
- //#region src/controllers/render-controllers/header-menu.render-controller.ts
27121
- const HEADER_MENU_CONTROLLER_SHAPE = "__SpreadsheetHeaderMenuSHAPEControllerShape__";
27122
- const HEADER_MENU_CONTROLLER_MENU = "__SpreadsheetHeaderMenuMAINControllerShape__";
27123
- const HEADER_MENU_CONTROLLER_SHAPE_COLOR = "rgba(0, 0, 0, 0.1)";
27124
- let HeaderMenuRenderController = class HeaderMenuRenderController extends Disposable {
27125
- constructor(_context, _sheetSkeletonManagerService, _contextMenuService, _commandService, _selectionManagerService) {
27310
+ SheetPermissionRenderManagerController = __decorate([__decorateParam(0, Inject(Injector)), __decorateParam(1, Inject(ComponentManager))], SheetPermissionRenderManagerController);
27311
+ let SheetPermissionRenderController = class SheetPermissionRenderController extends Disposable {
27312
+ constructor(_context, _rangeProtectionRuleModel, _sheetSkeletonManagerService, _permissionService, _configService) {
27126
27313
  super();
27127
27314
  this._context = _context;
27315
+ this._rangeProtectionRuleModel = _rangeProtectionRuleModel;
27128
27316
  this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
27129
- this._contextMenuService = _contextMenuService;
27130
- this._commandService = _commandService;
27131
- this._selectionManagerService = _selectionManagerService;
27132
- _defineProperty(this, "_hoverRect", void 0);
27133
- _defineProperty(this, "_hoverMenu", void 0);
27134
- _defineProperty(this, "_currentColumn", Number.POSITIVE_INFINITY);
27135
- _defineProperty(this, "_headerPointerSubs", void 0);
27136
- _defineProperty(this, "_colHeaderPointerSubs", void 0);
27137
- this._initialize();
27138
- }
27139
- dispose() {
27140
- var _this$_hoverRect, _this$_hoverMenu, _this$_headerPointerS;
27141
- (_this$_hoverRect = this._hoverRect) === null || _this$_hoverRect === void 0 || _this$_hoverRect.dispose();
27142
- (_this$_hoverMenu = this._hoverMenu) === null || _this$_hoverMenu === void 0 || _this$_hoverMenu.dispose();
27143
- (_this$_headerPointerS = this._headerPointerSubs) === null || _this$_headerPointerS === void 0 || _this$_headerPointerS.unsubscribe();
27144
- this._headerPointerSubs = null;
27317
+ this._permissionService = _permissionService;
27318
+ this._configService = _configService;
27319
+ _defineProperty(this, "_rangeProtectionCanViewRenderExtension", void 0);
27320
+ _defineProperty(this, "_rangeProtectionCanNotViewRenderExtension", void 0);
27321
+ const config = this._configService.getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
27322
+ const shadowStrategy = convertToShadowStrategy(config === null || config === void 0 ? void 0 : config.protectedRangeShadow);
27323
+ this._rangeProtectionCanViewRenderExtension = new RangeProtectionCanViewRenderExtension(shadowStrategy);
27324
+ this._rangeProtectionCanNotViewRenderExtension = new RangeProtectionCanNotViewRenderExtension(shadowStrategy);
27325
+ this._initSkeleton();
27326
+ this._initRender();
27327
+ this.disposeWithMe(this._rangeProtectionRuleModel.ruleChange$.subscribe((info) => {
27328
+ var _info$oldRule, _info$oldRule2;
27329
+ if (((_info$oldRule = info.oldRule) === null || _info$oldRule === void 0 ? void 0 : _info$oldRule.id) && this._rangeProtectionCanViewRenderExtension.renderCache.has(info.oldRule.id) || this._rangeProtectionCanViewRenderExtension.renderCache.has(info.rule.id)) this._rangeProtectionCanViewRenderExtension.clearCache();
27330
+ if (((_info$oldRule2 = info.oldRule) === null || _info$oldRule2 === void 0 ? void 0 : _info$oldRule2.id) && this._rangeProtectionCanNotViewRenderExtension.renderCache.has(info.oldRule.id) || this._rangeProtectionCanNotViewRenderExtension.renderCache.has(info.rule.id)) this._rangeProtectionCanNotViewRenderExtension.clearCache();
27331
+ }));
27145
27332
  }
27146
- _initialize() {
27147
- const scene = this._context.scene;
27148
- this._hoverRect = new Rect(HEADER_MENU_CONTROLLER_SHAPE, {
27149
- fill: HEADER_MENU_CONTROLLER_SHAPE_COLOR,
27150
- evented: false
27151
- });
27152
- this._hoverMenu = new HeaderMenuShape(HEADER_MENU_CONTROLLER_MENU, {
27153
- zIndex: 100,
27154
- visible: false
27155
- });
27156
- scene.addObjects([this._hoverRect, this._hoverMenu], 10);
27157
- this._initialHover(0);
27158
- this._initialHover(1);
27159
- this._initialHoverMenu();
27333
+ _initRender() {
27334
+ const spreadsheetRender = this._context.mainComponent;
27335
+ if (spreadsheetRender) {
27336
+ if (!spreadsheetRender.getExtensionByKey("RANGE_PROTECTION_CAN_VIEW_RENDER_EXTENSION_KEY")) spreadsheetRender.register(this._rangeProtectionCanViewRenderExtension);
27337
+ if (!spreadsheetRender.getExtensionByKey("RANGE_PROTECTION_CAN_NOT_VIEW_RENDER_EXTENSION_KEY")) spreadsheetRender.register(this._rangeProtectionCanNotViewRenderExtension);
27338
+ }
27160
27339
  }
27161
- _initialHover(initialType = 0) {
27162
- var _this$_headerPointerS2, _this$_headerPointerS3, _this$_headerPointerS4;
27163
- const spreadsheetColumnHeader = this._context.components.get("__SpreadsheetColumnHeader__");
27164
- const spreadsheetRowHeader = this._context.components.get("__SpreadsheetRowHeader__");
27165
- const eventBindingObject = initialType === 0 ? spreadsheetRowHeader : spreadsheetColumnHeader;
27166
- const pointerMoveHandler = (evt) => {
27167
- var _this$_sheetSkeletonM;
27168
- const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
27169
- if (skeleton == null) return;
27170
- const { rowHeaderWidth, columnHeaderHeight } = skeleton;
27171
- const { startX, startY, endX, endY, column } = getCoordByOffset(evt.offsetX, evt.offsetY, this._context.scene, skeleton);
27172
- if (initialType === 0) {
27173
- var _this$_hoverRect2;
27174
- (_this$_hoverRect2 = this._hoverRect) === null || _this$_hoverRect2 === void 0 || _this$_hoverRect2.transformByState({
27175
- width: rowHeaderWidth,
27176
- height: endY - startY,
27177
- left: 0,
27178
- top: startY
27179
- });
27180
- } else {
27181
- var _this$_hoverRect3;
27182
- this._currentColumn = column;
27183
- (_this$_hoverRect3 = this._hoverRect) === null || _this$_hoverRect3 === void 0 || _this$_hoverRect3.transformByState({
27184
- width: endX - startX,
27185
- height: columnHeaderHeight,
27186
- left: startX,
27187
- top: 0
27188
- });
27189
- if (this._hoverMenu == null) return;
27190
- if (endX - startX < columnHeaderHeight * 2) {
27191
- this._hoverMenu.hide();
27192
- return;
27193
- }
27194
- const menuSize = columnHeaderHeight * .8;
27195
- this._hoverMenu.transformByState({
27196
- left: endX - columnHeaderHeight,
27197
- top: columnHeaderHeight / 2 - menuSize / 2
27198
- });
27199
- this._hoverMenu.setShapeProps({ size: menuSize });
27200
- this._hoverMenu.show();
27201
- }
27202
- };
27203
- const pointerEnterHandler = () => {
27204
- var _this$_hoverRect4;
27205
- (_this$_hoverRect4 = this._hoverRect) === null || _this$_hoverRect4 === void 0 || _this$_hoverRect4.show();
27206
- };
27207
- const pointerLeaveHandler = () => {
27208
- var _this$_hoverRect5, _this$_hoverMenu2;
27209
- (_this$_hoverRect5 = this._hoverRect) === null || _this$_hoverRect5 === void 0 || _this$_hoverRect5.hide();
27210
- (_this$_hoverMenu2 = this._hoverMenu) === null || _this$_hoverMenu2 === void 0 || _this$_hoverMenu2.hide();
27340
+ _initSkeleton() {
27341
+ const markDirtySkeleton = () => {
27342
+ var _this$_context$mainCo;
27343
+ this._sheetSkeletonManagerService.reCalculate();
27344
+ (_this$_context$mainCo = this._context.mainComponent) === null || _this$_context$mainCo === void 0 || _this$_context$mainCo.makeDirty();
27211
27345
  };
27212
- this._headerPointerSubs = new Subscription();
27213
- const headerPointerMoveSub = eventBindingObject.onPointerMove$.subscribeEvent(pointerMoveHandler);
27214
- const headerPointerEnterSub = eventBindingObject.onPointerEnter$.subscribeEvent(pointerEnterHandler);
27215
- const headerPointerLeaveSub = eventBindingObject.onPointerLeave$.subscribeEvent(pointerLeaveHandler);
27216
- (_this$_headerPointerS2 = this._headerPointerSubs) === null || _this$_headerPointerS2 === void 0 || _this$_headerPointerS2.add(headerPointerMoveSub);
27217
- (_this$_headerPointerS3 = this._headerPointerSubs) === null || _this$_headerPointerS3 === void 0 || _this$_headerPointerS3.add(headerPointerEnterSub);
27218
- (_this$_headerPointerS4 = this._headerPointerSubs) === null || _this$_headerPointerS4 === void 0 || _this$_headerPointerS4.add(headerPointerLeaveSub);
27346
+ this.disposeWithMe(merge$1(this._permissionService.permissionPointUpdate$.pipe(throttleTime(300, void 0, { trailing: true })), this._rangeProtectionRuleModel.rangeRuleInitStateChange$, this._rangeProtectionRuleModel.ruleChange$).pipe().subscribe(markDirtySkeleton));
27219
27347
  }
27220
- _initialHoverMenu() {
27221
- if (this._hoverMenu == null) return;
27222
- this._hoverMenu.onPointerEnter$.subscribeEvent(() => {
27223
- if (this._hoverMenu == null) return;
27224
- this._hoverMenu.setProps({
27225
- mode: 1,
27226
- visible: true
27227
- });
27228
- this._context.scene.setCursor(CURSOR_TYPE.POINTER);
27229
- });
27230
- this._hoverMenu.onPointerLeave$.subscribeEvent(() => {
27231
- if (this._hoverMenu == null) return;
27232
- this._hoverMenu.setProps({
27233
- mode: 0,
27234
- visible: false
27235
- });
27236
- this._context.scene.resetCursor();
27237
- });
27238
- this._hoverMenu.onPointerDown$.subscribeEvent((evt) => {
27239
- var _this$_selectionManag;
27240
- const currentColumn = this._currentColumn;
27241
- const currentSelectionDatas = (_this$_selectionManag = this._selectionManagerService.getCurrentSelections()) === null || _this$_selectionManag === void 0 ? void 0 : _this$_selectionManag.map((s) => s.range);
27242
- if (!!!(currentSelectionDatas === null || currentSelectionDatas === void 0 ? void 0 : currentSelectionDatas.filter((range) => range.rangeType === RANGE_TYPE.COLUMN).find((data) => {
27243
- const { startColumn, endColumn } = data;
27244
- if (currentColumn >= startColumn && currentColumn <= endColumn) return true;
27245
- return false;
27246
- }))) {
27247
- const selection = this._getSelectionOnColumn(currentColumn);
27248
- this._commandService.syncExecuteCommand(SetSelectionsOperation.id, selection);
27249
- }
27250
- evt.stopPropagation();
27251
- evt.preventDefault();
27252
- this._contextMenuService.triggerContextMenu(evt, ContextMenuPosition.COL_HEADER);
27253
- });
27348
+ };
27349
+ SheetPermissionRenderController = __decorate([
27350
+ __decorateParam(1, Inject(RangeProtectionRuleModel)),
27351
+ __decorateParam(2, Inject(SheetSkeletonManagerService)),
27352
+ __decorateParam(3, IPermissionService),
27353
+ __decorateParam(4, IConfigService)
27354
+ ], SheetPermissionRenderController);
27355
+ let WorksheetProtectionRenderController = class WorksheetProtectionRenderController extends Disposable {
27356
+ constructor(_context, _renderManagerService, _sheetSkeletonManagerService, _worksheetProtectionRuleModel, _configService) {
27357
+ super();
27358
+ this._context = _context;
27359
+ this._renderManagerService = _renderManagerService;
27360
+ this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
27361
+ this._worksheetProtectionRuleModel = _worksheetProtectionRuleModel;
27362
+ this._configService = _configService;
27363
+ _defineProperty(this, "_worksheetProtectionRenderExtension", void 0);
27364
+ const config = this._configService.getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
27365
+ const shadowStrategy = convertToShadowStrategy(config === null || config === void 0 ? void 0 : config.protectedRangeShadow);
27366
+ this._worksheetProtectionRenderExtension = new WorksheetProtectionRenderExtension(shadowStrategy);
27367
+ this._initSkeleton();
27368
+ if (shadowStrategy === "none") return;
27369
+ this._initRender();
27254
27370
  }
27255
- _getSelectionOnColumn(column) {
27256
- const workbook = this._context.unit;
27257
- const worksheet = workbook.getActiveSheet();
27258
- if (!worksheet) throw new Error("No active worksheet");
27259
- return {
27260
- unitId: workbook.getUnitId(),
27261
- subUnitId: worksheet.getSheetId(),
27262
- selections: [{
27263
- range: {
27264
- startRow: 0,
27265
- startColumn: column,
27266
- endRow: worksheet.getRowCount() - 1,
27267
- endColumn: column,
27268
- rangeType: RANGE_TYPE.COLUMN
27269
- },
27270
- primary: {
27271
- startRow: 0,
27272
- startColumn: column,
27273
- endRow: 0,
27274
- endColumn: column,
27275
- actualRow: 0,
27276
- actualColumn: column,
27277
- isMerged: false,
27278
- isMergedMainCell: false
27279
- },
27280
- style: null
27281
- }]
27371
+ _initRender() {
27372
+ const renderId = this._context.unitId;
27373
+ const render = renderId && this._renderManagerService.getRenderById(renderId);
27374
+ const spreadsheetRender = render && render.mainComponent;
27375
+ if (spreadsheetRender) {
27376
+ if (!spreadsheetRender.getExtensionByKey("worksheet-protection")) spreadsheetRender.register(this._worksheetProtectionRenderExtension);
27377
+ }
27378
+ }
27379
+ _initSkeleton() {
27380
+ const markDirtySkeleton = () => {
27381
+ var _this$_context$mainCo2;
27382
+ this._sheetSkeletonManagerService.reCalculate();
27383
+ (_this$_context$mainCo2 = this._context.mainComponent) === null || _this$_context$mainCo2 === void 0 || _this$_context$mainCo2.makeDirty();
27282
27384
  };
27385
+ this.disposeWithMe(merge$1(this._worksheetProtectionRuleModel.worksheetRuleInitStateChange$).pipe().subscribe(markDirtySkeleton));
27283
27386
  }
27284
27387
  };
27285
- HeaderMenuRenderController = __decorate([
27286
- __decorateParam(1, Inject(SheetSkeletonManagerService)),
27287
- __decorateParam(2, IContextMenuService),
27288
- __decorateParam(3, ICommandService),
27289
- __decorateParam(4, Inject(SheetsSelectionsService))
27290
- ], HeaderMenuRenderController);
27388
+ WorksheetProtectionRenderController = __decorate([
27389
+ __decorateParam(1, Inject(IRenderManagerService)),
27390
+ __decorateParam(2, Inject(SheetSkeletonManagerService)),
27391
+ __decorateParam(3, Inject(WorksheetProtectionRuleModel)),
27392
+ __decorateParam(4, Inject(IConfigService))
27393
+ ], WorksheetProtectionRenderController);
27291
27394
 
27292
27395
  //#endregion
27293
- //#region src/views/header-unhide-shape.ts
27294
- const UNHIDE_ICON_SIZE = 12;
27295
- const UNHIDE_ARROW_RATIO = .4;
27296
- var HeaderUnhideShape = class extends Shape {
27297
- constructor(key, props, onClick) {
27298
- super(key, props);
27299
- _defineProperty(this, "_size", 12);
27300
- _defineProperty(this, "_iconRatio", UNHIDE_ARROW_RATIO);
27301
- _defineProperty(this, "_hovered", true);
27302
- _defineProperty(this, "_hasPrevious", true);
27303
- _defineProperty(this, "_hasNext", true);
27304
- _defineProperty(this, "_unhideType", void 0);
27305
- if (props) this.setShapeProps(props);
27306
- this.onPointerEnter$.subscribeEvent(() => this.setShapeProps({ hovered: true }));
27307
- this.onPointerLeave$.subscribeEvent(() => this.setShapeProps({ hovered: false }));
27308
- this.onPointerDown$.subscribeEvent(() => onClick === null || onClick === void 0 ? void 0 : onClick());
27396
+ //#region src/controllers/render-controllers/clipboard.render-controller.ts
27397
+ let ClipboardRenderController = class ClipboardRenderController extends Disposable {
27398
+ constructor(_context, _sheetSkeletonManagerService, _sheetClipboardService, _sheetClipboardController) {
27399
+ super();
27400
+ this._context = _context;
27401
+ this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
27402
+ this._sheetClipboardService = _sheetClipboardService;
27403
+ this._sheetClipboardController = _sheetClipboardController;
27404
+ this._initialize();
27309
27405
  }
27310
- setShapeProps(props) {
27311
- if (props.type !== void 0) this._unhideType = props.type;
27312
- if (props.hovered !== void 0) this._hovered = props.hovered;
27313
- if (props.hasPrevious !== void 0) this._hasPrevious = props.hasPrevious;
27314
- if (props.hasNext !== void 0) this._hasNext = props.hasNext;
27315
- this.transformByState({
27316
- width: this._size * (this._unhideType === 1 ? 2 : 1),
27317
- height: this._size * (this._unhideType === 0 ? 2 : 1)
27318
- });
27406
+ _initialize() {
27407
+ this.disposeWithMe(toDisposable(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((skeleton) => {
27408
+ if (!(skeleton === null || skeleton === void 0 ? void 0 : skeleton.unitId)) return;
27409
+ if (!this._sheetClipboardService.getPasteMenuVisible()) return;
27410
+ const pasteOptionsCache = this._sheetClipboardService.getPasteOptionsCache();
27411
+ const menuUnitId = pasteOptionsCache === null || pasteOptionsCache === void 0 ? void 0 : pasteOptionsCache.target.unitId;
27412
+ if (skeleton.unitId === menuUnitId) this._sheetClipboardController.refreshOptionalPaste();
27413
+ })));
27319
27414
  }
27320
- _draw(ctx) {
27321
- if (this._unhideType === 0) this._drawOnRow(ctx);
27322
- else this._drawOnCol(ctx);
27415
+ };
27416
+ ClipboardRenderController = __decorate([
27417
+ __decorateParam(1, Inject(SheetSkeletonManagerService)),
27418
+ __decorateParam(2, ISheetClipboardService),
27419
+ __decorateParam(3, Inject(SheetClipboardController))
27420
+ ], ClipboardRenderController);
27421
+
27422
+ //#endregion
27423
+ //#region src/controllers/render-controllers/format-painter.render-controller.ts
27424
+ let FormatPainterRenderController = class FormatPainterRenderController extends Disposable {
27425
+ constructor(_context, _formatPainterService, _selectionRenderService, _commandService) {
27426
+ super();
27427
+ this._context = _context;
27428
+ this._formatPainterService = _formatPainterService;
27429
+ this._selectionRenderService = _selectionRenderService;
27430
+ this._commandService = _commandService;
27431
+ this._initialize();
27323
27432
  }
27324
- _drawOnRow(ctx) {
27325
- if (this._hovered) if (!this._hasNext || !this._hasPrevious) Rect.drawWith(ctx, {
27326
- width: this._size,
27327
- height: this._size,
27328
- stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
27329
- fill: HEADER_MENU_BACKGROUND_COLOR
27330
- });
27331
- else Rect.drawWith(ctx, {
27332
- width: this._size,
27333
- height: 2 * this._size,
27334
- stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
27335
- fill: HEADER_MENU_BACKGROUND_COLOR
27336
- });
27337
- const iconSize = this._size * .5 * this._iconRatio;
27338
- const sixtyDegree = Math.PI / 3;
27339
- const top = iconSize * Math.cos(sixtyDegree);
27340
- const left = iconSize * Math.sin(sixtyDegree);
27341
- if (this._hasPrevious) RegularPolygon.drawWith(ctx, {
27342
- pointsGroup: [[
27343
- {
27344
- x: this._size / 2,
27345
- y: this._size / 2 - left
27346
- },
27347
- {
27348
- x: this._size / 2 - left,
27349
- y: this._size / 2 + top
27350
- },
27351
- {
27352
- x: this._size / 2 + left,
27353
- y: this._size / 2 + top
27354
- }
27355
- ]],
27356
- fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
27357
- });
27358
- if (this._hasNext) {
27359
- const offset = this._hasPrevious ? 3 : 1;
27360
- RegularPolygon.drawWith(ctx, {
27361
- pointsGroup: [[
27362
- {
27363
- x: this._size / 2,
27364
- y: this._size * offset / 2 + left
27365
- },
27366
- {
27367
- x: this._size / 2 - left,
27368
- y: this._size * offset / 2 - top
27369
- },
27370
- {
27371
- x: this._size / 2 + left,
27372
- y: this._size * offset / 2 - top
27373
- }
27374
- ]],
27375
- fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
27376
- });
27377
- }
27433
+ _initialize() {
27434
+ this._bindFormatPainterStatus();
27435
+ this._commandExecutedListener();
27378
27436
  }
27379
- /**
27380
- *
27381
- * @param ctx
27382
- */
27383
- _drawOnCol(ctx) {
27384
- if (this._hovered) if (!this._hasNext || !this._hasPrevious) Rect.drawWith(ctx, {
27385
- width: this._size,
27386
- height: this._size,
27387
- stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
27388
- fill: HEADER_MENU_BACKGROUND_COLOR
27389
- });
27390
- else Rect.drawWith(ctx, {
27391
- width: 2 * this._size,
27392
- height: this._size,
27393
- stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
27394
- fill: HEADER_MENU_BACKGROUND_COLOR
27395
- });
27396
- const iconSize = this._size * .5 * this._iconRatio;
27397
- const sixtyDegree = Math.PI / 3;
27398
- const top = iconSize * Math.cos(sixtyDegree);
27399
- const left = iconSize * Math.sin(sixtyDegree);
27400
- if (this._hasPrevious) RegularPolygon.drawWith(ctx, {
27401
- pointsGroup: [[
27402
- {
27403
- x: -top + this._size / 2,
27404
- y: this._size / 2
27405
- },
27406
- {
27407
- x: this._size / 2 + left,
27408
- y: this._size / 2 - left
27409
- },
27410
- {
27411
- x: this._size / 2 + left,
27412
- y: this._size / 2 + left
27413
- }
27414
- ]],
27415
- fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
27416
- });
27417
- if (this._hasNext) {
27418
- const offset = this._hasPrevious ? 3 : 1;
27419
- RegularPolygon.drawWith(ctx, {
27420
- pointsGroup: [[
27421
- {
27422
- x: top + this._size * offset / 2,
27423
- y: this._size / 2
27424
- },
27425
- {
27426
- x: -left + this._size * offset / 2,
27427
- y: this._size / 2 - left
27428
- },
27429
- {
27430
- x: -left + this._size * offset / 2,
27431
- y: this._size / 2 + left
27437
+ _commandExecutedListener() {
27438
+ this.disposeWithMe(this._selectionRenderService.selectionMoveEnd$.subscribe((selections) => {
27439
+ if (this._formatPainterService.getStatus() !== 0) {
27440
+ var _this$_context$unit$g;
27441
+ const { rangeWithCoord } = selections[selections.length - 1];
27442
+ this._commandService.executeCommand(ApplyFormatPainterCommand.id, {
27443
+ unitId: this._context.unitId,
27444
+ subUnitId: ((_this$_context$unit$g = this._context.unit.getActiveSheet()) === null || _this$_context$unit$g === void 0 ? void 0 : _this$_context$unit$g.getSheetId()) || "",
27445
+ range: {
27446
+ startRow: rangeWithCoord.startRow,
27447
+ startColumn: rangeWithCoord.startColumn,
27448
+ endRow: rangeWithCoord.endRow,
27449
+ endColumn: rangeWithCoord.endColumn
27432
27450
  }
27433
- ]],
27434
- fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
27435
- });
27436
- }
27451
+ });
27452
+ if (this._formatPainterService.getStatus() === 1) this._commandService.executeCommand(SetOnceFormatPainterCommand.id);
27453
+ }
27454
+ }));
27455
+ }
27456
+ _bindFormatPainterStatus() {
27457
+ this.disposeWithMe(toDisposable(this._formatPainterService.status$.subscribe((status) => {
27458
+ const scene = this._context.scene;
27459
+ if (!scene) return;
27460
+ if (status !== 0) scene.setDefaultCursor(CURSOR_TYPE.CELL);
27461
+ else scene.setDefaultCursor(CURSOR_TYPE.DEFAULT);
27462
+ })));
27437
27463
  }
27438
27464
  };
27465
+ FormatPainterRenderController = __decorate([
27466
+ __decorateParam(1, IFormatPainterService),
27467
+ __decorateParam(2, ISheetSelectionRenderService),
27468
+ __decorateParam(3, ICommandService)
27469
+ ], FormatPainterRenderController);
27439
27470
 
27440
27471
  //#endregion
27441
- //#region src/controllers/render-controllers/header-unhide.render-controller.ts
27442
- const HEADER_UNHIDE_CONTROLLER_SHAPE = "__SpreadsheetHeaderUnhideSHAPEControllerShape__";
27443
- let HeaderUnhideRenderController = class HeaderUnhideRenderController extends RxDisposable {
27444
- get _workbook() {
27445
- return this._context.unit;
27446
- }
27447
- constructor(_context, _sheetSkeletonManagerService, _commandService) {
27472
+ //#region src/controllers/render-controllers/header-menu.render-controller.ts
27473
+ const HEADER_MENU_CONTROLLER_SHAPE = "__SpreadsheetHeaderMenuSHAPEControllerShape__";
27474
+ const HEADER_MENU_CONTROLLER_MENU = "__SpreadsheetHeaderMenuMAINControllerShape__";
27475
+ const HEADER_MENU_CONTROLLER_SHAPE_COLOR = "rgba(0, 0, 0, 0.1)";
27476
+ let HeaderMenuRenderController = class HeaderMenuRenderController extends Disposable {
27477
+ constructor(_context, _sheetSkeletonManagerService, _contextMenuService, _commandService, _selectionManagerService) {
27448
27478
  super();
27449
27479
  this._context = _context;
27450
27480
  this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
27481
+ this._contextMenuService = _contextMenuService;
27451
27482
  this._commandService = _commandService;
27452
- _defineProperty(this, "_shapes", {
27453
- cols: [],
27454
- rows: []
27455
- });
27456
- this._init();
27483
+ this._selectionManagerService = _selectionManagerService;
27484
+ _defineProperty(this, "_hoverRect", void 0);
27485
+ _defineProperty(this, "_hoverMenu", void 0);
27486
+ _defineProperty(this, "_currentColumn", Number.POSITIVE_INFINITY);
27487
+ _defineProperty(this, "_headerPointerSubs", void 0);
27488
+ _defineProperty(this, "_colHeaderPointerSubs", void 0);
27489
+ this._initialize();
27457
27490
  }
27458
27491
  dispose() {
27459
- super.dispose();
27460
- this._clearShapes();
27492
+ var _this$_hoverRect, _this$_hoverMenu, _this$_headerPointerS;
27493
+ (_this$_hoverRect = this._hoverRect) === null || _this$_hoverRect === void 0 || _this$_hoverRect.dispose();
27494
+ (_this$_hoverMenu = this._hoverMenu) === null || _this$_hoverMenu === void 0 || _this$_hoverMenu.dispose();
27495
+ (_this$_headerPointerS = this._headerPointerSubs) === null || _this$_headerPointerS === void 0 || _this$_headerPointerS.unsubscribe();
27496
+ this._headerPointerSubs = null;
27461
27497
  }
27462
- _init() {
27463
- let activeSheetId = "";
27464
- this._context.unit.activeSheet$.pipe(takeUntil(this.dispose$)).subscribe((worksheet) => {
27465
- this._clearShapes();
27466
- if (!worksheet) {
27467
- activeSheetId = "";
27468
- return;
27469
- }
27470
- activeSheetId = worksheet.getSheetId();
27471
- this._update(this._workbook, worksheet);
27498
+ _initialize() {
27499
+ const scene = this._context.scene;
27500
+ this._hoverRect = new Rect(HEADER_MENU_CONTROLLER_SHAPE, {
27501
+ fill: HEADER_MENU_CONTROLLER_SHAPE_COLOR,
27502
+ evented: false
27472
27503
  });
27473
- this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((param) => {
27474
- if (param) {
27475
- const { unitId, sheetId } = param;
27476
- if (unitId === this._workbook.getUnitId() && sheetId === activeSheetId) {
27477
- const worksheet = this._workbook.getSheetBySheetId(sheetId);
27478
- if (worksheet) this._update(this._workbook, worksheet);
27504
+ this._hoverMenu = new HeaderMenuShape(HEADER_MENU_CONTROLLER_MENU, {
27505
+ zIndex: 100,
27506
+ visible: false
27507
+ });
27508
+ scene.addObjects([this._hoverRect, this._hoverMenu], 10);
27509
+ this._initialHover(0);
27510
+ this._initialHover(1);
27511
+ this._initialHoverMenu();
27512
+ }
27513
+ _initialHover(initialType = 0) {
27514
+ var _this$_headerPointerS2, _this$_headerPointerS3, _this$_headerPointerS4;
27515
+ const spreadsheetColumnHeader = this._context.components.get("__SpreadsheetColumnHeader__");
27516
+ const spreadsheetRowHeader = this._context.components.get("__SpreadsheetRowHeader__");
27517
+ const eventBindingObject = initialType === 0 ? spreadsheetRowHeader : spreadsheetColumnHeader;
27518
+ const pointerMoveHandler = (evt) => {
27519
+ var _this$_sheetSkeletonM;
27520
+ const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
27521
+ if (skeleton == null) return;
27522
+ const { rowBaseWidth, rowGutterWidth, columnBaseHeight, columnGutterHeight } = getHeaderBaseLayout(skeleton);
27523
+ const { startX, startY, endX, endY, column } = getCoordByOffset(evt.offsetX, evt.offsetY, this._context.scene, skeleton);
27524
+ if (initialType === 0) {
27525
+ var _this$_hoverRect2;
27526
+ (_this$_hoverRect2 = this._hoverRect) === null || _this$_hoverRect2 === void 0 || _this$_hoverRect2.transformByState({
27527
+ width: rowBaseWidth,
27528
+ height: endY - startY,
27529
+ left: rowGutterWidth,
27530
+ top: startY
27531
+ });
27532
+ } else {
27533
+ var _this$_hoverRect3;
27534
+ this._currentColumn = column;
27535
+ (_this$_hoverRect3 = this._hoverRect) === null || _this$_hoverRect3 === void 0 || _this$_hoverRect3.transformByState({
27536
+ width: endX - startX,
27537
+ height: columnBaseHeight,
27538
+ left: startX,
27539
+ top: columnGutterHeight
27540
+ });
27541
+ if (this._hoverMenu == null) return;
27542
+ if (endX - startX < columnBaseHeight * 2) {
27543
+ this._hoverMenu.hide();
27544
+ return;
27479
27545
  }
27546
+ const menuSize = columnBaseHeight * .8;
27547
+ this._hoverMenu.transformByState({
27548
+ left: endX - columnBaseHeight,
27549
+ top: columnGutterHeight + columnBaseHeight / 2 - menuSize / 2
27550
+ });
27551
+ this._hoverMenu.setShapeProps({ size: menuSize });
27552
+ this._hoverMenu.show();
27480
27553
  }
27481
- }));
27554
+ };
27555
+ const pointerEnterHandler = () => {
27556
+ var _this$_hoverRect4;
27557
+ (_this$_hoverRect4 = this._hoverRect) === null || _this$_hoverRect4 === void 0 || _this$_hoverRect4.show();
27558
+ };
27559
+ const pointerLeaveHandler = () => {
27560
+ var _this$_hoverRect5, _this$_hoverMenu2;
27561
+ (_this$_hoverRect5 = this._hoverRect) === null || _this$_hoverRect5 === void 0 || _this$_hoverRect5.hide();
27562
+ (_this$_hoverMenu2 = this._hoverMenu) === null || _this$_hoverMenu2 === void 0 || _this$_hoverMenu2.hide();
27563
+ };
27564
+ this._headerPointerSubs = new Subscription();
27565
+ const headerPointerMoveSub = eventBindingObject.onPointerMove$.subscribeEvent(pointerMoveHandler);
27566
+ const headerPointerEnterSub = eventBindingObject.onPointerEnter$.subscribeEvent(pointerEnterHandler);
27567
+ const headerPointerLeaveSub = eventBindingObject.onPointerLeave$.subscribeEvent(pointerLeaveHandler);
27568
+ (_this$_headerPointerS2 = this._headerPointerSubs) === null || _this$_headerPointerS2 === void 0 || _this$_headerPointerS2.add(headerPointerMoveSub);
27569
+ (_this$_headerPointerS3 = this._headerPointerSubs) === null || _this$_headerPointerS3 === void 0 || _this$_headerPointerS3.add(headerPointerEnterSub);
27570
+ (_this$_headerPointerS4 = this._headerPointerSubs) === null || _this$_headerPointerS4 === void 0 || _this$_headerPointerS4.add(headerPointerLeaveSub);
27482
27571
  }
27483
- _update(workbook, worksheet) {
27484
- var _this$_sheetSkeletonM;
27485
- const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getSkeletonParam(worksheet.getSheetId())) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
27486
- if (!skeleton) return;
27487
- const hiddenRowRanges = worksheet.getHiddenRows();
27488
- const hiddenColRanges = worksheet.getHiddenCols();
27489
- const { scene } = this._getSheetObject();
27490
- const rowCount = worksheet.getRowCount();
27491
- const rowShapes = hiddenRowRanges.map((range) => {
27492
- const { startRow, endRow } = range;
27493
- const position = getCoordByCell(startRow, 0, scene, skeleton);
27494
- const hasPrevious = startRow !== 0;
27495
- const hasNext = endRow !== rowCount - 1;
27496
- return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
27497
- type: 0,
27498
- hovered: false,
27499
- hasPrevious,
27500
- hasNext,
27501
- top: position.startY - (hasPrevious ? 12 : 0),
27502
- left: position.startX - 12
27503
- }, () => this._commandService.executeCommand(SetSpecificRowsVisibleCommand.id, {
27504
- unitId: workbook.getUnitId(),
27505
- subUnitId: worksheet.getSheetId(),
27506
- ranges: [range]
27507
- }));
27572
+ _initialHoverMenu() {
27573
+ if (this._hoverMenu == null) return;
27574
+ this._hoverMenu.onPointerEnter$.subscribeEvent(() => {
27575
+ if (this._hoverMenu == null) return;
27576
+ this._hoverMenu.setProps({
27577
+ mode: 1,
27578
+ visible: true
27579
+ });
27580
+ this._context.scene.setCursor(CURSOR_TYPE.POINTER);
27508
27581
  });
27509
- const colCount = worksheet.getColumnCount();
27510
- const colShapes = hiddenColRanges.map((range) => {
27511
- const { startColumn, endColumn } = range;
27512
- const position = getCoordByCell(0, startColumn, scene, skeleton);
27513
- const hasPrevious = startColumn !== 0;
27514
- const hasNext = endColumn !== colCount - 1;
27515
- return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
27516
- type: 1,
27517
- hovered: false,
27518
- hasPrevious,
27519
- hasNext,
27520
- top: 20 - 12,
27521
- left: position.startX - (hasPrevious ? 12 : 0)
27522
- }, () => this._commandService.executeCommand(SetSpecificColsVisibleCommand.id, {
27523
- unitId: workbook.getUnitId(),
27524
- subUnitId: worksheet.getSheetId(),
27525
- ranges: [range]
27526
- }));
27582
+ this._hoverMenu.onPointerLeave$.subscribeEvent(() => {
27583
+ if (this._hoverMenu == null) return;
27584
+ this._hoverMenu.setProps({
27585
+ mode: 0,
27586
+ visible: false
27587
+ });
27588
+ this._context.scene.resetCursor();
27589
+ });
27590
+ this._hoverMenu.onPointerDown$.subscribeEvent((evt) => {
27591
+ var _this$_selectionManag;
27592
+ const currentColumn = this._currentColumn;
27593
+ const currentSelectionDatas = (_this$_selectionManag = this._selectionManagerService.getCurrentSelections()) === null || _this$_selectionManag === void 0 ? void 0 : _this$_selectionManag.map((s) => s.range);
27594
+ if (!!!(currentSelectionDatas === null || currentSelectionDatas === void 0 ? void 0 : currentSelectionDatas.filter((range) => range.rangeType === RANGE_TYPE.COLUMN).find((data) => {
27595
+ const { startColumn, endColumn } = data;
27596
+ if (currentColumn >= startColumn && currentColumn <= endColumn) return true;
27597
+ return false;
27598
+ }))) {
27599
+ const selection = this._getSelectionOnColumn(currentColumn);
27600
+ this._commandService.syncExecuteCommand(SetSelectionsOperation.id, selection);
27601
+ }
27602
+ evt.stopPropagation();
27603
+ evt.preventDefault();
27604
+ this._contextMenuService.triggerContextMenu(evt, ContextMenuPosition.COL_HEADER);
27527
27605
  });
27528
- scene.addObjects(colShapes, 12);
27529
- scene.addObjects(rowShapes, 12);
27530
- this._clearShapes();
27531
- this._shapes = {
27532
- cols: colShapes,
27533
- rows: rowShapes
27534
- };
27535
27606
  }
27536
- _clearShapes() {
27537
- this._shapes.cols.forEach((shape) => shape.dispose());
27538
- this._shapes.rows.forEach((shape) => shape.dispose());
27539
- this._shapes = {
27540
- cols: [],
27541
- rows: []
27607
+ _getSelectionOnColumn(column) {
27608
+ const workbook = this._context.unit;
27609
+ const worksheet = workbook.getActiveSheet();
27610
+ if (!worksheet) throw new Error("No active worksheet");
27611
+ return {
27612
+ unitId: workbook.getUnitId(),
27613
+ subUnitId: worksheet.getSheetId(),
27614
+ selections: [{
27615
+ range: {
27616
+ startRow: 0,
27617
+ startColumn: column,
27618
+ endRow: worksheet.getRowCount() - 1,
27619
+ endColumn: column,
27620
+ rangeType: RANGE_TYPE.COLUMN
27621
+ },
27622
+ primary: {
27623
+ startRow: 0,
27624
+ startColumn: column,
27625
+ endRow: 0,
27626
+ endColumn: column,
27627
+ actualRow: 0,
27628
+ actualColumn: column,
27629
+ isMerged: false,
27630
+ isMergedMainCell: false
27631
+ },
27632
+ style: null
27633
+ }]
27542
27634
  };
27543
27635
  }
27544
- _getSheetObject() {
27545
- return getSheetObject(this._workbook, this._context);
27546
- }
27547
27636
  };
27548
- HeaderUnhideRenderController = __decorate([__decorateParam(1, Inject(SheetSkeletonManagerService)), __decorateParam(2, ICommandService)], HeaderUnhideRenderController);
27637
+ HeaderMenuRenderController = __decorate([
27638
+ __decorateParam(1, Inject(SheetSkeletonManagerService)),
27639
+ __decorateParam(2, IContextMenuService),
27640
+ __decorateParam(3, ICommandService),
27641
+ __decorateParam(4, Inject(SheetsSelectionsService))
27642
+ ], HeaderMenuRenderController);
27643
+ function getHeaderBaseLayout(skeleton) {
27644
+ var _skeleton$worksheet$g, _skeleton$worksheet, _config$rowHeader, _config$columnHeader;
27645
+ const config = (_skeleton$worksheet$g = (_skeleton$worksheet = skeleton.worksheet).getConfig) === null || _skeleton$worksheet$g === void 0 ? void 0 : _skeleton$worksheet$g.call(_skeleton$worksheet);
27646
+ const configuredRowWidth = config === null || config === void 0 || (_config$rowHeader = config.rowHeader) === null || _config$rowHeader === void 0 ? void 0 : _config$rowHeader.width;
27647
+ const configuredColumnHeight = config === null || config === void 0 || (_config$columnHeader = config.columnHeader) === null || _config$columnHeader === void 0 ? void 0 : _config$columnHeader.height;
27648
+ const rowBaseWidth = typeof configuredRowWidth === "number" && configuredRowWidth > 0 ? Math.min(configuredRowWidth, skeleton.rowHeaderWidth) : skeleton.rowHeaderWidth;
27649
+ const columnBaseHeight = typeof configuredColumnHeight === "number" && configuredColumnHeight > 0 ? Math.min(configuredColumnHeight, skeleton.columnHeaderHeight) : skeleton.columnHeaderHeight;
27650
+ return {
27651
+ rowBaseWidth,
27652
+ rowGutterWidth: Math.max(0, skeleton.rowHeaderWidthAndMarginLeft - rowBaseWidth),
27653
+ columnBaseHeight,
27654
+ columnGutterHeight: Math.max(0, skeleton.columnHeaderHeightAndMarginTop - columnBaseHeight)
27655
+ };
27656
+ }
27549
27657
 
27550
27658
  //#endregion
27551
27659
  //#region src/consts/mobile-context.ts
@@ -28847,12 +28955,12 @@ let SheetSkeletonRenderController = class SheetSkeletonRenderController extends
28847
28955
  this._context = _context;
28848
28956
  this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
28849
28957
  this._renderManagerService = _renderManagerService;
28850
- this._sheetSkeletonManagerService.currentSkeleton$.subscribe((param) => {
28958
+ this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((param) => {
28851
28959
  this._updateSceneSize(param);
28852
- });
28960
+ }));
28853
28961
  }
28854
28962
  _updateSceneSize(param) {
28855
- var _this$_renderManagerS;
28963
+ var _this$_renderManagerS, _scene$getViewport, _scene$getViewport2, _scene$getViewport3, _scene$getViewport4, _scene$getViewport5;
28856
28964
  if (param == null) return;
28857
28965
  const { unitId } = this._context;
28858
28966
  const { skeleton } = param;
@@ -28865,6 +28973,30 @@ let SheetSkeletonRenderController = class SheetSkeletonRenderController extends
28865
28973
  height: columnHeaderHeightAndMarginTop + rowTotalHeight
28866
28974
  });
28867
28975
  scene.getMainViewport().setMargin(rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop);
28976
+ scene.getMainViewport().resizeWhenFreezeChange({
28977
+ left: rowHeaderWidthAndMarginLeft,
28978
+ top: columnHeaderHeightAndMarginTop
28979
+ });
28980
+ (_scene$getViewport = scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_COLUMN_LEFT)) === null || _scene$getViewport === void 0 || _scene$getViewport.resizeWhenFreezeChange({
28981
+ left: rowHeaderWidthAndMarginLeft,
28982
+ height: columnHeaderHeightAndMarginTop
28983
+ });
28984
+ (_scene$getViewport2 = scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_COLUMN_RIGHT)) === null || _scene$getViewport2 === void 0 || _scene$getViewport2.resizeWhenFreezeChange({
28985
+ left: rowHeaderWidthAndMarginLeft,
28986
+ height: columnHeaderHeightAndMarginTop
28987
+ });
28988
+ (_scene$getViewport3 = scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_ROW_BOTTOM)) === null || _scene$getViewport3 === void 0 || _scene$getViewport3.resizeWhenFreezeChange({
28989
+ width: rowHeaderWidthAndMarginLeft,
28990
+ top: columnHeaderHeightAndMarginTop
28991
+ });
28992
+ (_scene$getViewport4 = scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_ROW_TOP)) === null || _scene$getViewport4 === void 0 || _scene$getViewport4.resizeWhenFreezeChange({
28993
+ width: rowHeaderWidthAndMarginLeft,
28994
+ top: columnHeaderHeightAndMarginTop
28995
+ });
28996
+ (_scene$getViewport5 = scene.getViewport(SHEET_VIEWPORT_KEY.VIEW_LEFT_TOP)) === null || _scene$getViewport5 === void 0 || _scene$getViewport5.resizeWhenFreezeChange({
28997
+ width: rowHeaderWidthAndMarginLeft,
28998
+ height: columnHeaderHeightAndMarginTop
28999
+ });
28868
29000
  }
28869
29001
  };
28870
29002
  SheetSkeletonRenderController = __decorate([__decorateParam(1, Inject(SheetSkeletonManagerService)), __decorateParam(2, IRenderManagerService)], SheetSkeletonRenderController);
@@ -29698,16 +29830,18 @@ let MobileSheetsSelectionRenderService = class MobileSheetsSelectionRenderServic
29698
29830
  */
29699
29831
  newSelectionControl(scene, skeleton, selection) {
29700
29832
  const selectionControls = this.getSelectionControls();
29701
- const { rowHeaderWidth, columnHeaderHeight } = skeleton;
29833
+ const { rowHeaderWidth, rowHeaderWidthAndMarginLeft, columnHeaderHeight, columnHeaderHeightAndMarginTop } = skeleton;
29702
29834
  const rangeType = selection.range.rangeType;
29703
29835
  const control = new MobileSelectionControl(scene, selectionControls.length, this._themeService, {
29704
29836
  highlightHeader: this._highlightHeader,
29705
29837
  rowHeaderWidth,
29706
29838
  columnHeaderHeight,
29839
+ rowHeaderOffsetX: Math.max(0, rowHeaderWidthAndMarginLeft - rowHeaderWidth),
29840
+ columnHeaderOffsetY: Math.max(0, columnHeaderHeightAndMarginTop - columnHeaderHeight),
29707
29841
  rangeType
29708
29842
  });
29709
29843
  const selectionWithCoord = attachSelectionWithCoord(selection, skeleton);
29710
- control.updateRangeBySelectionWithCoord(selectionWithCoord);
29844
+ control.updateRangeBySelectionWithCoord(selectionWithCoord, skeleton);
29711
29845
  this._selectionControls.push(control);
29712
29846
  const { expandingModeForTopLeft, expandingModeForBottomRight } = (() => {
29713
29847
  switch (rangeType) {
@@ -29983,6 +30117,7 @@ let UniverSheetsMobileUIPlugin = class UniverSheetsMobileUIPlugin extends Plugin
29983
30117
  [IStatusBarService, { useClass: StatusBarService }],
29984
30118
  [IMarkSelectionService, { useClass: MarkSelectionService }],
29985
30119
  [HoverManagerService],
30120
+ [HeaderUnhideRangeService],
29986
30121
  [DragManagerService],
29987
30122
  [SheetCanvasPopManagerService],
29988
30123
  [CellPopupManagerService],
@@ -30578,6 +30713,7 @@ let UniverSheetsUIPlugin = class UniverSheetsUIPlugin extends Plugin {
30578
30713
  [IStatusBarService, { useClass: StatusBarService }],
30579
30714
  [IMarkSelectionService, { useClass: MarkSelectionService }],
30580
30715
  [HoverManagerService],
30716
+ [HeaderUnhideRangeService],
30581
30717
  [DragManagerService],
30582
30718
  [SheetCanvasPopManagerService],
30583
30719
  [CellPopupManagerService],
@@ -30706,4 +30842,4 @@ UniverSheetsUIPlugin = __decorate([
30706
30842
  ], UniverSheetsUIPlugin);
30707
30843
 
30708
30844
  //#endregion
30709
- export { AddRangeProtectionFromContextMenuCommand, AddRangeProtectionFromSheetBarCommand, AddRangeProtectionFromToolbarCommand, ApplyFormatPainterCommand, AutoFillUIController, AutoHeightController, AutoWidthController, BaseSelectionRenderService, COPY_SPECIAL_MENU_ID, COPY_TYPE, CellAlertManagerService, CellAlertType, CellCustomRenderController, CellEditorManagerService, CellPopupManagerService, ChangeSheetProtectionFromSheetBarCommand, ChangeZoomRatioCommand, DeleteRangeMoveLeftConfirmCommand, DeleteRangeMoveUpConfirmCommand, DeleteRangeProtectionFromContextMenuCommand, DeleteWorksheetProtectionFormSheetBarCommand, DragManagerService, DragRenderController, EMBEDDING_FORMULA_EDITOR, EMBEDDING_FORMULA_EDITOR_COMPONENT_KEY, EditingRenderController, EditorBridgeService, ExpandSelectionCommand, FormatPainterStatus, FormulaBar, FormulaEditorController, HeaderFreezeRenderController, HeaderMoveRenderController, HeaderResizeRenderController, HideColConfirmCommand, HideRowConfirmCommand, HoverManagerService, HoverRenderController, ICellEditorManagerService, IEditorBridgeService, IFormatPainterService, IFormulaEditorManagerService, IMarkSelectionService, IRepeatLastActionService, ISheetCellDropdownManagerService, ISheetClipboardService, ISheetSelectionRenderService, IStatusBarService, InsertRangeMoveDownConfirmCommand, InsertRangeMoveRightConfirmCommand, JumpOver, MarkSelectionService, MobileSheetBar, MoveSelectionCommand, MoveSelectionEnterAndTabCommand, PASTE_SPECIAL_MENU_ID, PREDEFINED_HOOK_NAME, PREDEFINED_HOOK_NAME_COPY, PREDEFINED_HOOK_NAME_PASTE, RANGE_SELECTOR_COMPONENT_KEY, RANGE_SELECTOR_SYMBOLS, RemoveColConfirmCommand, RemoveRowConfirmCommand, RemoveSheetConfirmCommand, RenameSheetOperation, RenderSheetContent, RenderSheetFooter, RenderSheetHeader, RepeatLastActionPermission, ResetRangeTextColorCommand, ResetScrollCommand, SELECTION_SHAPE_DEPTH, SHEET_UI_PLUGIN_NAME, SHEET_VIEW_KEY, ScrollCommand, ScrollToCellCommand, ScrollToRangeOperation, SelectAllCommand, SelectionControl, SelectionControl as SelectionShape, SelectionShapeExtension, SetActivateCellEditOperation, SetCellEditVisibleArrowOperation, SetCellEditVisibleOperation, SetCellEditVisibleWithF2Operation, SetColumnFrozenCommand, SetColumnHeaderHeightCommand, SetFirstColumnFrozenCommand, SetFirstRowFrozenCommand, SetFormatPainterOperation, SetInfiniteFormatPainterCommand, SetOnceFormatPainterCommand, SetRangeBoldCommand, SetRangeFontDecreaseCommand, SetRangeFontFamilyCommand, SetRangeFontIncreaseCommand, SetRangeFontSizeCommand, SetRangeItalicCommand, SetRangeProtectionFromContextMenuCommand, SetRangeStrickThroughCommand, SetRangeSubscriptCommand, SetRangeSuperscriptCommand, SetRangeTextColorCommand, SetRangeUnderlineCommand, SetRowFrozenCommand, SetRowHeaderWidthCommand, SetScrollOperation, SetScrollRelativeCommand, SetSelectionFrozenCommand, SetWorksheetColAutoWidthCommand, SetZoomRatioCommand, SetZoomRatioOperation, SheetBar, SheetCanvasPopManagerService, SheetCellDropdownManagerService, SheetCellEditorResizeService, SheetClipboardController, SheetClipboardService, SheetCopyCommand, SheetCopyDownCommand, SheetCopyRightCommand, SheetCutCommand, SheetMenuPosition, SheetPasteBesidesBorderCommand, SheetPasteColWidthCommand, SheetPasteCommand, SheetPasteFormatCommand, SheetPasteShortKeyCommand, SheetPasteValueCommand, SheetPermissionCheckUIController, SheetPermissionOpenDialogOperation, SheetPermissionOpenPanelOperation, SheetPermissionRenderManagerService, SheetPermissionUserManagerService, SheetPrintInterceptorService, SheetRenderController, SheetScrollManagerService, SheetSelectionRenderService, SheetSkeletonManagerService, SheetUIController, SheetsRenderService, SheetsScrollRenderController, menuSchema as SheetsUIMenuSchema, SheetsUIPart, ShowMenuListCommand, SidebarDefinedNameOperation, StatusBarController, StatusBarService, UNIVER_SHEET_PERMISSION_USER_PART, UniverSheetsMobileUIPlugin, UniverSheetsUIPlugin, ViewSheetPermissionFromContextMenuCommand, ViewSheetPermissionFromSheetBarCommand, calculateDocSkeletonRects, matchedSelectionByRowColIndex as checkInHeaderRanges, deriveStateFromActiveSheet$, functionDisplayNames, genNormalSelectionStyle, genSelectionByRange, selectionDataForSelectAll as getAllSelection, getCellRealRange, getCoordByCell, getCoordByOffset, getCurrentExclusiveRangeInterest$, getCurrentRangeDisable$, getCustomRangePosition, getEditingCustomRangePosition, getEditorObject, getMatrixPlainText, getObservableWithExclusiveRange$, getRepeatRange, getSheetObject, getTopLeftSelectionOfCurrSheet, getTransformCoord, getViewportByCell, isEmbeddingFormulaEditor, isRangeSelector, menuClipboardDisabledObservable, mergeSetRangeValues, useActiveWorkbook, useActiveWorksheet, useHighlightRange, useKeyEventConfig, useWorkbooks, virtualizeDiscreteRanges, whenFormulaEditorActivated, whenSheetEditorActivated, whenSheetEditorFocused };
30845
+ export { AddRangeProtectionFromContextMenuCommand, AddRangeProtectionFromSheetBarCommand, AddRangeProtectionFromToolbarCommand, ApplyFormatPainterCommand, AutoFillUIController, AutoHeightController, AutoWidthController, BaseSelectionRenderService, COPY_SPECIAL_MENU_ID, COPY_TYPE, CellAlertManagerService, CellAlertType, CellCustomRenderController, CellEditorManagerService, CellPopupManagerService, ChangeSheetProtectionFromSheetBarCommand, ChangeZoomRatioCommand, DeleteRangeMoveLeftConfirmCommand, DeleteRangeMoveUpConfirmCommand, DeleteRangeProtectionFromContextMenuCommand, DeleteWorksheetProtectionFormSheetBarCommand, DragManagerService, DragRenderController, EMBEDDING_FORMULA_EDITOR, EMBEDDING_FORMULA_EDITOR_COMPONENT_KEY, EditingRenderController, EditorBridgeService, ExpandSelectionCommand, FormatPainterStatus, FormulaBar, FormulaEditorController, HEADER_UNHIDE_RANGE_VISIBLE_CHECK, HeaderFreezeRenderController, HeaderMoveRenderController, HeaderResizeRenderController, HeaderUnhideRangeAxis, HeaderUnhideRangeService, HeaderUnhideRenderController, HideColConfirmCommand, HideRowConfirmCommand, HoverManagerService, HoverRenderController, ICellEditorManagerService, IEditorBridgeService, IFormatPainterService, IFormulaEditorManagerService, IMarkSelectionService, IRepeatLastActionService, ISheetCellDropdownManagerService, ISheetClipboardService, ISheetSelectionRenderService, IStatusBarService, InsertRangeMoveDownConfirmCommand, InsertRangeMoveRightConfirmCommand, JumpOver, MarkSelectionService, MobileSheetBar, MoveSelectionCommand, MoveSelectionEnterAndTabCommand, PASTE_SPECIAL_MENU_ID, PREDEFINED_HOOK_NAME, PREDEFINED_HOOK_NAME_COPY, PREDEFINED_HOOK_NAME_PASTE, RANGE_SELECTOR_COMPONENT_KEY, RANGE_SELECTOR_SYMBOLS, RemoveColConfirmCommand, RemoveRowConfirmCommand, RemoveSheetConfirmCommand, RenameSheetOperation, RenderSheetContent, RenderSheetFooter, RenderSheetHeader, RepeatLastActionPermission, ResetRangeTextColorCommand, ResetScrollCommand, SELECTION_SHAPE_DEPTH, SHEET_UI_PLUGIN_NAME, SHEET_VIEW_KEY, ScrollCommand, ScrollToCellCommand, ScrollToRangeOperation, SelectAllCommand, SelectionControl, SelectionControl as SelectionShape, SelectionShapeExtension, SetActivateCellEditOperation, SetCellEditVisibleArrowOperation, SetCellEditVisibleOperation, SetCellEditVisibleWithF2Operation, SetColumnFrozenCommand, SetColumnHeaderHeightCommand, SetFirstColumnFrozenCommand, SetFirstRowFrozenCommand, SetFormatPainterOperation, SetInfiniteFormatPainterCommand, SetOnceFormatPainterCommand, SetRangeBoldCommand, SetRangeFontDecreaseCommand, SetRangeFontFamilyCommand, SetRangeFontIncreaseCommand, SetRangeFontSizeCommand, SetRangeItalicCommand, SetRangeProtectionFromContextMenuCommand, SetRangeStrickThroughCommand, SetRangeSubscriptCommand, SetRangeSuperscriptCommand, SetRangeTextColorCommand, SetRangeUnderlineCommand, SetRowFrozenCommand, SetRowHeaderWidthCommand, SetScrollOperation, SetScrollRelativeCommand, SetSelectionFrozenCommand, SetWorksheetColAutoWidthCommand, SetZoomRatioCommand, SetZoomRatioOperation, SheetBar, SheetCanvasPopManagerService, SheetCellDropdownManagerService, SheetCellEditorResizeService, SheetClipboardController, SheetClipboardService, SheetCopyCommand, SheetCopyDownCommand, SheetCopyRightCommand, SheetCutCommand, SheetMenuPosition, SheetPasteBesidesBorderCommand, SheetPasteColWidthCommand, SheetPasteCommand, SheetPasteFormatCommand, SheetPasteShortKeyCommand, SheetPasteValueCommand, SheetPermissionCheckUIController, SheetPermissionOpenDialogOperation, SheetPermissionOpenPanelOperation, SheetPermissionRenderManagerService, SheetPermissionUserManagerService, SheetPrintInterceptorService, SheetRenderController, SheetScrollManagerService, SheetSelectionRenderService, SheetSkeletonManagerService, SheetUIController, SheetsRenderService, SheetsScrollRenderController, menuSchema as SheetsUIMenuSchema, SheetsUIPart, ShowMenuListCommand, SidebarDefinedNameOperation, StatusBarController, StatusBarService, UNIVER_SHEET_PERMISSION_USER_PART, UniverSheetsMobileUIPlugin, UniverSheetsUIPlugin, ViewSheetPermissionFromContextMenuCommand, ViewSheetPermissionFromSheetBarCommand, calculateDocSkeletonRects, matchedSelectionByRowColIndex as checkInHeaderRanges, deriveStateFromActiveSheet$, functionDisplayNames, genNormalSelectionStyle, genSelectionByRange, selectionDataForSelectAll as getAllSelection, getCellRealRange, getCoordByCell, getCoordByOffset, getCurrentExclusiveRangeInterest$, getCurrentRangeDisable$, getCustomRangePosition, getEditingCustomRangePosition, getEditorObject, getMatrixPlainText, getObservableWithExclusiveRange$, getRepeatRange, getSheetObject, getTopLeftSelectionOfCurrSheet, getTransformCoord, getViewportByCell, isEmbeddingFormulaEditor, isRangeSelector, menuClipboardDisabledObservable, mergeSetRangeValues, useActiveWorkbook, useActiveWorksheet, useHighlightRange, useKeyEventConfig, useWorkbooks, virtualizeDiscreteRanges, whenFormulaEditorActivated, whenSheetEditorActivated, whenSheetEditorFocused };