@reddb-io/ui 0.1.1 → 0.2.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/build/_app/immutable/assets/0.DQDLkSdR.css +1 -0
- package/build/_app/immutable/assets/Workspace.CvP5De7i.css +1 -0
- package/build/_app/immutable/chunks/65XjEwaF.js +367 -0
- package/build/_app/immutable/chunks/{Ov8N-vxt.js → BHBXmd1Y.js} +1 -1
- package/build/_app/immutable/chunks/BMc_qoms.js +973 -0
- package/build/_app/immutable/chunks/{ALqaDrNQ.js → C278awGv.js} +1 -1
- package/build/_app/immutable/chunks/CDKIdLnm.js +187 -0
- package/build/_app/immutable/chunks/{DXY_Rxa7.js → CXNPJgv1.js} +7 -7
- package/build/_app/immutable/chunks/{BMHKbvs8.js → CwxFwvow.js} +1 -1
- package/build/_app/immutable/chunks/{Bgso8cDH.js → DqvWKbSc.js} +1 -1
- package/build/_app/immutable/entry/app.CGfmRH-N.js +2 -0
- package/build/_app/immutable/entry/start._LhFJimm.js +1 -0
- package/build/_app/immutable/nodes/{0.CHPiFxDo.js → 0.BYhY6O5-.js} +1 -1
- package/build/_app/immutable/nodes/{1.BC_4YZ0h.js → 1.4XYGRMul.js} +1 -1
- package/build/_app/immutable/nodes/11.CAG5_cGP.js +1 -0
- package/build/_app/immutable/nodes/{10.B7DMKSNc.js → 12.DXZfNPNK.js} +5 -5
- package/build/_app/immutable/nodes/7.CAG5_cGP.js +1 -0
- package/build/_app/immutable/nodes/{7.BZX9Iird.js → 8.C7OOsMOJ.js} +1 -1
- package/build/_app/version.json +1 -1
- package/build/index.html +12 -12
- package/dist/embed/{RedUiEmbedRoot-BGoLxJf1.js → RedUiEmbedRoot-Dia9lxfb.js} +12622 -10614
- package/dist/embed/RedUiEmbedRoot-Dia9lxfb.js.map +1 -0
- package/dist/embed/index-Bq0TT7Ao.js +577 -0
- package/dist/embed/{index-B6ZQhCsu.js.map → index-Bq0TT7Ao.js.map} +1 -1
- package/dist/embed/{index-fad77a13.esm-BqPj0saH.js → index-fad77a13.esm-BMULHdcE.js} +22 -20
- package/dist/embed/{index-fad77a13.esm-BqPj0saH.js.map → index-fad77a13.esm-BMULHdcE.js.map} +1 -1
- package/dist/embed/index.js +1 -1
- package/dist/embed/sigma-edge-curve.esm-CAT5Xrom.js +536 -0
- package/dist/embed/sigma-edge-curve.esm-CAT5Xrom.js.map +1 -0
- package/dist/embed/{sigma-node-border.esm-CGtlgqmo.js → sigma-node-border.esm-Bnk4BRbw.js} +32 -32
- package/dist/embed/{sigma-node-border.esm-CGtlgqmo.js.map → sigma-node-border.esm-Bnk4BRbw.js.map} +1 -1
- package/dist/embed/{sigma.esm-y0qgY-OC.js → sigma.esm-C2pqg5JH.js} +3 -3
- package/dist/embed/{sigma.esm-y0qgY-OC.js.map → sigma.esm-C2pqg5JH.js.map} +1 -1
- package/package.json +5 -3
- package/src/lib/Appearance.svelte +90 -0
- package/src/lib/CommandPalette.svelte +2 -0
- package/src/lib/SettingsView.svelte +322 -0
- package/src/lib/Topbar.svelte +15 -1
- package/src/lib/Workspace.svelte +14 -1
- package/src/lib/index.ts +2 -0
- package/src/lib/renderers/GraphRenderer.svelte +448 -44
- package/src/lib/renderers/graph-bundle.ts +401 -0
- package/src/lib/renderers/graph-communities.ts +193 -0
- package/src/lib/renderers/graph-render.ts +48 -5
- package/src/lib/renderers/graph-sigma.ts +274 -8
- package/src/lib/router.svelte.ts +84 -57
- package/src/lib/settings-sections.ts +249 -0
- package/src/lib/skins/skins.svelte.ts +64 -0
- package/src/lib/skins/skins.ts +178 -0
- package/build/_app/immutable/assets/0.C63jY5jX.css +0 -1
- package/build/_app/immutable/assets/Workspace.BCzG1DsH.css +0 -1
- package/build/_app/immutable/chunks/BQHbwf54.js +0 -916
- package/build/_app/immutable/chunks/Bmgx1mfv.js +0 -310
- package/build/_app/immutable/entry/app.D_IVtpdv.js +0 -2
- package/build/_app/immutable/entry/start.3oC0UQ_Q.js +0 -1
- package/dist/embed/RedUiEmbedRoot-BGoLxJf1.js.map +0 -1
- package/dist/embed/index-B6ZQhCsu.js +0 -577
- /package/build/_app/immutable/assets/{10.Dblyk0Kr.css → 12.Dblyk0Kr.css} +0 -0
- /package/build/_app/immutable/nodes/{8.CAG5_cGP.js → 10.CAG5_cGP.js} +0 -0
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
import { D as ne, r as _e, a as he } from "./index-fad77a13.esm-BMULHdcE.js";
|
|
2
|
+
function be(e, t) {
|
|
3
|
+
if (typeof e != "object" || !e) return e;
|
|
4
|
+
var r = e[Symbol.toPrimitive];
|
|
5
|
+
if (r !== void 0) {
|
|
6
|
+
var n = r.call(e, t);
|
|
7
|
+
if (typeof n != "object") return n;
|
|
8
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
9
|
+
}
|
|
10
|
+
return (t === "string" ? String : Number)(e);
|
|
11
|
+
}
|
|
12
|
+
function oe(e) {
|
|
13
|
+
var t = be(e, "string");
|
|
14
|
+
return typeof t == "symbol" ? t : t + "";
|
|
15
|
+
}
|
|
16
|
+
function ie(e, t, r) {
|
|
17
|
+
return (t = oe(t)) in e ? Object.defineProperty(e, t, {
|
|
18
|
+
value: r,
|
|
19
|
+
enumerable: !0,
|
|
20
|
+
configurable: !0,
|
|
21
|
+
writable: !0
|
|
22
|
+
}) : e[t] = r, e;
|
|
23
|
+
}
|
|
24
|
+
function te(e, t) {
|
|
25
|
+
var r = Object.keys(e);
|
|
26
|
+
if (Object.getOwnPropertySymbols) {
|
|
27
|
+
var n = Object.getOwnPropertySymbols(e);
|
|
28
|
+
t && (n = n.filter(function(l) {
|
|
29
|
+
return Object.getOwnPropertyDescriptor(e, l).enumerable;
|
|
30
|
+
})), r.push.apply(r, n);
|
|
31
|
+
}
|
|
32
|
+
return r;
|
|
33
|
+
}
|
|
34
|
+
function z(e) {
|
|
35
|
+
for (var t = 1; t < arguments.length; t++) {
|
|
36
|
+
var r = arguments[t] != null ? arguments[t] : {};
|
|
37
|
+
t % 2 ? te(Object(r), !0).forEach(function(n) {
|
|
38
|
+
ie(e, n, r[n]);
|
|
39
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : te(Object(r)).forEach(function(n) {
|
|
40
|
+
Object.defineProperty(e, n, Object.getOwnPropertyDescriptor(r, n));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return e;
|
|
44
|
+
}
|
|
45
|
+
function ye(e, t) {
|
|
46
|
+
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
|
47
|
+
}
|
|
48
|
+
function me(e, t) {
|
|
49
|
+
for (var r = 0; r < t.length; r++) {
|
|
50
|
+
var n = t[r];
|
|
51
|
+
n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, oe(n.key), n);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function Te(e, t, r) {
|
|
55
|
+
return t && me(e.prototype, t), Object.defineProperty(e, "prototype", {
|
|
56
|
+
writable: !1
|
|
57
|
+
}), e;
|
|
58
|
+
}
|
|
59
|
+
function N(e) {
|
|
60
|
+
return N = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t) {
|
|
61
|
+
return t.__proto__ || Object.getPrototypeOf(t);
|
|
62
|
+
}, N(e);
|
|
63
|
+
}
|
|
64
|
+
function ae() {
|
|
65
|
+
try {
|
|
66
|
+
var e = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
|
|
67
|
+
}));
|
|
68
|
+
} catch {
|
|
69
|
+
}
|
|
70
|
+
return (ae = function() {
|
|
71
|
+
return !!e;
|
|
72
|
+
})();
|
|
73
|
+
}
|
|
74
|
+
function ce(e) {
|
|
75
|
+
if (e === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
76
|
+
return e;
|
|
77
|
+
}
|
|
78
|
+
function xe(e, t) {
|
|
79
|
+
if (t && (typeof t == "object" || typeof t == "function")) return t;
|
|
80
|
+
if (t !== void 0) throw new TypeError("Derived constructors may only return object or undefined");
|
|
81
|
+
return ce(e);
|
|
82
|
+
}
|
|
83
|
+
function we(e, t, r) {
|
|
84
|
+
return t = N(t), xe(e, ae() ? Reflect.construct(t, r || [], N(e).constructor) : t.apply(e, r));
|
|
85
|
+
}
|
|
86
|
+
function V(e, t) {
|
|
87
|
+
return V = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(r, n) {
|
|
88
|
+
return r.__proto__ = n, r;
|
|
89
|
+
}, V(e, t);
|
|
90
|
+
}
|
|
91
|
+
function Ae(e, t) {
|
|
92
|
+
if (typeof t != "function" && t !== null) throw new TypeError("Super expression must either be null or a function");
|
|
93
|
+
e.prototype = Object.create(t && t.prototype, {
|
|
94
|
+
constructor: {
|
|
95
|
+
value: e,
|
|
96
|
+
writable: !0,
|
|
97
|
+
configurable: !0
|
|
98
|
+
}
|
|
99
|
+
}), Object.defineProperty(e, "prototype", {
|
|
100
|
+
writable: !1
|
|
101
|
+
}), t && V(e, t);
|
|
102
|
+
}
|
|
103
|
+
function G(e, t) {
|
|
104
|
+
(t == null || t > e.length) && (t = e.length);
|
|
105
|
+
for (var r = 0, n = Array(t); r < t; r++) n[r] = e[r];
|
|
106
|
+
return n;
|
|
107
|
+
}
|
|
108
|
+
function Ee(e) {
|
|
109
|
+
if (Array.isArray(e)) return G(e);
|
|
110
|
+
}
|
|
111
|
+
function Se(e) {
|
|
112
|
+
if (typeof Symbol < "u" && e[Symbol.iterator] != null || e["@@iterator"] != null) return Array.from(e);
|
|
113
|
+
}
|
|
114
|
+
function Re(e, t) {
|
|
115
|
+
if (e) {
|
|
116
|
+
if (typeof e == "string") return G(e, t);
|
|
117
|
+
var r = {}.toString.call(e).slice(8, -1);
|
|
118
|
+
return r === "Object" && e.constructor && (r = e.constructor.name), r === "Map" || r === "Set" ? Array.from(e) : r === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? G(e, t) : void 0;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function Oe() {
|
|
122
|
+
throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
123
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
|
|
124
|
+
}
|
|
125
|
+
function B(e) {
|
|
126
|
+
return Ee(e) || Se(e) || Re(e) || Oe();
|
|
127
|
+
}
|
|
128
|
+
function ue(e, t, r, n) {
|
|
129
|
+
var l = Math.pow(1 - e, 2) * t.x + 2 * (1 - e) * e * r.x + Math.pow(e, 2) * n.x, i = Math.pow(1 - e, 2) * t.y + 2 * (1 - e) * e * r.y + Math.pow(e, 2) * n.y;
|
|
130
|
+
return {
|
|
131
|
+
x: l,
|
|
132
|
+
y: i
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function ke(e, t, r) {
|
|
136
|
+
for (var n = 20, l = 0, i = e, h = 0; h < n; h++) {
|
|
137
|
+
var u = ue((h + 1) / n, e, t, r);
|
|
138
|
+
l += Math.sqrt(Math.pow(i.x - u.x, 2) + Math.pow(i.y - u.y, 2)), i = u;
|
|
139
|
+
}
|
|
140
|
+
return l;
|
|
141
|
+
}
|
|
142
|
+
function Pe(e) {
|
|
143
|
+
var t = e.curvatureAttribute, r = e.defaultCurvature, n = e.keepLabelUpright, l = n === void 0 ? !0 : n;
|
|
144
|
+
return function(i, h, u, p, x) {
|
|
145
|
+
var b = x.edgeLabelSize, s = h[t] || r, v = x.edgeLabelFont, c = x.edgeLabelWeight, a = x.edgeLabelColor.attribute ? h[x.edgeLabelColor.attribute] || x.edgeLabelColor.color || "#000" : x.edgeLabelColor.color, o = h.label;
|
|
146
|
+
if (o) {
|
|
147
|
+
i.fillStyle = a, i.font = "".concat(c, " ").concat(b, "px ").concat(v);
|
|
148
|
+
var y = !l || u.x < p.x, f = y ? u.x : p.x, _ = y ? u.y : p.y, w = y ? p.x : u.x, d = y ? p.y : u.y, R = (f + w) / 2, m = (_ + d) / 2, T = w - f, A = d - _, g = Math.sqrt(Math.pow(T, 2) + Math.pow(A, 2)), C = y ? 1 : -1, E = R + A * s * C, S = m - T * s * C, k = h.size * 0.7 + 5, I = {
|
|
149
|
+
x: S - _,
|
|
150
|
+
y: -(E - f)
|
|
151
|
+
}, Y = Math.sqrt(Math.pow(I.x, 2) + Math.pow(I.y, 2)), M = {
|
|
152
|
+
x: d - S,
|
|
153
|
+
y: -(w - E)
|
|
154
|
+
}, W = Math.sqrt(Math.pow(M.x, 2) + Math.pow(M.y, 2));
|
|
155
|
+
f += k * I.x / Y, _ += k * I.y / Y, w += k * M.x / W, d += k * M.y / W, E += k * A / g, S -= k * T / g;
|
|
156
|
+
var q = {
|
|
157
|
+
x: E,
|
|
158
|
+
y: S
|
|
159
|
+
}, K = {
|
|
160
|
+
x: f,
|
|
161
|
+
y: _
|
|
162
|
+
}, Q = {
|
|
163
|
+
x: w,
|
|
164
|
+
y: d
|
|
165
|
+
}, j = ke(K, q, Q);
|
|
166
|
+
if (!(j < u.size + p.size)) {
|
|
167
|
+
var L = i.measureText(o).width, $ = j - u.size - p.size;
|
|
168
|
+
if (L > $) {
|
|
169
|
+
var J = "…";
|
|
170
|
+
for (o = o + J, L = i.measureText(o).width; L > $ && o.length > 1; )
|
|
171
|
+
o = o.slice(0, -2) + J, L = i.measureText(o).width;
|
|
172
|
+
if (o.length < 4) return;
|
|
173
|
+
}
|
|
174
|
+
for (var H = {}, U = 0, le = o.length; U < le; U++) {
|
|
175
|
+
var F = o[U];
|
|
176
|
+
H[F] || (H[F] = i.measureText(F).width * (1 + s * 0.35));
|
|
177
|
+
}
|
|
178
|
+
for (var P = 0.5 - L / j / 2, D = 0, fe = o.length; D < fe; D++) {
|
|
179
|
+
var Z = o[D], ee = ue(P, K, q, Q), de = 2 * (1 - P) * (E - f) + 2 * P * (w - E), ge = 2 * (1 - P) * (S - _) + 2 * P * (d - S), pe = Math.atan2(ge, de);
|
|
180
|
+
i.save(), i.translate(ee.x, ee.y), i.rotate(pe), i.fillText(Z, 0, 0), i.restore(), P += H[Z] / j;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function ze(e) {
|
|
187
|
+
var t = e.arrowHead, r = (t == null ? void 0 : t.extremity) === "target" || (t == null ? void 0 : t.extremity) === "both", n = (t == null ? void 0 : t.extremity) === "source" || (t == null ? void 0 : t.extremity) === "both", l = (
|
|
188
|
+
/*glsl*/
|
|
189
|
+
`
|
|
190
|
+
precision highp float;
|
|
191
|
+
|
|
192
|
+
varying vec4 v_color;
|
|
193
|
+
varying float v_thickness;
|
|
194
|
+
varying float v_feather;
|
|
195
|
+
varying vec2 v_cpA;
|
|
196
|
+
varying vec2 v_cpB;
|
|
197
|
+
varying vec2 v_cpC;
|
|
198
|
+
`.concat(r ? `
|
|
199
|
+
varying float v_targetSize;
|
|
200
|
+
varying vec2 v_targetPoint;` : "", `
|
|
201
|
+
`).concat(n ? `
|
|
202
|
+
varying float v_sourceSize;
|
|
203
|
+
varying vec2 v_sourcePoint;` : "", `
|
|
204
|
+
`).concat(t ? `
|
|
205
|
+
uniform float u_lengthToThicknessRatio;
|
|
206
|
+
uniform float u_widenessToThicknessRatio;` : "", `
|
|
207
|
+
|
|
208
|
+
float det(vec2 a, vec2 b) {
|
|
209
|
+
return a.x * b.y - b.x * a.y;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
vec2 getDistanceVector(vec2 b0, vec2 b1, vec2 b2) {
|
|
213
|
+
float a = det(b0, b2), b = 2.0 * det(b1, b0), d = 2.0 * det(b2, b1);
|
|
214
|
+
float f = b * d - a * a;
|
|
215
|
+
vec2 d21 = b2 - b1, d10 = b1 - b0, d20 = b2 - b0;
|
|
216
|
+
vec2 gf = 2.0 * (b * d21 + d * d10 + a * d20);
|
|
217
|
+
gf = vec2(gf.y, -gf.x);
|
|
218
|
+
vec2 pp = -f * gf / dot(gf, gf);
|
|
219
|
+
vec2 d0p = b0 - pp;
|
|
220
|
+
float ap = det(d0p, d20), bp = 2.0 * det(d10, d0p);
|
|
221
|
+
float t = clamp((ap + bp) / (2.0 * a + b + d), 0.0, 1.0);
|
|
222
|
+
return mix(mix(b0, b1, t), mix(b1, b2, t), t);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
float distToQuadraticBezierCurve(vec2 p, vec2 b0, vec2 b1, vec2 b2) {
|
|
226
|
+
return length(getDistanceVector(b0 - p, b1 - p, b2 - p));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const vec4 transparent = vec4(0.0, 0.0, 0.0, 0.0);
|
|
230
|
+
|
|
231
|
+
void main(void) {
|
|
232
|
+
float dist = distToQuadraticBezierCurve(gl_FragCoord.xy, v_cpA, v_cpB, v_cpC);
|
|
233
|
+
float thickness = v_thickness;
|
|
234
|
+
`).concat(r ? `
|
|
235
|
+
float distToTarget = length(gl_FragCoord.xy - v_targetPoint);
|
|
236
|
+
float targetArrowLength = v_targetSize + thickness * u_lengthToThicknessRatio;
|
|
237
|
+
if (distToTarget < targetArrowLength) {
|
|
238
|
+
thickness = (distToTarget - v_targetSize) / (targetArrowLength - v_targetSize) * u_widenessToThicknessRatio * thickness;
|
|
239
|
+
}` : "", `
|
|
240
|
+
`).concat(n ? `
|
|
241
|
+
float distToSource = length(gl_FragCoord.xy - v_sourcePoint);
|
|
242
|
+
float sourceArrowLength = v_sourceSize + thickness * u_lengthToThicknessRatio;
|
|
243
|
+
if (distToSource < sourceArrowLength) {
|
|
244
|
+
thickness = (distToSource - v_sourceSize) / (sourceArrowLength - v_sourceSize) * u_widenessToThicknessRatio * thickness;
|
|
245
|
+
}` : "", `
|
|
246
|
+
|
|
247
|
+
float halfThickness = thickness / 2.0;
|
|
248
|
+
if (dist < halfThickness) {
|
|
249
|
+
#ifdef PICKING_MODE
|
|
250
|
+
gl_FragColor = v_color;
|
|
251
|
+
#else
|
|
252
|
+
float t = smoothstep(
|
|
253
|
+
halfThickness - v_feather,
|
|
254
|
+
halfThickness,
|
|
255
|
+
dist
|
|
256
|
+
);
|
|
257
|
+
|
|
258
|
+
gl_FragColor = mix(v_color, transparent, t);
|
|
259
|
+
#endif
|
|
260
|
+
} else {
|
|
261
|
+
gl_FragColor = transparent;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
`)
|
|
265
|
+
);
|
|
266
|
+
return l;
|
|
267
|
+
}
|
|
268
|
+
function Ce(e) {
|
|
269
|
+
var t = e.arrowHead, r = (t == null ? void 0 : t.extremity) === "target" || (t == null ? void 0 : t.extremity) === "both", n = (t == null ? void 0 : t.extremity) === "source" || (t == null ? void 0 : t.extremity) === "both", l = (
|
|
270
|
+
/*glsl*/
|
|
271
|
+
`
|
|
272
|
+
attribute vec4 a_id;
|
|
273
|
+
attribute vec4 a_color;
|
|
274
|
+
attribute float a_direction;
|
|
275
|
+
attribute float a_thickness;
|
|
276
|
+
attribute vec2 a_source;
|
|
277
|
+
attribute vec2 a_target;
|
|
278
|
+
attribute float a_current;
|
|
279
|
+
attribute float a_curvature;
|
|
280
|
+
`.concat(r ? `attribute float a_targetSize;
|
|
281
|
+
` : "", `
|
|
282
|
+
`).concat(n ? `attribute float a_sourceSize;
|
|
283
|
+
` : "", `
|
|
284
|
+
|
|
285
|
+
uniform mat3 u_matrix;
|
|
286
|
+
uniform float u_sizeRatio;
|
|
287
|
+
uniform float u_pixelRatio;
|
|
288
|
+
uniform vec2 u_dimensions;
|
|
289
|
+
uniform float u_minEdgeThickness;
|
|
290
|
+
uniform float u_feather;
|
|
291
|
+
|
|
292
|
+
varying vec4 v_color;
|
|
293
|
+
varying float v_thickness;
|
|
294
|
+
varying float v_feather;
|
|
295
|
+
varying vec2 v_cpA;
|
|
296
|
+
varying vec2 v_cpB;
|
|
297
|
+
varying vec2 v_cpC;
|
|
298
|
+
`).concat(r ? `
|
|
299
|
+
varying float v_targetSize;
|
|
300
|
+
varying vec2 v_targetPoint;` : "", `
|
|
301
|
+
`).concat(n ? `
|
|
302
|
+
varying float v_sourceSize;
|
|
303
|
+
varying vec2 v_sourcePoint;` : "", `
|
|
304
|
+
`).concat(t ? `
|
|
305
|
+
uniform float u_widenessToThicknessRatio;` : "", `
|
|
306
|
+
|
|
307
|
+
const float bias = 255.0 / 254.0;
|
|
308
|
+
const float epsilon = 0.7;
|
|
309
|
+
|
|
310
|
+
vec2 clipspaceToViewport(vec2 pos, vec2 dimensions) {
|
|
311
|
+
return vec2(
|
|
312
|
+
(pos.x + 1.0) * dimensions.x / 2.0,
|
|
313
|
+
(pos.y + 1.0) * dimensions.y / 2.0
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
vec2 viewportToClipspace(vec2 pos, vec2 dimensions) {
|
|
318
|
+
return vec2(
|
|
319
|
+
pos.x / dimensions.x * 2.0 - 1.0,
|
|
320
|
+
pos.y / dimensions.y * 2.0 - 1.0
|
|
321
|
+
);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
void main() {
|
|
325
|
+
float minThickness = u_minEdgeThickness;
|
|
326
|
+
|
|
327
|
+
// Selecting the correct position
|
|
328
|
+
// Branchless "position = a_source if a_current == 1.0 else a_target"
|
|
329
|
+
vec2 position = a_source * max(0.0, a_current) + a_target * max(0.0, 1.0 - a_current);
|
|
330
|
+
position = (u_matrix * vec3(position, 1)).xy;
|
|
331
|
+
|
|
332
|
+
vec2 source = (u_matrix * vec3(a_source, 1)).xy;
|
|
333
|
+
vec2 target = (u_matrix * vec3(a_target, 1)).xy;
|
|
334
|
+
|
|
335
|
+
vec2 viewportPosition = clipspaceToViewport(position, u_dimensions);
|
|
336
|
+
vec2 viewportSource = clipspaceToViewport(source, u_dimensions);
|
|
337
|
+
vec2 viewportTarget = clipspaceToViewport(target, u_dimensions);
|
|
338
|
+
|
|
339
|
+
vec2 delta = viewportTarget.xy - viewportSource.xy;
|
|
340
|
+
float len = length(delta);
|
|
341
|
+
vec2 normal = vec2(-delta.y, delta.x) * a_direction;
|
|
342
|
+
vec2 unitNormal = normal / len;
|
|
343
|
+
float boundingBoxThickness = len * a_curvature;
|
|
344
|
+
|
|
345
|
+
float curveThickness = max(minThickness, a_thickness / u_sizeRatio);
|
|
346
|
+
v_thickness = curveThickness * u_pixelRatio;
|
|
347
|
+
v_feather = u_feather;
|
|
348
|
+
|
|
349
|
+
v_cpA = viewportSource;
|
|
350
|
+
v_cpB = 0.5 * (viewportSource + viewportTarget) + unitNormal * a_direction * boundingBoxThickness;
|
|
351
|
+
v_cpC = viewportTarget;
|
|
352
|
+
|
|
353
|
+
vec2 viewportOffsetPosition = (
|
|
354
|
+
viewportPosition +
|
|
355
|
+
unitNormal * (boundingBoxThickness / 2.0 + sign(boundingBoxThickness) * (`).concat(t ? "curveThickness * u_widenessToThicknessRatio" : "curveThickness", ` + epsilon)) *
|
|
356
|
+
max(0.0, a_direction) // NOTE: cutting the bounding box in half to avoid overdraw
|
|
357
|
+
);
|
|
358
|
+
|
|
359
|
+
position = viewportToClipspace(viewportOffsetPosition, u_dimensions);
|
|
360
|
+
gl_Position = vec4(position, 0, 1);
|
|
361
|
+
|
|
362
|
+
`).concat(r ? `
|
|
363
|
+
v_targetSize = a_targetSize * u_pixelRatio / u_sizeRatio;
|
|
364
|
+
v_targetPoint = viewportTarget;
|
|
365
|
+
` : "", `
|
|
366
|
+
`).concat(n ? `
|
|
367
|
+
v_sourceSize = a_sourceSize * u_pixelRatio / u_sizeRatio;
|
|
368
|
+
v_sourcePoint = viewportSource;
|
|
369
|
+
` : "", `
|
|
370
|
+
|
|
371
|
+
#ifdef PICKING_MODE
|
|
372
|
+
// For picking mode, we use the ID as the color:
|
|
373
|
+
v_color = a_id;
|
|
374
|
+
#else
|
|
375
|
+
// For normal mode, we use the color:
|
|
376
|
+
v_color = a_color;
|
|
377
|
+
#endif
|
|
378
|
+
|
|
379
|
+
v_color.a *= bias;
|
|
380
|
+
}
|
|
381
|
+
`)
|
|
382
|
+
);
|
|
383
|
+
return l;
|
|
384
|
+
}
|
|
385
|
+
var se = 0.25, Le = {
|
|
386
|
+
arrowHead: null,
|
|
387
|
+
curvatureAttribute: "curvature",
|
|
388
|
+
defaultCurvature: se
|
|
389
|
+
}, Ie = {
|
|
390
|
+
edgeIndexAttribute: "parallelIndex",
|
|
391
|
+
edgeMinIndexAttribute: "parallelMinIndex",
|
|
392
|
+
edgeMaxIndexAttribute: "parallelMaxIndex"
|
|
393
|
+
};
|
|
394
|
+
function je(e, t) {
|
|
395
|
+
var r = z(z({}, Ie), t || {}), n = {}, l = {}, i = {}, h = 0;
|
|
396
|
+
e.forEachNode(function(m) {
|
|
397
|
+
n[m] = ++h + "";
|
|
398
|
+
}), e.forEachEdge(function(m, T, A, g) {
|
|
399
|
+
var C = n[A], E = n[g], S = [C, E].join("-");
|
|
400
|
+
l[m] = S, i[S] = [C, E].sort().join("-");
|
|
401
|
+
});
|
|
402
|
+
var u = {}, p = {};
|
|
403
|
+
e.forEachEdge(function(m) {
|
|
404
|
+
var T = l[m], A = i[T];
|
|
405
|
+
u[T] = u[T] || [], u[T].push(m), p[A] = p[A] || [], p[A].push(m);
|
|
406
|
+
});
|
|
407
|
+
for (var x in u) {
|
|
408
|
+
var b = u[x], s = b.length, v = p[i[x]].length;
|
|
409
|
+
if (s === 1 && v === 1) {
|
|
410
|
+
var c = b[0];
|
|
411
|
+
e.setEdgeAttribute(c, r.edgeIndexAttribute, null), e.setEdgeAttribute(c, r.edgeMaxIndexAttribute, null);
|
|
412
|
+
} else if (s === 1) {
|
|
413
|
+
var a = b[0];
|
|
414
|
+
e.setEdgeAttribute(a, r.edgeIndexAttribute, 1), e.setEdgeAttribute(a, r.edgeMaxIndexAttribute, 1);
|
|
415
|
+
} else if (s === v)
|
|
416
|
+
for (var o = (s - 1) / 2, y = -o, f = 0; f < s; f++) {
|
|
417
|
+
var _ = b[f], w = -(s - 1) / 2 + f;
|
|
418
|
+
e.setEdgeAttribute(_, r.edgeIndexAttribute, w), e.setEdgeAttribute(_, r.edgeMinIndexAttribute, y), e.setEdgeAttribute(_, r.edgeMaxIndexAttribute, o);
|
|
419
|
+
}
|
|
420
|
+
else
|
|
421
|
+
for (var d = 0; d < s; d++) {
|
|
422
|
+
var R = b[d];
|
|
423
|
+
e.setEdgeAttribute(R, r.edgeIndexAttribute, d + 1), e.setEdgeAttribute(R, r.edgeMaxIndexAttribute, s);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
var ve = WebGLRenderingContext, re = ve.UNSIGNED_BYTE, O = ve.FLOAT;
|
|
428
|
+
function X(e) {
|
|
429
|
+
var t = z(z({}, Le), e || {}), r = t, n = r.arrowHead, l = r.curvatureAttribute, i = r.drawLabel, h = (n == null ? void 0 : n.extremity) === "target" || (n == null ? void 0 : n.extremity) === "both", u = (n == null ? void 0 : n.extremity) === "source" || (n == null ? void 0 : n.extremity) === "both", p = ["u_matrix", "u_sizeRatio", "u_dimensions", "u_pixelRatio", "u_feather", "u_minEdgeThickness"].concat(B(n ? ["u_lengthToThicknessRatio", "u_widenessToThicknessRatio"] : []));
|
|
430
|
+
return /* @__PURE__ */ (function(x) {
|
|
431
|
+
Ae(b, x);
|
|
432
|
+
function b() {
|
|
433
|
+
var s;
|
|
434
|
+
ye(this, b);
|
|
435
|
+
for (var v = arguments.length, c = new Array(v), a = 0; a < v; a++)
|
|
436
|
+
c[a] = arguments[a];
|
|
437
|
+
return s = we(this, b, [].concat(c)), ie(ce(s), "drawLabel", i || Pe(t)), s;
|
|
438
|
+
}
|
|
439
|
+
return Te(b, [{
|
|
440
|
+
key: "getDefinition",
|
|
441
|
+
value: function() {
|
|
442
|
+
return {
|
|
443
|
+
VERTICES: 6,
|
|
444
|
+
VERTEX_SHADER_SOURCE: Ce(t),
|
|
445
|
+
FRAGMENT_SHADER_SOURCE: ze(t),
|
|
446
|
+
METHOD: WebGLRenderingContext.TRIANGLES,
|
|
447
|
+
UNIFORMS: p,
|
|
448
|
+
ATTRIBUTES: [{
|
|
449
|
+
name: "a_source",
|
|
450
|
+
size: 2,
|
|
451
|
+
type: O
|
|
452
|
+
}, {
|
|
453
|
+
name: "a_target",
|
|
454
|
+
size: 2,
|
|
455
|
+
type: O
|
|
456
|
+
}].concat(B(h ? [{
|
|
457
|
+
name: "a_targetSize",
|
|
458
|
+
size: 1,
|
|
459
|
+
type: O
|
|
460
|
+
}] : []), B(u ? [{
|
|
461
|
+
name: "a_sourceSize",
|
|
462
|
+
size: 1,
|
|
463
|
+
type: O
|
|
464
|
+
}] : []), [{
|
|
465
|
+
name: "a_thickness",
|
|
466
|
+
size: 1,
|
|
467
|
+
type: O
|
|
468
|
+
}, {
|
|
469
|
+
name: "a_curvature",
|
|
470
|
+
size: 1,
|
|
471
|
+
type: O
|
|
472
|
+
}, {
|
|
473
|
+
name: "a_color",
|
|
474
|
+
size: 4,
|
|
475
|
+
type: re,
|
|
476
|
+
normalized: !0
|
|
477
|
+
}, {
|
|
478
|
+
name: "a_id",
|
|
479
|
+
size: 4,
|
|
480
|
+
type: re,
|
|
481
|
+
normalized: !0
|
|
482
|
+
}]),
|
|
483
|
+
CONSTANT_ATTRIBUTES: [
|
|
484
|
+
{
|
|
485
|
+
name: "a_current",
|
|
486
|
+
size: 1,
|
|
487
|
+
type: O
|
|
488
|
+
},
|
|
489
|
+
// TODO: could optimize to bool
|
|
490
|
+
{
|
|
491
|
+
name: "a_direction",
|
|
492
|
+
size: 1,
|
|
493
|
+
type: O
|
|
494
|
+
}
|
|
495
|
+
// TODO: could optimize to byte
|
|
496
|
+
],
|
|
497
|
+
CONSTANT_DATA: [[0, 1], [0, -1], [1, 1], [0, -1], [1, 1], [1, -1]]
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
}, {
|
|
501
|
+
key: "processVisibleItem",
|
|
502
|
+
value: function(v, c, a, o, y) {
|
|
503
|
+
var f, _ = y.size || 1, w = a.x, d = a.y, R = o.x, m = o.y, T = _e(y.color), A = (f = y[l]) !== null && f !== void 0 ? f : se, g = this.array;
|
|
504
|
+
g[c++] = w, g[c++] = d, g[c++] = R, g[c++] = m, h && (g[c++] = o.size), u && (g[c++] = a.size), g[c++] = _, g[c++] = A, g[c++] = T, g[c++] = v;
|
|
505
|
+
}
|
|
506
|
+
}, {
|
|
507
|
+
key: "setUniforms",
|
|
508
|
+
value: function(v, c) {
|
|
509
|
+
var a = c.gl, o = c.uniformLocations, y = o.u_matrix, f = o.u_pixelRatio, _ = o.u_feather, w = o.u_sizeRatio, d = o.u_dimensions, R = o.u_minEdgeThickness;
|
|
510
|
+
if (a.uniformMatrix3fv(y, !1, v.matrix), a.uniform1f(f, v.pixelRatio), a.uniform1f(w, v.sizeRatio), a.uniform1f(_, v.antiAliasingFeather), a.uniform2f(d, v.width * v.pixelRatio, v.height * v.pixelRatio), a.uniform1f(R, v.minEdgeThickness), n) {
|
|
511
|
+
var m = o.u_lengthToThicknessRatio, T = o.u_widenessToThicknessRatio;
|
|
512
|
+
a.uniform1f(m, n.lengthToThicknessRatio), a.uniform1f(T, n.widenessToThicknessRatio);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}]), b;
|
|
516
|
+
})(he);
|
|
517
|
+
}
|
|
518
|
+
var Ne = X(), He = X({
|
|
519
|
+
arrowHead: ne
|
|
520
|
+
}), Ue = X({
|
|
521
|
+
arrowHead: z(z({}, ne), {}, {
|
|
522
|
+
extremity: "both"
|
|
523
|
+
})
|
|
524
|
+
});
|
|
525
|
+
export {
|
|
526
|
+
se as DEFAULT_EDGE_CURVATURE,
|
|
527
|
+
Le as DEFAULT_EDGE_CURVE_PROGRAM_OPTIONS,
|
|
528
|
+
Ie as DEFAULT_INDEX_PARALLEL_EDGES_OPTIONS,
|
|
529
|
+
He as EdgeCurvedArrowProgram,
|
|
530
|
+
Ue as EdgeCurvedDoubleArrowProgram,
|
|
531
|
+
Pe as createDrawCurvedEdgeLabel,
|
|
532
|
+
X as createEdgeCurveProgram,
|
|
533
|
+
Ne as default,
|
|
534
|
+
je as indexParallelEdgesIndex
|
|
535
|
+
};
|
|
536
|
+
//# sourceMappingURL=sigma-edge-curve.esm-CAT5Xrom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigma-edge-curve.esm-CAT5Xrom.js","sources":["../../../../node_modules/.pnpm/@sigma+edge-curve@3.1.0_sigma@3.0.3_graphology-types@0.24.8_/node_modules/@sigma/edge-curve/dist/sigma-edge-curve.esm.js"],"sourcesContent":["import { EdgeProgram, DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS } from 'sigma/rendering';\nimport { floatColor } from 'sigma/utils';\n\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\n\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\nfunction _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\n\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\n\nfunction _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\n\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function () {\n return !!t;\n })();\n}\n\nfunction _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\n\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == typeof e || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return _assertThisInitialized(t);\n}\n\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\n\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\n\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && _setPrototypeOf(t, e);\n}\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\n\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\n\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\n\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\n\nfunction getCurvePoint(t, p0, p1, p2) {\n var x = Math.pow(1 - t, 2) * p0.x + 2 * (1 - t) * t * p1.x + Math.pow(t, 2) * p2.x;\n var y = Math.pow(1 - t, 2) * p0.y + 2 * (1 - t) * t * p1.y + Math.pow(t, 2) * p2.y;\n return {\n x: x,\n y: y\n };\n}\nfunction getCurveLength(p0, p1, p2) {\n var steps = 20;\n var length = 0;\n var lastPoint = p0;\n for (var i = 0; i < steps; i++) {\n var point = getCurvePoint((i + 1) / steps, p0, p1, p2);\n length += Math.sqrt(Math.pow(lastPoint.x - point.x, 2) + Math.pow(lastPoint.y - point.y, 2));\n lastPoint = point;\n }\n return length;\n}\nfunction createDrawCurvedEdgeLabel(_ref) {\n var curvatureAttribute = _ref.curvatureAttribute,\n defaultCurvature = _ref.defaultCurvature,\n _ref$keepLabelUpright = _ref.keepLabelUpright,\n keepLabelUpright = _ref$keepLabelUpright === void 0 ? true : _ref$keepLabelUpright;\n return function (context, edgeData, sourceData, targetData, settings) {\n var size = settings.edgeLabelSize,\n curvature = edgeData[curvatureAttribute] || defaultCurvature,\n font = settings.edgeLabelFont,\n weight = settings.edgeLabelWeight,\n color = settings.edgeLabelColor.attribute ? edgeData[settings.edgeLabelColor.attribute] || settings.edgeLabelColor.color || \"#000\" : settings.edgeLabelColor.color;\n var label = edgeData.label;\n if (!label) return;\n context.fillStyle = color;\n context.font = \"\".concat(weight, \" \").concat(size, \"px \").concat(font);\n\n // Computing positions without considering nodes sizes:\n var ltr = !keepLabelUpright || sourceData.x < targetData.x;\n var sourceX = ltr ? sourceData.x : targetData.x;\n var sourceY = ltr ? sourceData.y : targetData.y;\n var targetX = ltr ? targetData.x : sourceData.x;\n var targetY = ltr ? targetData.y : sourceData.y;\n var centerX = (sourceX + targetX) / 2;\n var centerY = (sourceY + targetY) / 2;\n var diffX = targetX - sourceX;\n var diffY = targetY - sourceY;\n var diff = Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2));\n // Anchor point:\n var orientation = ltr ? 1 : -1;\n var anchorX = centerX + diffY * curvature * orientation;\n var anchorY = centerY - diffX * curvature * orientation;\n\n // Adapt curve points to edge thickness:\n var offset = edgeData.size * 0.7 + 5;\n var sourceOffsetVector = {\n x: anchorY - sourceY,\n y: -(anchorX - sourceX)\n };\n var sourceOffsetVectorLength = Math.sqrt(Math.pow(sourceOffsetVector.x, 2) + Math.pow(sourceOffsetVector.y, 2));\n var targetOffsetVector = {\n x: targetY - anchorY,\n y: -(targetX - anchorX)\n };\n var targetOffsetVectorLength = Math.sqrt(Math.pow(targetOffsetVector.x, 2) + Math.pow(targetOffsetVector.y, 2));\n sourceX += offset * sourceOffsetVector.x / sourceOffsetVectorLength;\n sourceY += offset * sourceOffsetVector.y / sourceOffsetVectorLength;\n targetX += offset * targetOffsetVector.x / targetOffsetVectorLength;\n targetY += offset * targetOffsetVector.y / targetOffsetVectorLength;\n // For anchor, the vector is simpler, so it is inlined:\n anchorX += offset * diffY / diff;\n anchorY -= offset * diffX / diff;\n\n // Compute curve length:\n var anchorPoint = {\n x: anchorX,\n y: anchorY\n };\n var sourcePoint = {\n x: sourceX,\n y: sourceY\n };\n var targetPoint = {\n x: targetX,\n y: targetY\n };\n var curveLength = getCurveLength(sourcePoint, anchorPoint, targetPoint);\n if (curveLength < sourceData.size + targetData.size) return;\n\n // Handling ellipsis\n var textLength = context.measureText(label).width;\n var availableTextLength = curveLength - sourceData.size - targetData.size;\n if (textLength > availableTextLength) {\n var ellipsis = \"…\";\n label = label + ellipsis;\n textLength = context.measureText(label).width;\n while (textLength > availableTextLength && label.length > 1) {\n label = label.slice(0, -2) + ellipsis;\n textLength = context.measureText(label).width;\n }\n if (label.length < 4) return;\n }\n\n // Measure each character:\n var charactersLengthCache = {};\n for (var i = 0, length = label.length; i < length; i++) {\n var character = label[i];\n if (!charactersLengthCache[character]) {\n charactersLengthCache[character] = context.measureText(character).width * (1 + curvature * 0.35);\n }\n }\n\n // Draw each character:\n var t = 0.5 - textLength / curveLength / 2;\n for (var _i = 0, _length = label.length; _i < _length; _i++) {\n var _character = label[_i];\n var point = getCurvePoint(t, sourcePoint, anchorPoint, targetPoint);\n var tangentX = 2 * (1 - t) * (anchorX - sourceX) + 2 * t * (targetX - anchorX);\n var tangentY = 2 * (1 - t) * (anchorY - sourceY) + 2 * t * (targetY - anchorY);\n var angle = Math.atan2(tangentY, tangentX);\n context.save();\n context.translate(point.x, point.y);\n context.rotate(angle);\n\n // Dessiner le caractère\n context.fillText(_character, 0, 0);\n context.restore();\n t += charactersLengthCache[_character] / curveLength;\n }\n };\n}\n\nfunction getFragmentShader(_ref) {\n var arrowHead = _ref.arrowHead;\n var hasTargetArrowHead = (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"target\" || (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"both\";\n var hasSourceArrowHead = (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"source\" || (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"both\";\n\n // language=GLSL\n var SHADER = /*glsl*/\"\\nprecision highp float;\\n\\nvarying vec4 v_color;\\nvarying float v_thickness;\\nvarying float v_feather;\\nvarying vec2 v_cpA;\\nvarying vec2 v_cpB;\\nvarying vec2 v_cpC;\\n\".concat(hasTargetArrowHead ? \"\\nvarying float v_targetSize;\\nvarying vec2 v_targetPoint;\" : \"\", \"\\n\").concat(hasSourceArrowHead ? \"\\nvarying float v_sourceSize;\\nvarying vec2 v_sourcePoint;\" : \"\", \"\\n\").concat(arrowHead ? \"\\nuniform float u_lengthToThicknessRatio;\\nuniform float u_widenessToThicknessRatio;\" : \"\", \"\\n\\nfloat det(vec2 a, vec2 b) {\\n return a.x * b.y - b.x * a.y;\\n}\\n\\nvec2 getDistanceVector(vec2 b0, vec2 b1, vec2 b2) {\\n float a = det(b0, b2), b = 2.0 * det(b1, b0), d = 2.0 * det(b2, b1);\\n float f = b * d - a * a;\\n vec2 d21 = b2 - b1, d10 = b1 - b0, d20 = b2 - b0;\\n vec2 gf = 2.0 * (b * d21 + d * d10 + a * d20);\\n gf = vec2(gf.y, -gf.x);\\n vec2 pp = -f * gf / dot(gf, gf);\\n vec2 d0p = b0 - pp;\\n float ap = det(d0p, d20), bp = 2.0 * det(d10, d0p);\\n float t = clamp((ap + bp) / (2.0 * a + b + d), 0.0, 1.0);\\n return mix(mix(b0, b1, t), mix(b1, b2, t), t);\\n}\\n\\nfloat distToQuadraticBezierCurve(vec2 p, vec2 b0, vec2 b1, vec2 b2) {\\n return length(getDistanceVector(b0 - p, b1 - p, b2 - p));\\n}\\n\\nconst vec4 transparent = vec4(0.0, 0.0, 0.0, 0.0);\\n\\nvoid main(void) {\\n float dist = distToQuadraticBezierCurve(gl_FragCoord.xy, v_cpA, v_cpB, v_cpC);\\n float thickness = v_thickness;\\n\").concat(hasTargetArrowHead ? \"\\n float distToTarget = length(gl_FragCoord.xy - v_targetPoint);\\n float targetArrowLength = v_targetSize + thickness * u_lengthToThicknessRatio;\\n if (distToTarget < targetArrowLength) {\\n thickness = (distToTarget - v_targetSize) / (targetArrowLength - v_targetSize) * u_widenessToThicknessRatio * thickness;\\n }\" : \"\", \"\\n\").concat(hasSourceArrowHead ? \"\\n float distToSource = length(gl_FragCoord.xy - v_sourcePoint);\\n float sourceArrowLength = v_sourceSize + thickness * u_lengthToThicknessRatio;\\n if (distToSource < sourceArrowLength) {\\n thickness = (distToSource - v_sourceSize) / (sourceArrowLength - v_sourceSize) * u_widenessToThicknessRatio * thickness;\\n }\" : \"\", \"\\n\\n float halfThickness = thickness / 2.0;\\n if (dist < halfThickness) {\\n #ifdef PICKING_MODE\\n gl_FragColor = v_color;\\n #else\\n float t = smoothstep(\\n halfThickness - v_feather,\\n halfThickness,\\n dist\\n );\\n\\n gl_FragColor = mix(v_color, transparent, t);\\n #endif\\n } else {\\n gl_FragColor = transparent;\\n }\\n}\\n\");\n return SHADER;\n}\n\nfunction getVertexShader(_ref) {\n var arrowHead = _ref.arrowHead;\n var hasTargetArrowHead = (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"target\" || (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"both\";\n var hasSourceArrowHead = (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"source\" || (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"both\";\n\n // language=GLSL\n var SHADER = /*glsl*/\"\\nattribute vec4 a_id;\\nattribute vec4 a_color;\\nattribute float a_direction;\\nattribute float a_thickness;\\nattribute vec2 a_source;\\nattribute vec2 a_target;\\nattribute float a_current;\\nattribute float a_curvature;\\n\".concat(hasTargetArrowHead ? \"attribute float a_targetSize;\\n\" : \"\", \"\\n\").concat(hasSourceArrowHead ? \"attribute float a_sourceSize;\\n\" : \"\", \"\\n\\nuniform mat3 u_matrix;\\nuniform float u_sizeRatio;\\nuniform float u_pixelRatio;\\nuniform vec2 u_dimensions;\\nuniform float u_minEdgeThickness;\\nuniform float u_feather;\\n\\nvarying vec4 v_color;\\nvarying float v_thickness;\\nvarying float v_feather;\\nvarying vec2 v_cpA;\\nvarying vec2 v_cpB;\\nvarying vec2 v_cpC;\\n\").concat(hasTargetArrowHead ? \"\\nvarying float v_targetSize;\\nvarying vec2 v_targetPoint;\" : \"\", \"\\n\").concat(hasSourceArrowHead ? \"\\nvarying float v_sourceSize;\\nvarying vec2 v_sourcePoint;\" : \"\", \"\\n\").concat(arrowHead ? \"\\nuniform float u_widenessToThicknessRatio;\" : \"\", \"\\n\\nconst float bias = 255.0 / 254.0;\\nconst float epsilon = 0.7;\\n\\nvec2 clipspaceToViewport(vec2 pos, vec2 dimensions) {\\n return vec2(\\n (pos.x + 1.0) * dimensions.x / 2.0,\\n (pos.y + 1.0) * dimensions.y / 2.0\\n );\\n}\\n\\nvec2 viewportToClipspace(vec2 pos, vec2 dimensions) {\\n return vec2(\\n pos.x / dimensions.x * 2.0 - 1.0,\\n pos.y / dimensions.y * 2.0 - 1.0\\n );\\n}\\n\\nvoid main() {\\n float minThickness = u_minEdgeThickness;\\n\\n // Selecting the correct position\\n // Branchless \\\"position = a_source if a_current == 1.0 else a_target\\\"\\n vec2 position = a_source * max(0.0, a_current) + a_target * max(0.0, 1.0 - a_current);\\n position = (u_matrix * vec3(position, 1)).xy;\\n\\n vec2 source = (u_matrix * vec3(a_source, 1)).xy;\\n vec2 target = (u_matrix * vec3(a_target, 1)).xy;\\n\\n vec2 viewportPosition = clipspaceToViewport(position, u_dimensions);\\n vec2 viewportSource = clipspaceToViewport(source, u_dimensions);\\n vec2 viewportTarget = clipspaceToViewport(target, u_dimensions);\\n\\n vec2 delta = viewportTarget.xy - viewportSource.xy;\\n float len = length(delta);\\n vec2 normal = vec2(-delta.y, delta.x) * a_direction;\\n vec2 unitNormal = normal / len;\\n float boundingBoxThickness = len * a_curvature;\\n\\n float curveThickness = max(minThickness, a_thickness / u_sizeRatio);\\n v_thickness = curveThickness * u_pixelRatio;\\n v_feather = u_feather;\\n\\n v_cpA = viewportSource;\\n v_cpB = 0.5 * (viewportSource + viewportTarget) + unitNormal * a_direction * boundingBoxThickness;\\n v_cpC = viewportTarget;\\n\\n vec2 viewportOffsetPosition = (\\n viewportPosition +\\n unitNormal * (boundingBoxThickness / 2.0 + sign(boundingBoxThickness) * (\").concat(arrowHead ? \"curveThickness * u_widenessToThicknessRatio\" : \"curveThickness\", \" + epsilon)) *\\n max(0.0, a_direction) // NOTE: cutting the bounding box in half to avoid overdraw\\n );\\n\\n position = viewportToClipspace(viewportOffsetPosition, u_dimensions);\\n gl_Position = vec4(position, 0, 1);\\n \\n\").concat(hasTargetArrowHead ? \"\\n v_targetSize = a_targetSize * u_pixelRatio / u_sizeRatio;\\n v_targetPoint = viewportTarget;\\n\" : \"\", \"\\n\").concat(hasSourceArrowHead ? \"\\n v_sourceSize = a_sourceSize * u_pixelRatio / u_sizeRatio;\\n v_sourcePoint = viewportSource;\\n\" : \"\", \"\\n\\n #ifdef PICKING_MODE\\n // For picking mode, we use the ID as the color:\\n v_color = a_id;\\n #else\\n // For normal mode, we use the color:\\n v_color = a_color;\\n #endif\\n\\n v_color.a *= bias;\\n}\\n\");\n return SHADER;\n}\n\nvar DEFAULT_EDGE_CURVATURE = 0.25;\nvar DEFAULT_EDGE_CURVE_PROGRAM_OPTIONS = {\n arrowHead: null,\n curvatureAttribute: \"curvature\",\n defaultCurvature: DEFAULT_EDGE_CURVATURE\n};\n\n/**\n * This function helps to identify parallel edges, to adjust their curvatures.\n */\nvar DEFAULT_INDEX_PARALLEL_EDGES_OPTIONS = {\n edgeIndexAttribute: \"parallelIndex\",\n edgeMinIndexAttribute: \"parallelMinIndex\",\n edgeMaxIndexAttribute: \"parallelMaxIndex\"\n};\nfunction indexParallelEdgesIndex(graph, options) {\n var opts = _objectSpread2(_objectSpread2({}, DEFAULT_INDEX_PARALLEL_EDGES_OPTIONS), options || {});\n var nodeIDsMapping = {};\n var edgeDirectedIDsMapping = {};\n var edgeUndirectedIDsMapping = {};\n\n // Normalize IDs:\n var incr = 0;\n graph.forEachNode(function (node) {\n nodeIDsMapping[node] = ++incr + \"\";\n });\n graph.forEachEdge(function (edge, _attrs, source, target) {\n var sourceId = nodeIDsMapping[source];\n var targetId = nodeIDsMapping[target];\n var directedId = [sourceId, targetId].join(\"-\");\n edgeDirectedIDsMapping[edge] = directedId;\n edgeUndirectedIDsMapping[directedId] = [sourceId, targetId].sort().join(\"-\");\n });\n\n // Index edge unique IDs, only based on their extremities:\n var directedIndex = {};\n var undirectedIndex = {};\n graph.forEachEdge(function (edge) {\n var directedId = edgeDirectedIDsMapping[edge];\n var undirectedId = edgeUndirectedIDsMapping[directedId];\n directedIndex[directedId] = directedIndex[directedId] || [];\n directedIndex[directedId].push(edge);\n undirectedIndex[undirectedId] = undirectedIndex[undirectedId] || [];\n undirectedIndex[undirectedId].push(edge);\n });\n\n // Store index attributes:\n for (var directedId in directedIndex) {\n var edges = directedIndex[directedId];\n var directedCount = edges.length;\n var undirectedCount = undirectedIndex[edgeUndirectedIDsMapping[directedId]].length;\n\n // If the edge is alone, in both side:\n if (directedCount === 1 && undirectedCount === 1) {\n var edge = edges[0];\n graph.setEdgeAttribute(edge, opts.edgeIndexAttribute, null);\n graph.setEdgeAttribute(edge, opts.edgeMaxIndexAttribute, null);\n }\n\n // If the edge is alone, but there is at least one edge in the opposite direction:\n else if (directedCount === 1) {\n var _edge = edges[0];\n graph.setEdgeAttribute(_edge, opts.edgeIndexAttribute, 1);\n graph.setEdgeAttribute(_edge, opts.edgeMaxIndexAttribute, 1);\n }\n\n // If the edge is not alone, and all edges are in the same direction:\n else if (directedCount === undirectedCount) {\n var max = (directedCount - 1) / 2;\n var min = -max;\n for (var i = 0; i < directedCount; i++) {\n var _edge2 = edges[i];\n var edgeIndex = -(directedCount - 1) / 2 + i;\n graph.setEdgeAttribute(_edge2, opts.edgeIndexAttribute, edgeIndex);\n graph.setEdgeAttribute(_edge2, opts.edgeMinIndexAttribute, min);\n graph.setEdgeAttribute(_edge2, opts.edgeMaxIndexAttribute, max);\n }\n }\n\n // If the edge is not alone, and there are edges in both directions:\n else {\n for (var _i = 0; _i < directedCount; _i++) {\n var _edge3 = edges[_i];\n graph.setEdgeAttribute(_edge3, opts.edgeIndexAttribute, _i + 1);\n graph.setEdgeAttribute(_edge3, opts.edgeMaxIndexAttribute, directedCount);\n }\n }\n }\n}\n\nvar _WebGLRenderingContex = WebGLRenderingContext,\n UNSIGNED_BYTE = _WebGLRenderingContex.UNSIGNED_BYTE,\n FLOAT = _WebGLRenderingContex.FLOAT;\nfunction createEdgeCurveProgram(inputOptions) {\n var options = _objectSpread2(_objectSpread2({}, DEFAULT_EDGE_CURVE_PROGRAM_OPTIONS), inputOptions || {});\n var _ref = options,\n arrowHead = _ref.arrowHead,\n curvatureAttribute = _ref.curvatureAttribute,\n drawLabel = _ref.drawLabel;\n var hasTargetArrowHead = (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"target\" || (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"both\";\n var hasSourceArrowHead = (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"source\" || (arrowHead === null || arrowHead === void 0 ? void 0 : arrowHead.extremity) === \"both\";\n var UNIFORMS = [\"u_matrix\", \"u_sizeRatio\", \"u_dimensions\", \"u_pixelRatio\", \"u_feather\", \"u_minEdgeThickness\"].concat(_toConsumableArray(arrowHead ? [\"u_lengthToThicknessRatio\", \"u_widenessToThicknessRatio\"] : []));\n return /*#__PURE__*/function (_EdgeProgram) {\n _inherits(EdgeCurveProgram, _EdgeProgram);\n function EdgeCurveProgram() {\n var _this;\n _classCallCheck(this, EdgeCurveProgram);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, EdgeCurveProgram, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"drawLabel\", drawLabel || createDrawCurvedEdgeLabel(options));\n return _this;\n }\n _createClass(EdgeCurveProgram, [{\n key: \"getDefinition\",\n value: function getDefinition() {\n return {\n VERTICES: 6,\n VERTEX_SHADER_SOURCE: getVertexShader(options),\n FRAGMENT_SHADER_SOURCE: getFragmentShader(options),\n METHOD: WebGLRenderingContext.TRIANGLES,\n UNIFORMS: UNIFORMS,\n ATTRIBUTES: [{\n name: \"a_source\",\n size: 2,\n type: FLOAT\n }, {\n name: \"a_target\",\n size: 2,\n type: FLOAT\n }].concat(_toConsumableArray(hasTargetArrowHead ? [{\n name: \"a_targetSize\",\n size: 1,\n type: FLOAT\n }] : []), _toConsumableArray(hasSourceArrowHead ? [{\n name: \"a_sourceSize\",\n size: 1,\n type: FLOAT\n }] : []), [{\n name: \"a_thickness\",\n size: 1,\n type: FLOAT\n }, {\n name: \"a_curvature\",\n size: 1,\n type: FLOAT\n }, {\n name: \"a_color\",\n size: 4,\n type: UNSIGNED_BYTE,\n normalized: true\n }, {\n name: \"a_id\",\n size: 4,\n type: UNSIGNED_BYTE,\n normalized: true\n }]),\n CONSTANT_ATTRIBUTES: [{\n name: \"a_current\",\n size: 1,\n type: FLOAT\n },\n // TODO: could optimize to bool\n {\n name: \"a_direction\",\n size: 1,\n type: FLOAT\n } // TODO: could optimize to byte\n ],\n CONSTANT_DATA: [[0, 1], [0, -1], [1, 1], [0, -1], [1, 1], [1, -1]]\n };\n }\n }, {\n key: \"processVisibleItem\",\n value: function processVisibleItem(edgeIndex, startIndex, sourceData, targetData, data) {\n var _data;\n var thickness = data.size || 1;\n var x1 = sourceData.x;\n var y1 = sourceData.y;\n var x2 = targetData.x;\n var y2 = targetData.y;\n var color = floatColor(data.color);\n var curvature = (_data = data[curvatureAttribute]) !== null && _data !== void 0 ? _data : DEFAULT_EDGE_CURVATURE;\n var array = this.array;\n\n // First point\n array[startIndex++] = x1;\n array[startIndex++] = y1;\n array[startIndex++] = x2;\n array[startIndex++] = y2;\n if (hasTargetArrowHead) array[startIndex++] = targetData.size;\n if (hasSourceArrowHead) array[startIndex++] = sourceData.size;\n array[startIndex++] = thickness;\n array[startIndex++] = curvature;\n array[startIndex++] = color;\n array[startIndex++] = edgeIndex;\n }\n }, {\n key: \"setUniforms\",\n value: function setUniforms(params, _ref2) {\n var gl = _ref2.gl,\n uniformLocations = _ref2.uniformLocations;\n var u_matrix = uniformLocations.u_matrix,\n u_pixelRatio = uniformLocations.u_pixelRatio,\n u_feather = uniformLocations.u_feather,\n u_sizeRatio = uniformLocations.u_sizeRatio,\n u_dimensions = uniformLocations.u_dimensions,\n u_minEdgeThickness = uniformLocations.u_minEdgeThickness;\n gl.uniformMatrix3fv(u_matrix, false, params.matrix);\n gl.uniform1f(u_pixelRatio, params.pixelRatio);\n gl.uniform1f(u_sizeRatio, params.sizeRatio);\n gl.uniform1f(u_feather, params.antiAliasingFeather);\n gl.uniform2f(u_dimensions, params.width * params.pixelRatio, params.height * params.pixelRatio);\n gl.uniform1f(u_minEdgeThickness, params.minEdgeThickness);\n if (arrowHead) {\n var u_lengthToThicknessRatio = uniformLocations.u_lengthToThicknessRatio,\n u_widenessToThicknessRatio = uniformLocations.u_widenessToThicknessRatio;\n gl.uniform1f(u_lengthToThicknessRatio, arrowHead.lengthToThicknessRatio);\n gl.uniform1f(u_widenessToThicknessRatio, arrowHead.widenessToThicknessRatio);\n }\n }\n }]);\n return EdgeCurveProgram;\n }(EdgeProgram);\n}\n\nvar EdgeCurveProgram = createEdgeCurveProgram();\nvar EdgeCurvedArrowProgram = createEdgeCurveProgram({\n arrowHead: DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS\n});\nvar EdgeCurvedDoubleArrowProgram = createEdgeCurveProgram({\n arrowHead: _objectSpread2(_objectSpread2({}, DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS), {}, {\n extremity: \"both\"\n })\n});\n\nexport { DEFAULT_EDGE_CURVATURE, DEFAULT_EDGE_CURVE_PROGRAM_OPTIONS, DEFAULT_INDEX_PARALLEL_EDGES_OPTIONS, EdgeCurvedArrowProgram, EdgeCurvedDoubleArrowProgram, createDrawCurvedEdgeLabel, createEdgeCurveProgram, EdgeCurveProgram as default, indexParallelEdgesIndex };\n"],"names":["_toPrimitive","t","r","e","i","_toPropertyKey","_defineProperty","ownKeys","o","_objectSpread2","_classCallCheck","a","n","_defineProperties","_createClass","_getPrototypeOf","_isNativeReflectConstruct","_assertThisInitialized","_possibleConstructorReturn","_callSuper","_setPrototypeOf","_inherits","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_toConsumableArray","getCurvePoint","p0","p1","p2","x","y","getCurveLength","steps","length","lastPoint","point","createDrawCurvedEdgeLabel","_ref","curvatureAttribute","defaultCurvature","_ref$keepLabelUpright","keepLabelUpright","context","edgeData","sourceData","targetData","settings","size","curvature","font","weight","color","label","ltr","sourceX","sourceY","targetX","targetY","centerX","centerY","diffX","diffY","diff","orientation","anchorX","anchorY","offset","sourceOffsetVector","sourceOffsetVectorLength","targetOffsetVector","targetOffsetVectorLength","anchorPoint","sourcePoint","targetPoint","curveLength","textLength","availableTextLength","ellipsis","charactersLengthCache","character","_i","_length","_character","tangentX","tangentY","angle","getFragmentShader","arrowHead","hasTargetArrowHead","hasSourceArrowHead","SHADER","getVertexShader","DEFAULT_EDGE_CURVATURE","DEFAULT_EDGE_CURVE_PROGRAM_OPTIONS","DEFAULT_INDEX_PARALLEL_EDGES_OPTIONS","indexParallelEdgesIndex","graph","options","opts","nodeIDsMapping","edgeDirectedIDsMapping","edgeUndirectedIDsMapping","incr","node","edge","_attrs","source","target","sourceId","targetId","directedId","directedIndex","undirectedIndex","undirectedId","edges","directedCount","undirectedCount","_edge","max","min","_edge2","edgeIndex","_edge3","_WebGLRenderingContex","UNSIGNED_BYTE","FLOAT","createEdgeCurveProgram","inputOptions","drawLabel","UNIFORMS","_EdgeProgram","EdgeCurveProgram","_this","_len","args","_key","startIndex","data","_data","thickness","x1","y1","x2","y2","floatColor","array","params","_ref2","gl","uniformLocations","u_matrix","u_pixelRatio","u_feather","u_sizeRatio","u_dimensions","u_minEdgeThickness","u_lengthToThicknessRatio","u_widenessToThicknessRatio","EdgeProgram","EdgeCurvedArrowProgram","DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS","EdgeCurvedDoubleArrowProgram"],"mappings":";AAGA,SAASA,GAAaC,GAAGC,GAAG;AAC1B,MAAgB,OAAOD,KAAnB,YAAwB,CAACA,EAAG,QAAOA;AACvC,MAAIE,IAAIF,EAAE,OAAO,WAAW;AAC5B,MAAeE,MAAX,QAAc;AAChB,QAAIC,IAAID,EAAE,KAAKF,GAAGC,CAAc;AAChC,QAAgB,OAAOE,KAAnB,SAAsB,QAAOA;AACjC,UAAM,IAAI,UAAU,8CAA8C;AAAA,EACpE;AACA,UAAqBF,MAAb,WAAiB,SAAS,QAAQD,CAAC;AAC7C;AAEA,SAASI,GAAeJ,GAAG;AACzB,MAAIG,IAAIJ,GAAaC,GAAG,QAAQ;AAChC,SAAmB,OAAOG,KAAnB,WAAuBA,IAAIA,IAAI;AACxC;AAEA,SAASE,GAAgB,GAAGJ,GAAGD,GAAG;AAChC,UAAQC,IAAIG,GAAeH,CAAC,MAAM,IAAI,OAAO,eAAe,GAAGA,GAAG;AAAA,IAChE,OAAOD;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,UAAU;AAAA,EACd,CAAG,IAAI,EAAEC,CAAC,IAAID,GAAG;AACjB;AAEA,SAASM,GAAQ,GAAGL,GAAG;AACrB,MAAID,IAAI,OAAO,KAAK,CAAC;AACrB,MAAI,OAAO,uBAAuB;AAChC,QAAIO,IAAI,OAAO,sBAAsB,CAAC;AACtC,IAAAN,MAAMM,IAAIA,EAAE,OAAO,SAAUN,GAAG;AAC9B,aAAO,OAAO,yBAAyB,GAAGA,CAAC,EAAE;AAAA,IAC/C,CAAC,IAAID,EAAE,KAAK,MAAMA,GAAGO,CAAC;AAAA,EACxB;AACA,SAAOP;AACT;AACA,SAASQ,EAAe,GAAG;AACzB,WAASP,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AACzC,QAAID,IAAY,UAAUC,CAAC,KAAnB,OAAuB,UAAUA,CAAC,IAAI,CAAA;AAC9C,IAAAA,IAAI,IAAIK,GAAQ,OAAON,CAAC,GAAG,EAAE,EAAE,QAAQ,SAAUC,GAAG;AAClD,MAAAI,GAAgB,GAAGJ,GAAGD,EAAEC,CAAC,CAAC;AAAA,IAC5B,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0BD,CAAC,CAAC,IAAIM,GAAQ,OAAON,CAAC,CAAC,EAAE,QAAQ,SAAUC,GAAG;AAChJ,aAAO,eAAe,GAAGA,GAAG,OAAO,yBAAyBD,GAAGC,CAAC,CAAC;AAAA,IACnE,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAASQ,GAAgBC,GAAGC,GAAG;AAC7B,MAAI,EAAED,aAAaC,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAChF;AAEA,SAASC,GAAkB,GAAGX,GAAG;AAC/B,WAASD,IAAI,GAAGA,IAAIC,EAAE,QAAQD,KAAK;AACjC,QAAIO,IAAIN,EAAED,CAAC;AACX,IAAAO,EAAE,aAAaA,EAAE,cAAc,IAAIA,EAAE,eAAe,IAAI,WAAWA,MAAMA,EAAE,WAAW,KAAK,OAAO,eAAe,GAAGH,GAAeG,EAAE,GAAG,GAAGA,CAAC;AAAA,EAC9I;AACF;AACA,SAASM,GAAa,GAAGZ,GAAGD,GAAG;AAC7B,SAAOC,KAAKW,GAAkB,EAAE,WAAWX,CAAC,GAAiC,OAAO,eAAe,GAAG,aAAa;AAAA,IACjH,UAAU;AAAA,EACd,CAAG,GAAG;AACN;AAEA,SAASa,EAAgBd,GAAG;AAC1B,SAAOc,IAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAI,IAAK,SAAU,GAAG;AAC3F,WAAO,EAAE,aAAa,OAAO,eAAe,CAAC;AAAA,EAC/C,GAAGA,EAAgBd,CAAC;AACtB;AAEA,SAASe,KAA4B;AACnC,MAAI;AACF,QAAIf,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAA,GAAI,WAAY;AAAA,IAAC,CAAC,CAAC;AAAA,EACxF,QAAY;AAAA,EAAC;AACb,UAAQe,KAA4B,WAAY;AAC9C,WAAO,CAAC,CAACf;AAAA,EACX,GAAC;AACH;AAEA,SAASgB,GAAuB,GAAG;AACjC,MAAe,MAAX,OAAc,OAAM,IAAI,eAAe,2DAA2D;AACtG,SAAO;AACT;AAEA,SAASC,GAA2BjB,GAAGE,GAAG;AACxC,MAAIA,MAAkB,OAAOA,KAAnB,YAAsC,OAAOA,KAArB,YAAyB,QAAOA;AAClE,MAAeA,MAAX,OAAc,OAAM,IAAI,UAAU,0DAA0D;AAChG,SAAOc,GAAuBhB,CAAC;AACjC;AAEA,SAASkB,GAAWlB,GAAGO,GAAGL,GAAG;AAC3B,SAAOK,IAAIO,EAAgBP,CAAC,GAAGU,GAA2BjB,GAAGe,GAAyB,IAAK,QAAQ,UAAUR,GAAGL,KAAK,CAAA,GAAIY,EAAgBd,CAAC,EAAE,WAAW,IAAIO,EAAE,MAAMP,GAAGE,CAAC,CAAC;AAC1K;AAEA,SAASiB,EAAgBnB,GAAGE,GAAG;AAC7B,SAAOiB,IAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAI,IAAK,SAAUnB,GAAGE,GAAG;AAC9F,WAAOF,EAAE,YAAYE,GAAGF;AAAA,EAC1B,GAAGmB,EAAgBnB,GAAGE,CAAC;AACzB;AAEA,SAASkB,GAAUpB,GAAGE,GAAG;AACvB,MAAkB,OAAOA,KAArB,cAAmCA,MAAT,KAAY,OAAM,IAAI,UAAU,oDAAoD;AAClH,EAAAF,EAAE,YAAY,OAAO,OAAOE,KAAKA,EAAE,WAAW;AAAA,IAC5C,aAAa;AAAA,MACX,OAAOF;AAAA,MACP,UAAU;AAAA,MACV,cAAc;AAAA,IACpB;AAAA,EACA,CAAG,GAAG,OAAO,eAAeA,GAAG,aAAa;AAAA,IACxC,UAAU;AAAA,EACd,CAAG,GAAGE,KAAKiB,EAAgBnB,GAAGE,CAAC;AAC/B;AAEA,SAASmB,EAAkBpB,GAAGS,GAAG;AAC/B,GAASA,KAAR,QAAaA,IAAIT,EAAE,YAAYS,IAAIT,EAAE;AACtC,WAASC,IAAI,GAAG,IAAI,MAAMQ,CAAC,GAAGR,IAAIQ,GAAGR,IAAK,GAAEA,CAAC,IAAID,EAAEC,CAAC;AACpD,SAAO;AACT;AAEA,SAASoB,GAAmBrB,GAAG;AAC7B,MAAI,MAAM,QAAQA,CAAC,EAAG,QAAOoB,EAAkBpB,CAAC;AAClD;AAEA,SAASsB,GAAiBtB,GAAG;AAC3B,MAAmB,OAAO,SAAtB,OAAwCA,EAAE,OAAO,QAAQ,KAAzB,QAAsCA,EAAE,YAAY,KAAtB,KAAyB,QAAO,MAAM,KAAKA,CAAC;AAChH;AAEA,SAASuB,GAA4BvB,GAAGS,GAAG;AACzC,MAAIT,GAAG;AACL,QAAgB,OAAOA,KAAnB,SAAsB,QAAOoB,EAAkBpB,GAAGS,CAAC;AACvD,QAAIV,IAAI,CAAA,EAAG,SAAS,KAAKC,CAAC,EAAE,MAAM,GAAG,EAAE;AACvC,WAAoBD,MAAb,YAAkBC,EAAE,gBAAgBD,IAAIC,EAAE,YAAY,OAAiBD,MAAV,SAAyBA,MAAV,QAAc,MAAM,KAAKC,CAAC,IAAoBD,MAAhB,eAAqB,2CAA2C,KAAKA,CAAC,IAAIqB,EAAkBpB,GAAGS,CAAC,IAAI;AAAA,EACvN;AACF;AAEA,SAASe,KAAqB;AAC5B,QAAM,IAAI,UAAU;AAAA,mFAAsI;AAC5J;AAEA,SAASC,EAAmBzB,GAAG;AAC7B,SAAOqB,GAAmBrB,CAAC,KAAKsB,GAAiBtB,CAAC,KAAKuB,GAA4BvB,CAAC,KAAKwB,GAAkB;AAC7G;AAEA,SAASE,GAAc3B,GAAG4B,GAAIC,GAAIC,GAAI;AACpC,MAAIC,IAAI,KAAK,IAAI,IAAI/B,GAAG,CAAC,IAAI4B,EAAG,IAAI,KAAK,IAAI5B,KAAKA,IAAI6B,EAAG,IAAI,KAAK,IAAI7B,GAAG,CAAC,IAAI8B,EAAG,GAC7EE,IAAI,KAAK,IAAI,IAAIhC,GAAG,CAAC,IAAI4B,EAAG,IAAI,KAAK,IAAI5B,KAAKA,IAAI6B,EAAG,IAAI,KAAK,IAAI7B,GAAG,CAAC,IAAI8B,EAAG;AACjF,SAAO;AAAA,IACL,GAAGC;AAAA,IACH,GAAGC;AAAA,EACP;AACA;AACA,SAASC,GAAeL,GAAIC,GAAIC,GAAI;AAIlC,WAHII,IAAQ,IACRC,IAAS,GACTC,IAAYR,GACPzB,IAAI,GAAGA,IAAI+B,GAAO/B,KAAK;AAC9B,QAAIkC,IAAQV,IAAexB,IAAI,KAAK+B,GAAON,GAAIC,GAAIC,CAAE;AACrD,IAAAK,KAAU,KAAK,KAAK,KAAK,IAAIC,EAAU,IAAIC,EAAM,GAAG,CAAC,IAAI,KAAK,IAAID,EAAU,IAAIC,EAAM,GAAG,CAAC,CAAC,GAC3FD,IAAYC;AAAA,EACd;AACA,SAAOF;AACT;AACA,SAASG,GAA0BC,GAAM;AACvC,MAAIC,IAAqBD,EAAK,oBAC5BE,IAAmBF,EAAK,kBACxBG,IAAwBH,EAAK,kBAC7BI,IAAmBD,MAA0B,SAAS,KAAOA;AAC/D,SAAO,SAAUE,GAASC,GAAUC,GAAYC,GAAYC,GAAU;AACpE,QAAIC,IAAOD,EAAS,eAClBE,IAAYL,EAASL,CAAkB,KAAKC,GAC5CU,IAAOH,EAAS,eAChBI,IAASJ,EAAS,iBAClBK,IAAQL,EAAS,eAAe,YAAYH,EAASG,EAAS,eAAe,SAAS,KAAKA,EAAS,eAAe,SAAS,SAASA,EAAS,eAAe,OAC3JM,IAAQT,EAAS;AACrB,QAAKS,GACL;AAAA,MAAAV,EAAQ,YAAYS,GACpBT,EAAQ,OAAO,GAAG,OAAOQ,GAAQ,GAAG,EAAE,OAAOH,GAAM,KAAK,EAAE,OAAOE,CAAI;AAGrE,UAAII,IAAM,CAACZ,KAAoBG,EAAW,IAAIC,EAAW,GACrDS,IAAUD,IAAMT,EAAW,IAAIC,EAAW,GAC1CU,IAAUF,IAAMT,EAAW,IAAIC,EAAW,GAC1CW,IAAUH,IAAMR,EAAW,IAAID,EAAW,GAC1Ca,IAAUJ,IAAMR,EAAW,IAAID,EAAW,GAC1Cc,KAAWJ,IAAUE,KAAW,GAChCG,KAAWJ,IAAUE,KAAW,GAChCG,IAAQJ,IAAUF,GAClBO,IAAQJ,IAAUF,GAClBO,IAAO,KAAK,KAAK,KAAK,IAAIF,GAAO,CAAC,IAAI,KAAK,IAAIC,GAAO,CAAC,CAAC,GAExDE,IAAcV,IAAM,IAAI,IACxBW,IAAUN,IAAUG,IAAQb,IAAYe,GACxCE,IAAUN,IAAUC,IAAQZ,IAAYe,GAGxCG,IAASvB,EAAS,OAAO,MAAM,GAC/BwB,IAAqB;AAAA,QACvB,GAAGF,IAAUV;AAAA,QACb,GAAG,EAAES,IAAUV;AAAA,MACrB,GACQc,IAA2B,KAAK,KAAK,KAAK,IAAID,EAAmB,GAAG,CAAC,IAAI,KAAK,IAAIA,EAAmB,GAAG,CAAC,CAAC,GAC1GE,IAAqB;AAAA,QACvB,GAAGZ,IAAUQ;AAAA,QACb,GAAG,EAAET,IAAUQ;AAAA,MACrB,GACQM,IAA2B,KAAK,KAAK,KAAK,IAAID,EAAmB,GAAG,CAAC,IAAI,KAAK,IAAIA,EAAmB,GAAG,CAAC,CAAC;AAC9G,MAAAf,KAAWY,IAASC,EAAmB,IAAIC,GAC3Cb,KAAWW,IAASC,EAAmB,IAAIC,GAC3CZ,KAAWU,IAASG,EAAmB,IAAIC,GAC3Cb,KAAWS,IAASG,EAAmB,IAAIC,GAE3CN,KAAWE,IAASL,IAAQC,GAC5BG,KAAWC,IAASN,IAAQE;AAG5B,UAAIS,IAAc;AAAA,QAChB,GAAGP;AAAA,QACH,GAAGC;AAAA,MACT,GACQO,IAAc;AAAA,QAChB,GAAGlB;AAAA,QACH,GAAGC;AAAA,MACT,GACQkB,IAAc;AAAA,QAChB,GAAGjB;AAAA,QACH,GAAGC;AAAA,MACT,GACQiB,IAAc3C,GAAeyC,GAAaD,GAAaE,CAAW;AACtE,UAAI,EAAAC,IAAc9B,EAAW,OAAOC,EAAW,OAG/C;AAAA,YAAI8B,IAAajC,EAAQ,YAAYU,CAAK,EAAE,OACxCwB,IAAsBF,IAAc9B,EAAW,OAAOC,EAAW;AACrE,YAAI8B,IAAaC,GAAqB;AACpC,cAAIC,IAAW;AAGf,eAFAzB,IAAQA,IAAQyB,GAChBF,IAAajC,EAAQ,YAAYU,CAAK,EAAE,OACjCuB,IAAaC,KAAuBxB,EAAM,SAAS;AACxD,YAAAA,IAAQA,EAAM,MAAM,GAAG,EAAE,IAAIyB,GAC7BF,IAAajC,EAAQ,YAAYU,CAAK,EAAE;AAE1C,cAAIA,EAAM,SAAS,EAAG;AAAA,QACxB;AAIA,iBADI0B,IAAwB,CAAA,GACnB7E,IAAI,GAAGgC,KAASmB,EAAM,QAAQnD,IAAIgC,IAAQhC,KAAK;AACtD,cAAI8E,IAAY3B,EAAMnD,CAAC;AACvB,UAAK6E,EAAsBC,CAAS,MAClCD,EAAsBC,CAAS,IAAIrC,EAAQ,YAAYqC,CAAS,EAAE,SAAS,IAAI/B,IAAY;AAAA,QAE/F;AAIA,iBADIlD,IAAI,MAAM6E,IAAaD,IAAc,GAChCM,IAAK,GAAGC,KAAU7B,EAAM,QAAQ4B,IAAKC,IAASD,KAAM;AAC3D,cAAIE,IAAa9B,EAAM4B,CAAE,GACrB7C,KAAQV,GAAc3B,GAAG0E,GAAaD,GAAaE,CAAW,GAC9DU,KAAW,KAAK,IAAIrF,MAAMkE,IAAUV,KAAW,IAAIxD,KAAK0D,IAAUQ,IAClEoB,KAAW,KAAK,IAAItF,MAAMmE,IAAUV,KAAW,IAAIzD,KAAK2D,IAAUQ,IAClEoB,KAAQ,KAAK,MAAMD,IAAUD,EAAQ;AACzC,UAAAzC,EAAQ,KAAI,GACZA,EAAQ,UAAUP,GAAM,GAAGA,GAAM,CAAC,GAClCO,EAAQ,OAAO2C,EAAK,GAGpB3C,EAAQ,SAASwC,GAAY,GAAG,CAAC,GACjCxC,EAAQ,QAAO,GACf5C,KAAKgF,EAAsBI,CAAU,IAAIR;AAAA,QAC3C;AAAA;AAAA;AAAA,EACF;AACF;AAEA,SAASY,GAAkBjD,GAAM;AAC/B,MAAIkD,IAAYlD,EAAK,WACjBmD,KAAsBD,KAAc,OAA+B,SAASA,EAAU,eAAe,aAAaA,KAAc,OAA+B,SAASA,EAAU,eAAe,QACjME,KAAsBF,KAAc,OAA+B,SAASA,EAAU,eAAe,aAAaA,KAAc,OAA+B,SAASA,EAAU,eAAe,QAGjMG;AAAA;AAAA,IAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA2K,OAAOF,IAAqB;AAAA;AAAA,+BAA+D,IAAI;AAAA,CAAI,EAAE,OAAOC,IAAqB;AAAA;AAAA,+BAA+D,IAAI;AAAA,CAAI,EAAE,OAAOF,IAAY;AAAA;AAAA,6CAAyF,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAg5B,EAAE,OAAOC,IAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,OAAsU,IAAI;AAAA,CAAI,EAAE,OAAOC,IAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,OAAsU,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAA4W;AAAA;AAC18E,SAAOC;AACT;AAEA,SAASC,GAAgBtD,GAAM;AAC7B,MAAIkD,IAAYlD,EAAK,WACjBmD,KAAsBD,KAAc,OAA+B,SAASA,EAAU,eAAe,aAAaA,KAAc,OAA+B,SAASA,EAAU,eAAe,QACjME,KAAsBF,KAAc,OAA+B,SAASA,EAAU,eAAe,aAAaA,KAAc,OAA+B,SAASA,EAAU,eAAe,QAGjMG;AAAA;AAAA,IAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA8N,OAAOF,IAAqB;AAAA,IAAoC,IAAI;AAAA,CAAI,EAAE,OAAOC,IAAqB;AAAA,IAAoC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAA8T,EAAE,OAAOD,IAAqB;AAAA;AAAA,+BAA+D,IAAI;AAAA,CAAI,EAAE,OAAOC,IAAqB;AAAA;AAAA,+BAA+D,IAAI;AAAA,CAAI,EAAE,OAAOF,IAAY;AAAA,6CAAgD,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8EAA8pD,EAAE,OAAOA,IAAY,gDAAgD,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAuO,EAAE,OAAOC,IAAqB;AAAA;AAAA;AAAA,IAAuG,IAAI;AAAA,CAAI,EAAE,OAAOC,IAAqB;AAAA;AAAA;AAAA,IAAuG,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAiN;AAAA;AACr5G,SAAOC;AACT;AAEG,IAACE,KAAyB,MACzBC,KAAqC;AAAA,EACvC,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,kBAAkBD;AACpB,GAKIE,KAAuC;AAAA,EACzC,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,uBAAuB;AACzB;AACA,SAASC,GAAwBC,GAAOC,GAAS;AAC/C,MAAIC,IAAO5F,EAAeA,EAAe,CAAA,GAAIwF,EAAoC,GAAGG,KAAW,EAAE,GAC7FE,IAAiB,CAAA,GACjBC,IAAyB,CAAA,GACzBC,IAA2B,CAAA,GAG3BC,IAAO;AACX,EAAAN,EAAM,YAAY,SAAUO,GAAM;AAChC,IAAAJ,EAAeI,CAAI,IAAI,EAAED,IAAO;AAAA,EAClC,CAAC,GACDN,EAAM,YAAY,SAAUQ,GAAMC,GAAQC,GAAQC,GAAQ;AACxD,QAAIC,IAAWT,EAAeO,CAAM,GAChCG,IAAWV,EAAeQ,CAAM,GAChCG,IAAa,CAACF,GAAUC,CAAQ,EAAE,KAAK,GAAG;AAC9C,IAAAT,EAAuBI,CAAI,IAAIM,GAC/BT,EAAyBS,CAAU,IAAI,CAACF,GAAUC,CAAQ,EAAE,KAAI,EAAG,KAAK,GAAG;AAAA,EAC7E,CAAC;AAGD,MAAIE,IAAgB,CAAA,GAChBC,IAAkB,CAAA;AACtB,EAAAhB,EAAM,YAAY,SAAUQ,GAAM;AAChC,QAAIM,IAAaV,EAAuBI,CAAI,GACxCS,IAAeZ,EAAyBS,CAAU;AACtD,IAAAC,EAAcD,CAAU,IAAIC,EAAcD,CAAU,KAAK,CAAA,GACzDC,EAAcD,CAAU,EAAE,KAAKN,CAAI,GACnCQ,EAAgBC,CAAY,IAAID,EAAgBC,CAAY,KAAK,CAAA,GACjED,EAAgBC,CAAY,EAAE,KAAKT,CAAI;AAAA,EACzC,CAAC;AAGD,WAASM,KAAcC,GAAe;AACpC,QAAIG,IAAQH,EAAcD,CAAU,GAChCK,IAAgBD,EAAM,QACtBE,IAAkBJ,EAAgBX,EAAyBS,CAAU,CAAC,EAAE;AAG5E,QAAIK,MAAkB,KAAKC,MAAoB,GAAG;AAChD,UAAIZ,IAAOU,EAAM,CAAC;AAClB,MAAAlB,EAAM,iBAAiBQ,GAAMN,EAAK,oBAAoB,IAAI,GAC1DF,EAAM,iBAAiBQ,GAAMN,EAAK,uBAAuB,IAAI;AAAA,IAC/D,WAGSiB,MAAkB,GAAG;AAC5B,UAAIE,IAAQH,EAAM,CAAC;AACnB,MAAAlB,EAAM,iBAAiBqB,GAAOnB,EAAK,oBAAoB,CAAC,GACxDF,EAAM,iBAAiBqB,GAAOnB,EAAK,uBAAuB,CAAC;AAAA,IAC7D,WAGSiB,MAAkBC;AAGzB,eAFIE,KAAOH,IAAgB,KAAK,GAC5BI,IAAM,CAACD,GACFrH,IAAI,GAAGA,IAAIkH,GAAelH,KAAK;AACtC,YAAIuH,IAASN,EAAMjH,CAAC,GAChBwH,IAAY,EAAEN,IAAgB,KAAK,IAAIlH;AAC3C,QAAA+F,EAAM,iBAAiBwB,GAAQtB,EAAK,oBAAoBuB,CAAS,GACjEzB,EAAM,iBAAiBwB,GAAQtB,EAAK,uBAAuBqB,CAAG,GAC9DvB,EAAM,iBAAiBwB,GAAQtB,EAAK,uBAAuBoB,CAAG;AAAA,MAChE;AAAA;AAKA,eAAStC,IAAK,GAAGA,IAAKmC,GAAenC,KAAM;AACzC,YAAI0C,IAASR,EAAMlC,CAAE;AACrB,QAAAgB,EAAM,iBAAiB0B,GAAQxB,EAAK,oBAAoBlB,IAAK,CAAC,GAC9DgB,EAAM,iBAAiB0B,GAAQxB,EAAK,uBAAuBiB,CAAa;AAAA,MAC1E;AAAA,EAEJ;AACF;AAEA,IAAIQ,KAAwB,uBAC1BC,KAAgBD,GAAsB,eACtCE,IAAQF,GAAsB;AAChC,SAASG,EAAuBC,GAAc;AAC5C,MAAI9B,IAAU3F,EAAeA,EAAe,CAAA,GAAIuF,EAAkC,GAAGkC,KAAgB,EAAE,GACnG1F,IAAO4D,GACTV,IAAYlD,EAAK,WACjBC,IAAqBD,EAAK,oBAC1B2F,IAAY3F,EAAK,WACfmD,KAAsBD,KAAc,OAA+B,SAASA,EAAU,eAAe,aAAaA,KAAc,OAA+B,SAASA,EAAU,eAAe,QACjME,KAAsBF,KAAc,OAA+B,SAASA,EAAU,eAAe,aAAaA,KAAc,OAA+B,SAASA,EAAU,eAAe,QACjM0C,IAAW,CAAC,YAAY,eAAe,gBAAgB,gBAAgB,aAAa,oBAAoB,EAAE,OAAOzG,EAAmB+D,IAAY,CAAC,4BAA4B,4BAA4B,IAAI,CAAA,CAAE,CAAC;AACpN,SAAoB,0BAAU2C,GAAc;AAC1C,IAAAhH,GAAUiH,GAAkBD,CAAY;AACxC,aAASC,IAAmB;AAC1B,UAAIC;AACJ,MAAA7H,GAAgB,MAAM4H,CAAgB;AACtC,eAASE,IAAO,UAAU,QAAQC,IAAO,IAAI,MAAMD,CAAI,GAAGE,IAAO,GAAGA,IAAOF,GAAME;AAC/E,QAAAD,EAAKC,CAAI,IAAI,UAAUA,CAAI;AAE7B,aAAAH,IAAQpH,GAAW,MAAMmH,GAAkB,CAAA,EAAG,OAAOG,CAAI,CAAC,GAC1DnI,GAAgBW,GAAuBsH,CAAK,GAAG,aAAaJ,KAAa5F,GAA0B6D,CAAO,CAAC,GACpGmC;AAAA,IACT;AACA,WAAAzH,GAAawH,GAAkB,CAAC;AAAA,MAC9B,KAAK;AAAA,MACL,OAAO,WAAyB;AAC9B,eAAO;AAAA,UACL,UAAU;AAAA,UACV,sBAAsBxC,GAAgBM,CAAO;AAAA,UAC7C,wBAAwBX,GAAkBW,CAAO;AAAA,UACjD,QAAQ,sBAAsB;AAAA,UAC9B,UAAUgC;AAAA,UACV,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAMJ;AAAA,UAClB,GAAa;AAAA,YACD,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAMA;AAAA,UAClB,CAAW,EAAE,OAAOrG,EAAmBgE,IAAqB,CAAC;AAAA,YACjD,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAMqC;AAAA,UAClB,CAAW,IAAI,CAAA,CAAE,GAAGrG,EAAmBiE,IAAqB,CAAC;AAAA,YACjD,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAMoC;AAAA,UAClB,CAAW,IAAI,CAAA,CAAE,GAAG,CAAC;AAAA,YACT,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAMA;AAAA,UAClB,GAAa;AAAA,YACD,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAMA;AAAA,UAClB,GAAa;AAAA,YACD,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAMD;AAAA,YACN,YAAY;AAAA,UACxB,GAAa;AAAA,YACD,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAMA;AAAA,YACN,YAAY;AAAA,UACxB,CAAW,CAAC;AAAA,UACF,qBAAqB;AAAA,YAAC;AAAA,cACpB,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAMC;AAAA,YAClB;AAAA;AAAA,YAEU;AAAA,cACE,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAMA;AAAA,YAClB;AAAA;AAAA,UACA;AAAA,UACU,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAAA,QAC3E;AAAA,MACM;AAAA,IACN,GAAO;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAA4BJ,GAAWe,GAAY5F,GAAYC,GAAY4F,GAAM;AACtF,YAAIC,GACAC,IAAYF,EAAK,QAAQ,GACzBG,IAAKhG,EAAW,GAChBiG,IAAKjG,EAAW,GAChBkG,IAAKjG,EAAW,GAChBkG,IAAKlG,EAAW,GAChBM,IAAQ6F,GAAWP,EAAK,KAAK,GAC7BzF,KAAa0F,IAAQD,EAAKnG,CAAkB,OAAO,QAAQoG,MAAU,SAASA,IAAQ9C,IACtFqD,IAAQ,KAAK;AAGjB,QAAAA,EAAMT,GAAY,IAAII,GACtBK,EAAMT,GAAY,IAAIK,GACtBI,EAAMT,GAAY,IAAIM,GACtBG,EAAMT,GAAY,IAAIO,GAClBvD,MAAoByD,EAAMT,GAAY,IAAI3F,EAAW,OACrD4C,MAAoBwD,EAAMT,GAAY,IAAI5F,EAAW,OACzDqG,EAAMT,GAAY,IAAIG,GACtBM,EAAMT,GAAY,IAAIxF,GACtBiG,EAAMT,GAAY,IAAIrF,GACtB8F,EAAMT,GAAY,IAAIf;AAAA,MACxB;AAAA,IACN,GAAO;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAqByB,GAAQC,GAAO;AACzC,YAAIC,IAAKD,EAAM,IACbE,IAAmBF,EAAM,kBACvBG,IAAWD,EAAiB,UAC9BE,IAAeF,EAAiB,cAChCG,IAAYH,EAAiB,WAC7BI,IAAcJ,EAAiB,aAC/BK,IAAeL,EAAiB,cAChCM,IAAqBN,EAAiB;AAOxC,YANAD,EAAG,iBAAiBE,GAAU,IAAOJ,EAAO,MAAM,GAClDE,EAAG,UAAUG,GAAcL,EAAO,UAAU,GAC5CE,EAAG,UAAUK,GAAaP,EAAO,SAAS,GAC1CE,EAAG,UAAUI,GAAWN,EAAO,mBAAmB,GAClDE,EAAG,UAAUM,GAAcR,EAAO,QAAQA,EAAO,YAAYA,EAAO,SAASA,EAAO,UAAU,GAC9FE,EAAG,UAAUO,GAAoBT,EAAO,gBAAgB,GACpD3D,GAAW;AACb,cAAIqE,IAA2BP,EAAiB,0BAC9CQ,IAA6BR,EAAiB;AAChD,UAAAD,EAAG,UAAUQ,GAA0BrE,EAAU,sBAAsB,GACvE6D,EAAG,UAAUS,GAA4BtE,EAAU,wBAAwB;AAAA,QAC7E;AAAA,MACF;AAAA,IACN,CAAK,CAAC,GACK4C;AAAA,EACT,GAAE2B,EAAW;AACf;AAEG,IAAC3B,KAAmBL,EAAsB,GACzCiC,KAAyBjC,EAAuB;AAAA,EAClD,WAAWkC;AACb,CAAC,GACGC,KAA+BnC,EAAuB;AAAA,EACxD,WAAWxH,EAAeA,EAAe,CAAA,GAAI0J,EAAuC,GAAG,CAAA,GAAI;AAAA,IACzF,WAAW;AAAA,EACf,CAAG;AACH,CAAC;","x_google_ignoreList":[0]}
|