@plait/common 0.51.2 → 0.51.3
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/esm2022/core/image-base.component.mjs +4 -4
- package/esm2022/generators/generator.mjs +3 -3
- package/esm2022/utils/default-orthogonal-routing.mjs +87 -0
- package/esm2022/utils/direction.mjs +15 -3
- package/esm2022/utils/index.mjs +3 -1
- package/esm2022/utils/line-path.mjs +2 -97
- package/esm2022/utils/math.mjs +4 -4
- package/esm2022/utils/rotate.mjs +7 -0
- package/esm2022/utils/vector.mjs +4 -4
- package/fesm2022/plait-common.mjs +172 -163
- package/fesm2022/plait-common.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/default-orthogonal-routing.d.ts +2 -0
- package/utils/direction.d.ts +2 -1
- package/utils/index.d.ts +2 -0
- package/utils/line-path.d.ts +1 -13
- package/utils/rotate.d.ts +2 -0
- package/utils/vector.d.ts +1 -1
|
@@ -67,10 +67,10 @@ export class ImageBaseComponent {
|
|
|
67
67
|
this.activeGenerator.destroy();
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
71
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImageBaseComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
71
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.8", type: ImageBaseComponent, inputs: { element: "element", imageItem: "imageItem", board: "board", isFocus: "isFocus", getRectangle: "getRectangle", hasResizeHandle: "hasResizeHandle" }, host: { classAttribute: "plait-image-container" }, ngImport: i0 }); }
|
|
72
72
|
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ImageBaseComponent, decorators: [{
|
|
74
74
|
type: Directive,
|
|
75
75
|
args: [{
|
|
76
76
|
host: {
|
|
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
90
90
|
}], hasResizeHandle: [{
|
|
91
91
|
type: Input
|
|
92
92
|
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvcmUvaW1hZ2UtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQWMsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFpQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNySSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFoRCxNQUFNLE9BQWdCLGtCQUFrQjtJQVlwQyxJQUNJLFNBQVMsQ0FBQyxLQUFzQjtRQUNoQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBS0QsSUFDSSxPQUFPLENBQUMsS0FBYztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBUUQsWUFBc0IsVUFBbUMsRUFBUyxHQUFzQjtRQUFsRSxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekN4RixnQkFBVyxHQUFHLEtBQUssQ0FBQztJQXlDdUUsQ0FBQztJQUU1RixRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25ELGNBQWMsRUFBRSxHQUFHLEVBQUU7Z0JBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ3BFLE9BQU8sbUJBQW1CLENBQUM7aUJBQzlCO3FCQUFNO29CQUNILE9BQU8sbUJBQW1CLENBQUM7aUJBQzlCO1lBQ0wsQ0FBQztZQUNELGdCQUFnQixFQUFFLEdBQUcsRUFBRTtnQkFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7b0JBQy9GLE9BQU8sQ0FBQyxDQUFDO2lCQUNaO3FCQUFNO29CQUNILE9BQU8sR0FBRyxDQUFDO2lCQUNkO1lBQ0wsQ0FBQztZQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0IsQ0FBQztZQUNELGVBQWUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2xCLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6RCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQ3pHLENBQUM7U0FDSixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLEVBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ2pHO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNsQztJQUNMLENBQUM7OEdBeEZpQixrQkFBa0I7a0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLHVCQUF1QjtxQkFDakM7aUJBQ0o7aUlBV0csT0FBTztzQkFETixLQUFLO2dCQUlGLFNBQVM7c0JBRFosS0FBSztnQkFZTixLQUFLO3NCQURKLEtBQUs7Z0JBSUYsT0FBTztzQkFEVixLQUFLO2dCQWdCRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFDVElWRV9TVFJPS0VfV0lEVEgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUmVjdGFuZ2xlQ2xpZW50LCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBpc1NlbGVjdGlvbk1vdmluZyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4uL2dlbmVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uSW1hZ2VJdGVtIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncGxhaXQtaW1hZ2UtY29udGFpbmVyJ1xuICAgIH1cbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW1hZ2VCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIF9pbWFnZUl0ZW0hOiBDb21tb25JbWFnZUl0ZW07XG5cbiAgICBfaXNGb2N1cyE6IGJvb2xlYW47XG5cbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgYWN0aXZlR2VuZXJhdG9yITogQWN0aXZlR2VuZXJhdG9yO1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50ITogUGxhaXRFbGVtZW50O1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgaW1hZ2VJdGVtKHZhbHVlOiBDb21tb25JbWFnZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5hZnRlckltYWdlSXRlbUNoYW5nZSh0aGlzLl9pbWFnZUl0ZW0sIHZhbHVlKTtcbiAgICAgICAgdGhpcy5faW1hZ2VJdGVtID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZHJhd0ZvY3VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlSXRlbTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGJvYXJkITogUGxhaXRCb2FyZDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faXNGb2N1cyA9IHZhbHVlO1xuICAgICAgICB0aGlzLmRyYXdGb2N1cygpO1xuICAgIH1cblxuICAgIGdldCBpc0ZvY3VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGb2N1cztcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGFic3RyYWN0IGFmdGVySW1hZ2VJdGVtQ2hhbmdlKHByZXZpb3VzOiBDb21tb25JbWFnZUl0ZW0sIGN1cnJlbnQ6IENvbW1vbkltYWdlSXRlbSk6IHZvaWQ7XG5cbiAgICBASW5wdXQoKSBnZXRSZWN0YW5nbGUhOiAoKSA9PiBSZWN0YW5nbGVDbGllbnQ7XG5cbiAgICBASW5wdXQoKSBoYXNSZXNpemVIYW5kbGUhOiAoKSA9PiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvciA9IG5ldyBBY3RpdmVHZW5lcmF0b3IodGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgZ2V0U3Ryb2tlV2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIShzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcodGhpcy5ib2FyZCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTdHJva2VPcGFjaXR5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcodGhpcy5ib2FyZCkpIHx8ICFzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC41O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNSZXNpemVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkgfHwgIXNlbGVjdGVkRWxlbWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgZHJhd0ZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlRyA9IFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh7fSBhcyBQbGFpdEVsZW1lbnQsIGFjdGl2ZUcsIHsgc2VsZWN0ZWQ6IHRoaXMuX2lzRm9jdXMgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlR2VuZXJhdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RectangleClient, setAngleForG } from '@plait/core';
|
|
2
2
|
export class Generator {
|
|
3
3
|
constructor(board, options) {
|
|
4
4
|
this.board = board;
|
|
@@ -22,7 +22,7 @@ export class Generator {
|
|
|
22
22
|
this.g = g;
|
|
23
23
|
const rect = this.board.getRectangle(element);
|
|
24
24
|
if (rect && element.angle) {
|
|
25
|
-
|
|
25
|
+
setAngleForG(g, RectangleClient.getCenterPoint(rect), element.angle);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
else {
|
|
@@ -49,4 +49,4 @@ export function hasAfterDraw(value) {
|
|
|
49
49
|
}
|
|
50
50
|
return false;
|
|
51
51
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9nZW5lcmF0b3JzL2dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFRdEYsTUFBTSxPQUFnQixTQUFTO0lBUzNCLFlBQXNCLEtBQWlCLEVBQUUsT0FBVztRQUE5QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBVSxFQUFFLE9BQW9CLEVBQUUsSUFBUTtRQUNyRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDN0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLEVBQUU7Z0JBQ0gsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDekI7cUJBQU07b0JBQ0gsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTt3QkFDdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDdEI7eUJBQU07d0JBQ0gsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDMUI7aUJBQ0o7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7b0JBQ3ZCLFlBQVksQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3hFO2FBQ0o7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xCO1lBQ0QsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDM0I7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQVlELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDUixJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztDQUNKO0FBTUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFVO0lBQ25DLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLElBQUksQ0FBQztLQUNmO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUmVjdGFuZ2xlQ2xpZW50LCBzZXRBbmdsZUZvckcgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdG9yRXh0cmFEYXRhIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdG9yT3B0aW9ucyB7XG4gICAgcHJlcGVuZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmF0b3I8XG4gICAgVCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0RWxlbWVudCxcbiAgICBLIGV4dGVuZHMgR2VuZXJhdG9yRXh0cmFEYXRhID0gR2VuZXJhdG9yRXh0cmFEYXRhLFxuICAgIFYgZXh0ZW5kcyBHZW5lcmF0b3JPcHRpb25zID0gR2VuZXJhdG9yT3B0aW9uc1xuPiB7XG4gICAgZz86IFNWR0dFbGVtZW50O1xuXG4gICAgcHJvdGVjdGVkIG9wdGlvbnM/OiBWO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJvYXJkOiBQbGFpdEJvYXJkLCBvcHRpb25zPzogVikge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIHByb2Nlc3NEcmF3aW5nKGVsZW1lbnQ6IFQsIHBhcmVudEc6IFNWR0dFbGVtZW50LCBkYXRhPzogSykge1xuICAgICAgICBpZiAodGhpcy5jYW5EcmF3ICYmIHRoaXMuY2FuRHJhdyhlbGVtZW50LCBkYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgZyA9IHRoaXMuZHJhdyhlbGVtZW50LCBkYXRhKTtcbiAgICAgICAgICAgIGlmIChnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZyAmJiBwYXJlbnRHLmNvbnRhaW5zKHRoaXMuZykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nLnJlcGxhY2VXaXRoKGcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnM/LnByZXBlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEcucHJlcGVuZChnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEcuYXBwZW5kQ2hpbGQoZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5nID0gZztcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5ib2FyZC5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlY3QgJiYgZWxlbWVudC5hbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRBbmdsZUZvckcoZywgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3QpLCBlbGVtZW50LmFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc0FmdGVyRHJhdyh0aGlzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJEcmF3KGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhYnN0cmFjdCBmdW5jdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjYW5EcmF3KGVsZW1lbnQ6IFQsIGRhdGE/OiBLKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIGFic3RyYWN0IGZ1bmN0aW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGRyYXcoZWxlbWVudDogVCwgZGF0YT86IEspOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmcpIHtcbiAgICAgICAgICAgIHRoaXMuZy5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZnRlckRyYXc8VCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0RWxlbWVudD4ge1xuICAgIGFmdGVyRHJhdyhlbGVtZW50OiBUKTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FmdGVyRHJhdyh2YWx1ZTogYW55KTogdmFsdWUgaXMgQWZ0ZXJEcmF3IHtcbiAgICBpZiAodmFsdWUuYWZ0ZXJEcmF3KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4iXX0=
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Credits to xyflow
|
|
2
|
+
// https://github.com/xyflow/xyflow/blob/main/packages/system/src/utils/edges/smoothstep-edge.ts
|
|
3
|
+
import { Direction } from "@plait/core";
|
|
4
|
+
import { getDirectionFactor } from "./direction";
|
|
5
|
+
export const getPoints = (source, sourcePosition, target, targetPosition, offset) => {
|
|
6
|
+
const sourceDirectionFactors = getDirectionFactor(sourcePosition);
|
|
7
|
+
const targetDFs = getDirectionFactor(targetPosition);
|
|
8
|
+
const sourceGapped = [source[0] + sourceDirectionFactors.x * offset, source[1] + sourceDirectionFactors.y * offset];
|
|
9
|
+
const targetGapped = [target[0] + targetDFs.x * offset, target[1] + targetDFs.y * offset];
|
|
10
|
+
const dir = getDirection(sourceGapped, sourcePosition, targetGapped);
|
|
11
|
+
const dirAccessor = dir.x !== 0 ? 'x' : 'y';
|
|
12
|
+
const currDir = dir[dirAccessor];
|
|
13
|
+
let points = [];
|
|
14
|
+
let centerX, centerY;
|
|
15
|
+
const [defaultCenterX, defaultCenterY] = getEdgeCenter({
|
|
16
|
+
sourceX: source[0],
|
|
17
|
+
sourceY: source[1],
|
|
18
|
+
targetX: target[0],
|
|
19
|
+
targetY: target[1]
|
|
20
|
+
});
|
|
21
|
+
// opposite handle positions, default case
|
|
22
|
+
if (sourceDirectionFactors[dirAccessor] * targetDFs[dirAccessor] === -1) {
|
|
23
|
+
centerX = defaultCenterX;
|
|
24
|
+
centerY = defaultCenterY;
|
|
25
|
+
// --->
|
|
26
|
+
// |
|
|
27
|
+
// >---
|
|
28
|
+
const verticalSplit = [
|
|
29
|
+
[centerX, sourceGapped[1]],
|
|
30
|
+
[centerX, targetGapped[1]]
|
|
31
|
+
];
|
|
32
|
+
// |
|
|
33
|
+
// ---
|
|
34
|
+
// |
|
|
35
|
+
const horizontalSplit = [
|
|
36
|
+
[sourceGapped[0], centerY],
|
|
37
|
+
[targetGapped[0], centerY]
|
|
38
|
+
];
|
|
39
|
+
if (sourceDirectionFactors[dirAccessor] === currDir) {
|
|
40
|
+
points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// sourceTarget means we take x from source and y from target, targetSource is the opposite
|
|
48
|
+
const sourceTarget = [[sourceGapped[0], targetGapped[1]]];
|
|
49
|
+
const targetSource = [[targetGapped[0], sourceGapped[1]]];
|
|
50
|
+
// this handles edges with same handle positions
|
|
51
|
+
if (dirAccessor === 'x') {
|
|
52
|
+
points = sourceDirectionFactors.x === currDir ? targetSource : sourceTarget;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
points = sourceDirectionFactors.y === currDir ? sourceTarget : targetSource;
|
|
56
|
+
}
|
|
57
|
+
// these are conditions for handling mixed handle positions like right -> bottom for example
|
|
58
|
+
let flipSourceTarget;
|
|
59
|
+
if (sourcePosition !== targetPosition) {
|
|
60
|
+
const dirAccessorOpposite = dirAccessor === 'x' ? 1 : 0;
|
|
61
|
+
const isSameDir = sourceDirectionFactors[dirAccessor] === targetDFs[dirAccessor === 'x' ? 'y' : 'x'];
|
|
62
|
+
const sourceGtTarget = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];
|
|
63
|
+
const sourceLtTarget = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];
|
|
64
|
+
flipSourceTarget =
|
|
65
|
+
(sourceDirectionFactors[dirAccessor] === 1 && ((!isSameDir && sourceGtTarget) || (isSameDir && sourceLtTarget))) ||
|
|
66
|
+
(sourceDirectionFactors[dirAccessor] !== 1 && ((!isSameDir && sourceLtTarget) || (isSameDir && sourceGtTarget)));
|
|
67
|
+
if (flipSourceTarget) {
|
|
68
|
+
points = dirAccessor === 'x' ? sourceTarget : targetSource;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return [source, sourceGapped, ...points, targetGapped, target];
|
|
73
|
+
};
|
|
74
|
+
const getDirection = (source, sourcePosition = Direction.bottom, target) => {
|
|
75
|
+
if (sourcePosition === Direction.left || sourcePosition === Direction.right) {
|
|
76
|
+
return source[0] < target[0] ? { x: 1, y: 0 } : { x: -1, y: 0 };
|
|
77
|
+
}
|
|
78
|
+
return source[1] < target[1] ? { x: 0, y: 1 } : { x: 0, y: -1 };
|
|
79
|
+
};
|
|
80
|
+
function getEdgeCenter({ sourceX, sourceY, targetX, targetY }) {
|
|
81
|
+
const xOffset = Math.abs(targetX - sourceX) / 2;
|
|
82
|
+
const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;
|
|
83
|
+
const yOffset = Math.abs(targetY - sourceY) / 2;
|
|
84
|
+
const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;
|
|
85
|
+
return [centerX, centerY, xOffset, yOffset];
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1vcnRob2dvbmFsLXJvdXRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3V0aWxzL2RlZmF1bHQtb3J0aG9nb25hbC1yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixnR0FBZ0c7QUFFaEcsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBYSxFQUFFLGNBQXlCLEVBQUUsTUFBYSxFQUFFLGNBQXlCLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDNUgsTUFBTSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyRCxNQUFNLFlBQVksR0FBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDM0gsTUFBTSxZQUFZLEdBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDakcsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFD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LENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRSxDQUFDLENBQUM7QUFFRixTQUFTLGFBQWEsQ0FBQyxFQUNuQixPQUFPLEVBQ1AsT0FBTyxFQUNQLE9BQU8sRUFDUCxPQUFPLEVBTVY7SUFDRyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUUxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUUxRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWRpdHMgdG8geHlmbG93XG4vLyBodHRwczovL2dpdGh1Yi5jb20veHlmbG93L3h5Zmxvdy9ibG9iL21haW4vcGFja2FnZXMvc3lzdGVtL3NyYy91dGlscy9lZGdlcy9zbW9vdGhzdGVwLWVkZ2UudHNcblxuaW1wb3J0IHsgRGlyZWN0aW9uLCBQb2ludCB9IGZyb20gXCJAcGxhaXQvY29yZVwiO1xuaW1wb3J0IHsgZ2V0RGlyZWN0aW9uRmFjdG9yIH0gZnJvbSBcIi4vZGlyZWN0aW9uXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRQb2ludHMgPSAoc291cmNlOiBQb2ludCwgc291cmNlUG9zaXRpb246IERpcmVjdGlvbiwgdGFyZ2V0OiBQb2ludCwgdGFyZ2V0UG9zaXRpb246IERpcmVjdGlvbiwgb2Zmc2V0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBzb3VyY2VEaXJlY3Rpb25GYWN0b3JzID0gZ2V0RGlyZWN0aW9uRmFjdG9yKHNvdXJjZVBvc2l0aW9uKTtcbiAgICBjb25zdCB0YXJnZXRERnMgPSBnZXREaXJlY3Rpb25GYWN0b3IodGFyZ2V0UG9zaXRpb24pO1xuICAgIGNvbnN0IHNvdXJjZUdhcHBlZDogUG9pbnQgPSBbc291cmNlWzBdICsgc291cmNlRGlyZWN0aW9uRmFjdG9ycy54ICogb2Zmc2V0LCBzb3VyY2VbMV0gKyBzb3VyY2VEaXJlY3Rpb25GYWN0b3JzLnkgKiBvZmZzZXRdO1xuICAgIGNvbnN0IHRhcmdldEdhcHBlZDogUG9pbnQgPSBbdGFyZ2V0WzBdICsgdGFyZ2V0REZzLnggKiBvZmZzZXQsIHRhcmdldFsxXSArIHRhcmdldERGcy55ICogb2Zmc2V0XTtcbiAgICBjb25zdCBkaXIgPSBnZXREaXJlY3Rpb24oc291cmNlR2FwcGVkLCBzb3VyY2VQb3NpdGlvbiwgdGFyZ2V0R2FwcGVkKTtcbiAgICBjb25zdCBkaXJBY2Nlc3NvciA9IGRpci54ICE9PSAwID8gJ3gnIDogJ3knO1xuICAgIGNvbnN0IGN1cnJEaXIgPSBkaXJbZGlyQWNjZXNzb3JdO1xuXG4gICAgbGV0IHBvaW50czogUG9pbnRbXSA9IFtdO1xuICAgIGxldCBjZW50ZXJYLCBjZW50ZXJZO1xuICAgIGNvbnN0IFtkZWZhdWx0Q2VudGVyWCwgZGVmYXVsdENlbnRlclldID0gZ2V0RWRnZUNlbnRlcih7XG4gICAgICAgIHNvdXJjZVg6IHNvdXJjZVswXSxcbiAgICAgICAgc291cmNlWTogc291cmNlWzFdLFxuICAgICAgICB0YXJnZXRYOiB0YXJnZXRbMF0sXG4gICAgICAgIHRhcmdldFk6IHRhcmdldFsxXVxuICAgIH0pO1xuICAgIC8vIG9wcG9zaXRlIGhhbmRsZSBwb3NpdGlvbnMsIGRlZmF1bHQgY2FzZVxuICAgIGlmIChzb3VyY2VEaXJlY3Rpb25GYWN0b3JzW2RpckFjY2Vzc29yXSAqIHRhcmdldERGc1tkaXJBY2Nlc3Nvcl0gPT09IC0xKSB7XG4gICAgICAgIGNlbnRlclggPSBkZWZhdWx0Q2VudGVyWDtcbiAgICAgICAgY2VudGVyWSA9IGRlZmF1bHRDZW50ZXJZO1xuICAgICAgICAvLyAgICAtLS0+XG4gICAgICAgIC8vICAgIHxcbiAgICAgICAgLy8gPi0tLVxuICAgICAgICBjb25zdCB2ZXJ0aWNhbFNwbGl0OiBQb2ludFtdID0gW1xuICAgICAgICAgICAgW2NlbnRlclgsIHNvdXJjZUdhcHBlZFsxXV0sXG4gICAgICAgICAgICBbY2VudGVyWCwgdGFyZ2V0R2FwcGVkWzFdXVxuICAgICAgICBdO1xuICAgICAgICAvLyAgICB8XG4gICAgICAgIC8vICAtLS1cbiAgICAgICAgLy8gIHxcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFNwbGl0OiBQb2ludFtdID0gW1xuICAgICAgICAgICAgW3NvdXJjZUdhcHBlZFswXSwgY2VudGVyWV0sXG4gICAgICAgICAgICBbdGFyZ2V0R2FwcGVkWzBdLCBjZW50ZXJZXVxuICAgICAgICBdO1xuICAgICAgICBpZiAoc291cmNlRGlyZWN0aW9uRmFjdG9yc1tkaXJBY2Nlc3Nvcl0gPT09IGN1cnJEaXIpIHtcbiAgICAgICAgICAgIHBvaW50cyA9IGRpckFjY2Vzc29yID09PSAneCcgPyB2ZXJ0aWNhbFNwbGl0IDogaG9yaXpvbnRhbFNwbGl0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9pbnRzID0gZGlyQWNjZXNzb3IgPT09ICd4JyA/IGhvcml6b250YWxTcGxpdCA6IHZlcnRpY2FsU3BsaXQ7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzb3VyY2VUYXJnZXQgbWVhbnMgd2UgdGFrZSB4IGZyb20gc291cmNlIGFuZCB5IGZyb20gdGFyZ2V0LCB0YXJnZXRTb3VyY2UgaXMgdGhlIG9wcG9zaXRlXG4gICAgICAgIGNvbnN0IHNvdXJjZVRhcmdldDogUG9pbnRbXSA9IFtbc291cmNlR2FwcGVkWzBdLCB0YXJnZXRHYXBwZWRbMV1dXTtcbiAgICAgICAgY29uc3QgdGFyZ2V0U291cmNlOiBQb2ludFtdID0gW1t0YXJnZXRHYXBwZWRbMF0sIHNvdXJjZUdhcHBlZFsxXV1dO1xuICAgICAgICAvLyB0aGlzIGhhbmRsZXMgZWRnZXMgd2l0aCBzYW1lIGhhbmRsZSBwb3NpdGlvbnNcbiAgICAgICAgaWYgKGRpckFjY2Vzc29yID09PSAneCcpIHtcbiAgICAgICAgICAgIHBvaW50cyA9IHNvdXJjZURpcmVjdGlvbkZhY3RvcnMueCA9PT0gY3VyckRpciA/IHRhcmdldFNvdXJjZSA6IHNvdXJjZVRhcmdldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvaW50cyA9IHNvdXJjZURpcmVjdGlvbkZhY3RvcnMueSA9PT0gY3VyckRpciA/IHNvdXJjZVRhcmdldCA6IHRhcmdldFNvdXJjZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoZXNlIGFyZSBjb25kaXRpb25zIGZvciBoYW5kbGluZyBtaXhlZCBoYW5kbGUgcG9zaXRpb25zIGxpa2UgcmlnaHQgLT4gYm90dG9tIGZvciBleGFtcGxlXG4gICAgICAgIGxldCBmbGlwU291cmNlVGFyZ2V0O1xuICAgICAgICBpZiAoc291cmNlUG9zaXRpb24gIT09IHRhcmdldFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBkaXJBY2Nlc3Nvck9wcG9zaXRlID0gZGlyQWNjZXNzb3IgPT09ICd4JyA/IDEgOiAwO1xuICAgICAgICAgICAgY29uc3QgaXNTYW1lRGlyID0gc291cmNlRGlyZWN0aW9uRmFjdG9yc1tkaXJBY2Nlc3Nvcl0gPT09IHRhcmdldERGc1tkaXJBY2Nlc3NvciA9PT0gJ3gnID8gJ3knIDogJ3gnXTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUd0VGFyZ2V0ID0gc291cmNlR2FwcGVkW2RpckFjY2Vzc29yT3Bwb3NpdGVdID4gdGFyZ2V0R2FwcGVkW2RpckFjY2Vzc29yT3Bwb3NpdGVdO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlTHRUYXJnZXQgPSBzb3VyY2VHYXBwZWRbZGlyQWNjZXNzb3JPcHBvc2l0ZV0gPCB0YXJnZXRHYXBwZWRbZGlyQWNjZXNzb3JPcHBvc2l0ZV07XG4gICAgICAgICAgICBmbGlwU291cmNlVGFyZ2V0ID1cbiAgICAgICAgICAgICAgICAoc291cmNlRGlyZWN0aW9uRmFjdG9yc1tkaXJBY2Nlc3Nvcl0gPT09IDEgJiYgKCghaXNTYW1lRGlyICYmIHNvdXJjZUd0VGFyZ2V0KSB8fCAoaXNTYW1lRGlyICYmIHNvdXJjZUx0VGFyZ2V0KSkpIHx8XG4gICAgICAgICAgICAgICAgKHNvdXJjZURpcmVjdGlvbkZhY3RvcnNbZGlyQWNjZXNzb3JdICE9PSAxICYmICgoIWlzU2FtZURpciAmJiBzb3VyY2VMdFRhcmdldCkgfHwgKGlzU2FtZURpciAmJiBzb3VyY2VHdFRhcmdldCkpKTtcblxuICAgICAgICAgICAgaWYgKGZsaXBTb3VyY2VUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICBwb2ludHMgPSBkaXJBY2Nlc3NvciA9PT0gJ3gnID8gc291cmNlVGFyZ2V0IDogdGFyZ2V0U291cmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbc291cmNlLCBzb3VyY2VHYXBwZWQsIC4uLnBvaW50cywgdGFyZ2V0R2FwcGVkLCB0YXJnZXRdO1xufTtcblxuY29uc3QgZ2V0RGlyZWN0aW9uID0gKHNvdXJjZTogUG9pbnQsIHNvdXJjZVBvc2l0aW9uID0gRGlyZWN0aW9uLmJvdHRvbSwgdGFyZ2V0OiBQb2ludCkgPT4ge1xuICAgIGlmIChzb3VyY2VQb3NpdGlvbiA9PT0gRGlyZWN0aW9uLmxlZnQgfHwgc291cmNlUG9zaXRpb24gPT09IERpcmVjdGlvbi5yaWdodCkge1xuICAgICAgICByZXR1cm4gc291cmNlWzBdIDwgdGFyZ2V0WzBdID8geyB4OiAxLCB5OiAwIH0gOiB7IHg6IC0xLCB5OiAwIH07XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VbMV0gPCB0YXJnZXRbMV0gPyB7IHg6IDAsIHk6IDEgfSA6IHsgeDogMCwgeTogLTEgfTtcbn07XG5cbmZ1bmN0aW9uIGdldEVkZ2VDZW50ZXIoe1xuICAgIHNvdXJjZVgsXG4gICAgc291cmNlWSxcbiAgICB0YXJnZXRYLFxuICAgIHRhcmdldFlcbn06IHtcbiAgICBzb3VyY2VYOiBudW1iZXI7XG4gICAgc291cmNlWTogbnVtYmVyO1xuICAgIHRhcmdldFg6IG51bWJlcjtcbiAgICB0YXJnZXRZOiBudW1iZXI7XG59KTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICAgIGNvbnN0IHhPZmZzZXQgPSBNYXRoLmFicyh0YXJnZXRYIC0gc291cmNlWCkgLyAyO1xuICAgIGNvbnN0IGNlbnRlclggPSB0YXJnZXRYIDwgc291cmNlWCA/IHRhcmdldFggKyB4T2Zmc2V0IDogdGFyZ2V0WCAtIHhPZmZzZXQ7XG5cbiAgICBjb25zdCB5T2Zmc2V0ID0gTWF0aC5hYnModGFyZ2V0WSAtIHNvdXJjZVkpIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gdGFyZ2V0WSA8IHNvdXJjZVkgPyB0YXJnZXRZICsgeU9mZnNldCA6IHRhcmdldFkgLSB5T2Zmc2V0O1xuXG4gICAgcmV0dXJuIFtjZW50ZXJYLCBjZW50ZXJZLCB4T2Zmc2V0LCB5T2Zmc2V0XTtcbn0iXX0=
|
|
@@ -5,6 +5,18 @@ const handleDirectionFactors = {
|
|
|
5
5
|
[Direction.top]: { x: 0, y: -1 },
|
|
6
6
|
[Direction.bottom]: { x: 0, y: 1 }
|
|
7
7
|
};
|
|
8
|
+
export function getOppositeDirection(direction) {
|
|
9
|
+
switch (direction) {
|
|
10
|
+
case Direction.left:
|
|
11
|
+
return Direction.right;
|
|
12
|
+
case Direction.right:
|
|
13
|
+
return Direction.left;
|
|
14
|
+
case Direction.top:
|
|
15
|
+
return Direction.bottom;
|
|
16
|
+
case Direction.bottom:
|
|
17
|
+
return Direction.top;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
8
20
|
export function getDirectionByPointOfRectangle(point) {
|
|
9
21
|
if (point[0] === 0) {
|
|
10
22
|
return Direction.left;
|
|
@@ -74,8 +86,8 @@ export function getDirectionBetweenPointAndPoint(source, target) {
|
|
|
74
86
|
export function getDirectionFactor(direction) {
|
|
75
87
|
return handleDirectionFactors[direction];
|
|
76
88
|
}
|
|
77
|
-
export function
|
|
78
|
-
const directionFactor =
|
|
89
|
+
export function getDirectionFactorByDirectionComponent(directionComponent) {
|
|
90
|
+
const directionFactor = directionComponent === 0 ? directionComponent : directionComponent / Math.abs(directionComponent);
|
|
79
91
|
return directionFactor;
|
|
80
92
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9kaXJlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0QsTUFBTSxhQUFhLENBQUM7QUFFMUYsTUFBTSxzQkFBc0IsR0FBRztJQUMzQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2pDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2pDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDckMsQ0FBQztBQUVGLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxTQUFvQjtJQUNyRCxRQUFRLFNBQVMsRUFBRTtRQUNmLEtBQUssU0FBUyxDQUFDLElBQUk7WUFDZixPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDM0IsS0FBSyxTQUFTLENBQUMsS0FBSztZQUNoQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDMUIsS0FBSyxTQUFTLENBQUMsR0FBRztZQUNkLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUM1QixLQUFLLFNBQVMsQ0FBQyxNQUFNO1lBQ2pCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQztLQUM1QjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsOEJBQThCLENBQUMsS0FBdUI7SUFDbEUsSUFBSSxLQUFLLENBQUMsQ0FB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QjtLQUNKO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBb0I7SUFDbkQsT0FBTyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNDQUFzQyxDQUFDLGtCQUEwQjtJQUM3RSxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDMUgsT0FBTyxlQUFrQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24sIERpcmVjdGlvbkZhY3RvciwgUG9pbnQsIFBvaW50T2ZSZWN0YW5nbGUsIFZlY3RvciB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuY29uc3QgaGFuZGxlRGlyZWN0aW9uRmFjdG9ycyA9IHtcbiAgICBbRGlyZWN0aW9uLmxlZnRdOiB7IHg6IC0xLCB5OiAwIH0sXG4gICAgW0RpcmVjdGlvbi5yaWdodF06IHsgeDogMSwgeTogMCB9LFxuICAgIFtEaXJlY3Rpb24udG9wXTogeyB4OiAwLCB5OiAtMSB9LFxuICAgIFtEaXJlY3Rpb24uYm90dG9tXTogeyB4OiAwLCB5OiAxIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcHBvc2l0ZURpcmVjdGlvbihkaXJlY3Rpb246IERpcmVjdGlvbikge1xuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgRGlyZWN0aW9uLmxlZnQ6XG4gICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9uLnJpZ2h0O1xuICAgICAgICBjYXNlIERpcmVjdGlvbi5yaWdodDpcbiAgICAgICAgICAgIHJldHVybiBEaXJlY3Rpb24ubGVmdDtcbiAgICAgICAgY2FzZSBEaXJlY3Rpb24udG9wOlxuICAgICAgICAgICAgcmV0dXJuIERpcmVjdGlvbi5ib3R0b207XG4gICAgICAgIGNhc2UgRGlyZWN0aW9uLmJvdHRvbTpcbiAgICAgICAgICAgIHJldHVybiBEaXJlY3Rpb24udG9wO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdGlvbkJ5UG9pbnRPZlJlY3RhbmdsZShwb2ludDogUG9pbnRPZlJlY3RhbmdsZSk6IERpcmVjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHBvaW50WzBdID09PSAwKSB7XG4gICAgICAgIHJldHVybiBEaXJlY3Rpb24ubGVmdDtcbiAgICB9XG4gICAgaWYgKHBvaW50WzBdID09PSAxKSB7XG4gICAgICAgIHJldHVybiBEaXJlY3Rpb24ucmlnaHQ7XG4gICAgfVxuICAgIGlmIChwb2ludFsxXSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gRGlyZWN0aW9uLnRvcDtcbiAgICB9XG4gICAgaWYgKHBvaW50WzFdID09PSAxKSB7XG4gICAgICAgIHJldHVybiBEaXJlY3Rpb24uYm90dG9tO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIHRoaXMgZnVuY3Rpb24gYWNjZXB0cyB2ZWN0b3IgcGFyYW1ldGVyLCB0aGUgdmVjdG9yIHBhcmFtZXRlciB2ZWN0b3IgaXMgYmFzZWQgb24gdGhlIHNjcmVlbiBjb29yZGluYXRlIHN5c3RlbVxuICogdmVjdG9yWzBdIGFuZCB2ZWN0b3JbMV0gYXJlIHRoZSB4IGFuZCB5IGNvbXBvbmVudHMgb2YgdGhlIHZlY3RvciByZXNwZWN0aXZlbHkuXG4gKiBpZiB0aGUgdmVjdG9yIGhhcyBvbmx5IG9uZSBkaXJlY3Rpb24sIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nIGluIHRoYXQgZGlyZWN0aW9uLCBzdWNoIGFzICdyaWdodCcsICd0b3AnLCAnYm90dG9tJyBvciAnbGVmdCcuXG4gKiBpZiB0aGUgdmVjdG9yIGhhcyB0d28gZGlyZWN0aW9ucywgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBzdHJpbmcgaW4gd2hpY2ggZGlyZWN0aW9uIGl0IGlzIGNsb3Nlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdGlvbkJ5VmVjdG9yKHZlY3RvcjogVmVjdG9yKTogRGlyZWN0aW9uIHwgbnVsbCB7XG4gICAgY29uc3QgeCA9IHZlY3RvclswXTtcbiAgICBjb25zdCB5ID0gdmVjdG9yWzFdO1xuICAgIGlmICh4ID09PSAwICYmIHkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh4ID09PSAwKSB7XG4gICAgICAgIHJldHVybiB5ID4gMCA/IERpcmVjdGlvbi5ib3R0b20gOiBEaXJlY3Rpb24udG9wO1xuICAgIH1cbiAgICBpZiAoeSA9PT0gMCkge1xuICAgICAgICByZXR1cm4geCA+IDAgPyBEaXJlY3Rpb24ucmlnaHQgOiBEaXJlY3Rpb24ubGVmdDtcbiAgICB9XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLmF0YW4yKHksIHgpO1xuICAgIGlmIChhbmdsZSA+IC1NYXRoLlBJIC8gNCAmJiBhbmdsZSA8PSBNYXRoLlBJIC8gNCkge1xuICAgICAgICByZXR1cm4gRGlyZWN0aW9uLnJpZ2h0O1xuICAgIH0gZWxzZSBpZiAoYW5nbGUgPiBNYXRoLlBJIC8gNCAmJiBhbmdsZSA8PSAoMyAqIE1hdGguUEkpIC8gNCkge1xuICAgICAgICByZXR1cm4gRGlyZWN0aW9uLmJvdHRvbTtcbiAgICB9IGVsc2UgaWYgKGFuZ2xlID4gKC0zICogTWF0aC5QSSkgLyA0ICYmIGFuZ2xlIDw9IC1NYXRoLlBJIC8gNCkge1xuICAgICAgICByZXR1cm4gRGlyZWN0aW9uLnRvcDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gRGlyZWN0aW9uLmxlZnQ7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0aW9uQmV0d2VlblBvaW50QW5kUG9pbnQoc291cmNlOiBQb2ludCwgdGFyZ2V0OiBQb2ludCkge1xuICAgIGlmIChzb3VyY2VbMF0gPT09IHRhcmdldFswXSkge1xuICAgICAgICBpZiAoc291cmNlWzFdID49IHRhcmdldFsxXSkge1xuICAgICAgICAgICAgcmV0dXJuIERpcmVjdGlvbi50b3A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9uLmJvdHRvbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc291cmNlWzFdID09PSB0YXJnZXRbMV0pIHtcbiAgICAgICAgaWYgKHNvdXJjZVswXSA+PSB0YXJnZXRbMF0pIHtcbiAgICAgICAgICAgIHJldHVybiBEaXJlY3Rpb24ubGVmdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBEaXJlY3Rpb24ucmlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYW4gbm90IG1hdGNoIGRpcmVjdGlvbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0aW9uRmFjdG9yKGRpcmVjdGlvbjogRGlyZWN0aW9uKSB7XG4gICAgcmV0dXJuIGhhbmRsZURpcmVjdGlvbkZhY3RvcnNbZGlyZWN0aW9uXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdGlvbkZhY3RvckJ5RGlyZWN0aW9uQ29tcG9uZW50KGRpcmVjdGlvbkNvbXBvbmVudDogbnVtYmVyKTogRGlyZWN0aW9uRmFjdG9yIHtcbiAgICBjb25zdCBkaXJlY3Rpb25GYWN0b3IgPSBkaXJlY3Rpb25Db21wb25lbnQgPT09IDAgPyBkaXJlY3Rpb25Db21wb25lbnQgOiBkaXJlY3Rpb25Db21wb25lbnQgLyBNYXRoLmFicyhkaXJlY3Rpb25Db21wb25lbnQpO1xuICAgIHJldHVybiBkaXJlY3Rpb25GYWN0b3IgYXMgRGlyZWN0aW9uRmFjdG9yO1xufVxuIl19
|
package/esm2022/utils/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './resize';
|
|
2
2
|
export * from './line-path';
|
|
3
|
+
export * from './default-orthogonal-routing';
|
|
3
4
|
export * from './hot-key';
|
|
4
5
|
export * from './creation-mode';
|
|
5
6
|
export * from './direction';
|
|
@@ -10,4 +11,5 @@ export * from './memorize';
|
|
|
10
11
|
export * from './vector';
|
|
11
12
|
export * from './math';
|
|
12
13
|
export * from './drawing';
|
|
13
|
-
|
|
14
|
+
export * from './rotate';
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNpemUnO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lLXBhdGgnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LW9ydGhvZ29uYWwtcm91dGluZyc7XG5leHBvcnQgKiBmcm9tICcuL2hvdC1rZXknO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGlvbi1tb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vZWxib3ctbGluZS1yb3V0ZSc7XG5leHBvcnQgKiBmcm9tICcuL21lbW9yaXplJztcbmV4cG9ydCAqIGZyb20gJy4vdmVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbWF0aCc7XG5leHBvcnQgKiBmcm9tICcuL2RyYXdpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3RhdGUnO1xuIl19
|
|
@@ -1,100 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getDirectionFactor } from './direction';
|
|
1
|
+
import { Point, distanceBetweenPointAndPoint } from '@plait/core';
|
|
3
2
|
import { isPointOnSegment } from './math';
|
|
4
|
-
export function getOppositeDirection(direction) {
|
|
5
|
-
switch (direction) {
|
|
6
|
-
case Direction.left:
|
|
7
|
-
return Direction.right;
|
|
8
|
-
case Direction.right:
|
|
9
|
-
return Direction.left;
|
|
10
|
-
case Direction.top:
|
|
11
|
-
return Direction.bottom;
|
|
12
|
-
case Direction.bottom:
|
|
13
|
-
return Direction.top;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export const getPoints = (source, sourcePosition, target, targetPosition, offset) => {
|
|
17
|
-
const sourceDir = getDirectionFactor(sourcePosition);
|
|
18
|
-
const targetDir = getDirectionFactor(targetPosition);
|
|
19
|
-
const sourceGapped = [source[0] + sourceDir.x * offset, source[1] + sourceDir.y * offset];
|
|
20
|
-
const targetGapped = [target[0] + targetDir.x * offset, target[1] + targetDir.y * offset];
|
|
21
|
-
const dir = getDirection(sourceGapped, sourcePosition, targetGapped);
|
|
22
|
-
const dirAccessor = dir.x !== 0 ? 'x' : 'y';
|
|
23
|
-
const currDir = dir[dirAccessor];
|
|
24
|
-
let points = [];
|
|
25
|
-
let centerX, centerY;
|
|
26
|
-
const [defaultCenterX, defaultCenterY] = getEdgeCenter({
|
|
27
|
-
sourceX: source[0],
|
|
28
|
-
sourceY: source[1],
|
|
29
|
-
targetX: target[0],
|
|
30
|
-
targetY: target[1]
|
|
31
|
-
});
|
|
32
|
-
// opposite handle positions, default case
|
|
33
|
-
if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {
|
|
34
|
-
centerX = defaultCenterX;
|
|
35
|
-
centerY = defaultCenterY;
|
|
36
|
-
// --->
|
|
37
|
-
// |
|
|
38
|
-
// >---
|
|
39
|
-
const verticalSplit = [
|
|
40
|
-
[centerX, sourceGapped[1]],
|
|
41
|
-
[centerX, targetGapped[1]]
|
|
42
|
-
];
|
|
43
|
-
// |
|
|
44
|
-
// ---
|
|
45
|
-
// |
|
|
46
|
-
const horizontalSplit = [
|
|
47
|
-
[sourceGapped[0], centerY],
|
|
48
|
-
[targetGapped[0], centerY]
|
|
49
|
-
];
|
|
50
|
-
if (sourceDir[dirAccessor] === currDir) {
|
|
51
|
-
points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
// sourceTarget means we take x from source and y from target, targetSource is the opposite
|
|
59
|
-
const sourceTarget = [[sourceGapped[0], targetGapped[1]]];
|
|
60
|
-
const targetSource = [[targetGapped[0], sourceGapped[1]]];
|
|
61
|
-
// this handles edges with same handle positions
|
|
62
|
-
if (dirAccessor === 'x') {
|
|
63
|
-
points = sourceDir.x === currDir ? targetSource : sourceTarget;
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
points = sourceDir.y === currDir ? sourceTarget : targetSource;
|
|
67
|
-
}
|
|
68
|
-
// these are conditions for handling mixed handle positions like right -> bottom for example
|
|
69
|
-
let flipSourceTarget;
|
|
70
|
-
if (sourcePosition !== targetPosition) {
|
|
71
|
-
const dirAccessorOpposite = dirAccessor === 'x' ? 1 : 0;
|
|
72
|
-
const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessor === 'x' ? 'y' : 'x'];
|
|
73
|
-
const sourceGtTarget = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];
|
|
74
|
-
const sourceLtTarget = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];
|
|
75
|
-
flipSourceTarget =
|
|
76
|
-
(sourceDir[dirAccessor] === 1 && ((!isSameDir && sourceGtTarget) || (isSameDir && sourceLtTarget))) ||
|
|
77
|
-
(sourceDir[dirAccessor] !== 1 && ((!isSameDir && sourceLtTarget) || (isSameDir && sourceGtTarget)));
|
|
78
|
-
if (flipSourceTarget) {
|
|
79
|
-
points = dirAccessor === 'x' ? sourceTarget : targetSource;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return [source, sourceGapped, ...points, targetGapped, target];
|
|
84
|
-
};
|
|
85
|
-
export const getDirection = (source, sourcePosition = Direction.bottom, target) => {
|
|
86
|
-
if (sourcePosition === Direction.left || sourcePosition === Direction.right) {
|
|
87
|
-
return source[0] < target[0] ? { x: 1, y: 0 } : { x: -1, y: 0 };
|
|
88
|
-
}
|
|
89
|
-
return source[1] < target[1] ? { x: 0, y: 1 } : { x: 0, y: -1 };
|
|
90
|
-
};
|
|
91
|
-
export function getEdgeCenter({ sourceX, sourceY, targetX, targetY }) {
|
|
92
|
-
const xOffset = Math.abs(targetX - sourceX) / 2;
|
|
93
|
-
const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;
|
|
94
|
-
const yOffset = Math.abs(targetY - sourceY) / 2;
|
|
95
|
-
const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;
|
|
96
|
-
return [centerX, centerY, xOffset, yOffset];
|
|
97
|
-
}
|
|
98
3
|
export function getPointOnPolyline(points, ratio) {
|
|
99
4
|
const totalLength = calculatePolylineLength(points);
|
|
100
5
|
const targetDistance = totalLength * ratio;
|
|
@@ -172,4 +77,4 @@ export const getExtendPoint = (source, target, extendDistance) => {
|
|
|
172
77
|
const cos = isEqual ? 1 : (target[0] - source[0]) / distance;
|
|
173
78
|
return [source[0] + extendDistance * cos, source[1] + extendDistance * sin];
|
|
174
79
|
};
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9saW5lLXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUxQyxNQUFNLFVBQVUsb0JBQW9CLENBQUMsU0FBb0I7SUFDckQsUUFBUSxTQUFTLEVBQUU7UUFDZixLQUFLLFNBQVMsQ0FBQyxJQUFJO1lBQ2YsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQzNCLEtBQUssU0FBUyxDQUFDLEtBQUs7WUFDaEIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzFCLEtBQUssU0FBUyxDQUFDLEdBQUc7WUFDZCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDNUIsS0FBSyxTQUFTLENBQUMsTUFBTTtZQUNqQixPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUM7S0FDNUI7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBYSxFQUFFLGNBQXlCLEVBQUUsTUFBYSxFQUFFLGNBQXlCLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDNUgsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsTUFBTSxZQUFZLEdBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsTUFB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QUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzdELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDN0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDaEYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uLCBQb2ludCwgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldERpcmVjdGlvbkZhY3RvciB9IGZyb20gJy4vZGlyZWN0aW9uJztcbmltcG9ydCB7IGlzUG9pbnRPblNlZ21lbnQgfSBmcm9tICcuL21hdGgnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVEaXJlY3Rpb24oZGlyZWN0aW9uOiBEaXJlY3Rpb24pIHtcbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICBjYXNlIERpcmVjdGlvbi5sZWZ0OlxuICAgICAgICAgICAgcmV0dXJuIERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgY2FzZSBEaXJlY3Rpb24ucmlnaHQ6XG4gICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9uLmxlZnQ7XG4gICAgICAgIGNhc2UgRGlyZWN0aW9uLnRvcDpcbiAgICAgICAgICAgIHJldHVybiBEaXJlY3Rpb24uYm90dG9tO1xuICAgICAgICBjYXNlIERpcmVjdGlvbi5ib3R0b206XG4gICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9uLnRvcDtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBnZXRQb2ludHMgPSAoc291cmNlOiBQb2ludCwgc291cmNlUG9zaXRpb246IERpcmVjdGlvbiwgdGFyZ2V0OiBQb2ludCwgdGFyZ2V0UG9zaXRpb246IERpcmVjdGlvbiwgb2Zmc2V0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBzb3VyY2VEaXIgPSBnZXREaXJlY3Rpb25GYWN0b3Ioc291cmNlUG9zaXRpb24pO1xuICAgIGNvbnN0IHRhcmdldERpciA9IGdldERpcmVjdGlvbkZhY3Rvcih0YXJnZXRQb3NpdGlvbik7XG4gICAgY29uc3Qgc291cmNlR2FwcGVkOiBQb2ludCA9IFtzb3VyY2VbMF0gKyBzb3VyY2VEaXIueCAqIG9mZnNldCwgc291cmNlWzFdICsgc291cmNlRGlyLnkgKiBvZmZzZXRdO1xuICAgIGNvbnN0IHRhcmdldEdhcHBlZDogUG9pbnQgPSBbdGFyZ2V0WzBdICsgdGFyZ2V0RGlyLnggKiBvZmZzZXQsIHRhcmdldFsxXSArIHRhcmdldERpci55ICogb2Zmc2V0XTtcbiAgICBjb25zdCBkaXIgPSBnZXREaXJlY3Rpb24oc291cmNlR2FwcGVkLCBzb3VyY2VQb3NpdGlvbiwgdGFyZ2V0R2FwcGVkKTtcbiAgICBjb25zdCBkaXJBY2Nlc3NvciA9IGRpci54ICE9PSAwID8gJ3gnIDogJ3knO1xuICAgIGNvbnN0IGN1cnJEaXIgPSBkaXJbZGlyQWNjZXNzb3JdO1xuXG4gICAgbGV0IHBvaW50czogUG9pbnRbXSA9IFtdO1xuICAgIGxldCBjZW50ZXJYLCBjZW50ZXJZO1xuICAgIGNvbnN0IFtkZWZhdWx0Q2VudGVyWCwgZGVmYXVsdENlbnRlclldID0gZ2V0RWRnZUNlbnRlcih7XG4gICAgICAgIHNvdXJjZVg6IHNvdXJjZVswXSxcbiAgICAgICAgc291cmNlWTogc291cmNlWzFdLFxuICAgICAgICB0YXJnZXRYOiB0YXJnZXRbMF0sXG4gICAgICAgIHRhcmdldFk6IHRhcmdldFsxXVxuICAgIH0pO1xuICAgIC8vIG9wcG9zaXRlIGhhbmRsZSBwb3NpdGlvbnMsIGRlZmF1bHQgY2FzZVxuICAgIGlmIChzb3VyY2VEaXJbZGlyQWNjZXNzb3JdICogdGFyZ2V0RGlyW2RpckFjY2Vzc29yXSA9PT0gLTEpIHtcbiAgICAgICAgY2VudGVyWCA9IGRlZmF1bHRDZW50ZXJYO1xuICAgICAgICBjZW50ZXJZID0gZGVmYXVsdENlbnRlclk7XG4gICAgICAgIC8vICAgIC0tLT5cbiAgICAgICAgLy8gICAgfFxuICAgICAgICAvLyA+LS0tXG4gICAgICAgIGNvbnN0IHZlcnRpY2FsU3BsaXQ6IFBvaW50W10gPSBbXG4gICAgICAgICAgICBbY2VudGVyWCwgc291cmNlR2FwcGVkWzFdXSxcbiAgICAgICAgICAgIFtjZW50ZXJYLCB0YXJnZXRHYXBwZWRbMV1dXG4gICAgICAgIF07XG4gICAgICAgIC8vICAgIHxcbiAgICAgICAgLy8gIC0tLVxuICAgICAgICAvLyAgfFxuICAgICAgICBjb25zdCBob3Jpem9udGFsU3BsaXQ6IFBvaW50W10gPSBbXG4gICAgICAgICAgICBbc291cmNlR2FwcGVkWzBdLCBjZW50ZXJZXSxcbiAgICAgICAgICAgIFt0YXJnZXRHYXBwZWRbMF0sIGNlbnRlclldXG4gICAgICAgIF07XG4gICAgICAgIGlmIChzb3VyY2VEaXJbZGlyQWNjZXNzb3JdID09PSBjdXJyRGlyKSB7XG4gICAgICAgICAgICBwb2ludHMgPSBkaXJBY2Nlc3NvciA9PT0gJ3gnID8gdmVydGljYWxTcGxpdCA6IGhvcml6b250YWxTcGxpdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvaW50cyA9IGRpckFjY2Vzc29yID09PSAneCcgPyBob3Jpem9udGFsU3BsaXQgOiB2ZXJ0aWNhbFNwbGl0O1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc291cmNlVGFyZ2V0IG1lYW5zIHdlIHRha2UgeCBmcm9tIHNvdXJjZSBhbmQgeSBmcm9tIHRhcmdldCwgdGFyZ2V0U291cmNlIGlzIHRoZSBvcHBvc2l0ZVxuICAgICAgICBjb25zdCBzb3VyY2VUYXJnZXQ6IFBvaW50W10gPSBbW3NvdXJjZUdhcHBlZFswXSwgdGFyZ2V0R2FwcGVkWzFdXV07XG4gICAgICAgIGNvbnN0IHRhcmdldFNvdXJjZTogUG9pbnRbXSA9IFtbdGFyZ2V0R2FwcGVkWzBdLCBzb3VyY2VHYXBwZWRbMV1dXTtcbiAgICAgICAgLy8gdGhpcyBoYW5kbGVzIGVkZ2VzIHdpdGggc2FtZSBoYW5kbGUgcG9zaXRpb25zXG4gICAgICAgIGlmIChkaXJBY2Nlc3NvciA9PT0gJ3gnKSB7XG4gICAgICAgICAgICBwb2ludHMgPSBzb3VyY2VEaXIueCA9PT0gY3VyckRpciA/IHRhcmdldFNvdXJjZSA6IHNvdXJjZVRhcmdldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvaW50cyA9IHNvdXJjZURpci55ID09PSBjdXJyRGlyID8gc291cmNlVGFyZ2V0IDogdGFyZ2V0U291cmNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGhlc2UgYXJlIGNvbmRpdGlvbnMgZm9yIGhhbmRsaW5nIG1peGVkIGhhbmRsZSBwb3NpdGlvbnMgbGlrZSByaWdodCAtPiBib3R0b20gZm9yIGV4YW1wbGVcbiAgICAgICAgbGV0IGZsaXBTb3VyY2VUYXJnZXQ7XG4gICAgICAgIGlmIChzb3VyY2VQb3NpdGlvbiAhPT0gdGFyZ2V0UG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGRpckFjY2Vzc29yT3Bwb3NpdGUgPSBkaXJBY2Nlc3NvciA9PT0gJ3gnID8gMSA6IDA7XG4gICAgICAgICAgICBjb25zdCBpc1NhbWVEaXIgPSBzb3VyY2VEaXJbZGlyQWNjZXNzb3JdID09PSB0YXJnZXREaXJbZGlyQWNjZXNzb3IgPT09ICd4JyA/ICd5JyA6ICd4J107XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VHdFRhcmdldCA9IHNvdXJjZUdhcHBlZFtkaXJBY2Nlc3Nvck9wcG9zaXRlXSA+IHRhcmdldEdhcHBlZFtkaXJBY2Nlc3Nvck9wcG9zaXRlXTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUx0VGFyZ2V0ID0gc291cmNlR2FwcGVkW2RpckFjY2Vzc29yT3Bwb3NpdGVdIDwgdGFyZ2V0R2FwcGVkW2RpckFjY2Vzc29yT3Bwb3NpdGVdO1xuICAgICAgICAgICAgZmxpcFNvdXJjZVRhcmdldCA9XG4gICAgICAgICAgICAgICAgKHNvdXJjZURpcltkaXJBY2Nlc3Nvcl0gPT09IDEgJiYgKCghaXNTYW1lRGlyICYmIHNvdXJjZUd0VGFyZ2V0KSB8fCAoaXNTYW1lRGlyICYmIHNvdXJjZUx0VGFyZ2V0KSkpIHx8XG4gICAgICAgICAgICAgICAgKHNvdXJjZURpcltkaXJBY2Nlc3Nvcl0gIT09IDEgJiYgKCghaXNTYW1lRGlyICYmIHNvdXJjZUx0VGFyZ2V0KSB8fCAoaXNTYW1lRGlyICYmIHNvdXJjZUd0VGFyZ2V0KSkpO1xuXG4gICAgICAgICAgICBpZiAoZmxpcFNvdXJjZVRhcmdldCkge1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IGRpckFjY2Vzc29yID09PSAneCcgPyBzb3VyY2VUYXJnZXQgOiB0YXJnZXRTb3VyY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtzb3VyY2UsIHNvdXJjZUdhcHBlZCwgLi4ucG9pbnRzLCB0YXJnZXRHYXBwZWQsIHRhcmdldF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGlyZWN0aW9uID0gKHNvdXJjZTogUG9pbnQsIHNvdXJjZVBvc2l0aW9uID0gRGlyZWN0aW9uLmJvdHRvbSwgdGFyZ2V0OiBQb2ludCkgPT4ge1xuICAgIGlmIChzb3VyY2VQb3NpdGlvbiA9PT0gRGlyZWN0aW9uLmxlZnQgfHwgc291cmNlUG9zaXRpb24gPT09IERpcmVjdGlvbi5yaWdodCkge1xuICAgICAgICByZXR1cm4gc291cmNlWzBdIDwgdGFyZ2V0WzBdID8geyB4OiAxLCB5OiAwIH0gOiB7IHg6IC0xLCB5OiAwIH07XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VbMV0gPCB0YXJnZXRbMV0gPyB7IHg6IDAsIHk6IDEgfSA6IHsgeDogMCwgeTogLTEgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGdlQ2VudGVyKHtcbiAgICBzb3VyY2VYLFxuICAgIHNvdXJjZVksXG4gICAgdGFyZ2V0WCxcbiAgICB0YXJnZXRZXG59OiB7XG4gICAgc291cmNlWDogbnVtYmVyO1xuICAgIHNvdXJjZVk6IG51bWJlcjtcbiAgICB0YXJnZXRYOiBudW1iZXI7XG4gICAgdGFyZ2V0WTogbnVtYmVyO1xufSk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgICBjb25zdCB4T2Zmc2V0ID0gTWF0aC5hYnModGFyZ2V0WCAtIHNvdXJjZVgpIC8gMjtcbiAgICBjb25zdCBjZW50ZXJYID0gdGFyZ2V0WCA8IHNvdXJjZVggPyB0YXJnZXRYICsgeE9mZnNldCA6IHRhcmdldFggLSB4T2Zmc2V0O1xuXG4gICAgY29uc3QgeU9mZnNldCA9IE1hdGguYWJzKHRhcmdldFkgLSBzb3VyY2VZKSAvIDI7XG4gICAgY29uc3QgY2VudGVyWSA9IHRhcmdldFkgPCBzb3VyY2VZID8gdGFyZ2V0WSArIHlPZmZzZXQgOiB0YXJnZXRZIC0geU9mZnNldDtcblxuICAgIHJldHVybiBbY2VudGVyWCwgY2VudGVyWSwgeE9mZnNldCwgeU9mZnNldF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2ludE9uUG9seWxpbmUocG9pbnRzOiBQb2ludFtdLCByYXRpbzogbnVtYmVyKSB7XG4gICAgY29uc3QgdG90YWxMZW5ndGggPSBjYWxjdWxhdGVQb2x5bGluZUxlbmd0aChwb2ludHMpO1xuICAgIGNvbnN0IHRhcmdldERpc3RhbmNlID0gdG90YWxMZW5ndGggKiByYXRpbztcblxuICAgIGxldCBhY2N1bXVsYXRlZERpc3RhbmNlID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgW3gxLCB5MV0gPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IFt4MiwgeTJdID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3Qgc2VnbWVudExlbmd0aCA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoeDEsIHkxLCB4MiwgeTIpO1xuXG4gICAgICAgIGlmIChhY2N1bXVsYXRlZERpc3RhbmNlICsgc2VnbWVudExlbmd0aCA+PSB0YXJnZXREaXN0YW5jZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nRGlzdGFuY2UgPSB0YXJnZXREaXN0YW5jZSAtIGFjY3VtdWxhdGVkRGlzdGFuY2U7XG4gICAgICAgICAgICBjb25zdCByYXRpb0luU2VnbWVudCA9IHJlbWFpbmluZ0Rpc3RhbmNlIC8gc2VnbWVudExlbmd0aDtcblxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0WCA9IHgxICsgKHgyIC0geDEpICogcmF0aW9JblNlZ21lbnQ7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRZID0geTEgKyAoeTIgLSB5MSkgKiByYXRpb0luU2VnbWVudDtcbiAgICAgICAgICAgIHJldHVybiBbdGFyZ2V0WCwgdGFyZ2V0WV07XG4gICAgICAgIH1cblxuICAgICAgICBhY2N1bXVsYXRlZERpc3RhbmNlICs9IHNlZ21lbnRMZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVQb2x5bGluZUxlbmd0aChwb2ludHM6IFBvaW50W10pIHtcbiAgICBsZXQgbGVuZ3RoID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgW3gxLCB5MV0gPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IFt4MiwgeTJdID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgbGVuZ3RoICs9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoeDEsIHkxLCB4MiwgeTIpO1xuICAgIH1cbiAgICByZXR1cm4gbGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF0aW9CeVBvaW50KHBvaW50czogUG9pbnRbXSwgcG9pbnQ6IFBvaW50KSB7XG4gICAgY29uc3QgdG90YWxMZW5ndGggPSBjYWxjdWxhdGVQb2x5bGluZUxlbmd0aChwb2ludHMpO1xuICAgIGxldCBkaXN0YW5jZSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGlzT3ZlcmxhcCA9IGlzUG9pbnRPblNlZ21lbnQocG9pbnQsIHBvaW50c1tpXSwgcG9pbnRzW2kgKyAxXSk7XG4gICAgICAgIGlmIChpc092ZXJsYXApIHtcbiAgICAgICAgICAgIGRpc3RhbmNlICs9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRbMF0sIHBvaW50WzFdLCBwb2ludHNbaV1bMF0sIHBvaW50c1tpXVsxXSk7XG4gICAgICAgICAgICByZXR1cm4gZGlzdGFuY2UgLyB0b3RhbExlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpc3RhbmNlICs9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRzW2ldWzBdLCBwb2ludHNbaV1bMV0sIHBvaW50c1tpICsgMV1bMF0sIHBvaW50c1tpICsgMV1bMV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdldCByYXRpbyBieSBwb2ludCcpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlRHVwbGljYXRlUG9pbnRzID0gKHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIGNvbnN0IG5ld0FycmF5OiBQb2ludFtdID0gW107XG4gICAgcG9pbnRzLmZvckVhY2gocG9pbnQgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IG5ld0FycmF5LmZpbmRJbmRleChvdGhlclBvaW50ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBQb2ludC5pc0VxdWFscyhwb2ludCwgb3RoZXJQb2ludCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSBuZXdBcnJheS5wdXNoKHBvaW50KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3QXJyYXk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKHBvaW50czogUG9pbnRbXSkge1xuICAgIGlmIChwb2ludHMubGVuZ3RoIDw9IDIpIHJldHVybiBwb2ludHM7XG4gICAgbGV0IHNpbXBsaWZpZWRQb2ludHM6IFBvaW50W10gPSBbcG9pbnRzWzBdXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBwb2ludHNbaSAtIDFdO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBuZXh0ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgaXNUdXJuID0gIShQb2ludC5pc092ZXJIb3Jpem9udGFsKFtwcmV2aW91cywgY3VycmVudCwgbmV4dF0pIHx8IFBvaW50LmlzT3ZlclZlcnRpY2FsKFtwcmV2aW91cywgY3VycmVudCwgbmV4dF0pKTtcbiAgICAgICAgaWYgKGlzVHVybikge1xuICAgICAgICAgICAgc2ltcGxpZmllZFBvaW50cy5wdXNoKGN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNpbXBsaWZpZWRQb2ludHMucHVzaChwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdKTtcbiAgICByZXR1cm4gc2ltcGxpZmllZFBvaW50cztcbn1cblxuZXhwb3J0IGNvbnN0IGdldEV4dGVuZFBvaW50ID0gKHNvdXJjZTogUG9pbnQsIHRhcmdldDogUG9pbnQsIGV4dGVuZERpc3RhbmNlOiBudW1iZXIpOiBQb2ludCA9PiB7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnNvdXJjZSwgLi4udGFyZ2V0KTtcbiAgICBjb25zdCBpc0VxdWFsID0gUG9pbnQuaXNFcXVhbHMoc291cmNlLCB0YXJnZXQpO1xuICAgIGNvbnN0IHNpbiA9IGlzRXF1YWwgPyAxIDogKHRhcmdldFsxXSAtIHNvdXJjZVsxXSkgLyBkaXN0YW5jZTtcbiAgICBjb25zdCBjb3MgPSBpc0VxdWFsID8gMSA6ICh0YXJnZXRbMF0gLSBzb3VyY2VbMF0pIC8gZGlzdGFuY2U7XG4gICAgcmV0dXJuIFtzb3VyY2VbMF0gKyBleHRlbmREaXN0YW5jZSAqIGNvcywgc291cmNlWzFdICsgZXh0ZW5kRGlzdGFuY2UgKiBzaW5dO1xufTtcbiJdfQ==
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9saW5lLXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUMsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWUsRUFBRSxLQUFhO0lBQzdELE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELE1BQU0sY0FBYyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFM0MsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDNUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQixNQUFNLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVuRSxJQUFJLG1CQUFtQixHQUFHLGFBQWEsSUFBSSxjQUFjLEVBQUU7WUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLEdBQUcsbUJBQW1CLENBQUM7WUFDL0QsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLEdBQUcsYUFBYSxDQUFDO1lBRXpELE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FB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QUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDcEUsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUM3RCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzdELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50LCBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgaXNQb2ludE9uU2VnbWVudCB9IGZyb20gJy4vbWF0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2ludE9uUG9seWxpbmUocG9pbnRzOiBQb2ludFtdLCByYXRpbzogbnVtYmVyKSB7XG4gICAgY29uc3QgdG90YWxMZW5ndGggPSBjYWxjdWxhdGVQb2x5bGluZUxlbmd0aChwb2ludHMpO1xuICAgIGNvbnN0IHRhcmdldERpc3RhbmNlID0gdG90YWxMZW5ndGggKiByYXRpbztcblxuICAgIGxldCBhY2N1bXVsYXRlZERpc3RhbmNlID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgW3gxLCB5MV0gPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IFt4MiwgeTJdID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3Qgc2VnbWVudExlbmd0aCA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoeDEsIHkxLCB4MiwgeTIpO1xuXG4gICAgICAgIGlmIChhY2N1bXVsYXRlZERpc3RhbmNlICsgc2VnbWVudExlbmd0aCA+PSB0YXJnZXREaXN0YW5jZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nRGlzdGFuY2UgPSB0YXJnZXREaXN0YW5jZSAtIGFjY3VtdWxhdGVkRGlzdGFuY2U7XG4gICAgICAgICAgICBjb25zdCByYXRpb0luU2VnbWVudCA9IHJlbWFpbmluZ0Rpc3RhbmNlIC8gc2VnbWVudExlbmd0aDtcblxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0WCA9IHgxICsgKHgyIC0geDEpICogcmF0aW9JblNlZ21lbnQ7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRZID0geTEgKyAoeTIgLSB5MSkgKiByYXRpb0luU2VnbWVudDtcbiAgICAgICAgICAgIHJldHVybiBbdGFyZ2V0WCwgdGFyZ2V0WV07XG4gICAgICAgIH1cblxuICAgICAgICBhY2N1bXVsYXRlZERpc3RhbmNlICs9IHNlZ21lbnRMZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVQb2x5bGluZUxlbmd0aChwb2ludHM6IFBvaW50W10pIHtcbiAgICBsZXQgbGVuZ3RoID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgW3gxLCB5MV0gPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IFt4MiwgeTJdID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgbGVuZ3RoICs9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoeDEsIHkxLCB4MiwgeTIpO1xuICAgIH1cbiAgICByZXR1cm4gbGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF0aW9CeVBvaW50KHBvaW50czogUG9pbnRbXSwgcG9pbnQ6IFBvaW50KSB7XG4gICAgY29uc3QgdG90YWxMZW5ndGggPSBjYWxjdWxhdGVQb2x5bGluZUxlbmd0aChwb2ludHMpO1xuICAgIGxldCBkaXN0YW5jZSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGlzT3ZlcmxhcCA9IGlzUG9pbnRPblNlZ21lbnQocG9pbnQsIHBvaW50c1tpXSwgcG9pbnRzW2kgKyAxXSk7XG4gICAgICAgIGlmIChpc092ZXJsYXApIHtcbiAgICAgICAgICAgIGRpc3RhbmNlICs9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRbMF0sIHBvaW50WzFdLCBwb2ludHNbaV1bMF0sIHBvaW50c1tpXVsxXSk7XG4gICAgICAgICAgICByZXR1cm4gZGlzdGFuY2UgLyB0b3RhbExlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpc3RhbmNlICs9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRzW2ldWzBdLCBwb2ludHNbaV1bMV0sIHBvaW50c1tpICsgMV1bMF0sIHBvaW50c1tpICsgMV1bMV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdldCByYXRpbyBieSBwb2ludCcpO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlRHVwbGljYXRlUG9pbnRzID0gKHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIGNvbnN0IG5ld0FycmF5OiBQb2ludFtdID0gW107XG4gICAgcG9pbnRzLmZvckVhY2gocG9pbnQgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IG5ld0FycmF5LmZpbmRJbmRleChvdGhlclBvaW50ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBQb2ludC5pc0VxdWFscyhwb2ludCwgb3RoZXJQb2ludCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSBuZXdBcnJheS5wdXNoKHBvaW50KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3QXJyYXk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKHBvaW50czogUG9pbnRbXSkge1xuICAgIGlmIChwb2ludHMubGVuZ3RoIDw9IDIpIHJldHVybiBwb2ludHM7XG4gICAgbGV0IHNpbXBsaWZpZWRQb2ludHM6IFBvaW50W10gPSBbcG9pbnRzWzBdXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBwb2ludHNbaSAtIDFdO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBuZXh0ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgaXNUdXJuID0gIShQb2ludC5pc092ZXJIb3Jpem9udGFsKFtwcmV2aW91cywgY3VycmVudCwgbmV4dF0pIHx8IFBvaW50LmlzT3ZlclZlcnRpY2FsKFtwcmV2aW91cywgY3VycmVudCwgbmV4dF0pKTtcbiAgICAgICAgaWYgKGlzVHVybikge1xuICAgICAgICAgICAgc2ltcGxpZmllZFBvaW50cy5wdXNoKGN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNpbXBsaWZpZWRQb2ludHMucHVzaChwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdKTtcbiAgICByZXR1cm4gc2ltcGxpZmllZFBvaW50cztcbn1cblxuZXhwb3J0IGNvbnN0IGdldEV4dGVuZFBvaW50ID0gKHNvdXJjZTogUG9pbnQsIHRhcmdldDogUG9pbnQsIGV4dGVuZERpc3RhbmNlOiBudW1iZXIpOiBQb2ludCA9PiB7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnNvdXJjZSwgLi4udGFyZ2V0KTtcbiAgICBjb25zdCBpc0VxdWFsID0gUG9pbnQuaXNFcXVhbHMoc291cmNlLCB0YXJnZXQpO1xuICAgIGNvbnN0IHNpbiA9IGlzRXF1YWwgPyAxIDogKHRhcmdldFsxXSAtIHNvdXJjZVsxXSkgLyBkaXN0YW5jZTtcbiAgICBjb25zdCBjb3MgPSBpc0VxdWFsID8gMSA6ICh0YXJnZXRbMF0gLSBzb3VyY2VbMF0pIC8gZGlzdGFuY2U7XG4gICAgcmV0dXJuIFtzb3VyY2VbMF0gKyBleHRlbmREaXN0YW5jZSAqIGNvcywgc291cmNlWzFdICsgZXh0ZW5kRGlzdGFuY2UgKiBzaW5dO1xufTtcbiJdfQ==
|
package/esm2022/utils/math.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { distanceBetweenPointAndPoint } from '@plait/core';
|
|
2
|
-
import {
|
|
2
|
+
import { getPointByUnitVectorAndDirectionComponent, getUnitVectorByPointAndPoint } from './vector';
|
|
3
3
|
export function isPointOnSegment(point, startPoint, endPoint) {
|
|
4
4
|
const distanceToStart = distanceBetweenPointAndPoint(point[0], point[1], startPoint[0], startPoint[1]);
|
|
5
5
|
const distanceToEnd = distanceBetweenPointAndPoint(point[0], point[1], endPoint[0], endPoint[1]);
|
|
@@ -12,13 +12,13 @@ export const getCrossingPointsBetweenPointAndSegment = (point, startPoint, endPo
|
|
|
12
12
|
const yRange = [Math.min(startPoint[1], endPoint[1]), Math.max(startPoint[1], endPoint[1])];
|
|
13
13
|
const unitVector = getUnitVectorByPointAndPoint(startPoint, endPoint);
|
|
14
14
|
if (point[0] >= xRange[0] && point[0] <= xRange[1]) {
|
|
15
|
-
const crossingPoint =
|
|
15
|
+
const crossingPoint = getPointByUnitVectorAndDirectionComponent(startPoint, unitVector, point[0] - startPoint[0], true);
|
|
16
16
|
result.push(crossingPoint);
|
|
17
17
|
}
|
|
18
18
|
else if (point[1] >= yRange[0] && point[1] <= yRange[1]) {
|
|
19
|
-
const crossingPoint =
|
|
19
|
+
const crossingPoint = getPointByUnitVectorAndDirectionComponent(startPoint, unitVector, point[1] - startPoint[1], false);
|
|
20
20
|
result.push(crossingPoint);
|
|
21
21
|
}
|
|
22
22
|
return result;
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvbWF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsNEJBQTRCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5HLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFZLEVBQUUsVUFBaUIsRUFBRSxRQUFlO0lBQzdFLE1BQU0sZUFBZSxHQUFHLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLE1BQU0sYUFBYSxHQUFHLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sYUFBYSxHQUFHLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzRSxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxLQUFZLEVBQUUsVUFBaUIsRUFBRSxRQUFlLEVBQUUsRUFBRTtJQUN4RyxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVGLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RixNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEQsTUFBTSxhQUFhLEdBQUcseUNBQXlDLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBVSxDQUFDO1FBQ2pJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDOUI7U0FBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN2RCxNQUFNLGFBQWEsR0FBRyx5Q0FBeUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFVLENBQUM7UUFDbEksTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUM5QjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50LCBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0UG9pbnRCeVVuaXRWZWN0b3JBbmREaXJlY3Rpb25Db21wb25lbnQsIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQgfSBmcm9tICcuL3ZlY3Rvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BvaW50T25TZWdtZW50KHBvaW50OiBQb2ludCwgc3RhcnRQb2ludDogUG9pbnQsIGVuZFBvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IGRpc3RhbmNlVG9TdGFydCA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRbMF0sIHBvaW50WzFdLCBzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdKTtcbiAgICBjb25zdCBkaXN0YW5jZVRvRW5kID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChwb2ludFswXSwgcG9pbnRbMV0sIGVuZFBvaW50WzBdLCBlbmRQb2ludFsxXSk7XG4gICAgY29uc3Qgc2VnbWVudExlbmd0aCA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXSwgZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdKTtcbiAgICByZXR1cm4gTWF0aC5hYnMoZGlzdGFuY2VUb1N0YXJ0ICsgZGlzdGFuY2VUb0VuZCAtIHNlZ21lbnRMZW5ndGgpIDwgMC4xO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q3Jvc3NpbmdQb2ludHNCZXR3ZWVuUG9pbnRBbmRTZWdtZW50ID0gKHBvaW50OiBQb2ludCwgc3RhcnRQb2ludDogUG9pbnQsIGVuZFBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIGNvbnN0IHhSYW5nZSA9IFtNYXRoLm1pbihzdGFydFBvaW50WzBdLCBlbmRQb2ludFswXSksIE1hdGgubWF4KHN0YXJ0UG9pbnRbMF0sIGVuZFBvaW50WzBdKV07XG4gICAgY29uc3QgeVJhbmdlID0gW01hdGgubWluKHN0YXJ0UG9pbnRbMV0sIGVuZFBvaW50WzFdKSwgTWF0aC5tYXgoc3RhcnRQb2ludFsxXSwgZW5kUG9pbnRbMV0pXTtcbiAgICBjb25zdCB1bml0VmVjdG9yID0gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChzdGFydFBvaW50LCBlbmRQb2ludCk7XG4gICAgaWYgKHBvaW50WzBdID49IHhSYW5nZVswXSAmJiBwb2ludFswXSA8PSB4UmFuZ2VbMV0pIHtcbiAgICAgICAgY29uc3QgY3Jvc3NpbmdQb2ludCA9IGdldFBvaW50QnlVbml0VmVjdG9yQW5kRGlyZWN0aW9uQ29tcG9uZW50KHN0YXJ0UG9pbnQsIHVuaXRWZWN0b3IsIHBvaW50WzBdIC0gc3RhcnRQb2ludFswXSwgdHJ1ZSkgYXMgUG9pbnQ7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNyb3NzaW5nUG9pbnQpO1xuICAgIH0gZWxzZSBpZiAocG9pbnRbMV0gPj0geVJhbmdlWzBdICYmIHBvaW50WzFdIDw9IHlSYW5nZVsxXSkge1xuICAgICAgICBjb25zdCBjcm9zc2luZ1BvaW50ID0gZ2V0UG9pbnRCeVVuaXRWZWN0b3JBbmREaXJlY3Rpb25Db21wb25lbnQoc3RhcnRQb2ludCwgdW5pdFZlY3RvciwgcG9pbnRbMV0gLSBzdGFydFBvaW50WzFdLCBmYWxzZSkgYXMgUG9pbnQ7XG4gICAgICAgIHJlc3VsdC5wdXNoKGNyb3NzaW5nUG9pbnQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { rotate } from '@plait/core';
|
|
2
|
+
export const rotatePoints = (points, centerPoint, angle) => {
|
|
3
|
+
return points.map(point => {
|
|
4
|
+
return rotate(point[0], point[1], centerPoint[0], centerPoint[1], angle);
|
|
5
|
+
});
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9yb3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFTLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFlLEVBQUUsV0FBa0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUMvRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBVSxDQUFDO0lBQ3RGLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIHJvdGF0ZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZVBvaW50cyA9IChwb2ludHM6IFBvaW50W10sIGNlbnRlclBvaW50OiBQb2ludCwgYW5nbGU6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBwb2ludHMubWFwKHBvaW50ID0+IHtcbiAgICAgICAgcmV0dXJuIHJvdGF0ZShwb2ludFswXSwgcG9pbnRbMV0sIGNlbnRlclBvaW50WzBdLCBjZW50ZXJQb2ludFsxXSwgYW5nbGUpIGFzIFBvaW50O1xuICAgIH0pO1xufTtcbiJdfQ==
|
package/esm2022/utils/vector.mjs
CHANGED
|
@@ -15,12 +15,12 @@ export function getPointByVector(point, vector, component) {
|
|
|
15
15
|
const distance = Math.hypot(vector[0], vector[1]);
|
|
16
16
|
return [point[0] + (vector[0] / distance) * component, point[1] + (vector[1] / distance) * component];
|
|
17
17
|
}
|
|
18
|
-
export function
|
|
18
|
+
export function getPointByUnitVectorAndDirectionComponent(point, unitVector, directionComponent, isHorizontal) {
|
|
19
19
|
if (isHorizontal) {
|
|
20
|
-
return [point[0] +
|
|
20
|
+
return [point[0] + directionComponent, point[1] + (directionComponent / unitVector[0]) * unitVector[1]];
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
|
-
return [point[0] + (
|
|
23
|
+
return [point[0] + (directionComponent / unitVector[1]) * unitVector[0], point[1] + directionComponent];
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
export function rotateVectorAnti90(vector) {
|
|
@@ -30,4 +30,4 @@ export function rotateVectorAnti90(vector) {
|
|
|
30
30
|
const rotatedY = -x;
|
|
31
31
|
return [rotatedX, rotatedY];
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy92ZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLDRCQUE0QixDQUFDLE1BQWEsRUFBRSxNQUFhO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzlELG9EQUFvRDtJQUNwRCxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0tBQ2pGO0lBQ0QsdUNBQXVDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUVoQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBWSxFQUFFLE1BQWMsRUFBRSxTQUFpQjtJQUM1RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQUVELE1BQU0sVUFBVSx5Q0FBeUMsQ0FDckQsS0FBWSxFQUNaLFVBQWtCLEVBQ2xCLGtCQUEwQixFQUMxQixZQUFxQjtJQUVyQixJQUFJLFlBQVksRUFBRTtRQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFVLENBQUM7S0FDcEg7U0FBTTtRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFVLENBQUM7S0FDcEg7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWM7SUFDN0MsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDbkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIFZlY3RvciB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQocG9pbnQxOiBQb2ludCwgcG9pbnQyOiBQb2ludCk6IFBvaW50IHtcbiAgICBjb25zdCBkZWx0YVggPSBwb2ludDJbMF0gLSBwb2ludDFbMF07XG4gICAgY29uc3QgZGVsdGFZID0gcG9pbnQyWzFdIC0gcG9pbnQxWzFdO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRlbHRhWCAqIGRlbHRhWCArIGRlbHRhWSAqIGRlbHRhWSk7XG4gICAgLy8gQXZvaWQgZGl2aXNpb24gYnkgemVybyBpZiB0aGUgcG9pbnRzIGFyZSB0aGUgc2FtZVxuICAgIGlmIChkaXN0YW5jZSA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvaW50cyBtdXN0IG5vdCBiZSB0aGUgc2FtZSBmb3IgYSB1bml0IHZlY3RvciBjYWxjdWxhdGlvbi4nKTtcbiAgICB9XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSB1bml0IHZlY3RvciBjb21wb25lbnRzXG4gICAgY29uc3QgdW5pdFggPSBkZWx0YVggLyBkaXN0YW5jZTtcbiAgICBjb25zdCB1bml0WSA9IGRlbHRhWSAvIGRpc3RhbmNlO1xuXG4gICAgcmV0dXJuIFt1bml0WCwgdW5pdFldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9pbnRCeVZlY3Rvcihwb2ludDogUG9pbnQsIHZlY3RvcjogVmVjdG9yLCBjb21wb25lbnQ6IG51bWJlcik6IFBvaW50IHtcbiAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguaHlwb3QodmVjdG9yWzBdLCB2ZWN0b3JbMV0pO1xuICAgIHJldHVybiBbcG9pbnRbMF0gKyAodmVjdG9yWzBdIC8gZGlzdGFuY2UpICogY29tcG9uZW50LCBwb2ludFsxXSArICh2ZWN0b3JbMV0gLyBkaXN0YW5jZSkgKiBjb21wb25lbnRdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9pbnRCeVVuaXRWZWN0b3JBbmREaXJlY3Rpb25Db21wb25lbnQoXG4gICAgcG9pbnQ6IFBvaW50LFxuICAgIHVuaXRWZWN0b3I6IFZlY3RvcixcbiAgICBkaXJlY3Rpb25Db21wb25lbnQ6IG51bWJlcixcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW5cbikge1xuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpcmVjdGlvbkNvbXBvbmVudCwgcG9pbnRbMV0gKyAoZGlyZWN0aW9uQ29tcG9uZW50IC8gdW5pdFZlY3RvclswXSkgKiB1bml0VmVjdG9yWzFdXSBhcyBQb2ludDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW3BvaW50WzBdICsgKGRpcmVjdGlvbkNvbXBvbmVudCAvIHVuaXRWZWN0b3JbMV0pICogdW5pdFZlY3RvclswXSwgcG9pbnRbMV0gKyBkaXJlY3Rpb25Db21wb25lbnRdIGFzIFBvaW50O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVZlY3RvckFudGk5MCh2ZWN0b3I6IFZlY3Rvcik6IFZlY3RvciB7XG4gICAgY29uc3QgeCA9IHZlY3RvclswXTtcbiAgICBjb25zdCB5ID0gdmVjdG9yWzFdO1xuICAgIGNvbnN0IHJvdGF0ZWRYID0geTtcbiAgICBjb25zdCByb3RhdGVkWSA9IC14O1xuICAgIHJldHVybiBbcm90YXRlZFgsIHJvdGF0ZWRZXTtcbn1cbiJdfQ==
|