@univerjs/drawing-ui 1.0.0-alpha.1 → 1.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +99 -31
- package/lib/es/index.js +99 -33
- package/lib/index.js +99 -33
- package/lib/types/commands/operations/drawing-group.operation.d.ts +5 -3
- package/lib/types/controllers/utils.d.ts +5 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/utils/rotate-enabled.d.ts +19 -0
- package/lib/types/views/panel/drawing-transform-rotation.d.ts +26 -0
- package/lib/umd/index.js +1 -1
- package/package.json +9 -9
package/lib/cjs/index.js
CHANGED
|
@@ -132,15 +132,13 @@ const SetDrawingArrangeBackwardOperation = {
|
|
|
132
132
|
//#endregion
|
|
133
133
|
//#region src/commands/operations/drawing-group.operation.ts
|
|
134
134
|
/**
|
|
135
|
-
* Now only support grouping images, shapes, and groups.
|
|
135
|
+
* Now only support grouping images, shapes, charts, and groups.
|
|
136
136
|
*/
|
|
137
|
-
const DRAWING_GROUP_TYPES =
|
|
138
|
-
_univerjs_core.DrawingTypeEnum.DRAWING_IMAGE,
|
|
139
|
-
_univerjs_core.DrawingTypeEnum.DRAWING_SHAPE,
|
|
140
|
-
_univerjs_core.DrawingTypeEnum.DRAWING_GROUP
|
|
141
|
-
];
|
|
137
|
+
const DRAWING_GROUP_TYPES = _univerjs_drawing.DRAWING_GROUPABLE_TYPES;
|
|
142
138
|
/**
|
|
143
|
-
* Group the selected drawings into a new group. The selected drawings must be
|
|
139
|
+
* Group the selected drawings into a new group. The selected drawings must be
|
|
140
|
+
* of type image, shape, chart, or group, and there must be at least 2 drawings
|
|
141
|
+
* selected.
|
|
144
142
|
*/
|
|
145
143
|
const SetDrawingGroupOperation = {
|
|
146
144
|
id: "drawing.operation.set-drawing-group",
|
|
@@ -149,7 +147,7 @@ const SetDrawingGroupOperation = {
|
|
|
149
147
|
const drawingManagerService = accessor.get(_univerjs_drawing.IDrawingManagerService);
|
|
150
148
|
const drawings = params.drawings || drawingManagerService.getFocusDrawings();
|
|
151
149
|
if (drawings.length < 2) return false;
|
|
152
|
-
if (!drawings.every((drawing) =>
|
|
150
|
+
if (!drawings.every((drawing) => (0, _univerjs_drawing.isGroupableDrawingType)(drawing.drawingType))) return false;
|
|
153
151
|
const { unitId, subUnitId } = drawings[0];
|
|
154
152
|
const groupId = (0, _univerjs_core.generateRandomId)(10);
|
|
155
153
|
const groupTransform = (0, _univerjs_engine_render.getGroupState)(0, 0, drawings.map((o) => o.transform || {}));
|
|
@@ -171,11 +169,12 @@ const SetDrawingGroupOperation = {
|
|
|
171
169
|
left: 0,
|
|
172
170
|
top: 0
|
|
173
171
|
};
|
|
174
|
-
const { unitId, subUnitId, drawingId } = drawing;
|
|
172
|
+
const { unitId, subUnitId, drawingId, drawingType } = drawing;
|
|
175
173
|
return {
|
|
176
174
|
unitId,
|
|
177
175
|
subUnitId,
|
|
178
176
|
drawingId,
|
|
177
|
+
drawingType,
|
|
179
178
|
transform: { ...transform },
|
|
180
179
|
groupId
|
|
181
180
|
};
|
|
@@ -267,8 +266,48 @@ const ImageResetSizeOperation = {
|
|
|
267
266
|
}
|
|
268
267
|
};
|
|
269
268
|
|
|
269
|
+
//#endregion
|
|
270
|
+
//#region src/utils/rotate-enabled.ts
|
|
271
|
+
function isKnownDrawingUINonRotatableType(drawingType) {
|
|
272
|
+
return drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_CHART;
|
|
273
|
+
}
|
|
274
|
+
function resolveDrawingUIRotateEnabled(drawing, options = {}) {
|
|
275
|
+
var _options$isKnownNonRo;
|
|
276
|
+
return (0, _univerjs_drawing.resolveDrawingRotateEnabled)(drawing, {
|
|
277
|
+
...options,
|
|
278
|
+
isKnownNonRotatableType: (_options$isKnownNonRo = options.isKnownNonRotatableType) !== null && _options$isKnownNonRo !== void 0 ? _options$isKnownNonRo : isKnownDrawingUINonRotatableType
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
|
|
270
282
|
//#endregion
|
|
271
283
|
//#region src/controllers/utils.ts
|
|
284
|
+
function getDrawingRenderObject(scene, drawingSearch) {
|
|
285
|
+
var _scene$getObjectInclu;
|
|
286
|
+
const key = (0, _univerjs_drawing.getDrawingShapeKeyByDrawingSearch)(drawingSearch);
|
|
287
|
+
return (_scene$getObjectInclu = scene.getObjectIncludeInGroup(key)) !== null && _scene$getObjectInclu !== void 0 ? _scene$getObjectInclu : null;
|
|
288
|
+
}
|
|
289
|
+
function disposeDrawingRenderObject(scene, drawingSearch) {
|
|
290
|
+
const object = getDrawingRenderObject(scene, drawingSearch);
|
|
291
|
+
if (object == null) return false;
|
|
292
|
+
object.dispose();
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
function getRenderObjectForDrawing(scene, drawing) {
|
|
296
|
+
return getDrawingRenderObject(scene, drawing);
|
|
297
|
+
}
|
|
298
|
+
function syncGroupRotateEnabled(group, groupParam, scene, drawingManagerService, children) {
|
|
299
|
+
const rotateEnabled = resolveDrawingUIRotateEnabled(groupParam, {
|
|
300
|
+
getChildren: (drawing) => {
|
|
301
|
+
if (children && drawing.drawingId === groupParam.drawingId && drawing.unitId === groupParam.unitId && drawing.subUnitId === groupParam.subUnitId) return children;
|
|
302
|
+
return drawingManagerService.getDrawingsByGroup(drawing);
|
|
303
|
+
},
|
|
304
|
+
getRenderObject: (drawing) => getRenderObjectForDrawing(scene, drawing)
|
|
305
|
+
});
|
|
306
|
+
group.transformerConfig = {
|
|
307
|
+
...group.transformerConfig,
|
|
308
|
+
rotateEnabled
|
|
309
|
+
};
|
|
310
|
+
}
|
|
272
311
|
function insertGroupObject(objectParam, object, scene, drawingManagerService) {
|
|
273
312
|
const groupParam = drawingManagerService.getDrawingByParam(objectParam);
|
|
274
313
|
if (groupParam == null) return;
|
|
@@ -279,11 +318,13 @@ function insertGroupObject(objectParam, object, scene, drawingManagerService) {
|
|
|
279
318
|
const objects = groupObject.getObjects();
|
|
280
319
|
for (const obj of objects) if (obj.oKey === object.oKey) return;
|
|
281
320
|
groupObject.addObject(object);
|
|
321
|
+
syncGroupRotateEnabled(groupObject, groupParam, scene, drawingManagerService);
|
|
282
322
|
return;
|
|
283
323
|
}
|
|
284
324
|
const group = new _univerjs_engine_render.DrawingGroupObject(groupKey);
|
|
285
325
|
scene.addObject(group, _univerjs_engine_render.DRAWING_OBJECT_LAYER_INDEX).attachTransformerTo(group);
|
|
286
326
|
group.addObject(object);
|
|
327
|
+
syncGroupRotateEnabled(group, groupParam, scene, drawingManagerService);
|
|
287
328
|
const { transform, groupBaseBound } = groupParam;
|
|
288
329
|
if (groupBaseBound) group.setBaseBound(groupBaseBound);
|
|
289
330
|
if (groupParam.groupId) {
|
|
@@ -322,7 +363,7 @@ function getCurrentUnitInfo(currentUniverService, propUnitId) {
|
|
|
322
363
|
//#endregion
|
|
323
364
|
//#region package.json
|
|
324
365
|
var name = "@univerjs/drawing-ui";
|
|
325
|
-
var version = "1.0.0-alpha.
|
|
366
|
+
var version = "1.0.0-alpha.2";
|
|
326
367
|
|
|
327
368
|
//#endregion
|
|
328
369
|
//#region src/config/config.ts
|
|
@@ -943,16 +984,18 @@ function getUpdateParams(objects, drawingManagerService) {
|
|
|
943
984
|
|
|
944
985
|
//#endregion
|
|
945
986
|
//#region src/controllers/drawing-update.controller.ts
|
|
987
|
+
function hasRefreshMetadata(refreshParam) {
|
|
988
|
+
return "hidden" in refreshParam || "behindText" in refreshParam;
|
|
989
|
+
}
|
|
946
990
|
function syncDrawingHiddenState(shape, drawingParam) {
|
|
947
991
|
if (!("hidden" in drawingParam)) return;
|
|
948
992
|
drawingParam.hidden === true ? shape.hide() : shape.show();
|
|
949
993
|
}
|
|
950
994
|
function mergeRefreshMetadata(drawingParam, refreshParam) {
|
|
951
|
-
|
|
952
|
-
if (!("hidden" in metadata) && !("behindText" in metadata)) return drawingParam;
|
|
995
|
+
if (!hasRefreshMetadata(refreshParam)) return drawingParam;
|
|
953
996
|
return {
|
|
954
997
|
...drawingParam,
|
|
955
|
-
...
|
|
998
|
+
...refreshParam
|
|
956
999
|
};
|
|
957
1000
|
}
|
|
958
1001
|
let DrawingUpdateController = class DrawingUpdateController extends _univerjs_core.Disposable {
|
|
@@ -1059,6 +1102,7 @@ let DrawingUpdateController = class DrawingUpdateController extends _univerjs_co
|
|
|
1059
1102
|
}));
|
|
1060
1103
|
scene.addObject(group, _univerjs_engine_render.DRAWING_OBJECT_LAYER_INDEX).attachTransformerTo(group);
|
|
1061
1104
|
group.addObjects(...objects);
|
|
1105
|
+
syncGroupRotateEnabled(group, parent, scene, this._drawingManagerService, children);
|
|
1062
1106
|
if (parent.groupBaseBound) group.setBaseBound(parent.groupBaseBound);
|
|
1063
1107
|
if (parent.groupId) {
|
|
1064
1108
|
group.isInGroup = true;
|
|
@@ -1271,15 +1315,12 @@ let DrawingUpdateController = class DrawingUpdateController extends _univerjs_co
|
|
|
1271
1315
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
1272
1316
|
if (renderObject == null) return;
|
|
1273
1317
|
const { scene } = renderObject;
|
|
1274
|
-
|
|
1318
|
+
if (disposeDrawingRenderObject(scene, {
|
|
1275
1319
|
unitId,
|
|
1276
1320
|
subUnitId,
|
|
1277
1321
|
drawingId
|
|
1278
|
-
})
|
|
1279
|
-
const drawingShapes = scene.fuzzyMathObjects(drawingShapeKey, true);
|
|
1280
|
-
if (drawingShapes.length > 0) {
|
|
1322
|
+
})) {
|
|
1281
1323
|
var _scene$getTransformer;
|
|
1282
|
-
for (const drawingShape of drawingShapes) drawingShape.dispose();
|
|
1283
1324
|
(_scene$getTransformer = scene.getTransformer()) === null || _scene$getTransformer === void 0 || _scene$getTransformer.clearSelectedObjects();
|
|
1284
1325
|
}
|
|
1285
1326
|
});
|
|
@@ -1340,7 +1381,7 @@ let DrawingUpdateController = class DrawingUpdateController extends _univerjs_co
|
|
|
1340
1381
|
subUnitId,
|
|
1341
1382
|
drawingId
|
|
1342
1383
|
});
|
|
1343
|
-
const drawingShape = scene.
|
|
1384
|
+
const drawingShape = scene.getObjectIncludeInGroup(drawingShapeKey);
|
|
1344
1385
|
const drawingParamWithRefreshMetadata = mergeRefreshMetadata(drawingParam, param);
|
|
1345
1386
|
if (drawingShape == null) {
|
|
1346
1387
|
if (drawingParamWithRefreshMetadata.hidden === true) return true;
|
|
@@ -2221,10 +2262,10 @@ function getMenuStateByDrawingFocusChangedObservable$(accessor, type) {
|
|
|
2221
2262
|
if (!drawings || drawings.length === 0) return subscriber.next(true);
|
|
2222
2263
|
if (type === "group") {
|
|
2223
2264
|
if (drawings.length < 2) return subscriber.next(true);
|
|
2224
|
-
if (!drawings.every((drawing) =>
|
|
2265
|
+
if (!drawings.every((drawing) => (0, _univerjs_drawing.isGroupableDrawingType)(drawing.drawingType))) return subscriber.next(true);
|
|
2225
2266
|
} else if (type === "unGroup") {
|
|
2226
2267
|
if (drawings.filter((drawing) => drawing.drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_GROUP).length === 0) return subscriber.next(true);
|
|
2227
|
-
} else if (!drawings.every((drawing) =>
|
|
2268
|
+
} else if (!drawings.every((drawing) => (0, _univerjs_drawing.isGroupableDrawingType)(drawing.drawingType))) return subscriber.next(true);
|
|
2228
2269
|
subscriber.next(false);
|
|
2229
2270
|
};
|
|
2230
2271
|
const subscription = drawingManagerService.focus$.subscribe((drawings) => {
|
|
@@ -2644,6 +2685,29 @@ const DrawingGroup = (props) => {
|
|
|
2644
2685
|
//#region src/utils/config.ts
|
|
2645
2686
|
const RANGE_DRAWING_ROTATION_LIMIT = [-360, 360];
|
|
2646
2687
|
|
|
2688
|
+
//#endregion
|
|
2689
|
+
//#region src/views/panel/drawing-transform-rotation.ts
|
|
2690
|
+
function isDrawingTransformRotationDisabled(rotateEnabled) {
|
|
2691
|
+
return !rotateEnabled;
|
|
2692
|
+
}
|
|
2693
|
+
function createDrawingTransformRotationChangeHandler(options) {
|
|
2694
|
+
return (val) => {
|
|
2695
|
+
if (isDrawingTransformRotationDisabled(options.rotateEnabled)) return;
|
|
2696
|
+
if (val == null) return;
|
|
2697
|
+
const { unitId, subUnitId, drawingId, drawingType } = options.drawingParam;
|
|
2698
|
+
const updateParam = {
|
|
2699
|
+
unitId,
|
|
2700
|
+
subUnitId,
|
|
2701
|
+
drawingId,
|
|
2702
|
+
drawingType,
|
|
2703
|
+
transform: { angle: val }
|
|
2704
|
+
};
|
|
2705
|
+
options.setRotation(val);
|
|
2706
|
+
options.emitUpdate([updateParam]);
|
|
2707
|
+
options.notifyChange();
|
|
2708
|
+
};
|
|
2709
|
+
}
|
|
2710
|
+
|
|
2647
2711
|
//#endregion
|
|
2648
2712
|
//#region src/views/panel/DrawingTransform.tsx
|
|
2649
2713
|
const INPUT_DEBOUNCE_TIME = 300;
|
|
@@ -2671,6 +2735,8 @@ const DrawingTransform = (props) => {
|
|
|
2671
2735
|
const [yPosition, setYPosition] = (0, react.useState)(originY);
|
|
2672
2736
|
const [rotation, setRotation] = (0, react.useState)(originRotation);
|
|
2673
2737
|
const [lockRatio, setLockRatio] = (0, react.useState)(transformer.keepRatio);
|
|
2738
|
+
const rotateEnabled = resolveDrawingUIRotateEnabled(drawingParam, { getChildren: (drawing) => drawingManagerService.getDrawingsByGroup(drawing) });
|
|
2739
|
+
const rotationDisabled = isDrawingTransformRotationDisabled(rotateEnabled);
|
|
2674
2740
|
const checkMoveBoundary = (left, top, width, height) => {
|
|
2675
2741
|
const { width: topSceneWidth, height: topSceneHeight } = topScene;
|
|
2676
2742
|
const { ancestorLeft, ancestorTop } = scene;
|
|
@@ -2811,19 +2877,18 @@ const DrawingTransform = (props) => {
|
|
|
2811
2877
|
drawingManagerService.featurePluginUpdateNotification([updateParam]);
|
|
2812
2878
|
transformer.refreshControls().changeNotification();
|
|
2813
2879
|
}, INPUT_DEBOUNCE_TIME);
|
|
2814
|
-
const handleRotationChange = (
|
|
2815
|
-
|
|
2816
|
-
|
|
2880
|
+
const handleRotationChange = createDrawingTransformRotationChangeHandler({
|
|
2881
|
+
rotateEnabled,
|
|
2882
|
+
drawingParam: {
|
|
2817
2883
|
unitId,
|
|
2818
2884
|
subUnitId,
|
|
2819
2885
|
drawingId,
|
|
2820
|
-
drawingType
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
};
|
|
2886
|
+
drawingType
|
|
2887
|
+
},
|
|
2888
|
+
setRotation,
|
|
2889
|
+
emitUpdate: (updateParams) => drawingManagerService.featurePluginUpdateNotification(updateParams),
|
|
2890
|
+
notifyChange: () => transformer.refreshControls().changeNotification()
|
|
2891
|
+
});
|
|
2827
2892
|
const handleLockRatioChange = (val) => {
|
|
2828
2893
|
setLockRatio(val);
|
|
2829
2894
|
transformer.keepRatio = val;
|
|
@@ -2885,6 +2950,7 @@ const DrawingTransform = (props) => {
|
|
|
2885
2950
|
value: rotation,
|
|
2886
2951
|
min: RANGE_DRAWING_ROTATION_LIMIT[0],
|
|
2887
2952
|
max: RANGE_DRAWING_ROTATION_LIMIT[1],
|
|
2953
|
+
disabled: rotationDisabled,
|
|
2888
2954
|
onChange: handleRotationChange
|
|
2889
2955
|
})] })
|
|
2890
2956
|
]
|
|
@@ -3155,6 +3221,8 @@ Object.defineProperty(exports, 'UniverDrawingUIPlugin', {
|
|
|
3155
3221
|
return UniverDrawingUIPlugin;
|
|
3156
3222
|
}
|
|
3157
3223
|
});
|
|
3224
|
+
exports.disposeDrawingRenderObject = disposeDrawingRenderObject;
|
|
3158
3225
|
exports.getCurrentUnitInfo = getCurrentUnitInfo;
|
|
3226
|
+
exports.getDrawingRenderObject = getDrawingRenderObject;
|
|
3159
3227
|
exports.getUpdateParams = getUpdateParams;
|
|
3160
3228
|
exports.insertGroupObject = insertGroupObject;
|
package/lib/es/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ArrangeTypeEnum, BooleanNumber, CommandType, Disposable, DrawingTypeEnum, ICommandService, IConfigService, IURLImageService, IUniverInstanceService, ImageSourceType, Inject, Injector, LocaleService, Plugin, PositionedObjectLayoutType, UniverInstanceType, checkIfMove, debounce, generateRandomId, merge, toDisposable } from "@univerjs/core";
|
|
2
|
-
import { IDrawingManagerService, IImageIoService, ImageSourceType as ImageSourceType$1, SetDrawingSelectedOperation, getDrawingShapeKeyByDrawingSearch } from "@univerjs/drawing";
|
|
2
|
+
import { DRAWING_GROUPABLE_TYPES, IDrawingManagerService, IImageIoService, ImageSourceType as ImageSourceType$1, SetDrawingSelectedOperation, getDrawingShapeKeyByDrawingSearch, isGroupableDrawingType, resolveDrawingRotateEnabled } from "@univerjs/drawing";
|
|
3
3
|
import { CURSOR_TYPE, Canvas, DRAWING_OBJECT_LAYER_INDEX, DrawingGroupObject, Group, IRenderManagerService, Image, RENDER_CLASS_TYPE, Rect, Shape, Vector2, degToRad, getGroupState, precisionTo, transformObjectOutOfGroup } from "@univerjs/engine-render";
|
|
4
4
|
import { AutofillDoubleIcon, BottomIcon, CreateCopyIcon, CropIcon, DeleteIcon, DocSettingIcon, GroupIcon, MoreDownIcon, MoveDownIcon, MoveUpIcon, TextWrapShapeIcon, TopmostIcon, UngroupIcon } from "@univerjs/icons";
|
|
5
5
|
import { ComponentManager, ContextMenuGroup, ContextMenuPosition, IDialogService, IGalleryService, IMenuManagerService, IMessageService, IconManager, MenuItemType, useDependency, useObservable } from "@univerjs/ui";
|
|
@@ -131,15 +131,13 @@ const SetDrawingArrangeBackwardOperation = {
|
|
|
131
131
|
//#endregion
|
|
132
132
|
//#region src/commands/operations/drawing-group.operation.ts
|
|
133
133
|
/**
|
|
134
|
-
* Now only support grouping images, shapes, and groups.
|
|
134
|
+
* Now only support grouping images, shapes, charts, and groups.
|
|
135
135
|
*/
|
|
136
|
-
const DRAWING_GROUP_TYPES =
|
|
137
|
-
DrawingTypeEnum.DRAWING_IMAGE,
|
|
138
|
-
DrawingTypeEnum.DRAWING_SHAPE,
|
|
139
|
-
DrawingTypeEnum.DRAWING_GROUP
|
|
140
|
-
];
|
|
136
|
+
const DRAWING_GROUP_TYPES = DRAWING_GROUPABLE_TYPES;
|
|
141
137
|
/**
|
|
142
|
-
* Group the selected drawings into a new group. The selected drawings must be
|
|
138
|
+
* Group the selected drawings into a new group. The selected drawings must be
|
|
139
|
+
* of type image, shape, chart, or group, and there must be at least 2 drawings
|
|
140
|
+
* selected.
|
|
143
141
|
*/
|
|
144
142
|
const SetDrawingGroupOperation = {
|
|
145
143
|
id: "drawing.operation.set-drawing-group",
|
|
@@ -148,7 +146,7 @@ const SetDrawingGroupOperation = {
|
|
|
148
146
|
const drawingManagerService = accessor.get(IDrawingManagerService);
|
|
149
147
|
const drawings = params.drawings || drawingManagerService.getFocusDrawings();
|
|
150
148
|
if (drawings.length < 2) return false;
|
|
151
|
-
if (!drawings.every((drawing) =>
|
|
149
|
+
if (!drawings.every((drawing) => isGroupableDrawingType(drawing.drawingType))) return false;
|
|
152
150
|
const { unitId, subUnitId } = drawings[0];
|
|
153
151
|
const groupId = generateRandomId(10);
|
|
154
152
|
const groupTransform = getGroupState(0, 0, drawings.map((o) => o.transform || {}));
|
|
@@ -170,11 +168,12 @@ const SetDrawingGroupOperation = {
|
|
|
170
168
|
left: 0,
|
|
171
169
|
top: 0
|
|
172
170
|
};
|
|
173
|
-
const { unitId, subUnitId, drawingId } = drawing;
|
|
171
|
+
const { unitId, subUnitId, drawingId, drawingType } = drawing;
|
|
174
172
|
return {
|
|
175
173
|
unitId,
|
|
176
174
|
subUnitId,
|
|
177
175
|
drawingId,
|
|
176
|
+
drawingType,
|
|
178
177
|
transform: { ...transform },
|
|
179
178
|
groupId
|
|
180
179
|
};
|
|
@@ -266,8 +265,48 @@ const ImageResetSizeOperation = {
|
|
|
266
265
|
}
|
|
267
266
|
};
|
|
268
267
|
|
|
268
|
+
//#endregion
|
|
269
|
+
//#region src/utils/rotate-enabled.ts
|
|
270
|
+
function isKnownDrawingUINonRotatableType(drawingType) {
|
|
271
|
+
return drawingType === DrawingTypeEnum.DRAWING_CHART;
|
|
272
|
+
}
|
|
273
|
+
function resolveDrawingUIRotateEnabled(drawing, options = {}) {
|
|
274
|
+
var _options$isKnownNonRo;
|
|
275
|
+
return resolveDrawingRotateEnabled(drawing, {
|
|
276
|
+
...options,
|
|
277
|
+
isKnownNonRotatableType: (_options$isKnownNonRo = options.isKnownNonRotatableType) !== null && _options$isKnownNonRo !== void 0 ? _options$isKnownNonRo : isKnownDrawingUINonRotatableType
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
|
|
269
281
|
//#endregion
|
|
270
282
|
//#region src/controllers/utils.ts
|
|
283
|
+
function getDrawingRenderObject(scene, drawingSearch) {
|
|
284
|
+
var _scene$getObjectInclu;
|
|
285
|
+
const key = getDrawingShapeKeyByDrawingSearch(drawingSearch);
|
|
286
|
+
return (_scene$getObjectInclu = scene.getObjectIncludeInGroup(key)) !== null && _scene$getObjectInclu !== void 0 ? _scene$getObjectInclu : null;
|
|
287
|
+
}
|
|
288
|
+
function disposeDrawingRenderObject(scene, drawingSearch) {
|
|
289
|
+
const object = getDrawingRenderObject(scene, drawingSearch);
|
|
290
|
+
if (object == null) return false;
|
|
291
|
+
object.dispose();
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
294
|
+
function getRenderObjectForDrawing(scene, drawing) {
|
|
295
|
+
return getDrawingRenderObject(scene, drawing);
|
|
296
|
+
}
|
|
297
|
+
function syncGroupRotateEnabled(group, groupParam, scene, drawingManagerService, children) {
|
|
298
|
+
const rotateEnabled = resolveDrawingUIRotateEnabled(groupParam, {
|
|
299
|
+
getChildren: (drawing) => {
|
|
300
|
+
if (children && drawing.drawingId === groupParam.drawingId && drawing.unitId === groupParam.unitId && drawing.subUnitId === groupParam.subUnitId) return children;
|
|
301
|
+
return drawingManagerService.getDrawingsByGroup(drawing);
|
|
302
|
+
},
|
|
303
|
+
getRenderObject: (drawing) => getRenderObjectForDrawing(scene, drawing)
|
|
304
|
+
});
|
|
305
|
+
group.transformerConfig = {
|
|
306
|
+
...group.transformerConfig,
|
|
307
|
+
rotateEnabled
|
|
308
|
+
};
|
|
309
|
+
}
|
|
271
310
|
function insertGroupObject(objectParam, object, scene, drawingManagerService) {
|
|
272
311
|
const groupParam = drawingManagerService.getDrawingByParam(objectParam);
|
|
273
312
|
if (groupParam == null) return;
|
|
@@ -278,11 +317,13 @@ function insertGroupObject(objectParam, object, scene, drawingManagerService) {
|
|
|
278
317
|
const objects = groupObject.getObjects();
|
|
279
318
|
for (const obj of objects) if (obj.oKey === object.oKey) return;
|
|
280
319
|
groupObject.addObject(object);
|
|
320
|
+
syncGroupRotateEnabled(groupObject, groupParam, scene, drawingManagerService);
|
|
281
321
|
return;
|
|
282
322
|
}
|
|
283
323
|
const group = new DrawingGroupObject(groupKey);
|
|
284
324
|
scene.addObject(group, DRAWING_OBJECT_LAYER_INDEX).attachTransformerTo(group);
|
|
285
325
|
group.addObject(object);
|
|
326
|
+
syncGroupRotateEnabled(group, groupParam, scene, drawingManagerService);
|
|
286
327
|
const { transform, groupBaseBound } = groupParam;
|
|
287
328
|
if (groupBaseBound) group.setBaseBound(groupBaseBound);
|
|
288
329
|
if (groupParam.groupId) {
|
|
@@ -321,7 +362,7 @@ function getCurrentUnitInfo(currentUniverService, propUnitId) {
|
|
|
321
362
|
//#endregion
|
|
322
363
|
//#region package.json
|
|
323
364
|
var name = "@univerjs/drawing-ui";
|
|
324
|
-
var version = "1.0.0-alpha.
|
|
365
|
+
var version = "1.0.0-alpha.2";
|
|
325
366
|
|
|
326
367
|
//#endregion
|
|
327
368
|
//#region src/config/config.ts
|
|
@@ -942,16 +983,18 @@ function getUpdateParams(objects, drawingManagerService) {
|
|
|
942
983
|
|
|
943
984
|
//#endregion
|
|
944
985
|
//#region src/controllers/drawing-update.controller.ts
|
|
986
|
+
function hasRefreshMetadata(refreshParam) {
|
|
987
|
+
return "hidden" in refreshParam || "behindText" in refreshParam;
|
|
988
|
+
}
|
|
945
989
|
function syncDrawingHiddenState(shape, drawingParam) {
|
|
946
990
|
if (!("hidden" in drawingParam)) return;
|
|
947
991
|
drawingParam.hidden === true ? shape.hide() : shape.show();
|
|
948
992
|
}
|
|
949
993
|
function mergeRefreshMetadata(drawingParam, refreshParam) {
|
|
950
|
-
|
|
951
|
-
if (!("hidden" in metadata) && !("behindText" in metadata)) return drawingParam;
|
|
994
|
+
if (!hasRefreshMetadata(refreshParam)) return drawingParam;
|
|
952
995
|
return {
|
|
953
996
|
...drawingParam,
|
|
954
|
-
...
|
|
997
|
+
...refreshParam
|
|
955
998
|
};
|
|
956
999
|
}
|
|
957
1000
|
let DrawingUpdateController = class DrawingUpdateController extends Disposable {
|
|
@@ -1058,6 +1101,7 @@ let DrawingUpdateController = class DrawingUpdateController extends Disposable {
|
|
|
1058
1101
|
}));
|
|
1059
1102
|
scene.addObject(group, DRAWING_OBJECT_LAYER_INDEX).attachTransformerTo(group);
|
|
1060
1103
|
group.addObjects(...objects);
|
|
1104
|
+
syncGroupRotateEnabled(group, parent, scene, this._drawingManagerService, children);
|
|
1061
1105
|
if (parent.groupBaseBound) group.setBaseBound(parent.groupBaseBound);
|
|
1062
1106
|
if (parent.groupId) {
|
|
1063
1107
|
group.isInGroup = true;
|
|
@@ -1270,15 +1314,12 @@ let DrawingUpdateController = class DrawingUpdateController extends Disposable {
|
|
|
1270
1314
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
1271
1315
|
if (renderObject == null) return;
|
|
1272
1316
|
const { scene } = renderObject;
|
|
1273
|
-
|
|
1317
|
+
if (disposeDrawingRenderObject(scene, {
|
|
1274
1318
|
unitId,
|
|
1275
1319
|
subUnitId,
|
|
1276
1320
|
drawingId
|
|
1277
|
-
})
|
|
1278
|
-
const drawingShapes = scene.fuzzyMathObjects(drawingShapeKey, true);
|
|
1279
|
-
if (drawingShapes.length > 0) {
|
|
1321
|
+
})) {
|
|
1280
1322
|
var _scene$getTransformer;
|
|
1281
|
-
for (const drawingShape of drawingShapes) drawingShape.dispose();
|
|
1282
1323
|
(_scene$getTransformer = scene.getTransformer()) === null || _scene$getTransformer === void 0 || _scene$getTransformer.clearSelectedObjects();
|
|
1283
1324
|
}
|
|
1284
1325
|
});
|
|
@@ -1339,7 +1380,7 @@ let DrawingUpdateController = class DrawingUpdateController extends Disposable {
|
|
|
1339
1380
|
subUnitId,
|
|
1340
1381
|
drawingId
|
|
1341
1382
|
});
|
|
1342
|
-
const drawingShape = scene.
|
|
1383
|
+
const drawingShape = scene.getObjectIncludeInGroup(drawingShapeKey);
|
|
1343
1384
|
const drawingParamWithRefreshMetadata = mergeRefreshMetadata(drawingParam, param);
|
|
1344
1385
|
if (drawingShape == null) {
|
|
1345
1386
|
if (drawingParamWithRefreshMetadata.hidden === true) return true;
|
|
@@ -2220,10 +2261,10 @@ function getMenuStateByDrawingFocusChangedObservable$(accessor, type) {
|
|
|
2220
2261
|
if (!drawings || drawings.length === 0) return subscriber.next(true);
|
|
2221
2262
|
if (type === "group") {
|
|
2222
2263
|
if (drawings.length < 2) return subscriber.next(true);
|
|
2223
|
-
if (!drawings.every((drawing) =>
|
|
2264
|
+
if (!drawings.every((drawing) => isGroupableDrawingType(drawing.drawingType))) return subscriber.next(true);
|
|
2224
2265
|
} else if (type === "unGroup") {
|
|
2225
2266
|
if (drawings.filter((drawing) => drawing.drawingType === DrawingTypeEnum.DRAWING_GROUP).length === 0) return subscriber.next(true);
|
|
2226
|
-
} else if (!drawings.every((drawing) =>
|
|
2267
|
+
} else if (!drawings.every((drawing) => isGroupableDrawingType(drawing.drawingType))) return subscriber.next(true);
|
|
2227
2268
|
subscriber.next(false);
|
|
2228
2269
|
};
|
|
2229
2270
|
const subscription = drawingManagerService.focus$.subscribe((drawings) => {
|
|
@@ -2643,6 +2684,29 @@ const DrawingGroup = (props) => {
|
|
|
2643
2684
|
//#region src/utils/config.ts
|
|
2644
2685
|
const RANGE_DRAWING_ROTATION_LIMIT = [-360, 360];
|
|
2645
2686
|
|
|
2687
|
+
//#endregion
|
|
2688
|
+
//#region src/views/panel/drawing-transform-rotation.ts
|
|
2689
|
+
function isDrawingTransformRotationDisabled(rotateEnabled) {
|
|
2690
|
+
return !rotateEnabled;
|
|
2691
|
+
}
|
|
2692
|
+
function createDrawingTransformRotationChangeHandler(options) {
|
|
2693
|
+
return (val) => {
|
|
2694
|
+
if (isDrawingTransformRotationDisabled(options.rotateEnabled)) return;
|
|
2695
|
+
if (val == null) return;
|
|
2696
|
+
const { unitId, subUnitId, drawingId, drawingType } = options.drawingParam;
|
|
2697
|
+
const updateParam = {
|
|
2698
|
+
unitId,
|
|
2699
|
+
subUnitId,
|
|
2700
|
+
drawingId,
|
|
2701
|
+
drawingType,
|
|
2702
|
+
transform: { angle: val }
|
|
2703
|
+
};
|
|
2704
|
+
options.setRotation(val);
|
|
2705
|
+
options.emitUpdate([updateParam]);
|
|
2706
|
+
options.notifyChange();
|
|
2707
|
+
};
|
|
2708
|
+
}
|
|
2709
|
+
|
|
2646
2710
|
//#endregion
|
|
2647
2711
|
//#region src/views/panel/DrawingTransform.tsx
|
|
2648
2712
|
const INPUT_DEBOUNCE_TIME = 300;
|
|
@@ -2670,6 +2734,8 @@ const DrawingTransform = (props) => {
|
|
|
2670
2734
|
const [yPosition, setYPosition] = useState(originY);
|
|
2671
2735
|
const [rotation, setRotation] = useState(originRotation);
|
|
2672
2736
|
const [lockRatio, setLockRatio] = useState(transformer.keepRatio);
|
|
2737
|
+
const rotateEnabled = resolveDrawingUIRotateEnabled(drawingParam, { getChildren: (drawing) => drawingManagerService.getDrawingsByGroup(drawing) });
|
|
2738
|
+
const rotationDisabled = isDrawingTransformRotationDisabled(rotateEnabled);
|
|
2673
2739
|
const checkMoveBoundary = (left, top, width, height) => {
|
|
2674
2740
|
const { width: topSceneWidth, height: topSceneHeight } = topScene;
|
|
2675
2741
|
const { ancestorLeft, ancestorTop } = scene;
|
|
@@ -2810,19 +2876,18 @@ const DrawingTransform = (props) => {
|
|
|
2810
2876
|
drawingManagerService.featurePluginUpdateNotification([updateParam]);
|
|
2811
2877
|
transformer.refreshControls().changeNotification();
|
|
2812
2878
|
}, INPUT_DEBOUNCE_TIME);
|
|
2813
|
-
const handleRotationChange = (
|
|
2814
|
-
|
|
2815
|
-
|
|
2879
|
+
const handleRotationChange = createDrawingTransformRotationChangeHandler({
|
|
2880
|
+
rotateEnabled,
|
|
2881
|
+
drawingParam: {
|
|
2816
2882
|
unitId,
|
|
2817
2883
|
subUnitId,
|
|
2818
2884
|
drawingId,
|
|
2819
|
-
drawingType
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
};
|
|
2885
|
+
drawingType
|
|
2886
|
+
},
|
|
2887
|
+
setRotation,
|
|
2888
|
+
emitUpdate: (updateParams) => drawingManagerService.featurePluginUpdateNotification(updateParams),
|
|
2889
|
+
notifyChange: () => transformer.refreshControls().changeNotification()
|
|
2890
|
+
});
|
|
2826
2891
|
const handleLockRatioChange = (val) => {
|
|
2827
2892
|
setLockRatio(val);
|
|
2828
2893
|
transformer.keepRatio = val;
|
|
@@ -2884,6 +2949,7 @@ const DrawingTransform = (props) => {
|
|
|
2884
2949
|
value: rotation,
|
|
2885
2950
|
min: RANGE_DRAWING_ROTATION_LIMIT[0],
|
|
2886
2951
|
max: RANGE_DRAWING_ROTATION_LIMIT[1],
|
|
2952
|
+
disabled: rotationDisabled,
|
|
2887
2953
|
onChange: handleRotationChange
|
|
2888
2954
|
})] })
|
|
2889
2955
|
]
|
|
@@ -3128,4 +3194,4 @@ const DrawingCommonPanel = (props) => {
|
|
|
3128
3194
|
};
|
|
3129
3195
|
|
|
3130
3196
|
//#endregion
|
|
3131
|
-
export { AutoImageCropOperation, COMPONENT_IMAGE_POPUP_MENU, CancelDrawingGroupOperation, CloseImageCropOperation, DRAWING_GROUP_TYPES, DrawingCommonPanel, DrawingImageClipService, DrawingRenderService, IMAGE_CLIP_SHAPE_PICKER_COMPONENT, ImageCropperObject, ImageResetSizeOperation, OpenImageCropOperation, SetDrawingAlignOperation, SetDrawingArrangeOperation, SetDrawingGroupOperation, UniverDrawingUIPlugin, getCurrentUnitInfo, getUpdateParams, insertGroupObject };
|
|
3197
|
+
export { AutoImageCropOperation, COMPONENT_IMAGE_POPUP_MENU, CancelDrawingGroupOperation, CloseImageCropOperation, DRAWING_GROUP_TYPES, DrawingCommonPanel, DrawingImageClipService, DrawingRenderService, IMAGE_CLIP_SHAPE_PICKER_COMPONENT, ImageCropperObject, ImageResetSizeOperation, OpenImageCropOperation, SetDrawingAlignOperation, SetDrawingArrangeOperation, SetDrawingGroupOperation, UniverDrawingUIPlugin, disposeDrawingRenderObject, getCurrentUnitInfo, getDrawingRenderObject, getUpdateParams, insertGroupObject };
|