@plait/draw 0.56.0 → 0.56.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.
- package/constants/geometry.d.ts +17 -3
- package/esm2022/constants/geometry.mjs +24 -6
- package/esm2022/engines/basic-shapes/pentagon-arrow.mjs +7 -4
- package/esm2022/engines/basic-shapes/process-arrow.mjs +5 -5
- package/esm2022/plugins/with-draw-fragment.mjs +7 -7
- package/esm2022/transforms/geometry.mjs +5 -3
- package/esm2022/utils/geometry.mjs +6 -6
- package/esm2022/utils/memorize.mjs +16 -3
- package/fesm2022/plait-draw.mjs +61 -25
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/geometry.d.ts +5 -1
|
@@ -47,8 +47,21 @@ export const memorizeLatestText = (element, operations) => {
|
|
|
47
47
|
let textMemory = getMemorizedLatest(memorizeKey)?.text || {};
|
|
48
48
|
const setNodeOperation = operations.find(operation => operation.type === 'set_node');
|
|
49
49
|
if (setNodeOperation) {
|
|
50
|
-
const newProperties = setNodeOperation
|
|
51
|
-
|
|
50
|
+
const { properties, newProperties } = setNodeOperation;
|
|
51
|
+
for (const key in newProperties) {
|
|
52
|
+
const value = newProperties[key];
|
|
53
|
+
if (value == null) {
|
|
54
|
+
delete textMemory[key];
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
textMemory[key] = value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
for (const key in properties) {
|
|
61
|
+
if (!newProperties.hasOwnProperty(key)) {
|
|
62
|
+
delete textMemory[key];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
52
65
|
memorizeLatest(memorizeKey, 'text', textMemory);
|
|
53
66
|
}
|
|
54
67
|
};
|
|
@@ -72,4 +85,4 @@ export const memorizeLatestShape = (board, shape) => {
|
|
|
72
85
|
export const getMemorizedLatestShape = (board) => {
|
|
73
86
|
return memorizedShape.get(board);
|
|
74
87
|
};
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3JpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9tZW1vcml6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFrQixXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUluRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBMEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDcEQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2IsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNYLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUM3QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUM1QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNO1FBQ1YsQ0FBQztJQUNMLENBQUM7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QUMsRUFBRSxDQUFDO0lBQzNFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsSUFBSSxLQUFLLEtBQUssV0FBVyxDQUFDLElBQUksSUFBSSxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTztJQUNYLENBQUM7SUFDRCxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7U0FBTSxDQUFDO1FBQ0osSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFLENBQUM7WUFDckMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN6RCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQmFzaWNTaGFwZXMsIEdlb21ldHJ5U2hhcGVzLCBNZW1vcml6ZUtleSwgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0TWVtb3JpemVkTGF0ZXN0LCBtZW1vcml6ZUxhdGVzdCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgRHJhd1BvaW50ZXJUeXBlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJhc2VPcGVyYXRpb24sIEJhc2VTZXROb2RlT3BlcmF0aW9uLCBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuXG5jb25zdCBTSEFQRV9NQVhfTEVOR1RIID0gNjtcbmNvbnN0IG1lbW9yaXplZFNoYXBlOiBXZWFrTWFwPFBsYWl0Qm9hcmQsIEdlb21ldHJ5U2hhcGVzW10+ID0gbmV3IFdlYWtNYXAoKTtcblxuZXhwb3J0IGNvbnN0IGdldE1lbW9yaXplS2V5ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGxldCBrZXkgPSAnJztcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgY2FzZSBQbGFpdERyYXdFbGVtZW50LmlzVGV4dChlbGVtZW50KToge1xuICAgICAgICAgICAga2V5ID0gTWVtb3JpemVLZXkudGV4dDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGxhaXREcmF3RWxlbWVudC5pc0Jhc2ljU2hhcGUoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmJhc2ljU2hhcGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBsYWl0RHJhd0VsZW1lbnQuaXNGbG93Y2hhcnQoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmZsb3djaGFydDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmxpbmU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmVNZW1vcml6ZWRMYXRlc3QgPSAoKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IGdldE1lbW9yaXplZExhdGVzdChNZW1vcml6ZUtleS5saW5lKTtcbiAgICBkZWxldGUgcHJvcGVydGllcz8udGV4dDtcbiAgICByZXR1cm4geyAuLi5wcm9wZXJ0aWVzIH0gfHwge307XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVtb3JpemVkTGF0ZXN0QnlQb2ludGVyID0gKHBvaW50ZXI6IERyYXdQb2ludGVyVHlwZSkgPT4ge1xuICAgIGxldCBtZW1vcml6ZUtleSA9ICcnO1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQmFzaWNTaGFwZSh7IHNoYXBlOiBwb2ludGVyIH0pKSB7XG4gICAgICAgIG1lbW9yaXplS2V5ID0gcG9pbnRlciA9PT0gQmFzaWNTaGFwZXMudGV4dCA/IE1lbW9yaXplS2V5LnRleHQgOiBNZW1vcml6ZUtleS5iYXNpY1NoYXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lbW9yaXplS2V5ID0gTWVtb3JpemVLZXkuZmxvd2NoYXJ0O1xuICAgIH1cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0geyAuLi5nZXRNZW1vcml6ZWRMYXRlc3QobWVtb3JpemVLZXkpIH0gfHwge307XG4gICAgY29uc3QgdGV4dFByb3BlcnRpZXMgPSB7IC4uLnByb3BlcnRpZXMudGV4dCB9IHx8IHt9O1xuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLnRleHQ7XG4gICAgcmV0dXJuIHsgdGV4dFByb3BlcnRpZXMsIGdlb21ldHJ5UHJvcGVydGllczogcHJvcGVydGllcyB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1lbW9yaXplTGF0ZXN0VGV4dCA9IChlbGVtZW50OiBQbGFpdERyYXdFbGVtZW50LCBvcGVyYXRpb25zOiBCYXNlT3BlcmF0aW9uW10pID0+IHtcbiAgICBjb25zdCBtZW1vcml6ZUtleSA9IGdldE1lbW9yaXplS2V5KGVsZW1lbnQpO1xuICAgIGxldCB0ZXh0TWVtb3J5ID0gZ2V0TWVtb3JpemVkTGF0ZXN0KG1lbW9yaXplS2V5KT8udGV4dCB8fCB7fTtcbiAgICBjb25zdCBzZXROb2RlT3BlcmF0aW9uID0gb3BlcmF0aW9ucy5maW5kKG9wZXJhdGlvbiA9PiBvcGVyYXRpb24udHlwZSA9PT0gJ3NldF9ub2RlJyk7XG4gICAgaWYgKHNldE5vZGVPcGVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzIH0gPSBzZXROb2RlT3BlcmF0aW9uIGFzIEJhc2VTZXROb2RlT3BlcmF0aW9uO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ld1Byb3BlcnRpZXNba2V5IGFzIGtleW9mIFBhcnRpYWw8Tm9kZT5dO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGV4dE1lbW9yeVtrZXldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0ZXh0TWVtb3J5W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0ZXh0TWVtb3J5W2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWVtb3JpemVMYXRlc3QobWVtb3JpemVLZXksICd0ZXh0JywgdGV4dE1lbW9yeSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG1lbW9yaXplTGF0ZXN0U2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNoYXBlOiBHZW9tZXRyeVNoYXBlcykgPT4ge1xuICAgIGNvbnN0IHNoYXBlcyA9IG1lbW9yaXplZFNoYXBlLmhhcyhib2FyZCkgPyBtZW1vcml6ZWRTaGFwZS5nZXQoYm9hcmQpISA6IFtdO1xuICAgIGNvbnN0IHNoYXBlSW5kZXggPSBzaGFwZXMuaW5kZXhPZihzaGFwZSk7XG4gICAgaWYgKHNoYXBlID09PSBCYXNpY1NoYXBlcy50ZXh0IHx8IHNoYXBlSW5kZXggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2hhcGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc2hhcGVzLnNwbGljZShzaGFwZUluZGV4LCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc2hhcGVzLmxlbmd0aCA9PT0gU0hBUEVfTUFYX0xFTkdUSCkge1xuICAgICAgICAgICAgc2hhcGVzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNoYXBlcy51bnNoaWZ0KHNoYXBlKTtcbiAgICBtZW1vcml6ZWRTaGFwZS5zZXQoYm9hcmQsIHNoYXBlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVtb3JpemVkTGF0ZXN0U2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gbWVtb3JpemVkU2hhcGUuZ2V0KGJvYXJkKTtcbn07XG4iXX0=
|
package/fesm2022/plait-draw.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ACTIVE_STROKE_WIDTH, ThemeColorMode, createDebugGenerator, Point, RectangleClient, getElementById, rotatePointsByElement, createG, arrowPoints, createPath, distanceBetweenPointAndPoint, drawLinearPath, rotate, distanceBetweenPointAndSegments, HIT_DISTANCE_BUFFER, isPolylineHitRectangle, rotateAntiPointsByElement, rotatePoints, depthFirstRecursion, PlaitBoard, getIsRecursionFunc, idCreator, catmullRomFitting, setStrokeLinecap, findElements, createMask, createRect, getSelectedElements, isPointInPolygon, getNearestPointBetweenPointAndSegments, isPointInEllipse, getNearestPointBetweenPointAndEllipse, getEllipseTangentSlope, getVectorFromPointAndSlope, drawRectangle, drawRoundRectangle, isPointInRoundRectangle, setPathStrokeLinecap, getCrossingPointsBetweenEllipseAndSegment, Direction, SNAPPING_STROKE_WIDTH, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, drawCircle, Transforms, clearSelectedElement, addSelectedElement, BoardTransforms, PlaitPointerType, hasValidAngle, Path, PlaitNode, toViewBoxPoint, toHostPoint, isSelectionMoving, RgbaToHEX, getHitElementByPoint, getRectangleByElements, getSelectionAngle, rotatedDataPoints, isAxisChangedByAngle, getRectangleByAngle, getSnapRectangles, getTripleAxis, getMinPointDelta, SNAP_TOLERANCE, drawPointSnapLines, drawSolidLines, preventTouchMove, createClipboardContext, WritableClipboardType, addClipboardContext, setAngleForG, CursorClass, PlaitElement, temporaryDisableSelection, PRESS_AND_MOVE_BUFFER, isMainPointer, throttleRAF, getAngleBetweenPoints, normalizeAngle, degreesToRadians, rotateElements, MERGING, ROTATE_HANDLE_CLASS_NAME, SELECTION_RECTANGLE_CLASS_NAME } from '@plait/core';
|
|
1
|
+
import { ACTIVE_STROKE_WIDTH, ThemeColorMode, createDebugGenerator, Point, RectangleClient, getElementById, rotatePointsByElement, createG, arrowPoints, createPath, distanceBetweenPointAndPoint, drawLinearPath, rotate, distanceBetweenPointAndSegments, HIT_DISTANCE_BUFFER, isPolylineHitRectangle, rotateAntiPointsByElement, rotatePoints, depthFirstRecursion, PlaitBoard, getIsRecursionFunc, idCreator, catmullRomFitting, setStrokeLinecap, findElements, createMask, createRect, getSelectedElements, isPointInPolygon, getNearestPointBetweenPointAndSegments, isPointInEllipse, getNearestPointBetweenPointAndEllipse, getEllipseTangentSlope, getVectorFromPointAndSlope, drawRectangle, drawRoundRectangle, isPointInRoundRectangle, setPathStrokeLinecap, getCrossingPointsBetweenEllipseAndSegment, Direction, SNAPPING_STROKE_WIDTH, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, drawCircle, Transforms, clearSelectedElement, addSelectedElement, BoardTransforms, PlaitPointerType, hasValidAngle, Path, PlaitNode, toViewBoxPoint, toHostPoint, isSelectionMoving, RgbaToHEX, getHitElementByPoint, getRectangleByElements, getSelectionAngle, rotatedDataPoints, isAxisChangedByAngle, getRectangleByAngle, getSnapRectangles, getTripleAxis, getMinPointDelta, SNAP_TOLERANCE, drawPointSnapLines, drawSolidLines, preventTouchMove, WritableClipboardOperationType, createClipboardContext, WritableClipboardType, addClipboardContext, setAngleForG, CursorClass, PlaitElement, temporaryDisableSelection, PRESS_AND_MOVE_BUFFER, isMainPointer, throttleRAF, getAngleBetweenPoints, normalizeAngle, degreesToRadians, rotateElements, MERGING, ROTATE_HANDLE_CLASS_NAME, SELECTION_RECTANGLE_CLASS_NAME } from '@plait/core';
|
|
2
2
|
import { removeDuplicatePoints, generateElbowLineRoute, simplifyOrthogonalPoints, isSourceAndTargetIntersect, getPoints, DEFAULT_ROUTE_MARGIN, getPointByVectorComponent, getExtendPoint, getUnitVectorByPointAndPoint, Generator, RESIZE_HANDLE_DIAMETER, getPointOnPolyline, TRANSPARENT, getRectangleResizeHandleRefs, getRotatedResizeCursorClassByAngle, ROTATE_HANDLE_DISTANCE_TO_ELEMENT, ROTATE_HANDLE_SIZE, getMemorizedLatest, memorizeLatest, getCrossingPointsBetweenPointAndSegment, isPointOnSegment, getDirectionByPointOfRectangle, getDirectionFactor, getFirstTextManage, getDirectionByVector, getOppositeDirection, rotateVector, rotateVectorAnti90, getSourceAndTargetOuterRectangle, getNextPoint, normalizeShapePoints, getFirstTextEditor, PRIMARY_COLOR, CommonPluginElement, ActiveGenerator, canResize, WithTextPluginKey, drawPrimaryHandle, drawFillPrimaryHandle, isVirtualKey, isDelete, isSpaceHotkey, isCornerHandle, getIndexByResizeHandle, resetPointsAfterResize, withResize, drawHandle, getSymmetricHandleIndex, getResizeHandlePointByIndex, getDirectionFactorByDirectionComponent, isDndMode, isDrawingMode, getElementsText, acceptImageTypes, getElementOfFocusedImage, buildImage, isResizingByCondition, getRatioByPoint, getTextManages, ImageGenerator, ResizeHandle, addRotating, removeRotating, drawRotateHandle } from '@plait/common';
|
|
3
3
|
import { Alignment, buildText, DEFAULT_FONT_SIZE, getTextSize, AlignEditor, TextManage } from '@plait/text';
|
|
4
4
|
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
@@ -79,11 +79,21 @@ const DefaultBasicShapeProperty = {
|
|
|
79
79
|
strokeColor: '#333',
|
|
80
80
|
strokeWidth: 2
|
|
81
81
|
};
|
|
82
|
-
const
|
|
82
|
+
const DefaultPentagonArrowProperty = {
|
|
83
83
|
width: 120,
|
|
84
|
-
height:
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
height: 50
|
|
85
|
+
};
|
|
86
|
+
const DefaultTwoWayArrowProperty = {
|
|
87
|
+
width: 138,
|
|
88
|
+
height: 80
|
|
89
|
+
};
|
|
90
|
+
const DefaultArrowProperty = {
|
|
91
|
+
width: 100,
|
|
92
|
+
height: 80
|
|
93
|
+
};
|
|
94
|
+
const DefaultCloudProperty = {
|
|
95
|
+
width: 120,
|
|
96
|
+
height: 100
|
|
87
97
|
};
|
|
88
98
|
const DefaultTextProperty = {
|
|
89
99
|
width: 36,
|
|
@@ -137,6 +147,14 @@ const DefaultMergeProperty = {
|
|
|
137
147
|
width: 47,
|
|
138
148
|
height: 33
|
|
139
149
|
};
|
|
150
|
+
const DefaultBasicShapePropertyMap = {
|
|
151
|
+
[BasicShapes.pentagonArrow]: DefaultPentagonArrowProperty,
|
|
152
|
+
[BasicShapes.processArrow]: DefaultPentagonArrowProperty,
|
|
153
|
+
[BasicShapes.cloud]: DefaultCloudProperty,
|
|
154
|
+
[BasicShapes.twoWayArrow]: DefaultTwoWayArrowProperty,
|
|
155
|
+
[BasicShapes.leftArrow]: DefaultArrowProperty,
|
|
156
|
+
[BasicShapes.rightArrow]: DefaultArrowProperty
|
|
157
|
+
};
|
|
140
158
|
const DefaultFlowchartPropertyMap = {
|
|
141
159
|
[FlowchartSymbols.connector]: DefaultConnectorProperty,
|
|
142
160
|
[FlowchartSymbols.process]: DefaultFlowchartProperty,
|
|
@@ -1057,8 +1075,21 @@ const memorizeLatestText = (element, operations) => {
|
|
|
1057
1075
|
let textMemory = getMemorizedLatest(memorizeKey)?.text || {};
|
|
1058
1076
|
const setNodeOperation = operations.find(operation => operation.type === 'set_node');
|
|
1059
1077
|
if (setNodeOperation) {
|
|
1060
|
-
const newProperties = setNodeOperation
|
|
1061
|
-
|
|
1078
|
+
const { properties, newProperties } = setNodeOperation;
|
|
1079
|
+
for (const key in newProperties) {
|
|
1080
|
+
const value = newProperties[key];
|
|
1081
|
+
if (value == null) {
|
|
1082
|
+
delete textMemory[key];
|
|
1083
|
+
}
|
|
1084
|
+
else {
|
|
1085
|
+
textMemory[key] = value;
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
for (const key in properties) {
|
|
1089
|
+
if (!newProperties.hasOwnProperty(key)) {
|
|
1090
|
+
delete textMemory[key];
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1062
1093
|
memorizeLatest(memorizeKey, 'text', textMemory);
|
|
1063
1094
|
}
|
|
1064
1095
|
};
|
|
@@ -1696,11 +1727,12 @@ const PentagonEngine = createPolygonEngine({
|
|
|
1696
1727
|
});
|
|
1697
1728
|
|
|
1698
1729
|
const getPentagonArrowPoints = (rectangle) => {
|
|
1730
|
+
const wider = rectangle.width > rectangle.height / 2;
|
|
1699
1731
|
return [
|
|
1700
1732
|
[rectangle.x, rectangle.y],
|
|
1701
|
-
[rectangle.x + (rectangle.width
|
|
1733
|
+
[rectangle.x + (wider ? rectangle.width - rectangle.height / 2 : 0), rectangle.y],
|
|
1702
1734
|
[rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2],
|
|
1703
|
-
[rectangle.x + (rectangle.width
|
|
1735
|
+
[rectangle.x + (wider ? rectangle.width - rectangle.height / 2 : 0), rectangle.y + rectangle.height],
|
|
1704
1736
|
[rectangle.x, rectangle.y + rectangle.height]
|
|
1705
1737
|
];
|
|
1706
1738
|
};
|
|
@@ -1710,8 +1742,10 @@ const PentagonArrowEngine = createPolygonEngine({
|
|
|
1710
1742
|
return RectangleClient.getEdgeCenterPoints(rectangle);
|
|
1711
1743
|
},
|
|
1712
1744
|
getTextRectangle(element) {
|
|
1745
|
+
const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
|
|
1713
1746
|
const rectangle = getTextRectangle(element);
|
|
1714
|
-
|
|
1747
|
+
const wider = elementRectangle.width > elementRectangle.height / 2 + 20;
|
|
1748
|
+
rectangle.width = wider ? elementRectangle.width - elementRectangle.height / 2 : rectangle.width;
|
|
1715
1749
|
return rectangle;
|
|
1716
1750
|
}
|
|
1717
1751
|
});
|
|
@@ -1730,11 +1764,11 @@ const getProcessArrowPoints = (rectangle) => {
|
|
|
1730
1764
|
const ProcessArrowEngine = createPolygonEngine({
|
|
1731
1765
|
getPolygonPoints: getProcessArrowPoints,
|
|
1732
1766
|
getTextRectangle(element) {
|
|
1733
|
-
const rectangle = getTextRectangle(element);
|
|
1734
1767
|
const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
|
|
1735
|
-
const
|
|
1736
|
-
|
|
1737
|
-
rectangle.
|
|
1768
|
+
const rectangle = getTextRectangle(element);
|
|
1769
|
+
const wider = elementRectangle.width > elementRectangle.height + 20;
|
|
1770
|
+
rectangle.width = wider ? elementRectangle.width - elementRectangle.height : rectangle.width;
|
|
1771
|
+
rectangle.x = wider ? elementRectangle.x + elementRectangle.height / 2 : rectangle.x;
|
|
1738
1772
|
return rectangle;
|
|
1739
1773
|
}
|
|
1740
1774
|
});
|
|
@@ -3174,6 +3208,9 @@ const getCenterPointsOnPolygon = (points) => {
|
|
|
3174
3208
|
const getDefaultFlowchartProperty = (symbol) => {
|
|
3175
3209
|
return DefaultFlowchartPropertyMap[symbol];
|
|
3176
3210
|
};
|
|
3211
|
+
const getDefaultBasicShapeProperty = (shape) => {
|
|
3212
|
+
return DefaultBasicShapePropertyMap[shape] || DefaultBasicShapeProperty;
|
|
3213
|
+
};
|
|
3177
3214
|
const createDefaultFlowchart = (point) => {
|
|
3178
3215
|
const decisionProperty = getDefaultFlowchartProperty(FlowchartSymbols.decision);
|
|
3179
3216
|
const processProperty = getDefaultFlowchartProperty(FlowchartSymbols.process);
|
|
@@ -3267,10 +3304,7 @@ const getDefaultGeometryProperty = (pointer) => {
|
|
|
3267
3304
|
return getDefaultFlowchartProperty(pointer);
|
|
3268
3305
|
}
|
|
3269
3306
|
else {
|
|
3270
|
-
|
|
3271
|
-
return DefaultCloudShapeProperty;
|
|
3272
|
-
}
|
|
3273
|
-
return DefaultBasicShapeProperty;
|
|
3307
|
+
return getDefaultBasicShapeProperty(pointer);
|
|
3274
3308
|
}
|
|
3275
3309
|
};
|
|
3276
3310
|
const getDefaultTextPoints = (board, centerPoint, fontSize) => {
|
|
@@ -3692,7 +3726,9 @@ const insertGeometry = (board, points, shape) => {
|
|
|
3692
3726
|
return newElement;
|
|
3693
3727
|
};
|
|
3694
3728
|
const insertGeometryByVector = (board, point, shape, vector) => {
|
|
3695
|
-
const shapeProperty = DefaultFlowchartPropertyMap[shape] ||
|
|
3729
|
+
const shapeProperty = DefaultFlowchartPropertyMap[shape] ||
|
|
3730
|
+
DefaultBasicShapePropertyMap[shape] ||
|
|
3731
|
+
DefaultBasicShapeProperty;
|
|
3696
3732
|
const direction = getDirectionByVector(vector);
|
|
3697
3733
|
if (direction) {
|
|
3698
3734
|
let offset = 0;
|
|
@@ -4954,11 +4990,11 @@ const withDrawFragment = (baseBoard) => {
|
|
|
4954
4990
|
}
|
|
4955
4991
|
return getDeletedFragment(data);
|
|
4956
4992
|
};
|
|
4957
|
-
board.buildFragment = (clipboardContext, rectangle,
|
|
4993
|
+
board.buildFragment = (clipboardContext, rectangle, operationType, originData) => {
|
|
4958
4994
|
const targetDrawElements = getSelectedDrawElements(board, originData);
|
|
4959
4995
|
let boundLineElements = [];
|
|
4960
4996
|
if (targetDrawElements.length) {
|
|
4961
|
-
if (
|
|
4997
|
+
if (operationType === WritableClipboardOperationType.cut) {
|
|
4962
4998
|
const geometryElements = targetDrawElements.filter(value => PlaitDrawElement.isGeometry(value));
|
|
4963
4999
|
const lineElements = targetDrawElements.filter(value => PlaitDrawElement.isLine(value));
|
|
4964
5000
|
boundLineElements = getBoundedLineElements(board, geometryElements).filter(line => !lineElements.includes(line));
|
|
@@ -4977,9 +5013,9 @@ const withDrawFragment = (baseBoard) => {
|
|
|
4977
5013
|
});
|
|
4978
5014
|
}
|
|
4979
5015
|
}
|
|
4980
|
-
return buildFragment(clipboardContext, rectangle,
|
|
5016
|
+
return buildFragment(clipboardContext, rectangle, operationType, originData);
|
|
4981
5017
|
};
|
|
4982
|
-
board.insertFragment = (clipboardData, targetPoint) => {
|
|
5018
|
+
board.insertFragment = (clipboardData, targetPoint, operationType) => {
|
|
4983
5019
|
const selectedElements = getSelectedElements(board);
|
|
4984
5020
|
if (clipboardData?.files?.length) {
|
|
4985
5021
|
const acceptImageArray = acceptImageTypes.map(type => 'image/' + type);
|
|
@@ -5009,7 +5045,7 @@ const withDrawFragment = (baseBoard) => {
|
|
|
5009
5045
|
}
|
|
5010
5046
|
}
|
|
5011
5047
|
}
|
|
5012
|
-
insertFragment(clipboardData, targetPoint);
|
|
5048
|
+
insertFragment(clipboardData, targetPoint, operationType);
|
|
5013
5049
|
};
|
|
5014
5050
|
return board;
|
|
5015
5051
|
};
|
|
@@ -5826,5 +5862,5 @@ const withDraw = (board) => {
|
|
|
5826
5862
|
* Generated bundle index. Do not edit.
|
|
5827
5863
|
*/
|
|
5828
5864
|
|
|
5829
|
-
export { BasicShapes, DEFAULT_IMAGE_WIDTH, DefaultBasicShapeProperty,
|
|
5865
|
+
export { BasicShapes, DEFAULT_IMAGE_WIDTH, DefaultArrowProperty, DefaultBasicShapeProperty, DefaultBasicShapePropertyMap, DefaultCloudProperty, DefaultConnectorProperty, DefaultDataBaseProperty, DefaultDataProperty, DefaultDecisionProperty, DefaultDocumentProperty, DefaultFlowchartProperty, DefaultFlowchartPropertyMap, DefaultGeometryActiveStyle, DefaultGeometryStyle, DefaultInternalStorageProperty, DefaultManualInputProperty, DefaultMergeProperty, DefaultMultiDocumentProperty, DefaultNoteProperty, DefaultPentagonArrowProperty, DefaultTextProperty, DefaultTwoWayArrowProperty, DrawThemeColors, DrawTransforms, FlowchartSymbols, GeometryComponent, GeometryThreshold, LINE_HIT_GEOMETRY_BUFFER, LINE_SNAPPING_BUFFER, LINE_SNAPPING_CONNECTOR_BUFFER, LineComponent, LineHandleKey, LineMarkerType, LineShape, MemorizeKey, PlaitDrawElement, PlaitGeometry, PlaitLine, Q2C, ShapeDefaultSpace, StrokeStyle, WithLineAutoCompletePluginKey, alignElbowSegment, alignPoints, createDefaultFlowchart, createDefaultGeometry, createGeometryElement, createLineElement, createTextElement, drawBoundReaction, drawGeometry, drawLine, drawLineArrow, editText, getAutoCompletePoints, getBasicPointers, getCenterPointsOnPolygon, getConnectionPoint, getCurvePoints, getDefaultBasicShapeProperty, getDefaultFlowchartProperty, getDefaultGeometryPoints, getDefaultGeometryProperty, getDefaultTextPoints, getDrawDefaultStrokeColor, getElbowLineRouteOptions, getElbowPoints, getFillByElement, getFlowchartDefaultFill, getFlowchartPointers, getGeometryPointers, getHitConnection, getHitConnectorPoint, getHitIndexOfAutoCompletePoint, getIndexAndDeleteCountByKeyPoint, getLineDashByElement, getLineHandleRefPair, getLineMemorizedLatest, getLinePointers, getLinePoints, getLineTextRectangle, getLines, getMemorizeKey, getMemorizedLatestByPointer, getMemorizedLatestShape, getMidKeyPoints, getMiddlePoints, getMirrorDataPoints, getNearestPoint, getNextRenderPoints, getNextSourceAndTargetPoints, getResizedPreviousAndNextPoint, getSelectedDrawElements, getSelectedGeometryElements, getSelectedImageElements, getSelectedLineElements, getSourceAndTargetRectangle, getStrokeColorByElement, getStrokeStyleByElement, getStrokeWidthByElement, getTextRectangle, getTextShapeProperty, getVectorByConnection, handleLineCreating, hasIllegalElbowPoint, insertElement, isHitDrawElement, isHitEdgeOfShape, isHitElementInside, isHitLine, isHitLineText, isHitPolyLine, isInsideOfShape, isRectangleHitDrawElement, isSelfLoop, isTextExceedingBounds, isUpdatedHandleIndex, isUseDefaultOrthogonalRoute, memorizeLatestShape, memorizeLatestText, withDraw, withLineAutoComplete };
|
|
5830
5866
|
//# sourceMappingURL=plait-draw.mjs.map
|