@leafer-in/editor 1.5.1 → 1.5.2
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/dist/editor.cjs +68 -20
- package/dist/editor.cjs.map +1 -1
- package/dist/editor.esm.js +68 -20
- package/dist/editor.esm.js.map +1 -1
- package/dist/editor.esm.min.js +1 -1
- package/dist/editor.esm.min.js.map +1 -1
- package/dist/editor.js +68 -20
- package/dist/editor.js.map +1 -1
- package/dist/editor.min.cjs +1 -1
- package/dist/editor.min.cjs.map +1 -1
- package/dist/editor.min.js +1 -1
- package/dist/editor.min.js.map +1 -1
- package/package.json +5 -5
- package/src/Editor.ts +46 -18
- package/src/config.ts +1 -0
- package/src/display/EditBox.ts +1 -0
- package/src/display/EditSelect.ts +4 -2
- package/src/editor/cursor.ts +1 -1
- package/src/helper/EditDataHelper.ts +4 -0
- package/src/helper/EditorHelper.ts +3 -2
package/dist/editor.cjs
CHANGED
|
@@ -393,7 +393,8 @@ class EditSelect extends draw.Group {
|
|
|
393
393
|
return target.leafer !== this.editor.leafer;
|
|
394
394
|
}
|
|
395
395
|
allowDrag(e) {
|
|
396
|
-
|
|
396
|
+
const { boxSelect, multipleSelect } = this.editor.mergeConfig;
|
|
397
|
+
if (this.running && (multipleSelect && boxSelect) && !e.target.draggable) {
|
|
397
398
|
return (!this.editor.editing && this.allow(e.target)) || (e.shiftKey && !findOne(e.path));
|
|
398
399
|
}
|
|
399
400
|
else {
|
|
@@ -411,7 +412,8 @@ class EditSelect extends draw.Group {
|
|
|
411
412
|
return this.isMultipleSelect(e) ? this.findDeepOne(e) : findOne(e.path);
|
|
412
413
|
}
|
|
413
414
|
isMultipleSelect(e) {
|
|
414
|
-
|
|
415
|
+
const { multipleSelect, continuousSelect } = this.editor.mergeConfig;
|
|
416
|
+
return multipleSelect && (e.shiftKey || continuousSelect);
|
|
415
417
|
}
|
|
416
418
|
__listenEvents() {
|
|
417
419
|
const { editor } = this;
|
|
@@ -586,21 +588,25 @@ const EditDataHelper = {
|
|
|
586
588
|
let last;
|
|
587
589
|
switch (direction) {
|
|
588
590
|
case top:
|
|
591
|
+
case topLeft:
|
|
589
592
|
last = { x: 0.5, y: 0 };
|
|
590
593
|
align = 'bottom';
|
|
591
594
|
skewX = 1;
|
|
592
595
|
break;
|
|
593
596
|
case bottom:
|
|
597
|
+
case bottomRight:
|
|
594
598
|
last = { x: 0.5, y: 1 };
|
|
595
599
|
align = 'top';
|
|
596
600
|
skewX = 1;
|
|
597
601
|
break;
|
|
598
602
|
case left$1:
|
|
603
|
+
case bottomLeft:
|
|
599
604
|
last = { x: 0, y: 0.5 };
|
|
600
605
|
align = 'right';
|
|
601
606
|
skewY = 1;
|
|
602
607
|
break;
|
|
603
608
|
case right$1:
|
|
609
|
+
case topRight:
|
|
604
610
|
last = { x: 1, y: 0.5 };
|
|
605
611
|
align = 'left';
|
|
606
612
|
skewY = 1;
|
|
@@ -689,7 +695,7 @@ function updateCursor(editor, e) {
|
|
|
689
695
|
let showResize = pointType.includes('resize');
|
|
690
696
|
if (showResize && rotateable && (e.metaKey || e.ctrlKey || !resizeable))
|
|
691
697
|
showResize = false;
|
|
692
|
-
const showSkew = skewable && !showResize && point.name === 'resize-line';
|
|
698
|
+
const showSkew = skewable && !showResize && (point.name === 'resize-line' || pointType === 'skew');
|
|
693
699
|
const cursor = showSkew ? skewCursor : (showResize ? resizeCursor : rotateCursor);
|
|
694
700
|
rotation += (EditDataHelper.getFlipDirection(point.direction, flippedX, flippedY) + 1) * 45;
|
|
695
701
|
rotation = Math.round(draw.MathHelper.formatRotation(rotation, true) / 2) * 2;
|
|
@@ -911,6 +917,8 @@ class EditBox extends draw.Group {
|
|
|
911
917
|
editor.onRotate(e);
|
|
912
918
|
if (pointType.includes('resize'))
|
|
913
919
|
editor.onScale(e);
|
|
920
|
+
if (pointType === 'skew')
|
|
921
|
+
editor.onSkew(e);
|
|
914
922
|
updateCursor(editor, e);
|
|
915
923
|
}
|
|
916
924
|
onArrow(e) {
|
|
@@ -1092,6 +1100,7 @@ const config = {
|
|
|
1092
1100
|
hover: true,
|
|
1093
1101
|
select: 'press',
|
|
1094
1102
|
openInner: 'double',
|
|
1103
|
+
multipleSelect: true,
|
|
1095
1104
|
boxSelect: true,
|
|
1096
1105
|
moveable: true,
|
|
1097
1106
|
resizeable: true,
|
|
@@ -1183,13 +1192,16 @@ const EditorHelper = {
|
|
|
1183
1192
|
const ungroupList = [];
|
|
1184
1193
|
app.lockLayout();
|
|
1185
1194
|
list.forEach(leaf => {
|
|
1186
|
-
if (leaf.isBranch
|
|
1195
|
+
if (leaf.isBranch) {
|
|
1187
1196
|
const { parent, children } = leaf;
|
|
1188
1197
|
while (children.length) {
|
|
1189
1198
|
ungroupList.push(children[0]);
|
|
1190
1199
|
children[0].dropTo(parent, parent.children.indexOf(leaf));
|
|
1191
1200
|
}
|
|
1192
|
-
leaf.
|
|
1201
|
+
if (leaf.isBranchLeaf)
|
|
1202
|
+
ungroupList.push(leaf);
|
|
1203
|
+
else
|
|
1204
|
+
leaf.remove();
|
|
1193
1205
|
}
|
|
1194
1206
|
else {
|
|
1195
1207
|
ungroupList.push(leaf);
|
|
@@ -1494,13 +1506,22 @@ class Editor extends draw.Group {
|
|
|
1494
1506
|
this.skewOf(origin, skewX, skewY);
|
|
1495
1507
|
}
|
|
1496
1508
|
move(x, y = 0) {
|
|
1497
|
-
const { element } = this;
|
|
1498
1509
|
if (!this.checkTransform('moveable'))
|
|
1499
1510
|
return;
|
|
1500
|
-
|
|
1511
|
+
if (typeof x === 'object')
|
|
1512
|
+
y = x.y, x = x.x;
|
|
1513
|
+
const { element: target } = this, { beforeMove } = this.mergeConfig;
|
|
1514
|
+
if (beforeMove) {
|
|
1515
|
+
const check = beforeMove({ target, x, y });
|
|
1516
|
+
if (typeof check === 'object')
|
|
1517
|
+
x = check.x, y = check.y;
|
|
1518
|
+
else if (check === false)
|
|
1519
|
+
return;
|
|
1520
|
+
}
|
|
1521
|
+
const world = target.getWorldPointByLocal({ x, y }, null, true);
|
|
1501
1522
|
if (this.multiple)
|
|
1502
|
-
|
|
1503
|
-
const data = { target
|
|
1523
|
+
target.safeChange(() => target.move(x, y));
|
|
1524
|
+
const data = { target, editor: this, moveX: world.x, moveY: world.y };
|
|
1504
1525
|
this.emitEvent(new EditorMoveEvent(EditorMoveEvent.BEFORE_MOVE, data));
|
|
1505
1526
|
const event = new EditorMoveEvent(EditorMoveEvent.MOVE, data);
|
|
1506
1527
|
this.editTool.onMove(event);
|
|
@@ -1509,8 +1530,14 @@ class Editor extends draw.Group {
|
|
|
1509
1530
|
scaleWithDrag(data) {
|
|
1510
1531
|
if (!this.checkTransform('resizeable'))
|
|
1511
1532
|
return;
|
|
1512
|
-
const { element } = this;
|
|
1513
|
-
|
|
1533
|
+
const { element: target } = this, { beforeScale } = this.mergeConfig;
|
|
1534
|
+
if (beforeScale) {
|
|
1535
|
+
const { origin, scaleX, scaleY, drag } = data;
|
|
1536
|
+
const check = beforeScale({ target, drag, origin, scaleX, scaleY });
|
|
1537
|
+
if (check === false)
|
|
1538
|
+
return;
|
|
1539
|
+
}
|
|
1540
|
+
data = Object.assign(Object.assign({}, data), { target, editor: this, worldOrigin: target.getWorldPoint(data.origin) });
|
|
1514
1541
|
this.emitEvent(new EditorScaleEvent(EditorScaleEvent.BEFORE_SCALE, data));
|
|
1515
1542
|
const event = new EditorScaleEvent(EditorScaleEvent.SCALE, data);
|
|
1516
1543
|
this.editTool.onScaleWithDrag(event);
|
|
@@ -1519,10 +1546,17 @@ class Editor extends draw.Group {
|
|
|
1519
1546
|
scaleOf(origin, scaleX, scaleY = scaleX, _resize) {
|
|
1520
1547
|
if (!this.checkTransform('resizeable'))
|
|
1521
1548
|
return;
|
|
1522
|
-
const { element } = this;
|
|
1549
|
+
const { element: target } = this, { beforeScale } = this.mergeConfig;
|
|
1550
|
+
if (beforeScale) {
|
|
1551
|
+
const check = beforeScale({ target, origin, scaleX, scaleY });
|
|
1552
|
+
if (typeof check === 'object')
|
|
1553
|
+
scaleX = check.scaleX, scaleY = check.scaleY;
|
|
1554
|
+
else if (check === false)
|
|
1555
|
+
return;
|
|
1556
|
+
}
|
|
1523
1557
|
const worldOrigin = this.getWorldOrigin(origin);
|
|
1524
|
-
const transform = this.multiple && this.getChangedTransform(() =>
|
|
1525
|
-
const data = { target
|
|
1558
|
+
const transform = this.multiple && this.getChangedTransform(() => target.safeChange(() => target.scaleOf(origin, scaleX, scaleY)));
|
|
1559
|
+
const data = { target, editor: this, worldOrigin, scaleX, scaleY, transform };
|
|
1526
1560
|
this.emitEvent(new EditorScaleEvent(EditorScaleEvent.BEFORE_SCALE, data));
|
|
1527
1561
|
const event = new EditorScaleEvent(EditorScaleEvent.SCALE, data);
|
|
1528
1562
|
this.editTool.onScale(event);
|
|
@@ -1543,10 +1577,17 @@ class Editor extends draw.Group {
|
|
|
1543
1577
|
rotateOf(origin, rotation) {
|
|
1544
1578
|
if (!this.checkTransform('rotateable'))
|
|
1545
1579
|
return;
|
|
1546
|
-
const { element } = this;
|
|
1580
|
+
const { element: target } = this, { beforeRotate } = this.mergeConfig;
|
|
1581
|
+
if (beforeRotate) {
|
|
1582
|
+
const check = beforeRotate({ target, origin, rotation });
|
|
1583
|
+
if (typeof check === 'number')
|
|
1584
|
+
rotation = check;
|
|
1585
|
+
else if (check === false)
|
|
1586
|
+
return;
|
|
1587
|
+
}
|
|
1547
1588
|
const worldOrigin = this.getWorldOrigin(origin);
|
|
1548
|
-
const transform = this.multiple && this.getChangedTransform(() =>
|
|
1549
|
-
const data = { target
|
|
1589
|
+
const transform = this.multiple && this.getChangedTransform(() => target.safeChange(() => target.rotateOf(origin, rotation)));
|
|
1590
|
+
const data = { target, editor: this, worldOrigin, rotation, transform };
|
|
1550
1591
|
this.emitEvent(new EditorRotateEvent(EditorRotateEvent.BEFORE_ROTATE, data));
|
|
1551
1592
|
const event = new EditorRotateEvent(EditorRotateEvent.ROTATE, data);
|
|
1552
1593
|
this.editTool.onRotate(event);
|
|
@@ -1555,10 +1596,17 @@ class Editor extends draw.Group {
|
|
|
1555
1596
|
skewOf(origin, skewX, skewY = 0, _resize) {
|
|
1556
1597
|
if (!this.checkTransform('skewable'))
|
|
1557
1598
|
return;
|
|
1558
|
-
const { element } = this;
|
|
1599
|
+
const { element: target } = this, { beforeSkew } = this.mergeConfig;
|
|
1600
|
+
if (beforeSkew) {
|
|
1601
|
+
const check = beforeSkew({ target, origin, skewX, skewY });
|
|
1602
|
+
if (typeof check === 'object')
|
|
1603
|
+
skewX = check.skewX, skewY = check.skewY;
|
|
1604
|
+
else if (check === false)
|
|
1605
|
+
return;
|
|
1606
|
+
}
|
|
1559
1607
|
const worldOrigin = this.getWorldOrigin(origin);
|
|
1560
|
-
const transform = this.multiple && this.getChangedTransform(() =>
|
|
1561
|
-
const data = { target
|
|
1608
|
+
const transform = this.multiple && this.getChangedTransform(() => target.safeChange(() => target.skewOf(origin, skewX, skewY)));
|
|
1609
|
+
const data = { target, editor: this, worldOrigin, skewX, skewY, transform };
|
|
1562
1610
|
this.emitEvent(new EditorSkewEvent(EditorSkewEvent.BEFORE_SKEW, data));
|
|
1563
1611
|
const event = new EditorSkewEvent(EditorSkewEvent.SKEW, data);
|
|
1564
1612
|
this.editTool.onSkew(event);
|