@univerjs/drawing-ui 0.4.1 → 0.4.2-nightly.202410301606

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/es/index.js CHANGED
@@ -4,9 +4,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
5
5
  import { getDrawingShapeKeyByDrawingSearch, DrawingTypeEnum, ImageSourceType, IDrawingManagerService, IImageIoService, ArrangeTypeEnum } from "@univerjs/drawing";
6
6
  import { Group, DRAWING_OBJECT_LAYER_INDEX, Image, IRenderManagerService, getGroupState, transformObjectOutOfGroup, RENDER_CLASS_TYPE, Shape, Rect, Canvas, precisionTo, CURSOR_TYPE, Vector2, degToRad } from "@univerjs/engine-render";
7
- import { UniverInstanceType, useDependency, LocaleService, debounce, CommandType, ICommandService, Tools, Inject, Disposable, checkIfMove, toDisposable, IUniverInstanceService, Injector, Plugin, IConfigService } from "@univerjs/core";
8
- import React, { forwardRef, useRef, createElement, useState, useEffect } from "react";
9
- import { Button, InputNumber, Checkbox, Select, Dropdown, MessageType } from "@univerjs/design";
7
+ import { UniverInstanceType, CommandType, useDependency, ICommandService, LocaleService, Tools, debounce, Inject, Disposable, checkIfMove, toDisposable, IUniverInstanceService, Injector, Plugin, IConfigService } from "@univerjs/core";
8
+ import React, { useState, forwardRef, useRef, createElement, useEffect } from "react";
9
+ import { Select, Button, InputNumber, Checkbox, Dropdown, MessageType } from "@univerjs/design";
10
10
  import { ComponentManager, IMessageService, IDialogService } from "@univerjs/ui";
11
11
  import { filter, switchMap } from "rxjs";
12
12
  function insertGroupObject(objectParam, object, scene, drawingManagerService) {
@@ -139,6 +139,100 @@ function getUpdateParams(objects, drawingManagerService) {
139
139
  }), params;
140
140
  }
141
141
  __name(getUpdateParams, "getUpdateParams");
142
+ function r(e) {
143
+ var t, f, n = "";
144
+ if (typeof e == "string" || typeof e == "number") n += e;
145
+ else if (typeof e == "object") if (Array.isArray(e)) {
146
+ var o = e.length;
147
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
148
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
149
+ return n;
150
+ }
151
+ __name(r, "r");
152
+ function clsx() {
153
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
154
+ return n;
155
+ }
156
+ __name(clsx, "clsx");
157
+ var AlignType = /* @__PURE__ */ ((AlignType2) => (AlignType2.default = "0", AlignType2.left = "1", AlignType2.center = "2", AlignType2.right = "3", AlignType2.top = "4", AlignType2.middle = "5", AlignType2.bottom = "6", AlignType2.horizon = "7", AlignType2.vertical = "8", AlignType2))(AlignType || {});
158
+ const SetDrawingAlignOperation = {
159
+ id: "sheet.operation.set-image-align",
160
+ type: CommandType.OPERATION,
161
+ handler: /* @__PURE__ */ __name((accessor, params) => !0, "handler")
162
+ }, imageCommonPanel = "univer-image-common-panel", imageCommonPanelGrid = "univer-image-common-panel-grid", imageCommonPanelBorder = "univer-image-common-panel-border", imageCommonPanelTitle = "univer-image-common-panel-title", imageCommonPanelSubtitle = "univer-image-common-panel-subtitle", imageCommonPanelRow = "univer-image-common-panel-row", imageCommonPanelRowVertical = "univer-image-common-panel-row-vertical", imageCommonPanelColumn = "univer-image-common-panel-column", imageCommonPanelColumnCenter = "univer-image-common-panel-column-center", imageCommonPanelInline = "univer-image-common-panel-inline", imageCommonPanelSpan2 = "univer-image-common-panel-span2", imageCommonPanelSpan3 = "univer-image-common-panel-span3", imageCommonPanelInput = "univer-image-common-panel-input", styles$1 = {
163
+ imageCommonPanel,
164
+ imageCommonPanelGrid,
165
+ imageCommonPanelBorder,
166
+ imageCommonPanelTitle,
167
+ imageCommonPanelSubtitle,
168
+ imageCommonPanelRow,
169
+ imageCommonPanelRowVertical,
170
+ imageCommonPanelColumn,
171
+ imageCommonPanelColumnCenter,
172
+ imageCommonPanelInline,
173
+ imageCommonPanelSpan2,
174
+ imageCommonPanelSpan3,
175
+ imageCommonPanelInput
176
+ }, DrawingAlign = /* @__PURE__ */ __name((props) => {
177
+ const commandService = useDependency(ICommandService), localeService = useDependency(LocaleService), { alignShow } = props, [alignValue, setAlignValue] = useState(AlignType.default), alignOptions = [
178
+ {
179
+ label: localeService.t("image-panel.align.default"),
180
+ value: AlignType.default
181
+ },
182
+ {
183
+ options: [
184
+ {
185
+ label: localeService.t("image-panel.align.left"),
186
+ value: AlignType.left
187
+ },
188
+ {
189
+ label: localeService.t("image-panel.align.center"),
190
+ value: AlignType.center
191
+ },
192
+ {
193
+ label: localeService.t("image-panel.align.right"),
194
+ value: AlignType.right
195
+ }
196
+ ]
197
+ },
198
+ {
199
+ options: [
200
+ {
201
+ label: localeService.t("image-panel.align.top"),
202
+ value: AlignType.top
203
+ },
204
+ {
205
+ label: localeService.t("image-panel.align.middle"),
206
+ value: AlignType.middle
207
+ },
208
+ {
209
+ label: localeService.t("image-panel.align.bottom"),
210
+ value: AlignType.bottom
211
+ }
212
+ ]
213
+ },
214
+ {
215
+ options: [
216
+ {
217
+ label: localeService.t("image-panel.align.horizon"),
218
+ value: AlignType.horizon
219
+ },
220
+ {
221
+ label: localeService.t("image-panel.align.vertical"),
222
+ value: AlignType.vertical
223
+ }
224
+ ]
225
+ }
226
+ ];
227
+ function handleAlignChange(value) {
228
+ setAlignValue(value), commandService.executeCommand(SetDrawingAlignOperation.id, {
229
+ alignType: value
230
+ });
231
+ }
232
+ __name(handleAlignChange, "handleAlignChange");
233
+ const gridDisplay = /* @__PURE__ */ __name((isShow) => isShow ? "block" : "none", "gridDisplay");
234
+ return /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelGrid, styles$1.imageCommonPanelBorder), style: { display: gridDisplay(alignShow) } }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelTitle) }, /* @__PURE__ */ React.createElement("div", null, localeService.t("image-panel.align.title")))), /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn) }, /* @__PURE__ */ React.createElement(Select, { value: alignValue, options: alignOptions, onChange: handleAlignChange }))));
235
+ }, "DrawingAlign");
142
236
  var __assign = function() {
143
237
  return __assign = Object.assign || function(t) {
144
238
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -258,36 +352,7 @@ var element = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 17 16", width:
258
352
  }));
