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