@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.
Files changed (44) hide show
  1. package/README.md +4 -0
  2. package/constants/default.d.ts +2 -0
  3. package/esm2022/constants/default.mjs +5 -0
  4. package/esm2022/force-atlas/constants.mjs +34 -0
  5. package/esm2022/force-atlas/core/node-icon-base.component.mjs +15 -0
  6. package/esm2022/force-atlas/edge.flavour.mjs +25 -0
  7. package/esm2022/force-atlas/force-atlas.flavour.mjs +53 -0
  8. package/esm2022/force-atlas/generators/edge.generator.mjs +30 -0
  9. package/esm2022/force-atlas/generators/node.generator.mjs +44 -0
  10. package/esm2022/force-atlas/node.flavour.mjs +55 -0
  11. package/esm2022/force-atlas/types.mjs +7 -0
  12. package/esm2022/force-atlas/utils/draw.mjs +73 -0
  13. package/esm2022/force-atlas/utils/edge.mjs +72 -0
  14. package/esm2022/force-atlas/utils/node.mjs +55 -0
  15. package/esm2022/force-atlas/with-force-atlas.mjs +71 -0
  16. package/esm2022/force-atlas/with-node-icon.mjs +8 -0
  17. package/esm2022/interfaces/element.mjs +12 -0
  18. package/esm2022/interfaces/index.mjs +2 -0
  19. package/esm2022/perfect-arrows/get-arrow.mjs +91 -0
  20. package/esm2022/perfect-arrows/utils.mjs +111 -0
  21. package/esm2022/plait-graph-viz.mjs +5 -0
  22. package/esm2022/public-api.mjs +10 -0
  23. package/fesm2022/plait-graph-viz.mjs +724 -0
  24. package/fesm2022/plait-graph-viz.mjs.map +1 -0
  25. package/force-atlas/constants.d.ts +25 -0
  26. package/force-atlas/core/node-icon-base.component.d.ts +10 -0
  27. package/force-atlas/edge.flavour.d.ts +15 -0
  28. package/force-atlas/force-atlas.flavour.d.ts +13 -0
  29. package/force-atlas/generators/edge.generator.d.ts +15 -0
  30. package/force-atlas/generators/node.generator.d.ts +15 -0
  31. package/force-atlas/node.flavour.d.ts +15 -0
  32. package/force-atlas/types.d.ts +33 -0
  33. package/force-atlas/utils/draw.d.ts +13 -0
  34. package/force-atlas/utils/edge.d.ts +14 -0
  35. package/force-atlas/utils/node.d.ts +15 -0
  36. package/force-atlas/with-force-atlas.d.ts +2 -0
  37. package/force-atlas/with-node-icon.d.ts +13 -0
  38. package/index.d.ts +5 -0
  39. package/interfaces/element.d.ts +20 -0
  40. package/interfaces/index.d.ts +1 -0
  41. package/package.json +34 -0
  42. package/perfect-arrows/get-arrow.d.ts +42 -0
  43. package/perfect-arrows/utils.d.ts +64 -0
  44. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1mb3JjZS1hdGxhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyYXBoLXZpei9zcmMvZm9yY2UtYXRsYXMvd2l0aC1mb3JjZS1hdGxhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBT0gsZUFBZSxFQUdmLG1CQUFtQixFQUN0QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFMUgsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtRQUN2RCxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLGlCQUFpQixDQUFDO1FBQzdCLENBQUM7YUFBTSxJQUFJLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE9BQU8scUJBQXFCLENBQUM7UUFDakMsQ0FBQzthQUFNLElBQUksaUJBQWlC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ZW50LFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgUGxhaXRQbHVnaW5LZXksXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNlbGVjdGlvbixcbiAgICBXaXRoU2VsZWN0aW9uUGx1Z2luT3B0aW9ucyxcbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEZvcmNlQXRsYXNGbGF2b3VyIH0gZnJvbSAnLi9mb3JjZS1hdGxhcy5mbGF2b3VyJztcbmltcG9ydCB7IEZvcmNlQXRsYXNOb2RlRmxhdm91ciB9IGZyb20gJy4vbm9kZS5mbGF2b3VyJztcbmltcG9ydCB7IEZvcmNlQXRsYXNFZGdlRmxhdm91ciB9IGZyb20gJy4vZWRnZS5mbGF2b3VyJztcbmltcG9ydCB7IEZvcmNlQXRsYXNFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc0hpdE5vZGUgfSBmcm9tICcuL3V0aWxzL25vZGUnO1xuaW1wb3J0IHsgd2l0aE5vZGVJY29uIH0gZnJvbSAnLi93aXRoLW5vZGUtaWNvbic7XG5cbmV4cG9ydCBjb25zdCB3aXRoRm9yY2VBdGxhcyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgZHJhd0VsZW1lbnQsIGdldFJlY3RhbmdsZSwgaXNSZWN0YW5nbGVIaXQsIGlzSGl0LCBpc0luc2lkZVBvaW50LCBpc01vdmFibGUsIGlzQWxpZ24sIGdldFJlbGF0ZWRGcmFnbWVudCB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kcmF3RWxlbWVudCA9IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChGb3JjZUF0bGFzRWxlbWVudC5pc0ZvcmNlQXRsYXMoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEZvcmNlQXRsYXNGbGF2b3VyO1xuICAgICAgICB9IGVsc2UgaWYgKEZvcmNlQXRsYXNFbGVtZW50LmlzRm9yY2VBdGxhc05vZGVFbGVtZW50KGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBGb3JjZUF0bGFzTm9kZUZsYXZvdXI7XG4gICAgICAgIH0gZWxzZSBpZiAoRm9yY2VBdGxhc0VsZW1lbnQuaXNGb3JjZUF0bGFzRWRnZUVsZW1lbnQoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEZvcmNlQXRsYXNFZGdlRmxhdm91cjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd0VsZW1lbnQoY29udGV4dCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdldFJlY3RhbmdsZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFycm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JhcGgtdml6L3NyYy9wZXJmZWN0LWFycm93cy9nZXQtYXJyb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLGdGQUFnRjtBQUVoRixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWEvSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBOEJLO0FBQ0wsTUFBTSxDQUFDLE9BQU8sVUFBVSxRQUFRLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLFVBQXdCLEVBQWtCO0lBQ3ZILE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsR0FBRyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsS0FBSyxFQUFFLFNBQVMsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFdkksTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFL0MsMENBQTBDO0lBRTFDLElBQ0ksSUFBSSxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZO1FBQzlDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUkscUJBQXFCO1FBQ3JELENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7TUFDeEUsQ0FBQztRQUNDLHVEQUF1RDtRQUV2RCxvQkFBb0I7UUFDcEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDNUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFcEQsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpELG9DQUFvQztRQUNwQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNELGtDQUFrQztRQUNsQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFMUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELHNCQUFzQjtJQUV0Qiw0Q0FBNEM7SUFDNUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbEUsNERBQTREO0lBQzVELE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUVuRixnQ0FBZ0M7SUFFaEMsZ0JBQWdCO0lBQ2hCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV0RCxxQkFBcUI7SUFDckIsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUUxRCx3REFBd0Q7SUFDeEQsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFNUQsMEJBQTBCO0lBQzFCLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV0RCx3QkFBd0I7SUFDeEIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXBELHdDQUF3QztJQUV4QyxjQUFjO0lBQ2QsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXBDLFlBQVk7SUFDWixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFcEMsa0RBQWtEO0lBRWxELGtEQUFrRDtJQUNsRCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFNUQsbURBQW1EO0lBQ25ELElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFaEUsd0RBQXdEO0lBQ3hELENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBRWxFLDJDQUEyQztJQUMzQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFeEQsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWRpdHMgdG8gcGVyZmVjdC1hcnJvd3Ncbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGV2ZXJ1aXpvay9wZXJmZWN0LWFycm93cy9ibG9iL21hc3Rlci9zcmMvbGliL2dldEFycm93LnRzXG5cbmltcG9ydCB7IGdldEFuZ2xlLCBnZXREaXN0YW5jZSwgZ2V0QW5nbGluZXNzLCBwcm9qZWN0UG9pbnQsIGdldFBvaW50QmV0d2VlbiwgZ2V0U2VjdG9yLCByb3RhdGVQb2ludCwgbW9kdWxhdGUgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgQXJyb3dPcHRpb25zID0ge1xuICAgIGJvdz86IG51bWJlcjtcbiAgICBzdHJldGNoTWluPzogbnVtYmVyO1xuICAgIHN0cmV0Y2hNYXg/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