259
353
  });
260
354
  UngroupSingle.displayName = "UngroupSingle";
261
- function r(e) {
262
- var t, f, n = "";
263
- if (typeof e == "string" || typeof e == "number") n += e;
264
- else if (typeof e == "object") if (Array.isArray(e)) {
265
- var o = e.length;
266
- for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
267
- } else for (f in e) e[f] && (n && (n += " "), n += f);
268
- return n;
269
- }
270
- __name(r, "r");
271
- function clsx() {
272
- for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
273
- return n;
274
- }
275
- __name(clsx, "clsx");
276
- const imageCommonPanel = "univer-image-common-panel", imageCommonPanelGrid = "univer-image-common-panel-grid", imageCommonPanelBorder = "univer-image-common-panel-border", imageCommonPanelTitle = "univer-image-common-panel-title", imageCommonPanelSubtitle = "univer-image-common-panel-subtitle", imageCommonPanelRow = "univer-image-common-panel-row", imageCommonPanelRowVertical = "univer-image-common-panel-row-vertical", imageCommonPanelColumn = "univer-image-common-panel-column", imageCommonPanelColumnCenter = "univer-image-common-panel-column-center", imageCommonPanelInline = "univer-image-common-panel-inline", imageCommonPanelSpan2 = "univer-image-common-panel-span2", imageCommonPanelSpan3 = "univer-image-common-panel-span3", imageCommonPanelInput = "univer-image-common-panel-input", styles$1 = {
277
- imageCommonPanel,
278
- imageCommonPanelGrid,
279
- imageCommonPanelBorder,
280
- imageCommonPanelTitle,
281
- imageCommonPanelSubtitle,
282
- imageCommonPanelRow,
283
- imageCommonPanelRowVertical,
284
- imageCommonPanelColumn,
285
- imageCommonPanelColumnCenter,
286
- imageCommonPanelInline,
287
- imageCommonPanelSpan2,
288
- imageCommonPanelSpan3,
289
- imageCommonPanelInput
290
- }, DrawingArrange = /* @__PURE__ */ __name((props) => {
355
+ const DrawingArrange = /* @__PURE__ */ __name((props) => {
291
356
  const { arrangeShow, drawings: focusDrawings } = props, localeService = useDependency(LocaleService), drawingManagerService = useDependency(IDrawingManagerService), gridDisplay = /* @__PURE__ */ __name((isShow) => isShow ? "block" : "none", "gridDisplay"), [drawings, setDrawings] = useState(focusDrawings);
292
357
  useEffect(() => {
293
358
  const focusDispose = drawingManagerService.focus$.subscribe((drawings2) => {
@@ -310,7 +375,87 @@ const imageCommonPanel = "univer-image-common-panel", imageCommonPanelGrid = "un
310
375
  }, "onClick") }, /* @__PURE__ */ React.createElement("span", { className: styles$1.imageCommonPanelInline }, /* @__PURE__ */ React.createElement(TopmostSingle, null), localeService.t("image-panel.arrange.front")))), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan2) }, /* @__PURE__ */ React.createElement(Button, { size: "small", onClick: /* @__PURE__ */ __name(() => {
311
376
  onArrangeBtnClick(ArrangeTypeEnum.back);
312
377
  }, "onClick") }, /* @__PURE__ */ React.createElement("span", { className: styles$1.imageCommonPanelInline }, /* @__PURE__ */ React.createElement(BottomSingle, null), localeService.t("image-panel.arrange.back"))))));
