@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
@@ -1209,6 +1209,11 @@ var __privateMethod = (obj, member, method) => {
1209
1209
  }
1210
1210
  return groupQueue;
1211
1211
  }
1212
+ function getElementSize(elem) {
1213
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = elem;
1214
+ const size = { x: x2, y: y2, w: w2, h: h2, angle: angle2 };
1215
+ return size;
1216
+ }
1212
1217
  function findElementsFromListByPositions(positions, list) {
1213
1218
  const elements = [];
1214
1219
  positions.forEach((pos) => {
@@ -3675,6 +3680,9 @@ var __privateMethod = (obj, member, method) => {
3675
3680
  }
3676
3681
  });
3677
3682
  _BoardWatcher_onContextMenu.set(this, (e) => {
3683
+ if (e.button !== 2) {
3684
+ return;
3685
+ }
3678
3686
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
3679
3687
  return;
3680
3688
  }
@@ -3683,6 +3691,7 @@ var __privateMethod = (obj, member, method) => {
3683
3691
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isVaildPoint).call(this, point)) {
3684
3692
  return;
3685
3693
  }
3694
+ this.trigger("contextMenu", { point });
3686
3695
  });
3687
3696
  _BoardWatcher_onClick.set(this, (e) => {
3688
3697
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
@@ -3740,6 +3749,9 @@ var __privateMethod = (obj, member, method) => {
3740
3749
  this.trigger("pointMove", { point });
3741
3750
  });
3742
3751
  _BoardWatcher_onPointStart.set(this, (e) => {
3752
+ if (e.button !== 0) {
3753
+ return;
3754
+ }
3743
3755
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
3744
3756
  return;
3745
3757
  }
@@ -4108,7 +4120,7 @@ var __privateMethod = (obj, member, method) => {
4108
4120
  throw new TypeError("Cannot read private member from an object whose class did not declare it");
4109
4121
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
4110
4122
  };
4111
- var _Board_instances, _Board_opts, _Board_middlewareMap, _Board_middlewares, _Board_activeMiddlewareObjs, _Board_watcher, _Board_renderer, _Board_sharer, _Board_viewer, _Board_calculator, _Board_eventHub, _Board_hasDestroyed, _Board_init, _Board_handlePointStart, _Board_handlePointEnd, _Board_handlePointMove, _Board_handleHover, _Board_handleDoubleClick, _Board_handleWheel, _Board_handleWheelScale, _Board_handleScrollX, _Board_handleScrollY, _Board_handleResize, _Board_handleClear, _Board_handleBeforeDrawFrame, _Board_handleAfterDrawFrame, _Board_resetActiveMiddlewareObjs;
4123
+ var _Board_instances, _Board_opts, _Board_middlewareMap, _Board_middlewares, _Board_activeMiddlewareObjs, _Board_watcher, _Board_renderer, _Board_sharer, _Board_viewer, _Board_calculator, _Board_eventHub, _Board_hasDestroyed, _Board_init, _Board_handlePointStart, _Board_handlePointEnd, _Board_handlePointMove, _Board_handleHover, _Board_handleDoubleClick, _Board_handleContextMenu, _Board_handleWheel, _Board_handleWheelScale, _Board_handleScrollX, _Board_handleScrollY, _Board_handleResize, _Board_handleClear, _Board_handleBeforeDrawFrame, _Board_handleAfterDrawFrame, _Board_resetActiveMiddlewareObjs;
4112
4124
  class Board {
4113
4125
  constructor(opts) {
4114
4126
  _Board_instances.add(this);
@@ -4301,6 +4313,7 @@ var __privateMethod = (obj, member, method) => {
4301
4313
  __classPrivateFieldGet(this, _Board_watcher, "f").on("scrollY", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleScrollY).bind(this));
4302
4314
  __classPrivateFieldGet(this, _Board_watcher, "f").on("resize", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleResize).bind(this));
4303
4315
  __classPrivateFieldGet(this, _Board_watcher, "f").on("doubleClick", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleDoubleClick).bind(this));
4316
+ __classPrivateFieldGet(this, _Board_watcher, "f").on("contextMenu", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleContextMenu).bind(this));
4304
4317
  __classPrivateFieldGet(this, _Board_renderer, "f").on("load", () => {
4305
4318
  __classPrivateFieldGet(this, _Board_eventHub, "f").trigger("loadResource");
4306
4319
  });
@@ -4349,6 +4362,15 @@ var __privateMethod = (obj, member, method) => {
4349
4362
  return;
4350
4363
  }
4351
4364
  }
