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