@plait/mind 0.47.0 → 0.48.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.
@@ -46,16 +46,16 @@ export const getLayoutDirection = (node, isHorizontal) => {
46
46
  }
47
47
  }
48
48
  };
49
- // 以右为基准
50
- // -> 左:
51
- // 1. 终点 -> 起点/起点 -> 终点
52
- // 2. ->
53
- // 水平 -> 垂直:
54
- // 1. 起点/终点 -> 纵轴
55
- // 2. 加减 -> 纵轴
56
- // -> 上:
57
- // 1. 终点 -> 起点/终点 -> 起点
58
- // 2. ->
49
+ // Based on right
50
+ // Right -> Left:
51
+ // 1. End point -> starting point/start point -> end point
52
+ // 2. Add -> Subtract
53
+ // Horizontal -> Vertical:
54
+ // 1. Starting point/end point -> vertical axis
55
+ // 2. Addition and subtraction -> vertical axis
56
+ // Bottom -> Top:
57
+ // 1. End point -> starting point/end point -> starting point
58
+ // 2. Add -> Subtract
59
59
  export const moveXOfPoint = (point, distance, direction = LayoutDirection.right) => {
60
60
  if (direction === LayoutDirection.left) {
61
61
  return [point[0] - distance, point[1]];
@@ -116,4 +116,4 @@ export const transformPlacement = (placement, direction) => {
116
116
  }
117
117
  }
118
118
  };
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQtcGxhY2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvcG9pbnQtcGxhY2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUF1QixFQUFFLFNBQXlCLEVBQVMsRUFBRTtJQUM3RixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFO1FBQzdDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsS0FBSyxFQUFFO1FBQzVDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7S0FDL0I7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7S0FDcEM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUNoQztJQUNELE9B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bUIsQ0FBQyxJQUFJLEVBQUU7WUFDM0MsUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztTQUNwQztRQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLEtBQUssRUFBRTtZQUM1QyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1NBQ3ZDO1FBQ0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMxQixTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0tBQzNCO0lBQ0QsUUFBUTtJQUNSLElBQUksU0FBUyxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUFFO1lBQzNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7U0FDeEM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztTQUMzQztLQUNKO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IExheW91dERpcmVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGF5b3V0JztcbmltcG9ydCB7IEhvcml6b250YWxQbGFjZW1lbnQsIFBvaW50UGxhY2VtZW50LCBWZXJ0aWNhbFBsYWNlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0UG9pbnRCeVBsYWNlbWVudCA9IChjbGllbnQ6IFJlY3RhbmdsZUNsaWVudCwgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCk6IFBvaW50ID0+IHtcbiAgICBsZXQgeCA9IGNsaWVudC54O1xuICAgIGxldCB5ID0gY2xpZW50Lnk7XG4gICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIpIHtcbiAgICAgICAgeCA9IGNsaWVudC54ICsgY2xpZW50LndpZHRoIC8gMjtcbiAgICB9XG4gICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCkge1xuICAgICAgICB4ID0gY2xpZW50LnggKyBjbGllbnQud2lkdGg7XG4gICAgfVxuICAgIGlmIChwbGFjZW1lbnRbMV0gPT09IFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZSkge1xuICAgICAgICB5ID0gY2xpZW50LnkgKyBjbGllbnQuaGVpZ2h0IC8gMjtcbiAgICB9XG4gICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgIHkgPSBjbGllbnQueSArIGNsaWVudC5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiBbeCwgeV07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlbWVudFJlZiB7XG4gICAgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudDtcbiAgICBjbGllbnQ6IFJlY3RhbmdsZUNsaWVudDtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFhEaXN0YW5jZUJldHdlZW5Qb2ludCA9IChwb2ludDE6IFBvaW50LCBwb2ludDI6IFBvaW50LCBpc0hvcml6b250YWxMYXlvdXQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoaXNIb3Jpem9udGFsTGF5b3V0KSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhwb2ludDFbMF0gLSBwb2ludDJbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhwb2ludDFbMV0gLSBwb2ludDJbMV0pO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZRGlzdGFuY2VCZXR3ZWVuUG9pbnQgPSAocG9pbnQxOiBQb2ludCwgcG9pbnQyOiBQb2ludCwgaXNIb3Jpem9udGFsTGF5b3V0OiBib29sZWFuKSA9PiB7XG4gICAgZ2V0WERpc3RhbmNlQmV0d2VlblBvaW50KHBvaW50MSwgcG9pbnQyLCAhaXNIb3Jpem9udGFsTGF5b3V0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYXlvdXREaXJlY3Rpb24gPSAobm9kZTogTWluZE5vZGUsIGlzSG9yaXpvbnRhbDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgaWYgKG5vZGUubGVmdCkge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dERpcmVjdGlvbi5sZWZ0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlLnVwKSB7XG4gICAgICAgICAgICByZXR1cm4gTGF5b3V0RGlyZWN0aW9uLnRvcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBMYXlvdXREaXJlY3Rpb24uYm90dG9tO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy8g5Lul5Y+z5Li65Z+65YeGXG4vLyDlj7MgLT4g5bemOlxuLy8gMS4g57uI54K5IC0+IOi1t+eCuS/otbfngrkgLT4g57uI54K5XG4vLyAyLiDliqAgLT4g5YePXG5cbi8vIOawtOW5syAtPiDlnoLnm7Q6XG4vLyAxLiDotbfngrkv57uI54K5IC0+IOe6tei9tFxuLy8gMi4g5Yqg5YePIC0+IOe6tei9tFxuXG4vLyDkuIsgLT4g5LiKOlxuLy8gMS4g57uI54K5IC0+IOi1t+eCuS/nu4jngrkgLT4g6LW354K5XG4vLyAyLiDliqAgLT4g5YePXG5leHBvcnQgY29uc3QgbW92ZVhPZlBvaW50ID0gKHBvaW50OiBQb2ludCwgZGlzdGFuY2U6IG51bWJlciwgZGlyZWN0aW9uOiBMYXlvdXREaXJlY3Rpb24gPSBMYXlvdXREaXJlY3Rpb24ucmlnaHQpOiBQb2ludCA9PiB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gTGF5b3V0RGlyZWN0aW9uLmxlZnQpIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSAtIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSwgcG9pbnRbMV0gKyBkaXN0YW5jZV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSwgcG9pbnRbMV0gLSBkaXN0YW5jZV07XG4gICAgfVxuICAgIHJldHVybiBbcG9pbnRbMF0gKyBkaXN0YW5jZSwgcG9pbnRbMV1dO1xufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVZT2ZQb2ludCA9IChwb2ludDogUG9pbnQsIGRpc3RhbmNlOiBudW1iZXIsIGRpcmVjdGlvbjogTGF5b3V0RGlyZWN0aW9uID0gTGF5b3V0RGlyZWN0aW9uLnJpZ2h0KTogUG9pbnQgPT4ge1xuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIHJldHVybiBbcG9pbnRbMF0sIHBvaW50WzFdICsgZGlzdGFuY2VdO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVBsYWNlbWVudCA9IChwbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50LCBkaXJlY3Rpb246IExheW91dERpcmVjdGlvbikgPT4ge1xuICAgIC8vIHRvIGxlZnRcbiAgICBpZiAoZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24ubGVmdCkge1xuICAgICAgICBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0KSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMF0gPSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQ7XG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQpIHtcbiAgICAgICAgICAgIHBsYWNlbWVudFswXSA9IEhvcml6b250YWxQbGFjZW1lbnQucmlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdG8gYm90dG9tXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gTGF5b3V0RGlyZWN0aW9uLmJvdHRvbSB8fCBkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgbGV0IGhvcml6b250YWwgPSBIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlcjtcbiAgICAgICAgbGV0IHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQubWlkZGxlO1xuICAgICAgICBpZiAocGxhY2VtZW50WzFdID09PSBWZXJ0aWNhbFBsYWNlbWVudC50b3ApIHtcbiAgICAgICAgICAgIGhvcml6b250YWwgPSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgICAgICBob3Jpem9udGFsID0gSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQpIHtcbiAgICAgICAgICAgIHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQudG9wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnRbMF0gPT09IEhvcml6b250YWxQbGFjZW1lbnQucmlnaHQpIHtcbiAgICAgICAgICAgIHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIHBsYWNlbWVudFswXSA9IGhvcml6b250YWw7XG4gICAgICAgIHBsYWNlbWVudFsxXSA9IHZlcnRpY2FsO1xuICAgIH1cbiAgICAvLyB0byB1cFxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMV0gPSBWZXJ0aWNhbFBsYWNlbWVudC50b3A7XG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50WzFdID09PSBWZXJ0aWNhbFBsYWNlbWVudC50b3ApIHtcbiAgICAgICAgICAgIHBsYWNlbWVudFsxXSA9IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQtcGxhY2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvcG9pbnQtcGxhY2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUF1QixFQUFFLFNBQXlCLEVBQVMsRUFBRTtJQUM3RixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFO1FBQzdDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsS0FBSyxFQUFFO1FBQzVDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7S0FDL0I7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7S0FDcEM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUNoQztJQUNELE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBT0YsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFhLEVBQUUsTUFBYSxFQUFFLGtCQUEyQixFQUFFLEVBQUU7SUFDbEcsSUFBSSxrQkFBa0IsRUFBRTtRQUNwQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzFDO1NBQU07UUFDSCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFhLEVBQUUsTUFBYSxFQUFFLGtCQUEyQixFQUFFLEVBQUU7SUFDbEcsd0JBQXdCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFjLEVBQUUsWUFBcUIsRUFBRSxFQUFFO0lBQ3hFLElBQUksWUFBWSxFQUFFO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1gsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO1NBQy9CO2FBQU07WUFDSCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDaEM7S0FDSjtTQUFNO1FBQ0gsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1QsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQzlCO2FBQU07WUFDSCxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUM7U0FDakM7S0FDSjtBQUNMLENBQUMsQ0FBQztBQUVGLGlCQUFpQjtBQUNqQixpQkFBaUI7QUFDakIsMERBQTBEO0FBQzFELHFCQUFxQjtBQUVyQiwwQkFBMEI7QUFDMUIsK0NBQStDO0FBQy9DLCtDQUErQztBQUUvQyxpQkFBaUI7QUFDakIsNkRBQTZEO0FBQzdELHFCQUFxQjtBQUNyQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFZLEVBQUUsUUFBZ0IsRUFBRSxZQUE2QixlQUFlLENBQUMsS0FBSyxFQUFTLEVBQUU7SUFDdEgsSUFBSSxTQUFTLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtRQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxQztJQUNELElBQUksU0FBUyxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUU7UUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7S0FDMUM7SUFDRCxJQUFJLFNBQVMsS0FBSyxlQUFlLENBQUMsR0FBRyxFQUFFO1FBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0tBQzFDO0lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBWSxFQUFFLFFBQWdCLEVBQUUsWUFBNkIsZUFBZSxDQUFDLEtBQUssRUFBUyxFQUFFO0lBQ3RILElBQUksU0FBUyxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUU7UUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDMUM7SUFDRCxJQUFJLFNBQVMsS0FBSyxlQUFlLENBQUMsR0FBRyxFQUFFO1FBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzFDO0lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxTQUF5QixFQUFFLFNBQTBCLEVBQUUsRUFBRTtJQUN4RixVQUFVO0lBQ1YsSUFBSSxTQUFTLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtRQUNwQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7WUFDNUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQztTQUMzQzthQUFNLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLElBQUksRUFBRTtZQUNsRCxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1NBQzVDO0tBQ0o7SUFDRCxZQUFZO0lBQ1osSUFBSSxTQUFTLEtBQUssZUFBZSxDQUFDLE1BQU0sSUFBSSxTQUFTLEtBQUssZUFBZSxDQUFDLEdBQUcsRUFBRTtRQUMzRSxJQUFJLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFDNUMsSUFBSSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBQ3hDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUN4QyxVQUFVLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUFFO1lBQzNDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7U0FDMUM7UUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUU7WUFDM0MsUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztTQUNwQztRQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLEtBQUssRUFBRTtZQUM1QyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1NBQ3ZDO1FBQ0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMxQixTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0tBQzNCO0lBQ0QsUUFBUTtJQUNSLElBQUksU0FBUyxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUFFO1lBQzNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7U0FDeEM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztTQUMzQztLQUNKO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IExheW91dERpcmVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGF5b3V0JztcbmltcG9ydCB7IEhvcml6b250YWxQbGFjZW1lbnQsIFBvaW50UGxhY2VtZW50LCBWZXJ0aWNhbFBsYWNlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0UG9pbnRCeVBsYWNlbWVudCA9IChjbGllbnQ6IFJlY3RhbmdsZUNsaWVudCwgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCk6IFBvaW50ID0+IHtcbiAgICBsZXQgeCA9IGNsaWVudC54O1xuICAgIGxldCB5ID0gY2xpZW50Lnk7XG4gICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIpIHtcbiAgICAgICAgeCA9IGNsaWVudC54ICsgY2xpZW50LndpZHRoIC8gMjtcbiAgICB9XG4gICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCkge1xuICAgICAgICB4ID0gY2xpZW50LnggKyBjbGllbnQud2lkdGg7XG4gICAgfVxuICAgIGlmIChwbGFjZW1lbnRbMV0gPT09IFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZSkge1xuICAgICAgICB5ID0gY2xpZW50LnkgKyBjbGllbnQuaGVpZ2h0IC8gMjtcbiAgICB9XG4gICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgIHkgPSBjbGllbnQueSArIGNsaWVudC5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiBbeCwgeV07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlbWVudFJlZiB7XG4gICAgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudDtcbiAgICBjbGllbnQ6IFJlY3RhbmdsZUNsaWVudDtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFhEaXN0YW5jZUJldHdlZW5Qb2ludCA9IChwb2ludDE6IFBvaW50LCBwb2ludDI6IFBvaW50LCBpc0hvcml6b250YWxMYXlvdXQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoaXNIb3Jpem9udGFsTGF5b3V0KSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhwb2ludDFbMF0gLSBwb2ludDJbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhwb2ludDFbMV0gLSBwb2ludDJbMV0pO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZRGlzdGFuY2VCZXR3ZWVuUG9pbnQgPSAocG9pbnQxOiBQb2ludCwgcG9pbnQyOiBQb2ludCwgaXNIb3Jpem9udGFsTGF5b3V0OiBib29sZWFuKSA9PiB7XG4gICAgZ2V0WERpc3RhbmNlQmV0d2VlblBvaW50KHBvaW50MSwgcG9pbnQyLCAhaXNIb3Jpem9udGFsTGF5b3V0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYXlvdXREaXJlY3Rpb24gPSAobm9kZTogTWluZE5vZGUsIGlzSG9yaXpvbnRhbDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgaWYgKG5vZGUubGVmdCkge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dERpcmVjdGlvbi5sZWZ0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlLnVwKSB7XG4gICAgICAgICAgICByZXR1cm4gTGF5b3V0RGlyZWN0aW9uLnRvcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBMYXlvdXREaXJlY3Rpb24uYm90dG9tO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy8gQmFzZWQgb24gcmlnaHRcbi8vIFJpZ2h0IC0+IExlZnQ6XG4vLyAxLiBFbmQgcG9pbnQgLT4gc3RhcnRpbmcgcG9pbnQvc3RhcnQgcG9pbnQgLT4gZW5kIHBvaW50XG4vLyAyLiBBZGQgLT4gU3VidHJhY3RcblxuLy8gSG9yaXpvbnRhbCAtPiBWZXJ0aWNhbDpcbi8vIDEuIFN0YXJ0aW5nIHBvaW50L2VuZCBwb2ludCAtPiB2ZXJ0aWNhbCBheGlzXG4vLyAyLiBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gLT4gdmVydGljYWwgYXhpc1xuXG4vLyBCb3R0b20gLT4gVG9wOlxuLy8gMS4gRW5kIHBvaW50IC0+IHN0YXJ0aW5nIHBvaW50L2VuZCBwb2ludCAtPiBzdGFydGluZyBwb2ludFxuLy8gMi4gQWRkIC0+IFN1YnRyYWN0XG5leHBvcnQgY29uc3QgbW92ZVhPZlBvaW50ID0gKHBvaW50OiBQb2ludCwgZGlzdGFuY2U6IG51bWJlciwgZGlyZWN0aW9uOiBMYXlvdXREaXJlY3Rpb24gPSBMYXlvdXREaXJlY3Rpb24ucmlnaHQpOiBQb2ludCA9PiB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gTGF5b3V0RGlyZWN0aW9uLmxlZnQpIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSAtIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSwgcG9pbnRbMV0gKyBkaXN0YW5jZV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSwgcG9pbnRbMV0gLSBkaXN0YW5jZV07XG4gICAgfVxuICAgIHJldHVybiBbcG9pbnRbMF0gKyBkaXN0YW5jZSwgcG9pbnRbMV1dO1xufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVZT2ZQb2ludCA9IChwb2ludDogUG9pbnQsIGRpc3RhbmNlOiBudW1iZXIsIGRpcmVjdGlvbjogTGF5b3V0RGlyZWN0aW9uID0gTGF5b3V0RGlyZWN0aW9uLnJpZ2h0KTogUG9pbnQgPT4ge1xuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIHJldHVybiBbcG9pbnRbMF0sIHBvaW50WzFdICsgZGlzdGFuY2VdO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVBsYWNlbWVudCA9IChwbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50LCBkaXJlY3Rpb246IExheW91dERpcmVjdGlvbikgPT4ge1xuICAgIC8vIHRvIGxlZnRcbiAgICBpZiAoZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24ubGVmdCkge1xuICAgICAgICBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0KSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMF0gPSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQ7XG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQpIHtcbiAgICAgICAgICAgIHBsYWNlbWVudFswXSA9IEhvcml6b250YWxQbGFjZW1lbnQucmlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdG8gYm90dG9tXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gTGF5b3V0RGlyZWN0aW9uLmJvdHRvbSB8fCBkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgbGV0IGhvcml6b250YWwgPSBIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlcjtcbiAgICAgICAgbGV0IHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQubWlkZGxlO1xuICAgICAgICBpZiAocGxhY2VtZW50WzFdID09PSBWZXJ0aWNhbFBsYWNlbWVudC50b3ApIHtcbiAgICAgICAgICAgIGhvcml6b250YWwgPSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgICAgICBob3Jpem9udGFsID0gSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQpIHtcbiAgICAgICAgICAgIHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQudG9wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnRbMF0gPT09IEhvcml6b250YWxQbGFjZW1lbnQucmlnaHQpIHtcbiAgICAgICAgICAgIHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIHBsYWNlbWVudFswXSA9IGhvcml6b250YWw7XG4gICAgICAgIHBsYWNlbWVudFsxXSA9IHZlcnRpY2FsO1xuICAgIH1cbiAgICAvLyB0byB1cFxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMV0gPSBWZXJ0aWNhbFBsYWNlbWVudC50b3A7XG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50WzFdID09PSBWZXJ0aWNhbFBsYWNlbWVudC50b3ApIHtcbiAgICAgICAgICAgIHBsYWNlbWVudFsxXSA9IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iXX0=
@@ -337,7 +337,7 @@ function getRelativeStartEndByAbstractRef(abstractRef, elements) {
337
337
  return { start, end };
338
338
  }