4365
+ }, _Board_handleContextMenu = function _Board_handleContextMenu2(e) {
4366
+ var _a;
4367
+ for (let i = 0; i < __classPrivateFieldGet(this, _Board_activeMiddlewareObjs, "f").length; i++) {
4368
+ const obj = __classPrivateFieldGet(this, _Board_activeMiddlewareObjs, "f")[i];
4369
+ const result = (_a = obj === null || obj === void 0 ? void 0 : obj.contextMenu) === null || _a === void 0 ? void 0 : _a.call(obj, e);
4370
+ if (result === false) {
4371
+ return;
4372
+ }
4373
+ }
4352
4374
  }, _Board_handleWheel = function _Board_handleWheel2(e) {
4353
4375
  var _a;
4354
4376
  for (let i = 0; i < __classPrivateFieldGet(this, _Board_activeMiddlewareObjs, "f").length; i++) {
@@ -4437,6 +4459,36 @@ var __privateMethod = (obj, member, method) => {
4437
4459
  const CURSOR_DRAG_DEFAULT = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAApCAYAAABHomvIAAAEvUlEQVRYhc2Y20/cVRDHP8v+uKzAWkpDCtZq8BYhJkq8PBoJxgj7I2m0ryaSyFN9IT74pI8+8WJiggRj/APApFkSTGRJ+qKGUiyxbGPEWsUSuVhYC12Wy8+HmeMeYPe3d3WSye/k/M7le+bMzJkZ+J9ToEJreGVYN+vihcytstjQocUlAw0WCSoIVCv3Ae8CXwIt+u8XHVeOG8qLqgAHqAFCQCNwGugCthBJGd7S/tM6LqTzHI5KuqzgaoAHgEvAtwrkG2AG8FzXvep5nue67lX9N6P/PR1/SefXlBtkFXKNDUA/RyX1D9uUbYzOb9D1ygbSQU7eDMxhSSsSiVz3AxiJRK57nuf19/fPad8coqONFCBJPyUOIKc1OvcbgiY9ICDT8+0DHge2gR0gBeyTtviM5HeKAGlrrfMZVwhdAVaAr4F3KNF4gkA9cBbowOc68+3LwDn1Mhdy4/OcYk54nPr6+m54nofruvPa9SFQ6wfQTweNgTwInAGuQWk6mEUvHwb+Au4Dexx7ffK9+0q+CHWIBIOZ9skHYKWfK9tQ8gZoLDjIyWCg3ORY+2T8aYOyg4EaRIFrkCs4QU1NTSvabC20zyIDzuyfkYzEahHX8jHwE/LwXwHeJ4P7KIVIu5ouxFDC+HgLAy4MfEF2v1UpgOezATSiNVf6EvAWsD01NXVtdnb2bk9Pz81sp/q3KIi8t83Ae4DX0tJy0z7t8PDwD4FAYIX/WILVwKMAzc3Nu/agoaGhzmg0ugcsV0hIvlSNoH8IuIiebHJycrls4sotwaxGYvueAPAjEg3jum79yMjIr5WUjFLOxMpBIopWoBN4GfhOJ+4NDg4ulVt6i4uLm7r+BvAscA4fCXrAAfJQJ5Fg8gPgMuCMjo62d3V1LW1sbKRKlpXSxMTEmjZ/5qQrOwHwUAGmkIjiHhJdfKrM/Pz8Y+3t7RvT09Ob5QAYi8X2tbmke2cEZwAaCdoAt5QvIzEbiUSitbe3tyoej++UCnBhYSGkzdu6d1aQxkgOkfwgieQMCeCu8iwSnpNKpcIdHR3BZDJ5UCy4SCSyvL6+/giiSou67wE+eYmhAKKkIaAJUdynkdflNcQF3dFTpooxjmg0aozDAz4DXkB8bxPy1OYM7QzIOuAU0AY8pQu9CrwJ3AK8UCj0RyHgZmZmli1w3wOvAM/oHo1kiZiygbSDh7PAE8DzQA/wBqKnnuM4a2NjY7dygbtw4cICRy31deBFJA09o7eWsU7kJ1KTLJmyRyOSn5zS70fAkwBtbW2/DwwMHHR3d9d3dnY2rK6u7o2Pj2/GYrH9eDzurK2tndM1vwI+QXT7T2BTD5skQz6SCyAcLRoZkGEFGQbeRqpbubK+BPA5MI14h00L3I6Cy2h4+eQbJsKuRa6iQcGFFfB5oBt4DpFsI+Ky7iDBxW3gBhBH/GtC+R7i1lKk3UxRAG2QpvxWr0AbtB3SA5jkx36djH/dVlDbyibN3M8GDvJPyI2PSulixm/u6kZ1OQCaJ/S+tndJX6tvsFBIxcCUdA3vW5ubxMrObc0hDMhd/Rqp5QQHxeW8dubnHGM7tzVv/IECMlxQ/bpcRfRMqaNRheNcUGG9XFWDACfzWs/6Fl3t/xtO//8gpbCORQAAAABJRU5ErkJggg==`;
4438
4460
  const CURSOR_DRAG_ACTIVE = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAER0lEQVRYhe2YT2hjRRjAf8lL22xsNsm6EWKrSKvuIkIh+O9QRFxEW18KUsoe7FHoRaWCN1FPetOrIHgVKS0q9P5OxaJbodkalgVrtVZjS7Ntd02z6abPw3yzmaT585q+elj2g2HmvZn35jffN/PNNwP35R6XgM/fuif4n+dO2klQvgsaZRc4NJJvoJbHdhrIAkJAN2ADHwFfAw9J3ZoB/b9I0AA6A0SBc0Aa2EVpSqddeZ+QdmfkO+u0gIPSQQR4HfhRQH4AHMDNZDJXXNd1M5nMFalzdB3wJTAOPAD0yEB9066G6wXepVZTd5MpTdporZ6jVqsatmMJoTR3HvgJQ1u2bS+3ArRte9l1XXdsbGyJo1pdBN6Wf3d3ChlAmSQO9LeC8fquQRpDWaerHWSjSr1iu4BkJyOsF9u2s67rkslkluTVxygltAVsJBZqdCngEj5osIlW+4EYytRNF04jeu3vulCT+7QkLH20dEOhumft97pQI4s3+iiRSPwtxVSbd39J8eEGvzFXc1NAs8KSFAZeBt4AHgNeBFDWObkEAne7HAK2gT2gCFQatdca1GbtBj4E3veFprVYVLXXcg4GqM6588BbAMlkcm1qamqzr6/v6ikBet5RgiizJoDPAXdgYGDZXHkzMzPrrk9CdRWngUeAsxxdCzVwpgZ/BigWiz1mo4mJif7jqMajeJrU5hywgGvAej6fvzA0NLThN1Eul9uT4g5VTbYFNKUIfAbsZ7PZvuHh4Wt+As7Ozu5IcY2j219TQB0NV4A7qODgO4CFhYWLg4ODOb8AHccpG4A68m6pRQ1YAQ6A28A+8BXwBcDq6upTqVTquh+AuVyuW4q/opRRaQdZD1gCbgE3ge+BT4HdfD7/ZDwe/z2bzRY6hRsfH1/e3Nx8FDX/sgbgoZfvg6jo4ixqW7oIPA+8CrwHrAJuJBLJd+JaHMf5k6qmPgGeQe1SCenXk0/U21xcIC8AzwGvAJPAEuAmEon1xcXFba9w8/Pz5oqdB14CnpY+oij35km0qwmjwqAU8ISM9hIwBeQA17KsG9PT07+1gxsZGdmgdqW+BjwLDAAPoo4ALU+W9arVwWoIpXp9kouKZpPAO8AwQCwW+2d0dLQ0OTkZSafT0UKhUJ6bm9t2HKeysrIS3tra0g7+KvABUJC0g5rrJdRcbLpImtleRzYashc1P2OSXwbebDVykX3gW+Ab1AHqhuQ3pe6AJlFMO0CoPROHDcio5I8DL1A9C8dQbmod+APYAK4DvwjQnsDdErgyVTfTEaCG1GFYGHXG7TVSo2OkdvhlAflXoHSuNdfStFqaRhEi2kfdprrj6M5LAt0I8EDaaMdflPal48CB95hMr3Bt8h4jD0kyL5E0pN6dysZzW7N2AqjbmhdIZjJvufTOpE19x3g+9s1XJ/ck5tVbfdhu+rxDfLiSO+lFToCjZwrXyH2/0Lwv95z8B1jAqXmDnj4YAAAAAElFTkSuQmCC`;
4439
4461
  const CURSOR_RESIZE_ROTATE = `data:image/png;base64,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`;
4462
+ const EVENT_KEY_CHANGE = "change";
4463
+ const EVENT_KEY_CURSOR = "cursor";
4464
+ const EVENT_KEY_RULER = "ruler";
4465
+ const EVENT_KEY_SCALE = "scale";
4466
+ const EVENT_KEY_SELECT = "select";
4467
+ const EVENT_KEY_CLEAR_SELECT = "clearSelect";
4468
+ const EVENT_KEY_TEXT_EDIT = "textEdit";
4469
+ const EVENT_KEY_TEXT_CHANGE = "textChange";
4470
+ const EVENT_KEY_CONTEXT_MENU = "contextMenu";
4471
+ const EVENT_KEY_SELECT_IN_GROUP = "selectInGroup";
4472
+ const innerEventKeys = {
4473
+ CURSOR: EVENT_KEY_CURSOR,
4474
+ CHANGE: EVENT_KEY_CHANGE,
4475
+ RULER: EVENT_KEY_RULER,
4476
+ SCALE: EVENT_KEY_SCALE,
4477
+ SELECT: EVENT_KEY_SELECT,
4478
+ CLEAR_SELECT: EVENT_KEY_CLEAR_SELECT,
4479
+ TEXT_EDIT: EVENT_KEY_TEXT_EDIT,
4480
+ TEXT_CHANGE: EVENT_KEY_TEXT_CHANGE,
4481
+ CONTEXT_MENU: EVENT_KEY_CONTEXT_MENU,
4482
+ SELECT_IN_GROUP: EVENT_KEY_SELECT_IN_GROUP,
4483
+ SNAP_TO_GRID: EVENT_KEY_SELECT_IN_GROUP
4484
+ };
4485
+ const coreEventKeys = {};
4486
+ Object.keys(innerEventKeys).forEach((keyName) => {
4487
+ Object.defineProperty(coreEventKeys, keyName, {
4488
+ value: innerEventKeys[keyName],
4489
+ writable: false
4490
+ });
4491
+ });
4440
4492
  class Cursor {
4441
4493
  constructor(container, opts) {
4442
4494
  __privateAdd(this, _init);
@@ -4470,7 +4522,7 @@ var __privateMethod = (obj, member, method) => {
4470
4522
  init_fn = function() {
4471
4523
  const eventHub = __privateGet(this, _eventHub);
4472
4524
  __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "default");
4473
- eventHub.on("cursor", (e) => {
4525
+ eventHub.on(coreEventKeys.CURSOR, (e) => {
4474
4526
  var _a;
4475
4527
  if (e.type === "over-element" || !e.type) {
4476
4528
  __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "auto");
@@ -4578,7 +4630,6 @@ var __privateMethod = (obj, member, method) => {
4578
4630
  }
4579
4631
  return key2;
4580
4632
  };
4581
- const eventChange = "change";
4582
4633
  const key$3 = "SELECT";
4583
4634
  const keyActionType = Symbol(`${key$3}_actionType`);
4584
4635
  const keyResizeType = Symbol(`${key$3}_resizeType`);
@@ -4609,10 +4660,6 @@ var __privateMethod = (obj, member, method) => {
4609
4660
  lockedColor,
4610
4661
  referenceColor
4611
4662
  };
4612
- const middlewareEventSelect = "@middleware/select";
4613
- const middlewareEventSelectClear = "@middleware/select-clear";
4614
- const middlewareEventSelectInGroup = "@middleware/select-in-group";
4615
- const middlewareEventSnapToGrid = "@middleware/snap-to-grid";
4616
4663
  function drawVertexes(ctx, vertexes, opts) {
4617
4664
  const { borderColor: borderColor2, borderWidth: borderWidth2, background: background2, lineDash } = opts;
4618
4665
  ctx.setLineDash([]);
@@ -4722,7 +4769,7 @@ var __privateMethod = (obj, member, method) => {
4722
4769
  const wrapperOpts = { borderColor: activeColor2, borderWidth: 1, background: "transparent", lineDash: [] };
4723
4770
  drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
4724
4771
  }
4725
- function drawLockVertexesWrapper(ctx, vertexes, opts) {
4772
+ function drawLockedVertexesWrapper(ctx, vertexes, opts) {
4726
4773
  if (!vertexes) {
4727
4774
  return;
4728
4775
  }
@@ -5502,10 +5549,10 @@ var __privateMethod = (obj, member, method) => {
5502
5549
  const endY = Math.max(start.y, end.y);
5503
5550
  for (let idx = 0; idx < data.elements.length; idx++) {
5504
5551
  const elem = data.elements[idx];
5505
- if (((_a = elem == null ? void 0 : elem.operations) == null ? void 0 : _a.lock) === true) {
5552
+ if (((_a = elem == null ? void 0 : elem.operations) == null ? void 0 : _a.locked) === true) {
5506
5553
  continue;
5507
5554
  }
5508
- const elemSize = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo });
5555
+ const elemSize = calcViewElementSize(elem, { viewScaleInfo });
5509
5556
  const center = calcElementCenter(elemSize);
5510
5557
  if (center.x >= startX && center.x <= endX && center.y >= startY && center.y <= endY) {
5511
5558
  indexes.push(idx);
@@ -5532,14 +5579,14 @@ var __privateMethod = (obj, member, method) => {
5532
5579
  return null;
5533
5580
  }
5534
5581
  const area = { x: 0, y: 0, w: 0, h: 0 };
5535
- const { viewScaleInfo, viewSizeInfo } = opts;
5582
+ const { viewScaleInfo } = opts;
5536
5583
  let prevElemSize = null;
5537
5584
  for (let i = 0; i < elements.length; i++) {
5538
5585
  const elem = elements[i];
5539
5586
  if ((_a = elem == null ? void 0 : elem.operations) == null ? void 0 : _a.invisible) {
5540
5587
  continue;
5541
5588
  }
5542
- const elemSize = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo });
5589
+ const elemSize = calcViewElementSize(elem, { viewScaleInfo });
5543
5590
  if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
5544
5591
  const ves = rotateElementVertexes(elemSize);
5545
5592
  if (ves.length === 4) {
@@ -5867,228 +5914,6 @@ var __privateMethod = (obj, member, method) => {
5867
5914
  xLines
5868
5915
  };
5869
5916
  }
5870
- const middlewareEventTextEdit = "@middleware/text-edit";
5871
- const middlewareEventTextChange = "@middleware/text-change";
5872
- const defaultElementDetail = getDefaultElementDetailConfig();
5873
- const MiddlewareTextEditor = (opts) => {
5874
- const { eventHub, boardContent, viewer, sharer } = opts;
5875
- const canvas = boardContent.boardContext.canvas;
5876
- const textarea = document.createElement("div");
5877
- textarea.setAttribute("contenteditable", "true");
5878
- const canvasWrapper = document.createElement("div");
5879
- const container = opts.container || document.body;
5880
- const mask = document.createElement("div");
5881
- let activeElem = null;
5882
- let activePosition = [];
5883
- canvasWrapper.appendChild(textarea);
5884
- canvasWrapper.style.position = "absolute";
5885
- mask.appendChild(canvasWrapper);
5886
- mask.style.position = "fixed";
5887
- mask.style.top = "0";
5888
- mask.style.bottom = "0";
5889
- mask.style.left = "0";
5890
- mask.style.right = "0";
5891
- mask.style.display = "none";
5892
- container.appendChild(mask);
5893
- const showTextArea = (e) => {
5894
- resetCanvasWrapper();
5895
- resetTextArea(e);
5896
- mask.style.display = "block";
5897
- if (activeElem == null ? void 0 : activeElem.uuid) {
5898
- sharer.setActiveOverrideElemenentMap({
5899
- [activeElem.uuid]: {
5900
- operations: { invisible: true }
5901
- }
5902
- });
5903
- viewer.drawFrame();
5904
- }
5905
- };
5906
- const hideTextArea = () => {
5907
- if (activeElem == null ? void 0 : activeElem.uuid) {
5908
- const map = sharer.getActiveOverrideElemenentMap();
5909
- if (map) {
5910
- delete map[activeElem.uuid];
5911
- }
5912
- sharer.setActiveOverrideElemenentMap(map);
5913
- viewer.drawFrame();
5914
- }
5915
- mask.style.display = "none";
5916
- activeElem = null;
5917
- activePosition = [];
5918
- };
5919
- const getCanvasRect = () => {
5920
- const clientRect = canvas.getBoundingClientRect();
5921
- const { left, top, width, height } = clientRect;
5922
- return { left, top, width, height };
5923
- };
5924
- const createBox = (opts2) => {
5925
- const { size, parent } = opts2;
5926
- const div = document.createElement("div");
5927
- const { x: x2, y: y2, w: w2, h: h2 } = size;
5928
- const angle2 = limitAngle(size.angle || 0);
5929
- div.style.position = "absolute";
5930
- div.style.left = `${x2}px`;
5931
- div.style.top = `${y2}px`;
5932
- div.style.width = `${w2}px`;
5933
- div.style.height = `${h2}px`;
5934
- div.style.transform = `rotate(${angle2}deg)`;
5935
- parent.appendChild(div);
5936
- return div;
5937
- };
5938
- const resetTextArea = (e) => {
5939
- const { viewScaleInfo, element, groupQueue } = e;
5940
- const { scale, offsetTop, offsetLeft } = viewScaleInfo;
5941
- if (canvasWrapper.children) {
5942
- Array.from(canvasWrapper.children).forEach((child) => {
5943
- child.remove();
5944
- });
5945
- }
5946
- let parent = canvasWrapper;
5947
- for (let i = 0; i < groupQueue.length; i++) {
5948
- const group = groupQueue[i];
5949
- const { x: x2, y: y2, w: w2, h: h2 } = group;
5950
- const angle2 = limitAngle(group.angle || 0);
5951
- const size = {
5952
- x: x2 * scale,
5953
- y: y2 * scale,
5954
- w: w2 * scale,
5955
- h: h2 * scale,
5956
- angle: angle2
5957
- };
5958
- if (i === 0) {
5959
- size.x += offsetLeft;
5960
- size.y += offsetTop;
5961
- }
5962
- parent = createBox({ size, parent });
5963
- }
5964
- const detail = {
5965
- ...defaultElementDetail,
5966
- ...element.detail
5967
- };
5968
- let elemX = element.x * scale + offsetLeft;
5969
- let elemY = element.y * scale + offsetTop;
5970
- let elemW = element.w * scale;
5971
- let elemH = element.h * scale;
5972
- if (groupQueue.length > 0) {
5973
- elemX = element.x * scale;
5974
- elemY = element.y * scale;
5975
- elemW = element.w * scale;
5976
- elemH = element.h * scale;
5977
- }
5978
- let justifyContent = "center";
5979
- let alignItems = "center";
5980
- if (detail.textAlign === "left") {
5981
- justifyContent = "start";
5982
- } else if (detail.textAlign === "right") {
5983
- justifyContent = "end";
5984
- }
5985
- if (detail.verticalAlign === "top") {
5986
- alignItems = "start";
5987
- } else if (detail.verticalAlign === "bottom") {
5988
- alignItems = "end";
5989
- }
5990
- textarea.style.display = "inline-flex";
5991
- textarea.style.justifyContent = justifyContent;
5992
- textarea.style.alignItems = alignItems;
5993
- textarea.style.position = "absolute";
5994
- textarea.style.left = `${elemX - 1}px`;
5995
- textarea.style.top = `${elemY - 1}px`;
5996
- textarea.style.width = `${elemW + 2}px`;
5997
- textarea.style.height = `${elemH + 2}px`;
5998
- textarea.style.transform = `rotate(${limitAngle(element.angle || 0)}deg)`;
5999
- textarea.style.boxSizing = "border-box";
6000
- textarea.style.border = "1px solid #1973ba";
6001
- textarea.style.resize = "none";
6002
- textarea.style.overflow = "hidden";
6003
- textarea.style.wordBreak = "break-all";
6004
- textarea.style.borderRadius = `${(typeof detail.borderRadius === "number" ? detail.borderRadius : 0) * scale}px`;
6005
- textarea.style.background = `${detail.background || "transparent"}`;
6006
- textarea.style.color = `${detail.color || "#333333"}`;
6007
- textarea.style.fontSize = `${detail.fontSize * scale}px`;
6008
- textarea.style.lineHeight = `${(detail.lineHeight || detail.fontSize) * scale}px`;
6009
- textarea.style.fontFamily = enhanceFontFamliy(detail.fontFamily);
6010
- textarea.style.fontWeight = `${detail.fontWeight}`;
6011
- textarea.style.padding = "0";
6012
- textarea.style.margin = "0";
6013
- textarea.style.outline = "none";
6014
- textarea.innerText = detail.text || "";
6015
- parent.appendChild(textarea);
6016
- };
6017
- const resetCanvasWrapper = () => {
6018
- const { left, top, width, height } = getCanvasRect();
6019
- canvasWrapper.style.position = "absolute";
6020
- canvasWrapper.style.overflow = "hidden";
6021
- canvasWrapper.style.top = `${top}px`;
6022
- canvasWrapper.style.left = `${left}px`;
6023
- canvasWrapper.style.width = `${width}px`;
6024
- canvasWrapper.style.height = `${height}px`;
6025
- };
6026
- mask.addEventListener("click", () => {
6027
- hideTextArea();
6028
- });
6029
- textarea.addEventListener("click", (e) => {
6030
- e.stopPropagation();
6031
- });
6032
- textarea.addEventListener("input", () => {
6033
- if (activeElem && activePosition) {
6034
- activeElem.detail.text = textarea.innerText || "";
6035
- eventHub.trigger(middlewareEventTextChange, {
6036
- element: {
6037
- uuid: activeElem.uuid,
6038
- detail: {
6039
- text: activeElem.detail.text
6040
- }
6041
- },
6042
- position: [...activePosition || []]
6043
- });
6044
- viewer.drawFrame();
6045
- }
6046
- });
6047
- textarea.addEventListener("blur", () => {
6048
- if (activeElem && activePosition) {
6049
- eventHub.trigger(middlewareEventTextChange, {
6050
- element: {
6051
- uuid: activeElem.uuid,
6052
- detail: {
6053
- text: activeElem.detail.text
6054
- }
6055
- },
6056
- position: [...activePosition]
6057
- });
6058
- }
6059
- hideTextArea();
6060
- });
6061
- textarea.addEventListener("keydown", (e) => {
6062
- e.stopPropagation();
6063
- });
6064
- textarea.addEventListener("keypress", (e) => {
6065
- e.stopPropagation();
6066
- });
6067
- textarea.addEventListener("keyup", (e) => {
6068
- e.stopPropagation();
6069
- });
6070
- textarea.addEventListener("wheel", (e) => {
6071
- e.stopPropagation();
6072
- e.preventDefault();
6073
- });
6074
- const textEditCallback = (e) => {
6075
- var _a;
6076
- if ((e == null ? void 0 : e.position) && (e == null ? void 0 : e.element) && ((_a = e == null ? void 0 : e.element) == null ? void 0 : _a.type) === "text") {
6077
- activeElem = e.element;
6078
- activePosition = e.position;
6079
- }
6080
- showTextArea(e);
6081
- };
6082
- return {
6083
- name: "@middleware/text-editor",
6084
- use() {
6085
- eventHub.on(middlewareEventTextEdit, textEditCallback);
6086
- },
6087
- disuse() {
6088
- eventHub.off(middlewareEventTextEdit, textEditCallback);
6089
- }
6090
- };
6091
- };
6092
5917
  const key$2 = "LAYOUT_SELECT";
6093
5918
  const keyLayoutActionType = Symbol(`${key$2}_layoutActionType`);
6094
5919
  const keyLayoutControlType = Symbol(`${key$2}_layoutControlType`);
@@ -6255,7 +6080,7 @@ var __privateMethod = (obj, member, method) => {
6255
6080
  }
6256
6081
  if (layoutControlType) {
6257
6082
  sharer.setSharedStorage(keyLayoutControlType, layoutControlType);
6258
- eventHub.trigger(middlewareEventSelectClear, {});
6083
+ eventHub.trigger(coreEventKeys.CLEAR_SELECT);
6259
6084
  return layoutControlType;
6260
6085
  }
6261
6086
  }
@@ -6266,7 +6091,7 @@ var __privateMethod = (obj, member, method) => {
6266
6091
  if (isBusy === true) {
6267
6092
  return;
6268
6093
  }
6269
- eventHub.trigger("cursor", {
6094
+ eventHub.trigger(coreEventKeys.CURSOR, {
6270
6095
  type: controlType ? `resize-${controlType}` : controlType,
6271
6096
  groupQueue: [],
6272
6097
  element: getLayoutSize()
@@ -6440,7 +6265,7 @@ var __privateMethod = (obj, member, method) => {
6440
6265
  const layoutControlType = sharer.getSharedStorage(keyLayoutControlType);
6441
6266
  const data = sharer.getActiveStorage("data");
6442
6267
  if (data && layoutActionType === "resize" && layoutControlType) {
6443
- eventHub.trigger(eventChange, {
6268
+ eventHub.trigger(coreEventKeys.CHANGE, {
6444
6269
  type: "changeLayout",
6445
6270
  data
6446
6271
  });
@@ -6490,6 +6315,8 @@ var __privateMethod = (obj, member, method) => {
6490
6315
  const { viewer, sharer, boardContent, calculator, eventHub } = opts;
6491
6316
  const { overlayContext } = boardContent;
6492
6317
  let prevPoint = null;
6318
+ let moveOriginalStartPoint = null;
6319
+ let moveOriginalStartElementSize = null;
6493
6320
  let inBusyMode = null;
6494
6321
  sharer.setSharedStorage(keyActionType, null);
6495
6322
  sharer.setSharedStorage(keyEnableSnapToGrid, true);
@@ -6541,7 +6368,7 @@ var __privateMethod = (obj, member, method) => {
6541
6368
  sharer.setSharedStorage(keySelectedElementPosition, []);
6542
6369
  }
6543
6370
  if ((opts2 == null ? void 0 : opts2.triggerEvent) === true) {
6544
- eventHub.trigger(middlewareEventSelect, { uuids: list.map((elem) => elem.uuid) });
6371
+ eventHub.trigger(coreEventKeys.SELECT, { uuids: list.map((elem) => elem.uuid), positions: [] });
6545
6372
  }
6546
6373
  };
6547
6374
  const pointTargetBaseOptions = () => {
@@ -6574,7 +6401,7 @@ var __privateMethod = (obj, member, method) => {
6574
6401
  sharer.setSharedStorage(keyIsMoving, null);
6575
6402
  };
6576
6403
  clear();
6577
- const selectCallback = ({ uuids, positions }) => {
6404
+ const selectCallback = ({ uuids = [], positions }) => {
6578
6405
  let elements = [];
6579
6406
  const actionType = sharer.getSharedStorage(keyActionType);
6580
6407
  const data = sharer.getActiveStorage("data");
@@ -6611,16 +6438,16 @@ var __privateMethod = (obj, member, method) => {
6611
6438
  return {
6612
6439
  name: "@middleware/selector",
6613
6440
  use() {
6614
- eventHub.on(middlewareEventSelect, selectCallback);
6615
- eventHub.on(middlewareEventSelectClear, selectClearCallback);
6616
- eventHub.on(middlewareEventSelectInGroup, selectInGroupCallback);
6617
- eventHub.on(middlewareEventSnapToGrid, setSnapToSnapCallback);
6441
+ eventHub.on(coreEventKeys.SELECT, selectCallback);
6442
+ eventHub.on(coreEventKeys.CLEAR_SELECT, selectClearCallback);
6443
+ eventHub.on(coreEventKeys.SELECT_IN_GROUP, selectInGroupCallback);
6444
+ eventHub.on(coreEventKeys.SNAP_TO_GRID, setSnapToSnapCallback);
6618
6445
  },
6619
6446
  disuse() {
6620
- eventHub.off(middlewareEventSelect, selectCallback);
6621
- eventHub.off(middlewareEventSelectClear, selectClearCallback);
6622
- eventHub.off(middlewareEventSelectInGroup, selectInGroupCallback);
6623
- eventHub.off(middlewareEventSnapToGrid, setSnapToSnapCallback);
6447
+ eventHub.off(coreEventKeys.SELECT, selectCallback);
6448
+ eventHub.off(coreEventKeys.CLEAR_SELECT, selectClearCallback);
6449
+ eventHub.off(coreEventKeys.SELECT_IN_GROUP, selectInGroupCallback);
6450
+ eventHub.off(coreEventKeys.SNAP_TO_GRID, setSnapToSnapCallback);
6624
6451
  },
6625
6452
  hover: (e) => {
6626
6453
  var _a, _b, _c, _d, _e;
@@ -6634,7 +6461,7 @@ var __privateMethod = (obj, member, method) => {
6634
6461
  }
6635
6462
  const cursor = target2.type;
6636
6463
  if (inBusyMode === null) {
6637
- eventHub.trigger("cursor", {
6464
+ eventHub.trigger(coreEventKeys.CURSOR, {
6638
6465
  type: cursor,
6639
6466
  groupQueue: target2.groupQueue,
6640
6467
  element: target2.elements[0]
@@ -6715,8 +6542,9 @@ var __privateMethod = (obj, member, method) => {
6715
6542
  }
6716
6543
  },
6717
6544
  pointStart: (e) => {
6718
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
6545
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
6719
6546
  prevPoint = e.point;
6547
+ moveOriginalStartPoint = e.point;
6720
6548
  const groupQueue = sharer.getSharedStorage(keyGroupQueue);
6721
6549
  if ((groupQueue == null ? void 0 : groupQueue.length) > 0) {
6722
6550
  if (isPointInViewActiveGroup(e.point, {
@@ -6726,15 +6554,17 @@ var __privateMethod = (obj, member, method) => {
6726
6554
  groupQueue
6727
6555
  })) {
6728
6556
  const target2 = getPointTarget(e.point, pointTargetBaseOptions());
6729
- if (((_a = target2 == null ? void 0 : target2.elements) == null ? void 0 : _a.length) === 1 && ((_c = (_b = target2.elements[0]) == null ? void 0 : _b.operations) == null ? void 0 : _c.lock) === true) {
6730
- return;
6731
- } else {
6732
- updateHoverElement(null);
6557
+ const isLockedElement2 = ((_a = target2 == null ? void 0 : target2.elements) == null ? void 0 : _a.length) === 1 && ((_c = (_b = target2.elements[0]) == null ? void 0 : _b.operations) == null ? void 0 : _c.locked) === true;
6558
+ updateHoverElement(null);
6559
+ if (((_d = target2 == null ? void 0 : target2.elements) == null ? void 0 : _d.length) === 1) {
6560
+ moveOriginalStartElementSize = getElementSize(target2 == null ? void 0 : target2.elements[0]);
6733
6561
  }
6734
- if (target2.type === "over-element" && ((_d = target2 == null ? void 0 : target2.elements) == null ? void 0 : _d.length) === 1) {
6562
+ if (isLockedElement2 === true) {
6563
+ clear();
6564
+ } else if (target2.type === "over-element" && ((_e = target2 == null ? void 0 : target2.elements) == null ? void 0 : _e.length) === 1) {
6735
6565
  updateSelectedElementList([target2.elements[0]], { triggerEvent: true });
6736
6566
  sharer.setSharedStorage(keyActionType, "drag");
6737
- } else if ((_e = target2.type) == null ? void 0 : _e.startsWith("resize-")) {
6567
+ } else if ((_f = target2.type) == null ? void 0 : _f.startsWith("resize-")) {
6738
6568
  sharer.setSharedStorage(keyResizeType, target2.type);
6739
6569
  sharer.setSharedStorage(keyActionType, "resize");
6740
6570
  } else {
@@ -6756,17 +6586,22 @@ var __privateMethod = (obj, member, method) => {
6756
6586
  areaSize: listAreaSize,
6757
6587
  groupQueue: []
6758
6588
  });
6759
- if (((_f = target == null ? void 0 : target.elements) == null ? void 0 : _f.length) === 1 && ((_h = (_g = target.elements[0]) == null ? void 0 : _g.operations) == null ? void 0 : _h.lock) === true) {
6760
- return;
6761
- } else {
6762
- updateHoverElement(null);
6589
+ const isLockedElement = ((_g = target == null ? void 0 : target.elements) == null ? void 0 : _g.length) === 1 && ((_i = (_h = target.elements[0]) == null ? void 0 : _h.operations) == null ? void 0 : _i.locked) === true;
6590
+ updateHoverElement(null);
6591
+ if (((_j = target == null ? void 0 : target.elements) == null ? void 0 : _j.length) === 1) {
6592
+ moveOriginalStartElementSize = getElementSize(target == null ? void 0 : target.elements[0]);
6763
6593
  }
6764
- if (target.type === "list-area") {
6594
+ if (isLockedElement === true) {
6595
+ clear();
6596
+ sharer.setSharedStorage(keyActionType, "area");
6597
+ sharer.setSharedStorage(keyAreaStart, e.point);
6598
+ updateSelectedElementList([], { triggerEvent: true });
6599
+ } else if (target.type === "list-area") {
6765
6600
  sharer.setSharedStorage(keyActionType, "drag-list");
6766
- } else if (target.type === "over-element" && ((_i = target == null ? void 0 : target.elements) == null ? void 0 : _i.length) === 1) {
6601
+ } else if (target.type === "over-element" && ((_k = target == null ? void 0 : target.elements) == null ? void 0 : _k.length) === 1) {
6767
6602
  updateSelectedElementList([target.elements[0]], { triggerEvent: true });
6768
6603
  sharer.setSharedStorage(keyActionType, "drag");
6769
- } else if ((_j = target.type) == null ? void 0 : _j.startsWith("resize-")) {
6604
+ } else if ((_l = target.type) == null ? void 0 : _l.startsWith("resize-")) {
6770
6605
  sharer.setSharedStorage(keyResizeType, target.type);
6771
6606
  sharer.setSharedStorage(keyActionType, "resize");
6772
6607
  } else {
@@ -6786,6 +6621,7 @@ var __privateMethod = (obj, member, method) => {
6786
6621
  const viewScaleInfo = sharer.getActiveViewScaleInfo();
6787
6622
  const viewSizeInfo = sharer.getActiveViewSizeInfo();
6788
6623
  const start = prevPoint;
6624
+ const originalStart = moveOriginalStartPoint;
6789
6625
  const end = e.point;
6790
6626
  const resizeType = sharer.getSharedStorage(keyResizeType);
6791
6627
  const actionType = sharer.getSharedStorage(keyActionType);
@@ -6793,8 +6629,8 @@ var __privateMethod = (obj, member, method) => {
6793
6629
  const enableSnapToGrid = sharer.getSharedStorage(keyEnableSnapToGrid);
6794
6630
  if (actionType === "drag") {
6795
6631
  inBusyMode = "drag";
6796
- if (data && (elems == null ? void 0 : elems.length) === 1 && start && end && ((_b = (_a = elems[0]) == null ? void 0 : _a.operations) == null ? void 0 : _b.lock) !== true) {
6797
- const { moveX, moveY } = calcMoveInGroup(start, end, groupQueue);
6632
+ if (data && (elems == null ? void 0 : elems.length) === 1 && moveOriginalStartElementSize && originalStart && end && ((_b = (_a = elems[0]) == null ? void 0 : _a.operations) == null ? void 0 : _b.locked) !== true) {
6633
+ const { moveX, moveY } = calcMoveInGroup(originalStart, end, groupQueue);
6798
6634
  let totalMoveX = calculator.toGridNum(moveX / scale);
6799
6635
  let totalMoveY = calculator.toGridNum(moveY / scale);
6800
6636
  if (enableSnapToGrid === true) {
@@ -6818,8 +6654,8 @@ var __privateMethod = (obj, member, method) => {
6818
6654
  console.error(err);
6819
6655
  }
6820
6656
  }
6821
- elems[0].x = calculator.toGridNum(elems[0].x + totalMoveX);
6822
- elems[0].y = calculator.toGridNum(elems[0].y + totalMoveY);
6657
+ elems[0].x = calculator.toGridNum(moveOriginalStartElementSize.x + totalMoveX);
6658
+ elems[0].y = calculator.toGridNum(moveOriginalStartElementSize.y + totalMoveY);
6823
6659
  updateSelectedElementList([elems[0]]);
6824
6660
  calculator.modifyViewVisibleInfoMap(data, {
6825
6661
  modifyOptions: {
@@ -6836,12 +6672,12 @@ var __privateMethod = (obj, member, method) => {
6836
6672
  viewer.drawFrame();
6837
6673
  } else if (actionType === "drag-list") {
6838
6674
  inBusyMode = "drag-list";
6839
- if (data && start && end && (elems == null ? void 0 : elems.length) > 1) {
6675
+ if (data && originalStart && start && end && (elems == null ? void 0 : elems.length) > 1) {
6840
6676
  const moveX = (end.x - start.x) / scale;
6841
6677
  const moveY = (end.y - start.y) / scale;
6842
6678
  elems.forEach((elem) => {
6843
6679
  var _a2;
6844
- if (elem && ((_a2 = elem == null ? void 0 : elem.operations) == null ? void 0 : _a2.lock) !== true) {
6680
+ if (elem && ((_a2 = elem == null ? void 0 : elem.operations) == null ? void 0 : _a2.locked) !== true) {
6845
6681
  elem.x = calculator.toGridNum(elem.x + moveX);
6846
6682
  elem.y = calculator.toGridNum(elem.y + moveY);
6847
6683
  calculator.modifyViewVisibleInfoMap(data, {
@@ -6861,7 +6697,7 @@ var __privateMethod = (obj, member, method) => {
6861
6697
  }
6862
6698
  viewer.drawFrame();
6863
6699
  } else if (actionType === "resize") {
6864
- if (data && (elems == null ? void 0 : elems.length) === 1 && start && (resizeType == null ? void 0 : resizeType.startsWith("resize-"))) {
6700
+ if (data && (elems == null ? void 0 : elems.length) === 1 && originalStart && moveOriginalStartElementSize && (resizeType == null ? void 0 : resizeType.startsWith("resize-"))) {
6865
6701
  inBusyMode = "resize";
6866
6702
  const pointGroupQueue = [];
6867
6703
  groupQueue.forEach((group) => {
@@ -6874,10 +6710,10 @@ var __privateMethod = (obj, member, method) => {
6874
6710
  angle: 0 - angle2
6875
6711
  });
6876
6712
  });
6877
- let resizeStart = start;
6713
+ let resizeStart = originalStart;
6878
6714
  let resizeEnd = end;
6879
6715
  if (groupQueue.length > 0) {
6880
- resizeStart = rotatePointInGroup(start, pointGroupQueue);
6716
+ resizeStart = rotatePointInGroup(originalStart, pointGroupQueue);
6881
6717
  resizeEnd = rotatePointInGroup(end, pointGroupQueue);
6882
6718
  }
6883
6719
  if (resizeType === "resize-rotate") {
@@ -6889,19 +6725,19 @@ var __privateMethod = (obj, member, method) => {
6889
6725
  controller.bottomRight.center
6890
6726
  ];
6891
6727
  const viewCenter = calcElementCenterFromVertexes(viewVertexes);
6892
- const resizedElemSize = rotateElement(elems[0], {
6728
+ const resizedElemSize = rotateElement(moveOriginalStartElementSize, {
6893
6729
  center: viewCenter,
6894
6730
  viewScaleInfo,
6895
6731
  viewSizeInfo,
6896
- start,
6732
+ start: originalStart,
6897
6733
  end,
6898
6734
  resizeType,
6899
6735
  sharer
6900
6736
  });
6901
6737
  elems[0].angle = calculator.toGridNum(resizedElemSize.angle || 0);
6902
6738
  } else {
6903
- const resizedElemSize = resizeElement(elems[0], { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
6904
- const calcOpts = { ignore: !!elems[0].angle };
6739
+ const resizedElemSize = resizeElement(moveOriginalStartElementSize, { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
6740
+ const calcOpts = { ignore: !!moveOriginalStartElementSize.angle };
6905
6741
  elems[0].x = calculator.toGridNum(resizedElemSize.x, calcOpts);
6906
6742
  elems[0].y = calculator.toGridNum(resizedElemSize.y, calcOpts);
6907
6743
  if (elems[0].type === "group" && ((_c = elems[0].operations) == null ? void 0 : _c.deepResize) === true) {
@@ -6946,6 +6782,8 @@ var __privateMethod = (obj, member, method) => {
6946
6782
  const viewSizeInfo = sharer.getActiveViewSizeInfo();
6947
6783
  let needDrawFrame = false;
6948
6784
  prevPoint = null;
6785
+ moveOriginalStartPoint = null;
6786
+ moveOriginalStartElementSize = null;
6949
6787
  if (actionType === "resize" && resizeType) {
6950
6788
  sharer.setSharedStorage(keyResizeType, null);
6951
6789
  needDrawFrame = true;
@@ -7000,7 +6838,7 @@ var __privateMethod = (obj, member, method) => {
7000
6838
  }
7001
6839
  if (data && ["drag", "drag-list", "drag-list-end", "resize"].includes(actionType)) {
7002
6840
  let type = "dragElement";
7003
- eventHub.trigger(eventChange, { data, type, selectedElements, hoverElement });
6841
+ eventHub.trigger(coreEventKeys.CHANGE, { data, type, selectedElements, hoverElement });
7004
6842
  }
7005
6843
  viewer.drawFrame();
7006
6844
  };
@@ -7008,6 +6846,8 @@ var __privateMethod = (obj, member, method) => {
7008
6846
  },
7009
6847
  pointLeave() {
7010
6848
  prevPoint = null;
6849
+ moveOriginalStartPoint = null;
6850
+ moveOriginalStartElementSize = null;
7011
6851
  clear();
7012
6852
  viewer.drawFrame();
7013
6853
  },
@@ -7019,7 +6859,7 @@ var __privateMethod = (obj, member, method) => {
7019
6859
  const target = getPointTarget(e.point, pointTargetBaseOptions());
7020
6860
  sharer.setSharedStorage(keySelectedElementController, null);
7021
6861
  sharer.setSharedStorage(keySelectedElementList, []);
7022
- if (target.elements.length === 1 && ((_b = (_a = target.elements[0]) == null ? void 0 : _a.operations) == null ? void 0 : _b.lock) === true) {
6862
+ if (target.elements.length === 1 && ((_b = (_a = target.elements[0]) == null ? void 0 : _a.operations) == null ? void 0 : _b.locked) === true) {
7023
6863
  return;
7024
6864
  }
7025
6865
  if (target.elements.length === 1 && ((_c = target.elements[0]) == null ? void 0 : _c.type) === "group") {
@@ -7030,7 +6870,7 @@ var __privateMethod = (obj, member, method) => {
7030
6870
  return;
7031
6871
  }
7032
6872
  } else if (target.elements.length === 1 && ((_d = target.elements[0]) == null ? void 0 : _d.type) === "text" && !((_f = (_e = target.elements[0]) == null ? void 0 : _e.operations) == null ? void 0 : _f.invisible)) {
7033
- eventHub.trigger(middlewareEventTextEdit, {
6873
+ eventHub.trigger(coreEventKeys.TEXT_EDIT, {
7034
6874
  element: target.elements[0],
7035
6875
  groupQueue: sharer.getSharedStorage(keyGroupQueue) || [],
7036
6876
  position: getElementPositionFromList((_g = target.elements[0]) == null ? void 0 : _g.uuid, ((_h = sharer.getActiveStorage("data")) == null ? void 0 : _h.elements) || []),
@@ -7039,19 +6879,59 @@ var __privateMethod = (obj, member, method) => {
7039
6879
  }
7040
6880
  sharer.setSharedStorage(keyActionType, null);
7041
6881
  },
7042
- beforeDrawFrame({ snapshot }) {
7043
- var _a;
7044
- const { activeStore, sharedStore } = snapshot;
7045
- const { scale, offsetLeft, offsetTop, offsetRight, offsetBottom, width, height, contextHeight, contextWidth, devicePixelRatio } = activeStore;
7046
- const sharer2 = opts.sharer;
7047
- const viewScaleInfo = { scale, offsetLeft, offsetTop, offsetRight, offsetBottom };
7048
- const viewSizeInfo = { width, height, contextHeight, contextWidth, devicePixelRatio };
7049
- const selectedElements = sharedStore[keySelectedElementList];
7050
- const elem = selectedElements[0];
7051
- const hoverElement = sharedStore[keyHoverElement];
7052
- const hoverElementVertexes = sharedStore[keyHoverElementVertexes];
7053
- const actionType = sharedStore[keyActionType];
7054
- const areaStart = sharedStore[keyAreaStart];
6882
+ contextMenu: (e) => {
6883
+ var _a, _b, _c, _d, _e, _f, _g, _h;
6884
+ const groupQueue = sharer.getSharedStorage(keyGroupQueue);
6885
+ if ((groupQueue == null ? void 0 : groupQueue.length) > 0) {
6886
+ if (isPointInViewActiveGroup(e.point, {
6887
+ ctx: overlayContext,
6888
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
6889
+ viewSizeInfo: sharer.getActiveViewSizeInfo(),
6890
+ groupQueue
6891
+ })) {
6892
+ const target2 = getPointTarget(e.point, pointTargetBaseOptions());
6893
+ if (((_a = target2 == null ? void 0 : target2.elements) == null ? void 0 : _a.length) === 1 && ((_c = (_b = target2.elements[0]) == null ? void 0 : _b.operations) == null ? void 0 : _c.locked) !== true) {
6894
+ clear();
6895
+ updateSelectedElementList([target2.elements[0]], { triggerEvent: true });
6896
+ viewer.drawFrame();
6897
+ } else if (!((_d = target2 == null ? void 0 : target2.elements) == null ? void 0 : _d.length)) {
6898
+ clear();
6899
+ }
6900
+ }
6901
+ return;
6902
+ }
6903
+ const listAreaSize = calcSelectedElementsArea(getActiveElements(), {
6904
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
6905
+ viewSizeInfo: sharer.getActiveViewSizeInfo(),
6906
+ calculator
6907
+ });
6908
+ const target = getPointTarget(e.point, {
6909
+ ...pointTargetBaseOptions(),
6910
+ areaSize: listAreaSize,
6911
+ groupQueue: []
6912
+ });
6913
+ if (((_e = target == null ? void 0 : target.elements) == null ? void 0 : _e.length) === 1 && ((_g = (_f = target.elements[0]) == null ? void 0 : _f.operations) == null ? void 0 : _g.locked) !== true) {
6914
+ clear();
6915
+ updateSelectedElementList([target.elements[0]], { triggerEvent: true });
6916
+ viewer.drawFrame();
6917
+ return;
6918
+ } else if (!((_h = target == null ? void 0 : target.elements) == null ? void 0 : _h.length)) {
6919
+ clear();
6920
+ }
6921
+ },
6922
+ beforeDrawFrame({ snapshot }) {
6923
+ var _a;
6924
+ const { activeStore, sharedStore } = snapshot;
6925
+ const { scale, offsetLeft, offsetTop, offsetRight, offsetBottom, width, height, contextHeight, contextWidth, devicePixelRatio } = activeStore;
6926
+ const sharer2 = opts.sharer;
6927
+ const viewScaleInfo = { scale, offsetLeft, offsetTop, offsetRight, offsetBottom };
6928
+ const viewSizeInfo = { width, height, contextHeight, contextWidth, devicePixelRatio };
6929
+ const selectedElements = sharedStore[keySelectedElementList];
6930
+ const elem = selectedElements[0];
6931
+ const hoverElement = sharedStore[keyHoverElement];
6932
+ const hoverElementVertexes = sharedStore[keyHoverElementVertexes];
6933
+ const actionType = sharedStore[keyActionType];
6934
+ const areaStart = sharedStore[keyAreaStart];
7055
6935
  const areaEnd = sharedStore[keyAreaEnd];
7056
6936
  const groupQueue = sharedStore[keyGroupQueue];
7057
6937
  const groupQueueVertexesList = sharedStore[keyGroupQueueVertexesList];
@@ -7063,12 +6943,12 @@ var __privateMethod = (obj, member, method) => {
7063
6943
  controllerSize: 10,
7064
6944
  viewScaleInfo
7065
6945
  }) : null;
7066
- const isLock = !!((_a = hoverElement == null ? void 0 : hoverElement.operations) == null ? void 0 : _a.lock);
6946
+ const isHoverLocked = !!((_a = hoverElement == null ? void 0 : hoverElement.operations) == null ? void 0 : _a.locked);
7067
6947
  if ((groupQueue == null ? void 0 : groupQueue.length) > 0) {
7068
6948
  drawGroupQueueVertexesWrappers(overlayContext, groupQueueVertexesList, drawBaseOpts);
7069
6949
  if (hoverElement && actionType !== "drag") {
7070
- if (isLock) {
7071
- drawLockVertexesWrapper(overlayContext, hoverElementVertexes, {
6950
+ if (isHoverLocked) {
6951
+ drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, {
7072
6952
  ...drawBaseOpts,
7073
6953
  controller: calcElementSizeController(hoverElement, {
7074
6954
  groupQueue,
@@ -7081,7 +6961,7 @@ var __privateMethod = (obj, member, method) => {
7081
6961
  drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
7082
6962
  }
7083
6963
  }
7084
- if (!isLock && elem && ["select", "drag", "resize"].includes(actionType)) {
6964
+ if (elem && ["select", "drag", "resize"].includes(actionType)) {
7085
6965
  drawSelectedElementControllersVertexes(overlayContext, selectedElementController, {
7086
6966
  ...drawBaseOpts,
7087
6967
  element: elem,
@@ -7113,8 +6993,8 @@ var __privateMethod = (obj, member, method) => {
7113
6993
  }
7114
6994
  } else {
7115
6995
  if (hoverElement && actionType !== "drag") {
7116
- if (isLock) {
7117
- drawLockVertexesWrapper(overlayContext, hoverElementVertexes, {
6996
+ if (isHoverLocked) {
6997
+ drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, {
7118
6998
  ...drawBaseOpts,
7119
6999
  controller: calcElementSizeController(hoverElement, {
7120
7000
  groupQueue,
@@ -7127,7 +7007,7 @@ var __privateMethod = (obj, member, method) => {
7127
7007
  drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
7128
7008
  }
7129
7009
  }
7130
- if (!isLock && elem && ["select", "drag", "resize"].includes(actionType)) {
7010
+ if (elem && ["select", "drag", "resize"].includes(actionType)) {
7131
7011
  drawSelectedElementControllersVertexes(overlayContext, selectedElementController, {
7132
7012
  ...drawBaseOpts,
7133
7013
  element: elem,
@@ -7460,7 +7340,7 @@ var __privateMethod = (obj, member, method) => {
7460
7340
  sharer.setSharedStorage(keyHoverXThumbRect, false);
7461
7341
  sharer.setSharedStorage(keyHoverYThumbRect, true);
7462
7342
  }
7463
- eventHub.trigger("cursor", { type: "default" });
7343
+ eventHub.trigger(coreEventKeys.CURSOR, { type: "default" });
7464
7344
  return false;
7465
7345
  }
7466
7346
  sharer.setSharedStorage(keyHoverXThumbRect, false);
@@ -7507,7 +7387,6 @@ var __privateMethod = (obj, member, method) => {
7507
7387
  }
7508
7388
  };
7509
7389
  };
7510
- const middlewareEventScale = "@middleware/scale";
7511
7390
  const MiddlewareScaler = (opts) => {
7512
7391
  const { viewer, sharer, eventHub } = opts;
7513
7392
  const maxScale = 50;
@@ -7530,7 +7409,7 @@ var __privateMethod = (obj, member, method) => {
7530
7409
  viewer.scroll({ moveX, moveY });
7531
7410
  viewer.drawFrame();
7532
7411
  const scaleNum = formatNumber(scale);
7533
- eventHub.trigger(middlewareEventScale, { scale: scaleNum });
7412
+ eventHub.trigger(coreEventKeys.SCALE, { scale: scaleNum });
7534
7413
  }
7535
7414
  };
7536
7415
  };
@@ -7808,7 +7687,6 @@ var __privateMethod = (obj, member, method) => {
7808
7687
  ctx.fill();
7809
7688
  }
7810
7689
  }
7811
- const middlewareEventRuler = "@middleware/show-ruler";
7812
7690
  const MiddlewareRuler = (opts, config) => {
7813
7691
  const { boardContent, viewer, eventHub, calculator } = opts;
7814
7692
  const { overlayContext, underlayContext } = boardContent;
@@ -7842,10 +7720,10 @@ var __privateMethod = (obj, member, method) => {
7842
7720
  return {
7843
7721
  name: "@middleware/ruler",
7844
7722
  use() {
7845
- eventHub.on(middlewareEventRuler, rulerCallback);
7723
+ eventHub.on(coreEventKeys.RULER, rulerCallback);
7846
7724
  },
7847
7725
  disuse() {
7848
- eventHub.off(middlewareEventRuler, rulerCallback);
7726
+ eventHub.off(coreEventKeys.RULER, rulerCallback);
7849
7727
  },
7850
7728
  beforeDrawFrame: ({ snapshot }) => {
7851
7729
  if (show === true) {
@@ -7871,6 +7749,228 @@ var __privateMethod = (obj, member, method) => {
7871
7749
  }
7872
7750
  };
7873
7751
  };
7752
+ const defaultElementDetail = getDefaultElementDetailConfig();
7753
+ const MiddlewareTextEditor = (opts) => {
7754
+ const { eventHub, boardContent, viewer, sharer } = opts;
7755
+ const canvas = boardContent.boardContext.canvas;
7756
+ const textarea = document.createElement("div");
7757
+ textarea.setAttribute("contenteditable", "true");
7758
+ const canvasWrapper = document.createElement("div");
7759
+ const container = opts.container || document.body;
7760
+ const mask = document.createElement("div");
7761
+ let activeElem = null;
7762
+ let activePosition = [];
7763
+ const id = `idraw-middleware-text-editor-${Math.random().toString(26).substring(2)}`;
7764
+ mask.setAttribute("id", id);
7765
+ canvasWrapper.appendChild(textarea);
7766
+ canvasWrapper.style.position = "absolute";
7767
+ mask.appendChild(canvasWrapper);
7768
+ mask.style.position = "fixed";
7769
+ mask.style.top = "0";
7770
+ mask.style.bottom = "0";
7771
+ mask.style.left = "0";
7772
+ mask.style.right = "0";
7773
+ mask.style.display = "none";
7774
+ container.appendChild(mask);
7775
+ const showTextArea = (e) => {
7776
+ resetCanvasWrapper();
7777
+ resetTextArea(e);
7778
+ mask.style.display = "block";
7779
+ if (activeElem == null ? void 0 : activeElem.uuid) {
7780
+ sharer.setActiveOverrideElemenentMap({
7781
+ [activeElem.uuid]: {
7782
+ operations: { invisible: true }
7783
+ }
7784
+ });
7785
+ viewer.drawFrame();
7786
+ }
7787
+ };
7788
+ const hideTextArea = () => {
7789
+ if (activeElem == null ? void 0 : activeElem.uuid) {
7790
+ const map = sharer.getActiveOverrideElemenentMap();
7791
+ if (map) {
7792
+ delete map[activeElem.uuid];
7793
+ }
7794
+ sharer.setActiveOverrideElemenentMap(map);
7795
+ viewer.drawFrame();
7796
+ }
7797
+ mask.style.display = "none";
7798
+ activeElem = null;
7799
+ activePosition = [];
7800
+ };
7801
+ const getCanvasRect = () => {
7802
+ const clientRect = canvas.getBoundingClientRect();
7803
+ const { left, top, width, height } = clientRect;
7804
+ return { left, top, width, height };
7805
+ };
7806
+ const createBox = (opts2) => {
7807
+ const { size, parent } = opts2;
7808
+ const div = document.createElement("div");
7809
+ const { x: x2, y: y2, w: w2, h: h2 } = size;
7810
+ const angle2 = limitAngle(size.angle || 0);
7811
+ div.style.position = "absolute";
7812
+ div.style.left = `${x2}px`;
7813
+ div.style.top = `${y2}px`;
7814
+ div.style.width = `${w2}px`;
7815
+ div.style.height = `${h2}px`;
7816
+ div.style.transform = `rotate(${angle2}deg)`;
7817
+ parent.appendChild(div);
7818
+ return div;
7819
+ };
7820
+ const resetTextArea = (e) => {
7821
+ const { viewScaleInfo, element, groupQueue } = e;
7822
+ const { scale, offsetTop, offsetLeft } = viewScaleInfo;
7823
+ if (canvasWrapper.children) {
7824
+ Array.from(canvasWrapper.children).forEach((child) => {
7825
+ child.remove();
7826
+ });
7827
+ }
7828
+ let parent = canvasWrapper;
7829
+ for (let i = 0; i < groupQueue.length; i++) {
7830
+ const group = groupQueue[i];
7831
+ const { x: x2, y: y2, w: w2, h: h2 } = group;
7832
+ const angle2 = limitAngle(group.angle || 0);
7833
+ const size = {
7834
+ x: x2 * scale,
7835
+ y: y2 * scale,
7836
+ w: w2 * scale,
7837
+ h: h2 * scale,
7838
+ angle: angle2
7839
+ };
7840
+ if (i === 0) {
7841
+ size.x += offsetLeft;
7842
+ size.y += offsetTop;
7843
+ }
7844
+ parent = createBox({ size, parent });
7845
+ }
7846
+ const detail = {
7847
+ ...defaultElementDetail,
7848
+ ...element.detail
7849
+ };
7850
+ let elemX = element.x * scale + offsetLeft;
7851
+ let elemY = element.y * scale + offsetTop;
7852
+ let elemW = element.w * scale;
7853
+ let elemH = element.h * scale;
7854
+ if (groupQueue.length > 0) {
7855
+ elemX = element.x * scale;
7856
+ elemY = element.y * scale;
7857
+ elemW = element.w * scale;
7858
+ elemH = element.h * scale;
7859
+ }
7860
+ let justifyContent = "center";
7861
+ let alignItems = "center";
7862
+ if (detail.textAlign === "left") {
7863
+ justifyContent = "start";
7864
+ } else if (detail.textAlign === "right") {
7865
+ justifyContent = "end";
7866
+ }
7867
+ if (detail.verticalAlign === "top") {
7868
+ alignItems = "start";
7869
+ } else if (detail.verticalAlign === "bottom") {
7870
+ alignItems = "end";
7871
+ }
7872
+ textarea.style.display = "inline-flex";
7873
+ textarea.style.justifyContent = justifyContent;
7874
+ textarea.style.alignItems = alignItems;
7875
+ textarea.style.position = "absolute";
7876
+ textarea.style.left = `${elemX - 1}px`;
7877
+ textarea.style.top = `${elemY - 1}px`;
7878
+ textarea.style.width = `${elemW + 2}px`;
7879
+ textarea.style.height = `${elemH + 2}px`;
7880
+ textarea.style.transform = `rotate(${limitAngle(element.angle || 0)}deg)`;
7881
+ textarea.style.boxSizing = "border-box";
7882
+ textarea.style.border = "1px solid #1973ba";
7883
+ textarea.style.resize = "none";
7884
+ textarea.style.overflow = "hidden";
7885
+ textarea.style.wordBreak = "break-all";
7886
+ textarea.style.borderRadius = `${(typeof detail.borderRadius === "number" ? detail.borderRadius : 0) * scale}px`;
7887
+ textarea.style.background = `${detail.background || "transparent"}`;
7888
+ textarea.style.color = `${detail.color || "#333333"}`;
7889
+ textarea.style.fontSize = `${detail.fontSize * scale}px`;
7890
+ textarea.style.lineHeight = `${(detail.lineHeight || detail.fontSize) * scale}px`;
7891
+ textarea.style.fontFamily = enhanceFontFamliy(detail.fontFamily);
7892
+ textarea.style.fontWeight = `${detail.fontWeight}`;
7893
+ textarea.style.padding = "0";
7894
+ textarea.style.margin = "0";
7895
+ textarea.style.outline = "none";
7896
+ textarea.innerText = detail.text || "";
7897
+ parent.appendChild(textarea);
7898
+ };
7899
+ const resetCanvasWrapper = () => {
7900
+ const { left, top, width, height } = getCanvasRect();
7901
+ canvasWrapper.style.position = "absolute";
7902
+ canvasWrapper.style.overflow = "hidden";
7903
+ canvasWrapper.style.top = `${top}px`;
7904
+ canvasWrapper.style.left = `${left}px`;
7905
+ canvasWrapper.style.width = `${width}px`;
7906
+ canvasWrapper.style.height = `${height}px`;
7907
+ };
7908
+ mask.addEventListener("click", () => {
7909
+ hideTextArea();
7910
+ });
7911
+ textarea.addEventListener("click", (e) => {
7912
+ e.stopPropagation();
7913
+ });
7914
+ textarea.addEventListener("input", () => {
7915
+ if (activeElem && activePosition) {
7916
+ activeElem.detail.text = textarea.innerText || "";
7917
+ eventHub.trigger(coreEventKeys.TEXT_CHANGE, {
7918
+ element: {
7919
+ uuid: activeElem.uuid,
7920
+ detail: {
7921
+ text: activeElem.detail.text
7922
+ }
7923
+ },
7924
+ position: [...activePosition || []]
7925
+ });
7926
+ viewer.drawFrame();
7927
+ }
7928
+ });
7929
+ textarea.addEventListener("blur", () => {
7930
+ if (activeElem && activePosition) {
7931
+ eventHub.trigger(coreEventKeys.TEXT_CHANGE, {
7932
+ element: {
7933
+ uuid: activeElem.uuid,
7934
+ detail: {
7935
+ text: activeElem.detail.text
7936
+ }
7937
+ },
7938
+ position: [...activePosition]
7939
+ });
7940
+ }
7941
+ hideTextArea();
7942
+ });
7943
+ textarea.addEventListener("keydown", (e) => {
7944
+ e.stopPropagation();
7945
+ });
7946
+ textarea.addEventListener("keypress", (e) => {
7947
+ e.stopPropagation();
7948
+ });
7949
+ textarea.addEventListener("keyup", (e) => {
7950
+ e.stopPropagation();
7951
+ });
7952
+ textarea.addEventListener("wheel", (e) => {
7953
+ e.stopPropagation();
7954
+ e.preventDefault();
7955
+ });
7956
+ const textEditCallback = (e) => {
7957
+ var _a;
7958
+ if ((e == null ? void 0 : e.position) && (e == null ? void 0 : e.element) && ((_a = e == null ? void 0 : e.element) == null ? void 0 : _a.type) === "text") {
7959
+ activeElem = e.element;
7960
+ activePosition = e.position;
7961
+ }
7962
+ showTextArea(e);
7963
+ };
7964
+ return {
7965
+ name: "@middleware/text-editor",
7966
+ use() {
7967
+ eventHub.on(coreEventKeys.TEXT_EDIT, textEditCallback);
7968
+ },
7969
+ disuse() {
7970
+ eventHub.off(coreEventKeys.TEXT_EDIT, textEditCallback);
7971
+ }
7972
+ };
7973
+ };
7874
7974
  const key = "DRAG";
7875
7975
  const keyPrevPoint = Symbol(`${key}_prevPoint`);
7876
7976
  const MiddlewareDragger = (opts) => {
@@ -7882,7 +7982,7 @@ var __privateMethod = (obj, member, method) => {
7882
7982
  if (isDragging === true) {
7883
7983
  return;
7884
7984
  }
7885
- eventHub.trigger("cursor", {
7985
+ eventHub.trigger(coreEventKeys.CURSOR, {
7886
7986
  type: "drag-default"
7887
7987
  });
7888
7988
  },
@@ -7890,7 +7990,7 @@ var __privateMethod = (obj, member, method) => {
7890
7990
  const { point } = e;
7891
7991
  sharer.setSharedStorage(keyPrevPoint, point);
7892
7992
  isDragging = true;
7893
- eventHub.trigger("cursor", {
7993
+ eventHub.trigger(coreEventKeys.CURSOR, {
7894
7994
  type: "drag-active"
7895
7995
  });
7896
7996
  },
@@ -7908,7 +8008,7 @@ var __privateMethod = (obj, member, method) => {
7908
8008
  pointEnd() {
7909
8009
  isDragging = false;
7910
8010
  sharer.setSharedStorage(keyPrevPoint, null);
7911
- eventHub.trigger("cursor", {
8011
+ eventHub.trigger(coreEventKeys.CURSOR, {
7912
8012
  type: "drag-default"
7913
8013
  });
7914
8014
  }
@@ -8143,6 +8243,47 @@ var __privateMethod = (obj, member, method) => {
8143
8243
  }
8144
8244
  };
8145
8245
  };
8246
+ const MiddlewarePointer = (opts) => {
8247
+ const { boardContent, eventHub, sharer } = opts;
8248
+ const canvas = boardContent.boardContext.canvas;
8249
+ const container = opts.container || document.body;
8250
+ const id = `idraw-middleware-pointer-${Math.random().toString(26).substring(2)}`;
8251
+ const getCanvasRect = () => {
8252
+ const clientRect = canvas.getBoundingClientRect();
8253
+ const { left, top, width, height } = clientRect;
8254
+ return { left, top, width, height };
8255
+ };
8256
+ const contextMenuPointer = document.createElement("div");
8257
+ contextMenuPointer.setAttribute("id", id);
8258
+ contextMenuPointer.style.position = "fixed";
8259
+ contextMenuPointer.style.top = "0";
8260
+ contextMenuPointer.style.bottom = "unset";
8261
+ contextMenuPointer.style.left = "0";
8262
+ contextMenuPointer.style.right = "unset";
8263
+ container.appendChild(contextMenuPointer);
8264
+ return {
8265
+ name: "@middleware/pointer",
8266
+ use() {
8267
+ },
8268
+ disuse() {
8269
+ },
8270
+ pointStart(e) {
8271
+ },
8272
+ pointEnd() {
8273
+ },
8274
+ contextMenu(e) {
8275
+ const { point } = e;
8276
+ const { left, top } = getCanvasRect();
8277
+ contextMenuPointer.style.left = `${left + point.x}px`;
8278
+ contextMenuPointer.style.top = `${top + point.y}px`;
8279
+ const selectedElements = sharer.getSharedStorage(keySelectedElementList);
8280
+ eventHub.trigger(coreEventKeys.CONTEXT_MENU, {
8281
+ pointerContainer: contextMenuPointer,
8282
+ selectedElements: selectedElements || []
8283
+ });
8284
+ }
8285
+ };
8286
+ };
8146
8287
  class Core {
8147
8288
  constructor(container, opts) {
8148
8289
  __privateAdd(this, _initContainer);
@@ -8260,20 +8401,13 @@ var __privateMethod = (obj, member, method) => {
8260
8401
  exports.MiddlewareDragger = MiddlewareDragger;
8261
8402
  exports.MiddlewareInfo = MiddlewareInfo;
8262
8403
  exports.MiddlewareLayoutSelector = MiddlewareLayoutSelector;
8404
+ exports.MiddlewarePointer = MiddlewarePointer;
8263
8405
  exports.MiddlewareRuler = MiddlewareRuler;
8264
8406
  exports.MiddlewareScaler = MiddlewareScaler;
8265
8407
  exports.MiddlewareScroller = MiddlewareScroller;
8266
8408
  exports.MiddlewareSelector = MiddlewareSelector;
8267
8409
  exports.MiddlewareTextEditor = MiddlewareTextEditor;
8268
- exports.eventChange = eventChange;
8269
- exports.middlewareEventRuler = middlewareEventRuler;
8270
- exports.middlewareEventScale = middlewareEventScale;
8271
- exports.middlewareEventSelect = middlewareEventSelect;
8272
- exports.middlewareEventSelectClear = middlewareEventSelectClear;
8273
- exports.middlewareEventSelectInGroup = middlewareEventSelectInGroup;
8274
- exports.middlewareEventSnapToGrid = middlewareEventSnapToGrid;
8275
- exports.middlewareEventTextChange = middlewareEventTextChange;
8276
- exports.middlewareEventTextEdit = middlewareEventTextEdit;
8410
+ exports.coreEventKeys = coreEventKeys;
8277
8411
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8278
8412
  return exports;
8279
8413
  }({});