313
- }, "DrawingArrange"), MIN_DRAWING_WIDTH_LIMIT = 20, MIN_DRAWING_HEIGHT_LIMIT = 20, RANGE_DRAWING_ROTATION_LIMIT = [-3600, 3600], INPUT_DEBOUNCE_TIME = 300, DrawingTransform = /* @__PURE__ */ __name((props) => {
378
+ }, "DrawingArrange"), DrawingGroup = /* @__PURE__ */ __name((props) => {
379
+ const localeService = useDependency(LocaleService), renderManagerService = useDependency(IRenderManagerService), drawingManagerService = useDependency(IDrawingManagerService), { hasGroup, drawings } = props, [groupShow, setGroupShow] = useState(!1), [groupBtnShow, setGroupBtnShow] = useState(!0), [ungroupBtnShow, setUngroupBtnShow] = useState(!0), gridDisplay = /* @__PURE__ */ __name((isShow) => isShow ? "block" : "none", "gridDisplay"), onGroupBtnClick = /* @__PURE__ */ __name(() => {
380
+ const focusDrawings = drawingManagerService.getFocusDrawings(), { unitId, subUnitId } = focusDrawings[0], groupId = Tools.generateRandomId(10), groupTransform = getGroupState(0, 0, focusDrawings.map((o) => o.transform || {})), groupParam = {
381
+ unitId,
382
+ subUnitId,
383
+ drawingId: groupId,
384
+ drawingType: DrawingTypeEnum.DRAWING_GROUP,
385
+ transform: groupTransform
386
+ }, children = focusDrawings.map((drawing) => {
387
+ const transform = drawing.transform || { left: 0, top: 0 }, { unitId: unitId2, subUnitId: subUnitId2, drawingId } = drawing;
388
+ return {
389
+ unitId: unitId2,
390
+ subUnitId: subUnitId2,
391
+ drawingId,
392
+ transform: {
393
+ ...transform,
394
+ left: transform.left - groupTransform.left,
395
+ top: transform.top - groupTransform.top
396
+ },
397
+ groupId
398
+ };
399
+ });
400
+ drawingManagerService.featurePluginGroupUpdateNotification([{
401
+ parent: groupParam,
402
+ children
403
+ }]);
404
+ }, "onGroupBtnClick"), ungroup = /* @__PURE__ */ __name((param) => {
405
+ if (param.drawingType !== DrawingTypeEnum.DRAWING_GROUP)
406
+ return;
407
+ const { unitId, subUnitId, drawingId, transform: groupTransform = { width: 0, height: 0 } } = param;
408
+ if (groupTransform == null)
409
+ return;
410
+ const objects = drawingManagerService.getDrawingsByGroup({ unitId, subUnitId, drawingId });
411
+ if (objects.length === 0)
412
+ return;
413
+ const children = objects.map((object) => {
414
+ const { transform } = object, { unitId: unitId2, subUnitId: subUnitId2, drawingId: drawingId2 } = object, newTransform = transformObjectOutOfGroup(transform || {}, groupTransform, groupTransform.width || 0, groupTransform.height || 0);
415
+ return {
416
+ unitId: unitId2,
417
+ subUnitId: subUnitId2,
418
+ drawingId: drawingId2,
419
+ transform: {
420
+ ...transform,
421
+ ...newTransform
422
+ },
423
+ groupId: void 0
424
+ };
425
+ });
426
+ return {
427
+ parent: param,
428
+ children
429
+ };
430
+ }, "ungroup"), onUngroupBtnClick = /* @__PURE__ */ __name(() => {
431
+ const params = drawingManagerService.getFocusDrawings().map(
432
+ (drawing) => ungroup(drawing)
433
+ ).filter((o) => o != null);
434
+ params.length !== 0 && drawingManagerService.featurePluginUngroupUpdateNotification(params);
435
+ }, "onUngroupBtnClick");
436
+ return useEffect(() => {
437
+ const drawingParam = drawings[0];
438
+ if (drawingParam == null)
439
+ return;
440
+ const { unitId } = drawingParam, renderObject = renderManagerService.getRenderById(unitId), scene = renderObject == null ? void 0 : renderObject.scene;
441
+ if (scene == null)
442
+ return;
443
+ const transformer = scene.getTransformerByCreate(), onClearControlObserver = transformer.clearControl$.subscribe((changeSelf) => {
444
+ changeSelf === !0 && setGroupShow(!1);
445
+ }), onChangeStartObserver = transformer.changeStart$.subscribe((state) => {
446
+ const { objects } = state, params = getUpdateParams(objects, drawingManagerService), groupParams = params.filter((o) => (o == null ? void 0 : o.drawingType) === DrawingTypeEnum.DRAWING_GROUP);
447
+ let groupBtnShow2 = !1, ungroupBtnShow2 = !1;
448
+ params.length > 1 && (groupBtnShow2 = !0), groupParams.length > 0 && (ungroupBtnShow2 = !0), setGroupShow(groupBtnShow2 || ungroupBtnShow2), setGroupBtnShow(groupBtnShow2), setUngroupBtnShow(ungroupBtnShow2);
449
+ });
450
+ return () => {
451
+ onChangeStartObserver.unsubscribe(), onClearControlObserver.unsubscribe();
452
+ };
453
+ }, []), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelGrid, styles$1.imageCommonPanelBorder), style: { display: gridDisplay(hasGroup === !0 ? groupShow : !1) } }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelTitle) }, /* @__PURE__ */ React.createElement("div", null, localeService.t("image-panel.group.title")))), /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan2, styles$1.imageCommonPanelColumnCenter) }, /* @__PURE__ */ React.createElement(Button, { size: "small", onClick: /* @__PURE__ */ __name(() => {
454
+ onGroupBtnClick();
455
+ }, "onClick"), style: { display: gridDisplay(groupBtnShow) } }, /* @__PURE__ */ React.createElement("span", { className: styles$1.imageCommonPanelInline }, /* @__PURE__ */ React.createElement(GroupSingle, null), localeService.t("image-panel.group.group")))), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan2, styles$1.imageCommonPanelColumnCenter) }, /* @__PURE__ */ React.createElement(Button, { size: "small", onClick: /* @__PURE__ */ __name(() => {
456
+ onUngroupBtnClick();
457
+ }, "onClick"), style: { display: gridDisplay(ungroupBtnShow) } }, /* @__PURE__ */ React.createElement("span", { className: styles$1.imageCommonPanelInline }, /* @__PURE__ */ React.createElement(UngroupSingle, null), localeService.t("image-panel.group.unGroup"))))));
458
+ }, "DrawingGroup"), MIN_DRAWING_WIDTH_LIMIT = 20, MIN_DRAWING_HEIGHT_LIMIT = 20, RANGE_DRAWING_ROTATION_LIMIT = [-3600, 3600], INPUT_DEBOUNCE_TIME = 300, DrawingTransform = /* @__PURE__ */ __name((props) => {
314
459
  var _a7;
315
460
  const localeService = useDependency(LocaleService), drawingManagerService = useDependency(IDrawingManagerService), renderManagerService = useDependency(IRenderManagerService), { drawings, transformShow } = props, drawingParam = drawings[0];
316
461
  if (drawingParam == null)
@@ -453,72 +598,7 @@ const imageCommonPanel = "univer-image-common-panel", imageCommonPanelGrid = "un
453
598
  }, "onChange"), className: styles$1.imageCommonPanelInput }))))), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan3) }, /* @__PURE__ */ React.createElement("label", null, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelColumn }, localeService.t("image-panel.transform.y"))), /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelColumn }, /* @__PURE__ */ React.createElement(InputNumber, { precision: 1, value: yPosition, onChange: /* @__PURE__ */ __name((val) => {
454
599
  handleYChange(val);
455
600
  }, "onChange"), className: styles$1.imageCommonPanelInput }))))), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan3) }, /* @__PURE__ */ React.createElement("label", null, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelColumn }, localeService.t("image-panel.transform.rotate"))), /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelColumn }, /* @__PURE__ */ React.createElement(InputNumber, { precision: 1, value: rotation, onChange: handleRotationChange, className: styles$1.imageCommonPanelInput })))))));
