@plait/common 0.30.0 → 0.32.0
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.
- package/constants/default.d.ts +1 -0
- package/constants/resize.d.ts +1 -1
- package/esm2022/constants/default.mjs +2 -1
- package/esm2022/constants/resize.mjs +2 -2
- package/esm2022/plugins/with-resize.mjs +4 -2
- package/esm2022/utils/direction.mjs +8 -2
- package/esm2022/utils/elbow-line-route.mjs +4 -4
- package/esm2022/utils/line-path.mjs +8 -1
- package/esm2022/utils/resize.mjs +40 -8
- package/fesm2022/plait-common.mjs +61 -13
- package/fesm2022/plait-common.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/line-path.d.ts +1 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createG, RectangleClient, drawRectangle, drawCircle, PlaitBoard, createForeignObject, updateForeignObject, getSelectedElements, PlaitElement, Transforms, PlaitPointerType, isMainPointer, transformPoint, toPoint, preventTouchMove, distanceBetweenPointAndPoint, PRESS_AND_MOVE_BUFFER, throttleRAF, handleTouchTarget, MERGING, Direction, Point, hotkeys, PlaitContextService, PlaitPluginElementComponent, isSelectionMoving, ACTIVE_STROKE_WIDTH } from '@plait/core';
|
|
1
|
+
import { createG, RectangleClient, drawRectangle, drawCircle, PlaitBoard, createForeignObject, updateForeignObject, getSelectedElements, PlaitElement, Transforms, PlaitPointerType, isMainPointer, transformPoint, toPoint, preventTouchMove, distanceBetweenPointAndPoint, PRESS_AND_MOVE_BUFFER, throttleRAF, handleTouchTarget, MERGING, Direction, Point, hotkeys, PlaitContextService, downScale, PlaitPluginElementComponent, isSelectionMoving, ACTIVE_STROKE_WIDTH } from '@plait/core';
|
|
2
2
|
import { isKeyHotkey } from 'is-hotkey';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Directive, Input } from '@angular/core';
|
|
@@ -8,6 +8,7 @@ const PRIMARY_COLOR = '#6698FF';
|
|
|
8
8
|
const RESIZE_HANDLE_DIAMETER = 8;
|
|
9
9
|
const WithTextPluginKey = 'plait-text-plugin-key';
|
|
10
10
|
const DEFAULT_ROUTE_MARGIN = 30;
|
|
11
|
+
const TRANSPARENT = 'transparent';
|
|
11
12
|
|
|
12
13
|
var MediaKeys;
|
|
13
14
|
(function (MediaKeys) {
|
|
@@ -29,7 +30,7 @@ var ResizeHandle;
|
|
|
29
30
|
ResizeHandle["ne"] = "ne";
|
|
30
31
|
ResizeHandle["n"] = "n";
|
|
31
32
|
ResizeHandle["nw"] = "nw";
|
|
32
|
-
ResizeHandle["e"] = "
|
|
33
|
+
ResizeHandle["e"] = "e";
|
|
33
34
|
ResizeHandle["se"] = "se";
|
|
34
35
|
ResizeHandle["s"] = "s";
|
|
35
36
|
ResizeHandle["sw"] = "sw";
|
|
@@ -230,6 +231,14 @@ const getResizeHandleByIndex = (index) => {
|
|
|
230
231
|
return ResizeHandle.se;
|
|
231
232
|
case 3:
|
|
232
233
|
return ResizeHandle.sw;
|
|
234
|
+
case 4:
|
|
235
|
+
return ResizeHandle.n;
|
|
236
|
+
case 5:
|
|
237
|
+
return ResizeHandle.e;
|
|
238
|
+
case 6:
|
|
239
|
+
return ResizeHandle.s;
|
|
240
|
+
case 7:
|
|
241
|
+
return ResizeHandle.w;
|
|
233
242
|
default:
|
|
234
243
|
return null;
|
|
235
244
|
}
|
|
@@ -237,24 +246,28 @@ const getResizeHandleByIndex = (index) => {
|
|
|
237
246
|
const getResizeCursorClassByIndex = (index) => {
|
|
238
247
|
switch (index) {
|
|
239
248
|
case 0:
|
|
240
|
-
return ResizeCursorClass.nwse;
|
|
241
|
-
case 1:
|
|
242
|
-
return ResizeCursorClass.nesw;
|
|
243
249
|
case 2:
|
|
244
250
|
return ResizeCursorClass.nwse;
|
|
251
|
+
case 1:
|
|
245
252
|
case 3:
|
|
246
253
|
return ResizeCursorClass.nesw;
|
|
254
|
+
case 4:
|
|
255
|
+
case 6:
|
|
256
|
+
return ResizeCursorClass.ns;
|
|
257
|
+
case 5:
|
|
258
|
+
case 7:
|
|
259
|
+
return ResizeCursorClass.ew;
|
|
247
260
|
default:
|
|
248
261
|
return null;
|
|
249
262
|
}
|
|
250
263
|
};
|
|
251
264
|
const getRectangleResizeHandleRefs = (rectangle, diameter) => {
|
|
252
|
-
const
|
|
253
|
-
|
|
265
|
+
const corners = RectangleClient.getCornerPoints(rectangle);
|
|
266
|
+
const refs = corners.map((corner, index) => {
|
|
254
267
|
return {
|
|
255
268
|
rectangle: {
|
|
256
|
-
x:
|
|
257
|
-
y:
|
|
269
|
+
x: corner[0] - diameter / 2,
|
|
270
|
+
y: corner[1] - diameter / 2,
|
|
258
271
|
width: diameter,
|
|
259
272
|
height: diameter
|
|
260
273
|
},
|
|
@@ -262,6 +275,26 @@ const getRectangleResizeHandleRefs = (rectangle, diameter) => {
|
|
|
262
275
|
cursorClass: getResizeCursorClassByIndex(index)
|
|
263
276
|
};
|
|
264
277
|
});
|
|
278
|
+
const rectangles = getResizeSideRectangles(corners, diameter / 2);
|
|
279
|
+
refs.push(...rectangles.map((rectangle, index) => {
|
|
280
|
+
return {
|
|
281
|
+
rectangle,
|
|
282
|
+
handle: getResizeHandleByIndex(index + 4),
|
|
283
|
+
cursorClass: getResizeCursorClassByIndex(index + 4)
|
|
284
|
+
};
|
|
285
|
+
}));
|
|
286
|
+
return refs;
|
|
287
|
+
};
|
|
288
|
+
const getResizeSideRectangles = (cornerPoints, offset) => {
|
|
289
|
+
const result = [];
|
|
290
|
+
for (let i = 0; i < cornerPoints.length; i++) {
|
|
291
|
+
let rectangle = RectangleClient.toRectangleClient([cornerPoints[i], cornerPoints[(i + 1) % 4]]);
|
|
292
|
+
const arr = new Array(2).fill(0);
|
|
293
|
+
arr[(i + 1) % 2] = offset / 2;
|
|
294
|
+
rectangle = RectangleClient.expand(rectangle, arr[0], arr[1]);
|
|
295
|
+
result.push(rectangle);
|
|
296
|
+
}
|
|
297
|
+
return result;
|
|
265
298
|
};
|
|
266
299
|
const IS_RESIZING = new WeakMap();
|
|
267
300
|
const isResizing = (board) => {
|
|
@@ -309,7 +342,6 @@ const withResize = (board, options) => {
|
|
|
309
342
|
handle: resizeDetectResult.handle
|
|
310
343
|
};
|
|
311
344
|
preventTouchMove(board, event, true);
|
|
312
|
-
return;
|
|
313
345
|
}
|
|
314
346
|
pointerDown(event);
|
|
315
347
|
};
|
|
@@ -347,6 +379,9 @@ const withResize = (board, options) => {
|
|
|
347
379
|
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
348
380
|
const resizeDetectResult = options.detect(point);
|
|
349
381
|
if (resizeDetectResult) {
|
|
382
|
+
if (hoveDetectResult && resizeDetectResult.cursorClass !== hoveDetectResult.cursorClass) {
|
|
383
|
+
PlaitBoard.getBoardContainer(board).classList.remove(`${hoveDetectResult.cursorClass}`);
|
|
384
|
+
}
|
|
350
385
|
hoveDetectResult = resizeDetectResult;
|
|
351
386
|
if (hoveDetectResult.cursorClass) {
|
|
352
387
|
PlaitBoard.getBoardContainer(board).classList.add(`${hoveDetectResult.cursorClass}`);
|
|
@@ -466,6 +501,12 @@ function getDirectionFactor(direction) {
|
|
|
466
501
|
}
|
|
467
502
|
function getFactorByPoints(source, target) {
|
|
468
503
|
const distance = distanceBetweenPointAndPoint(...source, ...target);
|
|
504
|
+
if (Point.isEquals(source, target)) {
|
|
505
|
+
return {
|
|
506
|
+
x: 1,
|
|
507
|
+
y: 1
|
|
508
|
+
};
|
|
509
|
+
}
|
|
469
510
|
return {
|
|
470
511
|
x: (target[0] - source[0]) / distance,
|
|
471
512
|
y: (target[1] - source[1]) / distance
|
|
@@ -626,6 +667,13 @@ const removeDuplicatePoints = (points) => {
|
|
|
626
667
|
});
|
|
627
668
|
return newArray;
|
|
628
669
|
};
|
|
670
|
+
const getExtendPoint = (source, target, extendDistance) => {
|
|
671
|
+
const distance = distanceBetweenPointAndPoint(...source, ...target);
|
|
672
|
+
const isEqual = Point.isEquals(source, target);
|
|
673
|
+
const sin = isEqual ? 1 : (target[1] - source[1]) / distance;
|
|
674
|
+
const cos = isEqual ? 1 : (target[0] - source[0]) / distance;
|
|
675
|
+
return [source[0] + extendDistance * cos, source[1] + extendDistance * sin];
|
|
676
|
+
};
|
|
629
677
|
|
|
630
678
|
function isVirtualKey(e) {
|
|
631
679
|
const isMod = e.ctrlKey || e.metaKey;
|
|
@@ -921,8 +969,8 @@ const adjust = (route, options) => {
|
|
|
921
969
|
if (pre &&
|
|
922
970
|
current &&
|
|
923
971
|
next &&
|
|
924
|
-
!((
|
|
925
|
-
(
|
|
972
|
+
!((downScale(current[0]) === downScale(pre[0]) && downScale(current[0]) === downScale(next[0])) ||
|
|
973
|
+
(downScale(current[1]) === downScale(pre[1]) && downScale(current[1]) === downScale(next[1])))) {
|
|
926
974
|
cornerCount++;
|
|
927
975
|
}
|
|
928
976
|
}
|
|
@@ -1218,5 +1266,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1218
1266
|
* Generated bundle index. Do not edit.
|
|
1219
1267
|
*/
|
|
1220
1268
|
|
|
1221
|
-
export { AStar, ActiveGenerator, BASE, BoardCreationMode, CommonPluginElement, DEFAULT_ROUTE_MARGIN, Generator, IS_RESIZING, ImageBaseComponent, ImageGenerator, MediaKeys, PICTURE_ACCEPTED_UPLOAD_SIZE, PRIMARY_COLOR, PointGraph, PointNode, PriorityQueue, PropertyTransforms, RESIZE_HANDLE_DIAMETER, ResizeCursorClass, ResizeHandle, WithCommonPluginKey, WithTextPluginKey, acceptImageTypes, addElementOfFocusedImage, addResizing, buildImage, calculatePolylineLength, createGraph, generateElbowLineRoute, getCreationMode, getDirection, getDirectionBetweenPointAndPoint, getDirectionByPointOfRectangle, getDirectionByVector, getDirectionFactor, getEdgeCenter, getElementOfFocusedImage, getFactorByPoints, getGraphPoints, getNextPoint, getOppositeDirection, getPointByVector, getPointOnPolyline, getPoints, getRatioByPoint, getRectangleByPoints, getRectangleResizeHandleRefs, getTextEditors, getTextManages, hasAfterDraw, isDelete, isDndMode, isDrawingMode, isEnterHotkey, isExpandHotkey, isPointOnLineSegment, isResizing, isResizingByCondition, isSpaceHotkey, isTabHotkey, isVirtualKey, normalizeShapePoints, reduceRouteMargin, removeDuplicatePoints, removeElementOfFocusedImage, removeResizing, rotateVectorAnti90, selectImage, setCreationMode, withResize };
|
|
1269
|
+
export { AStar, ActiveGenerator, BASE, BoardCreationMode, CommonPluginElement, DEFAULT_ROUTE_MARGIN, Generator, IS_RESIZING, ImageBaseComponent, ImageGenerator, MediaKeys, PICTURE_ACCEPTED_UPLOAD_SIZE, PRIMARY_COLOR, PointGraph, PointNode, PriorityQueue, PropertyTransforms, RESIZE_HANDLE_DIAMETER, ResizeCursorClass, ResizeHandle, TRANSPARENT, WithCommonPluginKey, WithTextPluginKey, acceptImageTypes, addElementOfFocusedImage, addResizing, buildImage, calculatePolylineLength, createGraph, generateElbowLineRoute, getCreationMode, getDirection, getDirectionBetweenPointAndPoint, getDirectionByPointOfRectangle, getDirectionByVector, getDirectionFactor, getEdgeCenter, getElementOfFocusedImage, getExtendPoint, getFactorByPoints, getGraphPoints, getNextPoint, getOppositeDirection, getPointByVector, getPointOnPolyline, getPoints, getRatioByPoint, getRectangleByPoints, getRectangleResizeHandleRefs, getTextEditors, getTextManages, hasAfterDraw, isDelete, isDndMode, isDrawingMode, isEnterHotkey, isExpandHotkey, isPointOnLineSegment, isResizing, isResizingByCondition, isSpaceHotkey, isTabHotkey, isVirtualKey, normalizeShapePoints, reduceRouteMargin, removeDuplicatePoints, removeElementOfFocusedImage, removeResizing, rotateVectorAnti90, selectImage, setCreationMode, withResize };
|
|
1222
1270
|
//# sourceMappingURL=plait-common.mjs.map
|