@idraw/core 0.4.2 → 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/esm/board/index.d.ts +2 -2
  2. package/dist/esm/board/index.js +23 -12
  3. package/dist/esm/board/sharer.d.ts +3 -3
  4. package/dist/esm/board/sharer.js +10 -10
  5. package/dist/esm/board/viewer.d.ts +3 -3
  6. package/dist/esm/board/viewer.js +14 -14
  7. package/dist/esm/board/watcher.d.ts +3 -3
  8. package/dist/esm/board/watcher.js +68 -43
  9. package/dist/esm/core.d.ts +52 -0
  10. package/dist/esm/core.js +393 -0
  11. package/dist/esm/cursor/cursor-image.d.ts +2 -0
  12. package/dist/esm/cursor/cursor-image.js +2 -0
  13. package/dist/esm/cursor/cursor.js +60 -24
  14. package/dist/esm/index.d.ts +12 -61
  15. package/dist/esm/index.js +11 -389
  16. package/dist/esm/middlewares/common.d.ts +4 -0
  17. package/dist/esm/middlewares/common.js +13 -0
  18. package/dist/esm/middlewares/creator/dom.d.ts +11 -0
  19. package/dist/esm/middlewares/creator/dom.js +52 -0
  20. package/dist/esm/middlewares/creator/index.d.ts +5 -0
  21. package/dist/esm/middlewares/creator/index.js +136 -0
  22. package/dist/esm/middlewares/creator/static.d.ts +14 -0
  23. package/dist/esm/middlewares/creator/static.js +19 -0
  24. package/dist/esm/middlewares/creator/styles.d.ts +4 -0
  25. package/dist/esm/middlewares/creator/styles.js +32 -0
  26. package/dist/esm/middlewares/creator/types.d.ts +7 -0
  27. package/dist/esm/middlewares/creator/types.js +1 -0
  28. package/dist/esm/middlewares/creator/util.d.ts +10 -0
  29. package/dist/esm/middlewares/creator/util.js +52 -0
  30. package/dist/esm/middlewares/dragger/index.js +5 -5
  31. package/dist/esm/middlewares/info/draw-info.d.ts +11 -11
  32. package/dist/esm/middlewares/info/draw-info.js +18 -18
  33. package/dist/esm/middlewares/info/index.d.ts +2 -1
  34. package/dist/esm/middlewares/info/index.js +48 -51
  35. package/dist/esm/middlewares/info/static.d.ts +6 -0
  36. package/dist/esm/middlewares/info/{config.js → static.js} +6 -1
  37. package/dist/esm/middlewares/info/types.d.ts +2 -2
  38. package/dist/esm/middlewares/layout-selector/dom.d.ts +10 -0
  39. package/dist/esm/middlewares/layout-selector/dom.js +108 -0
  40. package/dist/esm/middlewares/layout-selector/index.d.ts +1 -1
  41. package/dist/esm/middlewares/layout-selector/index.js +89 -141
  42. package/dist/esm/middlewares/layout-selector/static.d.ts +32 -0
  43. package/dist/esm/middlewares/layout-selector/static.js +39 -0
  44. package/dist/esm/middlewares/layout-selector/styles.d.ts +4 -0
  45. package/dist/esm/middlewares/layout-selector/styles.js +127 -0
  46. package/dist/esm/middlewares/layout-selector/types.d.ts +6 -6
  47. package/dist/esm/middlewares/layout-selector/types.js +2 -2
  48. package/dist/esm/middlewares/layout-selector/util.d.ts +4 -4
  49. package/dist/esm/middlewares/layout-selector/util.js +19 -19
  50. package/dist/esm/middlewares/path-creator/dom.d.ts +29 -0
  51. package/dist/esm/middlewares/path-creator/dom.js +145 -0
  52. package/dist/esm/middlewares/path-creator/index.d.ts +5 -0
  53. package/dist/esm/middlewares/path-creator/index.js +203 -0
  54. package/dist/esm/middlewares/path-creator/static.d.ts +23 -0
  55. package/dist/esm/middlewares/path-creator/static.js +49 -0
  56. package/dist/esm/middlewares/path-creator/types.d.ts +1 -0
  57. package/dist/esm/middlewares/path-editor/calc.d.ts +6 -0
  58. package/dist/esm/middlewares/path-editor/calc.js +51 -0
  59. package/dist/esm/middlewares/path-editor/dom.d.ts +32 -0
  60. package/dist/esm/middlewares/path-editor/dom.js +575 -0
  61. package/dist/esm/middlewares/path-editor/draw.d.ts +7 -0
  62. package/dist/esm/middlewares/path-editor/draw.js +113 -0
  63. package/dist/esm/middlewares/path-editor/index.d.ts +5 -0
  64. package/dist/esm/middlewares/path-editor/index.js +312 -0
  65. package/dist/esm/middlewares/path-editor/parse.d.ts +5 -0
  66. package/dist/esm/middlewares/path-editor/parse.js +37 -0
  67. package/dist/esm/middlewares/path-editor/static.d.ts +34 -0
  68. package/dist/esm/middlewares/path-editor/static.js +82 -0
  69. package/dist/esm/middlewares/path-editor/types.d.ts +26 -0
  70. package/dist/esm/middlewares/path-editor/types.js +1 -0
  71. package/dist/esm/middlewares/path-editor/util.d.ts +5 -0
  72. package/dist/esm/middlewares/path-editor/util.js +21 -0
  73. package/dist/esm/middlewares/pointer/index.js +5 -5
  74. package/dist/esm/middlewares/pointer/types.d.ts +2 -2
  75. package/dist/esm/middlewares/ruler/index.d.ts +2 -0
  76. package/dist/esm/middlewares/ruler/index.js +12 -19
  77. package/dist/esm/middlewares/ruler/static.d.ts +8 -0
  78. package/dist/esm/middlewares/ruler/{config.js → static.js} +16 -3
  79. package/dist/esm/middlewares/ruler/types.d.ts +2 -2
  80. package/dist/esm/middlewares/ruler/util.d.ts +6 -6
  81. package/dist/esm/middlewares/ruler/util.js +31 -31
  82. package/dist/esm/middlewares/scaler/index.js +2 -2
  83. package/dist/esm/middlewares/scroller/dom.d.ts +14 -0
  84. package/dist/esm/middlewares/scroller/dom.js +53 -0
  85. package/dist/esm/middlewares/scroller/index.d.ts +2 -0
  86. package/dist/esm/middlewares/scroller/index.js +111 -46
  87. package/dist/esm/middlewares/scroller/static.d.ts +21 -0
  88. package/dist/esm/middlewares/scroller/static.js +29 -0
  89. package/dist/esm/middlewares/scroller/styles.d.ts +4 -0
  90. package/dist/esm/middlewares/scroller/styles.js +73 -0
  91. package/dist/esm/middlewares/scroller/types.d.ts +8 -6
  92. package/dist/esm/middlewares/scroller/types.js +1 -1
  93. package/dist/esm/middlewares/scroller/util.d.ts +6 -13
  94. package/dist/esm/middlewares/scroller/util.js +15 -144
  95. package/dist/esm/middlewares/selector/dom.d.ts +21 -0
  96. package/dist/esm/middlewares/selector/dom.js +395 -0
  97. package/dist/esm/middlewares/selector/draw-base.d.ts +9 -21
  98. package/dist/esm/middlewares/selector/draw-base.js +19 -43
  99. package/dist/esm/middlewares/selector/draw-reference.d.ts +4 -5
  100. package/dist/esm/middlewares/selector/draw-reference.js +5 -5
  101. package/dist/esm/middlewares/selector/index.d.ts +4 -2
  102. package/dist/esm/middlewares/selector/index.js +315 -439
  103. package/dist/esm/middlewares/selector/reference.d.ts +5 -5
  104. package/dist/esm/middlewares/selector/reference.js +36 -30
  105. package/dist/esm/middlewares/selector/render-frame.d.ts +11 -0
  106. package/dist/esm/middlewares/selector/render-frame.js +107 -0
  107. package/dist/esm/middlewares/selector/resize.d.ts +7 -0
  108. package/dist/esm/middlewares/selector/resize.js +27 -0
  109. package/dist/esm/middlewares/selector/static.d.ts +67 -0
  110. package/dist/esm/middlewares/selector/static.js +92 -0
  111. package/dist/esm/middlewares/selector/styles.d.ts +4 -0
  112. package/dist/esm/middlewares/selector/styles.js +153 -0
  113. package/dist/esm/middlewares/selector/types.d.ts +27 -27
  114. package/dist/esm/middlewares/selector/types.js +1 -1
  115. package/dist/esm/middlewares/selector/util.d.ts +22 -32
  116. package/dist/esm/middlewares/selector/util.js +226 -243
  117. package/dist/esm/middlewares/text-editor/dom.d.ts +5 -0
  118. package/dist/esm/middlewares/text-editor/dom.js +135 -0
  119. package/dist/esm/middlewares/text-editor/index.d.ts +5 -20
  120. package/dist/esm/middlewares/text-editor/index.js +201 -207
  121. package/dist/esm/middlewares/text-editor/static.d.ts +10 -0
  122. package/dist/esm/middlewares/text-editor/static.js +17 -0
  123. package/dist/esm/middlewares/text-editor/types.d.ts +21 -0
  124. package/dist/esm/middlewares/text-editor/types.js +1 -0
  125. package/dist/esm/record.d.ts +5 -5
  126. package/dist/esm/record.js +14 -14
  127. package/dist/esm/{config.d.ts → static.d.ts} +16 -0
  128. package/dist/esm/{config.js → static.js} +18 -2
  129. package/dist/index.global.js +8934 -5646
  130. package/dist/index.global.min.js +1 -1
  131. package/package.json +4 -4
  132. package/dist/esm/middlewares/info/config.d.ts +0 -5
  133. package/dist/esm/middlewares/layout-selector/config.d.ts +0 -11
  134. package/dist/esm/middlewares/layout-selector/config.js +0 -12
  135. package/dist/esm/middlewares/ruler/config.d.ts +0 -7
  136. package/dist/esm/middlewares/scroller/config.d.ts +0 -10
  137. package/dist/esm/middlewares/scroller/config.js +0 -16
  138. package/dist/esm/middlewares/selector/config.d.ts +0 -30
  139. package/dist/esm/middlewares/selector/config.js +0 -38
  140. package/dist/esm/middlewares/selector/draw-auxiliary.js +0 -12
  141. package/dist/esm/middlewares/selector/draw-debug.d.ts +0 -5
  142. package/dist/esm/middlewares/selector/draw-debug.js +0 -30
  143. package/dist/esm/middlewares/selector/draw-wrapper.d.ts +0 -37
  144. package/dist/esm/middlewares/selector/draw-wrapper.js +0 -139
  145. package/dist/esm/middlewares/selector/pattern/icon-rotate.d.ts +0 -4
  146. package/dist/esm/middlewares/selector/pattern/icon-rotate.js +0 -88
  147. package/dist/esm/middlewares/selector/pattern/index.d.ts +0 -8
  148. package/dist/esm/middlewares/selector/pattern/index.js +0 -38
  149. /package/dist/esm/middlewares/{selector/draw-auxiliary.d.ts → path-creator/types.js} +0 -0