456
- }, "DrawingTransform");
457
- var AlignType = /* @__PURE__ */ ((AlignType2) => (AlignType2.default = "0", AlignType2.left = "1", AlignType2.center = "2", AlignType2.right = "3", AlignType2.top = "4", AlignType2.middle = "5", AlignType2.bottom = "6", AlignType2.horizon = "7", AlignType2.vertical = "8", AlignType2))(AlignType || {});
458
- const SetDrawingAlignOperation = {
459
- id: "sheet.operation.set-image-align",
460
- type: CommandType.OPERATION,
461
- handler: /* @__PURE__ */ __name((accessor, params) => !0, "handler")
462
- }, DrawingAlign = /* @__PURE__ */ __name((props) => {
463
- const commandService = useDependency(ICommandService), localeService = useDependency(LocaleService), { alignShow } = props, [alignValue, setAlignValue] = useState(AlignType.default), alignOptions = [
464
- {
465
- label: localeService.t("image-panel.align.default"),
466
- value: AlignType.default
467
- },
468
- {
469
- options: [
470
- {
471
- label: localeService.t("image-panel.align.left"),
472
- value: AlignType.left
473
- },
474
- {
475
- label: localeService.t("image-panel.align.center"),
476
- value: AlignType.center
477
- },
478
- {
479
- label: localeService.t("image-panel.align.right"),
480
- value: AlignType.right
481
- }
482
- ]
483
- },
484
- {
485
- options: [
486
- {
487
- label: localeService.t("image-panel.align.top"),
488
- value: AlignType.top
489
- },
490
- {
491
- label: localeService.t("image-panel.align.middle"),
492
- value: AlignType.middle
493
- },
494
- {
495
- label: localeService.t("image-panel.align.bottom"),
496
- value: AlignType.bottom
497
- }
498
- ]
499
- },
500
- {
501
- options: [
502
- {
503
- label: localeService.t("image-panel.align.horizon"),
504
- value: AlignType.horizon
505
- },
506
- {
507
- label: localeService.t("image-panel.align.vertical"),
508
- value: AlignType.vertical
509
- }
510
- ]
511
- }
512
- ];
513
- function handleAlignChange(value) {
514
- setAlignValue(value), commandService.executeCommand(SetDrawingAlignOperation.id, {
515
- alignType: value
516
- });
517
- }
518
- __name(handleAlignChange, "handleAlignChange");
519
- const gridDisplay = /* @__PURE__ */ __name((isShow) => isShow ? "block" : "none", "gridDisplay");
520
- return /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelGrid, styles$1.imageCommonPanelBorder), style: { display: gridDisplay(alignShow) } }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelTitle) }, /* @__PURE__ */ React.createElement("div", null, localeService.t("image-panel.align.title")))), /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn) }, /* @__PURE__ */ React.createElement(Select, { value: alignValue, options: alignOptions, onChange: handleAlignChange }))));
521
- }, "DrawingAlign"), OpenImageCropOperation = {
601
+ }, "DrawingTransform"), OpenImageCropOperation = {
522
602
  id: "sheet.operation.open-image-crop",
523
603
  type: CommandType.OPERATION,
524
604
  handler: /* @__PURE__ */ __name((accessor, params) => !0, "handler")
@@ -603,87 +683,7 @@ const AutoImageCropOperation = {
603
683
  return /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelGrid, styles$1.imageCommonPanelBorder), style: { display: gridDisplay(cropperShow) } }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelTitle) }, /* @__PURE__ */ React.createElement("div", null, localeService.t("image-panel.crop.title")))), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelRow, styles$1.imageCommonPanelRowVertical) }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan2) }, /* @__PURE__ */ React.createElement(Button, { size: "small", onClick: /* @__PURE__ */ __name(() => {
604
684
  onCropperBtnClick(cropValue);
605
685
  }, "onClick") }, /* @__PURE__ */ React.createElement("span", { className: styles$1.imageCommonPanelInline }, /* @__PURE__ */ React.createElement(CreateCopySingle, null), localeService.t("image-panel.crop.start")))), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan2) }, /* @__PURE__ */ React.createElement(Select, { value: cropValue, options: cropOptions, onChange: handleCropChange }))));
