@idraw/core 0.4.0-beta.23 → 0.4.0-beta.24

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.
@@ -656,23 +656,23 @@ var __privateMethod = (obj, member, method) => {
656
656
  const ctx = canvas.getContext("2d");
657
657
  if (createCustomContext2D) {
658
658
  const viewContext = createCustomContext2D(ctxOpts);
659
- const helperContext = createCustomContext2D(ctxOpts);
660
- const underContext = createCustomContext2D(ctxOpts);
659
+ const overlayContext = createCustomContext2D(ctxOpts);
660
+ const underlayContext = createCustomContext2D(ctxOpts);
661
661
  const boardContext = createContext2D(Object.assign({ ctx }, ctxOpts));
662
662
  const drawView = () => {
663
663
  const { width: w2, height: h2 } = viewContext.$getSize();
664
664
  boardContext.clearRect(0, 0, w2, h2);
665
- boardContext.drawImage(underContext.canvas, 0, 0, w2, h2);
665
+ boardContext.drawImage(underlayContext.canvas, 0, 0, w2, h2);
666
666
  boardContext.drawImage(viewContext.canvas, 0, 0, w2, h2);
667
- boardContext.drawImage(helperContext.canvas, 0, 0, w2, h2);
668
- underContext.clearRect(0, 0, w2, h2);
667
+ boardContext.drawImage(overlayContext.canvas, 0, 0, w2, h2);
668
+ underlayContext.clearRect(0, 0, w2, h2);
669
669
  viewContext.clearRect(0, 0, w2, h2);
670
- helperContext.clearRect(0, 0, w2, h2);
670
+ overlayContext.clearRect(0, 0, w2, h2);
671
671
  };
672
672
  const content = {
673
- underContext,
673
+ underlayContext,
674
674
  viewContext,
675
- helperContext,
675
+ overlayContext,
676
676
  boardContext,
677
677
  drawView
678
678
  };
@@ -680,45 +680,45 @@ var __privateMethod = (obj, member, method) => {
680
680
  }
681
681
  if (offscreen === true) {
682
682
  const viewContext = createOffscreenContext2D(ctxOpts);
683
- const helperContext = createOffscreenContext2D(ctxOpts);
684
- const underContext = createOffscreenContext2D(ctxOpts);
683
+ const overlayContext = createOffscreenContext2D(ctxOpts);
684
+ const underlayContext = createOffscreenContext2D(ctxOpts);
685
685
  const boardContext = createContext2D(Object.assign({ ctx }, ctxOpts));
686
686
  const drawView = () => {
687
687
  const { width: w2, height: h2 } = viewContext.$getSize();
688
688
  boardContext.clearRect(0, 0, w2, h2);
689
- boardContext.drawImage(underContext.canvas, 0, 0, w2, h2);
689
+ boardContext.drawImage(underlayContext.canvas, 0, 0, w2, h2);
690
690
  boardContext.drawImage(viewContext.canvas, 0, 0, w2, h2);
691
- boardContext.drawImage(helperContext.canvas, 0, 0, w2, h2);
692
- underContext.clearRect(0, 0, w2, h2);
691
+ boardContext.drawImage(overlayContext.canvas, 0, 0, w2, h2);
692
+ underlayContext.clearRect(0, 0, w2, h2);
693
693
  viewContext.clearRect(0, 0, w2, h2);
694
- helperContext.clearRect(0, 0, w2, h2);
694
+ overlayContext.clearRect(0, 0, w2, h2);
695
695
  };
696
696
  const content = {
697
- underContext,
697
+ underlayContext,
698
698
  viewContext,
699
- helperContext,
699
+ overlayContext,
700
700
  boardContext,
701
701
  drawView
702
702
  };
703
703
  return content;
704
704
  } else {
705
705
  const viewContext = createContext2D(ctxOpts);
706
- const helperContext = createContext2D(ctxOpts);
707
- const underContext = createContext2D(ctxOpts);
706
+ const overlayContext = createContext2D(ctxOpts);
707
+ const underlayContext = createContext2D(ctxOpts);
708
708
  const boardContext = createContext2D(Object.assign({ ctx }, ctxOpts));
709
709
  const drawView = () => {
710
710
  boardContext.clearRect(0, 0, width, height);
711
- boardContext.drawImage(underContext.canvas, 0, 0, width, height);
711
+ boardContext.drawImage(underlayContext.canvas, 0, 0, width, height);
712
712
  boardContext.drawImage(viewContext.canvas, 0, 0, width, height);
713
- boardContext.drawImage(helperContext.canvas, 0, 0, width, height);
714
- underContext.clearRect(0, 0, width, height);
713
+ boardContext.drawImage(overlayContext.canvas, 0, 0, width, height);
714
+ underlayContext.clearRect(0, 0, width, height);
715
715
  viewContext.clearRect(0, 0, width, height);
716
- helperContext.clearRect(0, 0, width, height);
716
+ overlayContext.clearRect(0, 0, width, height);
717
717
  };
718
718
  const content = {
719
- underContext,
719
+ underlayContext,
720
720
  viewContext,
721
- helperContext,
721
+ overlayContext,
722
722
  boardContext,
723
723
  drawView
724
724
  };
@@ -2488,7 +2488,7 @@ var __privateMethod = (obj, member, method) => {
2488
2488
  function drawImage(ctx, elem, opts) {
2489
2489
  const content = opts.loader.getContent(elem);
2490
2490
  const { viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2491
- const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calcViewElementSize(elem, { viewScaleInfo, viewSizeInfo }) || elem;
2491
+ const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calcViewElementSize(elem, { viewScaleInfo }) || elem;
2492
2492
  const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
2493
2493
  rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
2494
2494
  drawBoxShadow(ctx, viewElem, {
@@ -2511,6 +2511,10 @@ var __privateMethod = (obj, member, method) => {
2511
2511
  viewScaleInfo,
2512
2512
  viewSizeInfo
2513
2513
  });
2514
+ const { detail } = elem;
2515
+ const { scaleMode, originW = 0, originH = 0 } = detail;
2516
+ const imageW = ctx.$undoPixelRatio(originW);
2517
+ const imageH = ctx.$undoPixelRatio(originH);
2514
2518
  ctx.save();
2515
2519
  ctx.fillStyle = "transparent";
2516
2520
  ctx.beginPath();
@@ -2522,7 +2526,41 @@ var __privateMethod = (obj, member, method) => {
2522
2526
  ctx.closePath();
2523
2527
  ctx.fill();
2524
2528
  ctx.clip();
2525
- ctx.drawImage(content, x3, y3, w3, h3);
2529
+ if (scaleMode && originH && originW) {
2530
+ let sx = 0;
2531
+ let sy = 0;
2532
+ let sWidth = imageW;
2533
+ let sHeight = imageH;
2534
+ const dx = x3;
2535
+ const dy = y3;
2536
+ const dWidth = w3;
2537
+ const dHeight = h3;
2538
+ if (imageW > elem.w || imageH > elem.h) {
2539
+ if (scaleMode === "fill") {
2540
+ const sourceScale = Math.max(elem.w / imageW, elem.h / imageH);
2541
+ const newImageWidth = imageW * sourceScale;
2542
+ const newImageHeight = imageH * sourceScale;
2543
+ sx = (newImageWidth - elem.w) / 2 / sourceScale;
2544
+ sy = (newImageHeight - elem.h) / 2 / sourceScale;
2545
+ sWidth = elem.w / sourceScale;
2546
+ sHeight = elem.h / sourceScale;
2547
+ } else if (scaleMode === "tile") {
2548
+ sx = 0;
2549
+ sy = 0;
2550
+ sWidth = elem.w;
2551
+ sHeight = elem.h;
2552
+ } else if (scaleMode === "fit") {
2553
+ const sourceScale = Math.min(elem.w / imageW, elem.h / imageH);
2554
+ sx = (imageW - elem.w / sourceScale) / 2;
2555
+ sy = (imageH - elem.h / sourceScale) / 2;
2556
+ sWidth = elem.w / sourceScale;
2557
+ sHeight = elem.h / sourceScale;
2558
+ }
2559
+ }
2560
+ ctx.drawImage(content, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
2561
+ } else {
2562
+ ctx.drawImage(content, x3, y3, w3, h3);
2563
+ }
2526
2564
  ctx.globalAlpha = parentOpacity;
2527
2565
  ctx.restore();
2528
2566
  }
@@ -2681,7 +2719,7 @@ var __privateMethod = (obj, member, method) => {
2681
2719
  }
2682
2720
  function drawPath(ctx, elem, opts) {
2683
2721
  const { detail } = elem;
2684
- const { originX, originY, originW, originH } = detail;
2722
+ const { originX, originY, originW, originH, fillRule } = detail;
2685
2723
  const { viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
2686
2724
  const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calcViewElementSize(elem, { viewScaleInfo }) || elem;
2687
2725
  const scaleW = w2 / originW;
@@ -2711,7 +2749,7 @@ var __privateMethod = (obj, member, method) => {
2711
2749
  const path2d = new Path2D(pathStr);
2712
2750
  if (detail.fill) {
2713
2751
  ctx.fillStyle = detail.fill;
2714
- ctx.fill(path2d);
2752
+ ctx.fill(path2d, fillRule);
2715
2753
  }
2716
2754
  if (detail.stroke && detail.strokeWidth !== 0) {
2717
2755
  ctx.strokeStyle = detail.stroke;
@@ -3795,15 +3833,15 @@ var __privateMethod = (obj, member, method) => {
3795
3833
  const originViewSize = sharer.getActiveViewSizeInfo();
3796
3834
  const newViewSize = Object.assign(Object.assign({}, originViewSize), viewSize);
3797
3835
  const { width, height, devicePixelRatio } = newViewSize;
3798
- const { underContext, boardContext, helperContext, viewContext } = __classPrivateFieldGet$1(this, _Viewer_opts, "f").boardContent;
3836
+ const { underlayContext, boardContext, overlayContext, viewContext } = __classPrivateFieldGet$1(this, _Viewer_opts, "f").boardContent;
3799
3837
  boardContext.canvas.width = width * devicePixelRatio;
3800
3838
  boardContext.canvas.height = height * devicePixelRatio;
3801
3839
  boardContext.canvas.style.width = `${width}px`;
3802
3840
  boardContext.canvas.style.height = `${height}px`;
3803
- underContext.canvas.width = width * devicePixelRatio;
3804
- underContext.canvas.height = height * devicePixelRatio;
3805
- helperContext.canvas.width = width * devicePixelRatio;
3806
- helperContext.canvas.height = height * devicePixelRatio;
3841
+ underlayContext.canvas.width = width * devicePixelRatio;
3842
+ underlayContext.canvas.height = height * devicePixelRatio;
3843
+ overlayContext.canvas.width = width * devicePixelRatio;
3844
+ overlayContext.canvas.height = height * devicePixelRatio;
3807
3845
  viewContext.canvas.width = width * devicePixelRatio;
3808
3846
  viewContext.canvas.height = height * devicePixelRatio;
3809
3847
  sharer.setActiveViewSizeInfo(newViewSize);
@@ -4036,18 +4074,18 @@ var __privateMethod = (obj, member, method) => {
4036
4074
  const { width, height, devicePixelRatio } = newViewSize;
4037
4075
  const { boardContent } = __classPrivateFieldGet(this, _Board_opts, "f");
4038
4076
  boardContent.viewContext.$resize({ width, height, devicePixelRatio });
4039
- boardContent.helperContext.$resize({ width, height, devicePixelRatio });
4077
+ boardContent.overlayContext.$resize({ width, height, devicePixelRatio });
4040
4078
  boardContent.boardContext.$resize({ width, height, devicePixelRatio });
4041
- boardContent.underContext.$resize({ width, height, devicePixelRatio });
4079
+ boardContent.underlayContext.$resize({ width, height, devicePixelRatio });
4042
4080
  __classPrivateFieldGet(this, _Board_viewer, "f").drawFrame();
4043
4081
  __classPrivateFieldGet(this, _Board_watcher, "f").trigger("resize", viewSize);
4044
4082
  __classPrivateFieldGet(this, _Board_sharer, "f").setActiveViewSizeInfo(newViewSize);
4045
4083
  }
4046
4084
  clear() {
4047
4085
  const { boardContent } = __classPrivateFieldGet(this, _Board_opts, "f");
4048
- const { underContext, helperContext, viewContext, boardContext } = boardContent;
4049
- underContext.clearRect(0, 0, underContext.canvas.width, underContext.canvas.height);
4050
- helperContext.clearRect(0, 0, helperContext.canvas.width, helperContext.canvas.height);
4086
+ const { underlayContext, overlayContext, viewContext, boardContext } = boardContent;
4087
+ underlayContext.clearRect(0, 0, underlayContext.canvas.width, underlayContext.canvas.height);
4088
+ overlayContext.clearRect(0, 0, overlayContext.canvas.width, overlayContext.canvas.height);
4051
4089
  viewContext.clearRect(0, 0, viewContext.canvas.width, viewContext.canvas.height);
4052
4090
  boardContext.clearRect(0, 0, boardContext.canvas.width, boardContext.canvas.height);
4053
4091
  __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleClear).call(this);
@@ -5834,7 +5872,7 @@ var __privateMethod = (obj, member, method) => {
5834
5872
  };
5835
5873
  const MiddlewareSelector = (opts) => {
5836
5874
  const { viewer, sharer, boardContent, calculator, eventHub } = opts;
5837
- const { helperContext } = boardContent;
5875
+ const { overlayContext } = boardContent;
5838
5876
  let prevPoint = null;
5839
5877
  let inBusyMode = null;
5840
5878
  sharer.setSharedStorage(keyActionType, null);
@@ -5891,7 +5929,7 @@ var __privateMethod = (obj, member, method) => {
5891
5929
  };
5892
5930
  const pointTargetBaseOptions = () => {
5893
5931
  return {
5894
- ctx: helperContext,
5932
+ ctx: overlayContext,
5895
5933
  calculator,
5896
5934
  data: sharer.getActiveStorage("data"),
5897
5935
  selectedElements: getActiveElements(),
@@ -5982,7 +6020,7 @@ var __privateMethod = (obj, member, method) => {
5982
6020
  };
5983
6021
  if ((groupQueue == null ? void 0 : groupQueue.length) > 0) {
5984
6022
  const isInActiveGroup = isPointInViewActiveGroup(e.point, {
5985
- ctx: helperContext,
6023
+ ctx: overlayContext,
5986
6024
  viewScaleInfo: sharer.getActiveViewScaleInfo(),
5987
6025
  viewSizeInfo: sharer.getActiveViewSizeInfo(),
5988
6026
  groupQueue: sharer.getSharedStorage(keyGroupQueue)
@@ -6059,7 +6097,7 @@ var __privateMethod = (obj, member, method) => {
6059
6097
  const groupQueue = sharer.getSharedStorage(keyGroupQueue);
6060
6098
  if ((groupQueue == null ? void 0 : groupQueue.length) > 0) {
6061
6099
  if (isPointInViewActiveGroup(e.point, {
6062
- ctx: helperContext,
6100
+ ctx: overlayContext,
6063
6101
  viewScaleInfo: sharer.getActiveViewScaleInfo(),
6064
6102
  viewSizeInfo: sharer.getActiveViewSizeInfo(),
6065
6103
  groupQueue
@@ -6404,10 +6442,10 @@ var __privateMethod = (obj, member, method) => {
6404
6442
  }) : null;
6405
6443
  const isLock = !!((_a = hoverElement == null ? void 0 : hoverElement.operations) == null ? void 0 : _a.lock);
6406
6444
  if ((groupQueue == null ? void 0 : groupQueue.length) > 0) {
6407
- drawGroupQueueVertexesWrappers(helperContext, groupQueueVertexesList, drawBaseOpts);
6445
+ drawGroupQueueVertexesWrappers(overlayContext, groupQueueVertexesList, drawBaseOpts);
6408
6446
  if (hoverElement && actionType !== "drag") {
6409
6447
  if (isLock) {
6410
- drawLockVertexesWrapper(helperContext, hoverElementVertexes, {
6448
+ drawLockVertexesWrapper(overlayContext, hoverElementVertexes, {
6411
6449
  ...drawBaseOpts,
6412
6450
  controller: calcElementSizeController(hoverElement, {
6413
6451
  groupQueue,
@@ -6416,11 +6454,11 @@ var __privateMethod = (obj, member, method) => {
6416
6454
  })
6417
6455
  });
6418
6456
  } else {
6419
- drawHoverVertexesWrapper(helperContext, hoverElementVertexes, drawBaseOpts);
6457
+ drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
6420
6458
  }
6421
6459
  }
6422
6460
  if (!isLock && elem && ["select", "drag", "resize"].includes(actionType)) {
6423
- drawSelectedElementControllersVertexes(helperContext, selectedElementController, {
6461
+ drawSelectedElementControllersVertexes(overlayContext, selectedElementController, {
6424
6462
  ...drawBaseOpts,
6425
6463
  element: elem,
6426
6464
  calculator,
@@ -6429,7 +6467,7 @@ var __privateMethod = (obj, member, method) => {
6429
6467
  if (actionType === "drag") {
6430
6468
  const xLines = sharer2.getSharedStorage(keySelectedReferenceXLines);
6431
6469
  const yLines = sharer2.getSharedStorage(keySelectedReferenceYLines);
6432
- drawReferenceLines(helperContext, {
6470
+ drawReferenceLines(overlayContext, {
6433
6471
  xLines,
6434
6472
  yLines
6435
6473
  });
@@ -6438,7 +6476,7 @@ var __privateMethod = (obj, member, method) => {
6438
6476
  } else {
6439
6477
  if (hoverElement && actionType !== "drag") {
6440
6478
  if (isLock) {
6441
- drawLockVertexesWrapper(helperContext, hoverElementVertexes, {
6479
+ drawLockVertexesWrapper(overlayContext, hoverElementVertexes, {
6442
6480
  ...drawBaseOpts,
6443
6481
  controller: calcElementSizeController(hoverElement, {
6444
6482
  groupQueue,
@@ -6447,11 +6485,11 @@ var __privateMethod = (obj, member, method) => {
6447
6485
  })
6448
6486
  });
6449
6487
  } else {
6450
- drawHoverVertexesWrapper(helperContext, hoverElementVertexes, drawBaseOpts);
6488
+ drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
6451
6489
  }
6452
6490
  }
6453
6491
  if (!isLock && elem && ["select", "drag", "resize"].includes(actionType)) {
6454
- drawSelectedElementControllersVertexes(helperContext, selectedElementController, {
6492
+ drawSelectedElementControllersVertexes(overlayContext, selectedElementController, {
6455
6493
  ...drawBaseOpts,
6456
6494
  element: elem,
6457
6495
  calculator,
@@ -6460,13 +6498,13 @@ var __privateMethod = (obj, member, method) => {
6460
6498
  if (actionType === "drag") {
6461
6499
  const xLines = sharer2.getSharedStorage(keySelectedReferenceXLines);
6462
6500
  const yLines = sharer2.getSharedStorage(keySelectedReferenceYLines);
6463
- drawReferenceLines(helperContext, {
6501
+ drawReferenceLines(overlayContext, {
6464
6502
  xLines,
6465
6503
  yLines
6466
6504
  });
6467
6505
  }
6468
6506
  } else if (actionType === "area" && areaStart && areaEnd) {
6469
- drawArea(helperContext, { start: areaStart, end: areaEnd });
6507
+ drawArea(overlayContext, { start: areaStart, end: areaEnd });
6470
6508
  } else if (["drag-list", "drag-list-end"].includes(actionType)) {
6471
6509
  const listAreaSize = calcSelectedElementsArea(getActiveElements(), {
6472
6510
  viewScaleInfo: sharer2.getActiveViewScaleInfo(),
@@ -6474,7 +6512,7 @@ var __privateMethod = (obj, member, method) => {
6474
6512
  calculator
6475
6513
  });
6476
6514
  if (listAreaSize) {
6477
- drawListArea(helperContext, { areaSize: listAreaSize });
6515
+ drawListArea(overlayContext, { areaSize: listAreaSize });
6478
6516
  }
6479
6517
  }
6480
6518
  }
@@ -6496,8 +6534,8 @@ var __privateMethod = (obj, member, method) => {
6496
6534
  scrollBarColor: "#FFFFFF60",
6497
6535
  showScrollBar: false
6498
6536
  };
6499
- function isPointAtRect(helperContext, p, rect) {
6500
- const ctx = helperContext;
6537
+ function isPointAtRect(overlayContext, p, rect) {
6538
+ const ctx = overlayContext;
6501
6539
  const { x: x2, y: y2, w: w2, h: h2 } = rect;
6502
6540
  ctx.beginPath();
6503
6541
  ctx.rect(x2, y2, w2, h2);
@@ -6507,12 +6545,12 @@ var __privateMethod = (obj, member, method) => {
6507
6545
  }
6508
6546
  return false;
6509
6547
  }
6510
- function isPointInScrollThumb(helperContext, p, opts) {
6548
+ function isPointInScrollThumb(overlayContext, p, opts) {
6511
6549
  let thumbType = null;
6512
6550
  const { xThumbRect, yThumbRect } = opts;
6513
- if (xThumbRect && isPointAtRect(helperContext, p, xThumbRect)) {
6551
+ if (xThumbRect && isPointAtRect(overlayContext, p, xThumbRect)) {
6514
6552
  thumbType = "X";
6515
- } else if (yThumbRect && isPointAtRect(helperContext, p, yThumbRect)) {
6553
+ } else if (yThumbRect && isPointAtRect(overlayContext, p, yThumbRect)) {
6516
6554
  thumbType = "Y";
6517
6555
  }
6518
6556
  return thumbType;
@@ -6636,8 +6674,8 @@ var __privateMethod = (obj, member, method) => {
6636
6674
  }
6637
6675
  ctx.restore();
6638
6676
  }
6639
- function drawScrollerInfo(helperContext, opts) {
6640
- const ctx = helperContext;
6677
+ function drawScrollerInfo(overlayContext, opts) {
6678
+ const ctx = overlayContext;
6641
6679
  const { viewScaleInfo, viewSizeInfo, scrollInfo } = opts;
6642
6680
  const { activeThumbType, prevPoint, activePoint } = scrollInfo;
6643
6681
  const wrapper = calcScrollerInfo(viewScaleInfo, viewSizeInfo);
@@ -6680,7 +6718,7 @@ var __privateMethod = (obj, member, method) => {
6680
6718
  }
6681
6719
  const MiddlewareScroller = (opts) => {
6682
6720
  const { viewer, boardContent, sharer } = opts;
6683
- const { helperContext } = boardContent;
6721
+ const { overlayContext } = boardContent;
6684
6722
  sharer.setSharedStorage(keyXThumbRect, null);
6685
6723
  sharer.setSharedStorage(keyYThumbRect, null);
6686
6724
  const clear = () => {
@@ -6714,7 +6752,7 @@ var __privateMethod = (obj, member, method) => {
6714
6752
  }
6715
6753
  };
6716
6754
  const getThumbType = (p) => {
6717
- return isPointInScrollThumb(helperContext, p, {
6755
+ return isPointInScrollThumb(overlayContext, p, {
6718
6756
  xThumbRect: sharer.getSharedStorage(keyXThumbRect),
6719
6757
  yThumbRect: sharer.getSharedStorage(keyYThumbRect)
6720
6758
  });
@@ -6761,7 +6799,7 @@ var __privateMethod = (obj, member, method) => {
6761
6799
  }
6762
6800
  },
6763
6801
  beforeDrawFrame({ snapshot }) {
6764
- const { xThumbRect, yThumbRect } = drawScroller(helperContext, { snapshot });
6802
+ const { xThumbRect, yThumbRect } = drawScroller(overlayContext, { snapshot });
6765
6803
  sharer.setSharedStorage(keyXThumbRect, xThumbRect);
6766
6804
  sharer.setSharedStorage(keyYThumbRect, yThumbRect);
6767
6805
  }
@@ -6806,12 +6844,35 @@ var __privateMethod = (obj, member, method) => {
6806
6844
  const gridKeyColor = "#AAAAAA40";
6807
6845
  const lineSize = 1;
6808
6846
  const selectedAreaColor = "#196097";
6847
+ const limitRulerUnitList = [1, 2, 5, 10, 20, 50, 100, 200, 500];
6848
+ function limitRulerUnit(unit) {
6849
+ unit = Math.max(limitRulerUnitList[0], Math.min(unit, limitRulerUnitList[limitRulerUnitList.length - 1]));
6850
+ for (let i = 0; i < limitRulerUnitList.length - 1; i++) {
6851
+ const thisUnit = limitRulerUnitList[i];
6852
+ const nextUnit = limitRulerUnitList[i + 1];
6853
+ if (unit > nextUnit) {
6854
+ continue;
6855
+ }
6856
+ if (unit === thisUnit) {
6857
+ return unit;
6858
+ }
6859
+ if (unit === nextUnit) {
6860
+ return unit;
6861
+ }
6862
+ const mid = (thisUnit + nextUnit) / 2;
6863
+ if (unit <= mid) {
6864
+ return thisUnit;
6865
+ }
6866
+ return nextUnit;
6867
+ }
6868
+ return unit;
6869
+ }
6809
6870
  function calcRulerScaleList(opts) {
6810
6871
  const { scale, viewLength, viewOffset } = opts;
6811
6872
  const list = [];
6812
6873
  let rulerUnit = 10;
6813
6874
  rulerUnit = formatNumber(rulerUnit / scale, { decimalPlaces: 0 });
6814
- rulerUnit = Math.max(10, Math.min(rulerUnit, 1e3));
6875
+ rulerUnit = limitRulerUnit(rulerUnit);
6815
6876
  const rulerKeyUnit = rulerUnit * 10;
6816
6877
  const rulerSubKeyUnit = rulerUnit * 5;
6817
6878
  let index = 0;
@@ -6834,7 +6895,7 @@ var __privateMethod = (obj, member, method) => {
6834
6895
  list.push(rulerScale);
6835
6896
  index++;
6836
6897
  }
6837
- return list;
6898
+ return { list, rulerUnit };
6838
6899
  }
6839
6900
  function calcXRulerScaleList(opts) {
6840
6901
  const { viewScaleInfo, viewSizeInfo } = opts;
@@ -6946,7 +7007,7 @@ var __privateMethod = (obj, member, method) => {
6946
7007
  ctx.strokeStyle = borderColor;
6947
7008
  ctx.stroke();
6948
7009
  }
6949
- function drawUnderGrid(ctx, opts) {
7010
+ function drawGrid(ctx, opts) {
6950
7011
  const { xList, yList, viewSizeInfo } = opts;
6951
7012
  const { width, height } = viewSizeInfo;
6952
7013
  for (let i = 0; i < xList.length; i++) {
@@ -7034,7 +7095,7 @@ var __privateMethod = (obj, member, method) => {
7034
7095
  const middlewareEventRuler = "@middleware/show-ruler";
7035
7096
  const MiddlewareRuler = (opts) => {
7036
7097
  const { boardContent, viewer, eventHub, calculator } = opts;
7037
- const { helperContext, underContext } = boardContent;
7098
+ const { overlayContext, underlayContext } = boardContent;
7038
7099
  let show = true;
7039
7100
  let showGrid = true;
7040
7101
  const rulerCallback = (e) => {
@@ -7060,14 +7121,15 @@ var __privateMethod = (obj, member, method) => {
7060
7121
  if (show === true) {
7061
7122
  const viewScaleInfo = getViewScaleInfoFromSnapshot(snapshot);
7062
7123
  const viewSizeInfo = getViewSizeInfoFromSnapshot(snapshot);
7063
- drawScrollerSelectedArea(helperContext, { snapshot, calculator });
7064
- drawRulerBackground(helperContext, { viewScaleInfo, viewSizeInfo });
7065
- const xList = calcXRulerScaleList({ viewScaleInfo, viewSizeInfo });
7066
- drawXRuler(helperContext, { scaleList: xList });
7067
- const yList = calcYRulerScaleList({ viewScaleInfo, viewSizeInfo });
7068
- drawYRuler(helperContext, { scaleList: yList });
7124
+ drawScrollerSelectedArea(overlayContext, { snapshot, calculator });
7125
+ drawRulerBackground(overlayContext, { viewScaleInfo, viewSizeInfo });
7126
+ const { list: xList, rulerUnit } = calcXRulerScaleList({ viewScaleInfo, viewSizeInfo });
7127
+ drawXRuler(overlayContext, { scaleList: xList });
7128
+ const { list: yList } = calcYRulerScaleList({ viewScaleInfo, viewSizeInfo });
7129
+ drawYRuler(overlayContext, { scaleList: yList });
7069
7130
  if (showGrid === true) {
7070
- drawUnderGrid(underContext, {
7131
+ const ctx = rulerUnit === 1 ? overlayContext : underlayContext;
7132
+ drawGrid(ctx, {
7071
7133
  xList,
7072
7134
  yList,
7073
7135
  viewScaleInfo,
@@ -7236,7 +7298,7 @@ var __privateMethod = (obj, member, method) => {
7236
7298
  const infoLineHeight = 16;
7237
7299
  const MiddlewareInfo = (opts) => {
7238
7300
  const { boardContent, calculator } = opts;
7239
- const { helperContext } = boardContent;
7301
+ const { overlayContext } = boardContent;
7240
7302
  return {
7241
7303
  name: "@middleware/info",
7242
7304
  beforeDrawFrame({ snapshot }) {
@@ -7292,7 +7354,7 @@ var __privateMethod = (obj, member, method) => {
7292
7354
  const xyText = `${formatNumber(x22, { decimalPlaces: 0 })},${formatNumber(y22, { decimalPlaces: 0 })}`;
7293
7355
  const whText = `${formatNumber(w22, { decimalPlaces: 0 })}x${formatNumber(h22, { decimalPlaces: 0 })}`;
7294
7356
  const angleText = `${formatNumber(elem.angle || 0, { decimalPlaces: 0 })}°`;
7295
- drawSizeInfoText(helperContext, {
7357
+ drawSizeInfoText(overlayContext, {
7296
7358
  point: {
7297
7359
  x: rectInfo.bottom.x,
7298
7360
  y: rectInfo.bottom.y + infoFontSize
@@ -7305,7 +7367,7 @@ var __privateMethod = (obj, member, method) => {
7305
7367
  color: infoTextColor,
7306
7368
  background: infoBackground
7307
7369
  });
7308
- drawPositionInfoText(helperContext, {
7370
+ drawPositionInfoText(overlayContext, {
7309
7371
  point: {
7310
7372
  x: rectInfo.topLeft.x,
7311
7373
  y: rectInfo.topLeft.y - infoFontSize * 2
@@ -7318,7 +7380,7 @@ var __privateMethod = (obj, member, method) => {
7318
7380
  color: infoTextColor,
7319
7381
  background: infoBackground
7320
7382
  });
7321
- drawAngleInfoText(helperContext, {
7383
+ drawAngleInfoText(overlayContext, {
7322
7384
  point: {
7323
7385
  x: rectInfo.top.x + infoFontSize,
7324
7386
  y: rectInfo.top.y - infoFontSize * 2
@@ -7433,7 +7495,7 @@ var __privateMethod = (obj, member, method) => {
7433
7495
  }
7434
7496
  const MiddlewareLayoutSelector = (opts) => {
7435
7497
  const { sharer, boardContent, calculator, viewer, eventHub } = opts;
7436
- const { helperContext } = boardContent;
7498
+ const { overlayContext } = boardContent;
7437
7499
  let prevPoint = null;
7438
7500
  const clear = () => {
7439
7501
  prevPoint = null;
@@ -7653,7 +7715,7 @@ var __privateMethod = (obj, member, method) => {
7653
7715
  const { x: x2, y: y2, w: w2, h: h2 } = activeStore.data.layout;
7654
7716
  const size = { x: x2, y: y2, w: w2, h: h2 };
7655
7717
  const controller = calcLayoutSizeController(size, { viewScaleInfo, controllerSize: 10 });
7656
- drawLayoutController(helperContext, { controller, operations: activeStore.data.layout.operations || {} });
7718
+ drawLayoutController(overlayContext, { controller, operations: activeStore.data.layout.operations || {} });
7657
7719
  }
7658
7720
  }
7659
7721
  },