@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/cjs/index.js +938 -793
- package/lib/es/index.js +929 -793
- package/lib/index.js +929 -793
- package/lib/types/controllers/render-controllers/header-unhide.render-controller.d.ts +10 -2
- package/lib/types/controllers/render-controllers/sheet.render-controller.d.ts +9 -0
- package/lib/types/index.d.ts +2 -0
- package/lib/types/menu/clear.menu.d.ts +1 -0
- package/lib/types/services/clipboard/copy-content-cache.d.ts +0 -1
- package/lib/types/services/header-unhide-range.service.d.ts +32 -0
- package/lib/types/services/selection/mobile-selection-shape.d.ts +2 -0
- package/lib/types/services/selection/selection-control.d.ts +4 -0
- package/lib/types/views/permission/extensions/range-protection.render.d.ts +2 -2
- package/lib/umd/index.js +11 -11
- package/package.json +14 -14
- package/LICENSE +0 -176
package/lib/cjs/index.js
CHANGED
|
@@ -518,11 +518,13 @@ var BaseSelectionRenderService = class extends _univerjs_core.Disposable {
|
|
|
518
518
|
}
|
|
519
519
|
newSelectionControl(scene, skeleton, selection) {
|
|
520
520
|
const zIndex = this.getSelectionControls().length;
|
|
521
|
-
const { rowHeaderWidth, columnHeaderHeight } = skeleton;
|
|
521
|
+
const { rowHeaderWidth, rowHeaderWidthAndMarginLeft, columnHeaderHeight, columnHeaderHeightAndMarginTop } = skeleton;
|
|
522
522
|
const control = new SelectionControl(scene, zIndex, this._selectionTheme, {
|
|
523
523
|
highlightHeader: this._highlightHeader,
|
|
524
524
|
rowHeaderWidth,
|
|
525
|
-
columnHeaderHeight
|
|
525
|
+
columnHeaderHeight,
|
|
526
|
+
rowHeaderOffsetX: Math.max(0, rowHeaderWidthAndMarginLeft - rowHeaderWidth),
|
|
527
|
+
columnHeaderOffsetY: Math.max(0, columnHeaderHeightAndMarginTop - columnHeaderHeight)
|
|
526
528
|
});
|
|
527
529
|
this._selectionControls.push(control);
|
|
528
530
|
const selectionWithCoord = (0, _univerjs_sheets.attachSelectionWithCoord)(selection, skeleton);
|
|
@@ -1808,7 +1810,7 @@ const SELECTION_TITLE_HIGHLIGHT_ALPHA = .3;
|
|
|
1808
1810
|
*/
|
|
1809
1811
|
var SelectionControl = class extends _univerjs_core.Disposable {
|
|
1810
1812
|
constructor(_scene, _zIndex, _themeService, options) {
|
|
1811
|
-
var _options$enableAutoFi, _options$highlightHea, _options$rowHeaderWid, _options$columnHeader;
|
|
1813
|
+
var _options$enableAutoFi, _options$highlightHea, _options$rowHeaderWid, _options$columnHeader, _options$rowHeaderOff, _options$columnHeader2;
|
|
1812
1814
|
super();
|
|
1813
1815
|
this._scene = _scene;
|
|
1814
1816
|
this._zIndex = _zIndex;
|
|
@@ -1847,6 +1849,8 @@ var SelectionControl = class extends _univerjs_core.Disposable {
|
|
|
1847
1849
|
_defineProperty(this, "_currentStyle", void 0);
|
|
1848
1850
|
_defineProperty(this, "_rowHeaderWidth", 0);
|
|
1849
1851
|
_defineProperty(this, "_columnHeaderHeight", 0);
|
|
1852
|
+
_defineProperty(this, "_rowHeaderOffsetX", 0);
|
|
1853
|
+
_defineProperty(this, "_columnHeaderOffsetY", 0);
|
|
1850
1854
|
_defineProperty(this, "_widgetRects", []);
|
|
1851
1855
|
_defineProperty(this, "_controlExtension", void 0);
|
|
1852
1856
|
_defineProperty(this, "_dispose$", new rxjs.BehaviorSubject(this));
|
|
@@ -1864,6 +1868,8 @@ var SelectionControl = class extends _univerjs_core.Disposable {
|
|
|
1864
1868
|
this._highlightHeader = (_options$highlightHea = options === null || options === void 0 ? void 0 : options.highlightHeader) !== null && _options$highlightHea !== void 0 ? _options$highlightHea : true;
|
|
1865
1869
|
this._rowHeaderWidth = (_options$rowHeaderWid = options === null || options === void 0 ? void 0 : options.rowHeaderWidth) !== null && _options$rowHeaderWid !== void 0 ? _options$rowHeaderWid : 0;
|
|
1866
1870
|
this._columnHeaderHeight = (_options$columnHeader = options === null || options === void 0 ? void 0 : options.columnHeaderHeight) !== null && _options$columnHeader !== void 0 ? _options$columnHeader : 0;
|
|
1871
|
+
this._rowHeaderOffsetX = (_options$rowHeaderOff = options === null || options === void 0 ? void 0 : options.rowHeaderOffsetX) !== null && _options$rowHeaderOff !== void 0 ? _options$rowHeaderOff : 0;
|
|
1872
|
+
this._columnHeaderOffsetY = (_options$columnHeader2 = options === null || options === void 0 ? void 0 : options.columnHeaderOffsetY) !== null && _options$columnHeader2 !== void 0 ? _options$columnHeader2 : 0;
|
|
1867
1873
|
this._initializeSheetBody();
|
|
1868
1874
|
this._initialHeader();
|
|
1869
1875
|
}
|
|
@@ -2228,6 +2234,8 @@ var SelectionControl = class extends _univerjs_core.Disposable {
|
|
|
2228
2234
|
if (sk) {
|
|
2229
2235
|
this._rowHeaderWidth = sk.rowHeaderWidth;
|
|
2230
2236
|
this._columnHeaderHeight = sk.columnHeaderHeight;
|
|
2237
|
+
this._rowHeaderOffsetX = Math.max(0, sk.rowHeaderWidthAndMarginLeft - sk.rowHeaderWidth);
|
|
2238
|
+
this._columnHeaderOffsetY = Math.max(0, sk.columnHeaderHeightAndMarginTop - sk.columnHeaderHeight);
|
|
2231
2239
|
}
|
|
2232
2240
|
this._selectionRenderModel.setValue(selectionWthCoord.rangeWithCoord, selectionWthCoord.primaryWithCoord);
|
|
2233
2241
|
this._showAutoFill = selectionWthCoord.primaryWithCoord !== null;
|
|
@@ -2248,6 +2256,8 @@ var SelectionControl = class extends _univerjs_core.Disposable {
|
|
|
2248
2256
|
update(newSelectionRange, rowHeaderWidth = 0, columnHeaderHeight = 0, style, primaryCell) {
|
|
2249
2257
|
this._rowHeaderWidth = rowHeaderWidth;
|
|
2250
2258
|
this._columnHeaderHeight = columnHeaderHeight;
|
|
2259
|
+
this._rowHeaderOffsetX = 0;
|
|
2260
|
+
this._columnHeaderOffsetY = 0;
|
|
2251
2261
|
this.updateRangeBySelectionWithCoord({
|
|
2252
2262
|
rangeWithCoord: newSelectionRange,
|
|
2253
2263
|
primaryWithCoord: primaryCell,
|
|
@@ -2367,6 +2377,8 @@ var SelectionControl = class extends _univerjs_core.Disposable {
|
|
|
2367
2377
|
columnHeaderStrokeWidth /= scale;
|
|
2368
2378
|
const rowHeaderWidth = this._rowHeaderWidth;
|
|
2369
2379
|
const columnHeaderHeight = this._columnHeaderHeight;
|
|
2380
|
+
const rowHeaderOffsetX = this._rowHeaderOffsetX;
|
|
2381
|
+
const columnHeaderOffsetY = this._columnHeaderOffsetY;
|
|
2370
2382
|
if (this._highlightHeader && columnHeaderHeight > 0) {
|
|
2371
2383
|
let highlightTitleColor = columnHeaderFill;
|
|
2372
2384
|
if (rangeType === _univerjs_core.RANGE_TYPE.COLUMN) highlightTitleColor = new _univerjs_core.ColorKit(stroke).setAlpha(SELECTION_TITLE_HIGHLIGHT_ALPHA).toString();
|
|
@@ -2379,7 +2391,7 @@ var SelectionControl = class extends _univerjs_core.Disposable {
|
|
|
2379
2391
|
top: columnHeaderHeight - columnHeaderStrokeWidth + 1 / scale
|
|
2380
2392
|
});
|
|
2381
2393
|
this._columnHeaderGroup.show();
|
|
2382
|
-
this._columnHeaderGroup.translate(startX,
|
|
2394
|
+
this._columnHeaderGroup.translate(startX, columnHeaderOffsetY);
|
|
2383
2395
|
} else this._columnHeaderGroup.hide();
|
|
2384
2396
|
this._columnHeaderGroup.makeDirty(true);
|
|
2385
2397
|
if (this._highlightHeader && rowHeaderWidth > 0) {
|
|
@@ -2394,7 +2406,7 @@ var SelectionControl = class extends _univerjs_core.Disposable {
|
|
|
2394
2406
|
left: rowHeaderWidth - rowHeaderStrokeWidth + 1 / scale
|
|
2395
2407
|
});
|
|
2396
2408
|
this._rowHeaderGroup.show();
|
|
2397
|
-
this._rowHeaderGroup.translate(
|
|
2409
|
+
this._rowHeaderGroup.translate(rowHeaderOffsetX, startY);
|
|
2398
2410
|
} else this._rowHeaderGroup.hide();
|
|
2399
2411
|
this._rowHeaderGroup.makeDirty(true);
|
|
2400
2412
|
}
|
|
@@ -2734,10 +2746,6 @@ function cloneCellDataWithSpanInfo(cell) {
|
|
|
2734
2746
|
//#endregion
|
|
2735
2747
|
//#region src/services/clipboard/copy-content-cache.ts
|
|
2736
2748
|
const COPY_CONTENT_CACHE_LIMIT = 10;
|
|
2737
|
-
const ID_LENGTH = 6;
|
|
2738
|
-
function genId() {
|
|
2739
|
-
return (0, _univerjs_core.generateRandomId)(ID_LENGTH);
|
|
2740
|
-
}
|
|
2741
2749
|
function extractId(html) {
|
|
2742
2750
|
const match = html.match(/data-copy-id="([^\s]+)"/);
|
|
2743
2751
|
if (match && match[1]) return match[1];
|
|
@@ -4225,7 +4233,7 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
|
|
|
4225
4233
|
rowIndex += 1;
|
|
4226
4234
|
}
|
|
4227
4235
|
for (let c = startColumn; c <= endColumn; c++) discreteRange.cols.push(c);
|
|
4228
|
-
const copyId =
|
|
4236
|
+
const copyId = (0, _univerjs_core.generateRandomId)(6);
|
|
4229
4237
|
const html = this._usmToHtml.convert(matrix, discreteRange, hooks, copyId);
|
|
4230
4238
|
return {
|
|
4231
4239
|
copyId,
|
|
@@ -14517,7 +14525,7 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends _u
|
|
|
14517
14525
|
var _this$_sheetSkeletonM;
|
|
14518
14526
|
const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
|
|
14519
14527
|
if (skeleton == null || this._rowResizeRect == null || this._columnResizeRect == null) return;
|
|
14520
|
-
const {
|
|
14528
|
+
const { rowBaseWidth, rowGutterWidth, columnBaseHeight, columnGutterHeight } = getHeaderBaseLayout$1(skeleton);
|
|
14521
14529
|
const { startX, startY, endX, endY, row, column } = getCoordByOffset(evt.offsetX, evt.offsetY, scene, skeleton);
|
|
14522
14530
|
const isLastRow = row === skeleton.worksheet.getRowCount() - 1;
|
|
14523
14531
|
const isLastColumn = column === skeleton.worksheet.getColumnCount() - 1;
|
|
@@ -14537,9 +14545,9 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends _u
|
|
|
14537
14545
|
}
|
|
14538
14546
|
if (this._currentRow === -1) return;
|
|
14539
14547
|
if (!this.interceptor.fetchThroughInterceptors(HEADER_RESIZE_PERMISSION_CHECK)(null, { row: this._currentRow })) return false;
|
|
14540
|
-
const rowSize = Math.min(44,
|
|
14548
|
+
const rowSize = Math.min(44, rowBaseWidth / 3);
|
|
14541
14549
|
this._rowResizeRect.transformByState({
|
|
14542
|
-
left:
|
|
14550
|
+
left: rowGutterWidth + rowBaseWidth / 2 - rowSize / 2,
|
|
14543
14551
|
top
|
|
14544
14552
|
});
|
|
14545
14553
|
this._rowResizeRect.setShapeProps({ size: rowSize });
|
|
@@ -14557,10 +14565,10 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends _u
|
|
|
14557
14565
|
}
|
|
14558
14566
|
if (this._currentColumn === -1) return;
|
|
14559
14567
|
if (!this.interceptor.fetchThroughInterceptors(HEADER_RESIZE_PERMISSION_CHECK)(null, { col: this._currentColumn })) return false;
|
|
14560
|
-
const columnSize =
|
|
14568
|
+
const columnSize = columnBaseHeight * .7;
|
|
14561
14569
|
this._columnResizeRect.transformByState({
|
|
14562
14570
|
left,
|
|
14563
|
-
top:
|
|
14571
|
+
top: columnGutterHeight + columnBaseHeight / 2 - columnSize / 2
|
|
14564
14572
|
});
|
|
14565
14573
|
this._columnResizeRect.setShapeProps({ size: columnSize });
|
|
14566
14574
|
this._columnResizeRect.show();
|
|
@@ -14605,9 +14613,9 @@ let HeaderResizeRenderController = class HeaderResizeRenderController extends _u
|
|
|
14605
14613
|
let isStartMove = false;
|
|
14606
14614
|
let moveChangeX = 0;
|
|
14607
14615
|
let moveChangeY = 0;
|
|
14608
|
-
const { columnTotalWidth,
|
|
14609
|
-
const shapeWidth = canvasMaxWidth > columnTotalWidth +
|
|
14610
|
-
const shapeHeight = canvasMaxHeight > rowTotalHeight +
|
|
14616
|
+
const { columnTotalWidth, rowHeaderWidthAndMarginLeft, rowTotalHeight, columnHeaderHeightAndMarginTop } = skeleton;
|
|
14617
|
+
const shapeWidth = canvasMaxWidth > columnTotalWidth + rowHeaderWidthAndMarginLeft ? canvasMaxWidth : columnTotalWidth + rowHeaderWidthAndMarginLeft;
|
|
14618
|
+
const shapeHeight = canvasMaxHeight > rowTotalHeight + columnHeaderHeightAndMarginTop ? canvasMaxHeight : rowTotalHeight + columnHeaderHeightAndMarginTop;
|
|
14611
14619
|
const HEADER_MENU_SHAPE_THUMB_SIZE_SCALE = 4 / Math.max(scaleX, scaleY);
|
|
14612
14620
|
if (initialType === 0) this._resizeHelperShape = new _univerjs_engine_render.Rect(HEADER_RESIZE_CONTROLLER_SHAPE_HELPER, {
|
|
14613
14621
|
width: shapeWidth,
|
|
@@ -14740,126 +14748,498 @@ HeaderResizeRenderController = __decorate([
|
|
|
14740
14748
|
__decorateParam(2, (0, _univerjs_core.Inject)(_univerjs_sheets.SheetsSelectionsService)),
|
|
14741
14749
|
__decorateParam(3, _univerjs_core.ICommandService)
|
|
14742
14750
|
], HeaderResizeRenderController);
|
|
14751
|
+
function getHeaderBaseLayout$1(skeleton) {
|
|
14752
|
+
var _skeleton$worksheet$g, _skeleton$worksheet, _config$rowHeader, _config$columnHeader;
|
|
14753
|
+
const config = (_skeleton$worksheet$g = (_skeleton$worksheet = skeleton.worksheet).getConfig) === null || _skeleton$worksheet$g === void 0 ? void 0 : _skeleton$worksheet$g.call(_skeleton$worksheet);
|
|
14754
|
+
const configuredRowWidth = config === null || config === void 0 || (_config$rowHeader = config.rowHeader) === null || _config$rowHeader === void 0 ? void 0 : _config$rowHeader.width;
|
|
14755
|
+
const configuredColumnHeight = config === null || config === void 0 || (_config$columnHeader = config.columnHeader) === null || _config$columnHeader === void 0 ? void 0 : _config$columnHeader.height;
|
|
14756
|
+
const rowBaseWidth = typeof configuredRowWidth === "number" && configuredRowWidth > 0 ? Math.min(configuredRowWidth, skeleton.rowHeaderWidth) : skeleton.rowHeaderWidth;
|
|
14757
|
+
const columnBaseHeight = typeof configuredColumnHeight === "number" && configuredColumnHeight > 0 ? Math.min(configuredColumnHeight, skeleton.columnHeaderHeight) : skeleton.columnHeaderHeight;
|
|
14758
|
+
return {
|
|
14759
|
+
rowBaseWidth,
|
|
14760
|
+
rowGutterWidth: Math.max(0, skeleton.rowHeaderWidthAndMarginLeft - rowBaseWidth),
|
|
14761
|
+
columnBaseHeight,
|
|
14762
|
+
columnGutterHeight: Math.max(0, skeleton.columnHeaderHeightAndMarginTop - columnBaseHeight)
|
|
14763
|
+
};
|
|
14764
|
+
}
|
|
14743
14765
|
|
|
14744
14766
|
//#endregion
|
|
14745
|
-
//#region src/
|
|
14746
|
-
|
|
14747
|
-
|
|
14748
|
-
|
|
14749
|
-
|
|
14750
|
-
|
|
14751
|
-
|
|
14752
|
-
|
|
14753
|
-
this
|
|
14754
|
-
this._commandService = _commandService;
|
|
14755
|
-
this._telemetryService = _telemetryService;
|
|
14756
|
-
_defineProperty(this, "_renderMetric$", new rxjs.Subject());
|
|
14757
|
-
_defineProperty(this, "renderMetric$", this._renderMetric$.asObservable());
|
|
14758
|
-
_defineProperty(this, "_renderFrameTimeMetric", null);
|
|
14759
|
-
_defineProperty(this, "_renderFrameTags", {});
|
|
14760
|
-
_defineProperty(this, "_afterRenderMetric$", new rxjs.Subject());
|
|
14761
|
-
this._addNewRender();
|
|
14762
|
-
this._initRenderMetricSubscriber();
|
|
14767
|
+
//#region src/services/header-unhide-range.service.ts
|
|
14768
|
+
let HeaderUnhideRangeAxis = /* @__PURE__ */ function(HeaderUnhideRangeAxis) {
|
|
14769
|
+
HeaderUnhideRangeAxis["ROW"] = "row";
|
|
14770
|
+
HeaderUnhideRangeAxis["COLUMN"] = "column";
|
|
14771
|
+
return HeaderUnhideRangeAxis;
|
|
14772
|
+
}({});
|
|
14773
|
+
var HeaderUnhideRangeService = class {
|
|
14774
|
+
constructor() {
|
|
14775
|
+
_defineProperty(this, "_visibleHandlers", /* @__PURE__ */ new Set());
|
|
14763
14776
|
}
|
|
14764
|
-
|
|
14765
|
-
|
|
14766
|
-
this.
|
|
14767
|
-
|
|
14768
|
-
|
|
14769
|
-
|
|
14770
|
-
|
|
14771
|
-
const sheetId = worksheet.getSheetId();
|
|
14772
|
-
this._sheetSkeletonManagerService.setCurrent({ sheetId });
|
|
14773
|
-
const frameFn = () => scene.render();
|
|
14774
|
-
this.disposeWithMe(this._context.activated$.subscribe((activated) => {
|
|
14775
|
-
if (activated) engine.runRenderLoop(frameFn);
|
|
14776
|
-
else engine.stopRenderLoop(frameFn);
|
|
14777
|
-
}));
|
|
14777
|
+
registerRangeVisibleHandler(handler) {
|
|
14778
|
+
this._visibleHandlers.add(handler);
|
|
14779
|
+
const dispose = () => this._visibleHandlers.delete(handler);
|
|
14780
|
+
return {
|
|
14781
|
+
dispose,
|
|
14782
|
+
unsubscribe: dispose
|
|
14783
|
+
};
|
|
14778
14784
|
}
|
|
14779
|
-
|
|
14780
|
-
|
|
14781
|
-
|
|
14782
|
-
|
|
14783
|
-
|
|
14785
|
+
shouldRenderRange(visible, payload) {
|
|
14786
|
+
let nextVisible = visible;
|
|
14787
|
+
for (const handler of this._visibleHandlers) nextVisible = handler(nextVisible, payload);
|
|
14788
|
+
return nextVisible;
|
|
14789
|
+
}
|
|
14790
|
+
};
|
|
14791
|
+
|
|
14792
|
+
//#endregion
|
|
14793
|
+
//#region src/menu/header-menu-shape.ts
|
|
14794
|
+
const HEADER_MENU_SHAPE_CIRCLE_FILL = "rgba(0, 0, 0, 0.15)";
|
|
14795
|
+
const HEADER_MENU_SHAPE_TRIANGLE_FILL = "rgb(0, 0, 0)";
|
|
14796
|
+
const HEADER_MENU_BACKGROUND_COLOR = "rgb(255, 255, 255, 1)";
|
|
14797
|
+
var HeaderMenuShape = class extends _univerjs_engine_render.Shape {
|
|
14798
|
+
constructor(key, props) {
|
|
14799
|
+
super(key, props);
|
|
14800
|
+
_defineProperty(this, "_size", 12);
|
|
14801
|
+
_defineProperty(this, "_iconRatio", .4);
|
|
14802
|
+
_defineProperty(this, "_mode", 0);
|
|
14803
|
+
this.setShapeProps(props);
|
|
14804
|
+
}
|
|
14805
|
+
setShapeProps(props) {
|
|
14806
|
+
if (props === null || props === void 0 ? void 0 : props.size) this._size = props.size;
|
|
14807
|
+
if (props === null || props === void 0 ? void 0 : props.mode) this._mode = props.mode;
|
|
14808
|
+
this.transformByState({
|
|
14809
|
+
width: this._size,
|
|
14810
|
+
height: this._size
|
|
14784
14811
|
});
|
|
14785
|
-
|
|
14786
|
-
|
|
14787
|
-
|
|
14788
|
-
|
|
14789
|
-
|
|
14812
|
+
}
|
|
14813
|
+
_draw(ctx) {
|
|
14814
|
+
if (this._mode === 1) _univerjs_engine_render.Rect.drawWith(ctx, {
|
|
14815
|
+
width: this._size,
|
|
14816
|
+
height: this._size,
|
|
14817
|
+
radius: this._size,
|
|
14818
|
+
fill: HEADER_MENU_SHAPE_CIRCLE_FILL
|
|
14790
14819
|
});
|
|
14791
|
-
|
|
14792
|
-
|
|
14793
|
-
|
|
14794
|
-
|
|
14820
|
+
const iconSize = this._size * .5 * this._iconRatio;
|
|
14821
|
+
const sixtyDegree = Math.PI / 180 * 60;
|
|
14822
|
+
const left = iconSize * Math.sin(sixtyDegree);
|
|
14823
|
+
const top = iconSize * Math.cos(sixtyDegree);
|
|
14824
|
+
_univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
14825
|
+
pointsGroup: [[
|
|
14826
|
+
{
|
|
14827
|
+
x: -left + this._size / 2,
|
|
14828
|
+
y: -top + this._size / 2
|
|
14829
|
+
},
|
|
14830
|
+
{
|
|
14831
|
+
x: left + this._size / 2,
|
|
14832
|
+
y: -top + this._size / 2
|
|
14833
|
+
},
|
|
14834
|
+
{
|
|
14835
|
+
x: this._size / 2,
|
|
14836
|
+
y: iconSize + this._size / 2
|
|
14837
|
+
}
|
|
14838
|
+
]],
|
|
14839
|
+
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
14795
14840
|
});
|
|
14796
|
-
|
|
14797
|
-
|
|
14841
|
+
}
|
|
14842
|
+
};
|
|
14843
|
+
|
|
14844
|
+
//#endregion
|
|
14845
|
+
//#region src/views/header-unhide-shape.ts
|
|
14846
|
+
const UNHIDE_ICON_SIZE = 12;
|
|
14847
|
+
const UNHIDE_ARROW_RATIO = .4;
|
|
14848
|
+
var HeaderUnhideShape = class extends _univerjs_engine_render.Shape {
|
|
14849
|
+
constructor(key, props, onClick) {
|
|
14850
|
+
super(key, props);
|
|
14851
|
+
_defineProperty(this, "_size", 12);
|
|
14852
|
+
_defineProperty(this, "_iconRatio", UNHIDE_ARROW_RATIO);
|
|
14853
|
+
_defineProperty(this, "_hovered", true);
|
|
14854
|
+
_defineProperty(this, "_hasPrevious", true);
|
|
14855
|
+
_defineProperty(this, "_hasNext", true);
|
|
14856
|
+
_defineProperty(this, "_unhideType", void 0);
|
|
14857
|
+
if (props) this.setShapeProps(props);
|
|
14858
|
+
this.onPointerEnter$.subscribeEvent(() => this.setShapeProps({ hovered: true }));
|
|
14859
|
+
this.onPointerLeave$.subscribeEvent(() => this.setShapeProps({ hovered: false }));
|
|
14860
|
+
this.onPointerDown$.subscribeEvent(() => onClick === null || onClick === void 0 ? void 0 : onClick());
|
|
14861
|
+
}
|
|
14862
|
+
setShapeProps(props) {
|
|
14863
|
+
if (props.type !== void 0) this._unhideType = props.type;
|
|
14864
|
+
if (props.hovered !== void 0) this._hovered = props.hovered;
|
|
14865
|
+
if (props.hasPrevious !== void 0) this._hasPrevious = props.hasPrevious;
|
|
14866
|
+
if (props.hasNext !== void 0) this._hasNext = props.hasNext;
|
|
14867
|
+
this.transformByState({
|
|
14868
|
+
width: this._size * (this._unhideType === 1 ? 2 : 1),
|
|
14869
|
+
height: this._size * (this._unhideType === 0 ? 2 : 1)
|
|
14798
14870
|
});
|
|
14799
|
-
|
|
14800
|
-
|
|
14801
|
-
|
|
14802
|
-
|
|
14803
|
-
|
|
14804
|
-
|
|
14805
|
-
|
|
14806
|
-
|
|
14807
|
-
|
|
14808
|
-
|
|
14809
|
-
|
|
14810
|
-
|
|
14811
|
-
|
|
14871
|
+
}
|
|
14872
|
+
_draw(ctx) {
|
|
14873
|
+
if (this._unhideType === 0) this._drawOnRow(ctx);
|
|
14874
|
+
else this._drawOnCol(ctx);
|
|
14875
|
+
}
|
|
14876
|
+
_drawOnRow(ctx) {
|
|
14877
|
+
if (this._hovered) if (!this._hasNext || !this._hasPrevious) _univerjs_engine_render.Rect.drawWith(ctx, {
|
|
14878
|
+
width: this._size,
|
|
14879
|
+
height: this._size,
|
|
14880
|
+
stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
|
|
14881
|
+
fill: HEADER_MENU_BACKGROUND_COLOR
|
|
14882
|
+
});
|
|
14883
|
+
else _univerjs_engine_render.Rect.drawWith(ctx, {
|
|
14884
|
+
width: this._size,
|
|
14885
|
+
height: 2 * this._size,
|
|
14886
|
+
stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
|
|
14887
|
+
fill: HEADER_MENU_BACKGROUND_COLOR
|
|
14888
|
+
});
|
|
14889
|
+
const iconSize = this._size * .5 * this._iconRatio;
|
|
14890
|
+
const sixtyDegree = Math.PI / 3;
|
|
14891
|
+
const top = iconSize * Math.cos(sixtyDegree);
|
|
14892
|
+
const left = iconSize * Math.sin(sixtyDegree);
|
|
14893
|
+
if (this._hasPrevious) _univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
14894
|
+
pointsGroup: [[
|
|
14895
|
+
{
|
|
14896
|
+
x: this._size / 2,
|
|
14897
|
+
y: this._size / 2 - left
|
|
14898
|
+
},
|
|
14899
|
+
{
|
|
14900
|
+
x: this._size / 2 - left,
|
|
14901
|
+
y: this._size / 2 + top
|
|
14902
|
+
},
|
|
14903
|
+
{
|
|
14904
|
+
x: this._size / 2 + left,
|
|
14905
|
+
y: this._size / 2 + top
|
|
14906
|
+
}
|
|
14907
|
+
]],
|
|
14908
|
+
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
14812
14909
|
});
|
|
14910
|
+
if (this._hasNext) {
|
|
14911
|
+
const offset = this._hasPrevious ? 3 : 1;
|
|
14912
|
+
_univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
14913
|
+
pointsGroup: [[
|
|
14914
|
+
{
|
|
14915
|
+
x: this._size / 2,
|
|
14916
|
+
y: this._size * offset / 2 + left
|
|
14917
|
+
},
|
|
14918
|
+
{
|
|
14919
|
+
x: this._size / 2 - left,
|
|
14920
|
+
y: this._size * offset / 2 - top
|
|
14921
|
+
},
|
|
14922
|
+
{
|
|
14923
|
+
x: this._size / 2 + left,
|
|
14924
|
+
y: this._size * offset / 2 - top
|
|
14925
|
+
}
|
|
14926
|
+
]],
|
|
14927
|
+
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
14928
|
+
});
|
|
14929
|
+
}
|
|
14813
14930
|
}
|
|
14814
14931
|
/**
|
|
14815
|
-
*
|
|
14816
|
-
* @param
|
|
14932
|
+
*
|
|
14933
|
+
* @param ctx
|
|
14817
14934
|
*/
|
|
14818
|
-
|
|
14819
|
-
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
|
|
14823
|
-
|
|
14824
|
-
const sums = Object.entries(data).filter(([_, value]) => Array.isArray(value)).map(([key]) => key).reduce((acc, key) => {
|
|
14825
|
-
acc[key] = data[key].reduce((sum, num) => sum + num, 0);
|
|
14826
|
-
return acc;
|
|
14827
|
-
}, {});
|
|
14828
|
-
Object.keys(data).filter((key) => key.startsWith(_univerjs_engine_render.SHEET_EXTENSION_PREFIX)).forEach((key) => {
|
|
14829
|
-
totalSum += sums[key];
|
|
14830
|
-
});
|
|
14831
|
-
return {
|
|
14832
|
-
...sums,
|
|
14833
|
-
extensionTotal: totalSum
|
|
14834
|
-
};
|
|
14835
|
-
};
|
|
14836
|
-
const frameTimeListAfterSum = frameInfoList.map((info) => {
|
|
14837
|
-
return {
|
|
14838
|
-
...info,
|
|
14839
|
-
...sumValueForNumListFields(info)
|
|
14840
|
-
};
|
|
14935
|
+
_drawOnCol(ctx) {
|
|
14936
|
+
if (this._hovered) if (!this._hasNext || !this._hasPrevious) _univerjs_engine_render.Rect.drawWith(ctx, {
|
|
14937
|
+
width: this._size,
|
|
14938
|
+
height: this._size,
|
|
14939
|
+
stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
|
|
14940
|
+
fill: HEADER_MENU_BACKGROUND_COLOR
|
|
14841
14941
|
});
|
|
14842
|
-
|
|
14843
|
-
|
|
14844
|
-
|
|
14845
|
-
|
|
14846
|
-
|
|
14847
|
-
|
|
14848
|
-
|
|
14849
|
-
|
|
14850
|
-
|
|
14851
|
-
|
|
14852
|
-
|
|
14853
|
-
|
|
14854
|
-
|
|
14855
|
-
|
|
14856
|
-
|
|
14857
|
-
|
|
14858
|
-
|
|
14859
|
-
|
|
14860
|
-
|
|
14861
|
-
|
|
14862
|
-
|
|
14942
|
+
else _univerjs_engine_render.Rect.drawWith(ctx, {
|
|
14943
|
+
width: 2 * this._size,
|
|
14944
|
+
height: this._size,
|
|
14945
|
+
stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
|
|
14946
|
+
fill: HEADER_MENU_BACKGROUND_COLOR
|
|
14947
|
+
});
|
|
14948
|
+
const iconSize = this._size * .5 * this._iconRatio;
|
|
14949
|
+
const sixtyDegree = Math.PI / 3;
|
|
14950
|
+
const top = iconSize * Math.cos(sixtyDegree);
|
|
14951
|
+
const left = iconSize * Math.sin(sixtyDegree);
|
|
14952
|
+
if (this._hasPrevious) _univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
14953
|
+
pointsGroup: [[
|
|
14954
|
+
{
|
|
14955
|
+
x: -top + this._size / 2,
|
|
14956
|
+
y: this._size / 2
|
|
14957
|
+
},
|
|
14958
|
+
{
|
|
14959
|
+
x: this._size / 2 + left,
|
|
14960
|
+
y: this._size / 2 - left
|
|
14961
|
+
},
|
|
14962
|
+
{
|
|
14963
|
+
x: this._size / 2 + left,
|
|
14964
|
+
y: this._size / 2 + left
|
|
14965
|
+
}
|
|
14966
|
+
]],
|
|
14967
|
+
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
14968
|
+
});
|
|
14969
|
+
if (this._hasNext) {
|
|
14970
|
+
const offset = this._hasPrevious ? 3 : 1;
|
|
14971
|
+
_univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
14972
|
+
pointsGroup: [[
|
|
14973
|
+
{
|
|
14974
|
+
x: top + this._size * offset / 2,
|
|
14975
|
+
y: this._size / 2
|
|
14976
|
+
},
|
|
14977
|
+
{
|
|
14978
|
+
x: -left + this._size * offset / 2,
|
|
14979
|
+
y: this._size / 2 - left
|
|
14980
|
+
},
|
|
14981
|
+
{
|
|
14982
|
+
x: -left + this._size * offset / 2,
|
|
14983
|
+
y: this._size / 2 + left
|
|
14984
|
+
}
|
|
14985
|
+
]],
|
|
14986
|
+
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
14987
|
+
});
|
|
14988
|
+
}
|
|
14989
|
+
}
|
|
14990
|
+
};
|
|
14991
|
+
|
|
14992
|
+
//#endregion
|
|
14993
|
+
//#region src/controllers/render-controllers/header-unhide.render-controller.ts
|
|
14994
|
+
const HEADER_UNHIDE_CONTROLLER_SHAPE = "__SpreadsheetHeaderUnhideSHAPEControllerShape__";
|
|
14995
|
+
const HEADER_UNHIDE_RANGE_VISIBLE_CHECK = (0, _univerjs_core.createInterceptorKey)("headerUnhideRangeVisibleCheck");
|
|
14996
|
+
let HeaderUnhideRenderController = class HeaderUnhideRenderController extends _univerjs_core.RxDisposable {
|
|
14997
|
+
get _workbook() {
|
|
14998
|
+
return this._context.unit;
|
|
14999
|
+
}
|
|
15000
|
+
constructor(_context, _sheetSkeletonManagerService, _headerUnhideRangeService, _commandService) {
|
|
15001
|
+
super();
|
|
15002
|
+
this._context = _context;
|
|
15003
|
+
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
15004
|
+
this._headerUnhideRangeService = _headerUnhideRangeService;
|
|
15005
|
+
this._commandService = _commandService;
|
|
15006
|
+
_defineProperty(this, "_shapes", {
|
|
15007
|
+
cols: [],
|
|
15008
|
+
rows: []
|
|
15009
|
+
});
|
|
15010
|
+
_defineProperty(this, "interceptor", new _univerjs_core.InterceptorManager({ HEADER_UNHIDE_RANGE_VISIBLE_CHECK }));
|
|
15011
|
+
this._init();
|
|
15012
|
+
}
|
|
15013
|
+
dispose() {
|
|
15014
|
+
super.dispose();
|
|
15015
|
+
this._clearShapes();
|
|
15016
|
+
}
|
|
15017
|
+
_init() {
|
|
15018
|
+
let activeSheetId = "";
|
|
15019
|
+
this._context.unit.activeSheet$.pipe((0, rxjs.takeUntil)(this.dispose$)).subscribe((worksheet) => {
|
|
15020
|
+
this._clearShapes();
|
|
15021
|
+
if (!worksheet) {
|
|
15022
|
+
activeSheetId = "";
|
|
15023
|
+
return;
|
|
15024
|
+
}
|
|
15025
|
+
activeSheetId = worksheet.getSheetId();
|
|
15026
|
+
this._update(this._workbook, worksheet);
|
|
15027
|
+
});
|
|
15028
|
+
this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((param) => {
|
|
15029
|
+
if (param) {
|
|
15030
|
+
const { unitId, sheetId } = param;
|
|
15031
|
+
if (unitId === this._workbook.getUnitId() && sheetId === activeSheetId) {
|
|
15032
|
+
const worksheet = this._workbook.getSheetBySheetId(sheetId);
|
|
15033
|
+
if (worksheet) this._update(this._workbook, worksheet);
|
|
15034
|
+
}
|
|
15035
|
+
}
|
|
15036
|
+
}));
|
|
15037
|
+
}
|
|
15038
|
+
_update(workbook, worksheet) {
|
|
15039
|
+
var _this$_sheetSkeletonM;
|
|
15040
|
+
const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getSkeletonParam(worksheet.getSheetId())) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
|
|
15041
|
+
if (!skeleton) return;
|
|
15042
|
+
const visibleCheck = this.interceptor.fetchThroughInterceptors(HEADER_UNHIDE_RANGE_VISIBLE_CHECK);
|
|
15043
|
+
const shouldRenderRange = (payload) => {
|
|
15044
|
+
var _visibleCheck;
|
|
15045
|
+
return this._headerUnhideRangeService.shouldRenderRange((_visibleCheck = visibleCheck(true, payload)) !== null && _visibleCheck !== void 0 ? _visibleCheck : true, payload);
|
|
15046
|
+
};
|
|
15047
|
+
const hiddenRowRanges = worksheet.getHiddenRows().filter((range) => shouldRenderRange({
|
|
15048
|
+
axis: "row",
|
|
15049
|
+
range,
|
|
15050
|
+
workbook,
|
|
15051
|
+
worksheet
|
|
15052
|
+
}));
|
|
15053
|
+
const hiddenColRanges = worksheet.getHiddenCols().filter((range) => shouldRenderRange({
|
|
15054
|
+
axis: "column",
|
|
15055
|
+
range,
|
|
15056
|
+
workbook,
|
|
15057
|
+
worksheet
|
|
15058
|
+
}));
|
|
15059
|
+
const { scene } = this._getSheetObject();
|
|
15060
|
+
const rowCount = worksheet.getRowCount();
|
|
15061
|
+
const rowShapes = hiddenRowRanges.map((range) => {
|
|
15062
|
+
const { startRow, endRow } = range;
|
|
15063
|
+
const position = getCoordByCell(startRow, 0, scene, skeleton);
|
|
15064
|
+
const hasPrevious = startRow !== 0;
|
|
15065
|
+
const hasNext = endRow !== rowCount - 1;
|
|
15066
|
+
return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
|
|
15067
|
+
type: 0,
|
|
15068
|
+
hovered: false,
|
|
15069
|
+
hasPrevious,
|
|
15070
|
+
hasNext,
|
|
15071
|
+
top: position.startY - (hasPrevious ? 12 : 0),
|
|
15072
|
+
left: position.startX - 12
|
|
15073
|
+
}, () => this._commandService.executeCommand(_univerjs_sheets.SetSpecificRowsVisibleCommand.id, {
|
|
15074
|
+
unitId: workbook.getUnitId(),
|
|
15075
|
+
subUnitId: worksheet.getSheetId(),
|
|
15076
|
+
ranges: [range]
|
|
15077
|
+
}));
|
|
15078
|
+
});
|
|
15079
|
+
const colCount = worksheet.getColumnCount();
|
|
15080
|
+
const colShapes = hiddenColRanges.map((range) => {
|
|
15081
|
+
const { startColumn, endColumn } = range;
|
|
15082
|
+
const position = getCoordByCell(0, startColumn, scene, skeleton);
|
|
15083
|
+
const hasPrevious = startColumn !== 0;
|
|
15084
|
+
const hasNext = endColumn !== colCount - 1;
|
|
15085
|
+
return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
|
|
15086
|
+
type: 1,
|
|
15087
|
+
hovered: false,
|
|
15088
|
+
hasPrevious,
|
|
15089
|
+
hasNext,
|
|
15090
|
+
top: Math.max(skeleton.columnHeaderHeight, skeleton.columnHeaderHeightAndMarginTop) - 12,
|
|
15091
|
+
left: position.startX - (hasPrevious ? 12 : 0)
|
|
15092
|
+
}, () => this._commandService.executeCommand(_univerjs_sheets.SetSpecificColsVisibleCommand.id, {
|
|
15093
|
+
unitId: workbook.getUnitId(),
|
|
15094
|
+
subUnitId: worksheet.getSheetId(),
|
|
15095
|
+
ranges: [range]
|
|
15096
|
+
}));
|
|
15097
|
+
});
|
|
15098
|
+
scene.addObjects(colShapes, 12);
|
|
15099
|
+
scene.addObjects(rowShapes, 12);
|
|
15100
|
+
this._clearShapes();
|
|
15101
|
+
this._shapes = {
|
|
15102
|
+
cols: colShapes,
|
|
15103
|
+
rows: rowShapes
|
|
15104
|
+
};
|
|
15105
|
+
}
|
|
15106
|
+
_clearShapes() {
|
|
15107
|
+
this._shapes.cols.forEach((shape) => shape.dispose());
|
|
15108
|
+
this._shapes.rows.forEach((shape) => shape.dispose());
|
|
15109
|
+
this._shapes = {
|
|
15110
|
+
cols: [],
|
|
15111
|
+
rows: []
|
|
15112
|
+
};
|
|
15113
|
+
}
|
|
15114
|
+
_getSheetObject() {
|
|
15115
|
+
return getSheetObject(this._workbook, this._context);
|
|
15116
|
+
}
|
|
15117
|
+
};
|
|
15118
|
+
HeaderUnhideRenderController = __decorate([
|
|
15119
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)),
|
|
15120
|
+
__decorateParam(2, (0, _univerjs_core.Inject)(HeaderUnhideRangeService)),
|
|
15121
|
+
__decorateParam(3, _univerjs_core.ICommandService)
|
|
15122
|
+
], HeaderUnhideRenderController);
|
|
15123
|
+
|
|
15124
|
+
//#endregion
|
|
15125
|
+
//#region src/controllers/render-controllers/sheet.render-controller.ts
|
|
15126
|
+
const FRAME_STACK_THRESHOLD = 60;
|
|
15127
|
+
let SheetRenderController = class SheetRenderController extends _univerjs_core.RxDisposable {
|
|
15128
|
+
constructor(_context, _configService, _sheetSkeletonManagerService, _sheetRenderService, _commandService, _telemetryService) {
|
|
15129
|
+
super();
|
|
15130
|
+
this._context = _context;
|
|
15131
|
+
this._configService = _configService;
|
|
15132
|
+
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
15133
|
+
this._sheetRenderService = _sheetRenderService;
|
|
15134
|
+
this._commandService = _commandService;
|
|
15135
|
+
this._telemetryService = _telemetryService;
|
|
15136
|
+
_defineProperty(this, "_renderMetric$", new rxjs.Subject());
|
|
15137
|
+
_defineProperty(this, "renderMetric$", this._renderMetric$.asObservable());
|
|
15138
|
+
_defineProperty(this, "_renderFrameTimeMetric", null);
|
|
15139
|
+
_defineProperty(this, "_renderFrameTags", {});
|
|
15140
|
+
_defineProperty(this, "_afterRenderMetric$", new rxjs.Subject());
|
|
15141
|
+
this._addNewRender();
|
|
15142
|
+
this._initRenderMetricSubscriber();
|
|
15143
|
+
}
|
|
15144
|
+
_addNewRender() {
|
|
15145
|
+
const { scene, engine, unit: workbook } = this._context;
|
|
15146
|
+
this._addComponent(workbook);
|
|
15147
|
+
this._initRerenderScheduler();
|
|
15148
|
+
this._initCommandListener();
|
|
15149
|
+
const worksheet = this._context.unit.getActiveSheet();
|
|
15150
|
+
if (!worksheet) throw new Error("No active sheet found");
|
|
15151
|
+
const sheetId = worksheet.getSheetId();
|
|
15152
|
+
this._sheetSkeletonManagerService.setCurrent({ sheetId });
|
|
15153
|
+
const frameFn = () => scene.render();
|
|
15154
|
+
this.disposeWithMe(this._context.activated$.subscribe((activated) => {
|
|
15155
|
+
if (activated) engine.runRenderLoop(frameFn);
|
|
15156
|
+
else engine.stopRenderLoop(frameFn);
|
|
15157
|
+
}));
|
|
15158
|
+
}
|
|
15159
|
+
_initRenderMetricSubscriber() {
|
|
15160
|
+
const { engine } = this._context;
|
|
15161
|
+
this.disposeWithMe(engine.beginFrame$.subscribe(() => {
|
|
15162
|
+
this._renderFrameTimeMetric = null;
|
|
15163
|
+
this._renderFrameTags = {};
|
|
15164
|
+
}));
|
|
15165
|
+
this.disposeWithMe(engine.endFrame$.subscribe(() => {
|
|
15166
|
+
if (this._renderFrameTimeMetric && Object.keys(this._renderFrameTimeMetric).filter((key) => key.startsWith(_univerjs_engine_render.SHEET_EXTENSION_PREFIX)).length > 0) this._afterRenderMetric$.next({
|
|
15167
|
+
frameTimeMetric: this._renderFrameTimeMetric,
|
|
15168
|
+
tags: this._renderFrameTags
|
|
15169
|
+
});
|
|
15170
|
+
}));
|
|
15171
|
+
this.disposeWithMe(engine.renderFrameTimeMetric$.subscribe(([key, value]) => {
|
|
15172
|
+
if (!this._renderFrameTimeMetric) this._renderFrameTimeMetric = {};
|
|
15173
|
+
if (!this._renderFrameTimeMetric[key]) this._renderFrameTimeMetric[key] = [];
|
|
15174
|
+
this._renderFrameTimeMetric[key].push(Math.round(value * 100) / 100);
|
|
15175
|
+
}));
|
|
15176
|
+
this.disposeWithMe(engine.renderFrameTags$.subscribe(([key, value]) => {
|
|
15177
|
+
this._renderFrameTags[key] = value;
|
|
15178
|
+
}));
|
|
15179
|
+
const frameInfoList = [];
|
|
15180
|
+
this.disposeWithMe(this._afterRenderMetric$.pipe((0, rxjs.withLatestFrom)(engine.endFrame$)).subscribe(([sceneRenderDetail, basicFrameTimeInfo]) => {
|
|
15181
|
+
frameInfoList.push({
|
|
15182
|
+
FPS: basicFrameTimeInfo.FPS,
|
|
15183
|
+
elapsedTime: basicFrameTimeInfo.elapsedTime,
|
|
15184
|
+
frameTime: Math.round(basicFrameTimeInfo.frameTime * 100) / 100,
|
|
15185
|
+
...sceneRenderDetail.frameTimeMetric,
|
|
15186
|
+
...sceneRenderDetail.tags
|
|
15187
|
+
});
|
|
15188
|
+
if (frameInfoList.length > FRAME_STACK_THRESHOLD) {
|
|
15189
|
+
this._captureRenderMetric(frameInfoList);
|
|
15190
|
+
frameInfoList.length = 0;
|
|
15191
|
+
}
|
|
15192
|
+
}));
|
|
15193
|
+
}
|
|
15194
|
+
/**
|
|
15195
|
+
* Send render metric to telemetry service
|
|
15196
|
+
* @param frameInfoList
|
|
15197
|
+
*/
|
|
15198
|
+
_captureRenderMetric(frameInfoList) {
|
|
15199
|
+
var _this$_telemetryServi;
|
|
15200
|
+
const filteredFrameInfo = frameInfoList;
|
|
15201
|
+
if (filteredFrameInfo.length === 0) return;
|
|
15202
|
+
const sumValueForNumListFields = (data) => {
|
|
15203
|
+
let totalSum = 0;
|
|
15204
|
+
const sums = Object.entries(data).filter(([_, value]) => Array.isArray(value)).map(([key]) => key).reduce((acc, key) => {
|
|
15205
|
+
acc[key] = data[key].reduce((sum, num) => sum + num, 0);
|
|
15206
|
+
return acc;
|
|
15207
|
+
}, {});
|
|
15208
|
+
Object.keys(data).filter((key) => key.startsWith(_univerjs_engine_render.SHEET_EXTENSION_PREFIX)).forEach((key) => {
|
|
15209
|
+
totalSum += sums[key];
|
|
15210
|
+
});
|
|
15211
|
+
return {
|
|
15212
|
+
...sums,
|
|
15213
|
+
extensionTotal: totalSum
|
|
15214
|
+
};
|
|
15215
|
+
};
|
|
15216
|
+
const frameTimeListAfterSum = frameInfoList.map((info) => {
|
|
15217
|
+
return {
|
|
15218
|
+
...info,
|
|
15219
|
+
...sumValueForNumListFields(info)
|
|
15220
|
+
};
|
|
15221
|
+
});
|
|
15222
|
+
const getSummaryStats = (list) => {
|
|
15223
|
+
return Object.entries(list[0]).filter(([key, _]) => !["elapsedTime"].includes(key)).filter(([_, value]) => typeof value === "number").map(([key]) => key).reduce((acc, key) => {
|
|
15224
|
+
const values = list.map((obj) => obj[key]);
|
|
15225
|
+
const max = Math.max(...values);
|
|
15226
|
+
const min = Math.min(...values);
|
|
15227
|
+
const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
|
|
15228
|
+
acc[key] = {
|
|
15229
|
+
max: Math.round(max * 100) / 100,
|
|
15230
|
+
min: Math.round(min * 100) / 100,
|
|
15231
|
+
avg: Math.round(avg * 100) / 100
|
|
15232
|
+
};
|
|
15233
|
+
return acc;
|
|
15234
|
+
}, {});
|
|
15235
|
+
};
|
|
15236
|
+
const summaryFrameStats = getSummaryStats(frameTimeListAfterSum);
|
|
15237
|
+
const elapsedTimeToStart = filteredFrameInfo[filteredFrameInfo.length - 1].elapsedTime;
|
|
15238
|
+
const telemetryData = {
|
|
15239
|
+
sheetId: this._context.unit.getActiveSheet().getSheetId(),
|
|
15240
|
+
unitId: this._context.unit.getUnitId(),
|
|
15241
|
+
elapsedTimeToStart,
|
|
15242
|
+
...summaryFrameStats
|
|
14863
15243
|
};
|
|
14864
15244
|
this._renderMetric$.next(telemetryData);
|
|
14865
15245
|
(_this$_telemetryServi = this._telemetryService) === null || _this$_telemetryServi === void 0 || _this$_telemetryServi.capture("sheet_render_cost", telemetryData);
|
|
@@ -15000,13 +15380,13 @@ let SheetRenderController = class SheetRenderController extends _univerjs_core.R
|
|
|
15000
15380
|
const spreadsheetRowHeader = components.get("__SpreadsheetRowHeader__");
|
|
15001
15381
|
const spreadsheetColumnHeader = components.get("__SpreadsheetColumnHeader__");
|
|
15002
15382
|
const spreadsheetLeftTopPlaceholder = components.get("__SpreadsheetLeftTopPlaceholder__");
|
|
15003
|
-
const
|
|
15383
|
+
const leftTopPlaceholderSize = getLeftTopPlaceholderSize(spreadsheetSkeleton);
|
|
15004
15384
|
spreadsheet === null || spreadsheet === void 0 || spreadsheet.updateSkeleton(spreadsheetSkeleton);
|
|
15005
15385
|
spreadsheetRowHeader === null || spreadsheetRowHeader === void 0 || spreadsheetRowHeader.updateSkeleton(spreadsheetSkeleton);
|
|
15006
15386
|
spreadsheetColumnHeader === null || spreadsheetColumnHeader === void 0 || spreadsheetColumnHeader.updateSkeleton(spreadsheetSkeleton);
|
|
15007
15387
|
spreadsheetLeftTopPlaceholder === null || spreadsheetLeftTopPlaceholder === void 0 || spreadsheetLeftTopPlaceholder.transformByState({
|
|
15008
|
-
width:
|
|
15009
|
-
height:
|
|
15388
|
+
width: leftTopPlaceholderSize.width,
|
|
15389
|
+
height: leftTopPlaceholderSize.height
|
|
15010
15390
|
});
|
|
15011
15391
|
}));
|
|
15012
15392
|
}
|
|
@@ -15126,6 +15506,13 @@ SheetRenderController = __decorate([
|
|
|
15126
15506
|
__decorateParam(4, _univerjs_core.ICommandService),
|
|
15127
15507
|
__decorateParam(5, (0, _univerjs_core.Optional)(_univerjs_telemetry.ITelemetryService))
|
|
15128
15508
|
], SheetRenderController);
|
|
15509
|
+
function getLeftTopPlaceholderSize(skeleton) {
|
|
15510
|
+
var _skeleton$rowHeaderWi, _skeleton$columnHeade;
|
|
15511
|
+
return {
|
|
15512
|
+
width: (_skeleton$rowHeaderWi = skeleton.rowHeaderWidthAndMarginLeft) !== null && _skeleton$rowHeaderWi !== void 0 ? _skeleton$rowHeaderWi : skeleton.rowHeaderWidth,
|
|
15513
|
+
height: (_skeleton$columnHeade = skeleton.columnHeaderHeightAndMarginTop) !== null && _skeleton$columnHeade !== void 0 ? _skeleton$columnHeade : skeleton.columnHeaderHeight
|
|
15514
|
+
};
|
|
15515
|
+
}
|
|
15129
15516
|
|
|
15130
15517
|
//#endregion
|
|
15131
15518
|
//#region src/components/border-panel/border-line/icons/BorderDashDot.tsx
|
|
@@ -16321,7 +16708,6 @@ function ClearSelectionContentMenuItemFactory(accessor) {
|
|
|
16321
16708
|
return {
|
|
16322
16709
|
id: _univerjs_sheets.ClearSelectionContentCommand.id,
|
|
16323
16710
|
type: _univerjs_ui.MenuItemType.BUTTON,
|
|
16324
|
-
icon: "ClearFormatDoubleIcon",
|
|
16325
16711
|
title: "rightClick.clearContent",
|
|
16326
16712
|
disabled$: getObservableWithExclusiveRange$(accessor, getCurrentRangeDisable$(accessor, {
|
|
16327
16713
|
workbookTypes: [_univerjs_sheets.WorkbookEditablePermission],
|
|
@@ -16335,7 +16721,6 @@ function ClearSelectionFormatMenuItemFactory(accessor) {
|
|
|
16335
16721
|
return {
|
|
16336
16722
|
id: _univerjs_sheets.ClearSelectionFormatCommand.id,
|
|
16337
16723
|
type: _univerjs_ui.MenuItemType.BUTTON,
|
|
16338
|
-
icon: "ClearFormatDoubleIcon",
|
|
16339
16724
|
title: "rightClick.clearFormat",
|
|
16340
16725
|
disabled$: getCurrentRangeDisable$(accessor, {
|
|
16341
16726
|
workbookTypes: [_univerjs_sheets.WorkbookEditablePermission],
|
|
@@ -16345,11 +16730,28 @@ function ClearSelectionFormatMenuItemFactory(accessor) {
|
|
|
16345
16730
|
hidden$: (0, _univerjs_ui.getMenuHiddenObservable)(accessor, _univerjs_core.UniverInstanceType.UNIVER_SHEET)
|
|
16346
16731
|
};
|
|
16347
16732
|
}
|
|
16348
|
-
function
|
|
16733
|
+
function ClearSelectionAllToolbarMenuItemFactory(accessor) {
|
|
16349
16734
|
return {
|
|
16350
16735
|
id: _univerjs_sheets.ClearSelectionAllCommand.id,
|
|
16351
16736
|
type: _univerjs_ui.MenuItemType.BUTTON,
|
|
16352
16737
|
icon: "ClearFormatDoubleIcon",
|
|
16738
|
+
tooltip: "rightClick.clearAll",
|
|
16739
|
+
disabled$: getObservableWithExclusiveRange$(accessor, getCurrentRangeDisable$(accessor, {
|
|
16740
|
+
workbookTypes: [_univerjs_sheets.WorkbookEditablePermission],
|
|
16741
|
+
worksheetTypes: [
|
|
16742
|
+
_univerjs_sheets.WorksheetEditPermission,
|
|
16743
|
+
_univerjs_sheets.WorksheetSetCellValuePermission,
|
|
16744
|
+
_univerjs_sheets.WorksheetSetCellStylePermission
|
|
16745
|
+
],
|
|
16746
|
+
rangeTypes: [_univerjs_sheets.RangeProtectionPermissionEditPoint]
|
|
16747
|
+
})),
|
|
16748
|
+
hidden$: (0, _univerjs_ui.getMenuHiddenObservable)(accessor, _univerjs_core.UniverInstanceType.UNIVER_SHEET)
|
|
16749
|
+
};
|
|
16750
|
+
}
|
|
16751
|
+
function ClearSelectionAllMenuItemFactory(accessor) {
|
|
16752
|
+
return {
|
|
16753
|
+
id: _univerjs_sheets.ClearSelectionAllCommand.id,
|
|
16754
|
+
type: _univerjs_ui.MenuItemType.BUTTON,
|
|
16353
16755
|
title: "rightClick.clearAll",
|
|
16354
16756
|
tooltip: "rightClick.clearAll",
|
|
16355
16757
|
disabled$: getObservableWithExclusiveRange$(accessor, getCurrentRangeDisable$(accessor, {
|
|
@@ -18646,7 +19048,7 @@ const menuSchema = {
|
|
|
18646
19048
|
},
|
|
18647
19049
|
[_univerjs_sheets.ClearSelectionAllCommand.id]: {
|
|
18648
19050
|
order: 3,
|
|
18649
|
-
menuItemFactory:
|
|
19051
|
+
menuItemFactory: ClearSelectionAllToolbarMenuItemFactory
|
|
18650
19052
|
}
|
|
18651
19053
|
},
|
|
18652
19054
|
[_univerjs_ui.RibbonStartGroup.FORMAT]: {
|
|
@@ -23990,7 +24392,7 @@ const useHighlightRange = (ranges = []) => {
|
|
|
23990
24392
|
//#endregion
|
|
23991
24393
|
//#region package.json
|
|
23992
24394
|
var name = "@univerjs/sheets-ui";
|
|
23993
|
-
var version = "0.
|
|
24395
|
+
var version = "0.23.0-insiders.20260522-e8f2a3b";
|
|
23994
24396
|
|
|
23995
24397
|
//#endregion
|
|
23996
24398
|
//#region src/services/cell-alert-manager.service.ts
|
|
@@ -26784,28 +27186,30 @@ var RangeProtectionRenderExtension = class extends _univerjs_engine_render.Sheet
|
|
|
26784
27186
|
getShadowStrategy() {
|
|
26785
27187
|
return this._shadowStrategy;
|
|
26786
27188
|
}
|
|
26787
|
-
draw(ctx, _parentScale, spreadsheetSkeleton) {
|
|
27189
|
+
draw(ctx, _parentScale, spreadsheetSkeleton, diffRanges) {
|
|
26788
27190
|
const { worksheet } = spreadsheetSkeleton;
|
|
26789
27191
|
if (!worksheet) return;
|
|
26790
27192
|
ctx.save();
|
|
26791
27193
|
if (!this._pattern) this._pattern = ctx.createPattern(this._img, "repeat");
|
|
26792
27194
|
this.renderCache.clear();
|
|
26793
|
-
|
|
26794
|
-
|
|
26795
|
-
|
|
26796
|
-
|
|
26797
|
-
|
|
26798
|
-
|
|
26799
|
-
|
|
26800
|
-
|
|
26801
|
-
if (this.
|
|
26802
|
-
|
|
26803
|
-
|
|
26804
|
-
|
|
26805
|
-
|
|
26806
|
-
|
|
26807
|
-
|
|
26808
|
-
|
|
27195
|
+
((diffRanges === null || diffRanges === void 0 ? void 0 : diffRanges.length) ? diffRanges : [spreadsheetSkeleton.rowColumnSegment]).forEach((range) => {
|
|
27196
|
+
_univerjs_core.Range.foreach(range, (row, col) => {
|
|
27197
|
+
if (!worksheet.getRowVisible(row) || !worksheet.getColVisible(col)) return;
|
|
27198
|
+
const { selectionProtection = [] } = worksheet.getCell(row, col) || {};
|
|
27199
|
+
if (!this._pattern) return;
|
|
27200
|
+
ctx.fillStyle = this._pattern;
|
|
27201
|
+
selectionProtection.forEach((config) => {
|
|
27202
|
+
if (!config.ruleId) return;
|
|
27203
|
+
if (this.shouldRender(config)) {
|
|
27204
|
+
if (this.renderCache.has(config.ruleId)) return;
|
|
27205
|
+
this.renderCache.add(config.ruleId);
|
|
27206
|
+
config.ranges.forEach((range) => {
|
|
27207
|
+
const start = spreadsheetSkeleton.getCellWithCoordByIndex(range.startRow, range.startColumn, false);
|
|
27208
|
+
const end = spreadsheetSkeleton.getCellWithCoordByIndex(range.endRow, range.endColumn, false);
|
|
27209
|
+
ctx.fillRect(start.startX, start.startY, end.endX - start.startX, end.endY - start.startY);
|
|
27210
|
+
});
|
|
27211
|
+
}
|
|
27212
|
+
});
|
|
26809
27213
|
});
|
|
26810
27214
|
});
|
|
26811
27215
|
ctx.restore();
|
|
@@ -26891,690 +27295,394 @@ var WorksheetProtectionRenderExtension = class extends _univerjs_engine_render.S
|
|
|
26891
27295
|
getShadowStrategy() {
|
|
26892
27296
|
return this._shadowStrategy;
|
|
26893
27297
|
}
|
|
26894
|
-
setZIndex(zIndex) {
|
|
26895
|
-
this.Z_INDEX = zIndex;
|
|
26896
|
-
}
|
|
26897
|
-
};
|
|
26898
|
-
|
|
26899
|
-
//#endregion
|
|
26900
|
-
//#region src/controllers/permission/sheet-permission-render.controller.ts
|
|
26901
|
-
let SheetPermissionRenderManagerController = class SheetPermissionRenderManagerController extends _univerjs_core.Disposable {
|
|
26902
|
-
constructor(_injector, _componentManager) {
|
|
26903
|
-
super();
|
|
26904
|
-
this._injector = _injector;
|
|
26905
|
-
this._componentManager = _componentManager;
|
|
26906
|
-
this._init();
|
|
26907
|
-
}
|
|
26908
|
-
_init() {
|
|
26909
|
-
this._initComponents();
|
|
26910
|
-
this._initUiPartComponents();
|
|
26911
|
-
}
|
|
26912
|
-
_initComponents() {
|
|
26913
|
-
[
|
|
26914
|
-
[permissionMenuIconKey, _univerjs_icons.ProtectIcon],
|
|
26915
|
-
[permissionDeleteIconKey, _univerjs_icons.DeleteIcon],
|
|
26916
|
-
[permissionEditIconKey, _univerjs_icons.WriteIcon],
|
|
26917
|
-
[permissionCheckIconKey, _univerjs_icons.CheckMarkIcon],
|
|
26918
|
-
[permissionLockIconKey, _univerjs_icons.LockIcon],
|
|
26919
|
-
[UNIVER_SHEET_PERMISSION_PANEL, SheetPermissionPanel],
|
|
26920
|
-
[UNIVER_SHEET_PERMISSION_USER_DIALOG, SheetPermissionUserDialog],
|
|
26921
|
-
[UNIVER_SHEET_PERMISSION_DIALOG, SheetPermissionDialog],
|
|
26922
|
-
[UNIVER_SHEET_PERMISSION_ALERT_DIALOG, AlertDialog]
|
|
26923
|
-
].forEach(([key, comp]) => {
|
|
26924
|
-
this.disposeWithMe(this._componentManager.register(key, comp));
|
|
26925
|
-
});
|
|
26926
|
-
}
|
|
26927
|
-
_initUiPartComponents() {
|
|
26928
|
-
const config = this._injector.get(_univerjs_core.IConfigService).getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
|
|
26929
|
-
if (config === null || config === void 0 ? void 0 : config.protectedRangeUserSelector) {
|
|
26930
|
-
const { component, framework } = config.protectedRangeUserSelector;
|
|
26931
|
-
this.disposeWithMe(this._componentManager.register(UNIVER_SHEET_PERMISSION_USER_PART, component, { framework }));
|
|
26932
|
-
}
|
|
26933
|
-
}
|
|
26934
|
-
};
|
|
26935
|
-
SheetPermissionRenderManagerController = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_core.Injector)), __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_ui.ComponentManager))], SheetPermissionRenderManagerController);
|
|
26936
|
-
let SheetPermissionRenderController = class SheetPermissionRenderController extends _univerjs_core.Disposable {
|
|
26937
|
-
constructor(_context, _rangeProtectionRuleModel, _sheetSkeletonManagerService, _permissionService, _configService) {
|
|
26938
|
-
super();
|
|
26939
|
-
this._context = _context;
|
|
26940
|
-
this._rangeProtectionRuleModel = _rangeProtectionRuleModel;
|
|
26941
|
-
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
26942
|
-
this._permissionService = _permissionService;
|
|
26943
|
-
this._configService = _configService;
|
|
26944
|
-
_defineProperty(this, "_rangeProtectionCanViewRenderExtension", void 0);
|
|
26945
|
-
_defineProperty(this, "_rangeProtectionCanNotViewRenderExtension", void 0);
|
|
26946
|
-
const config = this._configService.getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
|
|
26947
|
-
const shadowStrategy = convertToShadowStrategy(config === null || config === void 0 ? void 0 : config.protectedRangeShadow);
|
|
26948
|
-
this._rangeProtectionCanViewRenderExtension = new RangeProtectionCanViewRenderExtension(shadowStrategy);
|
|
26949
|
-
this._rangeProtectionCanNotViewRenderExtension = new RangeProtectionCanNotViewRenderExtension(shadowStrategy);
|
|
26950
|
-
this._initSkeleton();
|
|
26951
|
-
this._initRender();
|
|
26952
|
-
this.disposeWithMe(this._rangeProtectionRuleModel.ruleChange$.subscribe((info) => {
|
|
26953
|
-
var _info$oldRule, _info$oldRule2;
|
|
26954
|
-
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();
|
|
26955
|
-
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();
|
|
26956
|
-
}));
|
|
26957
|
-
}
|
|
26958
|
-
_initRender() {
|
|
26959
|
-
const spreadsheetRender = this._context.mainComponent;
|
|
26960
|
-
if (spreadsheetRender) {
|
|
26961
|
-
if (!spreadsheetRender.getExtensionByKey("RANGE_PROTECTION_CAN_VIEW_RENDER_EXTENSION_KEY")) spreadsheetRender.register(this._rangeProtectionCanViewRenderExtension);
|
|
26962
|
-
if (!spreadsheetRender.getExtensionByKey("RANGE_PROTECTION_CAN_NOT_VIEW_RENDER_EXTENSION_KEY")) spreadsheetRender.register(this._rangeProtectionCanNotViewRenderExtension);
|
|
26963
|
-
}
|
|
26964
|
-
}
|
|
26965
|
-
_initSkeleton() {
|
|
26966
|
-
const markDirtySkeleton = () => {
|
|
26967
|
-
var _this$_context$mainCo;
|
|
26968
|
-
this._sheetSkeletonManagerService.reCalculate();
|
|
26969
|
-
(_this$_context$mainCo = this._context.mainComponent) === null || _this$_context$mainCo === void 0 || _this$_context$mainCo.makeDirty();
|
|
26970
|
-
};
|
|
26971
|
-
this.disposeWithMe((0, rxjs.merge)(this._permissionService.permissionPointUpdate$.pipe((0, rxjs.throttleTime)(300, void 0, { trailing: true })), this._rangeProtectionRuleModel.rangeRuleInitStateChange$, this._rangeProtectionRuleModel.ruleChange$).pipe().subscribe(markDirtySkeleton));
|
|
26972
|
-
}
|
|
26973
|
-
};
|
|
26974
|
-
SheetPermissionRenderController = __decorate([
|
|
26975
|
-
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_sheets.RangeProtectionRuleModel)),
|
|
26976
|
-
__decorateParam(2, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)),
|
|
26977
|
-
__decorateParam(3, _univerjs_core.IPermissionService),
|
|
26978
|
-
__decorateParam(4, _univerjs_core.IConfigService)
|
|
26979
|
-
], SheetPermissionRenderController);
|
|
26980
|
-
let WorksheetProtectionRenderController = class WorksheetProtectionRenderController extends _univerjs_core.Disposable {
|
|
26981
|
-
constructor(_context, _renderManagerService, _sheetSkeletonManagerService, _worksheetProtectionRuleModel, _configService) {
|
|
26982
|
-
super();
|
|
26983
|
-
this._context = _context;
|
|
26984
|
-
this._renderManagerService = _renderManagerService;
|
|
26985
|
-
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
26986
|
-
this._worksheetProtectionRuleModel = _worksheetProtectionRuleModel;
|
|
26987
|
-
this._configService = _configService;
|
|
26988
|
-
_defineProperty(this, "_worksheetProtectionRenderExtension", void 0);
|
|
26989
|
-
const config = this._configService.getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
|
|
26990
|
-
const shadowStrategy = convertToShadowStrategy(config === null || config === void 0 ? void 0 : config.protectedRangeShadow);
|
|
26991
|
-
this._worksheetProtectionRenderExtension = new WorksheetProtectionRenderExtension(shadowStrategy);
|
|
26992
|
-
this._initSkeleton();
|
|
26993
|
-
if (shadowStrategy === "none") return;
|
|
26994
|
-
this._initRender();
|
|
26995
|
-
}
|
|
26996
|
-
_initRender() {
|
|
26997
|
-
const renderId = this._context.unitId;
|
|
26998
|
-
const render = renderId && this._renderManagerService.getRenderById(renderId);
|
|
26999
|
-
const spreadsheetRender = render && render.mainComponent;
|
|
27000
|
-
if (spreadsheetRender) {
|
|
27001
|
-
if (!spreadsheetRender.getExtensionByKey("worksheet-protection")) spreadsheetRender.register(this._worksheetProtectionRenderExtension);
|
|
27002
|
-
}
|
|
27003
|
-
}
|
|
27004
|
-
_initSkeleton() {
|
|
27005
|
-
const markDirtySkeleton = () => {
|
|
27006
|
-
var _this$_context$mainCo2;
|
|
27007
|
-
this._sheetSkeletonManagerService.reCalculate();
|
|
27008
|
-
(_this$_context$mainCo2 = this._context.mainComponent) === null || _this$_context$mainCo2 === void 0 || _this$_context$mainCo2.makeDirty();
|
|
27009
|
-
};
|
|
27010
|
-
this.disposeWithMe((0, rxjs.merge)(this._worksheetProtectionRuleModel.worksheetRuleInitStateChange$).pipe().subscribe(markDirtySkeleton));
|
|
27011
|
-
}
|
|
27012
|
-
};
|
|
27013
|
-
WorksheetProtectionRenderController = __decorate([
|
|
27014
|
-
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_engine_render.IRenderManagerService)),
|
|
27015
|
-
__decorateParam(2, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)),
|
|
27016
|
-
__decorateParam(3, (0, _univerjs_core.Inject)(_univerjs_sheets.WorksheetProtectionRuleModel)),
|
|
27017
|
-
__decorateParam(4, (0, _univerjs_core.Inject)(_univerjs_core.IConfigService))
|
|
27018
|
-
], WorksheetProtectionRenderController);
|
|
27019
|
-
|
|
27020
|
-
//#endregion
|
|
27021
|
-
//#region src/controllers/render-controllers/clipboard.render-controller.ts
|
|
27022
|
-
let ClipboardRenderController = class ClipboardRenderController extends _univerjs_core.Disposable {
|
|
27023
|
-
constructor(_context, _sheetSkeletonManagerService, _sheetClipboardService, _sheetClipboardController) {
|
|
27024
|
-
super();
|
|
27025
|
-
this._context = _context;
|
|
27026
|
-
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
27027
|
-
this._sheetClipboardService = _sheetClipboardService;
|
|
27028
|
-
this._sheetClipboardController = _sheetClipboardController;
|
|
27029
|
-
this._initialize();
|
|
27030
|
-
}
|
|
27031
|
-
_initialize() {
|
|
27032
|
-
this.disposeWithMe((0, _univerjs_core.toDisposable)(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((skeleton) => {
|
|
27033
|
-
if (!(skeleton === null || skeleton === void 0 ? void 0 : skeleton.unitId)) return;
|
|
27034
|
-
if (!this._sheetClipboardService.getPasteMenuVisible()) return;
|
|
27035
|
-
const pasteOptionsCache = this._sheetClipboardService.getPasteOptionsCache();
|
|
27036
|
-
const menuUnitId = pasteOptionsCache === null || pasteOptionsCache === void 0 ? void 0 : pasteOptionsCache.target.unitId;
|
|
27037
|
-
if (skeleton.unitId === menuUnitId) this._sheetClipboardController.refreshOptionalPaste();
|
|
27038
|
-
})));
|
|
27039
|
-
}
|
|
27040
|
-
};
|
|
27041
|
-
ClipboardRenderController = __decorate([
|
|
27042
|
-
__decorateParam(1, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)),
|
|
27043
|
-
__decorateParam(2, ISheetClipboardService),
|
|
27044
|
-
__decorateParam(3, (0, _univerjs_core.Inject)(SheetClipboardController))
|
|
27045
|
-
], ClipboardRenderController);
|
|
27046
|
-
|
|
27047
|
-
//#endregion
|
|
27048
|
-
//#region src/controllers/render-controllers/format-painter.render-controller.ts
|
|
27049
|
-
let FormatPainterRenderController = class FormatPainterRenderController extends _univerjs_core.Disposable {
|
|
27050
|
-
constructor(_context, _formatPainterService, _selectionRenderService, _commandService) {
|
|
27051
|
-
super();
|
|
27052
|
-
this._context = _context;
|
|
27053
|
-
this._formatPainterService = _formatPainterService;
|
|
27054
|
-
this._selectionRenderService = _selectionRenderService;
|
|
27055
|
-
this._commandService = _commandService;
|
|
27056
|
-
this._initialize();
|
|
27057
|
-
}
|
|
27058
|
-
_initialize() {
|
|
27059
|
-
this._bindFormatPainterStatus();
|
|
27060
|
-
this._commandExecutedListener();
|
|
27061
|
-
}
|
|
27062
|
-
_commandExecutedListener() {
|
|
27063
|
-
this.disposeWithMe(this._selectionRenderService.selectionMoveEnd$.subscribe((selections) => {
|
|
27064
|
-
if (this._formatPainterService.getStatus() !== 0) {
|
|
27065
|
-
var _this$_context$unit$g;
|
|
27066
|
-
const { rangeWithCoord } = selections[selections.length - 1];
|
|
27067
|
-
this._commandService.executeCommand(ApplyFormatPainterCommand.id, {
|
|
27068
|
-
unitId: this._context.unitId,
|
|
27069
|
-
subUnitId: ((_this$_context$unit$g = this._context.unit.getActiveSheet()) === null || _this$_context$unit$g === void 0 ? void 0 : _this$_context$unit$g.getSheetId()) || "",
|
|
27070
|
-
range: {
|
|
27071
|
-
startRow: rangeWithCoord.startRow,
|
|
27072
|
-
startColumn: rangeWithCoord.startColumn,
|
|
27073
|
-
endRow: rangeWithCoord.endRow,
|
|
27074
|
-
endColumn: rangeWithCoord.endColumn
|
|
27075
|
-
}
|
|
27076
|
-
});
|
|
27077
|
-
if (this._formatPainterService.getStatus() === 1) this._commandService.executeCommand(SetOnceFormatPainterCommand.id);
|
|
27078
|
-
}
|
|
27079
|
-
}));
|
|
27080
|
-
}
|
|
27081
|
-
_bindFormatPainterStatus() {
|
|
27082
|
-
this.disposeWithMe((0, _univerjs_core.toDisposable)(this._formatPainterService.status$.subscribe((status) => {
|
|
27083
|
-
const scene = this._context.scene;
|
|
27084
|
-
if (!scene) return;
|
|
27085
|
-
if (status !== 0) scene.setDefaultCursor(_univerjs_engine_render.CURSOR_TYPE.CELL);
|
|
27086
|
-
else scene.setDefaultCursor(_univerjs_engine_render.CURSOR_TYPE.DEFAULT);
|
|
27087
|
-
})));
|
|
27088
|
-
}
|
|
27089
|
-
};
|
|
27090
|
-
FormatPainterRenderController = __decorate([
|
|
27091
|
-
__decorateParam(1, IFormatPainterService),
|
|
27092
|
-
__decorateParam(2, ISheetSelectionRenderService),
|
|
27093
|
-
__decorateParam(3, _univerjs_core.ICommandService)
|
|
27094
|
-
], FormatPainterRenderController);
|
|
27298
|
+
setZIndex(zIndex) {
|
|
27299
|
+
this.Z_INDEX = zIndex;
|
|
27300
|
+
}
|
|
27301
|
+
};
|
|
27095
27302
|
|
|
27096
27303
|
//#endregion
|
|
27097
|
-
//#region src/
|
|
27098
|
-
|
|
27099
|
-
|
|
27100
|
-
|
|
27101
|
-
|
|
27102
|
-
|
|
27103
|
-
|
|
27104
|
-
_defineProperty(this, "_size", 12);
|
|
27105
|
-
_defineProperty(this, "_iconRatio", .4);
|
|
27106
|
-
_defineProperty(this, "_mode", 0);
|
|
27107
|
-
this.setShapeProps(props);
|
|
27304
|
+
//#region src/controllers/permission/sheet-permission-render.controller.ts
|
|
27305
|
+
let SheetPermissionRenderManagerController = class SheetPermissionRenderManagerController extends _univerjs_core.Disposable {
|
|
27306
|
+
constructor(_injector, _componentManager) {
|
|
27307
|
+
super();
|
|
27308
|
+
this._injector = _injector;
|
|
27309
|
+
this._componentManager = _componentManager;
|
|
27310
|
+
this._init();
|
|
27108
27311
|
}
|
|
27109
|
-
|
|
27110
|
-
|
|
27111
|
-
|
|
27112
|
-
this.transformByState({
|
|
27113
|
-
width: this._size,
|
|
27114
|
-
height: this._size
|
|
27115
|
-
});
|
|
27312
|
+
_init() {
|
|
27313
|
+
this._initComponents();
|
|
27314
|
+
this._initUiPartComponents();
|
|
27116
27315
|
}
|
|
27117
|
-
|
|
27118
|
-
|
|
27119
|
-
|
|
27120
|
-
|
|
27121
|
-
|
|
27122
|
-
|
|
27123
|
-
|
|
27124
|
-
|
|
27125
|
-
|
|
27126
|
-
|
|
27127
|
-
|
|
27128
|
-
|
|
27129
|
-
|
|
27130
|
-
{
|
|
27131
|
-
x: -left + this._size / 2,
|
|
27132
|
-
y: -top + this._size / 2
|
|
27133
|
-
},
|
|
27134
|
-
{
|
|
27135
|
-
x: left + this._size / 2,
|
|
27136
|
-
y: -top + this._size / 2
|
|
27137
|
-
},
|
|
27138
|
-
{
|
|
27139
|
-
x: this._size / 2,
|
|
27140
|
-
y: iconSize + this._size / 2
|
|
27141
|
-
}
|
|
27142
|
-
]],
|
|
27143
|
-
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
27316
|
+
_initComponents() {
|
|
27317
|
+
[
|
|
27318
|
+
[permissionMenuIconKey, _univerjs_icons.ProtectIcon],
|
|
27319
|
+
[permissionDeleteIconKey, _univerjs_icons.DeleteIcon],
|
|
27320
|
+
[permissionEditIconKey, _univerjs_icons.WriteIcon],
|
|
27321
|
+
[permissionCheckIconKey, _univerjs_icons.CheckMarkIcon],
|
|
27322
|
+
[permissionLockIconKey, _univerjs_icons.LockIcon],
|
|
27323
|
+
[UNIVER_SHEET_PERMISSION_PANEL, SheetPermissionPanel],
|
|
27324
|
+
[UNIVER_SHEET_PERMISSION_USER_DIALOG, SheetPermissionUserDialog],
|
|
27325
|
+
[UNIVER_SHEET_PERMISSION_DIALOG, SheetPermissionDialog],
|
|
27326
|
+
[UNIVER_SHEET_PERMISSION_ALERT_DIALOG, AlertDialog]
|
|
27327
|
+
].forEach(([key, comp]) => {
|
|
27328
|
+
this.disposeWithMe(this._componentManager.register(key, comp));
|
|
27144
27329
|
});
|
|
27145
27330
|
}
|
|
27331
|
+
_initUiPartComponents() {
|
|
27332
|
+
const config = this._injector.get(_univerjs_core.IConfigService).getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
|
|
27333
|
+
if (config === null || config === void 0 ? void 0 : config.protectedRangeUserSelector) {
|
|
27334
|
+
const { component, framework } = config.protectedRangeUserSelector;
|
|
27335
|
+
this.disposeWithMe(this._componentManager.register(UNIVER_SHEET_PERMISSION_USER_PART, component, { framework }));
|
|
27336
|
+
}
|
|
27337
|
+
}
|
|
27146
27338
|
};
|
|
27147
|
-
|
|
27148
|
-
|
|
27149
|
-
|
|
27150
|
-
const HEADER_MENU_CONTROLLER_SHAPE = "__SpreadsheetHeaderMenuSHAPEControllerShape__";
|
|
27151
|
-
const HEADER_MENU_CONTROLLER_MENU = "__SpreadsheetHeaderMenuMAINControllerShape__";
|
|
27152
|
-
const HEADER_MENU_CONTROLLER_SHAPE_COLOR = "rgba(0, 0, 0, 0.1)";
|
|
27153
|
-
let HeaderMenuRenderController = class HeaderMenuRenderController extends _univerjs_core.Disposable {
|
|
27154
|
-
constructor(_context, _sheetSkeletonManagerService, _contextMenuService, _commandService, _selectionManagerService) {
|
|
27339
|
+
SheetPermissionRenderManagerController = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_core.Injector)), __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_ui.ComponentManager))], SheetPermissionRenderManagerController);
|
|
27340
|
+
let SheetPermissionRenderController = class SheetPermissionRenderController extends _univerjs_core.Disposable {
|
|
27341
|
+
constructor(_context, _rangeProtectionRuleModel, _sheetSkeletonManagerService, _permissionService, _configService) {
|
|
27155
27342
|
super();
|
|
27156
27343
|
this._context = _context;
|
|
27344
|
+
this._rangeProtectionRuleModel = _rangeProtectionRuleModel;
|
|
27157
27345
|
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
27158
|
-
this.
|
|
27159
|
-
this.
|
|
27160
|
-
this
|
|
27161
|
-
_defineProperty(this, "
|
|
27162
|
-
|
|
27163
|
-
|
|
27164
|
-
|
|
27165
|
-
|
|
27166
|
-
this.
|
|
27167
|
-
|
|
27168
|
-
|
|
27169
|
-
|
|
27170
|
-
|
|
27171
|
-
|
|
27172
|
-
|
|
27173
|
-
this._headerPointerSubs = null;
|
|
27346
|
+
this._permissionService = _permissionService;
|
|
27347
|
+
this._configService = _configService;
|
|
27348
|
+
_defineProperty(this, "_rangeProtectionCanViewRenderExtension", void 0);
|
|
27349
|
+
_defineProperty(this, "_rangeProtectionCanNotViewRenderExtension", void 0);
|
|
27350
|
+
const config = this._configService.getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
|
|
27351
|
+
const shadowStrategy = convertToShadowStrategy(config === null || config === void 0 ? void 0 : config.protectedRangeShadow);
|
|
27352
|
+
this._rangeProtectionCanViewRenderExtension = new RangeProtectionCanViewRenderExtension(shadowStrategy);
|
|
27353
|
+
this._rangeProtectionCanNotViewRenderExtension = new RangeProtectionCanNotViewRenderExtension(shadowStrategy);
|
|
27354
|
+
this._initSkeleton();
|
|
27355
|
+
this._initRender();
|
|
27356
|
+
this.disposeWithMe(this._rangeProtectionRuleModel.ruleChange$.subscribe((info) => {
|
|
27357
|
+
var _info$oldRule, _info$oldRule2;
|
|
27358
|
+
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();
|
|
27359
|
+
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();
|
|
27360
|
+
}));
|
|
27174
27361
|
}
|
|
27175
|
-
|
|
27176
|
-
const
|
|
27177
|
-
|
|
27178
|
-
|
|
27179
|
-
|
|
27180
|
-
}
|
|
27181
|
-
this._hoverMenu = new HeaderMenuShape(HEADER_MENU_CONTROLLER_MENU, {
|
|
27182
|
-
zIndex: 100,
|
|
27183
|
-
visible: false
|
|
27184
|
-
});
|
|
27185
|
-
scene.addObjects([this._hoverRect, this._hoverMenu], 10);
|
|
27186
|
-
this._initialHover(0);
|
|
27187
|
-
this._initialHover(1);
|
|
27188
|
-
this._initialHoverMenu();
|
|
27362
|
+
_initRender() {
|
|
27363
|
+
const spreadsheetRender = this._context.mainComponent;
|
|
27364
|
+
if (spreadsheetRender) {
|
|
27365
|
+
if (!spreadsheetRender.getExtensionByKey("RANGE_PROTECTION_CAN_VIEW_RENDER_EXTENSION_KEY")) spreadsheetRender.register(this._rangeProtectionCanViewRenderExtension);
|
|
27366
|
+
if (!spreadsheetRender.getExtensionByKey("RANGE_PROTECTION_CAN_NOT_VIEW_RENDER_EXTENSION_KEY")) spreadsheetRender.register(this._rangeProtectionCanNotViewRenderExtension);
|
|
27367
|
+
}
|
|
27189
27368
|
}
|
|
27190
|
-
|
|
27191
|
-
|
|
27192
|
-
|
|
27193
|
-
|
|
27194
|
-
|
|
27195
|
-
const pointerMoveHandler = (evt) => {
|
|
27196
|
-
var _this$_sheetSkeletonM;
|
|
27197
|
-
const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
|
|
27198
|
-
if (skeleton == null) return;
|
|
27199
|
-
const { rowHeaderWidth, columnHeaderHeight } = skeleton;
|
|
27200
|
-
const { startX, startY, endX, endY, column } = getCoordByOffset(evt.offsetX, evt.offsetY, this._context.scene, skeleton);
|
|
27201
|
-
if (initialType === 0) {
|
|
27202
|
-
var _this$_hoverRect2;
|
|
27203
|
-
(_this$_hoverRect2 = this._hoverRect) === null || _this$_hoverRect2 === void 0 || _this$_hoverRect2.transformByState({
|
|
27204
|
-
width: rowHeaderWidth,
|
|
27205
|
-
height: endY - startY,
|
|
27206
|
-
left: 0,
|
|
27207
|
-
top: startY
|
|
27208
|
-
});
|
|
27209
|
-
} else {
|
|
27210
|
-
var _this$_hoverRect3;
|
|
27211
|
-
this._currentColumn = column;
|
|
27212
|
-
(_this$_hoverRect3 = this._hoverRect) === null || _this$_hoverRect3 === void 0 || _this$_hoverRect3.transformByState({
|
|
27213
|
-
width: endX - startX,
|
|
27214
|
-
height: columnHeaderHeight,
|
|
27215
|
-
left: startX,
|
|
27216
|
-
top: 0
|
|
27217
|
-
});
|
|
27218
|
-
if (this._hoverMenu == null) return;
|
|
27219
|
-
if (endX - startX < columnHeaderHeight * 2) {
|
|
27220
|
-
this._hoverMenu.hide();
|
|
27221
|
-
return;
|
|
27222
|
-
}
|
|
27223
|
-
const menuSize = columnHeaderHeight * .8;
|
|
27224
|
-
this._hoverMenu.transformByState({
|
|
27225
|
-
left: endX - columnHeaderHeight,
|
|
27226
|
-
top: columnHeaderHeight / 2 - menuSize / 2
|
|
27227
|
-
});
|
|
27228
|
-
this._hoverMenu.setShapeProps({ size: menuSize });
|
|
27229
|
-
this._hoverMenu.show();
|
|
27230
|
-
}
|
|
27231
|
-
};
|
|
27232
|
-
const pointerEnterHandler = () => {
|
|
27233
|
-
var _this$_hoverRect4;
|
|
27234
|
-
(_this$_hoverRect4 = this._hoverRect) === null || _this$_hoverRect4 === void 0 || _this$_hoverRect4.show();
|
|
27235
|
-
};
|
|
27236
|
-
const pointerLeaveHandler = () => {
|
|
27237
|
-
var _this$_hoverRect5, _this$_hoverMenu2;
|
|
27238
|
-
(_this$_hoverRect5 = this._hoverRect) === null || _this$_hoverRect5 === void 0 || _this$_hoverRect5.hide();
|
|
27239
|
-
(_this$_hoverMenu2 = this._hoverMenu) === null || _this$_hoverMenu2 === void 0 || _this$_hoverMenu2.hide();
|
|
27369
|
+
_initSkeleton() {
|
|
27370
|
+
const markDirtySkeleton = () => {
|
|
27371
|
+
var _this$_context$mainCo;
|
|
27372
|
+
this._sheetSkeletonManagerService.reCalculate();
|
|
27373
|
+
(_this$_context$mainCo = this._context.mainComponent) === null || _this$_context$mainCo === void 0 || _this$_context$mainCo.makeDirty();
|
|
27240
27374
|
};
|
|
27241
|
-
this.
|
|
27242
|
-
const headerPointerMoveSub = eventBindingObject.onPointerMove$.subscribeEvent(pointerMoveHandler);
|
|
27243
|
-
const headerPointerEnterSub = eventBindingObject.onPointerEnter$.subscribeEvent(pointerEnterHandler);
|
|
27244
|
-
const headerPointerLeaveSub = eventBindingObject.onPointerLeave$.subscribeEvent(pointerLeaveHandler);
|
|
27245
|
-
(_this$_headerPointerS2 = this._headerPointerSubs) === null || _this$_headerPointerS2 === void 0 || _this$_headerPointerS2.add(headerPointerMoveSub);
|
|
27246
|
-
(_this$_headerPointerS3 = this._headerPointerSubs) === null || _this$_headerPointerS3 === void 0 || _this$_headerPointerS3.add(headerPointerEnterSub);
|
|
27247
|
-
(_this$_headerPointerS4 = this._headerPointerSubs) === null || _this$_headerPointerS4 === void 0 || _this$_headerPointerS4.add(headerPointerLeaveSub);
|
|
27375
|
+
this.disposeWithMe((0, rxjs.merge)(this._permissionService.permissionPointUpdate$.pipe((0, rxjs.throttleTime)(300, void 0, { trailing: true })), this._rangeProtectionRuleModel.rangeRuleInitStateChange$, this._rangeProtectionRuleModel.ruleChange$).pipe().subscribe(markDirtySkeleton));
|
|
27248
27376
|
}
|
|
27249
|
-
|
|
27250
|
-
|
|
27251
|
-
|
|
27252
|
-
|
|
27253
|
-
|
|
27254
|
-
|
|
27255
|
-
|
|
27256
|
-
|
|
27257
|
-
|
|
27258
|
-
|
|
27259
|
-
this.
|
|
27260
|
-
|
|
27261
|
-
|
|
27262
|
-
|
|
27263
|
-
|
|
27264
|
-
|
|
27265
|
-
|
|
27266
|
-
|
|
27267
|
-
this.
|
|
27268
|
-
|
|
27269
|
-
|
|
27270
|
-
|
|
27271
|
-
|
|
27272
|
-
|
|
27273
|
-
|
|
27274
|
-
|
|
27275
|
-
|
|
27276
|
-
|
|
27277
|
-
|
|
27278
|
-
|
|
27279
|
-
evt.stopPropagation();
|
|
27280
|
-
evt.preventDefault();
|
|
27281
|
-
this._contextMenuService.triggerContextMenu(evt, _univerjs_ui.ContextMenuPosition.COL_HEADER);
|
|
27282
|
-
});
|
|
27377
|
+
};
|
|
27378
|
+
SheetPermissionRenderController = __decorate([
|
|
27379
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_sheets.RangeProtectionRuleModel)),
|
|
27380
|
+
__decorateParam(2, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)),
|
|
27381
|
+
__decorateParam(3, _univerjs_core.IPermissionService),
|
|
27382
|
+
__decorateParam(4, _univerjs_core.IConfigService)
|
|
27383
|
+
], SheetPermissionRenderController);
|
|
27384
|
+
let WorksheetProtectionRenderController = class WorksheetProtectionRenderController extends _univerjs_core.Disposable {
|
|
27385
|
+
constructor(_context, _renderManagerService, _sheetSkeletonManagerService, _worksheetProtectionRuleModel, _configService) {
|
|
27386
|
+
super();
|
|
27387
|
+
this._context = _context;
|
|
27388
|
+
this._renderManagerService = _renderManagerService;
|
|
27389
|
+
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
27390
|
+
this._worksheetProtectionRuleModel = _worksheetProtectionRuleModel;
|
|
27391
|
+
this._configService = _configService;
|
|
27392
|
+
_defineProperty(this, "_worksheetProtectionRenderExtension", void 0);
|
|
27393
|
+
const config = this._configService.getConfig(SHEETS_UI_PLUGIN_CONFIG_KEY);
|
|
27394
|
+
const shadowStrategy = convertToShadowStrategy(config === null || config === void 0 ? void 0 : config.protectedRangeShadow);
|
|
27395
|
+
this._worksheetProtectionRenderExtension = new WorksheetProtectionRenderExtension(shadowStrategy);
|
|
27396
|
+
this._initSkeleton();
|
|
27397
|
+
if (shadowStrategy === "none") return;
|
|
27398
|
+
this._initRender();
|
|
27399
|
+
}
|
|
27400
|
+
_initRender() {
|
|
27401
|
+
const renderId = this._context.unitId;
|
|
27402
|
+
const render = renderId && this._renderManagerService.getRenderById(renderId);
|
|
27403
|
+
const spreadsheetRender = render && render.mainComponent;
|
|
27404
|
+
if (spreadsheetRender) {
|
|
27405
|
+
if (!spreadsheetRender.getExtensionByKey("worksheet-protection")) spreadsheetRender.register(this._worksheetProtectionRenderExtension);
|
|
27406
|
+
}
|
|
27283
27407
|
}
|
|
27284
|
-
|
|
27285
|
-
const
|
|
27286
|
-
|
|
27287
|
-
|
|
27288
|
-
|
|
27289
|
-
unitId: workbook.getUnitId(),
|
|
27290
|
-
subUnitId: worksheet.getSheetId(),
|
|
27291
|
-
selections: [{
|
|
27292
|
-
range: {
|
|
27293
|
-
startRow: 0,
|
|
27294
|
-
startColumn: column,
|
|
27295
|
-
endRow: worksheet.getRowCount() - 1,
|
|
27296
|
-
endColumn: column,
|
|
27297
|
-
rangeType: _univerjs_core.RANGE_TYPE.COLUMN
|
|
27298
|
-
},
|
|
27299
|
-
primary: {
|
|
27300
|
-
startRow: 0,
|
|
27301
|
-
startColumn: column,
|
|
27302
|
-
endRow: 0,
|
|
27303
|
-
endColumn: column,
|
|
27304
|
-
actualRow: 0,
|
|
27305
|
-
actualColumn: column,
|
|
27306
|
-
isMerged: false,
|
|
27307
|
-
isMergedMainCell: false
|
|
27308
|
-
},
|
|
27309
|
-
style: null
|
|
27310
|
-
}]
|
|
27408
|
+
_initSkeleton() {
|
|
27409
|
+
const markDirtySkeleton = () => {
|
|
27410
|
+
var _this$_context$mainCo2;
|
|
27411
|
+
this._sheetSkeletonManagerService.reCalculate();
|
|
27412
|
+
(_this$_context$mainCo2 = this._context.mainComponent) === null || _this$_context$mainCo2 === void 0 || _this$_context$mainCo2.makeDirty();
|
|
27311
27413
|
};
|
|
27414
|
+
this.disposeWithMe((0, rxjs.merge)(this._worksheetProtectionRuleModel.worksheetRuleInitStateChange$).pipe().subscribe(markDirtySkeleton));
|
|
27312
27415
|
}
|
|
27313
27416
|
};
|
|
27314
|
-
|
|
27315
|
-
__decorateParam(1, (0, _univerjs_core.Inject)(
|
|
27316
|
-
__decorateParam(2,
|
|
27317
|
-
__decorateParam(3, _univerjs_core.
|
|
27318
|
-
__decorateParam(4, (0, _univerjs_core.Inject)(
|
|
27319
|
-
],
|
|
27417
|
+
WorksheetProtectionRenderController = __decorate([
|
|
27418
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_engine_render.IRenderManagerService)),
|
|
27419
|
+
__decorateParam(2, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)),
|
|
27420
|
+
__decorateParam(3, (0, _univerjs_core.Inject)(_univerjs_sheets.WorksheetProtectionRuleModel)),
|
|
27421
|
+
__decorateParam(4, (0, _univerjs_core.Inject)(_univerjs_core.IConfigService))
|
|
27422
|
+
], WorksheetProtectionRenderController);
|
|
27320
27423
|
|
|
27321
27424
|
//#endregion
|
|
27322
|
-
//#region src/
|
|
27323
|
-
|
|
27324
|
-
|
|
27325
|
-
|
|
27326
|
-
|
|
27327
|
-
|
|
27328
|
-
|
|
27329
|
-
|
|
27330
|
-
|
|
27331
|
-
_defineProperty(this, "_hasPrevious", true);
|
|
27332
|
-
_defineProperty(this, "_hasNext", true);
|
|
27333
|
-
_defineProperty(this, "_unhideType", void 0);
|
|
27334
|
-
if (props) this.setShapeProps(props);
|
|
27335
|
-
this.onPointerEnter$.subscribeEvent(() => this.setShapeProps({ hovered: true }));
|
|
27336
|
-
this.onPointerLeave$.subscribeEvent(() => this.setShapeProps({ hovered: false }));
|
|
27337
|
-
this.onPointerDown$.subscribeEvent(() => onClick === null || onClick === void 0 ? void 0 : onClick());
|
|
27425
|
+
//#region src/controllers/render-controllers/clipboard.render-controller.ts
|
|
27426
|
+
let ClipboardRenderController = class ClipboardRenderController extends _univerjs_core.Disposable {
|
|
27427
|
+
constructor(_context, _sheetSkeletonManagerService, _sheetClipboardService, _sheetClipboardController) {
|
|
27428
|
+
super();
|
|
27429
|
+
this._context = _context;
|
|
27430
|
+
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
27431
|
+
this._sheetClipboardService = _sheetClipboardService;
|
|
27432
|
+
this._sheetClipboardController = _sheetClipboardController;
|
|
27433
|
+
this._initialize();
|
|
27338
27434
|
}
|
|
27339
|
-
|
|
27340
|
-
|
|
27341
|
-
|
|
27342
|
-
|
|
27343
|
-
|
|
27344
|
-
|
|
27345
|
-
|
|
27346
|
-
|
|
27347
|
-
});
|
|
27435
|
+
_initialize() {
|
|
27436
|
+
this.disposeWithMe((0, _univerjs_core.toDisposable)(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((skeleton) => {
|
|
27437
|
+
if (!(skeleton === null || skeleton === void 0 ? void 0 : skeleton.unitId)) return;
|
|
27438
|
+
if (!this._sheetClipboardService.getPasteMenuVisible()) return;
|
|
27439
|
+
const pasteOptionsCache = this._sheetClipboardService.getPasteOptionsCache();
|
|
27440
|
+
const menuUnitId = pasteOptionsCache === null || pasteOptionsCache === void 0 ? void 0 : pasteOptionsCache.target.unitId;
|
|
27441
|
+
if (skeleton.unitId === menuUnitId) this._sheetClipboardController.refreshOptionalPaste();
|
|
27442
|
+
})));
|
|
27348
27443
|
}
|
|
27349
|
-
|
|
27350
|
-
|
|
27351
|
-
|
|
27444
|
+
};
|
|
27445
|
+
ClipboardRenderController = __decorate([
|
|
27446
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)),
|
|
27447
|
+
__decorateParam(2, ISheetClipboardService),
|
|
27448
|
+
__decorateParam(3, (0, _univerjs_core.Inject)(SheetClipboardController))
|
|
27449
|
+
], ClipboardRenderController);
|
|
27450
|
+
|
|
27451
|
+
//#endregion
|
|
27452
|
+
//#region src/controllers/render-controllers/format-painter.render-controller.ts
|
|
27453
|
+
let FormatPainterRenderController = class FormatPainterRenderController extends _univerjs_core.Disposable {
|
|
27454
|
+
constructor(_context, _formatPainterService, _selectionRenderService, _commandService) {
|
|
27455
|
+
super();
|
|
27456
|
+
this._context = _context;
|
|
27457
|
+
this._formatPainterService = _formatPainterService;
|
|
27458
|
+
this._selectionRenderService = _selectionRenderService;
|
|
27459
|
+
this._commandService = _commandService;
|
|
27460
|
+
this._initialize();
|
|
27352
27461
|
}
|
|
27353
|
-
|
|
27354
|
-
|
|
27355
|
-
|
|
27356
|
-
height: this._size,
|
|
27357
|
-
stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
|
|
27358
|
-
fill: HEADER_MENU_BACKGROUND_COLOR
|
|
27359
|
-
});
|
|
27360
|
-
else _univerjs_engine_render.Rect.drawWith(ctx, {
|
|
27361
|
-
width: this._size,
|
|
27362
|
-
height: 2 * this._size,
|
|
27363
|
-
stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
|
|
27364
|
-
fill: HEADER_MENU_BACKGROUND_COLOR
|
|
27365
|
-
});
|
|
27366
|
-
const iconSize = this._size * .5 * this._iconRatio;
|
|
27367
|
-
const sixtyDegree = Math.PI / 3;
|
|
27368
|
-
const top = iconSize * Math.cos(sixtyDegree);
|
|
27369
|
-
const left = iconSize * Math.sin(sixtyDegree);
|
|
27370
|
-
if (this._hasPrevious) _univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
27371
|
-
pointsGroup: [[
|
|
27372
|
-
{
|
|
27373
|
-
x: this._size / 2,
|
|
27374
|
-
y: this._size / 2 - left
|
|
27375
|
-
},
|
|
27376
|
-
{
|
|
27377
|
-
x: this._size / 2 - left,
|
|
27378
|
-
y: this._size / 2 + top
|
|
27379
|
-
},
|
|
27380
|
-
{
|
|
27381
|
-
x: this._size / 2 + left,
|
|
27382
|
-
y: this._size / 2 + top
|
|
27383
|
-
}
|
|
27384
|
-
]],
|
|
27385
|
-
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
27386
|
-
});
|
|
27387
|
-
if (this._hasNext) {
|
|
27388
|
-
const offset = this._hasPrevious ? 3 : 1;
|
|
27389
|
-
_univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
27390
|
-
pointsGroup: [[
|
|
27391
|
-
{
|
|
27392
|
-
x: this._size / 2,
|
|
27393
|
-
y: this._size * offset / 2 + left
|
|
27394
|
-
},
|
|
27395
|
-
{
|
|
27396
|
-
x: this._size / 2 - left,
|
|
27397
|
-
y: this._size * offset / 2 - top
|
|
27398
|
-
},
|
|
27399
|
-
{
|
|
27400
|
-
x: this._size / 2 + left,
|
|
27401
|
-
y: this._size * offset / 2 - top
|
|
27402
|
-
}
|
|
27403
|
-
]],
|
|
27404
|
-
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
27405
|
-
});
|
|
27406
|
-
}
|
|
27462
|
+
_initialize() {
|
|
27463
|
+
this._bindFormatPainterStatus();
|
|
27464
|
+
this._commandExecutedListener();
|
|
27407
27465
|
}
|
|
27408
|
-
|
|
27409
|
-
|
|
27410
|
-
|
|
27411
|
-
|
|
27412
|
-
|
|
27413
|
-
|
|
27414
|
-
|
|
27415
|
-
|
|
27416
|
-
|
|
27417
|
-
|
|
27418
|
-
|
|
27419
|
-
|
|
27420
|
-
|
|
27421
|
-
height: this._size,
|
|
27422
|
-
stroke: HEADER_MENU_SHAPE_TRIANGLE_FILL,
|
|
27423
|
-
fill: HEADER_MENU_BACKGROUND_COLOR
|
|
27424
|
-
});
|
|
27425
|
-
const iconSize = this._size * .5 * this._iconRatio;
|
|
27426
|
-
const sixtyDegree = Math.PI / 3;
|
|
27427
|
-
const top = iconSize * Math.cos(sixtyDegree);
|
|
27428
|
-
const left = iconSize * Math.sin(sixtyDegree);
|
|
27429
|
-
if (this._hasPrevious) _univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
27430
|
-
pointsGroup: [[
|
|
27431
|
-
{
|
|
27432
|
-
x: -top + this._size / 2,
|
|
27433
|
-
y: this._size / 2
|
|
27434
|
-
},
|
|
27435
|
-
{
|
|
27436
|
-
x: this._size / 2 + left,
|
|
27437
|
-
y: this._size / 2 - left
|
|
27438
|
-
},
|
|
27439
|
-
{
|
|
27440
|
-
x: this._size / 2 + left,
|
|
27441
|
-
y: this._size / 2 + left
|
|
27442
|
-
}
|
|
27443
|
-
]],
|
|
27444
|
-
fill: HEADER_MENU_SHAPE_TRIANGLE_FILL
|
|
27445
|
-
});
|
|
27446
|
-
if (this._hasNext) {
|
|
27447
|
-
const offset = this._hasPrevious ? 3 : 1;
|
|
27448
|
-
_univerjs_engine_render.RegularPolygon.drawWith(ctx, {
|
|
27449
|
-
pointsGroup: [[
|
|
27450
|
-
{
|
|
27451
|
-
x: top + this._size * offset / 2,
|
|
27452
|
-
y: this._size / 2
|
|
27453
|
-
},
|
|
27454
|
-
{
|
|
27455
|
-
x: -left + this._size * offset / 2,
|
|
27456
|
-
y: this._size / 2 - left
|
|
27457
|
-
},
|
|
27458
|
-
{
|
|
27459
|
-
x: -left + this._size * offset / 2,
|
|
27460
|
-
y: this._size / 2 + left
|
|
27466
|
+
_commandExecutedListener() {
|
|
27467
|
+
this.disposeWithMe(this._selectionRenderService.selectionMoveEnd$.subscribe((selections) => {
|
|
27468
|
+
if (this._formatPainterService.getStatus() !== 0) {
|
|
27469
|
+
var _this$_context$unit$g;
|
|
27470
|
+
const { rangeWithCoord } = selections[selections.length - 1];
|
|
27471
|
+
this._commandService.executeCommand(ApplyFormatPainterCommand.id, {
|
|
27472
|
+
unitId: this._context.unitId,
|
|
27473
|
+
subUnitId: ((_this$_context$unit$g = this._context.unit.getActiveSheet()) === null || _this$_context$unit$g === void 0 ? void 0 : _this$_context$unit$g.getSheetId()) || "",
|
|
27474
|
+
range: {
|
|
27475
|
+
startRow: rangeWithCoord.startRow,
|
|
27476
|
+
startColumn: rangeWithCoord.startColumn,
|
|
27477
|
+
endRow: rangeWithCoord.endRow,
|
|
27478
|
+
endColumn: rangeWithCoord.endColumn
|
|
27461
27479
|
}
|
|
27462
|
-
|
|
27463
|
-
|
|
27464
|
-
}
|
|
27465
|
-
}
|
|
27480
|
+
});
|
|
27481
|
+
if (this._formatPainterService.getStatus() === 1) this._commandService.executeCommand(SetOnceFormatPainterCommand.id);
|
|
27482
|
+
}
|
|
27483
|
+
}));
|
|
27484
|
+
}
|
|
27485
|
+
_bindFormatPainterStatus() {
|
|
27486
|
+
this.disposeWithMe((0, _univerjs_core.toDisposable)(this._formatPainterService.status$.subscribe((status) => {
|
|
27487
|
+
const scene = this._context.scene;
|
|
27488
|
+
if (!scene) return;
|
|
27489
|
+
if (status !== 0) scene.setDefaultCursor(_univerjs_engine_render.CURSOR_TYPE.CELL);
|
|
27490
|
+
else scene.setDefaultCursor(_univerjs_engine_render.CURSOR_TYPE.DEFAULT);
|
|
27491
|
+
})));
|
|
27466
27492
|
}
|
|
27467
27493
|
};
|
|
27494
|
+
FormatPainterRenderController = __decorate([
|
|
27495
|
+
__decorateParam(1, IFormatPainterService),
|
|
27496
|
+
__decorateParam(2, ISheetSelectionRenderService),
|
|
27497
|
+
__decorateParam(3, _univerjs_core.ICommandService)
|
|
27498
|
+
], FormatPainterRenderController);
|
|
27468
27499
|
|
|
27469
27500
|
//#endregion
|
|
27470
|
-
//#region src/controllers/render-controllers/header-
|
|
27471
|
-
const
|
|
27472
|
-
|
|
27473
|
-
|
|
27474
|
-
|
|
27475
|
-
|
|
27476
|
-
constructor(_context, _sheetSkeletonManagerService, _commandService) {
|
|
27501
|
+
//#region src/controllers/render-controllers/header-menu.render-controller.ts
|
|
27502
|
+
const HEADER_MENU_CONTROLLER_SHAPE = "__SpreadsheetHeaderMenuSHAPEControllerShape__";
|
|
27503
|
+
const HEADER_MENU_CONTROLLER_MENU = "__SpreadsheetHeaderMenuMAINControllerShape__";
|
|
27504
|
+
const HEADER_MENU_CONTROLLER_SHAPE_COLOR = "rgba(0, 0, 0, 0.1)";
|
|
27505
|
+
let HeaderMenuRenderController = class HeaderMenuRenderController extends _univerjs_core.Disposable {
|
|
27506
|
+
constructor(_context, _sheetSkeletonManagerService, _contextMenuService, _commandService, _selectionManagerService) {
|
|
27477
27507
|
super();
|
|
27478
27508
|
this._context = _context;
|
|
27479
27509
|
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
27510
|
+
this._contextMenuService = _contextMenuService;
|
|
27480
27511
|
this._commandService = _commandService;
|
|
27481
|
-
|
|
27482
|
-
|
|
27483
|
-
|
|
27484
|
-
|
|
27485
|
-
this
|
|
27512
|
+
this._selectionManagerService = _selectionManagerService;
|
|
27513
|
+
_defineProperty(this, "_hoverRect", void 0);
|
|
27514
|
+
_defineProperty(this, "_hoverMenu", void 0);
|
|
27515
|
+
_defineProperty(this, "_currentColumn", Number.POSITIVE_INFINITY);
|
|
27516
|
+
_defineProperty(this, "_headerPointerSubs", void 0);
|
|
27517
|
+
_defineProperty(this, "_colHeaderPointerSubs", void 0);
|
|
27518
|
+
this._initialize();
|
|
27486
27519
|
}
|
|
27487
27520
|
dispose() {
|
|
27488
|
-
|
|
27489
|
-
this.
|
|
27521
|
+
var _this$_hoverRect, _this$_hoverMenu, _this$_headerPointerS;
|
|
27522
|
+
(_this$_hoverRect = this._hoverRect) === null || _this$_hoverRect === void 0 || _this$_hoverRect.dispose();
|
|
27523
|
+
(_this$_hoverMenu = this._hoverMenu) === null || _this$_hoverMenu === void 0 || _this$_hoverMenu.dispose();
|
|
27524
|
+
(_this$_headerPointerS = this._headerPointerSubs) === null || _this$_headerPointerS === void 0 || _this$_headerPointerS.unsubscribe();
|
|
27525
|
+
this._headerPointerSubs = null;
|
|
27490
27526
|
}
|
|
27491
|
-
|
|
27492
|
-
|
|
27493
|
-
this.
|
|
27494
|
-
|
|
27495
|
-
|
|
27496
|
-
activeSheetId = "";
|
|
27497
|
-
return;
|
|
27498
|
-
}
|
|
27499
|
-
activeSheetId = worksheet.getSheetId();
|
|
27500
|
-
this._update(this._workbook, worksheet);
|
|
27527
|
+
_initialize() {
|
|
27528
|
+
const scene = this._context.scene;
|
|
27529
|
+
this._hoverRect = new _univerjs_engine_render.Rect(HEADER_MENU_CONTROLLER_SHAPE, {
|
|
27530
|
+
fill: HEADER_MENU_CONTROLLER_SHAPE_COLOR,
|
|
27531
|
+
evented: false
|
|
27501
27532
|
});
|
|
27502
|
-
this.
|
|
27503
|
-
|
|
27504
|
-
|
|
27505
|
-
|
|
27506
|
-
|
|
27507
|
-
|
|
27533
|
+
this._hoverMenu = new HeaderMenuShape(HEADER_MENU_CONTROLLER_MENU, {
|
|
27534
|
+
zIndex: 100,
|
|
27535
|
+
visible: false
|
|
27536
|
+
});
|
|
27537
|
+
scene.addObjects([this._hoverRect, this._hoverMenu], 10);
|
|
27538
|
+
this._initialHover(0);
|
|
27539
|
+
this._initialHover(1);
|
|
27540
|
+
this._initialHoverMenu();
|
|
27541
|
+
}
|
|
27542
|
+
_initialHover(initialType = 0) {
|
|
27543
|
+
var _this$_headerPointerS2, _this$_headerPointerS3, _this$_headerPointerS4;
|
|
27544
|
+
const spreadsheetColumnHeader = this._context.components.get("__SpreadsheetColumnHeader__");
|
|
27545
|
+
const spreadsheetRowHeader = this._context.components.get("__SpreadsheetRowHeader__");
|
|
27546
|
+
const eventBindingObject = initialType === 0 ? spreadsheetRowHeader : spreadsheetColumnHeader;
|
|
27547
|
+
const pointerMoveHandler = (evt) => {
|
|
27548
|
+
var _this$_sheetSkeletonM;
|
|
27549
|
+
const skeleton = (_this$_sheetSkeletonM = this._sheetSkeletonManagerService.getCurrentParam()) === null || _this$_sheetSkeletonM === void 0 ? void 0 : _this$_sheetSkeletonM.skeleton;
|
|
27550
|
+
if (skeleton == null) return;
|
|
27551
|
+
const { rowBaseWidth, rowGutterWidth, columnBaseHeight, columnGutterHeight } = getHeaderBaseLayout(skeleton);
|
|
27552
|
+
const { startX, startY, endX, endY, column } = getCoordByOffset(evt.offsetX, evt.offsetY, this._context.scene, skeleton);
|
|
27553
|
+
if (initialType === 0) {
|
|
27554
|
+
var _this$_hoverRect2;
|
|
27555
|
+
(_this$_hoverRect2 = this._hoverRect) === null || _this$_hoverRect2 === void 0 || _this$_hoverRect2.transformByState({
|
|
27556
|
+
width: rowBaseWidth,
|
|
27557
|
+
height: endY - startY,
|
|
27558
|
+
left: rowGutterWidth,
|
|
27559
|
+
top: startY
|
|
27560
|
+
});
|
|
27561
|
+
} else {
|
|
27562
|
+
var _this$_hoverRect3;
|
|
27563
|
+
this._currentColumn = column;
|
|
27564
|
+
(_this$_hoverRect3 = this._hoverRect) === null || _this$_hoverRect3 === void 0 || _this$_hoverRect3.transformByState({
|
|
27565
|
+
width: endX - startX,
|
|
27566
|
+
height: columnBaseHeight,
|
|
27567
|
+
left: startX,
|
|
27568
|
+
top: columnGutterHeight
|
|
27569
|
+
});
|
|
27570
|
+
if (this._hoverMenu == null) return;
|
|
27571
|
+
if (endX - startX < columnBaseHeight * 2) {
|
|
27572
|
+
this._hoverMenu.hide();
|
|
27573
|
+
return;
|
|
27508
27574
|
}
|
|
27575
|
+
const menuSize = columnBaseHeight * .8;
|
|
27576
|
+
this._hoverMenu.transformByState({
|
|
27577
|
+
left: endX - columnBaseHeight,
|
|
27578
|
+
top: columnGutterHeight + columnBaseHeight / 2 - menuSize / 2
|
|
27579
|
+
});
|
|
27580
|
+
this._hoverMenu.setShapeProps({ size: menuSize });
|
|
27581
|
+
this._hoverMenu.show();
|
|
27509
27582
|
}
|
|
27510
|
-
}
|
|
27583
|
+
};
|
|
27584
|
+
const pointerEnterHandler = () => {
|
|
27585
|
+
var _this$_hoverRect4;
|
|
27586
|
+
(_this$_hoverRect4 = this._hoverRect) === null || _this$_hoverRect4 === void 0 || _this$_hoverRect4.show();
|
|
27587
|
+
};
|
|
27588
|
+
const pointerLeaveHandler = () => {
|
|
27589
|
+
var _this$_hoverRect5, _this$_hoverMenu2;
|
|
27590
|
+
(_this$_hoverRect5 = this._hoverRect) === null || _this$_hoverRect5 === void 0 || _this$_hoverRect5.hide();
|
|
27591
|
+
(_this$_hoverMenu2 = this._hoverMenu) === null || _this$_hoverMenu2 === void 0 || _this$_hoverMenu2.hide();
|
|
27592
|
+
};
|
|
27593
|
+
this._headerPointerSubs = new rxjs.Subscription();
|
|
27594
|
+
const headerPointerMoveSub = eventBindingObject.onPointerMove$.subscribeEvent(pointerMoveHandler);
|
|
27595
|
+
const headerPointerEnterSub = eventBindingObject.onPointerEnter$.subscribeEvent(pointerEnterHandler);
|
|
27596
|
+
const headerPointerLeaveSub = eventBindingObject.onPointerLeave$.subscribeEvent(pointerLeaveHandler);
|
|
27597
|
+
(_this$_headerPointerS2 = this._headerPointerSubs) === null || _this$_headerPointerS2 === void 0 || _this$_headerPointerS2.add(headerPointerMoveSub);
|
|
27598
|
+
(_this$_headerPointerS3 = this._headerPointerSubs) === null || _this$_headerPointerS3 === void 0 || _this$_headerPointerS3.add(headerPointerEnterSub);
|
|
27599
|
+
(_this$_headerPointerS4 = this._headerPointerSubs) === null || _this$_headerPointerS4 === void 0 || _this$_headerPointerS4.add(headerPointerLeaveSub);
|
|
27511
27600
|
}
|
|
27512
|
-
|
|
27513
|
-
|
|
27514
|
-
|
|
27515
|
-
|
|
27516
|
-
|
|
27517
|
-
|
|
27518
|
-
|
|
27519
|
-
|
|
27520
|
-
|
|
27521
|
-
const { startRow, endRow } = range;
|
|
27522
|
-
const position = getCoordByCell(startRow, 0, scene, skeleton);
|
|
27523
|
-
const hasPrevious = startRow !== 0;
|
|
27524
|
-
const hasNext = endRow !== rowCount - 1;
|
|
27525
|
-
return new HeaderUnhideShape(HEADER_UNHIDE_CONTROLLER_SHAPE, {
|
|
27526
|
-
type: 0,
|
|
27527
|
-
hovered: false,
|
|
27528
|
-
hasPrevious,
|
|
27529
|
-
hasNext,
|
|
27530
|
-
top: position.startY - (hasPrevious ? 12 : 0),
|
|
27531
|
-
left: position.startX - 12
|
|
27532
|
-
}, () => this._commandService.executeCommand(_univerjs_sheets.SetSpecificRowsVisibleCommand.id, {
|
|
27533
|
-
unitId: workbook.getUnitId(),
|
|
27534
|
-
subUnitId: worksheet.getSheetId(),
|
|
27535
|
-
ranges: [range]
|
|
27536
|
-
}));
|
|
27601
|
+
_initialHoverMenu() {
|
|
27602
|
+
if (this._hoverMenu == null) return;
|
|
27603
|
+
this._hoverMenu.onPointerEnter$.subscribeEvent(() => {
|
|
27604
|
+
if (this._hoverMenu == null) return;
|
|
27605
|
+
this._hoverMenu.setProps({
|
|
27606
|
+
mode: 1,
|
|
27607
|
+
visible: true
|
|
27608
|
+
});
|
|
27609
|
+
this._context.scene.setCursor(_univerjs_engine_render.CURSOR_TYPE.POINTER);
|
|
27537
27610
|
});
|
|
27538
|
-
|
|
27539
|
-
|
|
27540
|
-
|
|
27541
|
-
|
|
27542
|
-
|
|
27543
|
-
|
|
27544
|
-
|
|
27545
|
-
|
|
27546
|
-
|
|
27547
|
-
|
|
27548
|
-
|
|
27549
|
-
|
|
27550
|
-
|
|
27551
|
-
|
|
27552
|
-
|
|
27553
|
-
|
|
27554
|
-
|
|
27555
|
-
|
|
27611
|
+
this._hoverMenu.onPointerLeave$.subscribeEvent(() => {
|
|
27612
|
+
if (this._hoverMenu == null) return;
|
|
27613
|
+
this._hoverMenu.setProps({
|
|
27614
|
+
mode: 0,
|
|
27615
|
+
visible: false
|
|
27616
|
+
});
|
|
27617
|
+
this._context.scene.resetCursor();
|
|
27618
|
+
});
|
|
27619
|
+
this._hoverMenu.onPointerDown$.subscribeEvent((evt) => {
|
|
27620
|
+
var _this$_selectionManag;
|
|
27621
|
+
const currentColumn = this._currentColumn;
|
|
27622
|
+
const currentSelectionDatas = (_this$_selectionManag = this._selectionManagerService.getCurrentSelections()) === null || _this$_selectionManag === void 0 ? void 0 : _this$_selectionManag.map((s) => s.range);
|
|
27623
|
+
if (!!!(currentSelectionDatas === null || currentSelectionDatas === void 0 ? void 0 : currentSelectionDatas.filter((range) => range.rangeType === _univerjs_core.RANGE_TYPE.COLUMN).find((data) => {
|
|
27624
|
+
const { startColumn, endColumn } = data;
|
|
27625
|
+
if (currentColumn >= startColumn && currentColumn <= endColumn) return true;
|
|
27626
|
+
return false;
|
|
27627
|
+
}))) {
|
|
27628
|
+
const selection = this._getSelectionOnColumn(currentColumn);
|
|
27629
|
+
this._commandService.syncExecuteCommand(_univerjs_sheets.SetSelectionsOperation.id, selection);
|
|
27630
|
+
}
|
|
27631
|
+
evt.stopPropagation();
|
|
27632
|
+
evt.preventDefault();
|
|
27633
|
+
this._contextMenuService.triggerContextMenu(evt, _univerjs_ui.ContextMenuPosition.COL_HEADER);
|
|
27556
27634
|
});
|
|
27557
|
-
scene.addObjects(colShapes, 12);
|
|
27558
|
-
scene.addObjects(rowShapes, 12);
|
|
27559
|
-
this._clearShapes();
|
|
27560
|
-
this._shapes = {
|
|
27561
|
-
cols: colShapes,
|
|
27562
|
-
rows: rowShapes
|
|
27563
|
-
};
|
|
27564
27635
|
}
|
|
27565
|
-
|
|
27566
|
-
this.
|
|
27567
|
-
|
|
27568
|
-
|
|
27569
|
-
|
|
27570
|
-
|
|
27636
|
+
_getSelectionOnColumn(column) {
|
|
27637
|
+
const workbook = this._context.unit;
|
|
27638
|
+
const worksheet = workbook.getActiveSheet();
|
|
27639
|
+
if (!worksheet) throw new Error("No active worksheet");
|
|
27640
|
+
return {
|
|
27641
|
+
unitId: workbook.getUnitId(),
|
|
27642
|
+
subUnitId: worksheet.getSheetId(),
|
|
27643
|
+
selections: [{
|
|
27644
|
+
range: {
|
|
27645
|
+
startRow: 0,
|
|
27646
|
+
startColumn: column,
|
|
27647
|
+
endRow: worksheet.getRowCount() - 1,
|
|
27648
|
+
endColumn: column,
|
|
27649
|
+
rangeType: _univerjs_core.RANGE_TYPE.COLUMN
|
|
27650
|
+
},
|
|
27651
|
+
primary: {
|
|
27652
|
+
startRow: 0,
|
|
27653
|
+
startColumn: column,
|
|
27654
|
+
endRow: 0,
|
|
27655
|
+
endColumn: column,
|
|
27656
|
+
actualRow: 0,
|
|
27657
|
+
actualColumn: column,
|
|
27658
|
+
isMerged: false,
|
|
27659
|
+
isMergedMainCell: false
|
|
27660
|
+
},
|
|
27661
|
+
style: null
|
|
27662
|
+
}]
|
|
27571
27663
|
};
|
|
27572
27664
|
}
|
|
27573
|
-
_getSheetObject() {
|
|
27574
|
-
return getSheetObject(this._workbook, this._context);
|
|
27575
|
-
}
|
|
27576
27665
|
};
|
|
27577
|
-
|
|
27666
|
+
HeaderMenuRenderController = __decorate([
|
|
27667
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)),
|
|
27668
|
+
__decorateParam(2, _univerjs_ui.IContextMenuService),
|
|
27669
|
+
__decorateParam(3, _univerjs_core.ICommandService),
|
|
27670
|
+
__decorateParam(4, (0, _univerjs_core.Inject)(_univerjs_sheets.SheetsSelectionsService))
|
|
27671
|
+
], HeaderMenuRenderController);
|
|
27672
|
+
function getHeaderBaseLayout(skeleton) {
|
|
27673
|
+
var _skeleton$worksheet$g, _skeleton$worksheet, _config$rowHeader, _config$columnHeader;
|
|
27674
|
+
const config = (_skeleton$worksheet$g = (_skeleton$worksheet = skeleton.worksheet).getConfig) === null || _skeleton$worksheet$g === void 0 ? void 0 : _skeleton$worksheet$g.call(_skeleton$worksheet);
|
|
27675
|
+
const configuredRowWidth = config === null || config === void 0 || (_config$rowHeader = config.rowHeader) === null || _config$rowHeader === void 0 ? void 0 : _config$rowHeader.width;
|
|
27676
|
+
const configuredColumnHeight = config === null || config === void 0 || (_config$columnHeader = config.columnHeader) === null || _config$columnHeader === void 0 ? void 0 : _config$columnHeader.height;
|
|
27677
|
+
const rowBaseWidth = typeof configuredRowWidth === "number" && configuredRowWidth > 0 ? Math.min(configuredRowWidth, skeleton.rowHeaderWidth) : skeleton.rowHeaderWidth;
|
|
27678
|
+
const columnBaseHeight = typeof configuredColumnHeight === "number" && configuredColumnHeight > 0 ? Math.min(configuredColumnHeight, skeleton.columnHeaderHeight) : skeleton.columnHeaderHeight;
|
|
27679
|
+
return {
|
|
27680
|
+
rowBaseWidth,
|
|
27681
|
+
rowGutterWidth: Math.max(0, skeleton.rowHeaderWidthAndMarginLeft - rowBaseWidth),
|
|
27682
|
+
columnBaseHeight,
|
|
27683
|
+
columnGutterHeight: Math.max(0, skeleton.columnHeaderHeightAndMarginTop - columnBaseHeight)
|
|
27684
|
+
};
|
|
27685
|
+
}
|
|
27578
27686
|
|
|
27579
27687
|
//#endregion
|
|
27580
27688
|
//#region src/consts/mobile-context.ts
|
|
@@ -28876,12 +28984,12 @@ let SheetSkeletonRenderController = class SheetSkeletonRenderController extends
|
|
|
28876
28984
|
this._context = _context;
|
|
28877
28985
|
this._sheetSkeletonManagerService = _sheetSkeletonManagerService;
|
|
28878
28986
|
this._renderManagerService = _renderManagerService;
|
|
28879
|
-
this._sheetSkeletonManagerService.currentSkeleton$.subscribe((param) => {
|
|
28987
|
+
this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe((param) => {
|
|
28880
28988
|
this._updateSceneSize(param);
|
|
28881
|
-
});
|
|
28989
|
+
}));
|
|
28882
28990
|
}
|
|
28883
28991
|
_updateSceneSize(param) {
|
|
28884
|
-
var _this$_renderManagerS;
|
|
28992
|
+
var _this$_renderManagerS, _scene$getViewport, _scene$getViewport2, _scene$getViewport3, _scene$getViewport4, _scene$getViewport5;
|
|
28885
28993
|
if (param == null) return;
|
|
28886
28994
|
const { unitId } = this._context;
|
|
28887
28995
|
const { skeleton } = param;
|
|
@@ -28894,6 +29002,30 @@ let SheetSkeletonRenderController = class SheetSkeletonRenderController extends
|
|
|
28894
29002
|
height: columnHeaderHeightAndMarginTop + rowTotalHeight
|
|
28895
29003
|
});
|
|
28896
29004
|
scene.getMainViewport().setMargin(rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop);
|
|
29005
|
+
scene.getMainViewport().resizeWhenFreezeChange({
|
|
29006
|
+
left: rowHeaderWidthAndMarginLeft,
|
|
29007
|
+
top: columnHeaderHeightAndMarginTop
|
|
29008
|
+
});
|
|
29009
|
+
(_scene$getViewport = scene.getViewport(_univerjs_engine_render.SHEET_VIEWPORT_KEY.VIEW_COLUMN_LEFT)) === null || _scene$getViewport === void 0 || _scene$getViewport.resizeWhenFreezeChange({
|
|
29010
|
+
left: rowHeaderWidthAndMarginLeft,
|
|
29011
|
+
height: columnHeaderHeightAndMarginTop
|
|
29012
|
+
});
|
|
29013
|
+
(_scene$getViewport2 = scene.getViewport(_univerjs_engine_render.SHEET_VIEWPORT_KEY.VIEW_COLUMN_RIGHT)) === null || _scene$getViewport2 === void 0 || _scene$getViewport2.resizeWhenFreezeChange({
|
|
29014
|
+
left: rowHeaderWidthAndMarginLeft,
|
|
29015
|
+
height: columnHeaderHeightAndMarginTop
|
|
29016
|
+
});
|
|
29017
|
+
(_scene$getViewport3 = scene.getViewport(_univerjs_engine_render.SHEET_VIEWPORT_KEY.VIEW_ROW_BOTTOM)) === null || _scene$getViewport3 === void 0 || _scene$getViewport3.resizeWhenFreezeChange({
|
|
29018
|
+
width: rowHeaderWidthAndMarginLeft,
|
|
29019
|
+
top: columnHeaderHeightAndMarginTop
|
|
29020
|
+
});
|
|
29021
|
+
(_scene$getViewport4 = scene.getViewport(_univerjs_engine_render.SHEET_VIEWPORT_KEY.VIEW_ROW_TOP)) === null || _scene$getViewport4 === void 0 || _scene$getViewport4.resizeWhenFreezeChange({
|
|
29022
|
+
width: rowHeaderWidthAndMarginLeft,
|
|
29023
|
+
top: columnHeaderHeightAndMarginTop
|
|
29024
|
+
});
|
|
29025
|
+
(_scene$getViewport5 = scene.getViewport(_univerjs_engine_render.SHEET_VIEWPORT_KEY.VIEW_LEFT_TOP)) === null || _scene$getViewport5 === void 0 || _scene$getViewport5.resizeWhenFreezeChange({
|
|
29026
|
+
width: rowHeaderWidthAndMarginLeft,
|
|
29027
|
+
height: columnHeaderHeightAndMarginTop
|
|
29028
|
+
});
|
|
28897
29029
|
}
|
|
28898
29030
|
};
|
|
28899
29031
|
SheetSkeletonRenderController = __decorate([__decorateParam(1, (0, _univerjs_core.Inject)(SheetSkeletonManagerService)), __decorateParam(2, _univerjs_engine_render.IRenderManagerService)], SheetSkeletonRenderController);
|
|
@@ -29727,16 +29859,18 @@ let MobileSheetsSelectionRenderService = class MobileSheetsSelectionRenderServic
|
|
|
29727
29859
|
*/
|
|
29728
29860
|
newSelectionControl(scene, skeleton, selection) {
|
|
29729
29861
|
const selectionControls = this.getSelectionControls();
|
|
29730
|
-
const { rowHeaderWidth, columnHeaderHeight } = skeleton;
|
|
29862
|
+
const { rowHeaderWidth, rowHeaderWidthAndMarginLeft, columnHeaderHeight, columnHeaderHeightAndMarginTop } = skeleton;
|
|
29731
29863
|
const rangeType = selection.range.rangeType;
|
|
29732
29864
|
const control = new MobileSelectionControl(scene, selectionControls.length, this._themeService, {
|
|
29733
29865
|
highlightHeader: this._highlightHeader,
|
|
29734
29866
|
rowHeaderWidth,
|
|
29735
29867
|
columnHeaderHeight,
|
|
29868
|
+
rowHeaderOffsetX: Math.max(0, rowHeaderWidthAndMarginLeft - rowHeaderWidth),
|
|
29869
|
+
columnHeaderOffsetY: Math.max(0, columnHeaderHeightAndMarginTop - columnHeaderHeight),
|
|
29736
29870
|
rangeType
|
|
29737
29871
|
});
|
|
29738
29872
|
const selectionWithCoord = (0, _univerjs_sheets.attachSelectionWithCoord)(selection, skeleton);
|
|
29739
|
-
control.updateRangeBySelectionWithCoord(selectionWithCoord);
|
|
29873
|
+
control.updateRangeBySelectionWithCoord(selectionWithCoord, skeleton);
|
|
29740
29874
|
this._selectionControls.push(control);
|
|
29741
29875
|
const { expandingModeForTopLeft, expandingModeForBottomRight } = (() => {
|
|
29742
29876
|
switch (rangeType) {
|
|
@@ -30012,6 +30146,7 @@ let UniverSheetsMobileUIPlugin = class UniverSheetsMobileUIPlugin extends _unive
|
|
|
30012
30146
|
[IStatusBarService, { useClass: StatusBarService }],
|
|
30013
30147
|
[IMarkSelectionService, { useClass: MarkSelectionService }],
|
|
30014
30148
|
[HoverManagerService],
|
|
30149
|
+
[HeaderUnhideRangeService],
|
|
30015
30150
|
[DragManagerService],
|
|
30016
30151
|
[SheetCanvasPopManagerService],
|
|
30017
30152
|
[CellPopupManagerService],
|
|
@@ -30607,6 +30742,7 @@ let UniverSheetsUIPlugin = class UniverSheetsUIPlugin extends _univerjs_core.Plu
|
|
|
30607
30742
|
[IStatusBarService, { useClass: StatusBarService }],
|
|
30608
30743
|
[IMarkSelectionService, { useClass: MarkSelectionService }],
|
|
30609
30744
|
[HoverManagerService],
|
|
30745
|
+
[HeaderUnhideRangeService],
|
|
30610
30746
|
[DragManagerService],
|
|
30611
30747
|
[SheetCanvasPopManagerService],
|
|
30612
30748
|
[CellPopupManagerService],
|
|
@@ -30821,6 +30957,7 @@ Object.defineProperty(exports, 'FormulaEditorController', {
|
|
|
30821
30957
|
return FormulaEditorController;
|
|
30822
30958
|
}
|
|
30823
30959
|
});
|
|
30960
|
+
exports.HEADER_UNHIDE_RANGE_VISIBLE_CHECK = HEADER_UNHIDE_RANGE_VISIBLE_CHECK;
|
|
30824
30961
|
Object.defineProperty(exports, 'HeaderFreezeRenderController', {
|
|
30825
30962
|
enumerable: true,
|
|
30826
30963
|
get: function () {
|
|
@@ -30839,6 +30976,14 @@ Object.defineProperty(exports, 'HeaderResizeRenderController', {
|
|
|
30839
30976
|
return HeaderResizeRenderController;
|
|
30840
30977
|
}
|
|
30841
30978
|
});
|
|
30979
|
+
exports.HeaderUnhideRangeAxis = HeaderUnhideRangeAxis;
|
|
30980
|
+
exports.HeaderUnhideRangeService = HeaderUnhideRangeService;
|
|
30981
|
+
Object.defineProperty(exports, 'HeaderUnhideRenderController', {
|
|
30982
|
+
enumerable: true,
|
|
30983
|
+
get: function () {
|
|
30984
|
+
return HeaderUnhideRenderController;
|
|
30985
|
+
}
|
|
30986
|
+
});
|
|
30842
30987
|
exports.HideColConfirmCommand = HideColConfirmCommand;
|
|
30843
30988
|
exports.HideRowConfirmCommand = HideRowConfirmCommand;
|
|
30844
30989
|
Object.defineProperty(exports, 'HoverManagerService', {
|