606
- }, "ImageCropper"), DrawingGroup = /* @__PURE__ */ __name((props) => {
607
- const localeService = useDependency(LocaleService), renderManagerService = useDependency(IRenderManagerService), drawingManagerService = useDependency(IDrawingManagerService), { hasGroup, drawings } = props, [groupShow, setGroupShow] = useState(!1), [groupBtnShow, setGroupBtnShow] = useState(!0), [ungroupBtnShow, setUngroupBtnShow] = useState(!0), gridDisplay = /* @__PURE__ */ __name((isShow) => isShow ? "block" : "none", "gridDisplay"), onGroupBtnClick = /* @__PURE__ */ __name(() => {
608
- const focusDrawings = drawingManagerService.getFocusDrawings(), { unitId, subUnitId } = focusDrawings[0], groupId = Tools.generateRandomId(10), groupTransform = getGroupState(0, 0, focusDrawings.map((o) => o.transform || {})), groupParam = {
609
- unitId,
610
- subUnitId,
611
- drawingId: groupId,
612
- drawingType: DrawingTypeEnum.DRAWING_GROUP,
613
- transform: groupTransform
614
- }, children = focusDrawings.map((drawing) => {
615
- const transform = drawing.transform || { left: 0, top: 0 }, { unitId: unitId2, subUnitId: subUnitId2, drawingId } = drawing;
616
- return {
617
- unitId: unitId2,
618
- subUnitId: subUnitId2,
619
- drawingId,
620
- transform: {
621
- ...transform,
622
- left: transform.left - groupTransform.left,
623
- top: transform.top - groupTransform.top
624
- },
625
- groupId
626
- };
627
- });
628
- drawingManagerService.featurePluginGroupUpdateNotification([{
629
- parent: groupParam,
630
- children
631
- }]);
632
- }, "onGroupBtnClick"), ungroup = /* @__PURE__ */ __name((param) => {
633
- if (param.drawingType !== DrawingTypeEnum.DRAWING_GROUP)
634
- return;
635
- const { unitId, subUnitId, drawingId, transform: groupTransform = { width: 0, height: 0 } } = param;
636
- if (groupTransform == null)
637
- return;
638
- const objects = drawingManagerService.getDrawingsByGroup({ unitId, subUnitId, drawingId });
639
- if (objects.length === 0)
640
- return;
641
- const children = objects.map((object) => {
642
- const { transform } = object, { unitId: unitId2, subUnitId: subUnitId2, drawingId: drawingId2 } = object, newTransform = transformObjectOutOfGroup(transform || {}, groupTransform, groupTransform.width || 0, groupTransform.height || 0);
643
- return {
644
- unitId: unitId2,
645
- subUnitId: subUnitId2,
646
- drawingId: drawingId2,
647
- transform: {
648
- ...transform,
649
- ...newTransform
650
- },
651
- groupId: void 0
652
- };
653
- });
654
- return {
655
- parent: param,
656
- children
657
- };
658
- }, "ungroup"), onUngroupBtnClick = /* @__PURE__ */ __name(() => {
659
- const params = drawingManagerService.getFocusDrawings().map(
660
- (drawing) => ungroup(drawing)
661
- ).filter((o) => o != null);
662
- params.length !== 0 && drawingManagerService.featurePluginUngroupUpdateNotification(params);
663
- }, "onUngroupBtnClick");
664
- return useEffect(() => {
665
- const drawingParam = drawings[0];
666
- if (drawingParam == null)
667
- return;
668
- const { unitId } = drawingParam, renderObject = renderManagerService.getRenderById(unitId), scene = renderObject == null ? void 0 : renderObject.scene;
669
- if (scene == null)
670
- return;
671
- const transformer = scene.getTransformerByCreate(), onClearControlObserver = transformer.clearControl$.subscribe((changeSelf) => {
672
- changeSelf === !0 && setGroupShow(!1);
673
- }), onChangeStartObserver = transformer.changeStart$.subscribe((state) => {
674
- const { objects } = state, params = getUpdateParams(objects, drawingManagerService), groupParams = params.filter((o) => (o == null ? void 0 : o.drawingType) === DrawingTypeEnum.DRAWING_GROUP);
675
- let groupBtnShow2 = !1, ungroupBtnShow2 = !1;
676
- params.length > 1 && (groupBtnShow2 = !0), groupParams.length > 0 && (ungroupBtnShow2 = !0), setGroupShow(groupBtnShow2 || ungroupBtnShow2), setGroupBtnShow(groupBtnShow2), setUngroupBtnShow(ungroupBtnShow2);
677
- });
678
- return () => {
679
- onChangeStartObserver.unsubscribe(), onClearControlObserver.unsubscribe();
680
- };
681
- }, []), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelGrid, styles$1.imageCommonPanelBorder), style: { display: gridDisplay(hasGroup === !0 ? groupShow : !1) } }, /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelTitle) }, /* @__PURE__ */ React.createElement("div", null, localeService.t("image-panel.group.title")))), /* @__PURE__ */ React.createElement("div", { className: styles$1.imageCommonPanelRow }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan2, styles$1.imageCommonPanelColumnCenter) }, /* @__PURE__ */ React.createElement(Button, { size: "small", onClick: /* @__PURE__ */ __name(() => {
682
- onGroupBtnClick();
683
- }, "onClick"), style: { display: gridDisplay(groupBtnShow) } }, /* @__PURE__ */ React.createElement("span", { className: styles$1.imageCommonPanelInline }, /* @__PURE__ */ React.createElement(GroupSingle, null), localeService.t("image-panel.group.group")))), /* @__PURE__ */ React.createElement("div", { className: clsx(styles$1.imageCommonPanelColumn, styles$1.imageCommonPanelSpan2, styles$1.imageCommonPanelColumnCenter) }, /* @__PURE__ */ React.createElement(Button, { size: "small", onClick: /* @__PURE__ */ __name(() => {
684
- onUngroupBtnClick();
685
- }, "onClick"), style: { display: gridDisplay(ungroupBtnShow) } }, /* @__PURE__ */ React.createElement("span", { className: styles$1.imageCommonPanelInline }, /* @__PURE__ */ React.createElement(UngroupSingle, null), localeService.t("image-panel.group.unGroup"))))));
686
- }, "DrawingGroup"), DrawingCommonPanel = /* @__PURE__ */ __name((props) => {
686
+ }, "ImageCropper"), DrawingCommonPanel = /* @__PURE__ */ __name((props) => {
687
687
  const drawingManagerService = useDependency(IDrawingManagerService), renderManagerService = useDependency(IRenderManagerService), localeService = useDependency(LocaleService), { drawings, hasArrange = !0, hasTransform = !0, hasAlign = !0, hasCropper = !0, hasGroup = !0 } = props, drawingParam = drawings[0];
688
688
  if (drawingParam == null)
689
689
  return;
@@ -0,0 +1,57 @@
1
+ const locale = {
2
+ "image-popup": {
3
+ replace: "Replace",
4
+ delete: "Delete",
5
+ edit: "Edit",
6
+ crop: "Crop",
7
+ reset: "Reset Size"
8
+ },
9
+ "image-cropper": {
10
+ error: "Cannot crop non-image objects."
11
+ },
12
+ "image-panel": {
13
+ arrange: {
14
+ title: "Arrange",
15
+ forward: "Bring Forward",
16
+ backward: "Send Backward",
17
+ front: "Bring to Front",
18
+ back: "Send to Back"
19
+ },
20
+ transform: {
21
+ title: "Transform",
22
+ rotate: "Rotate (°)",
23
+ x: "X (px)",
24
+ y: "Y (px)",
25
+ width: "Width (px)",
26
+ height: "Height (px)",
27
+ lock: "Lock Ratio (%)"
28
+ },
29
+ crop: {
30
+ title: "Crop",
31
+ start: "Start Crop",
32
+ mode: "Free"
33
+ },
34
+ group: {
35
+ title: "Group",
36
+ group: "Group",
37
+ reGroup: "Regroup",
38
+ unGroup: "Ungroup"
39
+ },
40
+ align: {
41
+ title: "Align",
42
+ default: "Select Align Type",
43
+ left: "Align Left",
44
+ center: "Align Center",
45
+ right: "Align Right",
46
+ top: "Align Top",
47
+ middle: "Align Middle",
48
+ bottom: "Align Bottom",
49
+ horizon: "Distribute Horizontally ",
50
+ vertical: "Distribute Vertically "
51
+ },
52
+ null: "No Object Selection"
53
+ }
54
+ };
55
+ export {
56
+ locale as default
57
+ };
@@ -0,0 +1,57 @@
1
+ const locale = {
2
+ "image-popup": {
3
+ replace: "تعویض",
4
+ delete: "حذف",
5
+ edit: "ویرایش",
6
+ crop: "کراپ",
7
+ reset: "بازنشانی اندازه"
8
+ },
9
+ "image-cropper": {
10
+ error: "کراپ کردن اشیاء غیرتصویری امکان‌پذیر نیست."
11
+ },
12
+ "image-panel": {
13
+ arrange: {
14
+ title: "ترتیب‌دهی",
15
+ forward: "آوردن به جلو",
16
+ backward: "فرستادن به عقب",
17
+ front: "آوردن به جلوی همه",
18
+ back: "فرستادن به پشت همه"
19
+ },
20
+ transform: {
21
+ title: "تبدیل",
22
+ rotate: "چرخش (°)",
23
+ x: "X (px)",
24
+ y: "Y (px)",
25
+ width: "عرض (px)",
26
+ height: "ارتفاع (px)",
27
+ lock: "قفل نسبت (%)"
28
+ },
29
+ crop: {
30
+ title: "کراپ",
31
+ start: "شروع کراپ",
32
+ mode: "آزاد"
33
+ },
34
+ group: {
35
+ title: "گروه",
36
+ group: "گروه‌بندی",
37
+ reGroup: "گروه‌بندی مجدد",
38
+ unGroup: "لغو گروه‌بندی"
39
+ },
40
+ align: {
41
+ title: "تراز",
42
+ default: "انتخاب نوع تراز",
43
+ left: "تراز چپ",
44
+ center: "تراز وسط",
45
+ right: "تراز راست",
46
+ top: "تراز بالا",
47
+ middle: "تراز وسط",
48
+ bottom: "تراز پایین",
49
+ horizon: "توزیع افقی",
50
+ vertical: "توزیع عمودی"
51
+ },
52
+ null: "هیچ شیئی انتخاب نشده است"
53
+ }
54
+ };
55
+ export {
56
+ locale as default
57
+ };
@@ -0,0 +1,57 @@
1
+ const locale = {
2
+ "image-popup": {
3
+ replace: "Заменить",
4
+ delete: "Удалить",
5
+ edit: "Редактировать",
6
+ crop: "Обрезать",
7
+ reset: "Сбросить размер"
8
+ },
9
+ "image-cropper": {
10
+ error: "Невозможно обрезать не изображения."
11
+ },
12
+ "image-panel": {
13
+ arrange: {
14
+ title: "Расположение",
15
+ forward: "Переместить вперёд",
16
+ backward: "Переместить назад",
17
+ front: "На передний план",
18
+ back: "На задний план"
19
+ },
20
+ transform: {
21
+ title: "Трансформация",
22
+ rotate: "Повернуть (°)",
23
+ x: "X (пкс)",
24
+ y: "Y (пкс)",
25
+ width: "Ширина (пкс)",
26
+ height: "Высота (пкс)",
27
+ lock: "Заблокировать пропорции (%)"
28
+ },
29
+ crop: {
30
+ title: "Обрезка",
31
+ start: "Начать обрезку",
32
+ mode: "Свободный"
33
+ },
34
+ group: {
35
+ title: "Группировка",
36
+ group: "Сгруппировать",
37
+ reGroup: "Перегруппировать",
38
+ unGroup: "Разгруппировать"
39
+ },
40
+ align: {
41
+ title: "Выравнивание",
42
+ default: "Выберите тип выравнивания",
43
+ left: "Выровнять по левому краю",
44
+ center: "Выровнять по центру",
45
+ right: "Выровнять по правому краю",
46
+ top: "Выровнять по верхнему краю",
47
+ middle: "Выровнять посередине",
48
+ bottom: "Выровнять по нижнему краю",
49
+ horizon: "Распределить горизонтально",
50
+ vertical: "Распределить вертикально"
51
+ },
52
+ null: "Нет выбранных объектов"
53
+ }
54
+ };
55
+ export {
56
+ locale as default
57
+ };
@@ -0,0 +1,57 @@
1
+ const locale = {
2
+ "image-popup": {
3
+ replace: "Thay thế",
4
+ delete: "Xóa",
5
+ edit: "Chỉnh sửa",
6
+ crop: "Cắt",
7
+ reset: "Đặt lại kích thước"
8
+ },
9
+ "image-cropper": {
10
+ error: "Không thể cắt phần tử không phải hình ảnh"
11
+ },
12
+ "image-panel": {
13
+ arrange: {
14
+ title: "Sắp xếp",
15
+ forward: "Di chuyển lên một lớp",
16
+ backward: "Di chuyển xuống một lớp",
17
+ front: "Đưa lên trên cùng",
18
+ back: "Đưa xuống dưới cùng"
19
+ },
20
+ transform: {
21
+ title: "Biến đổi",
22
+ rotate: "Xoay (°)",
23
+ x: "X (px)",
24
+ y: "Y (px)",
25
+ width: "Chiều rộng (px)",
26
+ height: "Chiều cao (px)",
27
+ lock: "Khóa tỷ lệ (%)"
28
+ },
29
+ crop: {
30
+ title: "Cắt",
31
+ start: "Bắt đầu cắt",
32
+ mode: "Cắt tự do tỷ lệ"
33
+ },
34
+ group: {
35
+ title: "Nhóm",
36
+ group: "Nhóm",
37
+ reGroup: "Nhóm lại",
38
+ unGroup: "Hủy nhóm"
39
+ },
40
+ align: {
41
+ title: "Căn chỉnh",
42
+ default: "Chọn cách căn chỉnh",
43
+ left: "Căn trái",
44
+ center: "Căn giữa theo chiều ngang",
45
+ right: "Căn phải",
46
+ top: "Căn trên",
47
+ middle: "Căn giữa theo chiều dọc",
48
+ bottom: "Căn dưới",
49
+ horizon: "Phân phối theo chiều ngang",
50
+ vertical: "Phân phối theo chiều dọc"
51
+ },
52
+ null: "Không có đối tượng nào được chọn"
53
+ }
54
+ };
55
+ export {
56
+ locale as default
57
+ };