@idraw/core 0.4.0-beta.33 → 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.
@@ -3680,6 +3680,9 @@ var __privateMethod = (obj, member, method) => {
3680
3680
  }
3681
3681
  });
3682
3682
  _BoardWatcher_onContextMenu.set(this, (e) => {
3683
+ if (e.button !== 2) {
3684
+ return;
3685
+ }
3683
3686
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
3684
3687
  return;
3685
3688
  }
@@ -3688,6 +3691,7 @@ var __privateMethod = (obj, member, method) => {
3688
3691
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isVaildPoint).call(this, point)) {
3689
3692
  return;
3690
3693
  }
3694
+ this.trigger("contextMenu", { point });
3691
3695
  });
3692
3696
  _BoardWatcher_onClick.set(this, (e) => {
3693
3697
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
@@ -3745,6 +3749,9 @@ var __privateMethod = (obj, member, method) => {
3745
3749
  this.trigger("pointMove", { point });
3746
3750
  });
3747
3751
  _BoardWatcher_onPointStart.set(this, (e) => {
3752
+ if (e.button !== 0) {
3753
+ return;
3754
+ }
3748
3755
  if (!__classPrivateFieldGet$3(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
3749
3756
  return;
3750
3757
  }
@@ -4113,7 +4120,7 @@ var __privateMethod = (obj, member, method) => {
4113
4120
  throw new TypeError("Cannot read private member from an object whose class did not declare it");
4114
4121
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
4115
4122
  };
4116
- 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;
4117
4124
  class Board {
4118
4125
  constructor(opts) {
4119
4126
  _Board_instances.add(this);
@@ -4306,6 +4313,7 @@ var __privateMethod = (obj, member, method) => {
4306
4313
  __classPrivateFieldGet(this, _Board_watcher, "f").on("scrollY", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleScrollY).bind(this));
4307
4314
  __classPrivateFieldGet(this, _Board_watcher, "f").on("resize", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleResize).bind(this));
4308
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));
4309
4317
  __classPrivateFieldGet(this, _Board_renderer, "f").on("load", () => {
4310
4318
  __classPrivateFieldGet(this, _Board_eventHub, "f").trigger("loadResource");
4311
4319
  });
@@ -4354,6 +4362,15 @@ var __privateMethod = (obj, member, method) => {
4354
4362
  return;
4355
4363
  }
4356
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
+ }
4357
4374
  }, _Board_handleWheel = function _Board_handleWheel2(e) {
4358
4375
  var _a;
4359
4376
  for (let i = 0; i < __classPrivateFieldGet(this, _Board_activeMiddlewareObjs, "f").length; i++) {
@@ -4442,6 +4459,36 @@ var __privateMethod = (obj, member, method) => {
4442
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==`;
4443
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`;
4444
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
+ });
4445
4492
  class Cursor {
4446
4493
  constructor(container, opts) {
4447
4494
  __privateAdd(this, _init);
@@ -4475,7 +4522,7 @@ var __privateMethod = (obj, member, method) => {
4475
4522
  init_fn = function() {
4476
4523
  const eventHub = __privateGet(this, _eventHub);
4477
4524
  __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "default");
4478
- eventHub.on("cursor", (e) => {
4525
+ eventHub.on(coreEventKeys.CURSOR, (e) => {
4479
4526
  var _a;
4480
4527
  if (e.type === "over-element" || !e.type) {
4481
4528
  __privateMethod(this, _resetCursor, resetCursor_fn).call(this, "auto");
@@ -4583,7 +4630,6 @@ var __privateMethod = (obj, member, method) => {
4583
4630
  }
4584
4631
  return key2;
4585
4632
  };
4586
- const eventChange = "change";
4587
4633
  const key$3 = "SELECT";
4588
4634
  const keyActionType = Symbol(`${key$3}_actionType`);
4589
4635
  const keyResizeType = Symbol(`${key$3}_resizeType`);
@@ -4614,10 +4660,6 @@ var __privateMethod = (obj, member, method) => {
4614
4660
  lockedColor,
4615
4661
  referenceColor
4616
4662
  };
4617
- const middlewareEventSelect = "@middleware/select";
4618
- const middlewareEventSelectClear = "@middleware/select-clear";
4619
- const middlewareEventSelectInGroup = "@middleware/select-in-group";
4620
- const middlewareEventSnapToGrid = "@middleware/snap-to-grid";
4621
4663
  function drawVertexes(ctx, vertexes, opts) {
4622
4664
  const { borderColor: borderColor2, borderWidth: borderWidth2, background: background2, lineDash } = opts;
4623
4665
  ctx.setLineDash([]);
@@ -5872,228 +5914,6 @@ var __privateMethod = (obj, member, method) => {
5872
5914
  xLines
5873
5915
  };
5874
5916
  }
5875
- const middlewareEventTextEdit = "@middleware/text-edit";
5876
- const middlewareEventTextChange = "@middleware/text-change";
5877
- const defaultElementDetail = getDefaultElementDetailConfig();
5878
- const MiddlewareTextEditor = (opts) => {
5879
- const { eventHub, boardContent, viewer, sharer } = opts;
5880
- const canvas = boardContent.boardContext.canvas;
5881
- const textarea = document.createElement("div");
5882
- textarea.setAttribute("contenteditable", "true");
5883
- const canvasWrapper = document.createElement("div");
5884
- const container = opts.container || document.body;
5885
- const mask = document.createElement("div");
5886
- let activeElem = null;
5887
- let activePosition = [];
5888
- canvasWrapper.appendChild(textarea);
5889
- canvasWrapper.style.position = "absolute";
5890
- mask.appendChild(canvasWrapper);
5891
- mask.style.position = "fixed";
5892
- mask.style.top = "0";
5893
- mask.style.bottom = "0";
5894
- mask.style.left = "0";
5895
- mask.style.right = "0";
5896
- mask.style.display = "none";
5897
- container.appendChild(mask);
5898
- const showTextArea = (e) => {
5899
- resetCanvasWrapper();
5900
- resetTextArea(e);
5901
- mask.style.display = "block";
5902
- if (activeElem == null ? void 0 : activeElem.uuid) {
5903
- sharer.setActiveOverrideElemenentMap({
5904
- [activeElem.uuid]: {
5905
- operations: { invisible: true }
5906
- }
5907
- });
5908
- viewer.drawFrame();
5909
- }
5910
- };
5911
- const hideTextArea = () => {
5912
- if (activeElem == null ? void 0 : activeElem.uuid) {
5913
- const map = sharer.getActiveOverrideElemenentMap();
5914
- if (map) {
5915
- delete map[activeElem.uuid];
5916
- }
5917
- sharer.setActiveOverrideElemenentMap(map);
5918
- viewer.drawFrame();
5919
- }
5920
- mask.style.display = "none";
5921
- activeElem = null;
5922
- activePosition = [];
5923
- };
5924
- const getCanvasRect = () => {
5925
- const clientRect = canvas.getBoundingClientRect();
5926
- const { left, top, width, height } = clientRect;
5927
- return { left, top, width, height };
5928
- };
5929
- const createBox = (opts2) => {
5930
- const { size, parent } = opts2;
5931
- const div = document.createElement("div");
5932
- const { x: x2, y: y2, w: w2, h: h2 } = size;
5933
- const angle2 = limitAngle(size.angle || 0);
5934
- div.style.position = "absolute";
5935
- div.style.left = `${x2}px`;
5936
- div.style.top = `${y2}px`;
5937
- div.style.width = `${w2}px`;
5938
- div.style.height = `${h2}px`;
5939
- div.style.transform = `rotate(${angle2}deg)`;
5940
- parent.appendChild(div);
5941
- return div;
5942
- };
5943
- const resetTextArea = (e) => {
5944
- const { viewScaleInfo, element, groupQueue } = e;
5945
- const { scale, offsetTop, offsetLeft } = viewScaleInfo;
5946
- if (canvasWrapper.children) {
5947
- Array.from(canvasWrapper.children).forEach((child) => {
5948
- child.remove();
5949
- });
5950
- }
5951
- let parent = canvasWrapper;
5952
- for (let i = 0; i < groupQueue.length; i++) {
5953
- const group = groupQueue[i];
5954
- const { x: x2, y: y2, w: w2, h: h2 } = group;
5955
- const angle2 = limitAngle(group.angle || 0);
5956
- const size = {
5957
- x: x2 * scale,
5958
- y: y2 * scale,
5959
- w: w2 * scale,
5960
- h: h2 * scale,
5961
- angle: angle2
5962
- };
5963
- if (i === 0) {
5964
- size.x += offsetLeft;
5965
- size.y += offsetTop;
5966
- }
5967
- parent = createBox({ size, parent });
5968
- }
5969
- const detail = {
5970
- ...defaultElementDetail,
5971
- ...element.detail
5972
- };
5973
- let elemX = element.x * scale + offsetLeft;
5974
- let elemY = element.y * scale + offsetTop;
5975
- let elemW = element.w * scale;
5976
- let elemH = element.h * scale;
5977
- if (groupQueue.length > 0) {
5978
- elemX = element.x * scale;
5979
- elemY = element.y * scale;
5980
- elemW = element.w * scale;
5981
- elemH = element.h * scale;
5982
- }
5983
- let justifyContent = "center";
5984
- let alignItems = "center";
5985
- if (detail.textAlign === "left") {
5986
- justifyContent = "start";
5987
- } else if (detail.textAlign === "right") {
5988
- justifyContent = "end";
5989
- }
5990
- if (detail.verticalAlign === "top") {
5991
- alignItems = "start";
5992
- } else if (detail.verticalAlign === "bottom") {
5993
- alignItems = "end";
5994
- }
5995
- textarea.style.display = "inline-flex";
5996
- textarea.style.justifyContent = justifyContent;
5997
- textarea.style.alignItems = alignItems;
5998
- textarea.style.position = "absolute";
5999
- textarea.style.left = `${elemX - 1}px`;
6000
- textarea.style.top = `${elemY - 1}px`;
6001
- textarea.style.width = `${elemW + 2}px`;
6002
- textarea.style.height = `${elemH + 2}px`;
6003
- textarea.style.transform = `rotate(${limitAngle(element.angle || 0)}deg)`;
6004
- textarea.style.boxSizing = "border-box";
6005
- textarea.style.border = "1px solid #1973ba";
6006
- textarea.style.resize = "none";
6007
- textarea.style.overflow = "hidden";
6008
- textarea.style.wordBreak = "break-all";
6009
- textarea.style.borderRadius = `${(typeof detail.borderRadius === "number" ? detail.borderRadius : 0) * scale}px`;
6010
- textarea.style.background = `${detail.background || "transparent"}`;
6011
- textarea.style.color = `${detail.color || "#333333"}`;
6012
- textarea.style.fontSize = `${detail.fontSize * scale}px`;
6013
- textarea.style.lineHeight = `${(detail.lineHeight || detail.fontSize) * scale}px`;
6014
- textarea.style.fontFamily = enhanceFontFamliy(detail.fontFamily);
6015
- textarea.style.fontWeight = `${detail.fontWeight}`;
6016
- textarea.style.padding = "0";
6017
- textarea.style.margin = "0";
6018
- textarea.style.outline = "none";
6019
- textarea.innerText = detail.text || "";
6020
- parent.appendChild(textarea);
6021
- };
6022
- const resetCanvasWrapper = () => {
6023
- const { left, top, width, height } = getCanvasRect();
6024
- canvasWrapper.style.position = "absolute";
6025
- canvasWrapper.style.overflow = "hidden";
6026
- canvasWrapper.style.top = `${top}px`;
6027
- canvasWrapper.style.left = `${left}px`;
6028
- canvasWrapper.style.width = `${width}px`;
6029
- canvasWrapper.style.height = `${height}px`;
6030
- };
6031
- mask.addEventListener("click", () => {
6032
- hideTextArea();
6033
- });
6034
- textarea.addEventListener("click", (e) => {
6035
- e.stopPropagation();
6036
- });
6037
- textarea.addEventListener("input", () => {
6038
- if (activeElem && activePosition) {
6039
- activeElem.detail.text = textarea.innerText || "";
6040
- eventHub.trigger(middlewareEventTextChange, {
6041
- element: {
6042
- uuid: activeElem.uuid,
6043
- detail: {
6044
- text: activeElem.detail.text
6045
- }
6046
- },
6047
- position: [...activePosition || []]
6048
- });
6049
- viewer.drawFrame();
6050
- }
6051
- });
6052
- textarea.addEventListener("blur", () => {
6053
- if (activeElem && activePosition) {
6054
- eventHub.trigger(middlewareEventTextChange, {
6055
- element: {
6056
- uuid: activeElem.uuid,
6057
- detail: {
6058
- text: activeElem.detail.text
6059
- }
6060
- },
6061
- position: [...activePosition]
6062
- });
6063
- }
6064
- hideTextArea();
6065
- });
6066
- textarea.addEventListener("keydown", (e) => {
6067
- e.stopPropagation();
6068
- });
6069
- textarea.addEventListener("keypress", (e) => {
6070
- e.stopPropagation();
6071
- });
6072
- textarea.addEventListener("keyup", (e) => {
6073
- e.stopPropagation();
6074
- });
6075
- textarea.addEventListener("wheel", (e) => {
6076
- e.stopPropagation();
6077
- e.preventDefault();
6078
- });
6079
- const textEditCallback = (e) => {
6080
- var _a;
6081
- 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") {
6082
- activeElem = e.element;
6083
- activePosition = e.position;
6084
- }
6085
- showTextArea(e);
6086
- };
6087
- return {
6088
- name: "@middleware/text-editor",
6089
- use() {
6090
- eventHub.on(middlewareEventTextEdit, textEditCallback);
6091
- },
6092
- disuse() {
6093
- eventHub.off(middlewareEventTextEdit, textEditCallback);
6094
- }
6095
- };
6096
- };
6097
5917
  const key$2 = "LAYOUT_SELECT";
6098
5918
  const keyLayoutActionType = Symbol(`${key$2}_layoutActionType`);
6099
5919
  const keyLayoutControlType = Symbol(`${key$2}_layoutControlType`);
@@ -6260,7 +6080,7 @@ var __privateMethod = (obj, member, method) => {
6260
6080
  }
6261
6081
  if (layoutControlType) {
6262
6082
  sharer.setSharedStorage(keyLayoutControlType, layoutControlType);
6263
- eventHub.trigger(middlewareEventSelectClear, {});
6083
+ eventHub.trigger(coreEventKeys.CLEAR_SELECT);
6264
6084
  return layoutControlType;
6265
6085
  }
6266
6086
  }
@@ -6271,7 +6091,7 @@ var __privateMethod = (obj, member, method) => {
6271
6091
  if (isBusy === true) {
6272
6092
  return;
6273
6093
  }
6274
- eventHub.trigger("cursor", {
6094
+ eventHub.trigger(coreEventKeys.CURSOR, {
6275
6095
  type: controlType ? `resize-${controlType}` : controlType,
6276
6096
  groupQueue: [],
6277
6097
  element: getLayoutSize()
@@ -6445,7 +6265,7 @@ var __privateMethod = (obj, member, method) => {
6445
6265
  const layoutControlType = sharer.getSharedStorage(keyLayoutControlType);
6446
6266
  const data = sharer.getActiveStorage("data");
6447
6267
  if (data && layoutActionType === "resize" && layoutControlType) {
6448
- eventHub.trigger(eventChange, {
6268
+ eventHub.trigger(coreEventKeys.CHANGE, {
6449
6269
  type: "changeLayout",
6450
6270
  data
6451
6271
  });
@@ -6548,7 +6368,7 @@ var __privateMethod = (obj, member, method) => {
6548
6368
  sharer.setSharedStorage(keySelectedElementPosition, []);
6549
6369
  }
6550
6370
  if ((opts2 == null ? void 0 : opts2.triggerEvent) === true) {
6551
- eventHub.trigger(middlewareEventSelect, { uuids: list.map((elem) => elem.uuid) });
6371
+ eventHub.trigger(coreEventKeys.SELECT, { uuids: list.map((elem) => elem.uuid), positions: [] });
6552
6372
  }
6553
6373
  };
6554
6374
  const pointTargetBaseOptions = () => {
@@ -6581,7 +6401,7 @@ var __privateMethod = (obj, member, method) => {
6581
6401
  sharer.setSharedStorage(keyIsMoving, null);
6582
6402
  };
6583
6403
  clear();
6584
- const selectCallback = ({ uuids, positions }) => {
6404
+ const selectCallback = ({ uuids = [], positions }) => {
6585
6405
  let elements = [];
6586
6406
  const actionType = sharer.getSharedStorage(keyActionType);
6587
6407
  const data = sharer.getActiveStorage("data");
@@ -6618,16 +6438,16 @@ var __privateMethod = (obj, member, method) => {
6618
6438
  return {
6619
6439
  name: "@middleware/selector",
6620
6440
  use() {
6621
- eventHub.on(middlewareEventSelect, selectCallback);
6622
- eventHub.on(middlewareEventSelectClear, selectClearCallback);
6623
- eventHub.on(middlewareEventSelectInGroup, selectInGroupCallback);
6624
- 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);
6625
6445
  },
6626
6446
  disuse() {
6627
- eventHub.off(middlewareEventSelect, selectCallback);
6628
- eventHub.off(middlewareEventSelectClear, selectClearCallback);
6629
- eventHub.off(middlewareEventSelectInGroup, selectInGroupCallback);
6630
- 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);
6631
6451
  },
6632
6452
  hover: (e) => {
6633
6453
  var _a, _b, _c, _d, _e;
@@ -6641,7 +6461,7 @@ var __privateMethod = (obj, member, method) => {
6641
6461
  }
6642
6462
  const cursor = target2.type;
6643
6463
  if (inBusyMode === null) {
6644
- eventHub.trigger("cursor", {
6464
+ eventHub.trigger(coreEventKeys.CURSOR, {
6645
6465
  type: cursor,
6646
6466
  groupQueue: target2.groupQueue,
6647
6467
  element: target2.elements[0]
@@ -6734,15 +6554,14 @@ var __privateMethod = (obj, member, method) => {
6734
6554
  groupQueue
6735
6555
  })) {
6736
6556
  const target2 = getPointTarget(e.point, pointTargetBaseOptions());
6737
- 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) {
6738
- return;
6739
- } else {
6740
- updateHoverElement(null);
6741
- }
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);
6742
6559
  if (((_d = target2 == null ? void 0 : target2.elements) == null ? void 0 : _d.length) === 1) {
6743
6560
  moveOriginalStartElementSize = getElementSize(target2 == null ? void 0 : target2.elements[0]);
6744
6561
  }
6745
- if (target2.type === "over-element" && ((_e = target2 == null ? void 0 : target2.elements) == null ? void 0 : _e.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) {
6746
6565
  updateSelectedElementList([target2.elements[0]], { triggerEvent: true });
6747
6566
  sharer.setSharedStorage(keyActionType, "drag");
6748
6567
  } else if ((_f = target2.type) == null ? void 0 : _f.startsWith("resize-")) {
@@ -6768,27 +6587,23 @@ var __privateMethod = (obj, member, method) => {
6768
6587
  groupQueue: []
6769
6588
  });
6770
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;
6771
- if (!isLockedElement) {
6772
- updateHoverElement(null);
6773
- }
6590
+ updateHoverElement(null);
6774
6591
  if (((_j = target == null ? void 0 : target.elements) == null ? void 0 : _j.length) === 1) {
6775
6592
  moveOriginalStartElementSize = getElementSize(target == null ? void 0 : target.elements[0]);
6776
6593
  }
6777
- if (!isLockedElement) {
6778
- if (target.type === "list-area") {
6779
- sharer.setSharedStorage(keyActionType, "drag-list");
6780
- } else if (target.type === "over-element" && ((_k = target == null ? void 0 : target.elements) == null ? void 0 : _k.length) === 1) {
6781
- updateSelectedElementList([target.elements[0]], { triggerEvent: true });
6782
- sharer.setSharedStorage(keyActionType, "drag");
6783
- } else if ((_l = target.type) == null ? void 0 : _l.startsWith("resize-")) {
6784
- sharer.setSharedStorage(keyResizeType, target.type);
6785
- sharer.setSharedStorage(keyActionType, "resize");
6786
- } else {
6787
- clear();
6788
- sharer.setSharedStorage(keyActionType, "area");
6789
- sharer.setSharedStorage(keyAreaStart, e.point);
6790
- updateSelectedElementList([], { triggerEvent: true });
6791
- }
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") {
6600
+ sharer.setSharedStorage(keyActionType, "drag-list");
6601
+ } else if (target.type === "over-element" && ((_k = target == null ? void 0 : target.elements) == null ? void 0 : _k.length) === 1) {
6602
+ updateSelectedElementList([target.elements[0]], { triggerEvent: true });
6603
+ sharer.setSharedStorage(keyActionType, "drag");
6604
+ } else if ((_l = target.type) == null ? void 0 : _l.startsWith("resize-")) {
6605
+ sharer.setSharedStorage(keyResizeType, target.type);
6606
+ sharer.setSharedStorage(keyActionType, "resize");
6792
6607
  } else {
6793
6608
  clear();
6794
6609
  sharer.setSharedStorage(keyActionType, "area");
@@ -7023,7 +6838,7 @@ var __privateMethod = (obj, member, method) => {
7023
6838
  }
7024
6839
  if (data && ["drag", "drag-list", "drag-list-end", "resize"].includes(actionType)) {
7025
6840
  let type = "dragElement";
7026
- eventHub.trigger(eventChange, { data, type, selectedElements, hoverElement });
6841
+ eventHub.trigger(coreEventKeys.CHANGE, { data, type, selectedElements, hoverElement });
7027
6842
  }
7028
6843
  viewer.drawFrame();
7029
6844
  };
@@ -7055,7 +6870,7 @@ var __privateMethod = (obj, member, method) => {
7055
6870
  return;
7056
6871
  }
7057
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)) {
7058
- eventHub.trigger(middlewareEventTextEdit, {
6873
+ eventHub.trigger(coreEventKeys.TEXT_EDIT, {
7059
6874
  element: target.elements[0],
7060
6875
  groupQueue: sharer.getSharedStorage(keyGroupQueue) || [],
7061
6876
  position: getElementPositionFromList((_g = target.elements[0]) == null ? void 0 : _g.uuid, ((_h = sharer.getActiveStorage("data")) == null ? void 0 : _h.elements) || []),
@@ -7064,20 +6879,60 @@ var __privateMethod = (obj, member, method) => {
7064
6879
  }
7065
6880
  sharer.setSharedStorage(keyActionType, null);
7066
6881
  },
7067
- beforeDrawFrame({ snapshot }) {
7068
- var _a;
7069
- const { activeStore, sharedStore } = snapshot;
7070
- const { scale, offsetLeft, offsetTop, offsetRight, offsetBottom, width, height, contextHeight, contextWidth, devicePixelRatio } = activeStore;
7071
- const sharer2 = opts.sharer;
7072
- const viewScaleInfo = { scale, offsetLeft, offsetTop, offsetRight, offsetBottom };
7073
- const viewSizeInfo = { width, height, contextHeight, contextWidth, devicePixelRatio };
7074
- const selectedElements = sharedStore[keySelectedElementList];
7075
- const elem = selectedElements[0];
7076
- const hoverElement = sharedStore[keyHoverElement];
7077
- const hoverElementVertexes = sharedStore[keyHoverElementVertexes];
7078
- const actionType = sharedStore[keyActionType];
7079
- const areaStart = sharedStore[keyAreaStart];
7080
- const areaEnd = sharedStore[keyAreaEnd];
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];
6935
+ const areaEnd = sharedStore[keyAreaEnd];
7081
6936
  const groupQueue = sharedStore[keyGroupQueue];
7082
6937
  const groupQueueVertexesList = sharedStore[keyGroupQueueVertexesList];
7083
6938
  const isMoving = sharedStore[keyIsMoving];
@@ -7088,11 +6943,11 @@ var __privateMethod = (obj, member, method) => {
7088
6943
  controllerSize: 10,
7089
6944
  viewScaleInfo
7090
6945
  }) : null;
7091
- const isLocked = !!((_a = hoverElement == null ? void 0 : hoverElement.operations) == null ? void 0 : _a.locked);
6946
+ const isHoverLocked = !!((_a = hoverElement == null ? void 0 : hoverElement.operations) == null ? void 0 : _a.locked);
7092
6947
  if ((groupQueue == null ? void 0 : groupQueue.length) > 0) {
7093
6948
  drawGroupQueueVertexesWrappers(overlayContext, groupQueueVertexesList, drawBaseOpts);
7094
6949
  if (hoverElement && actionType !== "drag") {
7095
- if (isLocked) {
6950
+ if (isHoverLocked) {
7096
6951
  drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, {
7097
6952
  ...drawBaseOpts,
7098
6953
  controller: calcElementSizeController(hoverElement, {
@@ -7106,7 +6961,7 @@ var __privateMethod = (obj, member, method) => {
7106
6961
  drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
7107
6962
  }
7108
6963
  }
7109
- if (!isLocked && elem && ["select", "drag", "resize"].includes(actionType)) {
6964
+ if (elem && ["select", "drag", "resize"].includes(actionType)) {
7110
6965
  drawSelectedElementControllersVertexes(overlayContext, selectedElementController, {
7111
6966
  ...drawBaseOpts,
7112
6967
  element: elem,
@@ -7138,7 +6993,7 @@ var __privateMethod = (obj, member, method) => {
7138
6993
  }
7139
6994
  } else {
7140
6995
  if (hoverElement && actionType !== "drag") {
7141
- if (isLocked) {
6996
+ if (isHoverLocked) {
7142
6997
  drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, {
7143
6998
  ...drawBaseOpts,
7144
6999
  controller: calcElementSizeController(hoverElement, {
@@ -7152,7 +7007,7 @@ var __privateMethod = (obj, member, method) => {
7152
7007
  drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
7153
7008
  }
7154
7009
  }
7155
- if (!isLocked && elem && ["select", "drag", "resize"].includes(actionType)) {
7010
+ if (elem && ["select", "drag", "resize"].includes(actionType)) {
7156
7011
  drawSelectedElementControllersVertexes(overlayContext, selectedElementController, {
7157
7012
  ...drawBaseOpts,
7158
7013
  element: elem,
@@ -7485,7 +7340,7 @@ var __privateMethod = (obj, member, method) => {
7485
7340
  sharer.setSharedStorage(keyHoverXThumbRect, false);
7486
7341
  sharer.setSharedStorage(keyHoverYThumbRect, true);
7487
7342
  }
7488
- eventHub.trigger("cursor", { type: "default" });
7343
+ eventHub.trigger(coreEventKeys.CURSOR, { type: "default" });
7489
7344
  return false;
7490
7345
  }
7491
7346
  sharer.setSharedStorage(keyHoverXThumbRect, false);
@@ -7532,7 +7387,6 @@ var __privateMethod = (obj, member, method) => {
7532
7387
  }
7533
7388
  };
7534
7389
  };
7535
- const middlewareEventScale = "@middleware/scale";
7536
7390
  const MiddlewareScaler = (opts) => {
7537
7391
  const { viewer, sharer, eventHub } = opts;
7538
7392
  const maxScale = 50;
@@ -7555,7 +7409,7 @@ var __privateMethod = (obj, member, method) => {
7555
7409
  viewer.scroll({ moveX, moveY });
7556
7410
  viewer.drawFrame();
7557
7411
  const scaleNum = formatNumber(scale);
7558
- eventHub.trigger(middlewareEventScale, { scale: scaleNum });
7412
+ eventHub.trigger(coreEventKeys.SCALE, { scale: scaleNum });
7559
7413
  }
7560
7414
  };
7561
7415
  };
@@ -7833,7 +7687,6 @@ var __privateMethod = (obj, member, method) => {
7833
7687
  ctx.fill();
7834
7688
  }
7835
7689
  }
7836
- const middlewareEventRuler = "@middleware/show-ruler";
7837
7690
  const MiddlewareRuler = (opts, config) => {
7838
7691
  const { boardContent, viewer, eventHub, calculator } = opts;
7839
7692
  const { overlayContext, underlayContext } = boardContent;
@@ -7867,10 +7720,10 @@ var __privateMethod = (obj, member, method) => {
7867
7720
  return {
7868
7721
  name: "@middleware/ruler",
7869
7722
  use() {
7870
- eventHub.on(middlewareEventRuler, rulerCallback);
7723
+ eventHub.on(coreEventKeys.RULER, rulerCallback);
7871
7724
  },
7872
7725
  disuse() {
7873
- eventHub.off(middlewareEventRuler, rulerCallback);
7726
+ eventHub.off(coreEventKeys.RULER, rulerCallback);
7874
7727
  },
7875
7728
  beforeDrawFrame: ({ snapshot }) => {
7876
7729
  if (show === true) {
@@ -7896,6 +7749,228 @@ var __privateMethod = (obj, member, method) => {
7896
7749
  }
7897
7750
  };
7898
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
+ };
7899
7974
  const key = "DRAG";
7900
7975
  const keyPrevPoint = Symbol(`${key}_prevPoint`);
7901
7976
  const MiddlewareDragger = (opts) => {
@@ -7907,7 +7982,7 @@ var __privateMethod = (obj, member, method) => {
7907
7982
  if (isDragging === true) {
7908
7983
  return;
7909
7984
  }
7910
- eventHub.trigger("cursor", {
7985
+ eventHub.trigger(coreEventKeys.CURSOR, {
7911
7986
  type: "drag-default"
7912
7987
  });
7913
7988
  },
@@ -7915,7 +7990,7 @@ var __privateMethod = (obj, member, method) => {
7915
7990
  const { point } = e;
7916
7991
  sharer.setSharedStorage(keyPrevPoint, point);
7917
7992
  isDragging = true;
7918
- eventHub.trigger("cursor", {
7993
+ eventHub.trigger(coreEventKeys.CURSOR, {
7919
7994
  type: "drag-active"
7920
7995
  });
7921
7996
  },
@@ -7933,7 +8008,7 @@ var __privateMethod = (obj, member, method) => {
7933
8008
  pointEnd() {
7934
8009
  isDragging = false;
7935
8010
  sharer.setSharedStorage(keyPrevPoint, null);
7936
- eventHub.trigger("cursor", {
8011
+ eventHub.trigger(coreEventKeys.CURSOR, {
7937
8012
  type: "drag-default"
7938
8013
  });
7939
8014
  }
@@ -8074,13 +8149,11 @@ var __privateMethod = (obj, member, method) => {
8074
8149
  return {
8075
8150
  name: "@middleware/info",
8076
8151
  beforeDrawFrame({ snapshot }) {
8077
- var _a;
8078
8152
  const { sharedStore } = snapshot;
8079
8153
  const selectedElementList = sharedStore[keySelectedElementList];
8080
- const hoverElement = sharedStore[keyHoverElement];
8081
8154
  const actionType = sharedStore[keyActionType];
8082
8155
  const groupQueue = sharedStore[keyGroupQueue] || [];
8083
- if (selectedElementList.length === 1 && !((_a = hoverElement == null ? void 0 : hoverElement.operations) == null ? void 0 : _a.locked)) {
8156
+ if (selectedElementList.length === 1) {
8084
8157
  const elem = selectedElementList[0];
8085
8158
  if (elem && ["select", "drag", "resize"].includes(actionType)) {
8086
8159
  const viewScaleInfo = getViewScaleInfoFromSnapshot(snapshot);
@@ -8170,6 +8243,47 @@ var __privateMethod = (obj, member, method) => {
8170
8243
  }
8171
8244
  };
8172
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
+ };
8173
8287
  class Core {
8174
8288
  constructor(container, opts) {
8175
8289
  __privateAdd(this, _initContainer);
@@ -8287,20 +8401,13 @@ var __privateMethod = (obj, member, method) => {
8287
8401
  exports.MiddlewareDragger = MiddlewareDragger;
8288
8402
  exports.MiddlewareInfo = MiddlewareInfo;
8289
8403
  exports.MiddlewareLayoutSelector = MiddlewareLayoutSelector;
8404
+ exports.MiddlewarePointer = MiddlewarePointer;
8290
8405
  exports.MiddlewareRuler = MiddlewareRuler;
8291
8406
  exports.MiddlewareScaler = MiddlewareScaler;
8292
8407
  exports.MiddlewareScroller = MiddlewareScroller;
8293
8408
  exports.MiddlewareSelector = MiddlewareSelector;
8294
8409
  exports.MiddlewareTextEditor = MiddlewareTextEditor;
8295
- exports.eventChange = eventChange;
8296
- exports.middlewareEventRuler = middlewareEventRuler;
8297
- exports.middlewareEventScale = middlewareEventScale;
8298
- exports.middlewareEventSelect = middlewareEventSelect;
8299
- exports.middlewareEventSelectClear = middlewareEventSelectClear;
8300
- exports.middlewareEventSelectInGroup = middlewareEventSelectInGroup;
8301
- exports.middlewareEventSnapToGrid = middlewareEventSnapToGrid;
8302
- exports.middlewareEventTextChange = middlewareEventTextChange;
8303
- exports.middlewareEventTextEdit = middlewareEventTextEdit;
8410
+ exports.coreEventKeys = coreEventKeys;
8304
8411
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8305
8412
  return exports;
8306
8413
  }({});