@plait/graph-viz 0.62.0-next.10
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/README.md +4 -0
- package/constants/default.d.ts +2 -0
- package/esm2022/constants/default.mjs +5 -0
- package/esm2022/force-atlas/constants.mjs +34 -0
- package/esm2022/force-atlas/core/node-icon-base.component.mjs +15 -0
- package/esm2022/force-atlas/edge.flavour.mjs +25 -0
- package/esm2022/force-atlas/force-atlas.flavour.mjs +53 -0
- package/esm2022/force-atlas/generators/edge.generator.mjs +30 -0
- package/esm2022/force-atlas/generators/node.generator.mjs +44 -0
- package/esm2022/force-atlas/node.flavour.mjs +55 -0
- package/esm2022/force-atlas/types.mjs +7 -0
- package/esm2022/force-atlas/utils/draw.mjs +73 -0
- package/esm2022/force-atlas/utils/edge.mjs +72 -0
- package/esm2022/force-atlas/utils/node.mjs +55 -0
- package/esm2022/force-atlas/with-force-atlas.mjs +71 -0
- package/esm2022/force-atlas/with-node-icon.mjs +8 -0
- package/esm2022/interfaces/element.mjs +12 -0
- package/esm2022/interfaces/index.mjs +2 -0
- package/esm2022/perfect-arrows/get-arrow.mjs +91 -0
- package/esm2022/perfect-arrows/utils.mjs +111 -0
- package/esm2022/plait-graph-viz.mjs +5 -0
- package/esm2022/public-api.mjs +10 -0
- package/fesm2022/plait-graph-viz.mjs +724 -0
- package/fesm2022/plait-graph-viz.mjs.map +1 -0
- package/force-atlas/constants.d.ts +25 -0
- package/force-atlas/core/node-icon-base.component.d.ts +10 -0
- package/force-atlas/edge.flavour.d.ts +15 -0
- package/force-atlas/force-atlas.flavour.d.ts +13 -0
- package/force-atlas/generators/edge.generator.d.ts +15 -0
- package/force-atlas/generators/node.generator.d.ts +15 -0
- package/force-atlas/node.flavour.d.ts +15 -0
- package/force-atlas/types.d.ts +33 -0
- package/force-atlas/utils/draw.d.ts +13 -0
- package/force-atlas/utils/edge.d.ts +14 -0
- package/force-atlas/utils/node.d.ts +15 -0
- package/force-atlas/with-force-atlas.d.ts +2 -0
- package/force-atlas/with-node-icon.d.ts +13 -0
- package/index.d.ts +5 -0
- package/interfaces/element.d.ts +20 -0
- package/interfaces/index.d.ts +1 -0
- package/package.json +34 -0
- package/perfect-arrows/get-arrow.d.ts +42 -0
- package/perfect-arrows/utils.d.ts +64 -0
- package/public-api.d.ts +6 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { RectangleClient, setSelectionOptions } from '@plait/core';
|
|
2
|
+
import { ForceAtlasFlavour } from './force-atlas.flavour';
|
|
3
|
+
import { ForceAtlasNodeFlavour } from './node.flavour';
|
|
4
|
+
import { ForceAtlasEdgeFlavour } from './edge.flavour';
|
|
5
|
+
import { ForceAtlasElement } from '../interfaces';
|
|
6
|
+
import { isHitNode } from './utils/node';
|
|
7
|
+
import { withNodeIcon } from './with-node-icon';
|
|
8
|
+
export const withForceAtlas = (board) => {
|
|
9
|
+
const { drawElement, getRectangle, isRectangleHit, isHit, isInsidePoint, isMovable, isAlign, getRelatedFragment } = board;
|
|
10
|
+
board.drawElement = (context) => {
|
|
11
|
+
if (ForceAtlasElement.isForceAtlas(context.element)) {
|
|
12
|
+
return ForceAtlasFlavour;
|
|
13
|
+
}
|
|
14
|
+
else if (ForceAtlasElement.isForceAtlasNodeElement(context.element)) {
|
|
15
|
+
return ForceAtlasNodeFlavour;
|
|
16
|
+
}
|
|
17
|
+
else if (ForceAtlasElement.isForceAtlasEdgeElement(context.element)) {
|
|
18
|
+
return ForceAtlasEdgeFlavour;
|
|
19
|
+
}
|
|
20
|
+
return drawElement(context);
|
|
21
|
+
};
|
|
22
|
+
board.getRectangle = (element) => {
|
|
23
|
+
if (element.type === 'force-atlas') {
|
|
24
|
+
return {
|
|
25
|
+
width: 0,
|
|
26
|
+
height: 0,
|
|
27
|
+
x: 0,
|
|
28
|
+
y: 0
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
else if (ForceAtlasElement.isForceAtlasNodeElement(element)) {
|
|
32
|
+
return RectangleClient.getRectangleByPoints(element.points || []);
|
|
33
|
+
}
|
|
34
|
+
else if (ForceAtlasElement.isForceAtlasEdgeElement(element)) {
|
|
35
|
+
return {
|
|
36
|
+
width: 0,
|
|
37
|
+
height: 0,
|
|
38
|
+
x: 0,
|
|
39
|
+
y: 0
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return getRectangle(element);
|
|
43
|
+
};
|
|
44
|
+
board.isRectangleHit = (element, selection) => {
|
|
45
|
+
return isRectangleHit(element, selection);
|
|
46
|
+
};
|
|
47
|
+
board.isRectangleHit = (element, range) => {
|
|
48
|
+
if (ForceAtlasElement.isForceAtlasNodeElement(element)) {
|
|
49
|
+
return isHitNode(element, [range.anchor, range.focus]);
|
|
50
|
+
}
|
|
51
|
+
return isRectangleHit(element, range);
|
|
52
|
+
};
|
|
53
|
+
board.isHit = (element, point) => {
|
|
54
|
+
if (ForceAtlasElement.isForceAtlasNodeElement(element)) {
|
|
55
|
+
return isHitNode(element, [point, point]);
|
|
56
|
+
}
|
|
57
|
+
return isHit(element, point);
|
|
58
|
+
};
|
|
59
|
+
board.isInsidePoint = (element, point) => {
|
|
60
|
+
return isInsidePoint(element, point);
|
|
61
|
+
};
|
|
62
|
+
board.isMovable = element => {
|
|
63
|
+
if (ForceAtlasElement.isForceAtlasNodeElement(element)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
return isMovable(element);
|
|
67
|
+
};
|
|
68
|
+
setSelectionOptions(board, { isMultipleSelection: false });
|
|
69
|
+
return withNodeIcon(board);
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1mb3JjZS1hdGxhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyYXBoLXZpei9zcmMvZm9yY2UtYXRsYXMvd2l0aC1mb3JjZS1hdGxhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBT0gsZUFBZSxFQUdmLG1CQUFtQixFQUN0QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFMUgsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtRQUN2RCxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLGlCQUFpQixDQUFDO1FBQzdCLENBQUM7YUFBTSxJQUFJLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE9BQU8scUJBQXFCLENBQUM7UUFDakMsQ0FBQzthQUFNLElBQUksaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDcEUsT0FBTyxxQkFBcUIsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLFlBQVksR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtRQUMzQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDakMsT0FBTztnQkFDSCxLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsQ0FBQztnQkFDVCxDQUFDLEVBQUUsQ0FBQztnQkFDSixDQUFDLEVBQUUsQ0FBQzthQUNQLENBQUM7UUFDTixDQUFDO2FBQU0sSUFBSSxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVELE9BQU8sZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEUsQ0FBQzthQUFNLElBQUksaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxPQUFPO2dCQUNILEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2dCQUNULENBQUMsRUFBRSxDQUFDO2dCQUNKLENBQUMsRUFBRSxDQUFDO2FBQ1AsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsT0FBcUIsRUFBRSxTQUFvQixFQUFFLEVBQUU7UUFDbkUsT0FBTyxjQUFjLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQztJQUNGLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdEMsSUFBSSxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JELE9BQU8sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzdCLElBQUksaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEtBQVksRUFBRSxFQUFFO1FBQzFELE9BQU8sYUFBYSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ3hCLElBQUksaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0lBRUYsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgUGxhaXRQbHVnaW5LZXksXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNlbGVjdGlvbixcbiAgICBXaXRoU2VsZWN0aW9uUGx1Z2luT3B0aW9ucyxcbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEZvcmNlQXRsYXNGbGF2b3VyIH0gZnJvbSAnLi9mb3JjZS1hdGxhcy5mbGF2b3VyJztcbmltcG9ydCB7IEZvcmNlQXRsYXNOb2RlRmxhdm91ciB9IGZyb20gJy4vbm9kZS5mbGF2b3VyJztcbmltcG9ydCB7IEZvcmNlQXRsYXNFZGdlRmxhdm91ciB9IGZyb20gJy4vZWRnZS5mbGF2b3VyJztcbmltcG9ydCB7IEZvcmNlQXRsYXNFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc0hpdE5vZGUgfSBmcm9tICcuL3V0aWxzL25vZGUnO1xuaW1wb3J0IHsgd2l0aE5vZGVJY29uIH0gZnJvbSAnLi93aXRoLW5vZGUtaWNvbic7XG5cbmV4cG9ydCBjb25zdCB3aXRoRm9yY2VBdGxhcyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgZHJhd0VsZW1lbnQsIGdldFJlY3RhbmdsZSwgaXNSZWN0YW5nbGVIaXQsIGlzSGl0LCBpc0luc2lkZVBvaW50LCBpc01vdmFibGUsIGlzQWxpZ24sIGdldFJlbGF0ZWRGcmFnbWVudCB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kcmF3RWxlbWVudCA9IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChGb3JjZUF0bGFzRWxlbWVudC5pc0ZvcmNlQXRsYXMoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEZvcmNlQXRsYXNGbGF2b3VyO1xuICAgICAgICB9IGVsc2UgaWYgKEZvcmNlQXRsYXNFbGVtZW50LmlzRm9yY2VBdGxhc05vZGVFbGVtZW50KGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBGb3JjZUF0bGFzTm9kZUZsYXZvdXI7XG4gICAgICAgIH0gZWxzZSBpZiAoRm9yY2VBdGxhc0VsZW1lbnQuaXNGb3JjZUF0bGFzRWRnZUVsZW1lbnQoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEZvcmNlQXRsYXNFZGdlRmxhdm91cjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd0VsZW1lbnQoY29udGV4dCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdldFJlY3RhbmdsZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2ZvcmNlLWF0bGFzJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKEZvcmNlQXRsYXNFbGVtZW50LmlzRm9yY2VBdGxhc05vZGVFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzIHx8IFtdKTtcbiAgICAgICAgfSBlbHNlIGlmIChGb3JjZUF0bGFzRWxlbWVudC5pc0ZvcmNlQXRsYXNFZGdlRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzUmVjdGFuZ2xlSGl0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIGlzUmVjdGFuZ2xlSGl0KGVsZW1lbnQsIHNlbGVjdGlvbik7XG4gICAgfTtcbiAgICBib2FyZC5pc1JlY3RhbmdsZUhpdCA9IChlbGVtZW50LCByYW5nZSkgPT4ge1xuICAgICAgICBpZiAoRm9yY2VBdGxhc0VsZW1lbnQuaXNGb3JjZUF0bGFzTm9kZUVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0hpdE5vZGUoZWxlbWVudCwgW3JhbmdlLmFuY2hvciwgcmFuZ2UuZm9jdXNdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXQoZWxlbWVudCwgcmFuZ2UpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc0hpdCA9IChlbGVtZW50LCBwb2ludCkgPT4ge1xuICAgICAgICBpZiAoRm9yY2VBdGxhc0VsZW1lbnQuaXNGb3JjZUF0bGFzTm9kZUVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0hpdE5vZGUoZWxlbWVudCwgW3BvaW50LCBwb2ludF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdChlbGVtZW50LCBwb2ludCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzSW5zaWRlUG9pbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGlzSW5zaWRlUG9pbnQoZWxlbWVudCwgcG9pbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc01vdmFibGUgPSBlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKEZvcmNlQXRsYXNFbGVtZW50LmlzRm9yY2VBdGxhc05vZGVFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNNb3ZhYmxlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkLCB7IGlzTXVsdGlwbGVTZWxlY3Rpb246IGZhbHNlIH0pO1xuXG4gICAgcmV0dXJuIHdpdGhOb2RlSWNvbihib2FyZCk7XG59O1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const withNodeIcon = (board) => {
|
|
2
|
+
const newBoard = board;
|
|
3
|
+
newBoard.renderNodeIcon = (container, props) => {
|
|
4
|
+
throw new Error('No implementation for renderLabeIcon method.');
|
|
5
|
+
};
|
|
6
|
+
return newBoard;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ub2RlLWljb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmFwaC12aXovc3JjL2ZvcmNlLWF0bGFzL3dpdGgtbm9kZS1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFvQyxLQUFRLEVBQUUsRUFBRTtJQUN4RSxNQUFNLFFBQVEsR0FBRyxLQUFvQyxDQUFDO0lBRXRELFFBQVEsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxTQUFxQyxFQUFFLEtBQW9CLEVBQUUsRUFBRTtRQUN0RixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEZvcmNlQXRsYXNOb2RlRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBSZW5kZXJDb21wb25lbnRSZWYgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IE5vZGVJY29uSXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcmNlQXRsYXNOb2RlSWNvbkJvYXJkIHtcbiAgICByZW5kZXJOb2RlSWNvbjogKGNvbnRhaW5lcjogRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQsIHByb3BzOiBOb2RlSWNvblByb3BzKSA9PiBSZW5kZXJDb21wb25lbnRSZWY8Tm9kZUljb25Qcm9wcz47XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoTm9kZUljb24gPSA8VCBleHRlbmRzIFBsYWl0Qm9hcmQgPSBQbGFpdEJvYXJkPihib2FyZDogVCkgPT4ge1xuICAgIGNvbnN0IG5ld0JvYXJkID0gYm9hcmQgYXMgVCAmIEZvcmNlQXRsYXNOb2RlSWNvbkJvYXJkO1xuXG4gICAgbmV3Qm9hcmQucmVuZGVyTm9kZUljb24gPSAoY29udGFpbmVyOiBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCwgcHJvcHM6IE5vZGVJY29uUHJvcHMpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBpbXBsZW1lbnRhdGlvbiBmb3IgcmVuZGVyTGFiZUljb24gbWV0aG9kLicpO1xuICAgIH07XG4gICAgcmV0dXJuIG5ld0JvYXJkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBOb2RlSWNvblByb3BzIHtcbiAgICBib2FyZDogUGxhaXRCb2FyZDtcbiAgICBpY29uSXRlbTogTm9kZUljb25JdGVtO1xuICAgIGVsZW1lbnQ6IEZvcmNlQXRsYXNOb2RlRWxlbWVudDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const ForceAtlasElement = {
|
|
2
|
+
isForceAtlas: (value) => {
|
|
3
|
+
return value?.type === 'force-atlas';
|
|
4
|
+
},
|
|
5
|
+
isForceAtlasNodeElement: (value) => {
|
|
6
|
+
return value && value.label && value.icon;
|
|
7
|
+
},
|
|
8
|
+
isForceAtlasEdgeElement: (value) => {
|
|
9
|
+
return value && value.source && value.target;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyYXBoLXZpei9zcmMvaW50ZXJmYWNlcy9lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUM3QixZQUFZLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtRQUN6QixPQUFPLEtBQUssRUFBRSxJQUFJLEtBQUssYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFDRCx1QkFBdUIsRUFBRSxDQUFDLEtBQVUsRUFBa0MsRUFBRTtRQUNwRSxPQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDOUMsQ0FBQztJQUNELHVCQUF1QixFQUFFLENBQUMsS0FBVSxFQUFrQyxFQUFFO1FBQ3BFLE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE5vZGVJY29uSXRlbSB9IGZyb20gJy4uL2ZvcmNlLWF0bGFzL3R5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgRm9yY2VBdGxhc05vZGVFbGVtZW50IGV4dGVuZHMgUGxhaXRFbGVtZW50IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGljb246IHN0cmluZyB8IE5vZGVJY29uSXRlbTtcbiAgICBzaXplPzogbnVtYmVyO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JjZUF0bGFzRWRnZUVsZW1lbnQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQge1xuICAgIHNvdXJjZTogc3RyaW5nO1xuICAgIHRhcmdldDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcmNlQXRsYXNFbGVtZW50IGV4dGVuZHMgUGxhaXRFbGVtZW50IHtcbiAgICBjaGlsZHJlbjogKEZvcmNlQXRsYXNOb2RlRWxlbWVudCB8IEZvcmNlQXRsYXNFZGdlRWxlbWVudClbXTtcbn1cblxuZXhwb3J0IGNvbnN0IEZvcmNlQXRsYXNFbGVtZW50ID0ge1xuICAgIGlzRm9yY2VBdGxhczogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlPy50eXBlID09PSAnZm9yY2UtYXRsYXMnO1xuICAgIH0sXG4gICAgaXNGb3JjZUF0bGFzTm9kZUVsZW1lbnQ6ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRm9yY2VBdGxhc05vZGVFbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmxhYmVsICYmIHZhbHVlLmljb247XG4gICAgfSxcbiAgICBpc0ZvcmNlQXRsYXNFZGdlRWxlbWVudDogKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBGb3JjZUF0bGFzRWRnZUVsZW1lbnQgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuc291cmNlICYmIHZhbHVlLnRhcmdldDtcbiAgICB9XG59O1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './element';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmFwaC12aXovc3JjL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VsZW1lbnQnO1xuIl19
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Credits to perfect-arrows
|
|
2
|
+
// https://github.com/steveruizok/perfect-arrows/blob/master/src/lib/getArrow.ts
|
|
3
|
+
import { getAngle, getDistance, getAngliness, projectPoint, getPointBetween, getSector, rotatePoint, modulate } from './utils';
|
|
4
|
+
/**
|
|
5
|
+
* getArrow
|
|
6
|
+
* Get the points for a linking line between two points.
|
|
7
|
+
* @description Draw an arrow between two points.
|
|
8
|
+
* @param x0 The x position of the "from" point.
|
|
9
|
+
* @param y0 The y position of the "from" point.
|
|
10
|
+
* @param x1 The x position of the "to" point.
|
|
11
|
+
* @param y1 The y position of the "to" point.
|
|
12
|
+
* @param options Additional options for computing the line.
|
|
13
|
+
* @returns [sx, sy, cx, cy, e1, e2, ae, as, ac]
|
|
14
|
+
* @example
|
|
15
|
+
* const arrow = getArrow(0, 0, 100, 200, {
|
|
16
|
+
bow: 0
|
|
17
|
+
stretch: .5
|
|
18
|
+
stretchMin: 0
|
|
19
|
+
stretchMax: 420
|
|
20
|
+
padStart: 0
|
|
21
|
+
padEnd: 0
|
|
22
|
+
flip: false
|
|
23
|
+
straights: true
|
|
24
|
+
* })
|
|
25
|
+
*
|
|
26
|
+
* const [
|
|
27
|
+
* startX, startY,
|
|
28
|
+
* controlX, controlY,
|
|
29
|
+
* endX, endY,
|
|
30
|
+
* endAngle,
|
|
31
|
+
* startAngle,
|
|
32
|
+
* controlAngle
|
|
33
|
+
* ] = arrow
|
|
34
|
+
*/
|
|
35
|
+
export default function getArrow(x0, y0, x1, y1, options = {}) {
|
|
36
|
+
const { bow = 0, stretch = 0.5, stretchMin = 0, stretchMax = 420, padStart = 0, padEnd = 0, flip = false, straights = true } = options;
|
|
37
|
+
const angle = getAngle(x0, y0, x1, y1);
|
|
38
|
+
const dist = getDistance(x0, y0, x1, y1);
|
|
39
|
+
const angliness = getAngliness(x0, y0, x1, y1);
|
|
40
|
+
// Step 0 ⤜⤏ Should the arrow be straight?
|
|
41
|
+
if (dist < (padStart + padEnd) * 2 || // Too short
|
|
42
|
+
(bow === 0 && stretch === 0) || // No bow, no stretch
|
|
43
|
+
(straights && [0, 1, Infinity].includes(angliness)) // 45 degree angle
|
|
44
|
+
) {
|
|
45
|
+
// ⤜⤏ Arrow is straight! Just pad start and end points.
|
|
46
|
+
// Padding distances
|
|
47
|
+
const ps = Math.max(0, Math.min(dist - padStart, padStart));
|
|
48
|
+
const pe = Math.max(0, Math.min(dist - ps, padEnd));
|
|
49
|
+
// Move start point toward end point
|
|
50
|
+
let [px0, py0] = projectPoint(x0, y0, angle, ps);
|
|
51
|
+
// Move end point toward start point
|
|
52
|
+
let [px1, py1] = projectPoint(x1, y1, angle + Math.PI, pe);
|
|
53
|
+
// Get midpoint between new points
|
|
54
|
+
const [mx, my] = getPointBetween(px0, py0, px1, py1, 0.5);
|
|
55
|
+
return [px0, py0, mx, my, px1, py1, angle, angle, angle];
|
|
56
|
+
}
|
|
57
|
+
// ⤜⤏ Arrow is an arc!
|
|
58
|
+
// Is the arc clockwise or counterclockwise?
|
|
59
|
+
let rot = (getSector(angle) % 2 === 0 ? 1 : -1) * (flip ? -1 : 1);
|
|
60
|
+
// Calculate how much the line should "bow" away from center
|
|
61
|
+
const arc = bow + modulate(dist, [stretchMin, stretchMax], [1, 0], true) * stretch;
|
|
62
|
+
// Step 1 ⤜⤏ Find padded points.
|
|
63
|
+
// Get midpoint.
|
|
64
|
+
const [mx, my] = getPointBetween(x0, y0, x1, y1, 0.5);
|
|
65
|
+
// Get control point.
|
|
66
|
+
let [cx, cy] = getPointBetween(x0, y0, x1, y1, 0.5 - arc);
|
|
67
|
+
// Rotate control point (clockwise or counterclockwise).
|
|
68
|
+
[cx, cy] = rotatePoint(cx, cy, mx, my, (Math.PI / 2) * rot);
|
|
69
|
+
// Get padded start point.
|
|
70
|
+
const a0 = getAngle(x0, y0, cx, cy);
|
|
71
|
+
const [px0, py0] = projectPoint(x0, y0, a0, padStart);
|
|
72
|
+
// Get padded end point.
|
|
73
|
+
const a1 = getAngle(x1, y1, cx, cy);
|
|
74
|
+
const [px1, py1] = projectPoint(x1, y1, a1, padEnd);
|
|
75
|
+
// Step 2 ⤜⤏ Find start and end angles.
|
|
76
|
+
// Start angle
|
|
77
|
+
const as = getAngle(cx, cy, x0, y0);
|
|
78
|
+
// End angle
|
|
79
|
+
const ae = getAngle(cx, cy, x1, y1);
|
|
80
|
+
// Step 3 ⤜⤏ Find control point for padded points.
|
|
81
|
+
// Get midpoint between padded start / end points.
|
|
82
|
+
const [mx1, my1] = getPointBetween(px0, py0, px1, py1, 0.5);
|
|
83
|
+
// Get control point for padded start / end points.
|
|
84
|
+
let [cx1, cy1] = getPointBetween(px0, py0, px1, py1, 0.5 - arc);
|
|
85
|
+
// Rotate control point (clockwise or counterclockwise).
|
|
86
|
+
[cx1, cy1] = rotatePoint(cx1, cy1, mx1, my1, (Math.PI / 2) * rot);
|
|
87
|
+
// Finally, average the two control points.
|
|
88
|
+
let [cx2, cy2] = getPointBetween(cx, cy, cx1, cy1, 0.5);
|
|
89
|
+
return [px0, py0, cx2, cy2, px1, py1, ae, as, angle];
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFycm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JhcGgtdml6L3NyYy9wZXJmZWN0LWFycm93cy9nZXQtYXJyb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLGdGQUFnRjtBQUVoRixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWEvSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBOEJLO0FBQ0wsTUFBTSxDQUFDLE9BQU8sVUFBVSxRQUFRLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLFVBQXdCLEVBQWtCO0lBQ3ZILE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsR0FBRyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsS0FBSyxFQUFFLFNBQVMsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFdkksTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFL0MsMENBQTBDO0lBRTFDLElBQ0ksSUFBSSxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENB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Q0FBQyxHQUFHLGVBQWUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFeEQsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWRpdHMgdG8gcGVyZmVjdC1hcnJvd3Ncbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGV2ZXJ1aXpvay9wZXJmZWN0LWFycm93cy9ibG9iL21hc3Rlci9zcmMvbGliL2dldEFycm93LnRzXG5cbmltcG9ydCB7IGdldEFuZ2xlLCBnZXREaXN0YW5jZSwgZ2V0QW5nbGluZXNzLCBwcm9qZWN0UG9pbnQsIGdldFBvaW50QmV0d2VlbiwgZ2V0U2VjdG9yLCByb3RhdGVQb2ludCwgbW9kdWxhdGUgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgQXJyb3dPcHRpb25zID0ge1xuICAgIGJvdz86IG51bWJlcjtcbiAgICBzdHJldGNoTWluPzogbnVtYmVyO1xuICAgIHN0cmV0Y2hNYXg/OiBudW1iZXI7XG4gICAgc3RyZXRjaD86IG51bWJlcjtcbiAgICBwYWRTdGFydD86IG51bWJlcjtcbiAgICBwYWRFbmQ/OiBudW1iZXI7XG4gICAgZmxpcD86IGJvb2xlYW47XG4gICAgc3RyYWlnaHRzPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICAgKiBnZXRBcnJvd1xuICAgKiBHZXQgdGhlIHBvaW50cyBmb3IgYSBsaW5raW5nIGxpbmUgYmV0d2VlbiB0d28gcG9pbnRzLlxuICAgKiBAZGVzY3JpcHRpb24gRHJhdyBhbiBhcnJvdyBiZXR3ZWVuIHR3byBwb2ludHMuXG4gICAqIEBwYXJhbSB4MCBUaGUgeCBwb3NpdGlvbiBvZiB0aGUgXCJmcm9tXCIgcG9pbnQuXG4gICAqIEBwYXJhbSB5MCBUaGUgeSBwb3NpdGlvbiBvZiB0aGUgXCJmcm9tXCIgcG9pbnQuXG4gICAqIEBwYXJhbSB4MSBUaGUgeCBwb3NpdGlvbiBvZiB0aGUgXCJ0b1wiIHBvaW50LlxuICAgKiBAcGFyYW0geTEgVGhlIHkgcG9zaXRpb24gb2YgdGhlIFwidG9cIiBwb2ludC5cbiAgICogQHBhcmFtIG9wdGlvbnMgQWRkaXRpb25hbCBvcHRpb25zIGZvciBjb21wdXRpbmcgdGhlIGxpbmUuXG4gICAqIEByZXR1cm5zIFtzeCwgc3ksIGN4LCBjeSwgZTEsIGUyLCBhZSwgYXMsIGFjXVxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBhcnJvdyA9IGdldEFycm93KDAsIDAsIDEwMCwgMjAwLCB7XG4gICAgICBib3c6IDBcbiAgICAgIHN0cmV0Y2g6IC41XG4gICAgICBzdHJldGNoTWluOiAwXG4gICAgICBzdHJldGNoTWF4OiA0MjBcbiAgICAgIHBhZFN0YXJ0OiAwXG4gICAgICBwYWRFbmQ6IDBcbiAgICAgIGZsaXA6IGZhbHNlXG4gICAgICBzdHJhaWdodHM6IHRydWVcbiAgICogfSlcbiAgICogXG4gICAqIGNvbnN0IFtcbiAgICogIHN0YXJ0WCwgc3RhcnRZLCBcbiAgICogIGNvbnRyb2xYLCBjb250cm9sWSwgXG4gICAqICBlbmRYLCBlbmRZLCBcbiAgICogIGVuZEFuZ2xlLCBcbiAgICogIHN0YXJ0QW5nbGUsXG4gICAqICBjb250cm9sQW5nbGVcbiAgICogIF0gPSBhcnJvd1xuICAgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFycm93KHgwOiBudW1iZXIsIHkwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIG9wdGlvbnM6IEFycm93T3B0aW9ucyA9IHt9IGFzIEFycm93T3B0aW9ucyk6IG51bWJlcltdIHtcbiAgICBjb25zdCB7IGJvdyA9IDAsIHN0cmV0Y2ggPSAwLjUsIHN0cmV0Y2hNaW4gPSAwLCBzdHJldGNoTWF4ID0gNDIwLCBwYWRTdGFydCA9IDAsIHBhZEVuZCA9IDAsIGZsaXAgPSBmYWxzZSwgc3RyYWlnaHRzID0gdHJ1ZSB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGFuZ2xlID0gZ2V0QW5nbGUoeDAsIHkwLCB4MSwgeTEpO1xuICAgIGNvbnN0IGRpc3QgPSBnZXREaXN0YW5jZSh4MCwgeTAsIHgxLCB5MSk7XG4gICAgY29uc3QgYW5nbGluZXNzID0gZ2V0QW5nbGluZXNzKHgwLCB5MCwgeDEsIHkxKTtcblxuICAgIC8vIFN0ZXAgMCDipJzipI8gU2hvdWxkIHRoZSBhcnJvdyBiZSBzdHJhaWdodD9cblxuICAgIGlmIChcbiAgICAgICAgZGlzdCA8IChwYWRTdGFydCArIHBhZEVuZCkgKiAyIHx8IC8vIFRvbyBzaG9ydFxuICAgICAgICAoYm93ID09PSAwICYmIHN0cmV0Y2ggPT09IDApIHx8IC8vIE5vIGJvdywgbm8gc3RyZXRjaFxuICAgICAgICAoc3RyYWlnaHRzICYmIFswLCAxLCBJbmZpbml0eV0uaW5jbHVkZXMoYW5nbGluZXNzKSkgLy8gNDUgZGVncmVlIGFuZ2xlXG4gICAgKSB7XG4gICAgICAgIC8vIOKknOKkjyBBcnJvdyBpcyBzdHJhaWdodCEgSnVzdCBwYWQgc3RhcnQgYW5kIGVuZCBwb2ludHMuXG5cbiAgICAgICAgLy8gUGFkZGluZyBkaXN0YW5jZXNcbiAgICAgICAgY29uc3QgcHMgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihkaXN0IC0gcGFkU3RhcnQsIHBhZFN0YXJ0KSk7XG4gICAgICAgIGNvbnN0IHBlID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZGlzdCAtIHBzLCBwYWRFbmQpKTtcblxuICAgICAgICAvLyBNb3ZlIHN0YXJ0IHBvaW50IHRvd2FyZCBlbmQgcG9pbnRcbiAgICAgICAgbGV0IFtweDAsIHB5MF0gPSBwcm9qZWN0UG9pbnQoeDAsIHkwLCBhbmdsZSwgcHMpO1xuXG4gICAgICAgIC8vIE1vdmUgZW5kIHBvaW50IHRvd2FyZCBzdGFydCBwb2ludFxuICAgICAgICBsZXQgW3B4MSwgcHkxXSA9IHByb2plY3RQb2ludCh4MSwgeTEsIGFuZ2xlICsgTWF0aC5QSSwgcGUpO1xuXG4gICAgICAgIC8vIEdldCBtaWRwb2ludCBiZXR3ZWVuIG5ldyBwb2ludHNcbiAgICAgICAgY29uc3QgW214LCBteV0gPSBnZXRQb2ludEJldHdlZW4ocHgwLCBweTAsIHB4MSwgcHkxLCAwLjUpO1xuXG4gICAgICAgIHJldHVybiBbcHgwLCBweTAsIG14LCBteSwgcHgxLCBweTEsIGFuZ2xlLCBhbmdsZSwgYW5nbGVdO1xuICAgIH1cblxuICAgIC8vIOKknOKkjyBBcnJvdyBpcyBhbiBhcmMhXG5cbiAgICAvLyBJcyB0aGUgYXJjIGNsb2Nrd2lzZSBvciBjb3VudGVyY2xvY2t3aXNlP1xuICAgIGxldCByb3QgPSAoZ2V0U2VjdG9yKGFuZ2xlKSAlIDIgPT09IDAgPyAxIDogLTEpICogKGZsaXAgPyAtMSA6IDEpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGhvdyBtdWNoIHRoZSBsaW5lIHNob3VsZCBcImJvd1wiIGF3YXkgZnJvbSBjZW50ZXJcbiAgICBjb25zdCBhcmMgPSBib3cgKyBtb2R1bGF0ZShkaXN0LCBbc3RyZXRjaE1pbiwgc3RyZXRjaE1heF0sIFsxLCAwXSwgdHJ1ZSkgKiBzdHJldGNoO1xuXG4gICAgLy8gU3RlcCAxIOKknOKkjyBGaW5kIHBhZGRlZCBwb2ludHMuXG5cbiAgICAvLyBHZXQgbWlkcG9pbnQuXG4gICAgY29uc3QgW214LCBteV0gPSBnZXRQb2ludEJldHdlZW4oeDAsIHkwLCB4MSwgeTEsIDAuNSk7XG5cbiAgICAvLyBHZXQgY29udHJvbCBwb2ludC5cbiAgICBsZXQgW2N4LCBjeV0gPSBnZXRQb2ludEJldHdlZW4oeDAsIHkwLCB4MSwgeTEsIDAuNSAtIGFyYyk7XG5cbiAgICAvLyBSb3RhdGUgY29udHJvbCBwb2ludCAoY2xvY2t3aXNlIG9yIGNvdW50ZXJjbG9ja3dpc2UpLlxuICAgIFtjeCwgY3ldID0gcm90YXRlUG9pbnQoY3gsIGN5LCBteCwgbXksIChNYXRoLlBJIC8gMikgKiByb3QpO1xuXG4gICAgLy8gR2V0IHBhZGRlZCBzdGFydCBwb2ludC5cbiAgICBjb25zdCBhMCA9IGdldEFuZ2xlKHgwLCB5MCwgY3gsIGN5KTtcbiAgICBjb25zdCBbcHgwLCBweTBdID0gcHJvamVjdFBvaW50KHgwLCB5MCwgYTAsIHBhZFN0YXJ0KTtcblxuICAgIC8vIEdldCBwYWRkZWQgZW5kIHBvaW50LlxuICAgIGNvbnN0IGExID0gZ2V0QW5nbGUoeDEsIHkxLCBjeCwgY3kpO1xuICAgIGNvbnN0IFtweDEsIHB5MV0gPSBwcm9qZWN0UG9pbnQoeDEsIHkxLCBhMSwgcGFkRW5kKTtcblxuICAgIC8vIFN0ZXAgMiAg4qSc4qSPIEZpbmQgc3RhcnQgYW5kIGVuZCBhbmdsZXMuXG5cbiAgICAvLyBTdGFydCBhbmdsZVxuICAgIGNvbnN0IGFzID0gZ2V0QW5nbGUoY3gsIGN5LCB4MCwgeTApO1xuXG4gICAgLy8gRW5kIGFuZ2xlXG4gICAgY29uc3QgYWUgPSBnZXRBbmdsZShjeCwgY3ksIHgxLCB5MSk7XG5cbiAgICAvLyBTdGVwIDMg4qSc4qSPIEZpbmQgY29udHJvbCBwb2ludCBmb3IgcGFkZGVkIHBvaW50cy5cblxuICAgIC8vIEdldCBtaWRwb2ludCBiZXR3ZWVuIHBhZGRlZCBzdGFydCAvIGVuZCBwb2ludHMuXG4gICAgY29uc3QgW214MSwgbXkxXSA9IGdldFBvaW50QmV0d2VlbihweDAsIHB5MCwgcHgxLCBweTEsIDAuNSk7XG5cbiAgICAvLyBHZXQgY29udHJvbCBwb2ludCBmb3IgcGFkZGVkIHN0YXJ0IC8gZW5kIHBvaW50cy5cbiAgICBsZXQgW2N4MSwgY3kxXSA9IGdldFBvaW50QmV0d2VlbihweDAsIHB5MCwgcHgxLCBweTEsIDAuNSAtIGFyYyk7XG5cbiAgICAvLyBSb3RhdGUgY29udHJvbCBwb2ludCAoY2xvY2t3aXNlIG9yIGNvdW50ZXJjbG9ja3dpc2UpLlxuICAgIFtjeDEsIGN5MV0gPSByb3RhdGVQb2ludChjeDEsIGN5MSwgbXgxLCBteTEsIChNYXRoLlBJIC8gMikgKiByb3QpO1xuXG4gICAgLy8gRmluYWxseSwgYXZlcmFnZSB0aGUgdHdvIGNvbnRyb2wgcG9pbnRzLlxuICAgIGxldCBbY3gyLCBjeTJdID0gZ2V0UG9pbnRCZXR3ZWVuKGN4LCBjeSwgY3gxLCBjeTEsIDAuNSk7XG5cbiAgICByZXR1cm4gW3B4MCwgcHkwLCBjeDIsIGN5MiwgcHgxLCBweTEsIGFlLCBhcywgYW5nbGVdO1xufVxuIl19
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Credits to perfect-arrows
|
|
2
|
+
// https://github.com/steveruizok/perfect-arrows/blob/master/src/lib/utils.ts
|
|
3
|
+
const PI = Math.PI;
|
|
4
|
+
/**
|
|
5
|
+
* Modulate a value between two ranges.
|
|
6
|
+
* @param value
|
|
7
|
+
* @param rangeA from [low, high]
|
|
8
|
+
* @param rangeB to [low, high]
|
|
9
|
+
* @param clamp
|
|
10
|
+
*/
|
|
11
|
+
export function modulate(value, rangeA, rangeB, clamp = false) {
|
|
12
|
+
const [fromLow, fromHigh] = rangeA;
|
|
13
|
+
const [toLow, toHigh] = rangeB;
|
|
14
|
+
const result = toLow + ((value - fromLow) / (fromHigh - fromLow)) * (toHigh - toLow);
|
|
15
|
+
if (clamp === true) {
|
|
16
|
+
if (toLow < toHigh) {
|
|
17
|
+
if (result < toLow) {
|
|
18
|
+
return toLow;
|
|
19
|
+
}
|
|
20
|
+
if (result > toHigh) {
|
|
21
|
+
return toHigh;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (result > toLow) {
|
|
26
|
+
return toLow;
|
|
27
|
+
}
|
|
28
|
+
if (result < toHigh) {
|
|
29
|
+
return toHigh;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Rotate a point around a center.
|
|
37
|
+
* @param x The x-axis coordinate of the point.
|
|
38
|
+
* @param y The y-axis coordinate of the point.
|
|
39
|
+
* @param cx The x-axis coordinate of the point to rotate round.
|
|
40
|
+
* @param cy The y-axis coordinate of the point to rotate round.
|
|
41
|
+
* @param angle The distance (in radians) to rotate.
|
|
42
|
+
*/
|
|
43
|
+
export function rotatePoint(x, y, cx, cy, angle) {
|
|
44
|
+
const s = Math.sin(angle);
|
|
45
|
+
const c = Math.cos(angle);
|
|
46
|
+
const px = x - cx;
|
|
47
|
+
const py = y - cy;
|
|
48
|
+
const nx = px * c - py * s;
|
|
49
|
+
const ny = px * s + py * c;
|
|
50
|
+
return [nx + cx, ny + cy];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get the distance between two points.
|
|
54
|
+
* @param x0 The x-axis coordinate of the first point.
|
|
55
|
+
* @param y0 The y-axis coordinate of the first point.
|
|
56
|
+
* @param x1 The x-axis coordinate of the second point.
|
|
57
|
+
* @param y1 The y-axis coordinate of the second point.
|
|
58
|
+
*/
|
|
59
|
+
export function getDistance(x0, y0, x1, y1) {
|
|
60
|
+
return Math.hypot(y1 - y0, x1 - x0);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get an angle (radians) between two points.
|
|
64
|
+
* @param x0 The x-axis coordinate of the first point.
|
|
65
|
+
* @param y0 The y-axis coordinate of the first point.
|
|
66
|
+
* @param x1 The x-axis coordinate of the second point.
|
|
67
|
+
* @param y1 The y-axis coordinate of the second point.
|
|
68
|
+
*/
|
|
69
|
+
export function getAngle(x0, y0, x1, y1) {
|
|
70
|
+
return Math.atan2(y1 - y0, x1 - x0);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Move a point in an angle by a distance.
|
|
74
|
+
* @param x0
|
|
75
|
+
* @param y0
|
|
76
|
+
* @param a angle (radians)
|
|
77
|
+
* @param d distance
|
|
78
|
+
*/
|
|
79
|
+
export function projectPoint(x0, y0, a, d) {
|
|
80
|
+
return [Math.cos(a) * d + x0, Math.sin(a) * d + y0];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get a point between two points.
|
|
84
|
+
* @param x0 The x-axis coordinate of the first point.
|
|
85
|
+
* @param y0 The y-axis coordinate of the first point.
|
|
86
|
+
* @param x1 The x-axis coordinate of the second point.
|
|
87
|
+
* @param y1 The y-axis coordinate of the second point.
|
|
88
|
+
* @param d Normalized
|
|
89
|
+
*/
|
|
90
|
+
export function getPointBetween(x0, y0, x1, y1, d = 0.5) {
|
|
91
|
+
return [x0 + (x1 - x0) * d, y0 + (y1 - y0) * d];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get the sector of an angle (e.g. quadrant, octant)
|
|
95
|
+
* @param a The angle to check.
|
|
96
|
+
* @param s The number of sectors to check.
|
|
97
|
+
*/
|
|
98
|
+
export function getSector(a, s = 8) {
|
|
99
|
+
return Math.floor(s * (0.5 + ((a / (PI * 2)) % s)));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get a normal value representing how close two points are from being at a 45 degree angle.
|
|
103
|
+
* @param x0 The x-axis coordinate of the first point.
|
|
104
|
+
* @param y0 The y-axis coordinate of the first point.
|
|
105
|
+
* @param x1 The x-axis coordinate of the second point.
|
|
106
|
+
* @param y1 The y-axis coordinate of the second point.
|
|
107
|
+
*/
|
|
108
|
+
export function getAngliness(x0, y0, x1, y1) {
|
|
109
|
+
return Math.abs((x1 - x0) / 2 / ((y1 - y0) / 2));
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmFwaC12aXovc3JjL3BlcmZlY3QtYXJyb3dzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1Qiw2RUFBNkU7QUFFN0UsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUVuQjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWEsRUFBRSxNQUFnQixFQUFFLE1BQWdCLEVBQUUsS0FBSyxHQUFHLEtBQUs7SUFDckYsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbkMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNyRixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqQixJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUNqQixJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUNsQixPQUFPLE1BQU0sQ0FBQztZQUNsQixDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUNsQixPQUFPLE1BQU0sQ0FBQztZQUNsQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEtBQWE7SUFDbkYsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTFCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVsQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTNCLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQ3RFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQ25FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLENBQVMsRUFBRSxDQUFTO0lBQ3JFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxDQUFDLEdBQUcsR0FBRztJQUNuRixPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtJQUN2RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlZGl0cyB0byBwZXJmZWN0LWFycm93c1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3N0ZXZlcnVpem9rL3BlcmZlY3QtYXJyb3dzL2Jsb2IvbWFzdGVyL3NyYy9saWIvdXRpbHMudHNcblxuY29uc3QgUEkgPSBNYXRoLlBJO1xuXG4vKipcbiAqIE1vZHVsYXRlIGEgdmFsdWUgYmV0d2VlbiB0d28gcmFuZ2VzLlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gcmFuZ2VBIGZyb20gW2xvdywgaGlnaF1cbiAqIEBwYXJhbSByYW5nZUIgdG8gW2xvdywgaGlnaF1cbiAqIEBwYXJhbSBjbGFtcFxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kdWxhdGUodmFsdWU6IG51bWJlciwgcmFuZ2VBOiBudW1iZXJbXSwgcmFuZ2VCOiBudW1iZXJbXSwgY2xhbXAgPSBmYWxzZSkge1xuICAgIGNvbnN0IFtmcm9tTG93LCBmcm9tSGlnaF0gPSByYW5nZUE7XG4gICAgY29uc3QgW3RvTG93LCB0b0hpZ2hdID0gcmFuZ2VCO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRvTG93ICsgKCh2YWx1ZSAtIGZyb21Mb3cpIC8gKGZyb21IaWdoIC0gZnJvbUxvdykpICogKHRvSGlnaCAtIHRvTG93KTtcbiAgICBpZiAoY2xhbXAgPT09IHRydWUpIHtcbiAgICAgICAgaWYgKHRvTG93IDwgdG9IaWdoKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0IDwgdG9Mb3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Mb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzdWx0ID4gdG9IaWdoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvSGlnaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPiB0b0xvdykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b0xvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPCB0b0hpZ2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9IaWdoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUm90YXRlIGEgcG9pbnQgYXJvdW5kIGEgY2VudGVyLlxuICogQHBhcmFtIHggVGhlIHgtYXhpcyBjb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAqIEBwYXJhbSB5IFRoZSB5LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgcG9pbnQuXG4gKiBAcGFyYW0gY3ggVGhlIHgtYXhpcyBjb29yZGluYXRlIG9mIHRoZSBwb2ludCB0byByb3RhdGUgcm91bmQuXG4gKiBAcGFyYW0gY3kgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBwb2ludCB0byByb3RhdGUgcm91bmQuXG4gKiBAcGFyYW0gYW5nbGUgVGhlIGRpc3RhbmNlIChpbiByYWRpYW5zKSB0byByb3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVQb2ludCh4OiBudW1iZXIsIHk6IG51bWJlciwgY3g6IG51bWJlciwgY3k6IG51bWJlciwgYW5nbGU6IG51bWJlcikge1xuICAgIGNvbnN0IHMgPSBNYXRoLnNpbihhbmdsZSk7XG4gICAgY29uc3QgYyA9IE1hdGguY29zKGFuZ2xlKTtcblxuICAgIGNvbnN0IHB4ID0geCAtIGN4O1xuICAgIGNvbnN0IHB5ID0geSAtIGN5O1xuXG4gICAgY29uc3QgbnggPSBweCAqIGMgLSBweSAqIHM7XG4gICAgY29uc3QgbnkgPSBweCAqIHMgKyBweSAqIGM7XG5cbiAgICByZXR1cm4gW254ICsgY3gsIG55ICsgY3ldO1xufVxuXG4vKipcbiAqIEdldCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0d28gcG9pbnRzLlxuICogQHBhcmFtIHgwIFRoZSB4LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0geTAgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAqIEBwYXJhbSB4MSBUaGUgeC1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqIEBwYXJhbSB5MSBUaGUgeS1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlKHgwOiBudW1iZXIsIHkwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIpIHtcbiAgICByZXR1cm4gTWF0aC5oeXBvdCh5MSAtIHkwLCB4MSAtIHgwKTtcbn1cblxuLyoqXG4gKiBHZXQgYW4gYW5nbGUgKHJhZGlhbnMpIGJldHdlZW4gdHdvIHBvaW50cy5cbiAqIEBwYXJhbSB4MCBUaGUgeC1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIGZpcnN0IHBvaW50LlxuICogQHBhcmFtIHkwIFRoZSB5LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0geDEgVGhlIHgtYXhpcyBjb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgcG9pbnQuXG4gKiBAcGFyYW0geTEgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgcG9pbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmdsZSh4MDogbnVtYmVyLCB5MDogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIoeTEgLSB5MCwgeDEgLSB4MCk7XG59XG5cbi8qKlxuICogTW92ZSBhIHBvaW50IGluIGFuIGFuZ2xlIGJ5IGEgZGlzdGFuY2UuXG4gKiBAcGFyYW0geDBcbiAqIEBwYXJhbSB5MFxuICogQHBhcmFtIGEgYW5nbGUgKHJhZGlhbnMpXG4gKiBAcGFyYW0gZCBkaXN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFBvaW50KHgwOiBudW1iZXIsIHkwOiBudW1iZXIsIGE6IG51bWJlciwgZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFtNYXRoLmNvcyhhKSAqIGQgKyB4MCwgTWF0aC5zaW4oYSkgKiBkICsgeTBdO1xufVxuXG4vKipcbiAqIEdldCBhIHBvaW50IGJldHdlZW4gdHdvIHBvaW50cy5cbiAqIEBwYXJhbSB4MCBUaGUgeC1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIGZpcnN0IHBvaW50LlxuICogQHBhcmFtIHkwIFRoZSB5LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0geDEgVGhlIHgtYXhpcyBjb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgcG9pbnQuXG4gKiBAcGFyYW0geTEgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgcG9pbnQuXG4gKiBAcGFyYW0gZCBOb3JtYWxpemVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2ludEJldHdlZW4oeDA6IG51bWJlciwgeTA6IG51bWJlciwgeDE6IG51bWJlciwgeTE6IG51bWJlciwgZCA9IDAuNSkge1xuICAgIHJldHVybiBbeDAgKyAoeDEgLSB4MCkgKiBkLCB5MCArICh5MSAtIHkwKSAqIGRdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgc2VjdG9yIG9mIGFuIGFuZ2xlIChlLmcuIHF1YWRyYW50LCBvY3RhbnQpXG4gKiBAcGFyYW0gYSBUaGUgYW5nbGUgdG8gY2hlY2suXG4gKiBAcGFyYW0gcyBUaGUgbnVtYmVyIG9mIHNlY3RvcnMgdG8gY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWN0b3IoYTogbnVtYmVyLCBzID0gOCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHMgKiAoMC41ICsgKChhIC8gKFBJICogMikpICUgcykpKTtcbn1cblxuLyoqXG4gKiBHZXQgYSBub3JtYWwgdmFsdWUgcmVwcmVzZW50aW5nIGhvdyBjbG9zZSB0d28gcG9pbnRzIGFyZSBmcm9tIGJlaW5nIGF0IGEgNDUgZGVncmVlIGFuZ2xlLlxuICogQHBhcmFtIHgwIFRoZSB4LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0geTAgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAqIEBwYXJhbSB4MSBUaGUgeC1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqIEBwYXJhbSB5MSBUaGUgeS1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xpbmVzcyh4MDogbnVtYmVyLCB5MDogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKCh4MSAtIHgwKSAvIDIgLyAoKHkxIC0geTApIC8gMikpO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaXQtZ3JhcGgtdml6LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ3JhcGgtdml6L3NyYy9wbGFpdC1ncmFwaC12aXoudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of utils
|
|
3
|
+
*/
|
|
4
|
+
export * from './force-atlas/constants';
|
|
5
|
+
export * from './force-atlas/types';
|
|
6
|
+
export * from './force-atlas/with-force-atlas';
|
|
7
|
+
export * from './force-atlas/with-node-icon';
|
|
8
|
+
export * from './interfaces/index';
|
|
9
|
+
export * from './force-atlas/core/node-icon-base.component';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dyYXBoLXZpei9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB1dGlsc1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZm9yY2UtYXRsYXMvY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZm9yY2UtYXRsYXMvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JjZS1hdGxhcy93aXRoLWZvcmNlLWF0bGFzJztcbmV4cG9ydCAqIGZyb20gJy4vZm9yY2UtYXRsYXMvd2l0aC1ub2RlLWljb24nO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZm9yY2UtYXRsYXMvY29yZS9ub2RlLWljb24tYmFzZS5jb21wb25lbnQnO1xuIl19
|