@idraw/core 0.4.0-beta.32 → 0.4.0-beta.34

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.
Files changed (32) hide show
  1. package/dist/esm/config.d.ts +26 -1
  2. package/dist/esm/config.js +32 -1
  3. package/dist/esm/index.d.ts +7 -5
  4. package/dist/esm/index.js +6 -5
  5. package/dist/esm/lib/cursor.js +2 -1
  6. package/dist/esm/middleware/dragger/index.js +4 -3
  7. package/dist/esm/middleware/info/index.d.ts +2 -2
  8. package/dist/esm/middleware/info/types.d.ts +2 -2
  9. package/dist/esm/middleware/layout-selector/index.d.ts +2 -2
  10. package/dist/esm/middleware/layout-selector/index.js +5 -5
  11. package/dist/esm/middleware/pointer/index.d.ts +3 -0
  12. package/dist/esm/middleware/pointer/index.js +43 -0
  13. package/dist/esm/middleware/pointer/types.d.ts +3 -0
  14. package/dist/esm/middleware/pointer/types.js +1 -0
  15. package/dist/esm/middleware/ruler/index.d.ts +0 -1
  16. package/dist/esm/middleware/ruler/index.js +3 -3
  17. package/dist/esm/middleware/scaler/index.d.ts +0 -1
  18. package/dist/esm/middleware/scaler/index.js +2 -2
  19. package/dist/esm/middleware/scroller/index.js +2 -1
  20. package/dist/esm/middleware/selector/config.d.ts +0 -4
  21. package/dist/esm/middleware/selector/config.js +0 -4
  22. package/dist/esm/middleware/selector/draw-wrapper.d.ts +3 -3
  23. package/dist/esm/middleware/selector/draw-wrapper.js +1 -1
  24. package/dist/esm/middleware/selector/index.d.ts +1 -2
  25. package/dist/esm/middleware/selector/index.js +105 -54
  26. package/dist/esm/middleware/selector/util.d.ts +2 -2
  27. package/dist/esm/middleware/selector/util.js +4 -4
  28. package/dist/esm/middleware/text-editor/index.d.ts +2 -3
  29. package/dist/esm/middleware/text-editor/index.js +7 -6
  30. package/dist/index.global.js +450 -316
  31. package/dist/index.global.min.js +1 -1
  32. package/package.json +5 -5
@@ -1,14 +1,12 @@
1
- import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement } from '@idraw/util';
2
- import { drawHoverVertexesWrapper, drawLockVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
1
+ import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement, getElementSize } from '@idraw/util';
2
+ import { drawHoverVertexesWrapper, drawLockedVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
3
3
  import { drawReferenceLines } from './draw-reference';
4
4
  import { getPointTarget, resizeElement, rotateElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup, calcMoveInGroup } from './util';
5
- import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid, keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keyIsMoving, keyEnableSelectInGroup, keyEnableSnapToGrid, controllerSize, defaultStyle } from './config';
5
+ import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keyIsMoving, keyEnableSelectInGroup, keyEnableSnapToGrid, controllerSize, defaultStyle } from './config';
6
6
  import { calcReferenceInfo } from './reference';
7
- import { middlewareEventTextEdit } from '../text-editor';
8
- import { eventChange } from '../../config';
7
+ import { coreEventKeys } from '../../config';
9
8
  import { keyLayoutIsSelected } from '../layout-selector';
10
9
  export { keySelectedElementList, keyHoverElement, keyActionType, keyResizeType, keyGroupQueue };
