@plait/graph-viz 0.77.2 → 0.78.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/plait-graph-viz.mjs.map +1 -1
- package/package.json +1 -3
- package/esm2022/constants/default.mjs +0 -5
- package/esm2022/force-atlas/constants.mjs +0 -44
- package/esm2022/force-atlas/core/node-icon-base.component.mjs +0 -15
- package/esm2022/force-atlas/edge.flavour.mjs +0 -25
- package/esm2022/force-atlas/force-atlas.flavour.mjs +0 -58
- package/esm2022/force-atlas/generators/edge.generator.mjs +0 -30
- package/esm2022/force-atlas/generators/node.generator.mjs +0 -44
- package/esm2022/force-atlas/node.flavour.mjs +0 -57
- package/esm2022/force-atlas/types.mjs +0 -7
- package/esm2022/force-atlas/utils/draw.mjs +0 -91
- package/esm2022/force-atlas/utils/edge.mjs +0 -73
- package/esm2022/force-atlas/utils/node.mjs +0 -55
- package/esm2022/force-atlas/with-force-atlas.mjs +0 -72
- package/esm2022/force-atlas/with-node-icon.mjs +0 -8
- package/esm2022/interfaces/element.mjs +0 -12
- package/esm2022/interfaces/index.mjs +0 -2
- package/esm2022/perfect-arrows/get-arrow.mjs +0 -92
- package/esm2022/perfect-arrows/utils.mjs +0 -100
- package/esm2022/plait-graph-viz.mjs +0 -5
- package/esm2022/public-api.mjs +0 -10
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
// Credits to perfect-arrows
|
|
2
|
-
// https://github.com/steveruizok/perfect-arrows/blob/master/src/lib/getArrow.ts
|
|
3
|
-
import { getPointBetween } from '@plait/core';
|
|
4
|
-
import { getAngle, getDistance, getAngliness, projectPoint, getSector, rotatePoint, modulate } from './utils';
|
|
5
|
-
/**
|
|
6
|
-
* getArrow
|
|
7
|
-
* Get the points for a linking line between two points.
|
|
8
|
-
* @description Draw an arrow between two points.
|
|
9
|
-
* @param x0 The x position of the "from" point.
|
|
10
|
-
* @param y0 The y position of the "from" point.
|
|
11
|
-
* @param x1 The x position of the "to" point.
|
|
12
|
-
* @param y1 The y position of the "to" point.
|
|
13
|
-
* @param options Additional options for computing the line.
|
|
14
|
-
* @returns [sx, sy, cx, cy, e1, e2, ae, as, ac]
|
|
15
|
-
* @example
|
|
16
|
-
* const arrow = getArrow(0, 0, 100, 200, {
|
|
17
|
-
bow: 0
|
|
18
|
-
stretch: .5
|
|
19
|
-
stretchMin: 0
|
|
20
|
-
stretchMax: 420
|
|
21
|
-
padStart: 0
|
|
22
|
-
padEnd: 0
|
|
23
|
-
flip: false
|
|
24
|
-
straights: true
|
|
25
|
-
* })
|
|
26
|
-
*
|
|
27
|
-
* const [
|
|
28
|
-
* startX, startY,
|
|
29
|
-
* controlX, controlY,
|
|
30
|
-
* endX, endY,
|
|
31
|
-
* endAngle,
|
|
32
|
-
* startAngle,
|
|
33
|
-
* controlAngle
|
|
34
|
-
* ] = arrow
|
|
35
|
-
*/
|
|
36
|
-
export default function getArrow(x0, y0, x1, y1, options = {}) {
|
|
37
|
-
const { bow = 0, stretch = 0.5, stretchMin = 0, stretchMax = 420, padStart = 0, padEnd = 0, flip = false, straights = true } = options;
|
|
38
|
-
const angle = getAngle(x0, y0, x1, y1);
|
|
39
|
-
const dist = getDistance(x0, y0, x1, y1);
|
|
40
|
-
const angliness = getAngliness(x0, y0, x1, y1);
|
|
41
|
-
// Step 0 ⤜⤏ Should the arrow be straight?
|
|
42
|
-
if (dist < (padStart + padEnd) * 2 || // Too short
|
|
43
|
-
(bow === 0 && stretch === 0) || // No bow, no stretch
|
|
44
|
-
(straights && [0, 1, Infinity].includes(angliness)) // 45 degree angle
|
|
45
|
-
) {
|
|
46
|
-
// ⤜⤏ Arrow is straight! Just pad start and end points.
|
|
47
|
-
// Padding distances
|
|
48
|
-
const ps = Math.max(0, Math.min(dist - padStart, padStart));
|
|
49
|
-
const pe = Math.max(0, Math.min(dist - ps, padEnd));
|
|
50
|
-
// Move start point toward end point
|
|
51
|
-
let [px0, py0] = projectPoint(x0, y0, angle, ps);
|
|
52
|
-
// Move end point toward start point
|
|
53
|
-
let [px1, py1] = projectPoint(x1, y1, angle + Math.PI, pe);
|
|
54
|
-
// Get midpoint between new points
|
|
55
|
-
const [mx, my] = getPointBetween(px0, py0, px1, py1, 0.5);
|
|
56
|
-
return [px0, py0, mx, my, px1, py1, angle, angle, angle];
|
|
57
|
-
}
|
|
58
|
-
// ⤜⤏ Arrow is an arc!
|
|
59
|
-
// Is the arc clockwise or counterclockwise?
|
|
60
|
-
let rot = (getSector(angle) % 2 === 0 ? 1 : -1) * (flip ? -1 : 1);
|
|
61
|
-
// Calculate how much the line should "bow" away from center
|
|
62
|
-
const arc = bow + modulate(dist, [stretchMin, stretchMax], [1, 0], true) * stretch;
|
|
63
|
-
// Step 1 ⤜⤏ Find padded points.
|
|
64
|
-
// Get midpoint.
|
|
65
|
-
const [mx, my] = getPointBetween(x0, y0, x1, y1, 0.5);
|
|
66
|
-
// Get control point.
|
|
67
|
-
let [cx, cy] = getPointBetween(x0, y0, x1, y1, 0.5 - arc);
|
|
68
|
-
// Rotate control point (clockwise or counterclockwise).
|
|
69
|
-
[cx, cy] = rotatePoint(cx, cy, mx, my, (Math.PI / 2) * rot);
|
|
70
|
-
// Get padded start point.
|
|
71
|
-
const a0 = getAngle(x0, y0, cx, cy);
|
|
72
|
-
const [px0, py0] = projectPoint(x0, y0, a0, padStart);
|
|
73
|
-
// Get padded end point.
|
|
74
|
-
const a1 = getAngle(x1, y1, cx, cy);
|
|
75
|
-
const [px1, py1] = projectPoint(x1, y1, a1, padEnd);
|
|
76
|
-
// Step 2 ⤜⤏ Find start and end angles.
|
|
77
|
-
// Start angle
|
|
78
|
-
const as = getAngle(cx, cy, x0, y0);
|
|
79
|
-
// End angle
|
|
80
|
-
const ae = getAngle(cx, cy, x1, y1);
|
|
81
|
-
// Step 3 ⤜⤏ Find control point for padded points.
|
|
82
|
-
// Get midpoint between padded start / end points.
|
|
83
|
-
const [mx1, my1] = getPointBetween(px0, py0, px1, py1, 0.5);
|
|
84
|
-
// Get control point for padded start / end points.
|
|
85
|
-
let [cx1, cy1] = getPointBetween(px0, py0, px1, py1, 0.5 - arc);
|
|
86
|
-
// Rotate control point (clockwise or counterclockwise).
|
|
87
|
-
[cx1, cy1] = rotatePoint(cx1, cy1, mx1, my1, (Math.PI / 2) * rot);
|
|
88
|
-
// Finally, average the two control points.
|
|
89
|
-
let [cx2, cy2] = getPointBetween(cx, cy, cx1, cy1, 0.5);
|
|
90
|
-
return [px0, py0, cx2, cy2, px1, py1, ae, as, angle];
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFycm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JhcGgtdml6L3NyYy9wZXJmZWN0LWFycm93cy9nZXQtYXJyb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLGdGQUFnRjtBQUVoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFhOUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQThCSztBQUNMLE1BQU0sQ0FBQyxPQUFPLFVBQVUsUUFBUSxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxVQUF3QixFQUFrQjtJQUN2SCxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsR0FBRyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEtBQUssRUFBRSxTQUFTLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXZJLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QyxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLDBDQUEwQztJQUUxQyxJQUNJLElBQUksR0FBRyxD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SUFDM0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRXhELE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVkaXRzIHRvIHBlcmZlY3QtYXJyb3dzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vc3RldmVydWl6b2svcGVyZmVjdC1hcnJvd3MvYmxvYi9tYXN0ZXIvc3JjL2xpYi9nZXRBcnJvdy50c1xuXG5pbXBvcnQgeyBnZXRQb2ludEJldHdlZW4gfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRBbmdsZSwgZ2V0RGlzdGFuY2UsIGdldEFuZ2xpbmVzcywgcHJvamVjdFBvaW50LCBnZXRTZWN0b3IsIHJvdGF0ZVBvaW50LCBtb2R1bGF0ZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBBcnJvd09wdGlvbnMgPSB7XG4gICAgYm93PzogbnVtYmVyO1xuICAgIHN0cmV0Y2hNaW4/OiBudW1iZXI7XG4gICAgc3RyZXRjaE1heD86IG51bWJlcjtcbiAgICBzdHJldGNoPzogbnVtYmVyO1xuICAgIHBhZFN0YXJ0PzogbnVtYmVyO1xuICAgIHBhZEVuZD86IG51bWJlcjtcbiAgICBmbGlwPzogYm9vbGVhbjtcbiAgICBzdHJhaWdodHM/OiBib29sZWFuO1xufTtcblxuLyoqXG4gICAqIGdldEFycm93XG4gICAqIEdldCB0aGUgcG9pbnRzIGZvciBhIGxpbmtpbmcgbGluZSBiZXR3ZWVuIHR3byBwb2ludHMuXG4gICAqIEBkZXNjcmlwdGlvbiBEcmF3IGFuIGFycm93IGJldHdlZW4gdHdvIHBvaW50cy5cbiAgICogQHBhcmFtIHgwIFRoZSB4IHBvc2l0aW9uIG9mIHRoZSBcImZyb21cIiBwb2ludC5cbiAgICogQHBhcmFtIHkwIFRoZSB5IHBvc2l0aW9uIG9mIHRoZSBcImZyb21cIiBwb2ludC5cbiAgICogQHBhcmFtIHgxIFRoZSB4IHBvc2l0aW9uIG9mIHRoZSBcInRvXCIgcG9pbnQuXG4gICAqIEBwYXJhbSB5MSBUaGUgeSBwb3NpdGlvbiBvZiB0aGUgXCJ0b1wiIHBvaW50LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGNvbXB1dGluZyB0aGUgbGluZS5cbiAgICogQHJldHVybnMgW3N4LCBzeSwgY3gsIGN5LCBlMSwgZTIsIGFlLCBhcywgYWNdXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGFycm93ID0gZ2V0QXJyb3coMCwgMCwgMTAwLCAyMDAsIHtcbiAgICAgIGJvdzogMFxuICAgICAgc3RyZXRjaDogLjVcbiAgICAgIHN0cmV0Y2hNaW46IDBcbiAgICAgIHN0cmV0Y2hNYXg6IDQyMFxuICAgICAgcGFkU3RhcnQ6IDBcbiAgICAgIHBhZEVuZDogMFxuICAgICAgZmxpcDogZmFsc2VcbiAgICAgIHN0cmFpZ2h0czogdHJ1ZVxuICAgKiB9KVxuICAgKiBcbiAgICogY29uc3QgW1xuICAgKiAgc3RhcnRYLCBzdGFydFksIFxuICAgKiAgY29udHJvbFgsIGNvbnRyb2xZLCBcbiAgICogIGVuZFgsIGVuZFksIFxuICAgKiAgZW5kQW5nbGUsIFxuICAgKiAgc3RhcnRBbmdsZSxcbiAgICogIGNvbnRyb2xBbmdsZVxuICAgKiAgXSA9IGFycm93XG4gICAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QXJyb3coeDA6IG51bWJlciwgeTA6IG51bWJlciwgeDE6IG51bWJlciwgeTE6IG51bWJlciwgb3B0aW9uczogQXJyb3dPcHRpb25zID0ge30gYXMgQXJyb3dPcHRpb25zKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHsgYm93ID0gMCwgc3RyZXRjaCA9IDAuNSwgc3RyZXRjaE1pbiA9IDAsIHN0cmV0Y2hNYXggPSA0MjAsIHBhZFN0YXJ0ID0gMCwgcGFkRW5kID0gMCwgZmxpcCA9IGZhbHNlLCBzdHJhaWdodHMgPSB0cnVlIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgYW5nbGUgPSBnZXRBbmdsZSh4MCwgeTAsIHgxLCB5MSk7XG4gICAgY29uc3QgZGlzdCA9IGdldERpc3RhbmNlKHgwLCB5MCwgeDEsIHkxKTtcbiAgICBjb25zdCBhbmdsaW5lc3MgPSBnZXRBbmdsaW5lc3MoeDAsIHkwLCB4MSwgeTEpO1xuXG4gICAgLy8gU3RlcCAwIOKknOKkjyBTaG91bGQgdGhlIGFycm93IGJlIHN0cmFpZ2h0P1xuXG4gICAgaWYgKFxuICAgICAgICBkaXN0IDwgKHBhZFN0YXJ0ICsgcGFkRW5kKSAqIDIgfHwgLy8gVG9vIHNob3J0XG4gICAgICAgIChib3cgPT09IDAgJiYgc3RyZXRjaCA9PT0gMCkgfHwgLy8gTm8gYm93LCBubyBzdHJldGNoXG4gICAgICAgIChzdHJhaWdodHMgJiYgWzAsIDEsIEluZmluaXR5XS5pbmNsdWRlcyhhbmdsaW5lc3MpKSAvLyA0NSBkZWdyZWUgYW5nbGVcbiAgICApIHtcbiAgICAgICAgLy8g4qSc4qSPIEFycm93IGlzIHN0cmFpZ2h0ISBKdXN0IHBhZCBzdGFydCBhbmQgZW5kIHBvaW50cy5cblxuICAgICAgICAvLyBQYWRkaW5nIGRpc3RhbmNlc1xuICAgICAgICBjb25zdCBwcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKGRpc3QgLSBwYWRTdGFydCwgcGFkU3RhcnQpKTtcbiAgICAgICAgY29uc3QgcGUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihkaXN0IC0gcHMsIHBhZEVuZCkpO1xuXG4gICAgICAgIC8vIE1vdmUgc3RhcnQgcG9pbnQgdG93YXJkIGVuZCBwb2ludFxuICAgICAgICBsZXQgW3B4MCwgcHkwXSA9IHByb2plY3RQb2ludCh4MCwgeTAsIGFuZ2xlLCBwcyk7XG5cbiAgICAgICAgLy8gTW92ZSBlbmQgcG9pbnQgdG93YXJkIHN0YXJ0IHBvaW50XG4gICAgICAgIGxldCBbcHgxLCBweTFdID0gcHJvamVjdFBvaW50KHgxLCB5MSwgYW5nbGUgKyBNYXRoLlBJLCBwZSk7XG5cbiAgICAgICAgLy8gR2V0IG1pZHBvaW50IGJldHdlZW4gbmV3IHBvaW50c1xuICAgICAgICBjb25zdCBbbXgsIG15XSA9IGdldFBvaW50QmV0d2VlbihweDAsIHB5MCwgcHgxLCBweTEsIDAuNSk7XG5cbiAgICAgICAgcmV0dXJuIFtweDAsIHB5MCwgbXgsIG15LCBweDEsIHB5MSwgYW5nbGUsIGFuZ2xlLCBhbmdsZV07XG4gICAgfVxuXG4gICAgLy8g4qSc4qSPIEFycm93IGlzIGFuIGFyYyFcblxuICAgIC8vIElzIHRoZSBhcmMgY2xvY2t3aXNlIG9yIGNvdW50ZXJjbG9ja3dpc2U/XG4gICAgbGV0IHJvdCA9IChnZXRTZWN0b3IoYW5nbGUpICUgMiA9PT0gMCA/IDEgOiAtMSkgKiAoZmxpcCA/IC0xIDogMSk7XG5cbiAgICAvLyBDYWxjdWxhdGUgaG93IG11Y2ggdGhlIGxpbmUgc2hvdWxkIFwiYm93XCIgYXdheSBmcm9tIGNlbnRlclxuICAgIGNvbnN0IGFyYyA9IGJvdyArIG1vZHVsYXRlKGRpc3QsIFtzdHJldGNoTWluLCBzdHJldGNoTWF4XSwgWzEsIDBdLCB0cnVlKSAqIHN0cmV0Y2g7XG5cbiAgICAvLyBTdGVwIDEg4qSc4qSPIEZpbmQgcGFkZGVkIHBvaW50cy5cblxuICAgIC8vIEdldCBtaWRwb2ludC5cbiAgICBjb25zdCBbbXgsIG15XSA9IGdldFBvaW50QmV0d2Vlbih4MCwgeTAsIHgxLCB5MSwgMC41KTtcblxuICAgIC8vIEdldCBjb250cm9sIHBvaW50LlxuICAgIGxldCBbY3gsIGN5XSA9IGdldFBvaW50QmV0d2Vlbih4MCwgeTAsIHgxLCB5MSwgMC41IC0gYXJjKTtcblxuICAgIC8vIFJvdGF0ZSBjb250cm9sIHBvaW50IChjbG9ja3dpc2Ugb3IgY291bnRlcmNsb2Nrd2lzZSkuXG4gICAgW2N4LCBjeV0gPSByb3RhdGVQb2ludChjeCwgY3ksIG14LCBteSwgKE1hdGguUEkgLyAyKSAqIHJvdCk7XG5cbiAgICAvLyBHZXQgcGFkZGVkIHN0YXJ0IHBvaW50LlxuICAgIGNvbnN0IGEwID0gZ2V0QW5nbGUoeDAsIHkwLCBjeCwgY3kpO1xuICAgIGNvbnN0IFtweDAsIHB5MF0gPSBwcm9qZWN0UG9pbnQoeDAsIHkwLCBhMCwgcGFkU3RhcnQpO1xuXG4gICAgLy8gR2V0IHBhZGRlZCBlbmQgcG9pbnQuXG4gICAgY29uc3QgYTEgPSBnZXRBbmdsZSh4MSwgeTEsIGN4LCBjeSk7XG4gICAgY29uc3QgW3B4MSwgcHkxXSA9IHByb2plY3RQb2ludCh4MSwgeTEsIGExLCBwYWRFbmQpO1xuXG4gICAgLy8gU3RlcCAyICDipJzipI8gRmluZCBzdGFydCBhbmQgZW5kIGFuZ2xlcy5cblxuICAgIC8vIFN0YXJ0IGFuZ2xlXG4gICAgY29uc3QgYXMgPSBnZXRBbmdsZShjeCwgY3ksIHgwLCB5MCk7XG5cbiAgICAvLyBFbmQgYW5nbGVcbiAgICBjb25zdCBhZSA9IGdldEFuZ2xlKGN4LCBjeSwgeDEsIHkxKTtcblxuICAgIC8vIFN0ZXAgMyDipJzipI8gRmluZCBjb250cm9sIHBvaW50IGZvciBwYWRkZWQgcG9pbnRzLlxuXG4gICAgLy8gR2V0IG1pZHBvaW50IGJldHdlZW4gcGFkZGVkIHN0YXJ0IC8gZW5kIHBvaW50cy5cbiAgICBjb25zdCBbbXgxLCBteTFdID0gZ2V0UG9pbnRCZXR3ZWVuKHB4MCwgcHkwLCBweDEsIHB5MSwgMC41KTtcblxuICAgIC8vIEdldCBjb250cm9sIHBvaW50IGZvciBwYWRkZWQgc3RhcnQgLyBlbmQgcG9pbnRzLlxuICAgIGxldCBbY3gxLCBjeTFdID0gZ2V0UG9pbnRCZXR3ZWVuKHB4MCwgcHkwLCBweDEsIHB5MSwgMC41IC0gYXJjKTtcblxuICAgIC8vIFJvdGF0ZSBjb250cm9sIHBvaW50IChjbG9ja3dpc2Ugb3IgY291bnRlcmNsb2Nrd2lzZSkuXG4gICAgW2N4MSwgY3kxXSA9IHJvdGF0ZVBvaW50KGN4MSwgY3kxLCBteDEsIG15MSwgKE1hdGguUEkgLyAyKSAqIHJvdCk7XG5cbiAgICAvLyBGaW5hbGx5LCBhdmVyYWdlIHRoZSB0d28gY29udHJvbCBwb2ludHMuXG4gICAgbGV0IFtjeDIsIGN5Ml0gPSBnZXRQb2ludEJldHdlZW4oY3gsIGN5LCBjeDEsIGN5MSwgMC41KTtcblxuICAgIHJldHVybiBbcHgwLCBweTAsIGN4MiwgY3kyLCBweDEsIHB5MSwgYWUsIGFzLCBhbmdsZV07XG59XG4iXX0=
|
|
@@ -1,100 +0,0 @@
|
|
|
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 the sector of an angle (e.g. quadrant, octant)
|
|
84
|
-
* @param a The angle to check.
|
|
85
|
-
* @param s The number of sectors to check.
|
|
86
|
-
*/
|
|
87
|
-
export function getSector(a, s = 8) {
|
|
88
|
-
return Math.floor(s * (0.5 + ((a / (PI * 2)) % s)));
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get a normal value representing how close two points are from being at a 45 degree angle.
|
|
92
|
-
* @param x0 The x-axis coordinate of the first point.
|
|
93
|
-
* @param y0 The y-axis coordinate of the first point.
|
|
94
|
-
* @param x1 The x-axis coordinate of the second point.
|
|
95
|
-
* @param y1 The y-axis coordinate of the second point.
|
|
96
|
-
*/
|
|
97
|
-
export function getAngliness(x0, y0, x1, y1) {
|
|
98
|
-
return Math.abs((x1 - x0) / 2 / ((y1 - y0) / 2));
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmFwaC12aXovc3JjL3BlcmZlY3QtYXJyb3dzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1Qiw2RUFBNkU7QUFFN0UsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUVuQjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWEsRUFBRSxNQUFnQixFQUFFLE1BQWdCLEVBQUUsS0FBSyxHQUFHLEtBQUs7SUFDckYsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbkMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNyRixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqQixJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUNqQixJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUNsQixPQUFPLE1BQU0sQ0FBQztZQUNsQixDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUNsQixPQUFPLE1BQU0sQ0FBQztZQUNsQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEtBQWE7SUFDbkYsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTFCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVsQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTNCLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQ3RFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQ25FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLENBQVMsRUFBRSxDQUFTO0lBQ3JFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtJQUN2RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlZGl0cyB0byBwZXJmZWN0LWFycm93c1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3N0ZXZlcnVpem9rL3BlcmZlY3QtYXJyb3dzL2Jsb2IvbWFzdGVyL3NyYy9saWIvdXRpbHMudHNcblxuY29uc3QgUEkgPSBNYXRoLlBJO1xuXG4vKipcbiAqIE1vZHVsYXRlIGEgdmFsdWUgYmV0d2VlbiB0d28gcmFuZ2VzLlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gcmFuZ2VBIGZyb20gW2xvdywgaGlnaF1cbiAqIEBwYXJhbSByYW5nZUIgdG8gW2xvdywgaGlnaF1cbiAqIEBwYXJhbSBjbGFtcFxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kdWxhdGUodmFsdWU6IG51bWJlciwgcmFuZ2VBOiBudW1iZXJbXSwgcmFuZ2VCOiBudW1iZXJbXSwgY2xhbXAgPSBmYWxzZSkge1xuICAgIGNvbnN0IFtmcm9tTG93LCBmcm9tSGlnaF0gPSByYW5nZUE7XG4gICAgY29uc3QgW3RvTG93LCB0b0hpZ2hdID0gcmFuZ2VCO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRvTG93ICsgKCh2YWx1ZSAtIGZyb21Mb3cpIC8gKGZyb21IaWdoIC0gZnJvbUxvdykpICogKHRvSGlnaCAtIHRvTG93KTtcbiAgICBpZiAoY2xhbXAgPT09IHRydWUpIHtcbiAgICAgICAgaWYgKHRvTG93IDwgdG9IaWdoKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0IDwgdG9Mb3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Mb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzdWx0ID4gdG9IaWdoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvSGlnaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPiB0b0xvdykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b0xvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPCB0b0hpZ2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9IaWdoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUm90YXRlIGEgcG9pbnQgYXJvdW5kIGEgY2VudGVyLlxuICogQHBhcmFtIHggVGhlIHgtYXhpcyBjb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAqIEBwYXJhbSB5IFRoZSB5LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgcG9pbnQuXG4gKiBAcGFyYW0gY3ggVGhlIHgtYXhpcyBjb29yZGluYXRlIG9mIHRoZSBwb2ludCB0byByb3RhdGUgcm91bmQuXG4gKiBAcGFyYW0gY3kgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBwb2ludCB0byByb3RhdGUgcm91bmQuXG4gKiBAcGFyYW0gYW5nbGUgVGhlIGRpc3RhbmNlIChpbiByYWRpYW5zKSB0byByb3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVQb2ludCh4OiBudW1iZXIsIHk6IG51bWJlciwgY3g6IG51bWJlciwgY3k6IG51bWJlciwgYW5nbGU6IG51bWJlcikge1xuICAgIGNvbnN0IHMgPSBNYXRoLnNpbihhbmdsZSk7XG4gICAgY29uc3QgYyA9IE1hdGguY29zKGFuZ2xlKTtcblxuICAgIGNvbnN0IHB4ID0geCAtIGN4O1xuICAgIGNvbnN0IHB5ID0geSAtIGN5O1xuXG4gICAgY29uc3QgbnggPSBweCAqIGMgLSBweSAqIHM7XG4gICAgY29uc3QgbnkgPSBweCAqIHMgKyBweSAqIGM7XG5cbiAgICByZXR1cm4gW254ICsgY3gsIG55ICsgY3ldO1xufVxuXG4vKipcbiAqIEdldCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0d28gcG9pbnRzLlxuICogQHBhcmFtIHgwIFRoZSB4LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0geTAgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAqIEBwYXJhbSB4MSBUaGUgeC1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqIEBwYXJhbSB5MSBUaGUgeS1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlKHgwOiBudW1iZXIsIHkwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIpIHtcbiAgICByZXR1cm4gTWF0aC5oeXBvdCh5MSAtIHkwLCB4MSAtIHgwKTtcbn1cblxuLyoqXG4gKiBHZXQgYW4gYW5nbGUgKHJhZGlhbnMpIGJldHdlZW4gdHdvIHBvaW50cy5cbiAqIEBwYXJhbSB4MCBUaGUgeC1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIGZpcnN0IHBvaW50LlxuICogQHBhcmFtIHkwIFRoZSB5LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0geDEgVGhlIHgtYXhpcyBjb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgcG9pbnQuXG4gKiBAcGFyYW0geTEgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgcG9pbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmdsZSh4MDogbnVtYmVyLCB5MDogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIoeTEgLSB5MCwgeDEgLSB4MCk7XG59XG5cbi8qKlxuICogTW92ZSBhIHBvaW50IGluIGFuIGFuZ2xlIGJ5IGEgZGlzdGFuY2UuXG4gKiBAcGFyYW0geDBcbiAqIEBwYXJhbSB5MFxuICogQHBhcmFtIGEgYW5nbGUgKHJhZGlhbnMpXG4gKiBAcGFyYW0gZCBkaXN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFBvaW50KHgwOiBudW1iZXIsIHkwOiBudW1iZXIsIGE6IG51bWJlciwgZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFtNYXRoLmNvcyhhKSAqIGQgKyB4MCwgTWF0aC5zaW4oYSkgKiBkICsgeTBdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgc2VjdG9yIG9mIGFuIGFuZ2xlIChlLmcuIHF1YWRyYW50LCBvY3RhbnQpXG4gKiBAcGFyYW0gYSBUaGUgYW5nbGUgdG8gY2hlY2suXG4gKiBAcGFyYW0gcyBUaGUgbnVtYmVyIG9mIHNlY3RvcnMgdG8gY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWN0b3IoYTogbnVtYmVyLCBzID0gOCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHMgKiAoMC41ICsgKChhIC8gKFBJICogMikpICUgcykpKTtcbn1cblxuLyoqXG4gKiBHZXQgYSBub3JtYWwgdmFsdWUgcmVwcmVzZW50aW5nIGhvdyBjbG9zZSB0d28gcG9pbnRzIGFyZSBmcm9tIGJlaW5nIGF0IGEgNDUgZGVncmVlIGFuZ2xlLlxuICogQHBhcmFtIHgwIFRoZSB4LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0geTAgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAqIEBwYXJhbSB4MSBUaGUgeC1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqIEBwYXJhbSB5MSBUaGUgeS1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xpbmVzcyh4MDogbnVtYmVyLCB5MDogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKCh4MSAtIHgwKSAvIDIgLyAoKHkxIC0geTApIC8gMikpO1xufVxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaXQtZ3JhcGgtdml6LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ3JhcGgtdml6L3NyYy9wbGFpdC1ncmFwaC12aXoudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
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
|