@univerjs/sheets-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 +149 -16
- package/lib/es/index.js +150 -17
- package/lib/index.js +150 -17
- package/lib/types/facade/f-worksheet.d.ts +2 -2
- package/lib/types/services/canvas-float-dom-manager.service.d.ts +44 -1
- package/lib/umd/index.js +2 -2
- package/package.json +14 -14
package/lib/cjs/index.js
CHANGED
|
@@ -820,7 +820,8 @@ let SheetDrawingUpdateController = class SheetDrawingUpdateController extends _u
|
|
|
820
820
|
this.disposeWithMe(this._drawingManagerService.featurePluginGroupUpdate$.subscribe((params) => {
|
|
821
821
|
const grpParams = [];
|
|
822
822
|
for (const param of params) {
|
|
823
|
-
const
|
|
823
|
+
const parent = param.parent;
|
|
824
|
+
const grpSheetTransform = this._getSheetTransformByParam(parent, true);
|
|
824
825
|
const children = [];
|
|
825
826
|
for (const child of param.children) {
|
|
826
827
|
const childSheetTransformInfo = this._getSheetTransformByParam(child, false);
|
|
@@ -832,7 +833,7 @@ let SheetDrawingUpdateController = class SheetDrawingUpdateController extends _u
|
|
|
832
833
|
}
|
|
833
834
|
const grpParam = {
|
|
834
835
|
parent: {
|
|
835
|
-
...
|
|
836
|
+
...parent,
|
|
836
837
|
sheetTransform: grpSheetTransform === null || grpSheetTransform === void 0 ? void 0 : grpSheetTransform.sheetTransform,
|
|
837
838
|
axisAlignSheetTransform: grpSheetTransform === null || grpSheetTransform === void 0 ? void 0 : grpSheetTransform.axisAlignSheetTransform
|
|
838
839
|
},
|
|
@@ -1680,7 +1681,7 @@ function UploadCellImageMenuFactory(accessor) {
|
|
|
1680
1681
|
//#endregion
|
|
1681
1682
|
//#region package.json
|
|
1682
1683
|
var name = "@univerjs/sheets-drawing-ui";
|
|
1683
|
-
var version = "1.0.0-alpha.
|
|
1684
|
+
var version = "1.0.0-alpha.2";
|
|
1684
1685
|
|
|
1685
1686
|
//#endregion
|
|
1686
1687
|
//#region src/config/config.ts
|
|
@@ -3057,11 +3058,37 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3057
3058
|
_defineProperty(this, "add$", this._add$.asObservable());
|
|
3058
3059
|
_defineProperty(this, "_remove$", new rxjs.Subject());
|
|
3059
3060
|
_defineProperty(this, "remove$", this._remove$.asObservable());
|
|
3061
|
+
_defineProperty(this, "_renderObjectFactories", /* @__PURE__ */ new Map());
|
|
3060
3062
|
this._drawingAddListener();
|
|
3061
3063
|
this._featureUpdateListener();
|
|
3062
3064
|
this._deleteListener();
|
|
3063
3065
|
this._bindScrollEvent();
|
|
3064
3066
|
}
|
|
3067
|
+
/**
|
|
3068
|
+
* Register a factory that creates the canvas-side render object for a sheet
|
|
3069
|
+
* float-dom drawing type. The latest registered factory wins; disposing the
|
|
3070
|
+
* returned handle unregisters it and restores the previous factory or the
|
|
3071
|
+
* default {@link Rect} fallback.
|
|
3072
|
+
*/
|
|
3073
|
+
registerRenderObjectFactory(drawingType, factory) {
|
|
3074
|
+
var _this$_renderObjectFa;
|
|
3075
|
+
const factories = (_this$_renderObjectFa = this._renderObjectFactories.get(drawingType)) !== null && _this$_renderObjectFa !== void 0 ? _this$_renderObjectFa : [];
|
|
3076
|
+
factories.push(factory);
|
|
3077
|
+
this._renderObjectFactories.set(drawingType, factories);
|
|
3078
|
+
return { dispose: () => {
|
|
3079
|
+
const currentFactories = this._renderObjectFactories.get(drawingType);
|
|
3080
|
+
if (!currentFactories) return;
|
|
3081
|
+
const index = currentFactories.indexOf(factory);
|
|
3082
|
+
if (index >= 0) currentFactories.splice(index, 1);
|
|
3083
|
+
if (currentFactories.length === 0) this._renderObjectFactories.delete(drawingType);
|
|
3084
|
+
} };
|
|
3085
|
+
}
|
|
3086
|
+
_createRenderObject(context) {
|
|
3087
|
+
var _factory;
|
|
3088
|
+
const factories = this._renderObjectFactories.get(context.drawingType);
|
|
3089
|
+
const factory = factories === null || factories === void 0 ? void 0 : factories[factories.length - 1];
|
|
3090
|
+
return (_factory = factory === null || factory === void 0 ? void 0 : factory(context)) !== null && _factory !== void 0 ? _factory : new _univerjs_engine_render.Rect(context.key, context.config);
|
|
3091
|
+
}
|
|
3065
3092
|
_bindScrollEvent() {
|
|
3066
3093
|
this._lifecycleService.lifecycle$.pipe((0, rxjs.filter)((s) => s === _univerjs_core.LifecycleStages.Rendered), (0, rxjs.take)(1)).subscribe(() => {
|
|
3067
3094
|
this._scrollUpdateListener();
|
|
@@ -3101,7 +3128,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3101
3128
|
if (!floatDomParam || !target) return;
|
|
3102
3129
|
const skeleton = (_this$_renderManagerS = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.with(_univerjs_sheets_ui.SheetSkeletonManagerService).getSkeletonParam(subUnitId);
|
|
3103
3130
|
if (!skeleton) return;
|
|
3104
|
-
const { transform, drawingType, data, hidden } = floatDomParam;
|
|
3131
|
+
const { transform, drawingType, data, hidden, groupId } = floatDomParam;
|
|
3105
3132
|
if (drawingType !== _univerjs_core.DrawingTypeEnum.DRAWING_DOM && drawingType !== _univerjs_core.DrawingTypeEnum.DRAWING_CHART) return;
|
|
3106
3133
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
3107
3134
|
if (renderObject == null) return;
|
|
@@ -3115,8 +3142,14 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3115
3142
|
subUnitId,
|
|
3116
3143
|
drawingId
|
|
3117
3144
|
});
|
|
3118
|
-
const
|
|
3145
|
+
const groupShapeKey = groupId ? (0, _univerjs_drawing.getDrawingShapeKeyByDrawingSearch)({
|
|
3146
|
+
unitId,
|
|
3147
|
+
subUnitId,
|
|
3148
|
+
drawingId: groupId
|
|
3149
|
+
}) : void 0;
|
|
3150
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey, groupShapeKey);
|
|
3119
3151
|
if (rectShape != null) {
|
|
3152
|
+
this._removeTopLevelDuplicateIfGrouped(scene, rectShapeKey, rectShape);
|
|
3120
3153
|
rectShape.transformByState({
|
|
3121
3154
|
left,
|
|
3122
3155
|
top,
|
|
@@ -3128,6 +3161,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3128
3161
|
skewX,
|
|
3129
3162
|
skewY
|
|
3130
3163
|
});
|
|
3164
|
+
this._syncFloatDomRect(drawingId, rectShape);
|
|
3131
3165
|
return;
|
|
3132
3166
|
}
|
|
3133
3167
|
const imageConfig = {
|
|
@@ -3140,18 +3174,32 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3140
3174
|
const isChart = drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_CHART;
|
|
3141
3175
|
imageConfig.rotateEnabled = false;
|
|
3142
3176
|
if (isChart) {
|
|
3143
|
-
|
|
3177
|
+
const backgroundColor = this._getChartDataBackground(data);
|
|
3178
|
+
if (backgroundColor !== void 0) imageConfig.fill = backgroundColor;
|
|
3144
3179
|
if (data && data.border) imageConfig.stroke = data.border;
|
|
3145
3180
|
imageConfig.paintFirst = "stroke";
|
|
3146
3181
|
imageConfig.strokeWidth = 1;
|
|
3147
3182
|
imageConfig.borderEnabled = false;
|
|
3148
3183
|
imageConfig.radius = 8;
|
|
3149
3184
|
}
|
|
3150
|
-
const rect =
|
|
3185
|
+
const rect = this._createRenderObject({
|
|
3186
|
+
key: rectShapeKey,
|
|
3187
|
+
config: imageConfig,
|
|
3188
|
+
unitId,
|
|
3189
|
+
subUnitId,
|
|
3190
|
+
drawingId,
|
|
3191
|
+
drawingType,
|
|
3192
|
+
data
|
|
3193
|
+
});
|
|
3151
3194
|
if (isChart) rect.setObjectType(_univerjs_engine_render.ObjectType.CHART);
|
|
3152
3195
|
else if (drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_DOM) rect.setObjectType(_univerjs_engine_render.ObjectType.DRAWING_DOM);
|
|
3153
3196
|
scene.addObject(rect, _univerjs_engine_render.DRAWING_OBJECT_LAYER_INDEX);
|
|
3154
3197
|
if (floatDomParam.allowTransform !== false) scene.attachTransformerTo(rect);
|
|
3198
|
+
if (isChart && groupId) (0, _univerjs_drawing_ui.insertGroupObject)({
|
|
3199
|
+
drawingId: groupId,
|
|
3200
|
+
unitId,
|
|
3201
|
+
subUnitId
|
|
3202
|
+
}, rect, scene, this._drawingManagerService);
|
|
3155
3203
|
const disposableCollection = new _univerjs_core.DisposableCollection();
|
|
3156
3204
|
const position$ = new rxjs.BehaviorSubject(calcSheetFloatDomPosition(rect, renderObject.renderUnit.scene, skeleton.skeleton, target.worksheet));
|
|
3157
3205
|
const domId = `${SHEET_FLOAT_DOM_PREFIX}${(0, _univerjs_core.generateRandomId)(6)}`;
|
|
@@ -3206,7 +3254,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3206
3254
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
3207
3255
|
if (renderObject == null) return;
|
|
3208
3256
|
const { transformer, scene } = renderObject;
|
|
3209
|
-
const rectShape =
|
|
3257
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey);
|
|
3210
3258
|
if (rectShape === null || rectShape === void 0 ? void 0 : rectShape.oKey) {
|
|
3211
3259
|
var _scene$getTransformer;
|
|
3212
3260
|
transformer.clearControlByIds([rectShape === null || rectShape === void 0 ? void 0 : rectShape.oKey]);
|
|
@@ -3279,9 +3327,60 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3279
3327
|
subUnitId,
|
|
3280
3328
|
drawingId: id
|
|
3281
3329
|
});
|
|
3282
|
-
const
|
|
3283
|
-
|
|
3330
|
+
const drawing = this._drawingManagerService.getDrawingByParam({
|
|
3331
|
+
unitId,
|
|
3332
|
+
subUnitId,
|
|
3333
|
+
drawingId: id
|
|
3334
|
+
});
|
|
3335
|
+
const groupShapeKey = (drawing === null || drawing === void 0 ? void 0 : drawing.groupId) ? (0, _univerjs_drawing.getDrawingShapeKeyByDrawingSearch)({
|
|
3336
|
+
unitId,
|
|
3337
|
+
subUnitId,
|
|
3338
|
+
drawingId: drawing.groupId
|
|
3339
|
+
}) : void 0;
|
|
3340
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey, groupShapeKey);
|
|
3341
|
+
if (rectShape && rectShape instanceof _univerjs_engine_render.Rect) {
|
|
3342
|
+
this._removeTopLevelDuplicateIfGrouped(scene, rectShapeKey, rectShape);
|
|
3343
|
+
rectShape.setProps(props);
|
|
3344
|
+
this._syncFloatDomRect(id, rectShape);
|
|
3345
|
+
}
|
|
3346
|
+
}
|
|
3347
|
+
}
|
|
3348
|
+
_getObjectIncludingGroup(scene, key, groupKey) {
|
|
3349
|
+
var _ref, _ref2, _this$_getChildObject, _scene$getObjectInclu;
|
|
3350
|
+
return (_ref = (_ref2 = (_this$_getChildObject = this._getChildObjectFromGroup(scene, key, groupKey)) !== null && _this$_getChildObject !== void 0 ? _this$_getChildObject : (_scene$getObjectInclu = scene.getObjectIncludeInGroup) === null || _scene$getObjectInclu === void 0 ? void 0 : _scene$getObjectInclu.call(scene, key)) !== null && _ref2 !== void 0 ? _ref2 : scene.getObject(key)) !== null && _ref !== void 0 ? _ref : null;
|
|
3351
|
+
}
|
|
3352
|
+
_getChildObjectFromGroup(scene, key, groupKey) {
|
|
3353
|
+
var _scene$getObjectInclu2, _scene$getObjectInclu3;
|
|
3354
|
+
if (!groupKey) return null;
|
|
3355
|
+
const groupObject = (_scene$getObjectInclu2 = (_scene$getObjectInclu3 = scene.getObjectIncludeInGroup) === null || _scene$getObjectInclu3 === void 0 ? void 0 : _scene$getObjectInclu3.call(scene, groupKey)) !== null && _scene$getObjectInclu2 !== void 0 ? _scene$getObjectInclu2 : scene.getObject(groupKey);
|
|
3356
|
+
return this._findChildObject(groupObject, key);
|
|
3357
|
+
}
|
|
3358
|
+
_findChildObject(object, key) {
|
|
3359
|
+
if (!object) return null;
|
|
3360
|
+
const children = object.getObjects();
|
|
3361
|
+
for (const child of children) {
|
|
3362
|
+
if (child.oKey === key) return child;
|
|
3363
|
+
const nested = this._findChildObject(child, key);
|
|
3364
|
+
if (nested) return nested;
|
|
3284
3365
|
}
|
|
3366
|
+
return null;
|
|
3367
|
+
}
|
|
3368
|
+
_removeTopLevelDuplicateIfGrouped(scene, key, object) {
|
|
3369
|
+
if (!object.isInGroup) return;
|
|
3370
|
+
const topLevelObject = scene.getObject(key);
|
|
3371
|
+
if (topLevelObject && topLevelObject !== object) scene.removeObject(topLevelObject);
|
|
3372
|
+
}
|
|
3373
|
+
_syncFloatDomRect(id, object) {
|
|
3374
|
+
if (!(object instanceof _univerjs_engine_render.Rect)) return;
|
|
3375
|
+
const info = this._domLayerInfoMap.get(id);
|
|
3376
|
+
if (info) info.rect = object;
|
|
3377
|
+
}
|
|
3378
|
+
_getChartDataBackground(data) {
|
|
3379
|
+
var _record$backgroundCol;
|
|
3380
|
+
if (!data || typeof data !== "object" || Array.isArray(data)) return;
|
|
3381
|
+
const record = data;
|
|
3382
|
+
const background = (_record$backgroundCol = record.backgroundColor) !== null && _record$backgroundCol !== void 0 ? _record$backgroundCol : record.background;
|
|
3383
|
+
return typeof background === "string" ? background : void 0;
|
|
3285
3384
|
}
|
|
3286
3385
|
_getPosition(position, unitId) {
|
|
3287
3386
|
var _this$_renderManagerS3;
|
|
@@ -3388,7 +3487,18 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3388
3487
|
this._domLayerInfoMap.delete(id);
|
|
3389
3488
|
info.dispose.dispose();
|
|
3390
3489
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
3391
|
-
if (renderObject)
|
|
3490
|
+
if (renderObject) {
|
|
3491
|
+
const { scene, transformer } = renderObject;
|
|
3492
|
+
if ((0, _univerjs_drawing_ui.disposeDrawingRenderObject)(scene, {
|
|
3493
|
+
unitId,
|
|
3494
|
+
subUnitId,
|
|
3495
|
+
drawingId: id
|
|
3496
|
+
})) {
|
|
3497
|
+
var _scene$getTransformer2;
|
|
3498
|
+
transformer.clearControlByIds([info.rect.oKey]);
|
|
3499
|
+
(_scene$getTransformer2 = scene.getTransformer()) === null || _scene$getTransformer2 === void 0 || _scene$getTransformer2.clearSelectedObjects();
|
|
3500
|
+
}
|
|
3501
|
+
}
|
|
3392
3502
|
if (removeDrawing) {
|
|
3393
3503
|
const param = this._drawingManagerService.getDrawingByParam({
|
|
3394
3504
|
unitId,
|
|
@@ -3463,7 +3573,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3463
3573
|
if (!skMangerService) return;
|
|
3464
3574
|
const skeletonParam = skMangerService.getSkeletonParam(subUnitId);
|
|
3465
3575
|
if (!skeletonParam) return;
|
|
3466
|
-
const { transform, drawingType, data } = floatDomParam;
|
|
3576
|
+
const { transform, drawingType, data, groupId } = floatDomParam;
|
|
3467
3577
|
if (drawingType !== _univerjs_core.DrawingTypeEnum.DRAWING_DOM && drawingType !== _univerjs_core.DrawingTypeEnum.DRAWING_CHART) return;
|
|
3468
3578
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
3469
3579
|
if (renderObject == null) return;
|
|
@@ -3476,8 +3586,14 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3476
3586
|
subUnitId,
|
|
3477
3587
|
drawingId
|
|
3478
3588
|
});
|
|
3479
|
-
const
|
|
3589
|
+
const groupShapeKey = groupId ? (0, _univerjs_drawing.getDrawingShapeKeyByDrawingSearch)({
|
|
3590
|
+
unitId,
|
|
3591
|
+
subUnitId,
|
|
3592
|
+
drawingId: groupId
|
|
3593
|
+
}) : void 0;
|
|
3594
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey, groupShapeKey);
|
|
3480
3595
|
if (rectShape != null) {
|
|
3596
|
+
this._removeTopLevelDuplicateIfGrouped(scene, rectShapeKey, rectShape);
|
|
3481
3597
|
rectShape.transformByState({
|
|
3482
3598
|
left,
|
|
3483
3599
|
top,
|
|
@@ -3489,6 +3605,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3489
3605
|
skewX,
|
|
3490
3606
|
skewY
|
|
3491
3607
|
});
|
|
3608
|
+
this._syncFloatDomRect(drawingId, rectShape);
|
|
3492
3609
|
return;
|
|
3493
3610
|
}
|
|
3494
3611
|
const domConfig = {
|
|
@@ -3500,7 +3617,8 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3500
3617
|
};
|
|
3501
3618
|
const isChart = drawingType === _univerjs_core.DrawingTypeEnum.DRAWING_CHART;
|
|
3502
3619
|
if (isChart) {
|
|
3503
|
-
|
|
3620
|
+
const backgroundColor = this._getChartDataBackground(data);
|
|
3621
|
+
if (backgroundColor !== void 0) domConfig.fill = backgroundColor;
|
|
3504
3622
|
domConfig.rotateEnabled = false;
|
|
3505
3623
|
if (data && data.border) domConfig.stroke = data.border;
|
|
3506
3624
|
domConfig.paintFirst = "stroke";
|
|
@@ -3508,10 +3626,23 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3508
3626
|
domConfig.borderEnabled = false;
|
|
3509
3627
|
domConfig.radius = 8;
|
|
3510
3628
|
}
|
|
3511
|
-
const domRect =
|
|
3629
|
+
const domRect = this._createRenderObject({
|
|
3630
|
+
key: rectShapeKey,
|
|
3631
|
+
config: domConfig,
|
|
3632
|
+
unitId,
|
|
3633
|
+
subUnitId,
|
|
3634
|
+
drawingId,
|
|
3635
|
+
drawingType,
|
|
3636
|
+
data
|
|
3637
|
+
});
|
|
3512
3638
|
if (isChart) domRect.setObjectType(_univerjs_engine_render.ObjectType.CHART);
|
|
3513
3639
|
scene.addObject(domRect, _univerjs_engine_render.DRAWING_OBJECT_LAYER_INDEX);
|
|
3514
3640
|
if (floatDomParam.allowTransform !== false) scene.attachTransformerTo(domRect);
|
|
3641
|
+
if (isChart && groupId) (0, _univerjs_drawing_ui.insertGroupObject)({
|
|
3642
|
+
drawingId: groupId,
|
|
3643
|
+
unitId,
|
|
3644
|
+
subUnitId
|
|
3645
|
+
}, domRect, scene, this._drawingManagerService);
|
|
3515
3646
|
const disposableCollection = new _univerjs_core.DisposableCollection();
|
|
3516
3647
|
const viewMain = scene.getMainViewport();
|
|
3517
3648
|
const { rowHeaderWidth, columnHeaderHeight } = skeletonParam.skeleton;
|
|
@@ -3678,8 +3809,9 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3678
3809
|
subUnitId,
|
|
3679
3810
|
drawingId
|
|
3680
3811
|
});
|
|
3681
|
-
const rectShape =
|
|
3812
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey);
|
|
3682
3813
|
if (rectShape != null) {
|
|
3814
|
+
this._removeTopLevelDuplicateIfGrouped(scene, rectShapeKey, rectShape);
|
|
3683
3815
|
rectShape.transformByState({
|
|
3684
3816
|
left,
|
|
3685
3817
|
top,
|
|
@@ -3691,6 +3823,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3691
3823
|
skewX,
|
|
3692
3824
|
skewY
|
|
3693
3825
|
});
|
|
3826
|
+
this._syncFloatDomRect(drawingId, rectShape);
|
|
3694
3827
|
return;
|
|
3695
3828
|
}
|
|
3696
3829
|
const calcOffsetPos = calcDomPositionByAnchor({
|
package/lib/es/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { COMMAND_LISTENER_SKELETON_CHANGE, DeleteRangeMoveLeftCommand, DeleteRan
|
|
|
8
8
|
import { COPY_TYPE, EditingRenderController, HoverManagerService, IEditorBridgeService, ISheetClipboardService, ISheetSelectionRenderService, PREDEFINED_HOOK_NAME_PASTE, SetCellEditVisibleOperation, SetScrollOperation, SetZoomRatioOperation, SheetCanvasPopManagerService, SheetPrintInterceptorService, SheetSkeletonManagerService, getCurrentRangeDisable$, useHighlightRange, virtualizeDiscreteRanges } from "@univerjs/sheets-ui";
|
|
9
9
|
import { CanvasFloatDomService, ComponentManager, ContextMenuGroup, ContextMenuPosition, IClipboardInterfaceService, IContextMenuService, IDialogService, ILocalFileService, IMenuManagerService, IMessageService, IShortcutService, ISidebarService, KeyCode, MenuItemType, PrintFloatDomSingle, RibbonInsertGroup, connectInjector, getMenuHiddenObservable, useDependency } from "@univerjs/ui";
|
|
10
10
|
import { DocDrawingController, UniverDocsDrawingPlugin } from "@univerjs/docs-drawing";
|
|
11
|
-
import { COMPONENT_IMAGE_POPUP_MENU, DrawingCommonPanel, DrawingRenderService, ImageCropperObject, ImageResetSizeOperation, OpenImageCropOperation, UniverDrawingUIPlugin } from "@univerjs/drawing-ui";
|
|
11
|
+
import { COMPONENT_IMAGE_POPUP_MENU, DrawingCommonPanel, DrawingRenderService, ImageCropperObject, ImageResetSizeOperation, OpenImageCropOperation, UniverDrawingUIPlugin, disposeDrawingRenderObject, insertGroupObject } from "@univerjs/drawing-ui";
|
|
12
12
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
13
13
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
14
|
import { BehaviorSubject, EMPTY, Subject, combineLatest, distinctUntilChanged, filter, map, of, switchMap, take, tap, throttleTime } from "rxjs";
|
|
@@ -819,7 +819,8 @@ let SheetDrawingUpdateController = class SheetDrawingUpdateController extends Di
|
|
|
819
819
|
this.disposeWithMe(this._drawingManagerService.featurePluginGroupUpdate$.subscribe((params) => {
|
|
820
820
|
const grpParams = [];
|
|
821
821
|
for (const param of params) {
|
|
822
|
-
const
|
|
822
|
+
const parent = param.parent;
|
|
823
|
+
const grpSheetTransform = this._getSheetTransformByParam(parent, true);
|
|
823
824
|
const children = [];
|
|
824
825
|
for (const child of param.children) {
|
|
825
826
|
const childSheetTransformInfo = this._getSheetTransformByParam(child, false);
|
|
@@ -831,7 +832,7 @@ let SheetDrawingUpdateController = class SheetDrawingUpdateController extends Di
|
|
|
831
832
|
}
|
|
832
833
|
const grpParam = {
|
|
833
834
|
parent: {
|
|
834
|
-
...
|
|
835
|
+
...parent,
|
|
835
836
|
sheetTransform: grpSheetTransform === null || grpSheetTransform === void 0 ? void 0 : grpSheetTransform.sheetTransform,
|
|
836
837
|
axisAlignSheetTransform: grpSheetTransform === null || grpSheetTransform === void 0 ? void 0 : grpSheetTransform.axisAlignSheetTransform
|
|
837
838
|
},
|
|
@@ -1679,7 +1680,7 @@ function UploadCellImageMenuFactory(accessor) {
|
|
|
1679
1680
|
//#endregion
|
|
1680
1681
|
//#region package.json
|
|
1681
1682
|
var name = "@univerjs/sheets-drawing-ui";
|
|
1682
|
-
var version = "1.0.0-alpha.
|
|
1683
|
+
var version = "1.0.0-alpha.2";
|
|
1683
1684
|
|
|
1684
1685
|
//#endregion
|
|
1685
1686
|
//#region src/config/config.ts
|
|
@@ -3056,11 +3057,37 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3056
3057
|
_defineProperty(this, "add$", this._add$.asObservable());
|
|
3057
3058
|
_defineProperty(this, "_remove$", new Subject());
|
|
3058
3059
|
_defineProperty(this, "remove$", this._remove$.asObservable());
|
|
3060
|
+
_defineProperty(this, "_renderObjectFactories", /* @__PURE__ */ new Map());
|
|
3059
3061
|
this._drawingAddListener();
|
|
3060
3062
|
this._featureUpdateListener();
|
|
3061
3063
|
this._deleteListener();
|
|
3062
3064
|
this._bindScrollEvent();
|
|
3063
3065
|
}
|
|
3066
|
+
/**
|
|
3067
|
+
* Register a factory that creates the canvas-side render object for a sheet
|
|
3068
|
+
* float-dom drawing type. The latest registered factory wins; disposing the
|
|
3069
|
+
* returned handle unregisters it and restores the previous factory or the
|
|
3070
|
+
* default {@link Rect} fallback.
|
|
3071
|
+
*/
|
|
3072
|
+
registerRenderObjectFactory(drawingType, factory) {
|
|
3073
|
+
var _this$_renderObjectFa;
|
|
3074
|
+
const factories = (_this$_renderObjectFa = this._renderObjectFactories.get(drawingType)) !== null && _this$_renderObjectFa !== void 0 ? _this$_renderObjectFa : [];
|
|
3075
|
+
factories.push(factory);
|
|
3076
|
+
this._renderObjectFactories.set(drawingType, factories);
|
|
3077
|
+
return { dispose: () => {
|
|
3078
|
+
const currentFactories = this._renderObjectFactories.get(drawingType);
|
|
3079
|
+
if (!currentFactories) return;
|
|
3080
|
+
const index = currentFactories.indexOf(factory);
|
|
3081
|
+
if (index >= 0) currentFactories.splice(index, 1);
|
|
3082
|
+
if (currentFactories.length === 0) this._renderObjectFactories.delete(drawingType);
|
|
3083
|
+
} };
|
|
3084
|
+
}
|
|
3085
|
+
_createRenderObject(context) {
|
|
3086
|
+
var _factory;
|
|
3087
|
+
const factories = this._renderObjectFactories.get(context.drawingType);
|
|
3088
|
+
const factory = factories === null || factories === void 0 ? void 0 : factories[factories.length - 1];
|
|
3089
|
+
return (_factory = factory === null || factory === void 0 ? void 0 : factory(context)) !== null && _factory !== void 0 ? _factory : new Rect(context.key, context.config);
|
|
3090
|
+
}
|
|
3064
3091
|
_bindScrollEvent() {
|
|
3065
3092
|
this._lifecycleService.lifecycle$.pipe(filter((s) => s === LifecycleStages.Rendered), take(1)).subscribe(() => {
|
|
3066
3093
|
this._scrollUpdateListener();
|
|
@@ -3100,7 +3127,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3100
3127
|
if (!floatDomParam || !target) return;
|
|
3101
3128
|
const skeleton = (_this$_renderManagerS = this._renderManagerService.getRenderById(unitId)) === null || _this$_renderManagerS === void 0 ? void 0 : _this$_renderManagerS.with(SheetSkeletonManagerService).getSkeletonParam(subUnitId);
|
|
3102
3129
|
if (!skeleton) return;
|
|
3103
|
-
const { transform, drawingType, data, hidden } = floatDomParam;
|
|
3130
|
+
const { transform, drawingType, data, hidden, groupId } = floatDomParam;
|
|
3104
3131
|
if (drawingType !== DrawingTypeEnum.DRAWING_DOM && drawingType !== DrawingTypeEnum.DRAWING_CHART) return;
|
|
3105
3132
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
3106
3133
|
if (renderObject == null) return;
|
|
@@ -3114,8 +3141,14 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3114
3141
|
subUnitId,
|
|
3115
3142
|
drawingId
|
|
3116
3143
|
});
|
|
3117
|
-
const
|
|
3144
|
+
const groupShapeKey = groupId ? getDrawingShapeKeyByDrawingSearch({
|
|
3145
|
+
unitId,
|
|
3146
|
+
subUnitId,
|
|
3147
|
+
drawingId: groupId
|
|
3148
|
+
}) : void 0;
|
|
3149
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey, groupShapeKey);
|
|
3118
3150
|
if (rectShape != null) {
|
|
3151
|
+
this._removeTopLevelDuplicateIfGrouped(scene, rectShapeKey, rectShape);
|
|
3119
3152
|
rectShape.transformByState({
|
|
3120
3153
|
left,
|
|
3121
3154
|
top,
|
|
@@ -3127,6 +3160,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3127
3160
|
skewX,
|
|
3128
3161
|
skewY
|
|
3129
3162
|
});
|
|
3163
|
+
this._syncFloatDomRect(drawingId, rectShape);
|
|
3130
3164
|
return;
|
|
3131
3165
|
}
|
|
3132
3166
|
const imageConfig = {
|
|
@@ -3139,18 +3173,32 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3139
3173
|
const isChart = drawingType === DrawingTypeEnum.DRAWING_CHART;
|
|
3140
3174
|
imageConfig.rotateEnabled = false;
|
|
3141
3175
|
if (isChart) {
|
|
3142
|
-
|
|
3176
|
+
const backgroundColor = this._getChartDataBackground(data);
|
|
3177
|
+
if (backgroundColor !== void 0) imageConfig.fill = backgroundColor;
|
|
3143
3178
|
if (data && data.border) imageConfig.stroke = data.border;
|
|
3144
3179
|
imageConfig.paintFirst = "stroke";
|
|
3145
3180
|
imageConfig.strokeWidth = 1;
|
|
3146
3181
|
imageConfig.borderEnabled = false;
|
|
3147
3182
|
imageConfig.radius = 8;
|
|
3148
3183
|
}
|
|
3149
|
-
const rect =
|
|
3184
|
+
const rect = this._createRenderObject({
|
|
3185
|
+
key: rectShapeKey,
|
|
3186
|
+
config: imageConfig,
|
|
3187
|
+
unitId,
|
|
3188
|
+
subUnitId,
|
|
3189
|
+
drawingId,
|
|
3190
|
+
drawingType,
|
|
3191
|
+
data
|
|
3192
|
+
});
|
|
3150
3193
|
if (isChart) rect.setObjectType(ObjectType.CHART);
|
|
3151
3194
|
else if (drawingType === DrawingTypeEnum.DRAWING_DOM) rect.setObjectType(ObjectType.DRAWING_DOM);
|
|
3152
3195
|
scene.addObject(rect, DRAWING_OBJECT_LAYER_INDEX);
|
|
3153
3196
|
if (floatDomParam.allowTransform !== false) scene.attachTransformerTo(rect);
|
|
3197
|
+
if (isChart && groupId) insertGroupObject({
|
|
3198
|
+
drawingId: groupId,
|
|
3199
|
+
unitId,
|
|
3200
|
+
subUnitId
|
|
3201
|
+
}, rect, scene, this._drawingManagerService);
|
|
3154
3202
|
const disposableCollection = new DisposableCollection();
|
|
3155
3203
|
const position$ = new BehaviorSubject(calcSheetFloatDomPosition(rect, renderObject.renderUnit.scene, skeleton.skeleton, target.worksheet));
|
|
3156
3204
|
const domId = `${SHEET_FLOAT_DOM_PREFIX}${generateRandomId(6)}`;
|
|
@@ -3205,7 +3253,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3205
3253
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
3206
3254
|
if (renderObject == null) return;
|
|
3207
3255
|
const { transformer, scene } = renderObject;
|
|
3208
|
-
const rectShape =
|
|
3256
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey);
|
|
3209
3257
|
if (rectShape === null || rectShape === void 0 ? void 0 : rectShape.oKey) {
|
|
3210
3258
|
var _scene$getTransformer;
|
|
3211
3259
|
transformer.clearControlByIds([rectShape === null || rectShape === void 0 ? void 0 : rectShape.oKey]);
|
|
@@ -3278,9 +3326,60 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3278
3326
|
subUnitId,
|
|
3279
3327
|
drawingId: id
|
|
3280
3328
|
});
|
|
3281
|
-
const
|
|
3282
|
-
|
|
3329
|
+
const drawing = this._drawingManagerService.getDrawingByParam({
|
|
3330
|
+
unitId,
|
|
3331
|
+
subUnitId,
|
|
3332
|
+
drawingId: id
|
|
3333
|
+
});
|
|
3334
|
+
const groupShapeKey = (drawing === null || drawing === void 0 ? void 0 : drawing.groupId) ? getDrawingShapeKeyByDrawingSearch({
|
|
3335
|
+
unitId,
|
|
3336
|
+
subUnitId,
|
|
3337
|
+
drawingId: drawing.groupId
|
|
3338
|
+
}) : void 0;
|
|
3339
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey, groupShapeKey);
|
|
3340
|
+
if (rectShape && rectShape instanceof Rect) {
|
|
3341
|
+
this._removeTopLevelDuplicateIfGrouped(scene, rectShapeKey, rectShape);
|
|
3342
|
+
rectShape.setProps(props);
|
|
3343
|
+
this._syncFloatDomRect(id, rectShape);
|
|
3344
|
+
}
|
|
3345
|
+
}
|
|
3346
|
+
}
|
|
3347
|
+
_getObjectIncludingGroup(scene, key, groupKey) {
|
|
3348
|
+
var _ref, _ref2, _this$_getChildObject, _scene$getObjectInclu;
|
|
3349
|
+
return (_ref = (_ref2 = (_this$_getChildObject = this._getChildObjectFromGroup(scene, key, groupKey)) !== null && _this$_getChildObject !== void 0 ? _this$_getChildObject : (_scene$getObjectInclu = scene.getObjectIncludeInGroup) === null || _scene$getObjectInclu === void 0 ? void 0 : _scene$getObjectInclu.call(scene, key)) !== null && _ref2 !== void 0 ? _ref2 : scene.getObject(key)) !== null && _ref !== void 0 ? _ref : null;
|
|
3350
|
+
}
|
|
3351
|
+
_getChildObjectFromGroup(scene, key, groupKey) {
|
|
3352
|
+
var _scene$getObjectInclu2, _scene$getObjectInclu3;
|
|
3353
|
+
if (!groupKey) return null;
|
|
3354
|
+
const groupObject = (_scene$getObjectInclu2 = (_scene$getObjectInclu3 = scene.getObjectIncludeInGroup) === null || _scene$getObjectInclu3 === void 0 ? void 0 : _scene$getObjectInclu3.call(scene, groupKey)) !== null && _scene$getObjectInclu2 !== void 0 ? _scene$getObjectInclu2 : scene.getObject(groupKey);
|
|
3355
|
+
return this._findChildObject(groupObject, key);
|
|
3356
|
+
}
|
|
3357
|
+
_findChildObject(object, key) {
|
|
3358
|
+
if (!object) return null;
|
|
3359
|
+
const children = object.getObjects();
|
|
3360
|
+
for (const child of children) {
|
|
3361
|
+
if (child.oKey === key) return child;
|
|
3362
|
+
const nested = this._findChildObject(child, key);
|
|
3363
|
+
if (nested) return nested;
|
|
3283
3364
|
}
|
|
3365
|
+
return null;
|
|
3366
|
+
}
|
|
3367
|
+
_removeTopLevelDuplicateIfGrouped(scene, key, object) {
|
|
3368
|
+
if (!object.isInGroup) return;
|
|
3369
|
+
const topLevelObject = scene.getObject(key);
|
|
3370
|
+
if (topLevelObject && topLevelObject !== object) scene.removeObject(topLevelObject);
|
|
3371
|
+
}
|
|
3372
|
+
_syncFloatDomRect(id, object) {
|
|
3373
|
+
if (!(object instanceof Rect)) return;
|
|
3374
|
+
const info = this._domLayerInfoMap.get(id);
|
|
3375
|
+
if (info) info.rect = object;
|
|
3376
|
+
}
|
|
3377
|
+
_getChartDataBackground(data) {
|
|
3378
|
+
var _record$backgroundCol;
|
|
3379
|
+
if (!data || typeof data !== "object" || Array.isArray(data)) return;
|
|
3380
|
+
const record = data;
|
|
3381
|
+
const background = (_record$backgroundCol = record.backgroundColor) !== null && _record$backgroundCol !== void 0 ? _record$backgroundCol : record.background;
|
|
3382
|
+
return typeof background === "string" ? background : void 0;
|
|
3284
3383
|
}
|
|
3285
3384
|
_getPosition(position, unitId) {
|
|
3286
3385
|
var _this$_renderManagerS3;
|
|
@@ -3387,7 +3486,18 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3387
3486
|
this._domLayerInfoMap.delete(id);
|
|
3388
3487
|
info.dispose.dispose();
|
|
3389
3488
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
3390
|
-
if (renderObject)
|
|
3489
|
+
if (renderObject) {
|
|
3490
|
+
const { scene, transformer } = renderObject;
|
|
3491
|
+
if (disposeDrawingRenderObject(scene, {
|
|
3492
|
+
unitId,
|
|
3493
|
+
subUnitId,
|
|
3494
|
+
drawingId: id
|
|
3495
|
+
})) {
|
|
3496
|
+
var _scene$getTransformer2;
|
|
3497
|
+
transformer.clearControlByIds([info.rect.oKey]);
|
|
3498
|
+
(_scene$getTransformer2 = scene.getTransformer()) === null || _scene$getTransformer2 === void 0 || _scene$getTransformer2.clearSelectedObjects();
|
|
3499
|
+
}
|
|
3500
|
+
}
|
|
3391
3501
|
if (removeDrawing) {
|
|
3392
3502
|
const param = this._drawingManagerService.getDrawingByParam({
|
|
3393
3503
|
unitId,
|
|
@@ -3462,7 +3572,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3462
3572
|
if (!skMangerService) return;
|
|
3463
3573
|
const skeletonParam = skMangerService.getSkeletonParam(subUnitId);
|
|
3464
3574
|
if (!skeletonParam) return;
|
|
3465
|
-
const { transform, drawingType, data } = floatDomParam;
|
|
3575
|
+
const { transform, drawingType, data, groupId } = floatDomParam;
|
|
3466
3576
|
if (drawingType !== DrawingTypeEnum.DRAWING_DOM && drawingType !== DrawingTypeEnum.DRAWING_CHART) return;
|
|
3467
3577
|
const renderObject = this._getSceneAndTransformerByDrawingSearch(unitId);
|
|
3468
3578
|
if (renderObject == null) return;
|
|
@@ -3475,8 +3585,14 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3475
3585
|
subUnitId,
|
|
3476
3586
|
drawingId
|
|
3477
3587
|
});
|
|
3478
|
-
const
|
|
3588
|
+
const groupShapeKey = groupId ? getDrawingShapeKeyByDrawingSearch({
|
|
3589
|
+
unitId,
|
|
3590
|
+
subUnitId,
|
|
3591
|
+
drawingId: groupId
|
|
3592
|
+
}) : void 0;
|
|
3593
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey, groupShapeKey);
|
|
3479
3594
|
if (rectShape != null) {
|
|
3595
|
+
this._removeTopLevelDuplicateIfGrouped(scene, rectShapeKey, rectShape);
|
|
3480
3596
|
rectShape.transformByState({
|
|
3481
3597
|
left,
|
|
3482
3598
|
top,
|
|
@@ -3488,6 +3604,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3488
3604
|
skewX,
|
|
3489
3605
|
skewY
|
|
3490
3606
|
});
|
|
3607
|
+
this._syncFloatDomRect(drawingId, rectShape);
|
|
3491
3608
|
return;
|
|
3492
3609
|
}
|
|
3493
3610
|
const domConfig = {
|
|
@@ -3499,7 +3616,8 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3499
3616
|
};
|
|
3500
3617
|
const isChart = drawingType === DrawingTypeEnum.DRAWING_CHART;
|
|
3501
3618
|
if (isChart) {
|
|
3502
|
-
|
|
3619
|
+
const backgroundColor = this._getChartDataBackground(data);
|
|
3620
|
+
if (backgroundColor !== void 0) domConfig.fill = backgroundColor;
|
|
3503
3621
|
domConfig.rotateEnabled = false;
|
|
3504
3622
|
if (data && data.border) domConfig.stroke = data.border;
|
|
3505
3623
|
domConfig.paintFirst = "stroke";
|
|
@@ -3507,10 +3625,23 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3507
3625
|
domConfig.borderEnabled = false;
|
|
3508
3626
|
domConfig.radius = 8;
|
|
3509
3627
|
}
|
|
3510
|
-
const domRect =
|
|
3628
|
+
const domRect = this._createRenderObject({
|
|
3629
|
+
key: rectShapeKey,
|
|
3630
|
+
config: domConfig,
|
|
3631
|
+
unitId,
|
|
3632
|
+
subUnitId,
|
|
3633
|
+
drawingId,
|
|
3634
|
+
drawingType,
|
|
3635
|
+
data
|
|
3636
|
+
});
|
|
3511
3637
|
if (isChart) domRect.setObjectType(ObjectType.CHART);
|
|
3512
3638
|
scene.addObject(domRect, DRAWING_OBJECT_LAYER_INDEX);
|
|
3513
3639
|
if (floatDomParam.allowTransform !== false) scene.attachTransformerTo(domRect);
|
|
3640
|
+
if (isChart && groupId) insertGroupObject({
|
|
3641
|
+
drawingId: groupId,
|
|
3642
|
+
unitId,
|
|
3643
|
+
subUnitId
|
|
3644
|
+
}, domRect, scene, this._drawingManagerService);
|
|
3514
3645
|
const disposableCollection = new DisposableCollection();
|
|
3515
3646
|
const viewMain = scene.getMainViewport();
|
|
3516
3647
|
const { rowHeaderWidth, columnHeaderHeight } = skeletonParam.skeleton;
|
|
@@ -3677,8 +3808,9 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3677
3808
|
subUnitId,
|
|
3678
3809
|
drawingId
|
|
3679
3810
|
});
|
|
3680
|
-
const rectShape =
|
|
3811
|
+
const rectShape = this._getObjectIncludingGroup(scene, rectShapeKey);
|
|
3681
3812
|
if (rectShape != null) {
|
|
3813
|
+
this._removeTopLevelDuplicateIfGrouped(scene, rectShapeKey, rectShape);
|
|
3682
3814
|
rectShape.transformByState({
|
|
3683
3815
|
left,
|
|
3684
3816
|
top,
|
|
@@ -3690,6 +3822,7 @@ let SheetCanvasFloatDomManagerService = class SheetCanvasFloatDomManagerService
|
|
|
3690
3822
|
skewX,
|
|
3691
3823
|
skewY
|
|
3692
3824
|
});
|
|
3825
|
+
this._syncFloatDomRect(drawingId, rectShape);
|
|
3693
3826
|
return;
|
|
3694
3827
|
}
|
|
3695
3828
|
const calcOffsetPos = calcDomPositionByAnchor({
|