@univerjs/engine-render 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 +209 -188
- package/lib/es/index.js +208 -187
- package/lib/types/components/sheets/interfaces.d.ts +2 -2
- package/lib/umd/index.js +2 -2
- package/package.json +3 -3
- package/LICENSE +0 -176
package/lib/cjs/index.js
CHANGED
|
@@ -4715,8 +4715,9 @@ var SpreadsheetColumnHeader = class extends SpreadsheetHeader {
|
|
|
4715
4715
|
const segment = spreadsheetSkeleton.rowColumnSegment;
|
|
4716
4716
|
if (!segment) return;
|
|
4717
4717
|
if (segment.startColumn === -1 && segment.endColumn === -1) return;
|
|
4718
|
-
const {
|
|
4719
|
-
|
|
4718
|
+
const { columnHeaderHeight, columnHeaderHeightAndMarginTop, rowHeaderWidthAndMarginLeft } = spreadsheetSkeleton;
|
|
4719
|
+
const marginTop = columnHeaderHeightAndMarginTop - columnHeaderHeight;
|
|
4720
|
+
ctx.translateWithPrecision(rowHeaderWidthAndMarginLeft, marginTop);
|
|
4720
4721
|
const extensions = this.getExtensionsByOrder();
|
|
4721
4722
|
for (const extension of extensions) extension.draw(ctx, parentScale, spreadsheetSkeleton);
|
|
4722
4723
|
}
|
|
@@ -4724,8 +4725,9 @@ var SpreadsheetColumnHeader = class extends SpreadsheetHeader {
|
|
|
4724
4725
|
const oCoord = this.getInverseCoord(coord);
|
|
4725
4726
|
const skeleton = this.getSkeleton();
|
|
4726
4727
|
if (!skeleton) return false;
|
|
4727
|
-
const {
|
|
4728
|
-
|
|
4728
|
+
const { rowHeaderWidthAndMarginLeft, columnHeaderHeight, columnHeaderHeightAndMarginTop } = skeleton;
|
|
4729
|
+
const marginTop = columnHeaderHeightAndMarginTop - columnHeaderHeight;
|
|
4730
|
+
if (oCoord.x > rowHeaderWidthAndMarginLeft && oCoord.y >= marginTop && oCoord.y <= columnHeaderHeightAndMarginTop) return true;
|
|
4729
4731
|
return false;
|
|
4730
4732
|
}
|
|
4731
4733
|
_initialDefaultExtension() {
|
|
@@ -5474,36 +5476,38 @@ var Custom = class extends SheetExtension {
|
|
|
5474
5476
|
if (!worksheet) return;
|
|
5475
5477
|
const mergeCellRendered = /* @__PURE__ */ new Set();
|
|
5476
5478
|
const subUnitId = worksheet.getSheetId();
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
|
|
5479
|
+
((diffRanges === null || diffRanges === void 0 ? void 0 : diffRanges.length) ? diffRanges : [rowColumnSegment]).forEach((range) => {
|
|
5480
|
+
_univerjs_core.Range.foreach(range, (row, col) => {
|
|
5481
|
+
if (!worksheet.getRowVisible(row) || !worksheet.getColVisible(col)) return;
|
|
5482
|
+
let primaryWithCoord = skeleton.getCellWithCoordByIndex(row, col, false);
|
|
5483
|
+
const { mergeInfo } = primaryWithCoord;
|
|
5484
|
+
let cellData = worksheet.getCell(row, col);
|
|
5485
|
+
if (primaryWithCoord.isMerged) cellData = worksheet.getCell(mergeInfo.startRow, mergeInfo.startColumn);
|
|
5486
|
+
if (!(cellData === null || cellData === void 0 ? void 0 : cellData.customRender)) return;
|
|
5487
|
+
if (!this.isRenderDiffRangesByRow(mergeInfo.startRow, mergeInfo.endRow, diffRanges)) return true;
|
|
5488
|
+
if (primaryWithCoord.isMerged || primaryWithCoord.isMergedMainCell) {
|
|
5489
|
+
const rangeStr = stringifyRange$1(mergeInfo);
|
|
5490
|
+
if (mergeCellRendered.has(rangeStr)) return;
|
|
5491
|
+
mergeCellRendered.add(rangeStr);
|
|
5492
|
+
}
|
|
5493
|
+
if (primaryWithCoord.isMerged) primaryWithCoord = skeleton.getCellWithCoordByIndex(mergeInfo.startRow, mergeInfo.startColumn, false);
|
|
5494
|
+
const renderInfo = {
|
|
5495
|
+
data: cellData,
|
|
5496
|
+
style: skeleton.getStyles().getStyleByCell(cellData),
|
|
5497
|
+
primaryWithCoord,
|
|
5498
|
+
subUnitId,
|
|
5499
|
+
row,
|
|
5500
|
+
col,
|
|
5501
|
+
worksheet,
|
|
5502
|
+
unitId: worksheet.unitId
|
|
5503
|
+
};
|
|
5504
|
+
const customRender = cellData.customRender.sort(_univerjs_core.sortRules);
|
|
5505
|
+
ctx.save();
|
|
5506
|
+
customRender.forEach((item) => {
|
|
5507
|
+
item.drawWith(ctx, renderInfo, skeleton, this.parent);
|
|
5508
|
+
});
|
|
5509
|
+
ctx.restore();
|
|
5505
5510
|
});
|
|
5506
|
-
ctx.restore();
|
|
5507
5511
|
});
|
|
5508
5512
|
}
|
|
5509
5513
|
};
|
|
@@ -17294,54 +17298,58 @@ let SpreadsheetSkeleton = class SpreadsheetSkeleton extends _univerjs_core.Sheet
|
|
|
17294
17298
|
* @param vpInfo viewBounds
|
|
17295
17299
|
*/
|
|
17296
17300
|
setStylesCache(vpInfo) {
|
|
17301
|
+
var _vpInfo$diffBounds, _vpInfo$diffCacheBoun, _vpInfo$diffCacheBoun2, _vpInfo$diffCacheBoun3;
|
|
17297
17302
|
if (!this._worksheetData) return;
|
|
17298
17303
|
if (!this.rowHeightAccumulation || !this.columnWidthAccumulation) return;
|
|
17299
17304
|
this.updateVisibleRange(vpInfo);
|
|
17300
17305
|
const rowColumnSegment = this._drawingRange;
|
|
17301
17306
|
const columnWidthAccumulation = this.columnWidthAccumulation;
|
|
17302
|
-
const
|
|
17303
|
-
|
|
17304
|
-
|
|
17305
|
-
|
|
17306
|
-
|
|
17307
|
-
|
|
17308
|
-
|
|
17309
|
-
|
|
17310
|
-
|
|
17307
|
+
const styleRanges = !!vpInfo && !vpInfo.isDirty && !vpInfo.isForceDirty && (!!((_vpInfo$diffBounds = vpInfo.diffBounds) === null || _vpInfo$diffBounds === void 0 ? void 0 : _vpInfo$diffBounds.length) || !!((_vpInfo$diffCacheBoun = vpInfo.diffCacheBounds) === null || _vpInfo$diffCacheBoun === void 0 ? void 0 : _vpInfo$diffCacheBoun.length) || !!vpInfo.diffX || !!vpInfo.diffY) ? vpInfo.shouldCacheUpdate ? (_vpInfo$diffCacheBoun2 = (_vpInfo$diffCacheBoun3 = vpInfo.diffCacheBounds) === null || _vpInfo$diffCacheBoun3 === void 0 ? void 0 : _vpInfo$diffCacheBoun3.map((bound) => this.getRangeByViewBound(bound))) !== null && _vpInfo$diffCacheBoun2 !== void 0 ? _vpInfo$diffCacheBoun2 : [] : [] : [rowColumnSegment];
|
|
17308
|
+
for (const styleRange of styleRanges) {
|
|
17309
|
+
const { startRow: visibleStartRow, endRow: visibleEndRow, startColumn: visibleStartColumn, endColumn: visibleEndColumn } = styleRange;
|
|
17310
|
+
if (visibleEndColumn === -1 || visibleEndRow === -1) continue;
|
|
17311
|
+
const mergeVisibleRanges = [];
|
|
17312
|
+
let mergeVisibleRangeStartRow = visibleStartRow;
|
|
17313
|
+
const expandStartCol = Math.max(0, visibleStartColumn - 20);
|
|
17314
|
+
const expandEndCol = Math.min(columnWidthAccumulation.length - 1, visibleEndColumn + 20);
|
|
17315
|
+
for (let r = visibleStartRow; r <= visibleEndRow; r++) {
|
|
17316
|
+
if (this.worksheet.getRowVisible(r) === false) {
|
|
17317
|
+
if (mergeVisibleRangeStartRow < r) mergeVisibleRanges.push({
|
|
17318
|
+
startRow: mergeVisibleRangeStartRow,
|
|
17319
|
+
endRow: r - 1,
|
|
17320
|
+
startColumn: visibleStartColumn,
|
|
17321
|
+
endColumn: visibleEndColumn
|
|
17322
|
+
});
|
|
17323
|
+
mergeVisibleRangeStartRow = r + 1;
|
|
17324
|
+
continue;
|
|
17325
|
+
}
|
|
17326
|
+
if (r === visibleEndRow) mergeVisibleRanges.push({
|
|
17311
17327
|
startRow: mergeVisibleRangeStartRow,
|
|
17312
|
-
endRow: r
|
|
17328
|
+
endRow: r,
|
|
17313
17329
|
startColumn: visibleStartColumn,
|
|
17314
17330
|
endColumn: visibleEndColumn
|
|
17315
17331
|
});
|
|
17316
|
-
|
|
17317
|
-
|
|
17332
|
+
for (let c = visibleStartColumn; c <= visibleEndColumn; c++) this._setStylesCacheForOneCell(r, c, { cacheItem: {
|
|
17333
|
+
bg: true,
|
|
17334
|
+
border: true
|
|
17335
|
+
} });
|
|
17336
|
+
for (let c = expandStartCol; c < visibleEndColumn; c++) this._setStylesCacheForOneCell(r, c, { cacheItem: {
|
|
17337
|
+
bg: false,
|
|
17338
|
+
border: false
|
|
17339
|
+
} });
|
|
17340
|
+
if (visibleEndColumn === 0) continue;
|
|
17341
|
+
for (let c = visibleEndColumn + 1; c < expandEndCol; c++) this._setStylesCacheForOneCell(r, c, { cacheItem: {
|
|
17342
|
+
bg: false,
|
|
17343
|
+
border: false
|
|
17344
|
+
} });
|
|
17318
17345
|
}
|
|
17319
|
-
|
|
17320
|
-
|
|
17321
|
-
|
|
17322
|
-
|
|
17323
|
-
|
|
17324
|
-
});
|
|
17325
|
-
for (let c = visibleStartColumn; c <= visibleEndColumn; c++) this._setStylesCacheForOneCell(r, c, { cacheItem: {
|
|
17326
|
-
bg: true,
|
|
17327
|
-
border: true
|
|
17328
|
-
} });
|
|
17329
|
-
for (let c = expandStartCol; c < visibleEndColumn; c++) this._setStylesCacheForOneCell(r, c, { cacheItem: {
|
|
17330
|
-
bg: false,
|
|
17331
|
-
border: false
|
|
17332
|
-
} });
|
|
17333
|
-
if (visibleEndColumn === 0) continue;
|
|
17334
|
-
for (let c = visibleEndColumn + 1; c < expandEndCol; c++) this._setStylesCacheForOneCell(r, c, { cacheItem: {
|
|
17335
|
-
bg: false,
|
|
17336
|
-
border: false
|
|
17337
|
-
} });
|
|
17338
|
-
}
|
|
17339
|
-
const mergeRanges = [];
|
|
17340
|
-
for (const mergeVisibleRange of mergeVisibleRanges) {
|
|
17341
|
-
const mergeRangeInVisible = this.getCurrentRowColumnSegmentMergeData(mergeVisibleRange);
|
|
17342
|
-
mergeRanges.push(...mergeRangeInVisible);
|
|
17346
|
+
const mergeRanges = [];
|
|
17347
|
+
for (const mergeVisibleRange of mergeVisibleRanges) {
|
|
17348
|
+
const mergeRangeInVisible = this.getCurrentRowColumnSegmentMergeData(mergeVisibleRange);
|
|
17349
|
+
mergeRanges.push(...mergeRangeInVisible);
|
|
17350
|
+
}
|
|
17351
|
+
for (const mergeRange of mergeRanges) this._setStylesCacheForOneCell(mergeRange.startRow, mergeRange.startColumn, { mergeRange });
|
|
17343
17352
|
}
|
|
17344
|
-
for (const mergeRange of mergeRanges) this._setStylesCacheForOneCell(mergeRange.startRow, mergeRange.startColumn, { mergeRange });
|
|
17345
17353
|
return this;
|
|
17346
17354
|
}
|
|
17347
17355
|
/**
|
|
@@ -18308,12 +18316,19 @@ var Font = class extends SheetExtension {
|
|
|
18308
18316
|
if (!rowHeightAccumulation || !columnWidthAccumulation || columnTotalWidth === void 0 || rowTotalHeight === void 0 || !worksheet) return;
|
|
18309
18317
|
const scale = this._getScale(parentScale);
|
|
18310
18318
|
const { viewRanges = [], checkOutOfViewBound } = moreBoundsInfo;
|
|
18319
|
+
const lastRowIndex = spreadsheetSkeleton.getRowCount() - 1;
|
|
18320
|
+
const lastColIndex = spreadsheetSkeleton.getColumnCount() - 1;
|
|
18321
|
+
const expandedViewRanges = viewRanges.map((range) => clampRange({
|
|
18322
|
+
...range,
|
|
18323
|
+
startColumn: range.startColumn - 20,
|
|
18324
|
+
endColumn: range.endColumn + 20
|
|
18325
|
+
}, lastRowIndex, lastColIndex));
|
|
18311
18326
|
const renderFontContext = {
|
|
18312
18327
|
ctx,
|
|
18313
18328
|
scale,
|
|
18314
18329
|
columnTotalWidth,
|
|
18315
18330
|
rowTotalHeight,
|
|
18316
|
-
viewRanges,
|
|
18331
|
+
viewRanges: expandedViewRanges,
|
|
18317
18332
|
checkOutOfViewBound: checkOutOfViewBound || true,
|
|
18318
18333
|
diffRanges,
|
|
18319
18334
|
spreadsheetSkeleton
|
|
@@ -18321,12 +18336,7 @@ var Font = class extends SheetExtension {
|
|
|
18321
18336
|
ctx.save();
|
|
18322
18337
|
const uniqueMergeRanges = [];
|
|
18323
18338
|
const mergeRangeIDSet = /* @__PURE__ */ new Set();
|
|
18324
|
-
|
|
18325
|
-
const lastColIndex = spreadsheetSkeleton.getColumnCount() - 1;
|
|
18326
|
-
viewRanges.forEach((range) => {
|
|
18327
|
-
range.startColumn -= 20;
|
|
18328
|
-
range.endColumn += 20;
|
|
18329
|
-
range = clampRange(range, lastRowIndex, lastColIndex);
|
|
18339
|
+
expandedViewRanges.forEach((range) => {
|
|
18330
18340
|
spreadsheetSkeleton.worksheet.getMergedCellRange(range.startRow, range.startColumn, range.endRow, range.endColumn).forEach((mergeRange) => {
|
|
18331
18341
|
const mergeRangeIndex = spreadsheetSkeleton.worksheet.getSpanModel().getMergeDataIndex(mergeRange.startRow, mergeRange.startColumn);
|
|
18332
18342
|
if (!mergeRangeIDSet.has(mergeRangeIndex)) {
|
|
@@ -18654,93 +18664,95 @@ var Marker = class extends SheetExtension {
|
|
|
18654
18664
|
const { worksheet, rowColumnSegment } = skeleton;
|
|
18655
18665
|
if (!worksheet) return;
|
|
18656
18666
|
const mergeCellRendered = /* @__PURE__ */ new Set();
|
|
18657
|
-
|
|
18658
|
-
|
|
18659
|
-
|
|
18660
|
-
|
|
18661
|
-
|
|
18662
|
-
|
|
18663
|
-
|
|
18664
|
-
|
|
18665
|
-
|
|
18666
|
-
|
|
18667
|
-
|
|
18668
|
-
|
|
18669
|
-
|
|
18670
|
-
|
|
18671
|
-
|
|
18672
|
-
|
|
18673
|
-
|
|
18674
|
-
|
|
18675
|
-
|
|
18676
|
-
|
|
18677
|
-
|
|
18678
|
-
|
|
18679
|
-
|
|
18680
|
-
|
|
18681
|
-
|
|
18682
|
-
|
|
18683
|
-
|
|
18684
|
-
|
|
18685
|
-
|
|
18686
|
-
|
|
18687
|
-
|
|
18688
|
-
|
|
18689
|
-
|
|
18690
|
-
|
|
18691
|
-
|
|
18692
|
-
|
|
18693
|
-
|
|
18694
|
-
|
|
18695
|
-
|
|
18696
|
-
|
|
18697
|
-
|
|
18698
|
-
|
|
18699
|
-
|
|
18700
|
-
|
|
18701
|
-
|
|
18702
|
-
|
|
18703
|
-
|
|
18704
|
-
|
|
18705
|
-
|
|
18706
|
-
|
|
18707
|
-
|
|
18708
|
-
|
|
18709
|
-
|
|
18710
|
-
|
|
18711
|
-
|
|
18712
|
-
|
|
18713
|
-
|
|
18714
|
-
|
|
18715
|
-
|
|
18716
|
-
|
|
18717
|
-
|
|
18718
|
-
|
|
18719
|
-
|
|
18720
|
-
|
|
18721
|
-
|
|
18722
|
-
|
|
18723
|
-
|
|
18724
|
-
|
|
18725
|
-
|
|
18726
|
-
|
|
18727
|
-
|
|
18728
|
-
|
|
18729
|
-
|
|
18730
|
-
|
|
18731
|
-
|
|
18732
|
-
|
|
18733
|
-
|
|
18734
|
-
|
|
18735
|
-
|
|
18736
|
-
|
|
18737
|
-
|
|
18738
|
-
|
|
18739
|
-
|
|
18740
|
-
|
|
18741
|
-
|
|
18742
|
-
|
|
18743
|
-
|
|
18667
|
+
((diffRanges === null || diffRanges === void 0 ? void 0 : diffRanges.length) ? diffRanges : [rowColumnSegment]).forEach((range) => {
|
|
18668
|
+
_univerjs_core.Range.foreach(range, (row, col) => {
|
|
18669
|
+
var _cellData$markers, _cellData$markers2, _cellData$markers3, _cellData$markers4;
|
|
18670
|
+
if (!worksheet.getRowVisible(row) || !worksheet.getColVisible(col)) return;
|
|
18671
|
+
let cellData = worksheet.getCell(row, col);
|
|
18672
|
+
const cellInfo = skeleton.getCellWithCoordByIndex(row, col, false);
|
|
18673
|
+
const { isMerged, isMergedMainCell, mergeInfo } = cellInfo;
|
|
18674
|
+
let { startY, endY, startX, endX } = cellInfo;
|
|
18675
|
+
if (isMergedMainCell || isMerged) {
|
|
18676
|
+
startY = mergeInfo.startY;
|
|
18677
|
+
endY = mergeInfo.endY;
|
|
18678
|
+
startX = mergeInfo.startX;
|
|
18679
|
+
endX = mergeInfo.endX;
|
|
18680
|
+
}
|
|
18681
|
+
if (isMerged) {
|
|
18682
|
+
const mainCell = {
|
|
18683
|
+
row: mergeInfo.startRow,
|
|
18684
|
+
col: mergeInfo.startColumn
|
|
18685
|
+
};
|
|
18686
|
+
cellData = worksheet.getCell(mainCell.row, mainCell.col);
|
|
18687
|
+
}
|
|
18688
|
+
if (!this.isRenderDiffRangesByRow(mergeInfo.startRow, mergeInfo.endRow, diffRanges)) return true;
|
|
18689
|
+
if (cellInfo.isMerged || cellInfo.isMergedMainCell) {
|
|
18690
|
+
const rangeStr = stringifyRange(mergeInfo);
|
|
18691
|
+
if (mergeCellRendered.has(rangeStr)) return;
|
|
18692
|
+
mergeCellRendered.add(rangeStr);
|
|
18693
|
+
}
|
|
18694
|
+
if (!cellData) return;
|
|
18695
|
+
if ((_cellData$markers = cellData.markers) === null || _cellData$markers === void 0 ? void 0 : _cellData$markers.tr) {
|
|
18696
|
+
ctx.save();
|
|
18697
|
+
const marker = cellData.markers.tr;
|
|
18698
|
+
const x = endX;
|
|
18699
|
+
const y = startY;
|
|
18700
|
+
ctx.fillStyle = marker.color;
|
|
18701
|
+
ctx.moveTo(x, y);
|
|
18702
|
+
ctx.beginPath();
|
|
18703
|
+
ctx.lineTo(x - marker.size, y);
|
|
18704
|
+
ctx.lineTo(x, y + marker.size);
|
|
18705
|
+
ctx.lineTo(x, y);
|
|
18706
|
+
ctx.closePath();
|
|
18707
|
+
ctx.fill();
|
|
18708
|
+
ctx.restore();
|
|
18709
|
+
}
|
|
18710
|
+
if ((_cellData$markers2 = cellData.markers) === null || _cellData$markers2 === void 0 ? void 0 : _cellData$markers2.tl) {
|
|
18711
|
+
ctx.save();
|
|
18712
|
+
const marker = cellData.markers.tl;
|
|
18713
|
+
const x = startX;
|
|
18714
|
+
const y = startY;
|
|
18715
|
+
ctx.fillStyle = marker.color;
|
|
18716
|
+
ctx.moveTo(x, y);
|
|
18717
|
+
ctx.beginPath();
|
|
18718
|
+
ctx.lineTo(x + marker.size, y);
|
|
18719
|
+
ctx.lineTo(x, y + marker.size);
|
|
18720
|
+
ctx.lineTo(x, y);
|
|
18721
|
+
ctx.closePath();
|
|
18722
|
+
ctx.fill();
|
|
18723
|
+
ctx.restore();
|
|
18724
|
+
}
|
|
18725
|
+
if ((_cellData$markers3 = cellData.markers) === null || _cellData$markers3 === void 0 ? void 0 : _cellData$markers3.br) {
|
|
18726
|
+
ctx.save();
|
|
18727
|
+
const marker = cellData.markers.br;
|
|
18728
|
+
const x = endX;
|
|
18729
|
+
const y = endY;
|
|
18730
|
+
ctx.fillStyle = marker.color;
|
|
18731
|
+
ctx.moveTo(x, y);
|
|
18732
|
+
ctx.beginPath();
|
|
18733
|
+
ctx.lineTo(x - marker.size, y);
|
|
18734
|
+
ctx.lineTo(x, y - marker.size);
|
|
18735
|
+
ctx.lineTo(x, y);
|
|
18736
|
+
ctx.closePath();
|
|
18737
|
+
ctx.fill();
|
|
18738
|
+
ctx.restore();
|
|
18739
|
+
}
|
|
18740
|
+
if ((_cellData$markers4 = cellData.markers) === null || _cellData$markers4 === void 0 ? void 0 : _cellData$markers4.bl) {
|
|
18741
|
+
ctx.save();
|
|
18742
|
+
const marker = cellData.markers.bl;
|
|
18743
|
+
const x = startX;
|
|
18744
|
+
const y = endY;
|
|
18745
|
+
ctx.fillStyle = marker.color;
|
|
18746
|
+
ctx.moveTo(x, y);
|
|
18747
|
+
ctx.beginPath();
|
|
18748
|
+
ctx.lineTo(x + marker.size, y);
|
|
18749
|
+
ctx.lineTo(x, y - marker.size);
|
|
18750
|
+
ctx.lineTo(x, y);
|
|
18751
|
+
ctx.closePath();
|
|
18752
|
+
ctx.fill();
|
|
18753
|
+
ctx.restore();
|
|
18754
|
+
}
|
|
18755
|
+
});
|
|
18744
18756
|
});
|
|
18745
18757
|
}
|
|
18746
18758
|
};
|
|
@@ -18964,8 +18976,9 @@ var SpreadsheetRowHeader = class extends SpreadsheetHeader {
|
|
|
18964
18976
|
const segment = spreadsheetSkeleton.rowColumnSegment;
|
|
18965
18977
|
if (!segment) return;
|
|
18966
18978
|
if (segment.startRow === -1 && segment.endRow === -1) return;
|
|
18967
|
-
const {
|
|
18968
|
-
|
|
18979
|
+
const { columnHeaderHeightAndMarginTop, rowHeaderWidth, rowHeaderWidthAndMarginLeft } = spreadsheetSkeleton;
|
|
18980
|
+
const marginLeft = rowHeaderWidthAndMarginLeft - rowHeaderWidth;
|
|
18981
|
+
ctx.translateWithPrecision(marginLeft, columnHeaderHeightAndMarginTop);
|
|
18969
18982
|
const extensions = this.getExtensionsByOrder();
|
|
18970
18983
|
for (const extension of extensions) extension.draw(ctx, parentScale, spreadsheetSkeleton);
|
|
18971
18984
|
}
|
|
@@ -18973,8 +18986,9 @@ var SpreadsheetRowHeader = class extends SpreadsheetHeader {
|
|
|
18973
18986
|
const oCoord = this.getInverseCoord(coord);
|
|
18974
18987
|
const skeleton = this.getSkeleton();
|
|
18975
18988
|
if (!skeleton) return false;
|
|
18976
|
-
const { rowHeaderWidth,
|
|
18977
|
-
|
|
18989
|
+
const { rowHeaderWidth, rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop } = skeleton;
|
|
18990
|
+
const marginLeft = rowHeaderWidthAndMarginLeft - rowHeaderWidth;
|
|
18991
|
+
if (oCoord.x >= marginLeft && oCoord.x <= rowHeaderWidthAndMarginLeft && oCoord.y > columnHeaderHeightAndMarginTop) return true;
|
|
18978
18992
|
return false;
|
|
18979
18993
|
}
|
|
18980
18994
|
_initialDefaultExtension() {
|
|
@@ -22089,20 +22103,28 @@ var Spreadsheet = class extends SheetComponent {
|
|
|
22089
22103
|
this._drawAuxiliary(ctx);
|
|
22090
22104
|
const parentScale = this.getParentScale();
|
|
22091
22105
|
const diffRanges = this._refreshIncrementalState && viewportInfo.diffBounds ? (_viewportInfo$diffBou = viewportInfo.diffBounds) === null || _viewportInfo$diffBou === void 0 ? void 0 : _viewportInfo$diffBou.map((bound) => spreadsheetSkeleton.getRangeByViewBound(bound)) : [];
|
|
22092
|
-
const
|
|
22106
|
+
const cacheRange = spreadsheetSkeleton.getCacheRangeByViewport(viewportInfo, this.isPrinting);
|
|
22107
|
+
const viewRanges = this._refreshIncrementalState && diffRanges.length > 0 ? diffRanges : [cacheRange];
|
|
22108
|
+
const overflowSafeViewRanges = this._refreshIncrementalState && diffRanges.length > 0 ? diffRanges.map((range) => ({
|
|
22109
|
+
...range,
|
|
22110
|
+
startColumn: cacheRange.startColumn,
|
|
22111
|
+
endColumn: cacheRange.endColumn
|
|
22112
|
+
})) : viewRanges;
|
|
22093
22113
|
const extensions = this.getExtensionsByOrder();
|
|
22094
22114
|
const scene = this.getScene();
|
|
22095
22115
|
for (const extension of extensions) {
|
|
22116
|
+
const extensionViewRanges = extension === this._fontExtension || extension === this._borderExtension ? overflowSafeViewRanges : viewRanges;
|
|
22096
22117
|
const timeKey = `${SHEET_EXTENSION_PREFIX}${extension.uKey}`;
|
|
22097
22118
|
const st = _univerjs_core.Tools.now();
|
|
22098
22119
|
extension.draw(ctx, parentScale, spreadsheetSkeleton, diffRanges, {
|
|
22099
|
-
viewRanges,
|
|
22120
|
+
viewRanges: extensionViewRanges,
|
|
22100
22121
|
checkOutOfViewBound: true,
|
|
22101
22122
|
viewportKey: viewportInfo.viewportKey,
|
|
22102
22123
|
viewBound: viewportInfo.cacheBound,
|
|
22103
22124
|
diffBounds: viewportInfo.diffBounds
|
|
22104
22125
|
});
|
|
22105
|
-
|
|
22126
|
+
const cost = _univerjs_core.Tools.now() - st;
|
|
22127
|
+
this.addRenderFrameTimeMetricToScene(timeKey, cost, scene);
|
|
22106
22128
|
}
|
|
22107
22129
|
}
|
|
22108
22130
|
addRenderFrameTimeMetricToScene(timeKey, val, scene) {
|
|
@@ -22126,8 +22148,8 @@ var Spreadsheet = class extends SheetComponent {
|
|
|
22126
22148
|
const oCoord = this.getInverseCoord(coord);
|
|
22127
22149
|
const skeleton = this.getSkeleton();
|
|
22128
22150
|
if (!skeleton) return false;
|
|
22129
|
-
const {
|
|
22130
|
-
if (oCoord.x >
|
|
22151
|
+
const { rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop } = skeleton;
|
|
22152
|
+
if (oCoord.x > rowHeaderWidthAndMarginLeft && oCoord.y > columnHeaderHeightAndMarginTop) return true;
|
|
22131
22153
|
return false;
|
|
22132
22154
|
}
|
|
22133
22155
|
getNoMergeCellPositionByIndex(rowIndex, columnIndex) {
|
|
@@ -22195,7 +22217,7 @@ var Spreadsheet = class extends SheetComponent {
|
|
|
22195
22217
|
}
|
|
22196
22218
|
renderByViewports(mainCtx, viewportInfo, spreadsheetSkeleton) {
|
|
22197
22219
|
const { diffBounds, diffX, diffY, viewPortPosition, cacheCanvas, leftOrigin, topOrigin, bufferEdgeX, bufferEdgeY, isDirty: isViewportDirty, isForceDirty: isViewportForceDirty } = viewportInfo;
|
|
22198
|
-
const {
|
|
22220
|
+
const { rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop } = spreadsheetSkeleton;
|
|
22199
22221
|
const { a: scaleX = 1, d: scaleY = 1 } = mainCtx.getTransform();
|
|
22200
22222
|
const bufferEdgeSizeX = bufferEdgeX * scaleX / window.devicePixelRatio;
|
|
22201
22223
|
const bufferEdgeSizeY = bufferEdgeY * scaleY / window.devicePixelRatio;
|
|
@@ -22228,20 +22250,20 @@ var Spreadsheet = class extends SheetComponent {
|
|
|
22228
22250
|
bufferEdgeY,
|
|
22229
22251
|
scaleX,
|
|
22230
22252
|
scaleY,
|
|
22231
|
-
|
|
22232
|
-
|
|
22253
|
+
columnHeaderHeightAndMarginTop,
|
|
22254
|
+
rowHeaderWidthAndMarginLeft
|
|
22233
22255
|
});
|
|
22234
22256
|
}
|
|
22235
22257
|
const sourceLeft = bufferEdgeSizeX * Math.min(1, window.devicePixelRatio);
|
|
22236
22258
|
const sourceTop = bufferEdgeSizeY * Math.min(1, window.devicePixelRatio);
|
|
22237
22259
|
const { left, top, right, bottom } = viewPortPosition;
|
|
22238
|
-
const dw = right - left +
|
|
22239
|
-
const dh = bottom - top +
|
|
22260
|
+
const dw = right - left + rowHeaderWidthAndMarginLeft;
|
|
22261
|
+
const dh = bottom - top + columnHeaderHeightAndMarginTop;
|
|
22240
22262
|
this._applyCache(cacheCanvas, mainCtx, sourceLeft, sourceTop, dw, dh, left, top, dw, dh);
|
|
22241
22263
|
cacheCtx.restore();
|
|
22242
22264
|
}
|
|
22243
22265
|
paintNewAreaForScrolling(viewportInfo, param) {
|
|
22244
|
-
const { cacheCanvas, cacheCtx, mainCtx, topOrigin, leftOrigin, bufferEdgeX, bufferEdgeY, scaleX, scaleY,
|
|
22266
|
+
const { cacheCanvas, cacheCtx, mainCtx, topOrigin, leftOrigin, bufferEdgeX, bufferEdgeY, scaleX, scaleY, columnHeaderHeightAndMarginTop, rowHeaderWidthAndMarginLeft } = param;
|
|
22245
22267
|
const { shouldCacheUpdate, diffCacheBounds, diffX, diffY } = viewportInfo;
|
|
22246
22268
|
cacheCtx.save();
|
|
22247
22269
|
cacheCtx.setTransform(1, 0, 0, 1, 0, 0);
|
|
@@ -22254,8 +22276,8 @@ var Spreadsheet = class extends SheetComponent {
|
|
|
22254
22276
|
cacheCtx.translateWithPrecision(m.e / m.a - leftOrigin + bufferEdgeX, m.f / m.d - topOrigin + bufferEdgeY);
|
|
22255
22277
|
if (shouldCacheUpdate) for (const diffBound of diffCacheBounds) {
|
|
22256
22278
|
const { left: diffLeft, right: diffRight, bottom: diffBottom, top: diffTop } = diffBound;
|
|
22257
|
-
const x = diffLeft -
|
|
22258
|
-
const y = diffTop -
|
|
22279
|
+
const x = diffLeft - rowHeaderWidthAndMarginLeft;
|
|
22280
|
+
const y = diffTop - columnHeaderHeightAndMarginTop;
|
|
22259
22281
|
const w = diffRight - diffLeft;
|
|
22260
22282
|
const h = diffBottom - diffTop;
|
|
22261
22283
|
cacheCtx.clearRectByPrecision(x, y, w, h);
|
|
@@ -22301,9 +22323,9 @@ var Spreadsheet = class extends SheetComponent {
|
|
|
22301
22323
|
if (!segment) return;
|
|
22302
22324
|
if (segment.startRow === -1 && segment.endRow === -1 || segment.startColumn === -1 && segment.endColumn === -1) return;
|
|
22303
22325
|
mainCtx.save();
|
|
22304
|
-
const {
|
|
22305
|
-
mainCtx.translateWithPrecision(
|
|
22306
|
-
(_this$getScene = this.getScene()) === null || _this$getScene === void 0 || _this$getScene.updateTransformerZero(
|
|
22326
|
+
const { rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop } = spreadsheetSkeleton;
|
|
22327
|
+
mainCtx.translateWithPrecision(rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop);
|
|
22328
|
+
(_this$getScene = this.getScene()) === null || _this$getScene === void 0 || _this$getScene.updateTransformerZero(rowHeaderWidthAndMarginLeft, columnHeaderHeightAndMarginTop);
|
|
22307
22329
|
const { viewportKey } = viewportInfo;
|
|
22308
22330
|
if (sheetContentViewportKeys.includes(viewportKey)) if (viewportInfo && viewportInfo.cacheCanvas) this.renderByViewports(mainCtx, viewportInfo, spreadsheetSkeleton);
|
|
22309
22331
|
else this._draw(mainCtx, viewportInfo);
|
|
@@ -24440,14 +24462,13 @@ let Engine = class Engine extends _univerjs_core.Disposable {
|
|
|
24440
24462
|
}
|
|
24441
24463
|
_getPassive() {
|
|
24442
24464
|
let passiveSupported = false;
|
|
24443
|
-
const noop = () => {};
|
|
24444
24465
|
try {
|
|
24445
24466
|
const options = { passive: { get() {
|
|
24446
24467
|
passiveSupported = true;
|
|
24447
24468
|
} } };
|
|
24448
24469
|
const canvasEle = this.getCanvasElement();
|
|
24449
|
-
canvasEle.addEventListener("test", noop, options);
|
|
24450
|
-
canvasEle.removeEventListener("test", noop, options);
|
|
24470
|
+
canvasEle.addEventListener("test", _univerjs_core.noop, options);
|
|
24471
|
+
canvasEle.removeEventListener("test", _univerjs_core.noop, options);
|
|
24451
24472
|
} catch (e) {}
|
|
24452
24473
|
return passiveSupported;
|
|
24453
24474
|
}
|
|
@@ -24474,7 +24495,7 @@ Engine = __decorate([__decorateParam(2, ICanvasColorService)], Engine);
|
|
|
24474
24495
|
//#endregion
|
|
24475
24496
|
//#region package.json
|
|
24476
24497
|
var name = "@univerjs/engine-render";
|
|
24477
|
-
var version = "0.
|
|
24498
|
+
var version = "0.23.0-insiders.20260522-e8f2a3b";
|
|
24478
24499
|
|
|
24479
24500
|
//#endregion
|
|
24480
24501
|
//#region src/config/config.ts
|