@idraw/core 0.4.0-beta.16 → 0.4.0-beta.17

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.
@@ -1,4 +1,4 @@
1
- import type { Data, PointSize, CoreOptions, BoardMiddleware, ViewSizeInfo, CoreEventMap, ViewScaleInfo, LoadItemMap } from '@idraw/types';
1
+ import type { Data, PointSize, CoreOptions, BoardMiddleware, ViewSizeInfo, CoreEventMap, ViewScaleInfo, LoadItemMap, ModifyOptions } from '@idraw/types';
2
2
  export { MiddlewareSelector, middlewareEventSelect, middlewareEventSelectClear } from './middleware/selector';
3
3
  export { MiddlewareScroller } from './middleware/scroller';
4
4
  export { MiddlewareScaler, middlewareEventScale } from './middleware/scaler';
@@ -12,7 +12,9 @@ export declare class Core<E extends CoreEventMap = CoreEventMap> {
12
12
  destroy(): void;
13
13
  use(middleware: BoardMiddleware<any, any>): void;
14
14
  disuse(middleware: BoardMiddleware<any, any>): void;
15
- setData(data: Data): void;
15
+ setData(data: Data, opts?: {
16
+ modifiedOptions?: ModifyOptions;
17
+ }): void;
16
18
  getData(): Data | null;
17
19
  scale(opts: {
18
20
  scale: number;
package/dist/esm/index.js CHANGED
@@ -61,9 +61,9 @@ export class Core {
61
61
  disuse(middleware) {
62
62
  __classPrivateFieldGet(this, _Core_board, "f").disuse(middleware);
63
63
  }
64
- setData(data) {
64
+ setData(data, opts) {
65
65
  validateElements((data === null || data === void 0 ? void 0 : data.elements) || []);
66
- __classPrivateFieldGet(this, _Core_board, "f").setData(data);
66
+ __classPrivateFieldGet(this, _Core_board, "f").setData(data, opts);
67
67
  }
68
68
  getData() {
69
69
  return __classPrivateFieldGet(this, _Core_board, "f").getData();
@@ -8,6 +8,9 @@ export declare const keyHoverElementVertexes: unique symbol;
8
8
  export declare const keySelectedElementList: unique symbol;
9
9
  export declare const keySelectedElementListVertexes: unique symbol;
10
10
  export declare const keySelectedElementController: unique symbol;
11
+ export declare const keySelectedElementPosition: unique symbol;
12
+ export declare const keySelectedReferenceXLines: unique symbol;
13
+ export declare const keySelectedReferenceYLines: unique symbol;
11
14
  export declare const keyGroupQueue: unique symbol;
12
15
  export declare const keyGroupQueueVertexesList: unique symbol;
13
16
  export declare const keyIsMoving: unique symbol;
@@ -24,3 +27,4 @@ export declare const wrapperColor = "#1973ba";
24
27
  export declare const lockColor = "#5b5959b5";
25
28
  export declare const controllerSize = 10;
26
29
  export declare const auxiliaryColor = "#f7276e";
30
+ export declare const referenceColor = "#f7276e";
@@ -8,6 +8,9 @@ export const keyHoverElementVertexes = Symbol(`${key}_hoverElementVertexes`);
8
8
  export const keySelectedElementList = Symbol(`${key}_selectedElementList`);
9
9
  export const keySelectedElementListVertexes = Symbol(`${key}_selectedElementListVertexes`);
10
10
  export const keySelectedElementController = Symbol(`${key}_selectedElementController`);
11
+ export const keySelectedElementPosition = Symbol(`${key}_selectedElementPosition`);
12
+ export const keySelectedReferenceXLines = Symbol(`${key}_selectedReferenceXLines`);
13
+ export const keySelectedReferenceYLines = Symbol(`${key}_selectedReferenceYLines`);
11
14
  export const keyGroupQueue = Symbol(`${key}_groupQueue`);
12
15
  export const keyGroupQueueVertexesList = Symbol(`${key}_groupQueueVertexesList`);
13
16
  export const keyIsMoving = Symbol(`${key}_isMoving`);
@@ -24,3 +27,4 @@ export const wrapperColor = '#1973ba';
24
27
  export const lockColor = '#5b5959b5';
25
28
  export const controllerSize = 10;
26
29
  export const auxiliaryColor = '#f7276e';
30
+ export const referenceColor = '#f7276e';
@@ -1,7 +1,7 @@
1
- import type { ViewContext2D, ViewRectVertexes, Element, ViewScaleInfo } from '@idraw/types';
2
- export declare function drawAuxiliaryLines(ctx: ViewContext2D, opts: {
3
- vertexes: ViewRectVertexes;
1
+ import type { ViewContext2D, Element, ViewScaleInfo, ViewSizeInfo, ViewCalculator } from '@idraw/types';
2
+ export declare function drawAuxiliaryExperimentBox(ctx: ViewContext2D, opts: {
3
+ calculator: ViewCalculator;
4
4
  element: Element | null;
5
- groupQueue: Element<'group'>[];
6
5
  viewScaleInfo: ViewScaleInfo;
6
+ viewSizeInfo: ViewSizeInfo;
7
7
  }): void;
@@ -1,25 +1,40 @@
1
- import { getElementViewRectInfo } from './auxiliary';
2
1
  import { auxiliaryColor } from './config';
3
2
  import { drawLine, drawCrossByCenter } from './draw-base';
4
- export function drawAuxiliaryLines(ctx, opts) {
5
- const { element, groupQueue, viewScaleInfo } = opts;
3
+ function getViewBoxInfo(rectInfo) {
4
+ const boxInfo = {
5
+ minX: rectInfo.topLeft.x,
6
+ minY: rectInfo.topLeft.y,
7
+ maxX: rectInfo.bottomRight.x,
8
+ maxY: rectInfo.bottomRight.y,
9
+ midX: rectInfo.center.x,
10
+ midY: rectInfo.center.y
11
+ };
12
+ return boxInfo;
13
+ }
14
+ export function drawAuxiliaryExperimentBox(ctx, opts) {
15
+ const { element, viewScaleInfo, viewSizeInfo, calculator } = opts;
6
16
  if (!element) {
7
17
  return;
8
18
  }
9
- const viewRectInfo = getElementViewRectInfo(element, {
10
- groupQueue,
11
- viewScaleInfo
12
- });
19
+ const viewRectInfo = calculator.calcViewRectInfoFromRange(element.uuid, { viewScaleInfo, viewSizeInfo });
20
+ if (!viewRectInfo) {
21
+ return;
22
+ }
13
23
  const lineOpts = {
14
24
  borderColor: auxiliaryColor,
15
25
  borderWidth: 1,
16
26
  lineDash: []
17
27
  };
18
- drawLine(ctx, viewRectInfo.topLeft, viewRectInfo.topRight, lineOpts);
19
- drawLine(ctx, viewRectInfo.topRight, viewRectInfo.bottomRight, lineOpts);
20
- drawLine(ctx, viewRectInfo.bottomRight, viewRectInfo.bottomLeft, lineOpts);
21
- drawLine(ctx, viewRectInfo.bottomLeft, viewRectInfo.topLeft, lineOpts);
28
+ const boxInfo = getViewBoxInfo(viewRectInfo);
29
+ const { width, height } = viewSizeInfo;
30
+ drawLine(ctx, { x: boxInfo.minX, y: 0 }, { x: boxInfo.minX, y: height }, lineOpts);
31
+ drawLine(ctx, { x: boxInfo.midX, y: 0 }, { x: boxInfo.midX, y: height }, lineOpts);
32
+ drawLine(ctx, { x: boxInfo.maxX, y: 0 }, { x: boxInfo.maxX, y: height }, lineOpts);
33
+ drawLine(ctx, { x: 0, y: boxInfo.minY }, { x: width, y: boxInfo.minY }, lineOpts);
34
+ drawLine(ctx, { x: 0, y: boxInfo.midY }, { x: width, y: boxInfo.midY }, lineOpts);
35
+ drawLine(ctx, { x: 0, y: boxInfo.maxY }, { x: width, y: boxInfo.maxY }, lineOpts);
22
36
  const crossOpts = Object.assign(Object.assign({}, lineOpts), { size: 6 });
37
+ drawCrossByCenter(ctx, viewRectInfo.center, crossOpts);
23
38
  drawCrossByCenter(ctx, viewRectInfo.topLeft, crossOpts);
24
39
  drawCrossByCenter(ctx, viewRectInfo.topRight, crossOpts);
25
40
  drawCrossByCenter(ctx, viewRectInfo.bottomLeft, crossOpts);
@@ -0,0 +1,5 @@
1
+ import type { ViewContext2D, PointSize } from '@idraw/types';
2
+ export declare function drawReferenceLines(ctx: ViewContext2D, opts: {
3
+ xLines?: Array<PointSize[]>;
4
+ yLines?: Array<PointSize[]>;
5
+ }): void;
@@ -0,0 +1,31 @@
1
+ import { referenceColor } from './config';
2
+ import { drawLine, drawCrossByCenter } from './draw-base';
3
+ export function drawReferenceLines(ctx, opts) {
4
+ const { xLines, yLines } = opts;
5
+ const lineOpts = {
6
+ borderColor: referenceColor,
7
+ borderWidth: 1,
8
+ lineDash: []
9
+ };
10
+ const crossOpts = Object.assign(Object.assign({}, lineOpts), { size: 6 });
11
+ if (xLines) {
12
+ xLines.forEach((line) => {
13
+ line.forEach((p, pIdx) => {
14
+ drawCrossByCenter(ctx, p, crossOpts);
15
+ if (line[pIdx + 1]) {
16
+ drawLine(ctx, line[pIdx], line[pIdx + 1], lineOpts);
17
+ }
18
+ });
19
+ });
20
+ }
21
+ if (yLines) {
22
+ yLines.forEach((line) => {
23
+ line.forEach((p, pIdx) => {
24
+ drawCrossByCenter(ctx, p, crossOpts);
25
+ if (line[pIdx + 1]) {
26
+ drawLine(ctx, line[pIdx], line[pIdx + 1], lineOpts);
27
+ }
28
+ });
29
+ });
30
+ }
31
+ }
@@ -1,4 +1,4 @@
1
- import type { Element, ElementType, PointSize, RendererDrawElementOptions, ViewContext2D, ViewRectVertexes, ViewScaleInfo, ViewSizeInfo, ElementSizeController } from '@idraw/types';
1
+ import type { Element, ElementType, PointSize, RendererDrawElementOptions, ViewContext2D, ViewRectVertexes, ViewScaleInfo, ViewSizeInfo, ElementSizeController, ViewCalculator } from '@idraw/types';
2
2
  import type { AreaSize } from './types';
3
3
  export declare function drawHoverVertexesWrapper(ctx: ViewContext2D, vertexes: ViewRectVertexes | null, opts: {
4
4
  viewScaleInfo: ViewScaleInfo;
@@ -14,7 +14,7 @@ export declare function drawSelectedElementControllersVertexes(ctx: ViewContext2
14
14
  viewScaleInfo: ViewScaleInfo;
15
15
  viewSizeInfo: ViewSizeInfo;
16
16
  element: Element | null;
17
- groupQueue: Element<'group'>[];
17
+ calculator: ViewCalculator;
18
18
  }): void;
19
19
  export declare function drawElementListShadows(ctx: ViewContext2D, elements: Element<ElementType>[], opts?: Omit<RendererDrawElementOptions, 'loader'>): void;
20
20
  export declare function drawArea(ctx: ViewContext2D, opts: {
@@ -1,4 +1,4 @@
1
- import { rotateElementVertexes, calcViewPointSize, calcViewVertexes } from '@idraw/util';
1
+ import { rotateElementVertexes, calcViewPointSize, calcViewVertexes, calcViewElementSize } from '@idraw/util';
2
2
  import { resizeControllerBorderWidth, areaBorderWidth, wrapperColor, selectWrapperBorderWidth, lockColor, controllerSize } from './config';
3
3
  import { drawVertexes, drawLine, drawCircleController, drawCrossVertexes } from './draw-base';
4
4
  export function drawHoverVertexesWrapper(ctx, vertexes, opts) {
@@ -51,8 +51,7 @@ export function drawElementListShadows(ctx, elements, opts) {
51
51
  let { x, y, w, h } = elem;
52
52
  const { angle = 0 } = elem;
53
53
  if (opts === null || opts === void 0 ? void 0 : opts.calculator) {
54
- const { calculator } = opts;
55
- const size = calculator.elementSize({ x, y, w, h }, opts.viewScaleInfo, opts.viewSizeInfo);
54
+ const size = calcViewElementSize({ x, y, w, h }, opts);
56
55
  x = size.x;
57
56
  y = size.y;
58
57
  w = size.w;
@@ -1,7 +1,9 @@
1
- import { calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement } from '@idraw/util';
1
+ import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement } from '@idraw/util';
2
2
  import { drawHoverVertexesWrapper, drawLockVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
3
+ import { drawReferenceLines } from './draw-reference';
3
4
  import { getPointTarget, resizeElement, rotateElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup, calcMoveInGroup } from './util';
4
- import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keyIsMoving, controllerSize } from './config';
5
+ import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, controllerSize } from './config';
6
+ import { calcReferenceInfo } from './reference';
5
7
  import { middlewareEventTextEdit } from '../text-editor';
6
8
  export const middlewareEventSelect = '@middleware/select';
7
9
  export const middlewareEventSelectClear = '@middleware/select-clear';
@@ -46,6 +48,7 @@ export const MiddlewareSelector = (opts) => {
46
48
  sharer.setSharedStorage(keyHoverElementVertexes, vertexes);
47
49
  };
48
50
  const updateSelectedElementList = (list, opts) => {
51
+ var _a;
49
52
  sharer.setSharedStorage(keySelectedElementList, list);
50
53
  if (list.length === 1) {
51
54
  const controller = calcElementSizeController(list[0], {
@@ -54,9 +57,11 @@ export const MiddlewareSelector = (opts) => {
54
57
  viewScaleInfo: sharer.getActiveViewScaleInfo()
55
58
  });
56
59
  sharer.setSharedStorage(keySelectedElementController, controller);
60
+ sharer.setSharedStorage(keySelectedElementPosition, getElementPositionFromList(list[0].uuid, ((_a = sharer.getActiveStorage('data')) === null || _a === void 0 ? void 0 : _a.elements) || []));
57
61
  }
58
62
  else {
59
63
  sharer.setSharedStorage(keySelectedElementController, null);
64
+ sharer.setSharedStorage(keySelectedElementPosition, []);
60
65
  }
61
66
  if ((opts === null || opts === void 0 ? void 0 : opts.triggerEvent) === true) {
62
67
  eventHub.trigger(middlewareEventSelect, { uuids: list.map((elem) => elem.uuid) });
@@ -72,7 +77,8 @@ export const MiddlewareSelector = (opts) => {
72
77
  viewSizeInfo: sharer.getActiveViewSizeInfo(),
73
78
  groupQueue: sharer.getSharedStorage(keyGroupQueue),
74
79
  areaSize: null,
75
- selectedElementController: sharer.getSharedStorage(keySelectedElementController)
80
+ selectedElementController: sharer.getSharedStorage(keySelectedElementController),
81
+ selectedElementPosition: sharer.getSharedStorage(keySelectedElementPosition)
76
82
  };
77
83
  };
78
84
  const clear = () => {
@@ -87,6 +93,9 @@ export const MiddlewareSelector = (opts) => {
87
93
  sharer.setSharedStorage(keySelectedElementList, []);
88
94
  sharer.setSharedStorage(keySelectedElementListVertexes, null);
89
95
  sharer.setSharedStorage(keySelectedElementController, null);
96
+ sharer.setSharedStorage(keySelectedElementPosition, []);
97
+ sharer.setSharedStorage(keySelectedReferenceXLines, []);
98
+ sharer.setSharedStorage(keySelectedReferenceYLines, []);
90
99
  sharer.setSharedStorage(keyIsMoving, null);
91
100
  };
92
101
  clear();
@@ -285,6 +294,8 @@ export const MiddlewareSelector = (opts) => {
285
294
  },
286
295
  pointMove: (e) => {
287
296
  var _a, _b, _c;
297
+ sharer.setSharedStorage(keySelectedReferenceXLines, []);
298
+ sharer.setSharedStorage(keySelectedReferenceYLines, []);
288
299
  sharer.setSharedStorage(keyIsMoving, true);
289
300
  const data = sharer.getActiveStorage('data');
290
301
  const elems = getActiveElements();
@@ -300,9 +311,44 @@ export const MiddlewareSelector = (opts) => {
300
311
  inBusyMode = 'drag';
301
312
  if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && start && end && ((_b = (_a = elems[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.lock) !== true) {
302
313
  const { moveX, moveY } = calcMoveInGroup(start, end, groupQueue);
303
- elems[0].x += moveX / scale;
304
- elems[0].y += moveY / scale;
314
+ let totalMoveX = calculator.toGridNum(moveX / scale);
315
+ let totalMoveY = calculator.toGridNum(moveY / scale);
316
+ const referenceInfo = calcReferenceInfo(elems[0].uuid, {
317
+ calculator,
318
+ data,
319
+ groupQueue,
320
+ viewScaleInfo,
321
+ viewSizeInfo
322
+ });
323
+ try {
324
+ if (referenceInfo) {
325
+ if (is.x(referenceInfo.offsetX) && referenceInfo.offsetX !== null) {
326
+ totalMoveX = calculator.toGridNum(totalMoveX + referenceInfo.offsetX);
327
+ }
328
+ if (is.y(referenceInfo.offsetY) && referenceInfo.offsetY !== null) {
329
+ totalMoveY = calculator.toGridNum(totalMoveY + referenceInfo.offsetY);
330
+ }
331
+ sharer.setSharedStorage(keySelectedReferenceXLines, referenceInfo.xLines);
332
+ sharer.setSharedStorage(keySelectedReferenceYLines, referenceInfo.yLines);
333
+ }
334
+ }
335
+ catch (err) {
336
+ console.error(err);
337
+ }
338
+ elems[0].x = calculator.toGridNum(elems[0].x + totalMoveX);
339
+ elems[0].y = calculator.toGridNum(elems[0].y + totalMoveY);
305
340
  updateSelectedElementList([elems[0]]);
341
+ calculator.modifyViewVisibleInfoMap(data, {
342
+ modifyOptions: {
343
+ type: 'updateElement',
344
+ content: {
345
+ element: elems[0],
346
+ position: sharer.getSharedStorage(keySelectedElementPosition) || []
347
+ }
348
+ },
349
+ viewSizeInfo,
350
+ viewScaleInfo
351
+ });
306
352
  }
307
353
  viewer.drawFrame();
308
354
  }
@@ -314,8 +360,19 @@ export const MiddlewareSelector = (opts) => {
314
360
  elems.forEach((elem) => {
315
361
  var _a;
316
362
  if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.lock) !== true) {
317
- elem.x += moveX;
318
- elem.y += moveY;
363
+ elem.x = calculator.toGridNum(elem.x + moveX);
364
+ elem.y = calculator.toGridNum(elem.y + moveY);
365
+ calculator.modifyViewVisibleInfoMap(data, {
366
+ modifyOptions: {
367
+ type: 'updateElement',
368
+ content: {
369
+ element: elem,
370
+ position: sharer.getSharedStorage(keySelectedElementPosition) || []
371
+ }
372
+ },
373
+ viewSizeInfo,
374
+ viewScaleInfo
375
+ });
319
376
  }
320
377
  });
321
378
  sharer.setActiveStorage('data', data);
@@ -364,20 +421,31 @@ export const MiddlewareSelector = (opts) => {
364
421
  }
365
422
  else {
366
423
  const resizedElemSize = resizeElement(elems[0], { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
367
- elems[0].x = resizedElemSize.x;
368
- elems[0].y = resizedElemSize.y;
424
+ elems[0].x = calculator.toGridNum(resizedElemSize.x);
425
+ elems[0].y = calculator.toGridNum(resizedElemSize.y);
369
426
  if (elems[0].type === 'group' && ((_c = elems[0].operations) === null || _c === void 0 ? void 0 : _c.deepResize) === true) {
370
427
  deepResizeGroupElement(elems[0], {
371
- w: resizedElemSize.w,
372
- h: resizedElemSize.h
428
+ w: calculator.toGridNum(resizedElemSize.w),
429
+ h: calculator.toGridNum(resizedElemSize.h)
373
430
  });
374
431
  }
375
432
  else {
376
- elems[0].w = resizedElemSize.w;
377
- elems[0].h = resizedElemSize.h;
433
+ elems[0].w = calculator.toGridNum(resizedElemSize.w);
434
+ elems[0].h = calculator.toGridNum(resizedElemSize.h);
378
435
  }
379
436
  }
380
437
  updateSelectedElementList([elems[0]]);
438
+ calculator.modifyViewVisibleInfoMap(data, {
439
+ modifyOptions: {
440
+ type: 'updateElement',
441
+ content: {
442
+ element: elems[0],
443
+ position: sharer.getSharedStorage(keySelectedElementPosition) || []
444
+ }
445
+ },
446
+ viewSizeInfo,
447
+ viewScaleInfo
448
+ });
381
449
  viewer.drawFrame();
382
450
  }
383
451
  }
@@ -390,6 +458,8 @@ export const MiddlewareSelector = (opts) => {
390
458
  },
391
459
  pointEnd(e) {
392
460
  inBusyMode = null;
461
+ sharer.setSharedStorage(keySelectedReferenceXLines, []);
462
+ sharer.setSharedStorage(keySelectedReferenceYLines, []);
393
463
  sharer.setSharedStorage(keyIsMoving, false);
394
464
  const data = sharer.getActiveStorage('data');
395
465
  const resizeType = sharer.getSharedStorage(keyResizeType);
@@ -536,7 +606,15 @@ export const MiddlewareSelector = (opts) => {
536
606
  }
537
607
  }
538
608
  if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
539
- drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, groupQueue, hideControllers: !!isMoving && actionType === 'drag' }));
609
+ drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag' }));
610
+ if (actionType === 'drag') {
611
+ const xLines = sharer.getSharedStorage(keySelectedReferenceXLines);
612
+ const yLines = sharer.getSharedStorage(keySelectedReferenceYLines);
613
+ drawReferenceLines(helperContext, {
614
+ xLines,
615
+ yLines
616
+ });
617
+ }
540
618
  }
541
619
  }
542
620
  else {
@@ -553,7 +631,15 @@ export const MiddlewareSelector = (opts) => {
553
631
  }
554
632
  }
555
633
  if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
556
- drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, groupQueue, hideControllers: !!isMoving && actionType === 'drag' }));
634
+ drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag' }));
635
+ if (actionType === 'drag') {
636
+ const xLines = sharer.getSharedStorage(keySelectedReferenceXLines);
637
+ const yLines = sharer.getSharedStorage(keySelectedReferenceYLines);
638
+ drawReferenceLines(helperContext, {
639
+ xLines,
640
+ yLines
641
+ });
642
+ }
557
643
  }
558
644
  else if (actionType === 'area' && areaStart && areaEnd) {
559
645
  drawArea(helperContext, { start: areaStart, end: areaEnd });
@@ -0,0 +1,13 @@
1
+ import type { Data, Element, PointSize, ViewScaleInfo, ViewSizeInfo, ViewCalculator } from '@idraw/types';
2
+ export declare function calcReferenceInfo(uuid: string, opts: {
3
+ data: Data;
4
+ groupQueue: Element<'group'>[];
5
+ calculator: ViewCalculator;
6
+ viewScaleInfo: ViewScaleInfo;
7
+ viewSizeInfo: ViewSizeInfo;
8
+ }): {
9
+ offsetX: number | null;
10
+ offsetY: number | null;
11
+ yLines: PointSize[][];
12
+ xLines: PointSize[][];
13
+ } | null;