@@ -1,4 +1,5 @@
1
- import { calcElementCenter, rotateElementVertexes, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcViewPointSize, calcViewElementSize, rotatePoint, parseAngleToRadian, parseRadianToAngle, limitAngle, calcRadian } from '@idraw/util';
1
+ import { calcMaterialCenter, rotateMaterialVertexes, calcMaterialVertexesInGroup, calcViewPoint, calcViewMaterialSize, rotatePoint, parseAngleToRadian, parseRadianToAngle, limitAngle, calcRadian, } from '@idraw/util';
2
+ import { ATTR_HANDLER_TYPE } from './static';
2
3
  function parseRadian(angle) {
3
4
  return (angle * Math.PI) / 180;
4
5
  }
@@ -8,12 +9,12 @@ function calcMoveDist(moveX, moveY) {
8
9
  function changeMoveDistDirect(moveDist, moveDirect) {
9
10
  return moveDirect > 0 ? Math.abs(moveDist) : 0 - Math.abs(moveDist);
10
11
  }
11
- export function isPointInViewActiveVertexes(p, opts) {
12
+ function isPointInViewActiveVertexes(p, opts) {
12
13
  const { ctx, viewScaleInfo, vertexes } = opts;
13
- const v0 = calcViewPointSize(vertexes[0], { viewScaleInfo });
14
- const v1 = calcViewPointSize(vertexes[1], { viewScaleInfo });
15
- const v2 = calcViewPointSize(vertexes[2], { viewScaleInfo });
16
- const v3 = calcViewPointSize(vertexes[3], { viewScaleInfo });
14
+ const v0 = calcViewPoint(vertexes[0], { viewScaleInfo });
15
+ const v1 = calcViewPoint(vertexes[1], { viewScaleInfo });
16
+ const v2 = calcViewPoint(vertexes[2], { viewScaleInfo });
17
+ const v3 = calcViewPoint(vertexes[3], { viewScaleInfo });
17
18
  ctx.beginPath();
18
19
  ctx.moveTo(v0.x, v0.y);
19
20
  ctx.lineTo(v1.x, v1.y);
@@ -26,59 +27,40 @@ export function isPointInViewActiveVertexes(p, opts) {
26
27
  }
27
28
  return false;
28
29
  }
29
- export function isPointInViewActiveGroup(p, opts) {
30
- const { ctx, viewScaleInfo, viewSizeInfo, groupQueue } = opts;
31
- if (!groupQueue || !((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0)) {
32
- return false;
33
- }
34
- const vesQueue = calcElementQueueVertexesQueueInGroup(groupQueue);
35
- const vertexes = vesQueue[vesQueue.length - 1];
36
- if (!vertexes) {
37
- return false;
38
- }
39
- return isPointInViewActiveVertexes(p, { ctx, vertexes, viewScaleInfo, viewSizeInfo });
40
- }
41
30
  export function getPointTarget(p, opts) {
42
- var _a, _b, _c, _d, _e;
31
+ var _a;
43
32
  const target = {
44
33
  type: null,
45
- elements: [],
46
- elementVertexesList: [],
34
+ materials: [],
35
+ materialVertexesList: [],
47
36
  groupQueue: [],
48
- groupQueueVertexesList: []
49
37
  };
50
- const { ctx, data, calculator, selectedElements, viewScaleInfo, viewSizeInfo, areaSize, groupQueue, selectedElementController } = opts;
51
- if (selectedElementController) {
52
- const { left, right, top, bottom, topLeft, topRight, bottomLeft, bottomRight, rotate } = selectedElementController;
53
- const ctrls = [left, right, top, bottom, topLeft, topRight, bottomLeft, bottomRight];
54
- if ((selectedElements === null || selectedElements === void 0 ? void 0 : selectedElements.length) === 1 && ((_b = (_a = selectedElements === null || selectedElements === void 0 ? void 0 : selectedElements[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.rotatable) !== false) {
55
- ctrls.push(rotate);
56
- }
57
- for (let i = 0; i < ctrls.length; i++) {
58
- const ctrl = ctrls[i];
59
- if (isPointInViewActiveVertexes(p, { ctx, vertexes: ctrl.vertexes, viewSizeInfo, viewScaleInfo })) {
60
- target.type = `resize-${ctrl.type}`;
61
- if (selectedElements && (selectedElements === null || selectedElements === void 0 ? void 0 : selectedElements.length) > 0) {
62
- target.groupQueue = groupQueue || [];
63
- target.elements = [selectedElements[0]];
64
- return target;
65
- }
66
- break;
38
+ const { ctx, data, calculator, selectedMaterials, viewScaleInfo, viewSizeInfo, areaSize, groupQueue, nativeEvent } = opts;
39
+ const $targetElement = nativeEvent.target;
40
+ if (selectedMaterials && (selectedMaterials === null || selectedMaterials === void 0 ? void 0 : selectedMaterials.length) === 1 && $targetElement) {
41
+ const $elem = $targetElement;
42
+ if ($elem === null || $elem === void 0 ? void 0 : $elem.hasAttribute(ATTR_HANDLER_TYPE)) {
43
+ const handlerType = $elem.getAttribute(ATTR_HANDLER_TYPE);
44
+ if (typeof handlerType === 'string') {
45
+ target.type = `resize-${handlerType}`;
46
+ target.groupQueue = groupQueue || [];
47
+ target.materials = [selectedMaterials[0]];
48
+ return target;
67
49
  }
68
50
  }
69
51
  }
70
52
  if (groupQueue && Array.isArray(groupQueue) && groupQueue.length > 0) {
71
53
  const lastGroup = groupQueue[groupQueue.length - 1];
72
- if (((_c = lastGroup === null || lastGroup === void 0 ? void 0 : lastGroup.detail) === null || _c === void 0 ? void 0 : _c.children) && Array.isArray((_d = lastGroup === null || lastGroup === void 0 ? void 0 : lastGroup.detail) === null || _d === void 0 ? void 0 : _d.children)) {
73
- for (let i = lastGroup.detail.children.length - 1; i >= 0; i--) {
74
- const child = lastGroup.detail.children[i];
75
- const vertexes = calcElementVertexesInGroup(child, { groupQueue });
54
+ if ((lastGroup === null || lastGroup === void 0 ? void 0 : lastGroup.children) && Array.isArray(lastGroup === null || lastGroup === void 0 ? void 0 : lastGroup.children)) {
55
+ for (let i = lastGroup.children.length - 1; i >= 0; i--) {
56
+ const child = lastGroup.children[i];
57
+ const vertexes = calcMaterialVertexesInGroup(child, { groupQueue });
76
58
  if (vertexes && isPointInViewActiveVertexes(p, { ctx, vertexes, viewScaleInfo, viewSizeInfo })) {
77
59
  if (!target.type) {
78
- target.type = 'over-element';
60
+ target.type = 'over-material';
79
61
  }
80
62
  target.groupQueue = groupQueue;
81
- target.elements = [child];
63
+ target.materials = [child];
82
64
  return target;
83
65
  }
84
66
  }
@@ -88,71 +70,67 @@ export function getPointTarget(p, opts) {
88
70
  if (target.type !== null) {
89
71
  return target;
90
72
  }
91
- if (areaSize && Array.isArray(selectedElements) && (selectedElements === null || selectedElements === void 0 ? void 0 : selectedElements.length) > 1) {
92
- const { x, y, w, h } = areaSize;
93
- if (p.x >= x && p.x <= x + w && p.y >= y && p.y <= y + h) {
73
+ if (areaSize && Array.isArray(selectedMaterials) && (selectedMaterials === null || selectedMaterials === void 0 ? void 0 : selectedMaterials.length) > 1) {
74
+ const { x, y, width, height } = areaSize;
75
+ if (p.x >= x && p.x <= x + width && p.y >= y && p.y <= y + height) {
94
76
  target.type = 'list-area';
95
- target.elements = selectedElements;
77
+ target.materials = selectedMaterials;
96
78
  return target;
97
79
  }
98
80
  }
99
81
  if (data) {
100
- const { index, element } = calculator.getPointElement(p, { data, viewScaleInfo, viewSizeInfo });
101
- if (index >= 0 && element && ((_e = element === null || element === void 0 ? void 0 : element.operations) === null || _e === void 0 ? void 0 : _e.invisible) !== true) {
102
- target.elements = [element];
103
- target.type = 'over-element';
82
+ const { index, material } = calculator.getPointMaterial(p, { data, viewScaleInfo, viewSizeInfo });
83
+ if (index >= 0 && material && ((_a = material === null || material === void 0 ? void 0 : material.operations) === null || _a === void 0 ? void 0 : _a.invisible) !== true) {
84
+ target.materials = [material];
85
+ target.type = 'over-material';
104
86
  return target;
105
87
  }
106
88
  }
107
89
  return target;
108
90
  }
109
- export function resizeElement(elem, opts) {
91
+ export function resizeMaterial(mtrl, opts) {
110
92
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
111
- let { x, y, w, h, angle = 0 } = elem;
112
- const elemCenter = calcElementCenter({ x, y, w, h, angle });
93
+ let { x, y, width, height, angle = 0 } = mtrl;
94
+ const mtrlCenter = calcMaterialCenter({ x, y, width, height, angle });
113
95
  angle = limitAngle(angle);
114
96
  const radian = parseAngleToRadian(angle);
115
- const limitRatio = !!((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.limitRatio);
116
- const { start, end, resizeType, scale } = opts;
97
+ const limitRatio = !!((_a = mtrl === null || mtrl === void 0 ? void 0 : mtrl.operations) === null || _a === void 0 ? void 0 : _a.limitRatio);
98
+ const { start, end, resizeType, scale, calculator } = opts;
117
99
  let start0 = Object.assign({}, start);
118
100
  let end0 = Object.assign({}, end);
119
- let startHorizontal0 = { x: start0.x, y: elemCenter.y };
120
- let endHorizontal0 = { x: end0.x, y: elemCenter.y };
101
+ let startHorizontal0 = { x: start0.x, y: mtrlCenter.y };
102
+ let endHorizontal0 = { x: end0.x, y: mtrlCenter.y };
121
103
  let startHorizontal = Object.assign({}, startHorizontal0);
122
104
  let endHorizontal = Object.assign({}, endHorizontal0);
123
- let startVertical0 = { x: elemCenter.x, y: start0.y };
124
- let endVertical0 = { x: elemCenter.x, y: end0.y };
105
+ let startVertical0 = { x: mtrlCenter.x, y: start0.y };
106
+ let endVertical0 = { x: mtrlCenter.x, y: end0.y };
125
107
  let startVertical = Object.assign({}, startVertical0);
126
108
  let endVertical = Object.assign({}, endVertical0);
127
109
  let moveHorizontalX = (endHorizontal.x - startHorizontal.x) / scale;
128
110
  let moveHorizontalY = (endHorizontal.y - startHorizontal.y) / scale;
129
111
  let moveHorizontalDist = calcMoveDist(moveHorizontalX, moveHorizontalY);
130
- let centerMoveHorizontalDist = 0;
131
112
  let moveVerticalX = (endVertical.x - startVertical.x) / scale;
132
113
  let moveVerticalY = (endVertical.y - startVertical.y) / scale;
133
114
  let moveVerticalDist = calcMoveDist(moveVerticalX, moveVerticalY);
134
- let centerMoveVerticalDist = 0;
135
115
  if (angle > 0 || angle < 0) {
136
- start0 = rotatePoint(elemCenter, start, 0 - radian);
137
- end0 = rotatePoint(elemCenter, end, 0 - radian);
138
- startHorizontal0 = { x: start0.x, y: elemCenter.y };
139
- endHorizontal0 = { x: end0.x, y: elemCenter.y };
140
- startHorizontal = rotatePoint(elemCenter, startHorizontal0, radian);
141
- endHorizontal = rotatePoint(elemCenter, endHorizontal0, radian);
142
- startVertical0 = { x: elemCenter.x, y: start0.y };
143
- endVertical0 = { x: elemCenter.x, y: end0.y };
144
- startVertical = rotatePoint(elemCenter, startVertical0, radian);
145
- endVertical = rotatePoint(elemCenter, endVertical0, radian);
116
+ start0 = rotatePoint(mtrlCenter, start, 0 - radian);
117
+ end0 = rotatePoint(mtrlCenter, end, 0 - radian);
118
+ startHorizontal0 = { x: start0.x, y: mtrlCenter.y };
119
+ endHorizontal0 = { x: end0.x, y: mtrlCenter.y };
120
+ startHorizontal = rotatePoint(mtrlCenter, startHorizontal0, radian);
121
+ endHorizontal = rotatePoint(mtrlCenter, endHorizontal0, radian);
122
+ startVertical0 = { x: mtrlCenter.x, y: start0.y };
123
+ endVertical0 = { x: mtrlCenter.x, y: end0.y };
124
+ startVertical = rotatePoint(mtrlCenter, startVertical0, radian);
125
+ endVertical = rotatePoint(mtrlCenter, endVertical0, radian);
146
126
  moveHorizontalX = (endHorizontal.x - startHorizontal.x) / scale;
147
127
  moveHorizontalY = (endHorizontal.y - startHorizontal.y) / scale;
148
128
  moveHorizontalDist = calcMoveDist(moveHorizontalX, moveHorizontalY);
149
129
  moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, moveHorizontalY);
150
- centerMoveHorizontalDist = moveHorizontalDist / 2;
151
130
  moveVerticalX = (endVertical.x - startVertical.x) / scale;
152
131
  moveVerticalY = (endVertical.y - startVertical.y) / scale;
153
132
  moveVerticalDist = calcMoveDist(moveVerticalX, moveVerticalY);
154
133
  moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY);
155
- centerMoveVerticalDist = moveVerticalDist / 2;
156
134
  }
157
135
  let moveX = (end.x - start.x) / scale;
158
136
  let moveY = (end.y - start.y) / scale;
@@ -160,19 +138,19 @@ export function resizeElement(elem, opts) {
160
138
  if (['resize-top', 'resize-bottom', 'resize-left', 'resize-right'].includes(resizeType)) {
161
139
  const maxDist = Math.max(Math.abs(moveX), Math.abs(moveY));
162
140
  moveX = (moveX >= 0 ? 1 : -1) * maxDist;
163
- moveY = (((moveY >= 0 ? 1 : -1) * maxDist) / elem.w) * elem.h;
141
+ moveY = (((moveY >= 0 ? 1 : -1) * maxDist) / mtrl.width) * mtrl.height;
164
142
  const maxVerticalDist = Math.max(Math.abs(moveVerticalX), Math.abs(moveVerticalY));
165
143
  moveVerticalX = (moveVerticalX >= 0 ? 1 : -1) * maxVerticalDist;
166
- moveVerticalY = (((moveVerticalY >= 0 ? 1 : -1) * maxVerticalDist) / elem.w) * elem.h;
144
+ moveVerticalY = (((moveVerticalY >= 0 ? 1 : -1) * maxVerticalDist) / mtrl.width) * mtrl.height;
167
145
  const maxHorizontalDist = Math.max(Math.abs(moveHorizontalX), Math.abs(moveHorizontalY));
168
146
  moveHorizontalX = (moveHorizontalX >= 0 ? 1 : -1) * maxHorizontalDist;
169
- moveHorizontalY = (((moveHorizontalY >= 0 ? 1 : -1) * maxHorizontalDist) / elem.w) * elem.h;
147
+ moveHorizontalY = (((moveHorizontalY >= 0 ? 1 : -1) * maxHorizontalDist) / mtrl.width) * mtrl.height;
170
148
  }
171
149
  else if (['resize-top-left', 'resize-top-right', 'resize-bottom-left', 'resize-bottom-right'].includes(resizeType)) {
172
150
  {
173
151
  const maxDist = Math.abs(moveX);
174
152
  moveX = (moveX >= 0 ? 1 : -1) * maxDist;
175
- const moveYLeng = (maxDist / elem.w) * elem.h;
153
+ const moveYLeng = (maxDist / mtrl.width) * mtrl.height;
176
154
  if (resizeType === 'resize-top-left' || resizeType === 'resize-bottom-right') {
177
155
  moveY = moveX > 0 ? moveYLeng : -moveYLeng;
178
156
  }
@@ -182,25 +160,25 @@ export function resizeElement(elem, opts) {
182
160
  }
183
161
  {
184
162
  moveHorizontalDist = Math.abs(moveHorizontalDist);
185
- moveVerticalDist = (moveHorizontalDist / elem.w) * elem.h;
163
+ moveVerticalDist = (moveHorizontalDist / mtrl.width) * mtrl.height;
186
164
  }
187
165
  }
188
166
  }
189
167
  switch (resizeType) {
190
168
  case 'resize-top': {
191
169
  if (angle === 0) {
192
- if (h - moveY > 0) {
170
+ if (height - moveY > 0) {
193
171
  y += moveY;
194
- h -= moveY;
195
- if (((_b = elem.operations) === null || _b === void 0 ? void 0 : _b.limitRatio) === true) {
196
- x += ((moveY / elem.h) * elem.w) / 2;
197
- w -= (moveY / elem.h) * elem.w;
172
+ height -= moveY;
173
+ if (((_b = mtrl.operations) === null || _b === void 0 ? void 0 : _b.limitRatio) === true) {
174
+ x += ((moveY / mtrl.height) * mtrl.width) / 2;
175
+ width -= (moveY / mtrl.height) * mtrl.width;
198
176
  }
199
177
  }
200
178
  }
201
179
  else if (angle > 0 || angle < 0) {
202
- let centerX = elemCenter.x;
203
- let centerY = elemCenter.y;
180
+ let centerX = mtrlCenter.x;
181
+ let centerY = mtrlCenter.y;
204
182
  if (angle < 90) {
205
183
  moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalY);
206
184
  const radian = parseRadian(angle);
@@ -229,30 +207,30 @@ export function resizeElement(elem, opts) {
229
207
  centerX = centerX - centerMoveVerticalDist * Math.cos(radian);
230
208
  centerY = centerY - centerMoveVerticalDist * Math.sin(radian);
231
209
  }
232
- if (h + moveVerticalDist > 0) {
233
- if (((_c = elem.operations) === null || _c === void 0 ? void 0 : _c.limitRatio) === true) {
234
- w = w + (moveVerticalDist / elem.h) * elem.w;
210
+ if (height + moveVerticalDist > 0) {
211
+ if (((_c = mtrl.operations) === null || _c === void 0 ? void 0 : _c.limitRatio) === true) {
212
+ width = width + (moveVerticalDist / mtrl.height) * mtrl.width;
235
213
  }
236
- h = h + moveVerticalDist;
237
- x = centerX - w / 2;
238
- y = centerY - h / 2;
214
+ height = height + moveVerticalDist;
215
+ x = centerX - width / 2;
216
+ y = centerY - height / 2;
239
217
  }
240
218
  }
241
219
  break;
242
220
  }
243
221
  case 'resize-bottom': {
244
222
  if (angle === 0) {
245
- if (elem.h + moveY > 0) {
246
- h += moveY;
247
- if (((_d = elem.operations) === null || _d === void 0 ? void 0 : _d.limitRatio) === true) {
248
- x -= ((moveY / elem.h) * elem.w) / 2;
249
- w += (moveY / elem.h) * elem.w;
223
+ if (mtrl.height + moveY > 0) {
224
+ height += moveY;
225
+ if (((_d = mtrl.operations) === null || _d === void 0 ? void 0 : _d.limitRatio) === true) {
226
+ x -= ((moveY / mtrl.height) * mtrl.width) / 2;
227
+ width += (moveY / mtrl.height) * mtrl.width;
250
228
  }
251
229
  }
252
230
  }
253
231
  else if (angle > 0 || angle < 0) {
254
- let centerX = elemCenter.x;
255
- let centerY = elemCenter.y;
232
+ let centerX = mtrlCenter.x;
233
+ let centerY = mtrlCenter.y;
256
234
  if (angle < 90) {
257
235
  moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY);
258
236
  const radian = parseRadian(angle);
@@ -281,31 +259,31 @@ export function resizeElement(elem, opts) {
281
259
  centerX = centerX + centerMoveDist * Math.cos(radian);
282
260
  centerY = centerY + centerMoveDist * Math.sin(radian);
283
261
  }
284
- if (h + moveVerticalDist > 0) {
285
- if (((_e = elem.operations) === null || _e === void 0 ? void 0 : _e.limitRatio) === true) {
286
- w = w + (moveVerticalDist / elem.h) * elem.w;
262
+ if (height + moveVerticalDist > 0) {
263
+ if (((_e = mtrl.operations) === null || _e === void 0 ? void 0 : _e.limitRatio) === true) {
264
+ width = width + (moveVerticalDist / mtrl.height) * mtrl.width;
287
265
  }
288
- h = h + moveVerticalDist;
289
- x = centerX - w / 2;
290
- y = centerY - h / 2;
266
+ height = height + moveVerticalDist;
267
+ x = centerX - width / 2;
268
+ y = centerY - height / 2;
291
269
  }
292
270
  }
293
271
  break;
294
272
  }
295
273
  case 'resize-left': {
296
274
  if (angle === 0) {
297
- if (elem.w - moveX > 0) {
275
+ if (mtrl.width - moveX > 0) {
298
276
  x += moveX;
299
- w -= moveX;
300
- if (((_f = elem.operations) === null || _f === void 0 ? void 0 : _f.limitRatio) === true) {
301
- h -= (moveX / elem.w) * elem.h;
302
- y += ((moveX / elem.w) * elem.h) / 2;
277
+ width -= moveX;
278
+ if (((_f = mtrl.operations) === null || _f === void 0 ? void 0 : _f.limitRatio) === true) {
279
+ height -= (moveX / mtrl.width) * mtrl.height;
280
+ y += ((moveX / mtrl.width) * mtrl.height) / 2;
303
281
  }
304
282
  }
305
283
  }
306
284
  else if (angle > 0 || angle < 0) {
307
- let centerX = elemCenter.x;
308
- let centerY = elemCenter.y;
285
+ let centerX = mtrlCenter.x;
286
+ let centerY = mtrlCenter.y;
309
287
  if (angle < 90) {
310
288
  moveHorizontalDist = 0 - changeMoveDistDirect(moveHorizontalDist, moveHorizontalX);
311
289
  const radian = parseRadian(angle);
@@ -334,30 +312,30 @@ export function resizeElement(elem, opts) {
334
312
  centerX = centerX - centerMoveHorizontalDist * Math.sin(radian);
335
313
  centerY = centerY + centerMoveHorizontalDist * Math.cos(radian);
336
314
  }
337
- if (w + moveHorizontalDist > 0) {
338
- if (((_g = elem.operations) === null || _g === void 0 ? void 0 : _g.limitRatio) === true) {
339
- h = h + (moveHorizontalDist / elem.w) * elem.h;
315
+ if (width + moveHorizontalDist > 0) {
316
+ if (((_g = mtrl.operations) === null || _g === void 0 ? void 0 : _g.limitRatio) === true) {
317
+ height = height + (moveHorizontalDist / mtrl.width) * mtrl.height;
340
318
  }
341
- w = w + moveHorizontalDist;
342
- x = centerX - w / 2;
343
- y = centerY - h / 2;
319
+ width = width + moveHorizontalDist;
320
+ x = centerX - width / 2;
321
+ y = centerY - height / 2;
344
322
  }
345
323
  }
346
324
  break;
347
325
  }
348
326
  case 'resize-right': {
349
327
  if (angle === 0) {
350
- if (elem.w + moveX > 0) {
351
- w += moveX;
352
- if (((_h = elem.operations) === null || _h === void 0 ? void 0 : _h.limitRatio) === true) {
353
- y -= (moveX * elem.h) / elem.w / 2;
354
- h += (moveX * elem.h) / elem.w;
328
+ if (mtrl.width + moveX > 0) {
329
+ width += moveX;
330
+ if (((_h = mtrl.operations) === null || _h === void 0 ? void 0 : _h.limitRatio) === true) {
331
+ y -= (moveX * mtrl.height) / mtrl.width / 2;
332
+ height += (moveX * mtrl.height) / mtrl.width;
355
333
  }
356
334
  }
357
335
  }
358
336
  else if (angle > 0 || angle < 0) {
359
- let centerX = elemCenter.x;
360
- let centerY = elemCenter.y;
337
+ let centerX = mtrlCenter.x;
338
+ let centerY = mtrlCenter.y;
361
339
  if (angle < 90) {
362
340
  moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, moveHorizontalY);
363
341
  const radian = parseRadian(angle);
@@ -387,31 +365,31 @@ export function resizeElement(elem, opts) {
387
365
  centerX = centerX + centerMoveHorizontalDist * Math.sin(radian);
388
366
  centerY = centerY - centerMoveHorizontalDist * Math.cos(radian);
389
367
  }
390
- if (w + moveHorizontalDist > 0) {
391
- if (((_j = elem.operations) === null || _j === void 0 ? void 0 : _j.limitRatio) === true) {
392
- h = h + (moveHorizontalDist / elem.w) * elem.h;
368
+ if (width + moveHorizontalDist > 0) {
369
+ if (((_j = mtrl.operations) === null || _j === void 0 ? void 0 : _j.limitRatio) === true) {
370
+ height = height + (moveHorizontalDist / mtrl.width) * mtrl.height;
393
371
  }
394
- w = w + moveHorizontalDist;
395
- x = centerX - w / 2;
396
- y = centerY - h / 2;
372
+ width = width + moveHorizontalDist;
373
+ x = centerX - width / 2;
374
+ y = centerY - height / 2;
397
375
  }
398
376
  }
399
377
  break;
400
378
  }
401
379
  case 'resize-top-left': {
402
380
  if (angle === 0) {
403
- if (w - moveX > 0) {
381
+ if (width - moveX > 0) {
404
382
  x += moveX;
405
- w -= moveX;
383
+ width -= moveX;
406
384
  }
407
- if (h - moveY > 0) {
385
+ if (height - moveY > 0) {
408
386
  y += moveY;
409
- h -= moveY;
387
+ height -= moveY;
410
388
  }
411
389
  }
412
390
  else if (angle > 0 || angle < 0) {
413
- let centerX = elemCenter.x;
414
- let centerY = elemCenter.y;
391
+ let centerX = mtrlCenter.x;
392
+ let centerY = mtrlCenter.y;
415
393
  if (angle < 90) {
416
394
  moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalY);
417
395
  moveHorizontalDist =
@@ -456,30 +434,30 @@ export function resizeElement(elem, opts) {
456
434
  centerX = centerX - centerMoveHorizontalDist * Math.sin(radian);
457
435
  centerY = centerY + centerMoveHorizontalDist * Math.cos(radian);
458
436
  }
459
- if (h + moveVerticalDist > 0) {
460
- h = h + moveVerticalDist;
437
+ if (height + moveVerticalDist > 0) {
438
+ height = height + moveVerticalDist;
461
439
  }
462
- if (w + moveHorizontalDist > 0) {
463
- w = w + moveHorizontalDist;
440
+ if (width + moveHorizontalDist > 0) {
441
+ width = width + moveHorizontalDist;
464
442
  }
465
- x = centerX - w / 2;
466
- y = centerY - h / 2;
443
+ x = centerX - width / 2;
444
+ y = centerY - height / 2;
467
445
  }
468
446
  break;
469
447
  }
470
448
  case 'resize-top-right': {
471
449
  if (angle === 0) {
472
- if (w + moveX > 0) {
473
- w += moveX;
450
+ if (width + moveX > 0) {
451
+ width += moveX;
474
452
  }
475
- if (h - moveY > 0) {
453
+ if (height - moveY > 0) {
476
454
  y += moveY;
477
- h -= moveY;
455
+ height -= moveY;
478
456
  }
479
457
  }
480
458
  else if (angle > 0 || angle < 0) {
481
- let centerX = elemCenter.x;
482
- let centerY = elemCenter.y;
459
+ let centerX = mtrlCenter.x;
460
+ let centerY = mtrlCenter.y;
483
461
  if (angle < 90) {
484
462
  moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalY);
485
463
  moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY);
@@ -524,30 +502,30 @@ export function resizeElement(elem, opts) {
524
502
  centerX = centerX + centerMoveHorizontalDist * Math.sin(radian);
525
503
  centerY = centerY - centerMoveHorizontalDist * Math.cos(radian);
526
504
  }
527
- if (h + moveVerticalDist > 0) {
528
- h = h + moveVerticalDist;
505
+ if (height + moveVerticalDist > 0) {
506
+ height = height + moveVerticalDist;
529
507
  }
530
- if (w + moveHorizontalDist > 0) {
531
- w = w + moveHorizontalDist;
508
+ if (width + moveHorizontalDist > 0) {
509
+ width = width + moveHorizontalDist;
532
510
  }
533
- x = centerX - w / 2;
534
- y = centerY - h / 2;
511
+ x = centerX - width / 2;
512
+ y = centerY - height / 2;
535
513
  }
536
514
  break;
537
515
  }
538
516
  case 'resize-bottom-left': {
539
517
  if (angle === 0) {
540
- if (elem.h + moveY > 0) {
541
- h += moveY;
518
+ if (mtrl.height + moveY > 0) {
519
+ height += moveY;
542
520
  }
543
- if (elem.w - moveX > 0) {
521
+ if (mtrl.width - moveX > 0) {
544
522
  x += moveX;
545
- w -= moveX;
523
+ width -= moveX;
546
524
  }
547
525
  }
548
526
  else if (angle > 0 || angle < 0) {
549
- let centerX = elemCenter.x;
550
- let centerY = elemCenter.y;
527
+ let centerX = mtrlCenter.x;
528
+ let centerY = mtrlCenter.y;
551
529
  if (angle < 90) {
552
530
  moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY);
553
531
  moveHorizontalDist =
@@ -593,29 +571,29 @@ export function resizeElement(elem, opts) {
593
571
  centerX = centerX - centerMoveHorizontalDist * Math.sin(radian);
594
572
  centerY = centerY + centerMoveHorizontalDist * Math.cos(radian);
595
573
  }
596
- if (h + moveVerticalDist > 0) {
597
- h = h + moveVerticalDist;
574
+ if (height + moveVerticalDist > 0) {
575
+ height = height + moveVerticalDist;
598
576
  }
599
- if (w + moveHorizontalDist > 0) {
600
- w = w + moveHorizontalDist;
577
+ if (width + moveHorizontalDist > 0) {
578
+ width = width + moveHorizontalDist;
601
579
  }
602
- x = centerX - w / 2;
603
- y = centerY - h / 2;
580
+ x = centerX - width / 2;
581
+ y = centerY - height / 2;
604
582
  }
605
583
  break;
606
584
  }
607
585
  case 'resize-bottom-right': {
608
586
  if (angle === 0) {
609
- if (elem.h + moveY > 0) {
610
- h += moveY;
587
+ if (mtrl.height + moveY > 0) {
588
+ height += moveY;
611
589
  }
612
- if (elem.w + moveX > 0) {
613
- w += moveX;
590
+ if (mtrl.width + moveX > 0) {
591
+ width += moveX;
614
592
  }
615
593
  }
616
594
  else if (angle > 0 || angle < 0) {
617
- let centerX = elemCenter.x;
618
- let centerY = elemCenter.y;
595
+ let centerX = mtrlCenter.x;
596
+ let centerY = mtrlCenter.y;
619
597
  if (angle < 90) {
620
598
  moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY);
621
599
  moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY);
@@ -660,14 +638,14 @@ export function resizeElement(elem, opts) {
660
638
  centerX = centerX + centerMoveHorizontalDist * Math.sin(radian);
661
639
  centerY = centerY - centerMoveHorizontalDist * Math.cos(radian);
662
640
  }
663
- if (h + moveVerticalDist > 0) {
664
- h = h + moveVerticalDist;
641
+ if (height + moveVerticalDist > 0) {
642
+ height = height + moveVerticalDist;
665
643
  }
666
- if (w + moveHorizontalDist > 0) {
667
- w = w + moveHorizontalDist;
644
+ if (width + moveHorizontalDist > 0) {
645
+ width = width + moveHorizontalDist;
668
646
  }
669
- x = centerX - w / 2;
670
- y = centerY - h / 2;
647
+ x = centerX - width / 2;
648
+ y = centerY - height / 2;
671
649
  }
672
650
  break;
673
651
  }
@@ -675,115 +653,120 @@ export function resizeElement(elem, opts) {
675
653
  break;
676
654
  }
677
655
  }
678
- return { x, y, w, h, angle: elem.angle };
656
+ return {
657
+ x: calculator.toGridNum(x),
658
+ y: calculator.toGridNum(y),
659
+ width: calculator.toGridNum(width),
660
+ height: calculator.toGridNum(height),
661
+ angle: calculator.toGridNum(mtrl.angle || 0),
662
+ };
679
663
  }
680
- export function rotateElement(elem, opts) {
681
- const { x, y, w, h, angle = 0 } = elem;
682
- const { center, start, end, viewScaleInfo } = opts;
683
- const elemCenter = calcViewPointSize(center, {
684
- viewScaleInfo
664
+ export function rotateMaterial(mtrl, opts) {
665
+ const { x, y, width, height, angle = 0 } = mtrl;
666
+ const { center, start, end, viewScaleInfo, calculator } = opts;
667
+ const mtrlCenter = calcViewPoint(center, {
668
+ viewScaleInfo,
685
669
  });
686
670
  const startAngle = limitAngle(angle);
687
- const changedRadian = calcRadian(elemCenter, start, end);
671
+ const changedRadian = calcRadian(mtrlCenter, start, end);
688
672
  const endAngle = limitAngle(startAngle + parseRadianToAngle(changedRadian));
689
673
  return {
690
- x,
691
- y,
692
- w,
693
- h,
694
- angle: endAngle
674
+ x: calculator.toGridNum(x),
675
+ y: calculator.toGridNum(y),
676
+ width: calculator.toGridNum(width),
677
+ height: calculator.toGridNum(height),
678
+ angle: calculator.toGridNum(endAngle),
695
679
  };
696
680
  }
697
681
  export function getSelectedListArea(data, opts) {
698
682
  var _a;
699
683
  const indexes = [];
700
- const uuids = [];
701
- const elements = [];
684
+ const ids = [];
685
+ const materials = [];
702
686
  const { viewScaleInfo, start, end } = opts;
703
- if (!(Array.isArray(data.elements) && start && end)) {
704
- return { indexes, uuids, elements };
687
+ if (!(Array.isArray(data.materials) && start && end)) {
688
+ return { indexes, ids, materials };
705
689
  }
706
690
  const startX = Math.min(start.x, end.x);
707
691
  const endX = Math.max(start.x, end.x);
708
692
  const startY = Math.min(start.y, end.y);
709
693
  const endY = Math.max(start.y, end.y);
710
- for (let idx = 0; idx < data.elements.length; idx++) {
711
- const elem = data.elements[idx];
712
- if (((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.locked) === true) {
694
+ for (let idx = 0; idx < data.materials.length; idx++) {
695
+ const mtrl = data.materials[idx];
696
+ if (((_a = mtrl === null || mtrl === void 0 ? void 0 : mtrl.operations) === null || _a === void 0 ? void 0 : _a.locked) === true) {
713
697
  continue;
714
698
  }
715
- const elemSize = calcViewElementSize(elem, { viewScaleInfo });
716
- const center = calcElementCenter(elemSize);
699
+ const mtrlSize = calcViewMaterialSize(mtrl, { viewScaleInfo });
700
+ const center = calcMaterialCenter(mtrlSize);
717
701
  if (center.x >= startX && center.x <= endX && center.y >= startY && center.y <= endY) {
718
702
  indexes.push(idx);
719
- uuids.push(elem.uuid);
720
- elements.push(elem);
721
- if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
722
- const ves = rotateElementVertexes(elemSize);
703
+ ids.push(mtrl.id);
704
+ materials.push(mtrl);
705
+ if (mtrlSize.angle && (mtrlSize.angle > 0 || mtrlSize.angle < 0)) {
706
+ const ves = rotateMaterialVertexes(mtrlSize);
723
707
  if (ves.length === 4) {
724
708
  const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
725
709
  const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
726
- elemSize.x = Math.min(...xList);
727
- elemSize.y = Math.min(...yList);
728
- elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
729
- elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
710
+ mtrlSize.x = Math.min(...xList);
711
+ mtrlSize.y = Math.min(...yList);
712
+ mtrlSize.width = Math.abs(Math.max(...xList) - Math.min(...xList));
713
+ mtrlSize.height = Math.abs(Math.max(...yList) - Math.min(...yList));
730
714
  }
731
715
  }
732
716
  }
733
717
  }
734
- return { indexes, uuids, elements };
718
+ return { indexes, ids, materials };
735
719
  }
736
- export function calcSelectedElementsArea(elements, opts) {
720
+ export function calcSelectedMaterialsArea(materials, opts) {
737
721
  var _a;
738
- if (!Array.isArray(elements)) {
722
+ if (!Array.isArray(materials)) {
739
723
  return null;
740
724
  }
741
- const area = { x: 0, y: 0, w: 0, h: 0 };
725
+ const area = { x: 0, y: 0, width: 0, height: 0 };
742
726
  const { viewScaleInfo } = opts;
743
- let prevElemSize = null;
744
- for (let i = 0; i < elements.length; i++) {
745
- const elem = elements[i];
746
- if ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.invisible) {
727
+ let prevMtrlSize = null;
728
+ for (let i = 0; i < materials.length; i++) {
729
+ const mtrl = materials[i];
730
+ if ((_a = mtrl === null || mtrl === void 0 ? void 0 : mtrl.operations) === null || _a === void 0 ? void 0 : _a.invisible) {
747
731
  continue;
748
732
  }
749
- const elemSize = calcViewElementSize(elem, { viewScaleInfo });
750
- if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
751
- const ves = rotateElementVertexes(elemSize);
733
+ const mtrlSize = calcViewMaterialSize(mtrl, { viewScaleInfo });
734
+ if (mtrlSize.angle && (mtrlSize.angle > 0 || mtrlSize.angle < 0)) {
735
+ const ves = rotateMaterialVertexes(mtrlSize);
752
736
  if (ves.length === 4) {
753
737
  const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
754
738
  const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
755
- elemSize.x = Math.min(...xList);
756
- elemSize.y = Math.min(...yList);
757
- elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
758
- elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
739
+ mtrlSize.x = Math.min(...xList);
740
+ mtrlSize.y = Math.min(...yList);
741
+ mtrlSize.width = Math.abs(Math.max(...xList) - Math.min(...xList));
742
+ mtrlSize.height = Math.abs(Math.max(...yList) - Math.min(...yList));
759
743
  }
760
744
  }
761
- if (prevElemSize) {
762
- const areaStartX = Math.min(elemSize.x, area.x);
763
- const areaStartY = Math.min(elemSize.y, area.y);
764
- const areaEndX = Math.max(elemSize.x + elemSize.w, area.x + area.w);
765
- const areaEndY = Math.max(elemSize.y + elemSize.h, area.y + area.h);
745
+ if (prevMtrlSize) {
746
+ const areaStartX = Math.min(mtrlSize.x, area.x);
747
+ const areaStartY = Math.min(mtrlSize.y, area.y);
748
+ const areaEndX = Math.max(mtrlSize.x + mtrlSize.width, area.x + area.width);
749
+ const areaEndY = Math.max(mtrlSize.y + mtrlSize.height, area.y + area.height);
766
750
  area.x = areaStartX;
767
751
  area.y = areaStartY;
768
- area.w = Math.abs(areaEndX - areaStartX);
769
- area.h = Math.abs(areaEndY - areaStartY);
752
+ area.width = Math.abs(areaEndX - areaStartX);
753
+ area.height = Math.abs(areaEndY - areaStartY);
770
754
  }
771
755
  else {
772
- area.x = elemSize.x;
773
- area.y = elemSize.y;
774
- area.w = elemSize.w;
775
- area.h = elemSize.h;
756
+ area.x = mtrlSize.x;
757
+ area.y = mtrlSize.y;
758
+ area.width = mtrlSize.width;
759
+ area.height = mtrlSize.height;
776
760
  }
777
- prevElemSize = elemSize;
761
+ prevMtrlSize = mtrlSize;
778
762
  }
779
763
  return area;
780
764
  }
781
- export function isElementInGroup(elem, group) {
782
- var _a;
783
- if ((group === null || group === void 0 ? void 0 : group.type) === 'group' && Array.isArray((_a = group === null || group === void 0 ? void 0 : group.detail) === null || _a === void 0 ? void 0 : _a.children)) {
784
- for (let i = 0; i < group.detail.children.length; i++) {
785
- const child = group.detail.children[i];
786
- if (elem.uuid === child.uuid) {
765
+ export function isMaterialInGroup(mtrl, group) {
766
+ if ((group === null || group === void 0 ? void 0 : group.type) === 'group' && Array.isArray(group === null || group === void 0 ? void 0 : group.children)) {
767
+ for (let i = 0; i < group.children.length; i++) {
768
+ const child = group.children[i];
769
+ if (mtrl.id === child.id) {
787
770
  return true;
788
771
  }
789
772
  }