11
- export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid };
12
10
  export const MiddlewareSelector = (opts, config) => {
13
11
  const innerConfig = Object.assign(Object.assign({}, defaultStyle), config);
14
12
  const { activeColor, activeAreaColor, lockedColor, referenceColor } = innerConfig;
@@ -16,6 +14,8 @@ export const MiddlewareSelector = (opts, config) => {
16
14
  const { viewer, sharer, boardContent, calculator, eventHub } = opts;
17
15
  const { overlayContext } = boardContent;
18
16
  let prevPoint = null;
17
+ let moveOriginalStartPoint = null;
18
+ let moveOriginalStartElementSize = null;
19
19
  let inBusyMode = null;
20
20
  sharer.setSharedStorage(keyActionType, null);
21
21
  sharer.setSharedStorage(keyEnableSnapToGrid, true);
@@ -70,7 +70,7 @@ export const MiddlewareSelector = (opts, config) => {
70
70
  sharer.setSharedStorage(keySelectedElementPosition, []);
71
71
  }
72
72
  if ((opts === null || opts === void 0 ? void 0 : opts.triggerEvent) === true) {
73
- eventHub.trigger(middlewareEventSelect, { uuids: list.map((elem) => elem.uuid) });
73
+ eventHub.trigger(coreEventKeys.SELECT, { uuids: list.map((elem) => elem.uuid), positions: [] });
74
74
  }
75
75
  };
76
76
  const pointTargetBaseOptions = () => {
@@ -103,7 +103,7 @@ export const MiddlewareSelector = (opts, config) => {
103
103
  sharer.setSharedStorage(keyIsMoving, null);
104
104
  };
105
105
  clear();
106
- const selectCallback = ({ uuids, positions }) => {
106
+ const selectCallback = ({ uuids = [], positions }) => {
107
107
  let elements = [];
108
108
  const actionType = sharer.getSharedStorage(keyActionType);
109
109
  const data = sharer.getActiveStorage('data');
@@ -142,16 +142,16 @@ export const MiddlewareSelector = (opts, config) => {
142
142
  return {
143
143
  name: '@middleware/selector',
144
144
  use() {
145
- eventHub.on(middlewareEventSelect, selectCallback);
146
- eventHub.on(middlewareEventSelectClear, selectClearCallback);
147
- eventHub.on(middlewareEventSelectInGroup, selectInGroupCallback);
148
- eventHub.on(middlewareEventSnapToGrid, setSnapToSnapCallback);
145
+ eventHub.on(coreEventKeys.SELECT, selectCallback);
146
+ eventHub.on(coreEventKeys.CLEAR_SELECT, selectClearCallback);
147
+ eventHub.on(coreEventKeys.SELECT_IN_GROUP, selectInGroupCallback);
148
+ eventHub.on(coreEventKeys.SNAP_TO_GRID, setSnapToSnapCallback);
149
149
  },
150
150
  disuse() {
151
- eventHub.off(middlewareEventSelect, selectCallback);
152
- eventHub.off(middlewareEventSelectClear, selectClearCallback);
153
- eventHub.off(middlewareEventSelectInGroup, selectInGroupCallback);
154
- eventHub.off(middlewareEventSnapToGrid, setSnapToSnapCallback);
151
+ eventHub.off(coreEventKeys.SELECT, selectCallback);
152
+ eventHub.off(coreEventKeys.CLEAR_SELECT, selectClearCallback);
153
+ eventHub.off(coreEventKeys.SELECT_IN_GROUP, selectInGroupCallback);
154
+ eventHub.off(coreEventKeys.SNAP_TO_GRID, setSnapToSnapCallback);
155
155
  },
156
156
  hover: (e) => {
157
157
  var _a, _b, _c, _d, _e;
@@ -165,7 +165,7 @@ export const MiddlewareSelector = (opts, config) => {
165
165
  }
166
166
  const cursor = target.type;
167
167
  if (inBusyMode === null) {
168
- eventHub.trigger('cursor', {
168
+ eventHub.trigger(coreEventKeys.CURSOR, {
169
169
  type: cursor,
170
170
  groupQueue: target.groupQueue,
171
171
  element: target.elements[0]
@@ -249,8 +249,9 @@ export const MiddlewareSelector = (opts, config) => {
249
249
  }
250
250
  },
251
251
  pointStart: (e) => {
252
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
252
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
253
253
  prevPoint = e.point;
254
+ moveOriginalStartPoint = e.point;
254
255
  const groupQueue = sharer.getSharedStorage(keyGroupQueue);
255
256
  if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
256
257
  if (isPointInViewActiveGroup(e.point, {
@@ -260,17 +261,19 @@ export const MiddlewareSelector = (opts, config) => {
260
261
  groupQueue
261
262
  })) {
262
263
  const target = getPointTarget(e.point, pointTargetBaseOptions());
263
- if (((_a = target === null || target === void 0 ? void 0 : target.elements) === null || _a === void 0 ? void 0 : _a.length) === 1 && ((_c = (_b = target.elements[0]) === null || _b === void 0 ? void 0 : _b.operations) === null || _c === void 0 ? void 0 : _c.lock) === true) {
264
- return;
264
+ const isLockedElement = ((_a = target === null || target === void 0 ? void 0 : target.elements) === null || _a === void 0 ? void 0 : _a.length) === 1 && ((_c = (_b = target.elements[0]) === null || _b === void 0 ? void 0 : _b.operations) === null || _c === void 0 ? void 0 : _c.locked) === true;
265
+ updateHoverElement(null);
266
+ if (((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length) === 1) {
267
+ moveOriginalStartElementSize = getElementSize(target === null || target === void 0 ? void 0 : target.elements[0]);
265
268
  }
266
- else {
267
- updateHoverElement(null);
269
+ if (isLockedElement === true) {
270
+ clear();
268
271
  }
269
- if (target.type === 'over-element' && ((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length) === 1) {
272
+ else if (target.type === 'over-element' && ((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1) {
270
273
  updateSelectedElementList([target.elements[0]], { triggerEvent: true });
271
274
  sharer.setSharedStorage(keyActionType, 'drag');
272
275
  }
273
- else if ((_e = target.type) === null || _e === void 0 ? void 0 : _e.startsWith('resize-')) {
276
+ else if ((_f = target.type) === null || _f === void 0 ? void 0 : _f.startsWith('resize-')) {
274
277
  sharer.setSharedStorage(keyResizeType, target.type);
275
278
  sharer.setSharedStorage(keyActionType, 'resize');
276
279
  }
@@ -290,20 +293,25 @@ export const MiddlewareSelector = (opts, config) => {
290
293
  calculator
291
294
  });
292
295
  const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
293
- if (((_f = target === null || target === void 0 ? void 0 : target.elements) === null || _f === void 0 ? void 0 : _f.length) === 1 && ((_h = (_g = target.elements[0]) === null || _g === void 0 ? void 0 : _g.operations) === null || _h === void 0 ? void 0 : _h.lock) === true) {
294
- return;
296
+ const isLockedElement = ((_g = target === null || target === void 0 ? void 0 : target.elements) === null || _g === void 0 ? void 0 : _g.length) === 1 && ((_j = (_h = target.elements[0]) === null || _h === void 0 ? void 0 : _h.operations) === null || _j === void 0 ? void 0 : _j.locked) === true;
297
+ updateHoverElement(null);
298
+ if (((_k = target === null || target === void 0 ? void 0 : target.elements) === null || _k === void 0 ? void 0 : _k.length) === 1) {
299
+ moveOriginalStartElementSize = getElementSize(target === null || target === void 0 ? void 0 : target.elements[0]);
295
300
  }
296
- else {
297
- updateHoverElement(null);
301
+ if (isLockedElement === true) {
302
+ clear();
303
+ sharer.setSharedStorage(keyActionType, 'area');
304
+ sharer.setSharedStorage(keyAreaStart, e.point);
305
+ updateSelectedElementList([], { triggerEvent: true });
298
306
  }
299
- if (target.type === 'list-area') {
307
+ else if (target.type === 'list-area') {
300
308
  sharer.setSharedStorage(keyActionType, 'drag-list');
301
309
  }
302
- else if (target.type === 'over-element' && ((_j = target === null || target === void 0 ? void 0 : target.elements) === null || _j === void 0 ? void 0 : _j.length) === 1) {
310
+ else if (target.type === 'over-element' && ((_l = target === null || target === void 0 ? void 0 : target.elements) === null || _l === void 0 ? void 0 : _l.length) === 1) {
303
311
  updateSelectedElementList([target.elements[0]], { triggerEvent: true });
304
312
  sharer.setSharedStorage(keyActionType, 'drag');
305
313
  }
306
- else if ((_k = target.type) === null || _k === void 0 ? void 0 : _k.startsWith('resize-')) {
314
+ else if ((_m = target.type) === null || _m === void 0 ? void 0 : _m.startsWith('resize-')) {
307
315
  sharer.setSharedStorage(keyResizeType, target.type);
308
316
  sharer.setSharedStorage(keyActionType, 'resize');
309
317
  }
@@ -324,6 +332,7 @@ export const MiddlewareSelector = (opts, config) => {
324
332
  const viewScaleInfo = sharer.getActiveViewScaleInfo();
325
333
  const viewSizeInfo = sharer.getActiveViewSizeInfo();
326
334
  const start = prevPoint;
335
+ const originalStart = moveOriginalStartPoint;
327
336
  const end = e.point;
328
337
  const resizeType = sharer.getSharedStorage(keyResizeType);
329
338
  const actionType = sharer.getSharedStorage(keyActionType);
@@ -331,8 +340,8 @@ export const MiddlewareSelector = (opts, config) => {
331
340
  const enableSnapToGrid = sharer.getSharedStorage(keyEnableSnapToGrid);
332
341
  if (actionType === 'drag') {
333
342
  inBusyMode = 'drag';
334
- if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && start && end && ((_b = (_a = elems[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.lock) !== true) {
335
- const { moveX, moveY } = calcMoveInGroup(start, end, groupQueue);
343
+ if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && moveOriginalStartElementSize && originalStart && end && ((_b = (_a = elems[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.locked) !== true) {
344
+ const { moveX, moveY } = calcMoveInGroup(originalStart, end, groupQueue);
336
345
  let totalMoveX = calculator.toGridNum(moveX / scale);
337
346
  let totalMoveY = calculator.toGridNum(moveY / scale);
338
347
  if (enableSnapToGrid === true) {
@@ -357,8 +366,8 @@ export const MiddlewareSelector = (opts, config) => {
357
366
  console.error(err);
358
367
  }
359
368
  }
360
- elems[0].x = calculator.toGridNum(elems[0].x + totalMoveX);
361
- elems[0].y = calculator.toGridNum(elems[0].y + totalMoveY);
369
+ elems[0].x = calculator.toGridNum(moveOriginalStartElementSize.x + totalMoveX);
370
+ elems[0].y = calculator.toGridNum(moveOriginalStartElementSize.y + totalMoveY);
362
371
  updateSelectedElementList([elems[0]]);
363
372
  calculator.modifyViewVisibleInfoMap(data, {
364
373
  modifyOptions: {
@@ -376,12 +385,12 @@ export const MiddlewareSelector = (opts, config) => {
376
385
  }
377
386
  else if (actionType === 'drag-list') {
378
387
  inBusyMode = 'drag-list';
379
- if (data && start && end && (elems === null || elems === void 0 ? void 0 : elems.length) > 1) {
388
+ if (data && originalStart && start && end && (elems === null || elems === void 0 ? void 0 : elems.length) > 1) {
380
389
  const moveX = (end.x - start.x) / scale;
381
390
  const moveY = (end.y - start.y) / scale;
382
391
  elems.forEach((elem) => {
383
392
  var _a;
384
- if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.lock) !== true) {
393
+ if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.locked) !== true) {
385
394
  elem.x = calculator.toGridNum(elem.x + moveX);
386
395
  elem.y = calculator.toGridNum(elem.y + moveY);
387
396
  calculator.modifyViewVisibleInfoMap(data, {
@@ -402,7 +411,7 @@ export const MiddlewareSelector = (opts, config) => {
402
411
  viewer.drawFrame();
403
412
  }
404
413
  else if (actionType === 'resize') {
405
- if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && start && (resizeType === null || resizeType === void 0 ? void 0 : resizeType.startsWith('resize-'))) {
414
+ if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && originalStart && moveOriginalStartElementSize && (resizeType === null || resizeType === void 0 ? void 0 : resizeType.startsWith('resize-'))) {
406
415
  inBusyMode = 'resize';
407
416
  const pointGroupQueue = [];
408
417
  groupQueue.forEach((group) => {
@@ -415,10 +424,10 @@ export const MiddlewareSelector = (opts, config) => {
415
424
  angle: 0 - angle
416
425
  });
417
426
  });
418
- let resizeStart = start;
427
+ let resizeStart = originalStart;
419
428
  let resizeEnd = end;
420
429
  if (groupQueue.length > 0) {
421
- resizeStart = rotatePointInGroup(start, pointGroupQueue);
430
+ resizeStart = rotatePointInGroup(originalStart, pointGroupQueue);
422
431
  resizeEnd = rotatePointInGroup(end, pointGroupQueue);
423
432
  }
424
433
  if (resizeType === 'resize-rotate') {
@@ -430,11 +439,11 @@ export const MiddlewareSelector = (opts, config) => {
430
439
  controller.bottomRight.center
431
440
  ];
432
441
  const viewCenter = calcElementCenterFromVertexes(viewVertexes);
433
- const resizedElemSize = rotateElement(elems[0], {
442
+ const resizedElemSize = rotateElement(moveOriginalStartElementSize, {
434
443
  center: viewCenter,
435
444
  viewScaleInfo,
436
445
  viewSizeInfo,
437
- start,
446
+ start: originalStart,
438
447
  end,
439
448
  resizeType,
440
449
  sharer
@@ -442,8 +451,8 @@ export const MiddlewareSelector = (opts, config) => {
442
451
  elems[0].angle = calculator.toGridNum(resizedElemSize.angle || 0);
443
452
  }
444
453
  else {
445
- const resizedElemSize = resizeElement(elems[0], { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
446
- const calcOpts = { ignore: !!elems[0].angle };
454
+ const resizedElemSize = resizeElement(moveOriginalStartElementSize, { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
455
+ const calcOpts = { ignore: !!moveOriginalStartElementSize.angle };
447
456
  elems[0].x = calculator.toGridNum(resizedElemSize.x, calcOpts);
448
457
  elems[0].y = calculator.toGridNum(resizedElemSize.y, calcOpts);
449
458
  if (elems[0].type === 'group' && ((_c = elems[0].operations) === null || _c === void 0 ? void 0 : _c.deepResize) === true) {
@@ -490,6 +499,8 @@ export const MiddlewareSelector = (opts, config) => {
490
499
  const viewSizeInfo = sharer.getActiveViewSizeInfo();
491
500
  let needDrawFrame = false;
492
501
  prevPoint = null;
502
+ moveOriginalStartPoint = null;
503
+ moveOriginalStartElementSize = null;
493
504
  if (actionType === 'resize' && resizeType) {
494
505
  sharer.setSharedStorage(keyResizeType, null);
495
506
  needDrawFrame = true;
@@ -551,7 +562,7 @@ export const MiddlewareSelector = (opts, config) => {
551
562
  if (type === 'resize') {
552
563
  type = 'resizeElement';
553
564
  }
554
- eventHub.trigger(eventChange, { data, type, selectedElements, hoverElement });
565
+ eventHub.trigger(coreEventKeys.CHANGE, { data, type, selectedElements, hoverElement });
555
566
  }
556
567
  viewer.drawFrame();
557
568
  };
@@ -559,6 +570,8 @@ export const MiddlewareSelector = (opts, config) => {
559
570
  },
560
571
  pointLeave() {
561
572
  prevPoint = null;
573
+ moveOriginalStartPoint = null;
574
+ moveOriginalStartElementSize = null;
562
575
  clear();
563
576
  viewer.drawFrame();
564
577
  },
@@ -570,7 +583,7 @@ export const MiddlewareSelector = (opts, config) => {
570
583
  const target = getPointTarget(e.point, pointTargetBaseOptions());
571
584
  sharer.setSharedStorage(keySelectedElementController, null);
572
585
  sharer.setSharedStorage(keySelectedElementList, []);
573
- if (target.elements.length === 1 && ((_b = (_a = target.elements[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.lock) === true) {
586
+ if (target.elements.length === 1 && ((_b = (_a = target.elements[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.locked) === true) {
574
587
  return;
575
588
  }
576
589
  if (target.elements.length === 1 && ((_c = target.elements[0]) === null || _c === void 0 ? void 0 : _c.type) === 'group') {
@@ -582,7 +595,7 @@ export const MiddlewareSelector = (opts, config) => {
582
595
  }
583
596
  }
584
597
  else if (target.elements.length === 1 && ((_d = target.elements[0]) === null || _d === void 0 ? void 0 : _d.type) === 'text' && !((_f = (_e = target.elements[0]) === null || _e === void 0 ? void 0 : _e.operations) === null || _f === void 0 ? void 0 : _f.invisible)) {
585
- eventHub.trigger(middlewareEventTextEdit, {
598
+ eventHub.trigger(coreEventKeys.TEXT_EDIT, {
586
599
  element: target.elements[0],
587
600
  groupQueue: sharer.getSharedStorage(keyGroupQueue) || [],
588
601
  position: getElementPositionFromList((_g = target.elements[0]) === null || _g === void 0 ? void 0 : _g.uuid, ((_h = sharer.getActiveStorage('data')) === null || _h === void 0 ? void 0 : _h.elements) || []),
@@ -591,6 +604,44 @@ export const MiddlewareSelector = (opts, config) => {
591
604
  }
592
605
  sharer.setSharedStorage(keyActionType, null);
593
606
  },
607
+ contextMenu: (e) => {
608
+ var _a, _b, _c, _d, _e, _f, _g, _h;
609
+ const groupQueue = sharer.getSharedStorage(keyGroupQueue);
610
+ if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
611
+ if (isPointInViewActiveGroup(e.point, {
612
+ ctx: overlayContext,
613
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
614
+ viewSizeInfo: sharer.getActiveViewSizeInfo(),
615
+ groupQueue
616
+ })) {
617
+ const target = getPointTarget(e.point, pointTargetBaseOptions());
618
+ if (((_a = target === null || target === void 0 ? void 0 : target.elements) === null || _a === void 0 ? void 0 : _a.length) === 1 && ((_c = (_b = target.elements[0]) === null || _b === void 0 ? void 0 : _b.operations) === null || _c === void 0 ? void 0 : _c.locked) !== true) {
619
+ clear();
620
+ updateSelectedElementList([target.elements[0]], { triggerEvent: true });
621
+ viewer.drawFrame();
622
+ }
623
+ else if (!((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length)) {
624
+ clear();
625
+ }
626
+ }
627
+ return;
628
+ }
629
+ const listAreaSize = calcSelectedElementsArea(getActiveElements(), {
630
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
631
+ viewSizeInfo: sharer.getActiveViewSizeInfo(),
632
+ calculator
633
+ });
634
+ const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
635
+ if (((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1 && ((_g = (_f = target.elements[0]) === null || _f === void 0 ? void 0 : _f.operations) === null || _g === void 0 ? void 0 : _g.locked) !== true) {
636
+ clear();
637
+ updateSelectedElementList([target.elements[0]], { triggerEvent: true });
638
+ viewer.drawFrame();
639
+ return;
640
+ }
641
+ else if (!((_h = target === null || target === void 0 ? void 0 : target.elements) === null || _h === void 0 ? void 0 : _h.length)) {
642
+ clear();
643
+ }
644
+ },
594
645
  beforeDrawFrame({ snapshot }) {
595
646
  var _a;
596
647
  const { activeStore, sharedStore } = snapshot;
@@ -617,12 +668,12 @@ export const MiddlewareSelector = (opts, config) => {
617
668
  viewScaleInfo
618
669
  })
619
670
  : null;
620
- const isLock = !!((_a = hoverElement === null || hoverElement === void 0 ? void 0 : hoverElement.operations) === null || _a === void 0 ? void 0 : _a.lock);
671
+ const isHoverLocked = !!((_a = hoverElement === null || hoverElement === void 0 ? void 0 : hoverElement.operations) === null || _a === void 0 ? void 0 : _a.locked);
621
672
  if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
622
673
  drawGroupQueueVertexesWrappers(overlayContext, groupQueueVertexesList, drawBaseOpts);
623
674
  if (hoverElement && actionType !== 'drag') {
624
- if (isLock) {
625
- drawLockVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
675
+ if (isHoverLocked) {
676
+ drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
626
677
  groupQueue,
627
678
  controllerSize: 10,
628
679
  viewScaleInfo
@@ -632,7 +683,7 @@ export const MiddlewareSelector = (opts, config) => {
632
683
  drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
633
684
  }
634
685
  }
635
- if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
686
+ if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
636
687
  drawSelectedElementControllersVertexes(overlayContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag', style }));
637
688
  if (actionType === 'drag') {
638
689
  if (enableSnapToGrid === true) {
@@ -659,8 +710,8 @@ export const MiddlewareSelector = (opts, config) => {
659
710
  }
660
711
  else {
661
712
  if (hoverElement && actionType !== 'drag') {
662
- if (isLock) {
663
- drawLockVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
713
+ if (isHoverLocked) {
714
+ drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
664
715
  groupQueue,
665
716
  controllerSize: 10,
666
717
  viewScaleInfo
@@ -670,7 +721,7 @@ export const MiddlewareSelector = (opts, config) => {
670
721
  drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
671
722
  }
672
723
  }
673
- if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
724
+ if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
674
725
  drawSelectedElementControllersVertexes(overlayContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag', style }));
675
726
  if (actionType === 'drag') {
676
727
  if (enableSnapToGrid === true) {
@@ -23,14 +23,14 @@ export declare function getPointTarget(p: PointSize, opts: {
23
23
  groupQueue: Element<'group'>[] | null;
24
24
  selectedElementController: ElementSizeController | null;
25
25
  }): PointTarget;
26
- export declare function resizeElement(elem: Element<ElementType>, opts: {
26
+ export declare function resizeElement(elem: ElementSize, opts: {
27
27
  start: PointSize;
28
28
  end: PointSize;
29
29
  resizeType: ResizeType;
30
30
  scale: number;
31
31
  sharer: StoreSharer;
32
32
  }): ElementSize;
33
- export declare function rotateElement(elem: Element<ElementType>, opts: {
33
+ export declare function rotateElement(elem: ElementSize, opts: {
34
34
  center: PointSize;
35
35
  start: PointSize;
36
36
  end: PointSize;
@@ -703,10 +703,10 @@ export function getSelectedListArea(data, opts) {
703
703
  const endY = Math.max(start.y, end.y);
704
704
  for (let idx = 0; idx < data.elements.length; idx++) {
705
705
  const elem = data.elements[idx];
706
- if (((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.lock) === true) {
706
+ if (((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.locked) === true) {
707
707
  continue;
708
708
  }
709
- const elemSize = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo });
709
+ const elemSize = calcViewElementSize(elem, { viewScaleInfo });
710
710
  const center = calcElementCenter(elemSize);
711
711
  if (center.x >= startX && center.x <= endX && center.y >= startY && center.y <= endY) {
712
712
  indexes.push(idx);
@@ -733,14 +733,14 @@ export function calcSelectedElementsArea(elements, opts) {
733
733
  return null;
734
734
  }
735
735
  const area = { x: 0, y: 0, w: 0, h: 0 };
736
- const { viewScaleInfo, viewSizeInfo } = opts;
736
+ const { viewScaleInfo } = opts;
737
737
  let prevElemSize = null;
738
738
  for (let i = 0; i < elements.length; i++) {
739
739
  const elem = elements[i];
740
740
  if ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.invisible) {
741
741
  continue;
742
742
  }
743
- const elemSize = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo });
743
+ const elemSize = calcViewElementSize(elem, { viewScaleInfo });
744
744
  if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
745
745
  const ves = rotateElementVertexes(elemSize);
746
746
  if (ves.length === 4) {
@@ -1,6 +1,5 @@
1
1
  import type { BoardMiddleware, CoreEventMap, Element, ViewScaleInfo, ElementPosition } from '@idraw/types';
2
- export declare const middlewareEventTextEdit = "@middleware/text-edit";
3
- export declare const middlewareEventTextChange = "@middleware/text-change";
2
+ import { coreEventKeys } from '../../config';
4
3
  type TextEditEvent = {
5
4
  element: Element<'text'>;
6
5
  position: ElementPosition;
@@ -16,6 +15,6 @@ type TextChangeEvent = {
16
15
  };
17
16
  position: ElementPosition;
18
17
  };
19
- type ExtendEventMap = Record<typeof middlewareEventTextEdit, TextEditEvent> & Record<typeof middlewareEventTextChange, TextChangeEvent>;
18
+ type ExtendEventMap = Record<typeof coreEventKeys.TEXT_EDIT, TextEditEvent> & Record<typeof coreEventKeys.TEXT_CHANGE, TextChangeEvent>;
20
19
  export declare const MiddlewareTextEditor: BoardMiddleware<ExtendEventMap, CoreEventMap & ExtendEventMap>;
21
20
  export {};
@@ -1,6 +1,5 @@
1
1
  import { limitAngle, getDefaultElementDetailConfig, enhanceFontFamliy } from '@idraw/util';
2
- export const middlewareEventTextEdit = '@middleware/text-edit';
3
- export const middlewareEventTextChange = '@middleware/text-change';
2
+ import { coreEventKeys } from '../../config';
4
3
  const defaultElementDetail = getDefaultElementDetailConfig();
5
4
  export const MiddlewareTextEditor = (opts) => {
6
5
  const { eventHub, boardContent, viewer, sharer } = opts;
@@ -12,6 +11,8 @@ export const MiddlewareTextEditor = (opts) => {
12
11
  const mask = document.createElement('div');
13
12
  let activeElem = null;
14
13
  let activePosition = [];
14
+ const id = `idraw-middleware-text-editor-${Math.random().toString(26).substring(2)}`;
15
+ mask.setAttribute('id', id);
15
16
  canvasWrapper.appendChild(textarea);
16
17
  canvasWrapper.style.position = 'absolute';
17
18
  mask.appendChild(canvasWrapper);
@@ -163,7 +164,7 @@ export const MiddlewareTextEditor = (opts) => {
163
164
  textarea.addEventListener('input', () => {
164
165
  if (activeElem && activePosition) {
165
166
  activeElem.detail.text = textarea.innerText || '';
166
- eventHub.trigger(middlewareEventTextChange, {
167
+ eventHub.trigger(coreEventKeys.TEXT_CHANGE, {
167
168
  element: {
168
169
  uuid: activeElem.uuid,
169
170
  detail: {
@@ -177,7 +178,7 @@ export const MiddlewareTextEditor = (opts) => {
177
178
  });
178
179
  textarea.addEventListener('blur', () => {
179
180
  if (activeElem && activePosition) {
180
- eventHub.trigger(middlewareEventTextChange, {
181
+ eventHub.trigger(coreEventKeys.TEXT_CHANGE, {
181
182
  element: {
182
183
  uuid: activeElem.uuid,
183
184
  detail: {
@@ -213,10 +214,10 @@ export const MiddlewareTextEditor = (opts) => {
213
214
  return {
214
215
  name: '@middleware/text-editor',
215
216
  use() {
216
- eventHub.on(middlewareEventTextEdit, textEditCallback);
217
+ eventHub.on(coreEventKeys.TEXT_EDIT, textEditCallback);
217
218
  },
218
219
  disuse() {
219
- eventHub.off(middlewareEventTextEdit, textEditCallback);
220
+ eventHub.off(coreEventKeys.TEXT_EDIT, textEditCallback);
220
221
  }
221
222
  };
222
223
  };