339
339
  const insertElementHandleAbstract = (board, path, step = 1,
340
- //由此区分拖拽和新增到概要概括最后一个节点
340
+ // This distinguishes between dragging and adding to the last node summarized in the abstract node
341
341
  isExtendPreviousNode = true, effectedAbstracts = new Map()) => {
342
342
  const parent = PlaitNode.parent(board, path);
343
343
  const hasPreviousNode = path[path.length - 1] !== 0;
@@ -1256,7 +1256,7 @@ const directionDetector = (targetNode, centerPoint) => {
1256
1256
  const left = targetNode.x;
1257
1257
  const right = targetNode.x + targetNode.width;
1258
1258
  const direction = [];
1259
- // x
1259
+ // x-axis
1260
1260
  if (centerPoint[1] > y && centerPoint[1] < y + height) {
1261
1261
  if (centerPoint[0] > left && centerPoint[0] < xCenter) {
1262
1262
  direction.push('left');
@@ -1264,7 +1264,7 @@ const directionDetector = (targetNode, centerPoint) => {
1264
1264
  if (centerPoint[0] > xCenter && centerPoint[0] < right) {
1265
1265
  direction.push('right');
1266
1266
  }
1267
- // 重合区域,返回两个方向
1267
+ // Overlapping area, return in both directions
1268
1268
  if ((centerPoint[0] > x && centerPoint[0] < xCenter) || (centerPoint[0] > xCenter && centerPoint[0] < x + width)) {
1269
1269
  if (centerPoint[1] < yCenter) {
1270
1270
  direction.push('top');
@@ -1275,7 +1275,7 @@ const directionDetector = (targetNode, centerPoint) => {
1275
1275
  }
1276
1276
  return direction.length ? direction : null;
1277
1277
  }
1278
- // y
1278
+ // y-axis
1279
1279
  if (centerPoint[0] > x && centerPoint[0] < x + width) {
1280
1280
  if (centerPoint[1] > top && centerPoint[1] < yCenter) {
1281
1281
  direction.push('top');
@@ -1304,17 +1304,14 @@ const getPathByDropTarget = (board, dropTarget) => {
1304
1304
  ? getRootLayout(dropTarget?.target)
1305
1305
  : MindQueries.getCorrectLayoutByElement(board, MindElement.getParent(dropTarget?.target));
1306
1306
  const children = getNonAbstractChildren(dropTarget.target);
1307
- // 上下布局:左右是兄弟节点,上下是子节点
1308
1307
  if (isVerticalLogicLayout(layout)) {
1309
1308
  if (dropTarget.detectResult === 'top' || dropTarget.detectResult === 'bottom') {
1310
1309
  targetPath.push(children.length);
1311
1310
  }
1312
- // 如果是左,位置不变,右则插入到下一个兄弟节点
1313
1311
  if (dropTarget.detectResult === 'right') {
1314
1312
  targetPath = Path.next(targetPath);
1315
1313
  }
1316
1314
  }
1317
- // 水平布局/标准布局:上下是兄弟节点,左右是子节点
1318
1315
  if (isHorizontalLogicLayout(layout)) {
1319
1316
  if (dropTarget.detectResult === 'right') {
1320
1317
  if (PlaitMind.isMind(dropTarget?.target) && isStandardLayout(layout)) {
@@ -1327,12 +1324,10 @@ const getPathByDropTarget = (board, dropTarget) => {
1327
1324
  if (dropTarget.detectResult === 'left') {
1328
1325
  targetPath.push(children.length);
1329
1326
  }
1330
- // 如果是上,位置不变,下插入到下一个兄弟节点
1331
1327
  if (dropTarget.detectResult === 'bottom') {
1332
1328
  targetPath = Path.next(targetPath);
1333
1329
  }
1334
1330
  }
1335
- // 缩进布局:上下是兄弟节点,左右是子节点,但上(左上/右上),探测到上是子节点,下则位置不变,反之同理。
1336
1331
  if (isIndentedLayout(layout)) {
1337
1332
  if (isTopLayout(layout) && dropTarget.detectResult === 'top') {
1338
1333
  targetPath = Path.next(targetPath);
@@ -1432,16 +1427,16 @@ const getLayoutDirection = (node, isHorizontal) => {
1432
1427
  }
1433
1428
  }
1434
1429
  };
1435
- // 以右为基准
1436
- // -> 左:
1437
- // 1. 终点 -> 起点/起点 -> 终点
1438
- // 2. ->
1439
- // 水平 -> 垂直:
1440
- // 1. 起点/终点 -> 纵轴
1441
- // 2. 加减 -> 纵轴
1442
- // -> 上:
1443
- // 1. 终点 -> 起点/终点 -> 起点
1444
- // 2. ->
1430
+ // Based on right
1431
+ // Right -> Left:
1432
+ // 1. End point -> starting point/start point -> end point
1433
+ // 2. Add -> Subtract
1434
+ // Horizontal -> Vertical:
1435
+ // 1. Starting point/end point -> vertical axis
1436
+ // 2. Addition and subtraction -> vertical axis
1437
+ // Bottom -> Top:
1438
+ // 1. End point -> starting point/end point -> starting point
1439
+ // 2. Add -> Subtract
1445
1440
  const moveXOfPoint = (point, distance, direction = LayoutDirection.right) => {
1446
1441
  if (direction === LayoutDirection.left) {
1447
1442
  return [point[0] - distance, point[1]];
@@ -1515,7 +1510,6 @@ function drawIndentedLink(board, node, child, defaultStroke = null, needDrawUnde
1515
1510
  beginY = isChildUp(node, child) ? beginRectangle.y : beginRectangle.y + beginRectangle.height;
1516
1511
  endX = node.left ? endNode.x + endNode.hGap + endRectangle.width : endNode.x + endNode.hGap;
1517
1512
  endY = isUnderlineShape ? endNode.y + endNode.height - endNode.vGap : endNode.y + endNode.height / 2;
1518
- //根据位置,设置正负参数
1519
1513
  let plusMinus = isChildUp(node, child) ? (node.left ? [-1, -1] : [1, -1]) : node.left ? [-1, 1] : [1, 1];
1520
1514
  let curve = [
1521
1515
  [beginX, beginY],
@@ -1569,12 +1563,11 @@ function drawLogicLink(board, parent, node, isHorizontal, defaultStroke = null,
1569
1563
  }
1570
1564
  let beginPoint = getPointByPlacement(parentClient, beginPlacement);
1571
1565
  let endPoint = getPointByPlacement(nodeClient, endPlacement);
1572
- // ② 确定凸出直线,从起始点开始画一条直线,从直线的结束位置绘制曲线,保证收起图标可以完美覆盖起始连线,根节点不需要这条直线
1573
- // 绘制贝塞尔曲线要求,需要增加三个点,正常两个点就可以确定这条直线
1566
+ // ② Determine the convex straight line
1574
1567
  const straightLineDistance = 8;
1575
1568
  const beginPoint2 = hasStraightLine ? moveXOfPoint(beginPoint, straightLineDistance, linkDirection) : beginPoint;
1576
1569
  let straightLine = hasStraightLine ? [beginPoint, beginPoint2, beginPoint2] : [];
1577
- // ③ 确定曲线
1570
+ // ③ Determine the curve
1578
1571
  const beginBufferDistance = (parent.hGap + node.hGap) / 3;
1579
1572
  const endBufferDistance = -(parent.hGap + node.hGap) / 2.4;
1580
1573
  let curve = [
@@ -1583,7 +1576,7 @@ function drawLogicLink(board, parent, node, isHorizontal, defaultStroke = null,
1583
1576
  moveXOfPoint(endPoint, endBufferDistance, linkDirection),
1584
1577
  endPoint
1585
1578
  ];
1586
- // ④ 下划线绘制,underline shape and horizontal
1579
+ // ④ underline shape and horizontal
1587
1580
  const underlineEnd = moveXOfPoint(endPoint, nodeClient.width, linkDirection);
1588
1581
  const underline = hasUnderlineShape && isHorizontal ? [underlineEnd, underlineEnd, underlineEnd] : [];
1589
1582
  const points = pointsOnBezierCurves([...straightLine, ...curve, ...underline]);
@@ -2047,7 +2040,7 @@ const getCorrectLayoutByElement = (board, element) => {
2047
2040
  const getBranchLayouts = (board, element) => {
2048
2041
  const layouts = [];
2049
2042
  if (element.layout) {
2050
- // TODO: getCorrectLayoutByElement 含有递归操作,getBranchLayouts 本身也有递归操作,有待优化
2043
+ // TODO: getCorrectLayoutByElement Contains recursive operations. getBranchLayouts itself also has recursive operations and needs to be optimized.
2051
2044
  layouts.unshift(getCorrectLayoutByElement(board, element));
2052
2045
  }
2053
2046
  let parent = MindElement.findParent(element);
@@ -3302,7 +3295,7 @@ const withNodeDnd = (board) => {
3302
3295
  let insertPath = targetPathRef.current;
3303
3296
  const parentPath = Path.parent(targetPathRef.current || targetPath);
3304
3297
  if (!insertPath) {
3305
- //当插入位置和选中节点位置相同时,使用记录的 previousPath
3298
+ // When the insertion position and the selected node position are the same, the recorded previousPath is used
3306
3299
  const previousPath = targetPreviousPathRef && targetPreviousPathRef.unref();
3307
3300
  if (previousPath) {
3308
3301
  insertPath = Path.next(previousPath);