@univerjs/sheets-drawing 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +268 -450
- package/lib/es/index.js +269 -452
- package/lib/index.js +269 -452
- package/lib/types/controllers/sheet-drawing-transform-affected.controller.d.ts +7 -5
- package/lib/types/index.d.ts +1 -1
- package/lib/types/services/sheet-drawing-placement.d.ts +22 -0
- package/lib/umd/index.js +1 -1
- package/package.json +6 -6
package/lib/cjs/index.js
CHANGED
|
@@ -37,8 +37,14 @@ function transformToDrawingPosition(transform, skeleton) {
|
|
|
37
37
|
angle,
|
|
38
38
|
skewX,
|
|
39
39
|
skewY,
|
|
40
|
-
from: skeleton.getCellIndexAndOffsetByPosition(left, top
|
|
41
|
-
|
|
40
|
+
from: skeleton.getCellIndexAndOffsetByPosition(left, top, 1, 1, {
|
|
41
|
+
x: 0,
|
|
42
|
+
y: 0
|
|
43
|
+
}),
|
|
44
|
+
to: skeleton.getCellIndexAndOffsetByPosition(left + width, top + height, 1, 1, {
|
|
45
|
+
x: 0,
|
|
46
|
+
y: 0
|
|
47
|
+
})
|
|
42
48
|
};
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
@@ -340,6 +346,12 @@ const SetDrawingArrangeCommand = {
|
|
|
340
346
|
|
|
341
347
|
//#endregion
|
|
342
348
|
//#region src/services/sheet-drawing-placement.ts
|
|
349
|
+
const PLACEMENT_ERROR = {
|
|
350
|
+
CELL_INVALID: "SHEET_DRAWING_PLACEMENT_CELL_INVALID",
|
|
351
|
+
EXTENT_INVALID: "SHEET_DRAWING_PLACEMENT_EXTENT_INVALID",
|
|
352
|
+
KIND_INVALID: "SHEET_DRAWING_PLACEMENT_KIND_INVALID",
|
|
353
|
+
POSITION_INVALID: "SHEET_DRAWING_PLACEMENT_POSITION_INVALID"
|
|
354
|
+
};
|
|
343
355
|
function getSheetDrawingPlacement(drawing) {
|
|
344
356
|
var _drawing$transform5, _drawing$transform6;
|
|
345
357
|
const anchorType = drawing.anchorType ?? "0";
|
|
@@ -366,7 +378,57 @@ function getSheetDrawingPlacement(drawing) {
|
|
|
366
378
|
};
|
|
367
379
|
}
|
|
368
380
|
function applySheetDrawingPlacement(drawing, input, skeleton) {
|
|
369
|
-
|
|
381
|
+
return resolveSheetDrawingPlacement(drawing, normalizePlacement(input, skeleton, requiresDrawingArea(drawing)), skeleton);
|
|
382
|
+
}
|
|
383
|
+
/** Refresh layout-derived geometry without changing the drawing's anchor semantics. */
|
|
384
|
+
function refreshSheetDrawingPlacement(drawing, skeleton) {
|
|
385
|
+
const result = tryRefreshSheetDrawingPlacement(drawing, skeleton);
|
|
386
|
+
if (!result.ok) throw createPlacementError(result);
|
|
387
|
+
return result.drawing;
|
|
388
|
+
}
|
|
389
|
+
/** Validate persisted markers before any caller reads them to select a refresh range. */
|
|
390
|
+
function validateSheetDrawingPlacement(drawing) {
|
|
391
|
+
var _drawing$sheetTransfo, _drawing$sheetTransfo2;
|
|
392
|
+
if (!drawing || typeof drawing !== "object") return {
|
|
393
|
+
ok: false,
|
|
394
|
+
reason: PLACEMENT_ERROR.KIND_INVALID
|
|
395
|
+
};
|
|
396
|
+
const anchorType = drawing.anchorType ?? "0";
|
|
397
|
+
if (anchorType === "2") return;
|
|
398
|
+
if (anchorType !== "0" && anchorType !== "1") return {
|
|
399
|
+
ok: false,
|
|
400
|
+
reason: PLACEMENT_ERROR.KIND_INVALID
|
|
401
|
+
};
|
|
402
|
+
const markerFailure = validateCellPosition((_drawing$sheetTransfo = drawing.sheetTransform) === null || _drawing$sheetTransfo === void 0 ? void 0 : _drawing$sheetTransfo.from) ?? validateCellPosition((_drawing$sheetTransfo2 = drawing.sheetTransform) === null || _drawing$sheetTransfo2 === void 0 ? void 0 : _drawing$sheetTransfo2.to);
|
|
403
|
+
if (markerFailure) return markerFailure;
|
|
404
|
+
return validatePlacement(getSheetDrawingPlacement(drawing), requiresDrawingArea(drawing));
|
|
405
|
+
}
|
|
406
|
+
/** Expected snapshot errors are results; unexpected calculation failures are caught by the task owner. */
|
|
407
|
+
function tryRefreshSheetDrawingPlacement(drawing, skeleton) {
|
|
408
|
+
var _resolved$transform, _resolved$transform2;
|
|
409
|
+
const failure = validateSheetDrawingPlacement(drawing);
|
|
410
|
+
if (failure) return failure;
|
|
411
|
+
if (drawing.anchorType === "2") return {
|
|
412
|
+
ok: true,
|
|
413
|
+
drawing
|
|
414
|
+
};
|
|
415
|
+
const resolved = resolveSheetDrawingPlacement(drawing, getSheetDrawingPlacement(drawing), skeleton);
|
|
416
|
+
const extentFailure = validateExtent(((_resolved$transform = resolved.transform) === null || _resolved$transform === void 0 ? void 0 : _resolved$transform.width) ?? 0, ((_resolved$transform2 = resolved.transform) === null || _resolved$transform2 === void 0 ? void 0 : _resolved$transform2.height) ?? 0, requiresDrawingArea(drawing), true);
|
|
417
|
+
if (extentFailure) return extentFailure;
|
|
418
|
+
return {
|
|
419
|
+
ok: true,
|
|
420
|
+
drawing: {
|
|
421
|
+
...drawing,
|
|
422
|
+
sheetTransform: resolved.sheetTransform,
|
|
423
|
+
transform: resolved.transform,
|
|
424
|
+
axisAlignSheetTransform: resolved.axisAlignSheetTransform
|
|
425
|
+
}
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
function requiresDrawingArea(drawing) {
|
|
429
|
+
return drawing.drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_IMAGE || drawing.drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_DOM;
|
|
430
|
+
}
|
|
431
|
+
function resolveSheetDrawingPlacement(drawing, placement, skeleton) {
|
|
370
432
|
if (placement.kind === "2") {
|
|
371
433
|
const transform = withExistingTransform(drawing.transform, placement);
|
|
372
434
|
const sheetTransform = absoluteSheetTransform(placement, drawing.sheetTransform);
|
|
@@ -380,29 +442,43 @@ function applySheetDrawingPlacement(drawing, input, skeleton) {
|
|
|
380
442
|
}
|
|
381
443
|
if (!skeleton) throw new Error("SHEET_DRAWING_PLACEMENT_SKELETON_REQUIRED");
|
|
382
444
|
if (placement.kind === "0") {
|
|
383
|
-
const converted = (0, _univerjs_sheets.convertPositionCellToSheetOverGrid)(drawing.unitId, drawing.subUnitId, placement.from, placement.width, placement.height, skeleton);
|
|
384
|
-
const sheetTransform = withExistingSheetTransform(drawing.sheetTransform,
|
|
445
|
+
const converted = (0, _univerjs_sheets.convertPositionCellToSheetOverGrid)(drawing.unitId, drawing.subUnitId, getVisibleCellPosition(placement.from, skeleton), placement.width, placement.height, skeleton);
|
|
446
|
+
const sheetTransform = withExistingSheetTransform(drawing.sheetTransform, {
|
|
447
|
+
from: placement.from,
|
|
448
|
+
to: converted.sheetTransform.to
|
|
449
|
+
});
|
|
385
450
|
const transform = withExistingTransform(drawing.transform, converted.transform);
|
|
386
451
|
return {
|
|
387
452
|
...drawing,
|
|
388
453
|
anchorType: "0",
|
|
389
454
|
sheetTransform,
|
|
390
455
|
transform,
|
|
391
|
-
axisAlignSheetTransform: transformToAxisAlignPosition(transform, skeleton)
|
|
456
|
+
axisAlignSheetTransform: withExistingSheetTransform(drawing.axisAlignSheetTransform, transformToAxisAlignPosition(transform, skeleton))
|
|
392
457
|
};
|
|
393
458
|
}
|
|
394
459
|
const sheetTransform = withExistingSheetTransform(drawing.sheetTransform, {
|
|
395
460
|
from: placement.from,
|
|
396
461
|
to: placement.to
|
|
397
462
|
});
|
|
398
|
-
const bounds = (0, _univerjs_sheets.convertPositionSheetOverGridToAbsolute)(drawing.unitId, drawing.subUnitId,
|
|
463
|
+
const bounds = (0, _univerjs_sheets.convertPositionSheetOverGridToAbsolute)(drawing.unitId, drawing.subUnitId, {
|
|
464
|
+
from: getVisibleCellPosition(placement.from, skeleton),
|
|
465
|
+
to: getVisibleCellPosition(placement.to, skeleton)
|
|
466
|
+
}, skeleton);
|
|
399
467
|
const transform = withExistingTransform(drawing.transform, bounds);
|
|
400
468
|
return {
|
|
401
469
|
...drawing,
|
|
402
470
|
anchorType: "1",
|
|
403
471
|
sheetTransform,
|
|
404
472
|
transform,
|
|
405
|
-
axisAlignSheetTransform: transformToAxisAlignPosition(transform, skeleton)
|
|
473
|
+
axisAlignSheetTransform: withExistingSheetTransform(drawing.axisAlignSheetTransform, transformToAxisAlignPosition(transform, skeleton))
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
function getVisibleCellPosition(position, skeleton) {
|
|
477
|
+
const cell = skeleton.getNoMergeCellWithCoordByIndex(position.row, position.column);
|
|
478
|
+
return {
|
|
479
|
+
...position,
|
|
480
|
+
columnOffset: cell.startX === cell.endX ? 0 : position.columnOffset,
|
|
481
|
+
rowOffset: cell.startY === cell.endY ? 0 : position.rowOffset
|
|
406
482
|
};
|
|
407
483
|
}
|
|
408
484
|
/**
|
|
@@ -414,14 +490,14 @@ function normalizeSheetDrawingPlacement(input, skeleton) {
|
|
|
414
490
|
}
|
|
415
491
|
function normalizePlacement(input, skeleton, requiresArea) {
|
|
416
492
|
if (!("bounds" in input)) {
|
|
417
|
-
validatePlacement(input, requiresArea);
|
|
418
|
-
if (input.kind === "1" && skeleton) validateBounds((0, _univerjs_sheets.convertPositionSheetOverGridToAbsolute)(skeleton.worksheet.getUnitId(), skeleton.worksheet.getSheetId(), {
|
|
493
|
+
assertValidPlacement(validatePlacement(input, requiresArea));
|
|
494
|
+
if (input.kind === "1" && skeleton) assertValidPlacement(validateBounds((0, _univerjs_sheets.convertPositionSheetOverGridToAbsolute)(skeleton.worksheet.getUnitId(), skeleton.worksheet.getSheetId(), {
|
|
419
495
|
from: input.from,
|
|
420
496
|
to: input.to
|
|
421
|
-
}, skeleton), requiresArea);
|
|
497
|
+
}, skeleton), requiresArea));
|
|
422
498
|
return input;
|
|
423
499
|
}
|
|
424
|
-
validateBounds(input.bounds, requiresArea);
|
|
500
|
+
assertValidPlacement(validateBounds(input.bounds, requiresArea));
|
|
425
501
|
if (input.kind === "2") return {
|
|
426
502
|
kind: "2",
|
|
427
503
|
...input.bounds
|
|
@@ -439,7 +515,7 @@ function normalizePlacement(input, skeleton, requiresArea) {
|
|
|
439
515
|
from: sheetTransform.from,
|
|
440
516
|
to: sheetTransform.to
|
|
441
517
|
};
|
|
442
|
-
throw new Error(
|
|
518
|
+
throw new Error(PLACEMENT_ERROR.KIND_INVALID);
|
|
443
519
|
}
|
|
444
520
|
function withExistingSheetTransform(current, placement) {
|
|
445
521
|
return {
|
|
@@ -475,36 +551,50 @@ function absoluteSheetTransform(placement, current) {
|
|
|
475
551
|
};
|
|
476
552
|
}
|
|
477
553
|
function validatePlacement(placement, requiresArea) {
|
|
478
|
-
if (placement.kind === "0")
|
|
479
|
-
|
|
480
|
-
validateExtent(placement.width, placement.height, requiresArea);
|
|
481
|
-
return;
|
|
482
|
-
}
|
|
483
|
-
if (placement.kind === "1") {
|
|
484
|
-
validateCellPosition(placement.from);
|
|
485
|
-
validateCellPosition(placement.to);
|
|
486
|
-
return;
|
|
487
|
-
}
|
|
554
|
+
if (placement.kind === "0") return validateCellPosition(placement.from) ?? validateExtent(placement.width, placement.height, requiresArea);
|
|
555
|
+
if (placement.kind === "1") return validateCellPosition(placement.from) ?? validateCellPosition(placement.to);
|
|
488
556
|
if (placement.kind === "2") {
|
|
489
|
-
if (!Number.isFinite(placement.left) || !Number.isFinite(placement.top))
|
|
490
|
-
|
|
491
|
-
|
|
557
|
+
if (!Number.isFinite(placement.left) || !Number.isFinite(placement.top)) return {
|
|
558
|
+
ok: false,
|
|
559
|
+
reason: PLACEMENT_ERROR.POSITION_INVALID
|
|
560
|
+
};
|
|
561
|
+
return validateExtent(placement.width, placement.height, requiresArea);
|
|
492
562
|
}
|
|
493
|
-
|
|
563
|
+
return {
|
|
564
|
+
ok: false,
|
|
565
|
+
reason: PLACEMENT_ERROR.KIND_INVALID
|
|
566
|
+
};
|
|
494
567
|
}
|
|
495
568
|
function validateBounds(bounds, requiresArea) {
|
|
496
|
-
if (!Number.isFinite(bounds.left) || !Number.isFinite(bounds.top))
|
|
497
|
-
|
|
569
|
+
if (!bounds || !Number.isFinite(bounds.left) || !Number.isFinite(bounds.top)) return {
|
|
570
|
+
ok: false,
|
|
571
|
+
reason: PLACEMENT_ERROR.POSITION_INVALID
|
|
572
|
+
};
|
|
573
|
+
return validateExtent(bounds.width, bounds.height, requiresArea);
|
|
498
574
|
}
|
|
499
575
|
function validateCellPosition(position) {
|
|
500
|
-
if (!Number.isInteger(position.row) || !Number.isInteger(position.column) || position.row < 0 || position.column < 0 || !Number.isFinite(position.rowOffset) || !Number.isFinite(position.columnOffset))
|
|
576
|
+
if (!position || !Number.isInteger(position.row) || !Number.isInteger(position.column) || position.row < 0 || position.column < 0 || !Number.isFinite(position.rowOffset) || !Number.isFinite(position.columnOffset)) return {
|
|
577
|
+
ok: false,
|
|
578
|
+
reason: PLACEMENT_ERROR.CELL_INVALID
|
|
579
|
+
};
|
|
501
580
|
}
|
|
502
|
-
function validateExtent(width, height, requiresArea) {
|
|
503
|
-
const hasInvalidZeroExtent = requiresArea ? width === 0 || height === 0 : width === 0 && height === 0;
|
|
504
|
-
if (!Number.isFinite(width) || !Number.isFinite(height) || width < 0 || height < 0 || hasInvalidZeroExtent)
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
581
|
+
function validateExtent(width, height, requiresArea, allowCollapsed = false) {
|
|
582
|
+
const hasInvalidZeroExtent = !allowCollapsed && (requiresArea ? width === 0 || height === 0 : width === 0 && height === 0);
|
|
583
|
+
if (!Number.isFinite(width) || !Number.isFinite(height) || width < 0 || height < 0 || hasInvalidZeroExtent) return {
|
|
584
|
+
ok: false,
|
|
585
|
+
reason: PLACEMENT_ERROR.EXTENT_INVALID,
|
|
586
|
+
details: {
|
|
587
|
+
width,
|
|
588
|
+
height
|
|
589
|
+
}
|
|
590
|
+
};
|
|
591
|
+
}
|
|
592
|
+
function assertValidPlacement(failure) {
|
|
593
|
+
if (failure) throw createPlacementError(failure);
|
|
594
|
+
}
|
|
595
|
+
function createPlacementError(failure) {
|
|
596
|
+
const error = failure.reason === PLACEMENT_ERROR.POSITION_INVALID ? new TypeError(failure.reason) : new Error(failure.reason);
|
|
597
|
+
return Object.assign(error, failure.details);
|
|
508
598
|
}
|
|
509
599
|
|
|
510
600
|
//#endregion
|
|
@@ -935,7 +1025,7 @@ SheetsDrawingLoadController = __decorate([
|
|
|
935
1025
|
//#endregion
|
|
936
1026
|
//#region package.json
|
|
937
1027
|
var name = "@univerjs/sheets-drawing";
|
|
938
|
-
var version = "1.
|
|
1028
|
+
var version = "1.2.0";
|
|
939
1029
|
|
|
940
1030
|
//#endregion
|
|
941
1031
|
//#region src/config/config.ts
|
|
@@ -1069,7 +1159,7 @@ const REFRESH_MUTATIONS = [
|
|
|
1069
1159
|
_univerjs_sheets.SetWorksheetColWidthMutation.id
|
|
1070
1160
|
];
|
|
1071
1161
|
let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffectedController extends _univerjs_core.Disposable {
|
|
1072
|
-
constructor(_commandService, _sheetSkeletonService, _sheetInterceptorService, _sheetDrawingService, _drawingManagerService, _univerInstanceService, _transformPlanService) {
|
|
1162
|
+
constructor(_commandService, _sheetSkeletonService, _sheetInterceptorService, _sheetDrawingService, _drawingManagerService, _univerInstanceService, _transformPlanService, _logService) {
|
|
1073
1163
|
super();
|
|
1074
1164
|
this._commandService = _commandService;
|
|
1075
1165
|
this._sheetSkeletonService = _sheetSkeletonService;
|
|
@@ -1078,6 +1168,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1078
1168
|
this._drawingManagerService = _drawingManagerService;
|
|
1079
1169
|
this._univerInstanceService = _univerInstanceService;
|
|
1080
1170
|
this._transformPlanService = _transformPlanService;
|
|
1171
|
+
this._logService = _logService;
|
|
1081
1172
|
_defineProperty(this, "_currentCommand", {
|
|
1082
1173
|
id: "",
|
|
1083
1174
|
params: {}
|
|
@@ -1133,13 +1224,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1133
1224
|
} else if (id === _univerjs_sheets.InsertRangeMoveRightCommand.id) {
|
|
1134
1225
|
const { range } = params;
|
|
1135
1226
|
return this._getRangeMoveUndo(range, 3);
|
|
1136
|
-
} else if (id === _univerjs_sheets.SetRowHiddenCommand.id || id === _univerjs_sheets.SetSpecificRowsVisibleCommand.id) {
|
|
1137
|
-
const { unitId, subUnitId, ranges } = params;
|
|
1138
|
-
return this._getDrawingUndoForRowVisible(unitId, subUnitId, ranges);
|
|
1139
|
-
} else if (id === _univerjs_sheets.SetColHiddenCommand.id || id === _univerjs_sheets.SetSpecificColsVisibleCommand.id) {
|
|
1140
|
-
const { unitId, subUnitId, ranges } = params;
|
|
1141
|
-
return this._getDrawingUndoForColVisible(unitId, subUnitId, ranges);
|
|
1142
|
-
} else if (id === _univerjs_sheets.DeltaRowHeightCommand.id || id === _univerjs_sheets.DeltaColumnWidthCommand.id || id === _univerjs_sheets.SetRowHeightCommand.id || id === _univerjs_sheets.SetColWidthCommand.id) {
|
|
1227
|
+
} else if (id === _univerjs_sheets.SetRowHiddenCommand.id || id === _univerjs_sheets.SetSpecificRowsVisibleCommand.id || id === _univerjs_sheets.SetColHiddenCommand.id || id === _univerjs_sheets.SetSpecificColsVisibleCommand.id || id === _univerjs_sheets.DeltaRowHeightCommand.id || id === _univerjs_sheets.DeltaColumnWidthCommand.id || id === _univerjs_sheets.SetRowHeightCommand.id || id === _univerjs_sheets.SetColWidthCommand.id) {
|
|
1143
1228
|
const { unitId, subUnitId, ranges } = params;
|
|
1144
1229
|
return this._getDrawingUndoForRowAndColSize(unitId, subUnitId, ranges);
|
|
1145
1230
|
}
|
|
@@ -1370,266 +1455,20 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1370
1455
|
newTransform = param === null || param === void 0 ? void 0 : param.newTransform;
|
|
1371
1456
|
axisAlignSheetTransform = (param === null || param === void 0 ? void 0 : param.axisAlignSheetTransform) ?? void 0;
|
|
1372
1457
|
}
|
|
1373
|
-
if (newSheetTransform && newTransform) {
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
axisAlignSheetTransform
|
|
1380
|
-
});
|
|
1381
|
-
}
|
|
1458
|
+
if (newSheetTransform && newTransform) updateDrawings.push({
|
|
1459
|
+
...drawing,
|
|
1460
|
+
sheetTransform: newSheetTransform,
|
|
1461
|
+
transform: newTransform,
|
|
1462
|
+
axisAlignSheetTransform
|
|
1463
|
+
});
|
|
1382
1464
|
return {
|
|
1383
1465
|
updateDrawings,
|
|
1384
1466
|
deleteDrawings
|
|
1385
1467
|
};
|
|
1386
1468
|
}
|
|
1387
|
-
_remainDrawingSize(transform, updateDrawings, drawing, skeleton) {
|
|
1388
|
-
const newSheetTransform = transformToDrawingPosition({ ...transform }, skeleton);
|
|
1389
|
-
if (newSheetTransform) {
|
|
1390
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition({ ...transform }, skeleton);
|
|
1391
|
-
updateDrawings.push({
|
|
1392
|
-
...drawing,
|
|
1393
|
-
sheetTransform: newSheetTransform,
|
|
1394
|
-
axisAlignSheetTransform
|
|
1395
|
-
});
|
|
1396
|
-
}
|
|
1397
|
-
}
|
|
1398
|
-
_getDrawingUndoForColVisible(unitId, subUnitId, ranges) {
|
|
1399
|
-
const sheetSkeletonParam = this._getCalculatedSkeletonParam(unitId, subUnitId);
|
|
1400
|
-
if (!sheetSkeletonParam) return {
|
|
1401
|
-
redos: [],
|
|
1402
|
-
undos: []
|
|
1403
|
-
};
|
|
1404
|
-
const { skeleton } = sheetSkeletonParam;
|
|
1405
|
-
const drawingData = this._drawingManagerService.getDrawingData(unitId, subUnitId);
|
|
1406
|
-
const updateDrawings = [];
|
|
1407
|
-
const preUpdateDrawings = [];
|
|
1408
|
-
Object.keys(drawingData).forEach((drawingId) => {
|
|
1409
|
-
const drawing = drawingData[drawingId];
|
|
1410
|
-
const { sheetTransform, transform, anchorType = "0" } = drawing;
|
|
1411
|
-
if (anchorType === "2") this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
|
|
1412
|
-
else {
|
|
1413
|
-
const { from, to } = sheetTransform;
|
|
1414
|
-
const { row: fromRow, column: fromColumn } = from;
|
|
1415
|
-
const { row: toRow, column: toColumn } = to;
|
|
1416
|
-
for (let i = 0; i < ranges.length; i++) {
|
|
1417
|
-
const { startColumn, endColumn } = ranges[i];
|
|
1418
|
-
if (toColumn < startColumn) continue;
|
|
1419
|
-
if (anchorType === "0") {
|
|
1420
|
-
let newSheetTransform = null;
|
|
1421
|
-
let newTransform = null;
|
|
1422
|
-
if (fromColumn >= startColumn && fromColumn <= endColumn) {
|
|
1423
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1424
|
-
startColumn: fromColumn,
|
|
1425
|
-
endColumn,
|
|
1426
|
-
startRow: fromRow,
|
|
1427
|
-
endRow: toRow
|
|
1428
|
-
});
|
|
1429
|
-
newTransform = {
|
|
1430
|
-
...transform,
|
|
1431
|
-
left: selectionCell.startX
|
|
1432
|
-
};
|
|
1433
|
-
}
|
|
1434
|
-
if (newTransform) {
|
|
1435
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1436
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1437
|
-
if (newSheetTransform && newTransform) {
|
|
1438
|
-
updateDrawings.push({
|
|
1439
|
-
...drawing,
|
|
1440
|
-
sheetTransform: newSheetTransform,
|
|
1441
|
-
transform: newTransform,
|
|
1442
|
-
axisAlignSheetTransform
|
|
1443
|
-
});
|
|
1444
|
-
break;
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1447
|
-
continue;
|
|
1448
|
-
}
|
|
1449
|
-
if (fromColumn >= startColumn && toColumn <= endColumn) continue;
|
|
1450
|
-
let newSheetTransform = null;
|
|
1451
|
-
let newTransform = null;
|
|
1452
|
-
if (fromColumn >= startColumn && fromColumn <= endColumn) {
|
|
1453
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1454
|
-
startColumn: fromColumn,
|
|
1455
|
-
endColumn,
|
|
1456
|
-
startRow: fromRow,
|
|
1457
|
-
endRow: toRow
|
|
1458
|
-
});
|
|
1459
|
-
newTransform = {
|
|
1460
|
-
...transform,
|
|
1461
|
-
left: (selectionCell === null || selectionCell === void 0 ? void 0 : selectionCell.startX) || 0,
|
|
1462
|
-
width: ((transform === null || transform === void 0 ? void 0 : transform.width) || 0) - selectionCell.endX + selectionCell.startX
|
|
1463
|
-
};
|
|
1464
|
-
} else if (toColumn >= startColumn && toColumn <= endColumn) {
|
|
1465
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1466
|
-
startColumn,
|
|
1467
|
-
endColumn: toColumn,
|
|
1468
|
-
startRow: fromRow,
|
|
1469
|
-
endRow: toRow
|
|
1470
|
-
});
|
|
1471
|
-
newTransform = {
|
|
1472
|
-
...transform,
|
|
1473
|
-
left: selectionCell.startX - ((transform === null || transform === void 0 ? void 0 : transform.width) || 0)
|
|
1474
|
-
};
|
|
1475
|
-
} else {
|
|
1476
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1477
|
-
startColumn,
|
|
1478
|
-
endColumn,
|
|
1479
|
-
startRow: fromRow,
|
|
1480
|
-
endRow: toRow
|
|
1481
|
-
});
|
|
1482
|
-
newTransform = {
|
|
1483
|
-
...transform,
|
|
1484
|
-
width: ((transform === null || transform === void 0 ? void 0 : transform.width) || 0) - selectionCell.endX + selectionCell.startX
|
|
1485
|
-
};
|
|
1486
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1487
|
-
if (newSheetTransform && newTransform) {
|
|
1488
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1489
|
-
preUpdateDrawings.push({
|
|
1490
|
-
...drawing,
|
|
1491
|
-
sheetTransform: newSheetTransform,
|
|
1492
|
-
transform: newTransform,
|
|
1493
|
-
axisAlignSheetTransform
|
|
1494
|
-
});
|
|
1495
|
-
break;
|
|
1496
|
-
}
|
|
1497
|
-
}
|
|
1498
|
-
if (newTransform) newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1499
|
-
if (newTransform && newSheetTransform) {
|
|
1500
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1501
|
-
updateDrawings.push({
|
|
1502
|
-
...drawing,
|
|
1503
|
-
sheetTransform: newSheetTransform,
|
|
1504
|
-
transform: newTransform,
|
|
1505
|
-
axisAlignSheetTransform
|
|
1506
|
-
});
|
|
1507
|
-
break;
|
|
1508
|
-
} else this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
|
|
1509
|
-
}
|
|
1510
|
-
}
|
|
1511
|
-
});
|
|
1512
|
-
return this._finalizePlan(unitId, subUnitId, [...preUpdateDrawings, ...updateDrawings]);
|
|
1513
|
-
}
|
|
1514
1469
|
_createUndoAndRedoMutation(unitId, subUnitId, updateDrawings) {
|
|
1515
1470
|
return this._finalizePlan(unitId, subUnitId, updateDrawings);
|
|
1516
1471
|
}
|
|
1517
|
-
_getDrawingUndoForRowVisible(unitId, subUnitId, ranges) {
|
|
1518
|
-
const sheetSkeletonParam = this._getCalculatedSkeletonParam(unitId, subUnitId);
|
|
1519
|
-
if (!sheetSkeletonParam) return {
|
|
1520
|
-
redos: [],
|
|
1521
|
-
undos: []
|
|
1522
|
-
};
|
|
1523
|
-
const { skeleton } = sheetSkeletonParam;
|
|
1524
|
-
const drawingData = this._drawingManagerService.getDrawingData(unitId, subUnitId);
|
|
1525
|
-
const updateDrawings = [];
|
|
1526
|
-
const preUpdateDrawings = [];
|
|
1527
|
-
Object.keys(drawingData).forEach((drawingId) => {
|
|
1528
|
-
const drawing = drawingData[drawingId];
|
|
1529
|
-
const { sheetTransform, transform, anchorType = "0" } = drawing;
|
|
1530
|
-
if (anchorType === "2") this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
|
|
1531
|
-
else {
|
|
1532
|
-
const { from, to } = sheetTransform;
|
|
1533
|
-
const { row: fromRow, column: fromColumn } = from;
|
|
1534
|
-
const { row: toRow, column: toColumn } = to;
|
|
1535
|
-
for (let i = 0; i < ranges.length; i++) {
|
|
1536
|
-
const { startRow, endRow } = ranges[i];
|
|
1537
|
-
if (toRow < startRow) continue;
|
|
1538
|
-
if (anchorType === "0") {
|
|
1539
|
-
let newSheetTransform = null;
|
|
1540
|
-
let newTransform = null;
|
|
1541
|
-
if (fromRow >= startRow && fromRow <= endRow) {
|
|
1542
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1543
|
-
startColumn: fromColumn,
|
|
1544
|
-
endColumn: toColumn,
|
|
1545
|
-
startRow: fromRow,
|
|
1546
|
-
endRow
|
|
1547
|
-
});
|
|
1548
|
-
newTransform = {
|
|
1549
|
-
...transform,
|
|
1550
|
-
top: selectionCell.startY
|
|
1551
|
-
};
|
|
1552
|
-
}
|
|
1553
|
-
if (newTransform) {
|
|
1554
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1555
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1556
|
-
if (newSheetTransform && newTransform) {
|
|
1557
|
-
updateDrawings.push({
|
|
1558
|
-
...drawing,
|
|
1559
|
-
sheetTransform: newSheetTransform,
|
|
1560
|
-
transform: newTransform,
|
|
1561
|
-
axisAlignSheetTransform
|
|
1562
|
-
});
|
|
1563
|
-
break;
|
|
1564
|
-
}
|
|
1565
|
-
}
|
|
1566
|
-
continue;
|
|
1567
|
-
}
|
|
1568
|
-
if (fromRow >= startRow && toRow <= endRow) continue;
|
|
1569
|
-
let newSheetTransform = null;
|
|
1570
|
-
let newTransform = null;
|
|
1571
|
-
if (fromRow >= startRow && fromRow <= endRow) {
|
|
1572
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1573
|
-
startColumn: fromColumn,
|
|
1574
|
-
endColumn: toColumn,
|
|
1575
|
-
startRow: fromRow,
|
|
1576
|
-
endRow
|
|
1577
|
-
});
|
|
1578
|
-
newTransform = {
|
|
1579
|
-
...transform,
|
|
1580
|
-
top: (selectionCell === null || selectionCell === void 0 ? void 0 : selectionCell.startY) || 0,
|
|
1581
|
-
height: ((transform === null || transform === void 0 ? void 0 : transform.height) || 0) - selectionCell.endY + selectionCell.startY
|
|
1582
|
-
};
|
|
1583
|
-
} else if (toRow >= startRow && toRow <= endRow) {
|
|
1584
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1585
|
-
startColumn: fromColumn,
|
|
1586
|
-
endColumn: toColumn,
|
|
1587
|
-
startRow,
|
|
1588
|
-
endRow: toRow
|
|
1589
|
-
});
|
|
1590
|
-
newTransform = {
|
|
1591
|
-
...transform,
|
|
1592
|
-
top: selectionCell.startY - ((transform === null || transform === void 0 ? void 0 : transform.height) || 0)
|
|
1593
|
-
};
|
|
1594
|
-
} else {
|
|
1595
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1596
|
-
startColumn: fromColumn,
|
|
1597
|
-
endColumn: toColumn,
|
|
1598
|
-
startRow,
|
|
1599
|
-
endRow
|
|
1600
|
-
});
|
|
1601
|
-
newTransform = {
|
|
1602
|
-
...transform,
|
|
1603
|
-
height: ((transform === null || transform === void 0 ? void 0 : transform.height) || 0) - selectionCell.endY + selectionCell.startY
|
|
1604
|
-
};
|
|
1605
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1606
|
-
if (newSheetTransform && newTransform) {
|
|
1607
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1608
|
-
preUpdateDrawings.push({
|
|
1609
|
-
...drawing,
|
|
1610
|
-
sheetTransform: newSheetTransform,
|
|
1611
|
-
transform: newTransform,
|
|
1612
|
-
axisAlignSheetTransform
|
|
1613
|
-
});
|
|
1614
|
-
break;
|
|
1615
|
-
}
|
|
1616
|
-
}
|
|
1617
|
-
if (newTransform) newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1618
|
-
if (newTransform && newSheetTransform) {
|
|
1619
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1620
|
-
updateDrawings.push({
|
|
1621
|
-
...drawing,
|
|
1622
|
-
sheetTransform: newSheetTransform,
|
|
1623
|
-
transform: newTransform,
|
|
1624
|
-
axisAlignSheetTransform
|
|
1625
|
-
});
|
|
1626
|
-
break;
|
|
1627
|
-
} else this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
|
|
1628
|
-
}
|
|
1629
|
-
}
|
|
1630
|
-
});
|
|
1631
|
-
return this._finalizePlan(unitId, subUnitId, [...preUpdateDrawings, ...updateDrawings]);
|
|
1632
|
-
}
|
|
1633
1472
|
_getDrawingUndoForRowAndColSize(unitId, subUnitId, ranges) {
|
|
1634
1473
|
const sheetSkeletonParam = this._getCalculatedSkeletonParam(unitId, subUnitId);
|
|
1635
1474
|
if (!sheetSkeletonParam) return {
|
|
@@ -1641,27 +1480,9 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1641
1480
|
const updateDrawings = [];
|
|
1642
1481
|
Object.keys(drawingData).forEach((drawingId) => {
|
|
1643
1482
|
const drawing = drawingData[drawingId];
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
const { row: toRow, column: toColumn } = sheetTransform.to;
|
|
1648
|
-
for (let i = 0; i < ranges.length; i++) {
|
|
1649
|
-
const { startRow, startColumn } = ranges[i];
|
|
1650
|
-
if (toRow < startRow || toColumn < startColumn) continue;
|
|
1651
|
-
if (anchorType === "0") {
|
|
1652
|
-
updateDrawings.push(applySheetDrawingPlacement(drawing, getSheetDrawingPlacement(drawing), skeleton));
|
|
1653
|
-
break;
|
|
1654
|
-
}
|
|
1655
|
-
const newTransform = drawingPositionToTransform({ ...sheetTransform }, sheetSkeletonParam);
|
|
1656
|
-
if (newTransform) {
|
|
1657
|
-
updateDrawings.push({
|
|
1658
|
-
...drawing,
|
|
1659
|
-
transform: newTransform
|
|
1660
|
-
});
|
|
1661
|
-
break;
|
|
1662
|
-
}
|
|
1663
|
-
}
|
|
1664
|
-
}
|
|
1483
|
+
if ((drawing === null || drawing === void 0 ? void 0 : drawing.anchorType) === "2") return;
|
|
1484
|
+
const refreshed = this._tryRefreshDrawingPlacement(drawing, skeleton, this._currentCommand.id, ({ to }) => ranges.some(({ startRow, startColumn }) => to.row >= startRow && to.column >= startColumn));
|
|
1485
|
+
if (refreshed) updateDrawings.push(refreshed);
|
|
1665
1486
|
});
|
|
1666
1487
|
if (updateDrawings.length === 0) return {
|
|
1667
1488
|
redos: [],
|
|
@@ -1898,7 +1719,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1898
1719
|
};
|
|
1899
1720
|
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1900
1721
|
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1901
|
-
} else if (toColumn >=
|
|
1722
|
+
} else if (toColumn >= colStartIndex) {
|
|
1902
1723
|
if (anchorType === "1") {
|
|
1903
1724
|
newSheetTransform = {
|
|
1904
1725
|
from: { ...from },
|
|
@@ -1914,12 +1735,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1914
1735
|
axisAlignSheetTransform: transformToAxisAlignPosition({ ...transform }, skeleton)
|
|
1915
1736
|
};
|
|
1916
1737
|
}
|
|
1917
|
-
|
|
1918
|
-
newSheetTransform,
|
|
1919
|
-
newTransform,
|
|
1920
|
-
axisAlignSheetTransform
|
|
1921
|
-
};
|
|
1922
|
-
return null;
|
|
1738
|
+
return this._getStructuralDrawingResult(newSheetTransform, newTransform, axisAlignSheetTransform, skeleton);
|
|
1923
1739
|
}
|
|
1924
1740
|
_shrinkCol(colStartIndex, colEndIndex, options) {
|
|
1925
1741
|
const { sheetSkeletonParam, sheetTransform, transform, anchorType = "0" } = options;
|
|
@@ -1947,8 +1763,9 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1947
1763
|
column: toColumn - colCount
|
|
1948
1764
|
}
|
|
1949
1765
|
};
|
|
1766
|
+
if (anchorType === "0") return this._resolveShiftedPositionDrawing(newSheetTransform, transform, sheetSkeletonParam);
|
|
1950
1767
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
1951
|
-
} else if (fromColumn >= colStartIndex && toColumn <= colEndIndex) return null;
|
|
1768
|
+
} else if (anchorType === "1" && fromColumn >= colStartIndex && toColumn <= colEndIndex) return null;
|
|
1952
1769
|
else if (fromColumn < colStartIndex && toColumn > colEndIndex) {
|
|
1953
1770
|
if (anchorType === "1") {
|
|
1954
1771
|
newSheetTransform = {
|
|
@@ -1979,49 +1796,28 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1979
1796
|
};
|
|
1980
1797
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
1981
1798
|
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1982
|
-
} else
|
|
1983
|
-
...
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
startRow: from.row,
|
|
1991
|
-
endRow: to.row
|
|
1992
|
-
});
|
|
1993
|
-
newTransform = {
|
|
1994
|
-
...transform,
|
|
1995
|
-
left: (transform.left || 0) - selectionCell.endX + selectionCell.startX - sheetTransform.from.columnOffset
|
|
1996
|
-
};
|
|
1997
|
-
}
|
|
1998
|
-
if (!newSheetTransform) {
|
|
1999
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
2000
|
-
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
2001
|
-
}
|
|
1799
|
+
} else return this._resolveShiftedPositionDrawing({
|
|
1800
|
+
...sheetTransform,
|
|
1801
|
+
from: {
|
|
1802
|
+
...from,
|
|
1803
|
+
column: colStartIndex,
|
|
1804
|
+
columnOffset: 0
|
|
1805
|
+
}
|
|
1806
|
+
}, transform, sheetSkeletonParam);
|
|
2002
1807
|
} else if (toColumn >= colStartIndex && toColumn <= colEndIndex && anchorType === "1") {
|
|
2003
|
-
const
|
|
2004
|
-
|
|
2005
|
-
endColumn: colStartIndex - 1,
|
|
2006
|
-
startRow: from.row,
|
|
2007
|
-
endRow: to.row
|
|
2008
|
-
});
|
|
1808
|
+
const boundaryColumn = Math.min(colStartIndex, skeleton.worksheet.getColumnCount() - 1);
|
|
1809
|
+
const boundaryCell = skeleton.getNoMergeCellWithCoordByIndex(from.row, boundaryColumn);
|
|
2009
1810
|
newSheetTransform = {
|
|
2010
1811
|
from: { ...from },
|
|
2011
1812
|
to: {
|
|
2012
1813
|
...to,
|
|
2013
|
-
column:
|
|
2014
|
-
columnOffset:
|
|
1814
|
+
column: boundaryColumn,
|
|
1815
|
+
columnOffset: boundaryColumn < colStartIndex ? boundaryCell.endX - boundaryCell.startX : 0
|
|
2015
1816
|
}
|
|
2016
1817
|
};
|
|
2017
1818
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
2018
1819
|
}
|
|
2019
|
-
|
|
2020
|
-
newSheetTransform,
|
|
2021
|
-
newTransform,
|
|
2022
|
-
axisAlignSheetTransform
|
|
2023
|
-
};
|
|
2024
|
-
return null;
|
|
1820
|
+
return this._getStructuralDrawingResult(newSheetTransform, newTransform, axisAlignSheetTransform, skeleton);
|
|
2025
1821
|
}
|
|
2026
1822
|
_expandRow(rowStartIndex, rowEndIndex, options) {
|
|
2027
1823
|
const { sheetSkeletonParam, sheetTransform, transform, anchorType = "0" } = options;
|
|
@@ -2051,7 +1847,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2051
1847
|
};
|
|
2052
1848
|
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
2053
1849
|
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
2054
|
-
} else if (toRow >=
|
|
1850
|
+
} else if (toRow >= rowStartIndex) {
|
|
2055
1851
|
if (anchorType === "1") {
|
|
2056
1852
|
newSheetTransform = {
|
|
2057
1853
|
from: { ...from },
|
|
@@ -2067,12 +1863,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2067
1863
|
axisAlignSheetTransform: transformToAxisAlignPosition({ ...transform }, skeleton)
|
|
2068
1864
|
};
|
|
2069
1865
|
}
|
|
2070
|
-
|
|
2071
|
-
newSheetTransform,
|
|
2072
|
-
newTransform,
|
|
2073
|
-
axisAlignSheetTransform
|
|
2074
|
-
};
|
|
2075
|
-
return null;
|
|
1866
|
+
return this._getStructuralDrawingResult(newSheetTransform, newTransform, axisAlignSheetTransform, skeleton);
|
|
2076
1867
|
}
|
|
2077
1868
|
_shrinkRow(rowStartIndex, rowEndIndex, options) {
|
|
2078
1869
|
const { sheetSkeletonParam, sheetTransform, transform, anchorType = "0" } = options;
|
|
@@ -2100,8 +1891,9 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2100
1891
|
row: toRow - rowCount
|
|
2101
1892
|
}
|
|
2102
1893
|
};
|
|
1894
|
+
if (anchorType === "0") return this._resolveShiftedPositionDrawing(newSheetTransform, transform, sheetSkeletonParam);
|
|
2103
1895
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
2104
|
-
} else if (fromRow >= rowStartIndex && toRow <= rowEndIndex) return null;
|
|
1896
|
+
} else if (anchorType === "1" && fromRow >= rowStartIndex && toRow <= rowEndIndex) return null;
|
|
2105
1897
|
else if (fromRow < rowStartIndex && toRow > rowEndIndex) {
|
|
2106
1898
|
if (anchorType === "1") {
|
|
2107
1899
|
newSheetTransform = {
|
|
@@ -2132,67 +1924,108 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2132
1924
|
};
|
|
2133
1925
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
2134
1926
|
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
2135
|
-
} else
|
|
2136
|
-
...
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
startColumn: from.column,
|
|
2144
|
-
endColumn: to.column
|
|
2145
|
-
});
|
|
2146
|
-
newTransform = {
|
|
2147
|
-
...transform,
|
|
2148
|
-
top: (transform.top || 0) - selectionCell.endY + selectionCell.startY - sheetTransform.from.rowOffset
|
|
2149
|
-
};
|
|
2150
|
-
}
|
|
2151
|
-
if (!newSheetTransform) {
|
|
2152
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
2153
|
-
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
2154
|
-
}
|
|
1927
|
+
} else return this._resolveShiftedPositionDrawing({
|
|
1928
|
+
...sheetTransform,
|
|
1929
|
+
from: {
|
|
1930
|
+
...from,
|
|
1931
|
+
row: rowStartIndex,
|
|
1932
|
+
rowOffset: 0
|
|
1933
|
+
}
|
|
1934
|
+
}, transform, sheetSkeletonParam);
|
|
2155
1935
|
} else if (toRow >= rowStartIndex && toRow <= rowEndIndex && anchorType === "1") {
|
|
2156
|
-
const
|
|
2157
|
-
|
|
2158
|
-
endColumn: from.column,
|
|
2159
|
-
startRow: rowStartIndex - 1,
|
|
2160
|
-
endRow: rowStartIndex - 1
|
|
2161
|
-
});
|
|
1936
|
+
const boundaryRow = Math.min(rowStartIndex, skeleton.worksheet.getRowCount() - 1);
|
|
1937
|
+
const boundaryCell = skeleton.getNoMergeCellWithCoordByIndex(boundaryRow, from.column);
|
|
2162
1938
|
newSheetTransform = {
|
|
2163
1939
|
from: { ...from },
|
|
2164
1940
|
to: {
|
|
2165
1941
|
...to,
|
|
2166
|
-
row:
|
|
2167
|
-
rowOffset:
|
|
1942
|
+
row: boundaryRow,
|
|
1943
|
+
rowOffset: boundaryRow < rowStartIndex ? boundaryCell.endY - boundaryCell.startY : 0
|
|
2168
1944
|
}
|
|
2169
1945
|
};
|
|
2170
1946
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
2171
1947
|
}
|
|
2172
|
-
|
|
1948
|
+
return this._getStructuralDrawingResult(newSheetTransform, newTransform, axisAlignSheetTransform, skeleton);
|
|
1949
|
+
}
|
|
1950
|
+
_resolveShiftedPositionDrawing(sheetTransform, transform, { unitId, sheetId, skeleton }) {
|
|
1951
|
+
const converted = (0, _univerjs_sheets.convertPositionCellToSheetOverGrid)(unitId, sheetId, sheetTransform.from, transform.width ?? 0, transform.height ?? 0, skeleton);
|
|
1952
|
+
const newTransform = {
|
|
1953
|
+
...transform,
|
|
1954
|
+
...converted.transform
|
|
1955
|
+
};
|
|
1956
|
+
return this._getStructuralDrawingResult({
|
|
1957
|
+
...sheetTransform,
|
|
1958
|
+
...transformToDrawingPosition(newTransform, skeleton)
|
|
1959
|
+
}, newTransform, null, skeleton);
|
|
1960
|
+
}
|
|
1961
|
+
_getStructuralDrawingResult(newSheetTransform, newTransform, axisAlignSheetTransform, skeleton) {
|
|
1962
|
+
if (!newSheetTransform || !newTransform) return null;
|
|
1963
|
+
const { left = 0, top = 0, width = 0, height = 0 } = newTransform;
|
|
1964
|
+
if (![
|
|
1965
|
+
left,
|
|
1966
|
+
top,
|
|
1967
|
+
width,
|
|
1968
|
+
height
|
|
1969
|
+
].every(Number.isFinite) || width < 0 || height < 0) return null;
|
|
1970
|
+
if ([newSheetTransform.from, newSheetTransform.to].some(({ row, column, rowOffset, columnOffset }) => !Number.isInteger(row) || !Number.isInteger(column) || row < 0 || column < 0 || !Number.isFinite(rowOffset) || !Number.isFinite(columnOffset))) return null;
|
|
1971
|
+
return {
|
|
2173
1972
|
newSheetTransform,
|
|
2174
1973
|
newTransform,
|
|
2175
|
-
axisAlignSheetTransform
|
|
1974
|
+
axisAlignSheetTransform: axisAlignSheetTransform ?? transformToAxisAlignPosition(newTransform, skeleton)
|
|
2176
1975
|
};
|
|
2177
|
-
|
|
1976
|
+
}
|
|
1977
|
+
_tryRefreshDrawingPlacement(drawing, skeleton, commandId, shouldRefresh) {
|
|
1978
|
+
try {
|
|
1979
|
+
const failure = validateSheetDrawingPlacement(drawing);
|
|
1980
|
+
if (failure) {
|
|
1981
|
+
this._logSkippedDrawingRefresh(drawing, commandId, failure);
|
|
1982
|
+
return;
|
|
1983
|
+
}
|
|
1984
|
+
if (shouldRefresh && !shouldRefresh(drawing.sheetTransform)) return;
|
|
1985
|
+
const result = tryRefreshSheetDrawingPlacement(drawing, skeleton);
|
|
1986
|
+
if (result.ok) return result.drawing;
|
|
1987
|
+
this._logSkippedDrawingRefresh(drawing, commandId, result);
|
|
1988
|
+
} catch (error) {
|
|
1989
|
+
this._logSkippedDrawingRefresh(drawing, commandId, error);
|
|
1990
|
+
}
|
|
1991
|
+
}
|
|
1992
|
+
_logSkippedDrawingRefresh(drawing, commandId, failure) {
|
|
1993
|
+
this._logService.warn("[SheetDrawingTransformAffectedController]", "Skipping drawing placement refresh", {
|
|
1994
|
+
unitId: drawing === null || drawing === void 0 ? void 0 : drawing.unitId,
|
|
1995
|
+
subUnitId: drawing === null || drawing === void 0 ? void 0 : drawing.subUnitId,
|
|
1996
|
+
drawingId: drawing === null || drawing === void 0 ? void 0 : drawing.drawingId,
|
|
1997
|
+
commandId,
|
|
1998
|
+
transform: drawing === null || drawing === void 0 ? void 0 : drawing.transform,
|
|
1999
|
+
sheetTransform: drawing === null || drawing === void 0 ? void 0 : drawing.sheetTransform,
|
|
2000
|
+
failure
|
|
2001
|
+
});
|
|
2178
2002
|
}
|
|
2179
2003
|
_sheetRefreshListener() {
|
|
2180
2004
|
this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
|
|
2181
2005
|
if (!REFRESH_MUTATIONS.includes(command.id)) return;
|
|
2182
2006
|
queueMicrotask(() => {
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2007
|
+
if (this._disposed) return;
|
|
2008
|
+
try {
|
|
2009
|
+
const params = command.params;
|
|
2010
|
+
const target = (0, _univerjs_sheets.getSheetCommandTarget)(this._univerInstanceService, params);
|
|
2011
|
+
if (!target) return;
|
|
2012
|
+
const { unitId, subUnitId, worksheet } = target;
|
|
2013
|
+
let ranges = [];
|
|
2014
|
+
if ("ranges" in params) ranges = params.ranges;
|
|
2015
|
+
else if ("rowsAutoHeightInfo" in params) ranges = params.rowsAutoHeightInfo.map((info) => ({
|
|
2016
|
+
startRow: info.row,
|
|
2017
|
+
endRow: info.row,
|
|
2018
|
+
startColumn: 0,
|
|
2019
|
+
endColumn: worksheet.getColumnCount() - 1
|
|
2020
|
+
}));
|
|
2021
|
+
this._refreshDrawingTransform(command, unitId, subUnitId, ranges);
|
|
2022
|
+
} catch (error) {
|
|
2023
|
+
this._logService.error("[SheetDrawingTransformAffectedController]", "Drawing layout refresh failed", {
|
|
2024
|
+
commandId: command.id,
|
|
2025
|
+
params: command.params,
|
|
2026
|
+
error
|
|
2027
|
+
});
|
|
2028
|
+
}
|
|
2196
2029
|
});
|
|
2197
2030
|
}));
|
|
2198
2031
|
}
|
|
@@ -2203,43 +2036,26 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2203
2036
|
const updateDrawings = [];
|
|
2204
2037
|
Object.keys(drawingData).forEach((drawingId) => {
|
|
2205
2038
|
const drawing = drawingData[drawingId];
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
updateDrawings.push(applySheetDrawingPlacement(drawing, getSheetDrawingPlacement(drawing), sheetSkeletonParam.skeleton));
|
|
2227
|
-
break;
|
|
2228
|
-
}
|
|
2229
|
-
const newTransform = drawingPositionToTransform(sheetTransform, sheetSkeletonParam);
|
|
2230
|
-
updateDrawings.push({
|
|
2231
|
-
...drawing,
|
|
2232
|
-
transform: {
|
|
2233
|
-
...transform,
|
|
2234
|
-
left: newTransform === null || newTransform === void 0 ? void 0 : newTransform.left,
|
|
2235
|
-
top: newTransform === null || newTransform === void 0 ? void 0 : newTransform.top,
|
|
2236
|
-
width: newTransform === null || newTransform === void 0 ? void 0 : newTransform.width,
|
|
2237
|
-
height: newTransform === null || newTransform === void 0 ? void 0 : newTransform.height
|
|
2238
|
-
}
|
|
2239
|
-
});
|
|
2240
|
-
break;
|
|
2241
|
-
}
|
|
2242
|
-
}
|
|
2039
|
+
if ((drawing === null || drawing === void 0 ? void 0 : drawing.anchorType) === "2") return;
|
|
2040
|
+
const refreshed = this._tryRefreshDrawingPlacement(drawing, sheetSkeletonParam.skeleton, command.id, ({ from, to }) => {
|
|
2041
|
+
const { row: fromRow, column: fromColumn } = from;
|
|
2042
|
+
const { row: toRow, column: toColumn } = to;
|
|
2043
|
+
return ranges.some((range) => {
|
|
2044
|
+
const { startRow, endRow, startColumn, endColumn } = range;
|
|
2045
|
+
return _univerjs_core.Rectangle.intersects({
|
|
2046
|
+
startRow,
|
|
2047
|
+
endRow,
|
|
2048
|
+
startColumn,
|
|
2049
|
+
endColumn
|
|
2050
|
+
}, {
|
|
2051
|
+
startRow: fromRow,
|
|
2052
|
+
endRow: toRow,
|
|
2053
|
+
startColumn: fromColumn,
|
|
2054
|
+
endColumn: toColumn
|
|
2055
|
+
}) || fromRow > endRow || fromColumn > endColumn;
|
|
2056
|
+
});
|
|
2057
|
+
});
|
|
2058
|
+
if (refreshed) updateDrawings.push(refreshed);
|
|
2243
2059
|
});
|
|
2244
2060
|
this._finalizePlan(unitId, subUnitId, updateDrawings, [], "refresh", command);
|
|
2245
2061
|
}
|
|
@@ -2251,7 +2067,8 @@ SheetDrawingTransformAffectedController = __decorate([
|
|
|
2251
2067
|
__decorateParam(3, ISheetDrawingService),
|
|
2252
2068
|
__decorateParam(4, _univerjs_drawing.IDrawingManagerService),
|
|
2253
2069
|
__decorateParam(5, _univerjs_core.IUniverInstanceService),
|
|
2254
|
-
__decorateParam(6, (0, _univerjs_core.Inject)(SheetDrawingTransformPlanService))
|
|
2070
|
+
__decorateParam(6, (0, _univerjs_core.Inject)(SheetDrawingTransformPlanService)),
|
|
2071
|
+
__decorateParam(7, _univerjs_core.ILogService)
|
|
2255
2072
|
], SheetDrawingTransformAffectedController);
|
|
2256
2073
|
|
|
2257
2074
|
//#endregion
|
|
@@ -2313,6 +2130,7 @@ exports.drawingPositionToTransform = drawingPositionToTransform;
|
|
|
2313
2130
|
exports.getSheetDrawingPlacement = getSheetDrawingPlacement;
|
|
2314
2131
|
exports.isKnownSheetNonRotatableDrawingType = isKnownSheetNonRotatableDrawingType;
|
|
2315
2132
|
exports.normalizeSheetDrawingPlacement = normalizeSheetDrawingPlacement;
|
|
2133
|
+
exports.refreshSheetDrawingPlacement = refreshSheetDrawingPlacement;
|
|
2316
2134
|
exports.resolveSheetDrawingRotateEnabled = resolveSheetDrawingRotateEnabled;
|
|
2317
2135
|
exports.transformToAxisAlignPosition = transformToAxisAlignPosition;
|
|
2318
2136
|
exports.transformToDrawingPosition = transformToDrawingPosition;
|