@univerjs/sheets-drawing 1.0.4 → 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/facade.js +7 -7
- package/lib/cjs/index.js +280 -455
- package/lib/es/facade.js +6 -6
- package/lib/es/index.js +280 -456
- package/lib/facade.js +6 -6
- package/lib/index.js +280 -456
- 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 +7 -7
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
|
/**
|
|
@@ -410,15 +486,18 @@ function applySheetDrawingPlacement(drawing, input, skeleton) {
|
|
|
410
486
|
* Position, Both, or None Placement.
|
|
411
487
|
*/
|
|
412
488
|
function normalizeSheetDrawingPlacement(input, skeleton) {
|
|
489
|
+
return normalizePlacement(input, skeleton, false);
|
|
490
|
+
}
|
|
491
|
+
function normalizePlacement(input, skeleton, requiresArea) {
|
|
413
492
|
if (!("bounds" in input)) {
|
|
414
|
-
validatePlacement(input);
|
|
415
|
-
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(), {
|
|
416
495
|
from: input.from,
|
|
417
496
|
to: input.to
|
|
418
|
-
}, skeleton));
|
|
497
|
+
}, skeleton), requiresArea));
|
|
419
498
|
return input;
|
|
420
499
|
}
|
|
421
|
-
validateBounds(input.bounds);
|
|
500
|
+
assertValidPlacement(validateBounds(input.bounds, requiresArea));
|
|
422
501
|
if (input.kind === "2") return {
|
|
423
502
|
kind: "2",
|
|
424
503
|
...input.bounds
|
|
@@ -436,7 +515,7 @@ function normalizeSheetDrawingPlacement(input, skeleton) {
|
|
|
436
515
|
from: sheetTransform.from,
|
|
437
516
|
to: sheetTransform.to
|
|
438
517
|
};
|
|
439
|
-
throw new Error(
|
|
518
|
+
throw new Error(PLACEMENT_ERROR.KIND_INVALID);
|
|
440
519
|
}
|
|
441
520
|
function withExistingSheetTransform(current, placement) {
|
|
442
521
|
return {
|
|
@@ -471,33 +550,51 @@ function absoluteSheetTransform(placement, current) {
|
|
|
471
550
|
}
|
|
472
551
|
};
|
|
473
552
|
}
|
|
474
|
-
function validatePlacement(placement) {
|
|
475
|
-
if (placement.kind === "0")
|
|
476
|
-
|
|
477
|
-
validateExtent(placement.width, placement.height);
|
|
478
|
-
return;
|
|
479
|
-
}
|
|
480
|
-
if (placement.kind === "1") {
|
|
481
|
-
validateCellPosition(placement.from);
|
|
482
|
-
validateCellPosition(placement.to);
|
|
483
|
-
return;
|
|
484
|
-
}
|
|
553
|
+
function validatePlacement(placement, requiresArea) {
|
|
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);
|
|
485
556
|
if (placement.kind === "2") {
|
|
486
|
-
if (!Number.isFinite(placement.left) || !Number.isFinite(placement.top))
|
|
487
|
-
|
|
488
|
-
|
|
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);
|
|
489
562
|
}
|
|
490
|
-
|
|
563
|
+
return {
|
|
564
|
+
ok: false,
|
|
565
|
+
reason: PLACEMENT_ERROR.KIND_INVALID
|
|
566
|
+
};
|
|
491
567
|
}
|
|
492
|
-
function validateBounds(bounds) {
|
|
493
|
-
if (!Number.isFinite(bounds.left) || !Number.isFinite(bounds.top))
|
|
494
|
-
|
|
568
|
+
function validateBounds(bounds, requiresArea) {
|
|
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);
|
|
495
574
|
}
|
|
496
575
|
function validateCellPosition(position) {
|
|
497
|
-
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
|
+
};
|
|
580
|
+
}
|
|
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);
|
|
498
594
|
}
|
|
499
|
-
function
|
|
500
|
-
|
|
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);
|
|
501
598
|
}
|
|
502
599
|
|
|
503
600
|
//#endregion
|
|
@@ -736,7 +833,7 @@ const SetWorksheetBackgroundImageCommand = {
|
|
|
736
833
|
};
|
|
737
834
|
|
|
738
835
|
//#endregion
|
|
739
|
-
//#region \0@oxc-project+runtime@0.
|
|
836
|
+
//#region \0@oxc-project+runtime@0.153.0/helpers/esm/decorateParam.js
|
|
740
837
|
function __decorateParam(paramIndex, decorator) {
|
|
741
838
|
return function(target, key) {
|
|
742
839
|
decorator(target, key, paramIndex);
|
|
@@ -744,7 +841,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
744
841
|
}
|
|
745
842
|
|
|
746
843
|
//#endregion
|
|
747
|
-
//#region \0@oxc-project+runtime@0.
|
|
844
|
+
//#region \0@oxc-project+runtime@0.153.0/helpers/esm/decorate.js
|
|
748
845
|
function __decorate(decorators, target, key, desc) {
|
|
749
846
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
750
847
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -928,7 +1025,7 @@ SheetsDrawingLoadController = __decorate([
|
|
|
928
1025
|
//#endregion
|
|
929
1026
|
//#region package.json
|
|
930
1027
|
var name = "@univerjs/sheets-drawing";
|
|
931
|
-
var version = "1.0
|
|
1028
|
+
var version = "1.2.0";
|
|
932
1029
|
|
|
933
1030
|
//#endregion
|
|
934
1031
|
//#region src/config/config.ts
|
|
@@ -952,7 +1049,7 @@ const configSymbol = Symbol(SHEETS_DRAWING_PLUGIN_CONFIG_KEY);
|
|
|
952
1049
|
const defaultPluginConfig = {};
|
|
953
1050
|
|
|
954
1051
|
//#endregion
|
|
955
|
-
//#region \0@oxc-project+runtime@0.
|
|
1052
|
+
//#region \0@oxc-project+runtime@0.153.0/helpers/esm/typeof.js
|
|
956
1053
|
function _typeof(o) {
|
|
957
1054
|
"@babel/helpers - typeof";
|
|
958
1055
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -963,7 +1060,7 @@ function _typeof(o) {
|
|
|
963
1060
|
}
|
|
964
1061
|
|
|
965
1062
|
//#endregion
|
|
966
|
-
//#region \0@oxc-project+runtime@0.
|
|
1063
|
+
//#region \0@oxc-project+runtime@0.153.0/helpers/esm/toPrimitive.js
|
|
967
1064
|
function toPrimitive(t, r) {
|
|
968
1065
|
if ("object" != _typeof(t) || !t) return t;
|
|
969
1066
|
var e = t[Symbol.toPrimitive];
|
|
@@ -976,14 +1073,14 @@ function toPrimitive(t, r) {
|
|
|
976
1073
|
}
|
|
977
1074
|
|
|
978
1075
|
//#endregion
|
|
979
|
-
//#region \0@oxc-project+runtime@0.
|
|
1076
|
+
//#region \0@oxc-project+runtime@0.153.0/helpers/esm/toPropertyKey.js
|
|
980
1077
|
function toPropertyKey(t) {
|
|
981
1078
|
var i = toPrimitive(t, "string");
|
|
982
1079
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
983
1080
|
}
|
|
984
1081
|
|
|
985
1082
|
//#endregion
|
|
986
|
-
//#region \0@oxc-project+runtime@0.
|
|
1083
|
+
//#region \0@oxc-project+runtime@0.153.0/helpers/esm/defineProperty.js
|
|
987
1084
|
function _defineProperty(e, r, t) {
|
|
988
1085
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
989
1086
|
value: t,
|
|
@@ -1062,7 +1159,7 @@ const REFRESH_MUTATIONS = [
|
|
|
1062
1159
|
_univerjs_sheets.SetWorksheetColWidthMutation.id
|
|
1063
1160
|
];
|
|
1064
1161
|
let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffectedController extends _univerjs_core.Disposable {
|
|
1065
|
-
constructor(_commandService, _sheetSkeletonService, _sheetInterceptorService, _sheetDrawingService, _drawingManagerService, _univerInstanceService, _transformPlanService) {
|
|
1162
|
+
constructor(_commandService, _sheetSkeletonService, _sheetInterceptorService, _sheetDrawingService, _drawingManagerService, _univerInstanceService, _transformPlanService, _logService) {
|
|
1066
1163
|
super();
|
|
1067
1164
|
this._commandService = _commandService;
|
|
1068
1165
|
this._sheetSkeletonService = _sheetSkeletonService;
|
|
@@ -1071,6 +1168,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1071
1168
|
this._drawingManagerService = _drawingManagerService;
|
|
1072
1169
|
this._univerInstanceService = _univerInstanceService;
|
|
1073
1170
|
this._transformPlanService = _transformPlanService;
|
|
1171
|
+
this._logService = _logService;
|
|
1074
1172
|
_defineProperty(this, "_currentCommand", {
|
|
1075
1173
|
id: "",
|
|
1076
1174
|
params: {}
|
|
@@ -1126,13 +1224,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1126
1224
|
} else if (id === _univerjs_sheets.InsertRangeMoveRightCommand.id) {
|
|
1127
1225
|
const { range } = params;
|
|
1128
1226
|
return this._getRangeMoveUndo(range, 3);
|
|
1129
|
-
} else if (id === _univerjs_sheets.SetRowHiddenCommand.id || id === _univerjs_sheets.SetSpecificRowsVisibleCommand.id) {
|
|
1130
|
-
const { unitId, subUnitId, ranges } = params;
|
|
1131
|
-
return this._getDrawingUndoForRowVisible(unitId, subUnitId, ranges);
|
|
1132
|
-
} else if (id === _univerjs_sheets.SetColHiddenCommand.id || id === _univerjs_sheets.SetSpecificColsVisibleCommand.id) {
|
|
1133
|
-
const { unitId, subUnitId, ranges } = params;
|
|
1134
|
-
return this._getDrawingUndoForColVisible(unitId, subUnitId, ranges);
|
|
1135
|
-
} 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) {
|
|
1136
1228
|
const { unitId, subUnitId, ranges } = params;
|
|
1137
1229
|
return this._getDrawingUndoForRowAndColSize(unitId, subUnitId, ranges);
|
|
1138
1230
|
}
|
|
@@ -1363,266 +1455,20 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1363
1455
|
newTransform = param === null || param === void 0 ? void 0 : param.newTransform;
|
|
1364
1456
|
axisAlignSheetTransform = (param === null || param === void 0 ? void 0 : param.axisAlignSheetTransform) ?? void 0;
|
|
1365
1457
|
}
|
|
1366
|
-
if (newSheetTransform && newTransform) {
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
axisAlignSheetTransform
|
|
1373
|
-
});
|
|
1374
|
-
}
|
|
1458
|
+
if (newSheetTransform && newTransform) updateDrawings.push({
|
|
1459
|
+
...drawing,
|
|
1460
|
+
sheetTransform: newSheetTransform,
|
|
1461
|
+
transform: newTransform,
|
|
1462
|
+
axisAlignSheetTransform
|
|
1463
|
+
});
|
|
1375
1464
|
return {
|
|
1376
1465
|
updateDrawings,
|
|
1377
1466
|
deleteDrawings
|
|
1378
1467
|
};
|
|
1379
1468
|
}
|
|
1380
|
-
_remainDrawingSize(transform, updateDrawings, drawing, skeleton) {
|
|
1381
|
-
const newSheetTransform = transformToDrawingPosition({ ...transform }, skeleton);
|
|
1382
|
-
if (newSheetTransform) {
|
|
1383
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition({ ...transform }, skeleton);
|
|
1384
|
-
updateDrawings.push({
|
|
1385
|
-
...drawing,
|
|
1386
|
-
sheetTransform: newSheetTransform,
|
|
1387
|
-
axisAlignSheetTransform
|
|
1388
|
-
});
|
|
1389
|
-
}
|
|
1390
|
-
}
|
|
1391
|
-
_getDrawingUndoForColVisible(unitId, subUnitId, ranges) {
|
|
1392
|
-
const sheetSkeletonParam = this._getCalculatedSkeletonParam(unitId, subUnitId);
|
|
1393
|
-
if (!sheetSkeletonParam) return {
|
|
1394
|
-
redos: [],
|
|
1395
|
-
undos: []
|
|
1396
|
-
};
|
|
1397
|
-
const { skeleton } = sheetSkeletonParam;
|
|
1398
|
-
const drawingData = this._drawingManagerService.getDrawingData(unitId, subUnitId);
|
|
1399
|
-
const updateDrawings = [];
|
|
1400
|
-
const preUpdateDrawings = [];
|
|
1401
|
-
Object.keys(drawingData).forEach((drawingId) => {
|
|
1402
|
-
const drawing = drawingData[drawingId];
|
|
1403
|
-
const { sheetTransform, transform, anchorType = "0" } = drawing;
|
|
1404
|
-
if (anchorType === "2") this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
|
|
1405
|
-
else {
|
|
1406
|
-
const { from, to } = sheetTransform;
|
|
1407
|
-
const { row: fromRow, column: fromColumn } = from;
|
|
1408
|
-
const { row: toRow, column: toColumn } = to;
|
|
1409
|
-
for (let i = 0; i < ranges.length; i++) {
|
|
1410
|
-
const { startColumn, endColumn } = ranges[i];
|
|
1411
|
-
if (toColumn < startColumn) continue;
|
|
1412
|
-
if (anchorType === "0") {
|
|
1413
|
-
let newSheetTransform = null;
|
|
1414
|
-
let newTransform = null;
|
|
1415
|
-
if (fromColumn >= startColumn && fromColumn <= endColumn) {
|
|
1416
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1417
|
-
startColumn: fromColumn,
|
|
1418
|
-
endColumn,
|
|
1419
|
-
startRow: fromRow,
|
|
1420
|
-
endRow: toRow
|
|
1421
|
-
});
|
|
1422
|
-
newTransform = {
|
|
1423
|
-
...transform,
|
|
1424
|
-
left: selectionCell.startX
|
|
1425
|
-
};
|
|
1426
|
-
}
|
|
1427
|
-
if (newTransform) {
|
|
1428
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1429
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1430
|
-
if (newSheetTransform && newTransform) {
|
|
1431
|
-
updateDrawings.push({
|
|
1432
|
-
...drawing,
|
|
1433
|
-
sheetTransform: newSheetTransform,
|
|
1434
|
-
transform: newTransform,
|
|
1435
|
-
axisAlignSheetTransform
|
|
1436
|
-
});
|
|
1437
|
-
break;
|
|
1438
|
-
}
|
|
1439
|
-
}
|
|
1440
|
-
continue;
|
|
1441
|
-
}
|
|
1442
|
-
if (fromColumn >= startColumn && toColumn <= endColumn) continue;
|
|
1443
|
-
let newSheetTransform = null;
|
|
1444
|
-
let newTransform = null;
|
|
1445
|
-
if (fromColumn >= startColumn && fromColumn <= endColumn) {
|
|
1446
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1447
|
-
startColumn: fromColumn,
|
|
1448
|
-
endColumn,
|
|
1449
|
-
startRow: fromRow,
|
|
1450
|
-
endRow: toRow
|
|
1451
|
-
});
|
|
1452
|
-
newTransform = {
|
|
1453
|
-
...transform,
|
|
1454
|
-
left: (selectionCell === null || selectionCell === void 0 ? void 0 : selectionCell.startX) || 0,
|
|
1455
|
-
width: ((transform === null || transform === void 0 ? void 0 : transform.width) || 0) - selectionCell.endX + selectionCell.startX
|
|
1456
|
-
};
|
|
1457
|
-
} else if (toColumn >= startColumn && toColumn <= endColumn) {
|
|
1458
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1459
|
-
startColumn,
|
|
1460
|
-
endColumn: toColumn,
|
|
1461
|
-
startRow: fromRow,
|
|
1462
|
-
endRow: toRow
|
|
1463
|
-
});
|
|
1464
|
-
newTransform = {
|
|
1465
|
-
...transform,
|
|
1466
|
-
left: selectionCell.startX - ((transform === null || transform === void 0 ? void 0 : transform.width) || 0)
|
|
1467
|
-
};
|
|
1468
|
-
} else {
|
|
1469
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1470
|
-
startColumn,
|
|
1471
|
-
endColumn,
|
|
1472
|
-
startRow: fromRow,
|
|
1473
|
-
endRow: toRow
|
|
1474
|
-
});
|
|
1475
|
-
newTransform = {
|
|
1476
|
-
...transform,
|
|
1477
|
-
width: ((transform === null || transform === void 0 ? void 0 : transform.width) || 0) - selectionCell.endX + selectionCell.startX
|
|
1478
|
-
};
|
|
1479
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1480
|
-
if (newSheetTransform && newTransform) {
|
|
1481
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1482
|
-
preUpdateDrawings.push({
|
|
1483
|
-
...drawing,
|
|
1484
|
-
sheetTransform: newSheetTransform,
|
|
1485
|
-
transform: newTransform,
|
|
1486
|
-
axisAlignSheetTransform
|
|
1487
|
-
});
|
|
1488
|
-
break;
|
|
1489
|
-
}
|
|
1490
|
-
}
|
|
1491
|
-
if (newTransform) newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1492
|
-
if (newTransform && newSheetTransform) {
|
|
1493
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1494
|
-
updateDrawings.push({
|
|
1495
|
-
...drawing,
|
|
1496
|
-
sheetTransform: newSheetTransform,
|
|
1497
|
-
transform: newTransform,
|
|
1498
|
-
axisAlignSheetTransform
|
|
1499
|
-
});
|
|
1500
|
-
break;
|
|
1501
|
-
} else this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
|
|
1502
|
-
}
|
|
1503
|
-
}
|
|
1504
|
-
});
|
|
1505
|
-
return this._finalizePlan(unitId, subUnitId, [...preUpdateDrawings, ...updateDrawings]);
|
|
1506
|
-
}
|
|
1507
1469
|
_createUndoAndRedoMutation(unitId, subUnitId, updateDrawings) {
|
|
1508
1470
|
return this._finalizePlan(unitId, subUnitId, updateDrawings);
|
|
1509
1471
|
}
|
|
1510
|
-
_getDrawingUndoForRowVisible(unitId, subUnitId, ranges) {
|
|
1511
|
-
const sheetSkeletonParam = this._getCalculatedSkeletonParam(unitId, subUnitId);
|
|
1512
|
-
if (!sheetSkeletonParam) return {
|
|
1513
|
-
redos: [],
|
|
1514
|
-
undos: []
|
|
1515
|
-
};
|
|
1516
|
-
const { skeleton } = sheetSkeletonParam;
|
|
1517
|
-
const drawingData = this._drawingManagerService.getDrawingData(unitId, subUnitId);
|
|
1518
|
-
const updateDrawings = [];
|
|
1519
|
-
const preUpdateDrawings = [];
|
|
1520
|
-
Object.keys(drawingData).forEach((drawingId) => {
|
|
1521
|
-
const drawing = drawingData[drawingId];
|
|
1522
|
-
const { sheetTransform, transform, anchorType = "0" } = drawing;
|
|
1523
|
-
if (anchorType === "2") this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
|
|
1524
|
-
else {
|
|
1525
|
-
const { from, to } = sheetTransform;
|
|
1526
|
-
const { row: fromRow, column: fromColumn } = from;
|
|
1527
|
-
const { row: toRow, column: toColumn } = to;
|
|
1528
|
-
for (let i = 0; i < ranges.length; i++) {
|
|
1529
|
-
const { startRow, endRow } = ranges[i];
|
|
1530
|
-
if (toRow < startRow) continue;
|
|
1531
|
-
if (anchorType === "0") {
|
|
1532
|
-
let newSheetTransform = null;
|
|
1533
|
-
let newTransform = null;
|
|
1534
|
-
if (fromRow >= startRow && fromRow <= endRow) {
|
|
1535
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1536
|
-
startColumn: fromColumn,
|
|
1537
|
-
endColumn: toColumn,
|
|
1538
|
-
startRow: fromRow,
|
|
1539
|
-
endRow
|
|
1540
|
-
});
|
|
1541
|
-
newTransform = {
|
|
1542
|
-
...transform,
|
|
1543
|
-
top: selectionCell.startY
|
|
1544
|
-
};
|
|
1545
|
-
}
|
|
1546
|
-
if (newTransform) {
|
|
1547
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1548
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1549
|
-
if (newSheetTransform && newTransform) {
|
|
1550
|
-
updateDrawings.push({
|
|
1551
|
-
...drawing,
|
|
1552
|
-
sheetTransform: newSheetTransform,
|
|
1553
|
-
transform: newTransform,
|
|
1554
|
-
axisAlignSheetTransform
|
|
1555
|
-
});
|
|
1556
|
-
break;
|
|
1557
|
-
}
|
|
1558
|
-
}
|
|
1559
|
-
continue;
|
|
1560
|
-
}
|
|
1561
|
-
if (fromRow >= startRow && toRow <= endRow) continue;
|
|
1562
|
-
let newSheetTransform = null;
|
|
1563
|
-
let newTransform = null;
|
|
1564
|
-
if (fromRow >= startRow && fromRow <= endRow) {
|
|
1565
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1566
|
-
startColumn: fromColumn,
|
|
1567
|
-
endColumn: toColumn,
|
|
1568
|
-
startRow: fromRow,
|
|
1569
|
-
endRow
|
|
1570
|
-
});
|
|
1571
|
-
newTransform = {
|
|
1572
|
-
...transform,
|
|
1573
|
-
top: (selectionCell === null || selectionCell === void 0 ? void 0 : selectionCell.startY) || 0,
|
|
1574
|
-
height: ((transform === null || transform === void 0 ? void 0 : transform.height) || 0) - selectionCell.endY + selectionCell.startY
|
|
1575
|
-
};
|
|
1576
|
-
} else if (toRow >= startRow && toRow <= endRow) {
|
|
1577
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1578
|
-
startColumn: fromColumn,
|
|
1579
|
-
endColumn: toColumn,
|
|
1580
|
-
startRow,
|
|
1581
|
-
endRow: toRow
|
|
1582
|
-
});
|
|
1583
|
-
newTransform = {
|
|
1584
|
-
...transform,
|
|
1585
|
-
top: selectionCell.startY - ((transform === null || transform === void 0 ? void 0 : transform.height) || 0)
|
|
1586
|
-
};
|
|
1587
|
-
} else {
|
|
1588
|
-
const selectionCell = (0, _univerjs_sheets.attachRangeWithCoord)(skeleton, {
|
|
1589
|
-
startColumn: fromColumn,
|
|
1590
|
-
endColumn: toColumn,
|
|
1591
|
-
startRow,
|
|
1592
|
-
endRow
|
|
1593
|
-
});
|
|
1594
|
-
newTransform = {
|
|
1595
|
-
...transform,
|
|
1596
|
-
height: ((transform === null || transform === void 0 ? void 0 : transform.height) || 0) - selectionCell.endY + selectionCell.startY
|
|
1597
|
-
};
|
|
1598
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1599
|
-
if (newSheetTransform && newTransform) {
|
|
1600
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1601
|
-
preUpdateDrawings.push({
|
|
1602
|
-
...drawing,
|
|
1603
|
-
sheetTransform: newSheetTransform,
|
|
1604
|
-
transform: newTransform,
|
|
1605
|
-
axisAlignSheetTransform
|
|
1606
|
-
});
|
|
1607
|
-
break;
|
|
1608
|
-
}
|
|
1609
|
-
}
|
|
1610
|
-
if (newTransform) newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1611
|
-
if (newTransform && newSheetTransform) {
|
|
1612
|
-
const axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1613
|
-
updateDrawings.push({
|
|
1614
|
-
...drawing,
|
|
1615
|
-
sheetTransform: newSheetTransform,
|
|
1616
|
-
transform: newTransform,
|
|
1617
|
-
axisAlignSheetTransform
|
|
1618
|
-
});
|
|
1619
|
-
break;
|
|
1620
|
-
} else this._remainDrawingSize(transform, updateDrawings, drawing, skeleton);
|
|
1621
|
-
}
|
|
1622
|
-
}
|
|
1623
|
-
});
|
|
1624
|
-
return this._finalizePlan(unitId, subUnitId, [...preUpdateDrawings, ...updateDrawings]);
|
|
1625
|
-
}
|
|
1626
1472
|
_getDrawingUndoForRowAndColSize(unitId, subUnitId, ranges) {
|
|
1627
1473
|
const sheetSkeletonParam = this._getCalculatedSkeletonParam(unitId, subUnitId);
|
|
1628
1474
|
if (!sheetSkeletonParam) return {
|
|
@@ -1634,27 +1480,9 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1634
1480
|
const updateDrawings = [];
|
|
1635
1481
|
Object.keys(drawingData).forEach((drawingId) => {
|
|
1636
1482
|
const drawing = drawingData[drawingId];
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
const { row: toRow, column: toColumn } = sheetTransform.to;
|
|
1641
|
-
for (let i = 0; i < ranges.length; i++) {
|
|
1642
|
-
const { startRow, startColumn } = ranges[i];
|
|
1643
|
-
if (toRow < startRow || toColumn < startColumn) continue;
|
|
1644
|
-
if (anchorType === "0") {
|
|
1645
|
-
updateDrawings.push(applySheetDrawingPlacement(drawing, getSheetDrawingPlacement(drawing), skeleton));
|
|
1646
|
-
break;
|
|
1647
|
-
}
|
|
1648
|
-
const newTransform = drawingPositionToTransform({ ...sheetTransform }, sheetSkeletonParam);
|
|
1649
|
-
if (newTransform) {
|
|
1650
|
-
updateDrawings.push({
|
|
1651
|
-
...drawing,
|
|
1652
|
-
transform: newTransform
|
|
1653
|
-
});
|
|
1654
|
-
break;
|
|
1655
|
-
}
|
|
1656
|
-
}
|
|
1657
|
-
}
|
|
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);
|
|
1658
1486
|
});
|
|
1659
1487
|
if (updateDrawings.length === 0) return {
|
|
1660
1488
|
redos: [],
|
|
@@ -1891,7 +1719,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1891
1719
|
};
|
|
1892
1720
|
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1893
1721
|
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1894
|
-
} else if (toColumn >=
|
|
1722
|
+
} else if (toColumn >= colStartIndex) {
|
|
1895
1723
|
if (anchorType === "1") {
|
|
1896
1724
|
newSheetTransform = {
|
|
1897
1725
|
from: { ...from },
|
|
@@ -1907,12 +1735,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1907
1735
|
axisAlignSheetTransform: transformToAxisAlignPosition({ ...transform }, skeleton)
|
|
1908
1736
|
};
|
|
1909
1737
|
}
|
|
1910
|
-
|
|
1911
|
-
newSheetTransform,
|
|
1912
|
-
newTransform,
|
|
1913
|
-
axisAlignSheetTransform
|
|
1914
|
-
};
|
|
1915
|
-
return null;
|
|
1738
|
+
return this._getStructuralDrawingResult(newSheetTransform, newTransform, axisAlignSheetTransform, skeleton);
|
|
1916
1739
|
}
|
|
1917
1740
|
_shrinkCol(colStartIndex, colEndIndex, options) {
|
|
1918
1741
|
const { sheetSkeletonParam, sheetTransform, transform, anchorType = "0" } = options;
|
|
@@ -1940,8 +1763,9 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1940
1763
|
column: toColumn - colCount
|
|
1941
1764
|
}
|
|
1942
1765
|
};
|
|
1766
|
+
if (anchorType === "0") return this._resolveShiftedPositionDrawing(newSheetTransform, transform, sheetSkeletonParam);
|
|
1943
1767
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
1944
|
-
} else if (fromColumn >= colStartIndex && toColumn <= colEndIndex) return null;
|
|
1768
|
+
} else if (anchorType === "1" && fromColumn >= colStartIndex && toColumn <= colEndIndex) return null;
|
|
1945
1769
|
else if (fromColumn < colStartIndex && toColumn > colEndIndex) {
|
|
1946
1770
|
if (anchorType === "1") {
|
|
1947
1771
|
newSheetTransform = {
|
|
@@ -1972,49 +1796,28 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
1972
1796
|
};
|
|
1973
1797
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
1974
1798
|
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1975
|
-
} else
|
|
1976
|
-
...
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
startRow: from.row,
|
|
1984
|
-
endRow: to.row
|
|
1985
|
-
});
|
|
1986
|
-
newTransform = {
|
|
1987
|
-
...transform,
|
|
1988
|
-
left: (transform.left || 0) - selectionCell.endX + selectionCell.startX - sheetTransform.from.columnOffset
|
|
1989
|
-
};
|
|
1990
|
-
}
|
|
1991
|
-
if (!newSheetTransform) {
|
|
1992
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
1993
|
-
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
1994
|
-
}
|
|
1799
|
+
} else return this._resolveShiftedPositionDrawing({
|
|
1800
|
+
...sheetTransform,
|
|
1801
|
+
from: {
|
|
1802
|
+
...from,
|
|
1803
|
+
column: colStartIndex,
|
|
1804
|
+
columnOffset: 0
|
|
1805
|
+
}
|
|
1806
|
+
}, transform, sheetSkeletonParam);
|
|
1995
1807
|
} else if (toColumn >= colStartIndex && toColumn <= colEndIndex && anchorType === "1") {
|
|
1996
|
-
const
|
|
1997
|
-
|
|
1998
|
-
endColumn: colStartIndex - 1,
|
|
1999
|
-
startRow: from.row,
|
|
2000
|
-
endRow: to.row
|
|
2001
|
-
});
|
|
1808
|
+
const boundaryColumn = Math.min(colStartIndex, skeleton.worksheet.getColumnCount() - 1);
|
|
1809
|
+
const boundaryCell = skeleton.getNoMergeCellWithCoordByIndex(from.row, boundaryColumn);
|
|
2002
1810
|
newSheetTransform = {
|
|
2003
1811
|
from: { ...from },
|
|
2004
1812
|
to: {
|
|
2005
1813
|
...to,
|
|
2006
|
-
column:
|
|
2007
|
-
columnOffset:
|
|
1814
|
+
column: boundaryColumn,
|
|
1815
|
+
columnOffset: boundaryColumn < colStartIndex ? boundaryCell.endX - boundaryCell.startX : 0
|
|
2008
1816
|
}
|
|
2009
1817
|
};
|
|
2010
1818
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
2011
1819
|
}
|
|
2012
|
-
|
|
2013
|
-
newSheetTransform,
|
|
2014
|
-
newTransform,
|
|
2015
|
-
axisAlignSheetTransform
|
|
2016
|
-
};
|
|
2017
|
-
return null;
|
|
1820
|
+
return this._getStructuralDrawingResult(newSheetTransform, newTransform, axisAlignSheetTransform, skeleton);
|
|
2018
1821
|
}
|
|
2019
1822
|
_expandRow(rowStartIndex, rowEndIndex, options) {
|
|
2020
1823
|
const { sheetSkeletonParam, sheetTransform, transform, anchorType = "0" } = options;
|
|
@@ -2044,7 +1847,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2044
1847
|
};
|
|
2045
1848
|
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
2046
1849
|
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
2047
|
-
} else if (toRow >=
|
|
1850
|
+
} else if (toRow >= rowStartIndex) {
|
|
2048
1851
|
if (anchorType === "1") {
|
|
2049
1852
|
newSheetTransform = {
|
|
2050
1853
|
from: { ...from },
|
|
@@ -2060,12 +1863,7 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2060
1863
|
axisAlignSheetTransform: transformToAxisAlignPosition({ ...transform }, skeleton)
|
|
2061
1864
|
};
|
|
2062
1865
|
}
|
|
2063
|
-
|
|
2064
|
-
newSheetTransform,
|
|
2065
|
-
newTransform,
|
|
2066
|
-
axisAlignSheetTransform
|
|
2067
|
-
};
|
|
2068
|
-
return null;
|
|
1866
|
+
return this._getStructuralDrawingResult(newSheetTransform, newTransform, axisAlignSheetTransform, skeleton);
|
|
2069
1867
|
}
|
|
2070
1868
|
_shrinkRow(rowStartIndex, rowEndIndex, options) {
|
|
2071
1869
|
const { sheetSkeletonParam, sheetTransform, transform, anchorType = "0" } = options;
|
|
@@ -2093,8 +1891,9 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2093
1891
|
row: toRow - rowCount
|
|
2094
1892
|
}
|
|
2095
1893
|
};
|
|
1894
|
+
if (anchorType === "0") return this._resolveShiftedPositionDrawing(newSheetTransform, transform, sheetSkeletonParam);
|
|
2096
1895
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
2097
|
-
} else if (fromRow >= rowStartIndex && toRow <= rowEndIndex) return null;
|
|
1896
|
+
} else if (anchorType === "1" && fromRow >= rowStartIndex && toRow <= rowEndIndex) return null;
|
|
2098
1897
|
else if (fromRow < rowStartIndex && toRow > rowEndIndex) {
|
|
2099
1898
|
if (anchorType === "1") {
|
|
2100
1899
|
newSheetTransform = {
|
|
@@ -2125,67 +1924,108 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2125
1924
|
};
|
|
2126
1925
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
2127
1926
|
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
2128
|
-
} else
|
|
2129
|
-
...
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
startColumn: from.column,
|
|
2137
|
-
endColumn: to.column
|
|
2138
|
-
});
|
|
2139
|
-
newTransform = {
|
|
2140
|
-
...transform,
|
|
2141
|
-
top: (transform.top || 0) - selectionCell.endY + selectionCell.startY - sheetTransform.from.rowOffset
|
|
2142
|
-
};
|
|
2143
|
-
}
|
|
2144
|
-
if (!newSheetTransform) {
|
|
2145
|
-
newSheetTransform = transformToDrawingPosition(newTransform, skeleton);
|
|
2146
|
-
axisAlignSheetTransform = transformToAxisAlignPosition(newTransform, skeleton);
|
|
2147
|
-
}
|
|
1927
|
+
} else return this._resolveShiftedPositionDrawing({
|
|
1928
|
+
...sheetTransform,
|
|
1929
|
+
from: {
|
|
1930
|
+
...from,
|
|
1931
|
+
row: rowStartIndex,
|
|
1932
|
+
rowOffset: 0
|
|
1933
|
+
}
|
|
1934
|
+
}, transform, sheetSkeletonParam);
|
|
2148
1935
|
} else if (toRow >= rowStartIndex && toRow <= rowEndIndex && anchorType === "1") {
|
|
2149
|
-
const
|
|
2150
|
-
|
|
2151
|
-
endColumn: from.column,
|
|
2152
|
-
startRow: rowStartIndex - 1,
|
|
2153
|
-
endRow: rowStartIndex - 1
|
|
2154
|
-
});
|
|
1936
|
+
const boundaryRow = Math.min(rowStartIndex, skeleton.worksheet.getRowCount() - 1);
|
|
1937
|
+
const boundaryCell = skeleton.getNoMergeCellWithCoordByIndex(boundaryRow, from.column);
|
|
2155
1938
|
newSheetTransform = {
|
|
2156
1939
|
from: { ...from },
|
|
2157
1940
|
to: {
|
|
2158
1941
|
...to,
|
|
2159
|
-
row:
|
|
2160
|
-
rowOffset:
|
|
1942
|
+
row: boundaryRow,
|
|
1943
|
+
rowOffset: boundaryRow < rowStartIndex ? boundaryCell.endY - boundaryCell.startY : 0
|
|
2161
1944
|
}
|
|
2162
1945
|
};
|
|
2163
1946
|
newTransform = drawingPositionToTransform(newSheetTransform, sheetSkeletonParam);
|
|
2164
1947
|
}
|
|
2165
|
-
|
|
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 {
|
|
2166
1972
|
newSheetTransform,
|
|
2167
1973
|
newTransform,
|
|
2168
|
-
axisAlignSheetTransform
|
|
1974
|
+
axisAlignSheetTransform: axisAlignSheetTransform ?? transformToAxisAlignPosition(newTransform, skeleton)
|
|
2169
1975
|
};
|
|
2170
|
-
|
|
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
|
+
});
|
|
2171
2002
|
}
|
|
2172
2003
|
_sheetRefreshListener() {
|
|
2173
2004
|
this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
|
|
2174
2005
|
if (!REFRESH_MUTATIONS.includes(command.id)) return;
|
|
2175
2006
|
queueMicrotask(() => {
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
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
|
+
}
|
|
2189
2029
|
});
|
|
2190
2030
|
}));
|
|
2191
2031
|
}
|
|
@@ -2196,43 +2036,26 @@ let SheetDrawingTransformAffectedController = class SheetDrawingTransformAffecte
|
|
|
2196
2036
|
const updateDrawings = [];
|
|
2197
2037
|
Object.keys(drawingData).forEach((drawingId) => {
|
|
2198
2038
|
const drawing = drawingData[drawingId];
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
updateDrawings.push(applySheetDrawingPlacement(drawing, getSheetDrawingPlacement(drawing), sheetSkeletonParam.skeleton));
|
|
2220
|
-
break;
|
|
2221
|
-
}
|
|
2222
|
-
const newTransform = drawingPositionToTransform(sheetTransform, sheetSkeletonParam);
|
|
2223
|
-
updateDrawings.push({
|
|
2224
|
-
...drawing,
|
|
2225
|
-
transform: {
|
|
2226
|
-
...transform,
|
|
2227
|
-
left: newTransform === null || newTransform === void 0 ? void 0 : newTransform.left,
|
|
2228
|
-
top: newTransform === null || newTransform === void 0 ? void 0 : newTransform.top,
|
|
2229
|
-
width: newTransform === null || newTransform === void 0 ? void 0 : newTransform.width,
|
|
2230
|
-
height: newTransform === null || newTransform === void 0 ? void 0 : newTransform.height
|
|
2231
|
-
}
|
|
2232
|
-
});
|
|
2233
|
-
break;
|
|
2234
|
-
}
|
|
2235
|
-
}
|
|
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);
|
|
2236
2059
|
});
|
|
2237
2060
|
this._finalizePlan(unitId, subUnitId, updateDrawings, [], "refresh", command);
|
|
2238
2061
|
}
|
|
@@ -2244,7 +2067,8 @@ SheetDrawingTransformAffectedController = __decorate([
|
|
|
2244
2067
|
__decorateParam(3, ISheetDrawingService),
|
|
2245
2068
|
__decorateParam(4, _univerjs_drawing.IDrawingManagerService),
|
|
2246
2069
|
__decorateParam(5, _univerjs_core.IUniverInstanceService),
|
|
2247
|
-
__decorateParam(6, (0, _univerjs_core.Inject)(SheetDrawingTransformPlanService))
|
|
2070
|
+
__decorateParam(6, (0, _univerjs_core.Inject)(SheetDrawingTransformPlanService)),
|
|
2071
|
+
__decorateParam(7, _univerjs_core.ILogService)
|
|
2248
2072
|
], SheetDrawingTransformAffectedController);
|
|
2249
2073
|
|
|
2250
2074
|
//#endregion
|
|
@@ -2295,7 +2119,7 @@ exports.SetWorksheetBackgroundImageMutation = SetWorksheetBackgroundImageMutatio
|
|
|
2295
2119
|
exports.SheetDrawingAnchorType = SheetDrawingAnchorType;
|
|
2296
2120
|
exports.SheetDrawingService = SheetDrawingService;
|
|
2297
2121
|
exports.SheetDrawingTransformPlanService = SheetDrawingTransformPlanService;
|
|
2298
|
-
Object.defineProperty(exports,
|
|
2122
|
+
Object.defineProperty(exports, "UniverSheetsDrawingPlugin", {
|
|
2299
2123
|
enumerable: true,
|
|
2300
2124
|
get: function () {
|
|
2301
2125
|
return UniverSheetsDrawingPlugin;
|
|
@@ -2306,6 +2130,7 @@ exports.drawingPositionToTransform = drawingPositionToTransform;
|
|
|
2306
2130
|
exports.getSheetDrawingPlacement = getSheetDrawingPlacement;
|
|
2307
2131
|
exports.isKnownSheetNonRotatableDrawingType = isKnownSheetNonRotatableDrawingType;
|
|
2308
2132
|
exports.normalizeSheetDrawingPlacement = normalizeSheetDrawingPlacement;
|
|
2133
|
+
exports.refreshSheetDrawingPlacement = refreshSheetDrawingPlacement;
|
|
2309
2134
|
exports.resolveSheetDrawingRotateEnabled = resolveSheetDrawingRotateEnabled;
|
|
2310
2135
|
exports.transformToAxisAlignPosition = transformToAxisAlignPosition;
|
|
2311
2136
|
exports.transformToDrawingPosition = transformToDrawingPosition;
|