@react-fabric/graph 1.0.0-beta.63 → 1.0.2
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/dist/cjs/context/context.js +16 -0
- package/dist/cjs/graph/index.js +58 -381
- package/dist/cjs/index.js +25 -21
- package/dist/cjs/utils/edge.js +76 -0
- package/dist/cjs/utils/node.js +93 -0
- package/dist/cjs/utils/sdfFolder.js +107 -0
- package/dist/cjs/viewer/Graph.js +174 -0
- package/dist/esm/context/context.js +15 -0
- package/dist/esm/graph/index.js +59 -382
- package/dist/esm/index.js +24 -20
- package/dist/esm/utils/edge.js +75 -0
- package/dist/esm/utils/node.js +92 -0
- package/dist/esm/utils/sdfFolder.js +107 -0
- package/dist/esm/viewer/Graph.js +174 -0
- package/dist/types/context/context.d.ts +35 -0
- package/dist/types/graph/index.d.ts +47 -24
- package/dist/types/index.d.ts +28 -2
- package/dist/types/types/index.d.ts +124 -175
- package/dist/types/utils/edge.d.ts +28 -0
- package/dist/types/utils/node.d.ts +28 -0
- package/dist/types/utils/sdfFolder.d.ts +75 -0
- package/dist/types/viewer/Graph.d.ts +31 -0
- package/package.json +19 -25
- package/src/context/context.tsx +43 -0
- package/src/graph/index.ts +76 -399
- package/src/index.ts +24 -26
- package/src/types/index.ts +139 -185
- package/src/utils/edge.ts +65 -0
- package/src/utils/node.ts +105 -0
- package/src/utils/sdfFolder.ts +141 -0
- package/src/viewer/Graph.tsx +159 -0
- package/css/styles.css +0 -56
- package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +0 -14
- package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +0 -9
- package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +0 -35
- package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +0 -11
- package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +0 -20
- package/dist/cjs/_virtual/elk-worker.js +0 -8
- package/dist/cjs/components/ContextMenu.js +0 -133
- package/dist/cjs/components/Provider.js +0 -103
- package/dist/cjs/components/Tools.js +0 -205
- package/dist/cjs/components/Viewer.js +0 -59
- package/dist/cjs/components/context.js +0 -34
- package/dist/cjs/constants/index.js +0 -16
- package/dist/cjs/hooks/sigmaDragSelect.js +0 -169
- package/dist/cjs/hooks/sigmaHilighter.js +0 -83
- package/dist/cjs/hooks/sigmaMouseActions.js +0 -145
- package/dist/cjs/hooks/useGraphology.js +0 -41
- package/dist/cjs/hooks/useSigma.js +0 -112
- package/dist/cjs/programs/arrow-head/frag.glsl.js +0 -8
- package/dist/cjs/programs/arrow-head/index.js +0 -142
- package/dist/cjs/programs/arrow-head/vert.glsl.js +0 -8
- package/dist/cjs/programs/edge-curve/drawLabel.js +0 -136
- package/dist/cjs/programs/edge-curve/frag.glsl.js +0 -8
- package/dist/cjs/programs/edge-curve/index.js +0 -157
- package/dist/cjs/programs/edge-curve/vert.glsl.js +0 -8
- package/dist/cjs/programs/edge-line/drawLabel.js +0 -70
- package/dist/cjs/programs/edge-line/frag.glsl.js +0 -8
- package/dist/cjs/programs/edge-line/index.js +0 -166
- package/dist/cjs/programs/edge-line/vert.glsl.js +0 -8
- package/dist/cjs/programs/node-badge/factory.js +0 -250
- package/dist/cjs/programs/node-badge/frag.glsl.js +0 -8
- package/dist/cjs/programs/node-badge/index.js +0 -33
- package/dist/cjs/programs/node-badge/texture.js +0 -455
- package/dist/cjs/programs/node-badge/vert.glsl.js +0 -19
- package/dist/cjs/programs/node-circle/base/drawHover.js +0 -71
- package/dist/cjs/programs/node-circle/base/drawLabel.js +0 -113
- package/dist/cjs/programs/node-circle/base/frag.glsl.js +0 -8
- package/dist/cjs/programs/node-circle/base/index.js +0 -136
- package/dist/cjs/programs/node-circle/base/vert.glsl.js +0 -8
- package/dist/cjs/programs/node-circle/index.js +0 -15
- package/dist/cjs/programs/node-image/factory.js +0 -224
- package/dist/cjs/programs/node-image/frag.glsl.js +0 -8
- package/dist/cjs/programs/node-image/index.js +0 -14
- package/dist/cjs/programs/node-image/texture.js +0 -472
- package/dist/cjs/programs/node-image/vert.glsl.js +0 -8
- package/dist/cjs/programs/node-rect/base/drawHover.js +0 -68
- package/dist/cjs/programs/node-rect/base/drawLabel.js +0 -107
- package/dist/cjs/programs/node-rect/base/frag.glsl.js +0 -8
- package/dist/cjs/programs/node-rect/base/index.js +0 -135
- package/dist/cjs/programs/node-rect/base/vert.glsl.js +0 -8
- package/dist/cjs/programs/node-rect/index.js +0 -15
- package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +0 -14
- package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +0 -9
- package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +0 -34
- package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +0 -13
- package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +0 -20
- package/dist/esm/_virtual/elk-worker.js +0 -8
- package/dist/esm/components/ContextMenu.js +0 -133
- package/dist/esm/components/Provider.js +0 -103
- package/dist/esm/components/Tools.js +0 -205
- package/dist/esm/components/Viewer.js +0 -59
- package/dist/esm/components/context.js +0 -33
- package/dist/esm/constants/index.js +0 -16
- package/dist/esm/hooks/sigmaDragSelect.js +0 -169
- package/dist/esm/hooks/sigmaHilighter.js +0 -83
- package/dist/esm/hooks/sigmaMouseActions.js +0 -145
- package/dist/esm/hooks/useGraphology.js +0 -41
- package/dist/esm/hooks/useSigma.js +0 -112
- package/dist/esm/programs/arrow-head/frag.glsl.js +0 -8
- package/dist/esm/programs/arrow-head/index.js +0 -141
- package/dist/esm/programs/arrow-head/vert.glsl.js +0 -8
- package/dist/esm/programs/edge-curve/drawLabel.js +0 -136
- package/dist/esm/programs/edge-curve/frag.glsl.js +0 -8
- package/dist/esm/programs/edge-curve/index.js +0 -156
- package/dist/esm/programs/edge-curve/vert.glsl.js +0 -8
- package/dist/esm/programs/edge-line/drawLabel.js +0 -70
- package/dist/esm/programs/edge-line/frag.glsl.js +0 -8
- package/dist/esm/programs/edge-line/index.js +0 -166
- package/dist/esm/programs/edge-line/vert.glsl.js +0 -8
- package/dist/esm/programs/node-badge/factory.js +0 -250
- package/dist/esm/programs/node-badge/frag.glsl.js +0 -8
- package/dist/esm/programs/node-badge/index.js +0 -32
- package/dist/esm/programs/node-badge/texture.js +0 -445
- package/dist/esm/programs/node-badge/vert.glsl.js +0 -19
- package/dist/esm/programs/node-circle/base/drawHover.js +0 -71
- package/dist/esm/programs/node-circle/base/drawLabel.js +0 -113
- package/dist/esm/programs/node-circle/base/frag.glsl.js +0 -8
- package/dist/esm/programs/node-circle/base/index.js +0 -136
- package/dist/esm/programs/node-circle/base/vert.glsl.js +0 -8
- package/dist/esm/programs/node-circle/index.js +0 -15
- package/dist/esm/programs/node-image/factory.js +0 -224
- package/dist/esm/programs/node-image/frag.glsl.js +0 -8
- package/dist/esm/programs/node-image/index.js +0 -13
- package/dist/esm/programs/node-image/texture.js +0 -462
- package/dist/esm/programs/node-image/vert.glsl.js +0 -8
- package/dist/esm/programs/node-rect/base/drawHover.js +0 -68
- package/dist/esm/programs/node-rect/base/drawLabel.js +0 -107
- package/dist/esm/programs/node-rect/base/frag.glsl.js +0 -8
- package/dist/esm/programs/node-rect/base/index.js +0 -135
- package/dist/esm/programs/node-rect/base/vert.glsl.js +0 -8
- package/dist/esm/programs/node-rect/index.js +0 -15
- package/dist/types/components/ContextMenu.d.ts +0 -1
- package/dist/types/components/Provider.d.ts +0 -3
- package/dist/types/components/Tools.d.ts +0 -1
- package/dist/types/components/Viewer.d.ts +0 -2
- package/dist/types/components/context.d.ts +0 -17
- package/dist/types/constants/index.d.ts +0 -12
- package/dist/types/graph/layout.worker.d.ts +0 -1
- package/dist/types/hooks/sigmaDragSelect.d.ts +0 -8
- package/dist/types/hooks/sigmaHilighter.d.ts +0 -3
- package/dist/types/hooks/sigmaMouseActions.d.ts +0 -3
- package/dist/types/hooks/useGraphology.d.ts +0 -6
- package/dist/types/hooks/useSigma.d.ts +0 -8
- package/dist/types/i18n/index.d.ts +0 -0
- package/dist/types/programs/arrow-head/frag.glsl.d.ts +0 -2
- package/dist/types/programs/arrow-head/index.d.ts +0 -9
- package/dist/types/programs/arrow-head/vert.glsl.d.ts +0 -2
- package/dist/types/programs/edge-curve/drawLabel.d.ts +0 -6
- package/dist/types/programs/edge-curve/frag.glsl.d.ts +0 -2
- package/dist/types/programs/edge-curve/index.d.ts +0 -43
- package/dist/types/programs/edge-curve/vert.glsl.d.ts +0 -2
- package/dist/types/programs/edge-line/drawLabel.d.ts +0 -5
- package/dist/types/programs/edge-line/frag.glsl.d.ts +0 -2
- package/dist/types/programs/edge-line/index.d.ts +0 -11
- package/dist/types/programs/edge-line/vert.glsl.d.ts +0 -2
- package/dist/types/programs/node-badge/factory.d.ts +0 -27
- package/dist/types/programs/node-badge/frag.glsl.d.ts +0 -2
- package/dist/types/programs/node-badge/index.d.ts +0 -5
- package/dist/types/programs/node-badge/texture.d.ts +0 -102
- package/dist/types/programs/node-badge/vert.glsl.d.ts +0 -2
- package/dist/types/programs/node-circle/base/drawHover.d.ts +0 -8
- package/dist/types/programs/node-circle/base/drawLabel.d.ts +0 -8
- package/dist/types/programs/node-circle/base/frag.glsl.d.ts +0 -2
- package/dist/types/programs/node-circle/base/index.d.ts +0 -37
- package/dist/types/programs/node-circle/base/vert.glsl.d.ts +0 -2
- package/dist/types/programs/node-circle/index.d.ts +0 -11
- package/dist/types/programs/node-image/factory.d.ts +0 -25
- package/dist/types/programs/node-image/frag.glsl.d.ts +0 -2
- package/dist/types/programs/node-image/index.d.ts +0 -5
- package/dist/types/programs/node-image/texture.d.ts +0 -102
- package/dist/types/programs/node-image/vert.glsl.d.ts +0 -2
- package/dist/types/programs/node-rect/base/drawHover.d.ts +0 -8
- package/dist/types/programs/node-rect/base/drawLabel.d.ts +0 -8
- package/dist/types/programs/node-rect/base/frag.glsl.d.ts +0 -2
- package/dist/types/programs/node-rect/base/index.d.ts +0 -34
- package/dist/types/programs/node-rect/base/vert.glsl.d.ts +0 -2
- package/dist/types/programs/node-rect/index.d.ts +0 -11
- package/src/components/ContextMenu.tsx +0 -138
- package/src/components/Provider.tsx +0 -116
- package/src/components/Tools.tsx +0 -68
- package/src/components/Viewer.tsx +0 -75
- package/src/components/context.ts +0 -43
- package/src/constants/index.ts +0 -22
- package/src/graph/layout.worker.ts +0 -42
- package/src/hooks/sigmaDragSelect.ts +0 -219
- package/src/hooks/sigmaHilighter.ts +0 -107
- package/src/hooks/sigmaMouseActions.ts +0 -153
- package/src/hooks/useGraphology.ts +0 -31
- package/src/hooks/useSigma.ts +0 -118
- package/src/i18n/index.ts +0 -0
- package/src/programs/arrow-head/frag.glsl.ts +0 -18
- package/src/programs/arrow-head/index.ts +0 -156
- package/src/programs/arrow-head/vert.glsl.ts +0 -75
- package/src/programs/edge-curve/drawLabel.ts +0 -166
- package/src/programs/edge-curve/frag.glsl.ts +0 -86
- package/src/programs/edge-curve/index.ts +0 -156
- package/src/programs/edge-curve/vert.glsl.ts +0 -110
- package/src/programs/edge-line/drawLabel.ts +0 -113
- package/src/programs/edge-line/frag.glsl.ts +0 -34
- package/src/programs/edge-line/index.ts +0 -163
- package/src/programs/edge-line/vert.glsl.ts +0 -104
- package/src/programs/node-badge/factory.ts +0 -325
- package/src/programs/node-badge/frag.glsl.ts +0 -79
- package/src/programs/node-badge/index.ts +0 -35
- package/src/programs/node-badge/texture.ts +0 -425
- package/src/programs/node-badge/vert.glsl.ts +0 -99
- package/src/programs/node-circle/base/drawHover.ts +0 -80
- package/src/programs/node-circle/base/drawLabel.ts +0 -145
- package/src/programs/node-circle/base/frag.glsl.ts +0 -72
- package/src/programs/node-circle/base/index.ts +0 -100
- package/src/programs/node-circle/base/vert.glsl.ts +0 -83
- package/src/programs/node-circle/index.ts +0 -19
- package/src/programs/node-image/factory.ts +0 -299
- package/src/programs/node-image/frag.glsl.ts +0 -97
- package/src/programs/node-image/index.ts +0 -7
- package/src/programs/node-image/texture.ts +0 -435
- package/src/programs/node-image/vert.glsl.ts +0 -60
- package/src/programs/node-rect/base/drawHover.ts +0 -77
- package/src/programs/node-rect/base/drawLabel.ts +0 -149
- package/src/programs/node-rect/base/frag.glsl.ts +0 -67
- package/src/programs/node-rect/base/index.ts +0 -107
- package/src/programs/node-rect/base/vert.glsl.ts +0 -87
- package/src/programs/node-rect/index.ts +0 -19
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
4
|
-
import _createClass from '@babel/runtime/helpers/createClass';
|
|
5
|
-
import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
|
|
6
|
-
import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
|
|
7
|
-
import _inherits from '@babel/runtime/helpers/inherits';
|
|
8
|
-
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
9
|
-
import { EdgeProgram } from 'sigma/rendering';
|
|
10
|
-
import { floatColor } from 'sigma/utils';
|
|
11
|
-
import SHADER_SOURCE$1 from './frag.glsl.js';
|
|
12
|
-
import SHADER_SOURCE from './vert.glsl.js';
|
|
13
|
-
|
|
14
|
-
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
15
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
16
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
17
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
18
|
-
var _WebGLRenderingContex = WebGLRenderingContext,
|
|
19
|
-
UNSIGNED_BYTE = _WebGLRenderingContex.UNSIGNED_BYTE,
|
|
20
|
-
FLOAT = _WebGLRenderingContex.FLOAT;
|
|
21
|
-
var UNIFORMS = ["u_matrix", "u_sizeRatio", "u_correctionRatio", "u_minEdgeThickness", "u_lengthToThicknessRatio", "u_widenessToThicknessRatio"];
|
|
22
|
-
var DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS = {
|
|
23
|
-
extremity: "target",
|
|
24
|
-
lengthToThicknessRatio: 2.5,
|
|
25
|
-
widenessToThicknessRatio: 2
|
|
26
|
-
};
|
|
27
|
-
function createEdgeArrowHeadProgram(inputOptions) {
|
|
28
|
-
var options = _objectSpread(_objectSpread({}, DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS), inputOptions !== null && inputOptions !== void 0 ? inputOptions : {});
|
|
29
|
-
return /*#__PURE__*/function (_EdgeProgram) {
|
|
30
|
-
function EdgeArrowHeadProgram() {
|
|
31
|
-
_classCallCheck(this, EdgeArrowHeadProgram);
|
|
32
|
-
return _callSuper(this, EdgeArrowHeadProgram, arguments);
|
|
33
|
-
}
|
|
34
|
-
_inherits(EdgeArrowHeadProgram, _EdgeProgram);
|
|
35
|
-
return _createClass(EdgeArrowHeadProgram, [{
|
|
36
|
-
key: "getDefinition",
|
|
37
|
-
value: function getDefinition() {
|
|
38
|
-
return {
|
|
39
|
-
VERTICES: 3,
|
|
40
|
-
VERTEX_SHADER_SOURCE: SHADER_SOURCE,
|
|
41
|
-
FRAGMENT_SHADER_SOURCE: SHADER_SOURCE$1,
|
|
42
|
-
METHOD: WebGLRenderingContext.TRIANGLES,
|
|
43
|
-
UNIFORMS: UNIFORMS,
|
|
44
|
-
ATTRIBUTES: [{
|
|
45
|
-
name: "a_position",
|
|
46
|
-
size: 2,
|
|
47
|
-
type: FLOAT
|
|
48
|
-
}, {
|
|
49
|
-
name: "a_normal",
|
|
50
|
-
size: 2,
|
|
51
|
-
type: FLOAT
|
|
52
|
-
}, {
|
|
53
|
-
name: "a_radius",
|
|
54
|
-
size: 1,
|
|
55
|
-
type: FLOAT
|
|
56
|
-
}, {
|
|
57
|
-
name: "a_color",
|
|
58
|
-
size: 4,
|
|
59
|
-
type: UNSIGNED_BYTE,
|
|
60
|
-
normalized: true
|
|
61
|
-
}, {
|
|
62
|
-
name: "a_opacity",
|
|
63
|
-
size: 1,
|
|
64
|
-
type: FLOAT
|
|
65
|
-
}, {
|
|
66
|
-
name: "a_id",
|
|
67
|
-
size: 4,
|
|
68
|
-
type: UNSIGNED_BYTE,
|
|
69
|
-
normalized: true
|
|
70
|
-
}],
|
|
71
|
-
CONSTANT_ATTRIBUTES: [{
|
|
72
|
-
name: "a_barycentric",
|
|
73
|
-
size: 3,
|
|
74
|
-
type: FLOAT
|
|
75
|
-
}],
|
|
76
|
-
CONSTANT_DATA: [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
}, {
|
|
80
|
-
key: "processVisibleItem",
|
|
81
|
-
value: function processVisibleItem(edgeIndex, startIndex, sourceData, targetData, data) {
|
|
82
|
-
var _data$arrow, _data$opacity;
|
|
83
|
-
if (options.extremity === "source") {
|
|
84
|
-
var _ref = [targetData, sourceData];
|
|
85
|
-
sourceData = _ref[0];
|
|
86
|
-
targetData = _ref[1];
|
|
87
|
-
}
|
|
88
|
-
var thickness = Math.min(data.size || 1, 0.5) * 8;
|
|
89
|
-
var radius = targetData.size || 1;
|
|
90
|
-
var x1 = sourceData.x;
|
|
91
|
-
var y1 = sourceData.y;
|
|
92
|
-
var x2 = targetData.x;
|
|
93
|
-
var y2 = targetData.y;
|
|
94
|
-
var color = data.color;
|
|
95
|
-
if (data.selected) color = "#f00";
|
|
96
|
-
if (data.highlight) color = "#F54A4A";
|
|
97
|
-
|
|
98
|
-
// Computing normals
|
|
99
|
-
var dx = x2 - x1;
|
|
100
|
-
var dy = y2 - y1;
|
|
101
|
-
var len = dx * dx + dy * dy;
|
|
102
|
-
var n1 = 0;
|
|
103
|
-
var n2 = 0;
|
|
104
|
-
if (len) {
|
|
105
|
-
len = 1 / Math.sqrt(len);
|
|
106
|
-
n1 = -dy * len * thickness;
|
|
107
|
-
n2 = dx * len * thickness;
|
|
108
|
-
}
|
|
109
|
-
var array = this.array;
|
|
110
|
-
array[startIndex++] = x2;
|
|
111
|
-
array[startIndex++] = y2;
|
|
112
|
-
array[startIndex++] = -n1;
|
|
113
|
-
array[startIndex++] = -n2;
|
|
114
|
-
array[startIndex++] = radius;
|
|
115
|
-
array[startIndex++] = floatColor(color);
|
|
116
|
-
array[startIndex++] = ["both", options.extremity].includes((_data$arrow = data.arrow) !== null && _data$arrow !== void 0 ? _data$arrow : "") ? (_data$opacity = data.opacity) !== null && _data$opacity !== void 0 ? _data$opacity : 1 : 0;
|
|
117
|
-
array[startIndex++] = edgeIndex;
|
|
118
|
-
}
|
|
119
|
-
}, {
|
|
120
|
-
key: "setUniforms",
|
|
121
|
-
value: function setUniforms(params, _ref2) {
|
|
122
|
-
var gl = _ref2.gl,
|
|
123
|
-
uniformLocations = _ref2.uniformLocations;
|
|
124
|
-
var u_matrix = uniformLocations.u_matrix,
|
|
125
|
-
u_sizeRatio = uniformLocations.u_sizeRatio,
|
|
126
|
-
u_correctionRatio = uniformLocations.u_correctionRatio,
|
|
127
|
-
u_minEdgeThickness = uniformLocations.u_minEdgeThickness,
|
|
128
|
-
u_lengthToThicknessRatio = uniformLocations.u_lengthToThicknessRatio,
|
|
129
|
-
u_widenessToThicknessRatio = uniformLocations.u_widenessToThicknessRatio;
|
|
130
|
-
gl.uniformMatrix3fv(u_matrix, false, params.matrix);
|
|
131
|
-
gl.uniform1f(u_sizeRatio, params.sizeRatio);
|
|
132
|
-
gl.uniform1f(u_correctionRatio, params.correctionRatio);
|
|
133
|
-
gl.uniform1f(u_minEdgeThickness, params.minEdgeThickness);
|
|
134
|
-
gl.uniform1f(u_lengthToThicknessRatio, 2.5);
|
|
135
|
-
gl.uniform1f(u_widenessToThicknessRatio, 2);
|
|
136
|
-
}
|
|
137
|
-
}]);
|
|
138
|
-
}(EdgeProgram);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
export { DEFAULT_EDGE_ARROW_HEAD_PROGRAM_OPTIONS, createEdgeArrowHeadProgram };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
/* istanbul ignore file */
|
|
4
|
-
|
|
5
|
-
// language=GLSL
|
|
6
|
-
var SHADER_SOURCE = /* glsl */"\nattribute vec2 a_position;\nattribute vec2 a_normal;\nattribute float a_radius;\nattribute vec3 a_barycentric;\nattribute float a_opacity;\n\n#ifdef PICKING_MODE\nattribute vec4 a_id;\n#else\nattribute vec4 a_color;\n#endif\n\nuniform mat3 u_matrix;\nuniform float u_sizeRatio;\nuniform float u_correctionRatio;\nuniform float u_minEdgeThickness;\nuniform float u_lengthToThicknessRatio;\nuniform float u_widenessToThicknessRatio;\n\nvarying vec4 v_color;\nvarying float v_opacity;\n\nconst float bias = 255.0 / 254.0;\n\nvoid main() {\n float minThickness = u_minEdgeThickness;\n\n float normalLength = length(a_normal);\n vec2 unitNormal = a_normal / normalLength;\n\n // These first computations are taken from edge.vert.glsl and\n // edge.clamped.vert.glsl. Please read it to get better comments on what's\n // happening:\n float pixelsThickness = max(normalLength / u_sizeRatio, minThickness);\n float webGLThickness = pixelsThickness * u_correctionRatio;\n float webGLNodeRadius = a_radius * 2.0 * u_correctionRatio / u_sizeRatio;\n float webGLArrowHeadLength = webGLThickness * u_lengthToThicknessRatio * 2.0;\n float webGLArrowHeadThickness = webGLThickness * u_widenessToThicknessRatio;\n\n float da = a_barycentric.x;\n float db = a_barycentric.y;\n float dc = a_barycentric.z;\n\n vec2 delta = vec2(\n da * (webGLNodeRadius * unitNormal.y)\n + db * ((webGLNodeRadius + webGLArrowHeadLength) * unitNormal.y + webGLArrowHeadThickness * unitNormal.x)\n + dc * ((webGLNodeRadius + webGLArrowHeadLength) * unitNormal.y - webGLArrowHeadThickness * unitNormal.x),\n\n da * (-webGLNodeRadius * unitNormal.x)\n + db * (-(webGLNodeRadius + webGLArrowHeadLength) * unitNormal.x + webGLArrowHeadThickness * unitNormal.y)\n + dc * (-(webGLNodeRadius + webGLArrowHeadLength) * unitNormal.x - webGLArrowHeadThickness * unitNormal.y)\n );\n\n vec2 position = (u_matrix * vec3(a_position + delta, 1)).xy;\n\n gl_Position = vec4(position, 0, 1);\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 v_opacity = a_opacity;\n #endif\n\n v_color.a *= bias;\n}\n";
|
|
7
|
-
|
|
8
|
-
export { SHADER_SOURCE as default };
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
/* istanbul ignore file */
|
|
4
|
-
|
|
5
|
-
function getCurvePoint(t, p0, p1, p2) {
|
|
6
|
-
var x = Math.pow(1 - t, 2) * p0.x + 2 * (1 - t) * t * p1.x + Math.pow(t, 2) * p2.x;
|
|
7
|
-
var y = Math.pow(1 - t, 2) * p0.y + 2 * (1 - t) * t * p1.y + Math.pow(t, 2) * p2.y;
|
|
8
|
-
return {
|
|
9
|
-
x: x,
|
|
10
|
-
y: y
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
function getCurveLength(p0, p1, p2) {
|
|
14
|
-
var steps = 20;
|
|
15
|
-
var length = 0;
|
|
16
|
-
var lastPoint = p0;
|
|
17
|
-
for (var i = 0; i < steps; i++) {
|
|
18
|
-
var point = getCurvePoint((i + 1) / steps, p0, p1, p2);
|
|
19
|
-
length += Math.sqrt(Math.pow(lastPoint.x - point.x, 2) + Math.pow(lastPoint.y - point.y, 2));
|
|
20
|
-
lastPoint = point;
|
|
21
|
-
}
|
|
22
|
-
return length;
|
|
23
|
-
}
|
|
24
|
-
function createDrawCurvedEdgeLabel(_ref) {
|
|
25
|
-
var curvatureAttribute = _ref.curvatureAttribute,
|
|
26
|
-
defaultCurvature = _ref.defaultCurvature,
|
|
27
|
-
_ref$keepLabelUpright = _ref.keepLabelUpright,
|
|
28
|
-
keepLabelUpright = _ref$keepLabelUpright === void 0 ? true : _ref$keepLabelUpright;
|
|
29
|
-
return function (context, edgeData, sourceData, targetData, settings) {
|
|
30
|
-
var _edgeData$color;
|
|
31
|
-
var size = settings.edgeLabelSize;
|
|
32
|
-
var curvature = edgeData[curvatureAttribute] || defaultCurvature;
|
|
33
|
-
var font = settings.edgeLabelFont;
|
|
34
|
-
var weight = settings.edgeLabelWeight;
|
|
35
|
-
var color = (_edgeData$color = edgeData.color) !== null && _edgeData$color !== void 0 ? _edgeData$color : settings.defaultEdgeColor;
|
|
36
|
-
if (edgeData.selected) color = "#f00";
|
|
37
|
-
if (edgeData.highlight) color = "#F54A4A";
|
|
38
|
-
var label = edgeData.label;
|
|
39
|
-
if (!label || edgeData.opacity < 1) return;
|
|
40
|
-
context.font = "".concat(weight, " ").concat(size, "px ").concat(font);
|
|
41
|
-
|
|
42
|
-
// Computing positions without considering nodes sizes:
|
|
43
|
-
var ltr = !keepLabelUpright || sourceData.x < targetData.x;
|
|
44
|
-
var sourceX = ltr ? sourceData.x : targetData.x;
|
|
45
|
-
var sourceY = ltr ? sourceData.y : targetData.y;
|
|
46
|
-
var targetX = ltr ? targetData.x : sourceData.x;
|
|
47
|
-
var targetY = ltr ? targetData.y : sourceData.y;
|
|
48
|
-
var centerX = (sourceX + targetX) / 2;
|
|
49
|
-
var centerY = (sourceY + targetY) / 2;
|
|
50
|
-
var diffX = targetX - sourceX;
|
|
51
|
-
var diffY = targetY - sourceY;
|
|
52
|
-
var diff = Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2));
|
|
53
|
-
// Anchor point:
|
|
54
|
-
var orientation = ltr ? 1 : -1;
|
|
55
|
-
var anchorX = centerX + diffY * curvature * orientation;
|
|
56
|
-
var anchorY = centerY - diffX * curvature * orientation;
|
|
57
|
-
|
|
58
|
-
// Adapt curve points to edge thickness:
|
|
59
|
-
var offset = edgeData.size * 0.7 + 5;
|
|
60
|
-
var sourceOffsetVector = {
|
|
61
|
-
x: anchorY - sourceY,
|
|
62
|
-
y: -(anchorX - sourceX)
|
|
63
|
-
};
|
|
64
|
-
var sourceOffsetVectorLength = Math.sqrt(Math.pow(sourceOffsetVector.x, 2) + Math.pow(sourceOffsetVector.y, 2));
|
|
65
|
-
var targetOffsetVector = {
|
|
66
|
-
x: targetY - anchorY,
|
|
67
|
-
y: -(targetX - anchorX)
|
|
68
|
-
};
|
|
69
|
-
var targetOffsetVectorLength = Math.sqrt(Math.pow(targetOffsetVector.x, 2) + Math.pow(targetOffsetVector.y, 2));
|
|
70
|
-
sourceX += offset * sourceOffsetVector.x / sourceOffsetVectorLength;
|
|
71
|
-
sourceY += offset * sourceOffsetVector.y / sourceOffsetVectorLength;
|
|
72
|
-
targetX += offset * targetOffsetVector.x / targetOffsetVectorLength;
|
|
73
|
-
targetY += offset * targetOffsetVector.y / targetOffsetVectorLength;
|
|
74
|
-
// For anchor, the vector is simpler, so it is inlined:
|
|
75
|
-
anchorX += offset * diffY / diff;
|
|
76
|
-
anchorY -= offset * diffX / diff;
|
|
77
|
-
|
|
78
|
-
// Compute curve length:
|
|
79
|
-
var anchorPoint = {
|
|
80
|
-
x: anchorX,
|
|
81
|
-
y: anchorY
|
|
82
|
-
};
|
|
83
|
-
var sourcePoint = {
|
|
84
|
-
x: sourceX,
|
|
85
|
-
y: sourceY
|
|
86
|
-
};
|
|
87
|
-
var targetPoint = {
|
|
88
|
-
x: targetX,
|
|
89
|
-
y: targetY
|
|
90
|
-
};
|
|
91
|
-
var curveLength = getCurveLength(sourcePoint, anchorPoint, targetPoint);
|
|
92
|
-
if (curveLength < sourceData.size + targetData.size) return;
|
|
93
|
-
|
|
94
|
-
// Handling ellipsis
|
|
95
|
-
var textLength = context.measureText(label).width;
|
|
96
|
-
var availableTextLength = curveLength - sourceData.size - targetData.size;
|
|
97
|
-
if (textLength > availableTextLength) {
|
|
98
|
-
var ellipsis = "…";
|
|
99
|
-
label = label + ellipsis;
|
|
100
|
-
textLength = context.measureText(label).width;
|
|
101
|
-
while (textLength > availableTextLength && label.length > 1) {
|
|
102
|
-
label = label.slice(0, -2) + ellipsis;
|
|
103
|
-
textLength = context.measureText(label).width;
|
|
104
|
-
}
|
|
105
|
-
if (label.length < 4) return;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Measure each character:
|
|
109
|
-
var charactersLengthCache = {};
|
|
110
|
-
for (var i = 0, length = label.length; i < length; i++) {
|
|
111
|
-
var character = label[i];
|
|
112
|
-
if (!charactersLengthCache[character]) {
|
|
113
|
-
charactersLengthCache[character] = context.measureText(character).width * (1 + curvature * 0.35);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Draw each character:
|
|
118
|
-
var t = 0.5 - textLength / curveLength / 2;
|
|
119
|
-
for (var _i = 0, _length = label.length; _i < _length; _i++) {
|
|
120
|
-
var _character = label[_i];
|
|
121
|
-
var point = getCurvePoint(t, sourcePoint, anchorPoint, targetPoint);
|
|
122
|
-
var tangentX = 2 * (1 - t) * (anchorX - sourceX) + 2 * t * (targetX - anchorX);
|
|
123
|
-
var tangentY = 2 * (1 - t) * (anchorY - sourceY) + 2 * t * (targetY - anchorY);
|
|
124
|
-
var angle = Math.atan2(tangentY, tangentX);
|
|
125
|
-
context.save();
|
|
126
|
-
context.translate(point.x, point.y);
|
|
127
|
-
context.rotate(angle);
|
|
128
|
-
context.fillStyle = color;
|
|
129
|
-
context.fillText(_character, 0, 0);
|
|
130
|
-
context.restore();
|
|
131
|
-
t += charactersLengthCache[_character] / curveLength;
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export { createDrawCurvedEdgeLabel };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
/* istanbul ignore file */
|
|
4
|
-
|
|
5
|
-
// language=GLSL
|
|
6
|
-
var SHADER = /* glsl */"\nprecision highp float;\n\nvarying vec4 v_color;\nvarying float v_opacity;\nvarying float v_thickness;\nvarying float v_feather;\nvarying vec2 v_cpA;\nvarying vec2 v_cpB;\nvarying vec2 v_cpC;\nvarying float v_sourceSize;\nvarying vec2 v_sourcePoint;\nvarying float v_targetSize;\nvarying vec2 v_targetPoint;\n\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 float epsilon = 0.7;\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\n if(v_sourceSize > 0.0) {\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\n if(v_targetSize > 0.0) {\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 }\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 gl_FragColor = mix(transparent, gl_FragColor, v_opacity);\n #endif\n } else {\n gl_FragColor = transparent;\n }\n}\n";
|
|
7
|
-
|
|
8
|
-
export { SHADER as default };
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
4
|
-
import _createClass from '@babel/runtime/helpers/createClass';
|
|
5
|
-
import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
|
|
6
|
-
import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
|
|
7
|
-
import _inherits from '@babel/runtime/helpers/inherits';
|
|
8
|
-
import { DEFAULT_EDGE_CURVATURE } from '@sigma/edge-curve';
|
|
9
|
-
import { createEdgeCompoundProgram, EdgeProgram } from 'sigma/rendering';
|
|
10
|
-
import { floatColor } from 'sigma/utils';
|
|
11
|
-
import { createDrawCurvedEdgeLabel } from './drawLabel.js';
|
|
12
|
-
import SHADER$1 from './frag.glsl.js';
|
|
13
|
-
import SHADER from './vert.glsl.js';
|
|
14
|
-
|
|
15
|
-
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
16
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
17
|
-
|
|
18
|
-
/* istanbul ignore file */
|
|
19
|
-
|
|
20
|
-
var _WebGLRenderingContex = WebGLRenderingContext,
|
|
21
|
-
UNSIGNED_BYTE = _WebGLRenderingContex.UNSIGNED_BYTE,
|
|
22
|
-
FLOAT = _WebGLRenderingContex.FLOAT;
|
|
23
|
-
var UNIFORMS = ["u_matrix", "u_sizeRatio", "u_dimensions", "u_pixelRatio", "u_feather", "u_minEdgeThickness", "u_lengthToThicknessRatio", "u_widenessToThicknessRatio"];
|
|
24
|
-
var EdgeCurveProgramBase = /*#__PURE__*/function (_EdgeProgram) {
|
|
25
|
-
function EdgeCurveProgramBase() {
|
|
26
|
-
_classCallCheck(this, EdgeCurveProgramBase);
|
|
27
|
-
return _callSuper(this, EdgeCurveProgramBase, arguments);
|
|
28
|
-
}
|
|
29
|
-
_inherits(EdgeCurveProgramBase, _EdgeProgram);
|
|
30
|
-
return _createClass(EdgeCurveProgramBase, [{
|
|
31
|
-
key: "getDefinition",
|
|
32
|
-
value: function getDefinition() {
|
|
33
|
-
return {
|
|
34
|
-
VERTICES: 6,
|
|
35
|
-
VERTEX_SHADER_SOURCE: SHADER,
|
|
36
|
-
FRAGMENT_SHADER_SOURCE: SHADER$1,
|
|
37
|
-
METHOD: WebGLRenderingContext.TRIANGLES,
|
|
38
|
-
UNIFORMS: UNIFORMS,
|
|
39
|
-
ATTRIBUTES: [{
|
|
40
|
-
name: "a_source",
|
|
41
|
-
size: 2,
|
|
42
|
-
type: FLOAT
|
|
43
|
-
}, {
|
|
44
|
-
name: "a_target",
|
|
45
|
-
size: 2,
|
|
46
|
-
type: FLOAT
|
|
47
|
-
}, {
|
|
48
|
-
name: "a_thickness",
|
|
49
|
-
size: 1,
|
|
50
|
-
type: FLOAT
|
|
51
|
-
}, {
|
|
52
|
-
name: "a_curvature",
|
|
53
|
-
size: 1,
|
|
54
|
-
type: FLOAT
|
|
55
|
-
}, {
|
|
56
|
-
name: "a_color",
|
|
57
|
-
size: 4,
|
|
58
|
-
type: UNSIGNED_BYTE,
|
|
59
|
-
normalized: true
|
|
60
|
-
}, {
|
|
61
|
-
name: "a_opacity",
|
|
62
|
-
size: 1,
|
|
63
|
-
type: FLOAT
|
|
64
|
-
}, {
|
|
65
|
-
name: "a_id",
|
|
66
|
-
size: 4,
|
|
67
|
-
type: UNSIGNED_BYTE,
|
|
68
|
-
normalized: true
|
|
69
|
-
}, {
|
|
70
|
-
name: "a_sourceSize",
|
|
71
|
-
size: 1,
|
|
72
|
-
type: FLOAT
|
|
73
|
-
}, {
|
|
74
|
-
name: "a_targetSize",
|
|
75
|
-
size: 1,
|
|
76
|
-
type: FLOAT
|
|
77
|
-
}],
|
|
78
|
-
CONSTANT_ATTRIBUTES: [{
|
|
79
|
-
name: "a_current",
|
|
80
|
-
size: 1,
|
|
81
|
-
type: FLOAT
|
|
82
|
-
},
|
|
83
|
-
// TODO: could optimize to bool
|
|
84
|
-
{
|
|
85
|
-
name: "a_direction",
|
|
86
|
-
size: 1,
|
|
87
|
-
type: FLOAT
|
|
88
|
-
} // TODO: could optimize to byte
|
|
89
|
-
],
|
|
90
|
-
CONSTANT_DATA: [[0, 1], [0, -1], [1, 1], [0, -1], [1, 1], [1, -1]]
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}, {
|
|
94
|
-
key: "processVisibleItem",
|
|
95
|
-
value: function processVisibleItem(edgeIndex, startIndex, sourceData, targetData, data) {
|
|
96
|
-
var _data$color, _data$selected, _data$curvature, _data$opacity, _data$arrow, _data$arrow2;
|
|
97
|
-
var color = (_data$color = data.color) !== null && _data$color !== void 0 ? _data$color : this.renderer.getSetting("defaultEdgeColor");
|
|
98
|
-
if (data.selected) color = "#f00";
|
|
99
|
-
if (data.highlight) color = "#F54A4A";
|
|
100
|
-
var thickness = Math.min(data.size || 1, 0.5) * (((_data$selected = data.selected) !== null && _data$selected !== void 0 ? _data$selected : data.highlight) ? 16 : 8);
|
|
101
|
-
var x1 = sourceData.x;
|
|
102
|
-
var y1 = sourceData.y;
|
|
103
|
-
var x2 = targetData.x;
|
|
104
|
-
var y2 = targetData.y;
|
|
105
|
-
var curvature = (_data$curvature = data.curvature) !== null && _data$curvature !== void 0 ? _data$curvature : DEFAULT_EDGE_CURVATURE;
|
|
106
|
-
var sourceRadius = sourceData.size || 1;
|
|
107
|
-
var targetRadius = targetData.size || 1;
|
|
108
|
-
var array = this.array;
|
|
109
|
-
|
|
110
|
-
// First point
|
|
111
|
-
array[startIndex++] = x1;
|
|
112
|
-
array[startIndex++] = y1;
|
|
113
|
-
array[startIndex++] = x2;
|
|
114
|
-
array[startIndex++] = y2;
|
|
115
|
-
array[startIndex++] = thickness;
|
|
116
|
-
array[startIndex++] = curvature;
|
|
117
|
-
array[startIndex++] = floatColor(color);
|
|
118
|
-
array[startIndex++] = (_data$opacity = data.opacity) !== null && _data$opacity !== void 0 ? _data$opacity : 1;
|
|
119
|
-
array[startIndex++] = edgeIndex;
|
|
120
|
-
array[startIndex++] = ["both", "source"].includes((_data$arrow = data.arrow) !== null && _data$arrow !== void 0 ? _data$arrow : "") ? sourceRadius : 0;
|
|
121
|
-
array[startIndex++] = ["both", "target"].includes((_data$arrow2 = data.arrow) !== null && _data$arrow2 !== void 0 ? _data$arrow2 : "") ? targetRadius : 0;
|
|
122
|
-
}
|
|
123
|
-
}, {
|
|
124
|
-
key: "setUniforms",
|
|
125
|
-
value: function setUniforms(params, _ref) {
|
|
126
|
-
var gl = _ref.gl,
|
|
127
|
-
uniformLocations = _ref.uniformLocations;
|
|
128
|
-
var u_matrix = uniformLocations.u_matrix,
|
|
129
|
-
u_pixelRatio = uniformLocations.u_pixelRatio,
|
|
130
|
-
u_feather = uniformLocations.u_feather,
|
|
131
|
-
u_sizeRatio = uniformLocations.u_sizeRatio,
|
|
132
|
-
u_dimensions = uniformLocations.u_dimensions,
|
|
133
|
-
u_minEdgeThickness = uniformLocations.u_minEdgeThickness,
|
|
134
|
-
u_lengthToThicknessRatio = uniformLocations.u_lengthToThicknessRatio,
|
|
135
|
-
u_widenessToThicknessRatio = uniformLocations.u_widenessToThicknessRatio;
|
|
136
|
-
gl.uniformMatrix3fv(u_matrix, false, params.matrix);
|
|
137
|
-
gl.uniform1f(u_pixelRatio, params.pixelRatio);
|
|
138
|
-
gl.uniform1f(u_sizeRatio, params.sizeRatio);
|
|
139
|
-
gl.uniform1f(u_feather, params.antiAliasingFeather);
|
|
140
|
-
gl.uniform2f(u_dimensions, params.width * params.pixelRatio, params.height * params.pixelRatio);
|
|
141
|
-
gl.uniform1f(u_minEdgeThickness, params.minEdgeThickness);
|
|
142
|
-
gl.uniform1f(u_lengthToThicknessRatio, 2.5);
|
|
143
|
-
gl.uniform1f(u_widenessToThicknessRatio, 2);
|
|
144
|
-
}
|
|
145
|
-
}]);
|
|
146
|
-
}(EdgeProgram);
|
|
147
|
-
var EdgeCurveProgram = createEdgeCompoundProgram([EdgeCurveProgramBase
|
|
148
|
-
// createEdgeArrowHeadProgram({ extremity: "source" }),
|
|
149
|
-
// createEdgeArrowHeadProgram({ extremity: "target" }),
|
|
150
|
-
], createDrawCurvedEdgeLabel({
|
|
151
|
-
curvatureAttribute: "curvature",
|
|
152
|
-
defaultCurvature: DEFAULT_EDGE_CURVATURE,
|
|
153
|
-
arrowHead: null
|
|
154
|
-
}));
|
|
155
|
-
|
|
156
|
-
export { EdgeCurveProgram, EdgeCurveProgramBase };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
/* istanbul ignore file */
|
|
4
|
-
|
|
5
|
-
// language=GLSL
|
|
6
|
-
var SHADER = /* glsl */"\nattribute vec4 a_id;\nattribute vec4 a_color;\nattribute float a_direction;\nattribute float a_thickness;\nattribute float a_opacity;\nattribute vec2 a_source;\nattribute vec2 a_target;\nattribute float a_current;\nattribute float a_curvature;\nattribute float a_sourceSize;\nattribute float a_targetSize;\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;\nuniform float u_widenessToThicknessRatio;\n\nvarying vec4 v_color;\nvarying float v_opacity;\nvarying float v_thickness;\nvarying float v_feather;\nvarying vec2 v_cpA;\nvarying vec2 v_cpB;\nvarying vec2 v_cpC;\nvarying float v_sourceSize;\nvarying vec2 v_sourcePoint;\nvarying float v_targetSize;\nvarying vec2 v_targetPoint;\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 // 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 float curveThickness = max(minThickness, a_thickness / 2.0 / u_sizeRatio * u_pixelRatio);\n\n v_thickness = curveThickness;\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) * (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 v_sourceSize = a_sourceSize * u_pixelRatio / u_sizeRatio;\n v_sourcePoint = viewportSource;\n \n v_targetSize = a_targetSize * u_pixelRatio / u_sizeRatio;\n v_targetPoint = viewportTarget;\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 v_opacity = a_opacity;\n #endif\n\n v_color.a *= bias;\n}\n";
|
|
7
|
-
|
|
8
|
-
export { SHADER as default };
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
/* istanbul ignore file */
|
|
4
|
-
|
|
5
|
-
function drawLineLabel(context, edgeData, sourceData, targetData, settings) {
|
|
6
|
-
var _edgeData$color;
|
|
7
|
-
var size = settings.edgeLabelSize;
|
|
8
|
-
var font = settings.edgeLabelFont;
|
|
9
|
-
var weight = settings.edgeLabelWeight;
|
|
10
|
-
var color = (_edgeData$color = edgeData.color) !== null && _edgeData$color !== void 0 ? _edgeData$color : settings.defaultEdgeColor;
|
|
11
|
-
if (edgeData.selected) color = "#f00";
|
|
12
|
-
if (edgeData.highlight) color = "#F54A4A";
|
|
13
|
-
var label = edgeData.label;
|
|
14
|
-
if (!label || edgeData.opacity < 1) return;
|
|
15
|
-
context.font = "".concat(weight, " ").concat(size, "px ").concat(font);
|
|
16
|
-
|
|
17
|
-
// Computing positions without considering nodes sizes:
|
|
18
|
-
var sSize = sourceData.size;
|
|
19
|
-
var tSize = targetData.size;
|
|
20
|
-
var sx = sourceData.x;
|
|
21
|
-
var sy = sourceData.y;
|
|
22
|
-
var tx = targetData.x;
|
|
23
|
-
var ty = targetData.y;
|
|
24
|
-
var cx = (sx + tx) / 2;
|
|
25
|
-
var cy = (sy + ty) / 2;
|
|
26
|
-
var dx = tx - sx;
|
|
27
|
-
var dy = ty - sy;
|
|
28
|
-
var d = Math.sqrt(dx * dx + dy * dy);
|
|
29
|
-
if (d < sSize + tSize) return;
|
|
30
|
-
|
|
31
|
-
// Adding nodes sizes:
|
|
32
|
-
sx += dx * sSize / d;
|
|
33
|
-
sy += dy * sSize / d;
|
|
34
|
-
tx -= dx * tSize / d;
|
|
35
|
-
ty -= dy * tSize / d;
|
|
36
|
-
cx = (sx + tx) / 2;
|
|
37
|
-
cy = (sy + ty) / 2;
|
|
38
|
-
dx = tx - sx;
|
|
39
|
-
dy = ty - sy;
|
|
40
|
-
d = Math.sqrt(dx * dx + dy * dy);
|
|
41
|
-
|
|
42
|
-
// Handling ellipsis
|
|
43
|
-
var textLength = context.measureText(label).width;
|
|
44
|
-
if (textLength > d) {
|
|
45
|
-
var ellipsis = "…";
|
|
46
|
-
label = label + ellipsis;
|
|
47
|
-
textLength = context.measureText(label).width;
|
|
48
|
-
while (textLength > d && label.length > 1) {
|
|
49
|
-
label = label.slice(0, -2) + ellipsis;
|
|
50
|
-
textLength = context.measureText(label).width;
|
|
51
|
-
}
|
|
52
|
-
if (label.length < 4) return;
|
|
53
|
-
}
|
|
54
|
-
var angle;
|
|
55
|
-
if (dx > 0) {
|
|
56
|
-
if (dy > 0) angle = Math.acos(dx / d);else angle = Math.asin(dy / d);
|
|
57
|
-
} else {
|
|
58
|
-
if (dy > 0) angle = Math.acos(dx / d) + Math.PI;else angle = Math.asin(dx / d) + Math.PI / 2;
|
|
59
|
-
}
|
|
60
|
-
context.save();
|
|
61
|
-
context.translate(cx, cy);
|
|
62
|
-
context.rotate(angle);
|
|
63
|
-
context.fillStyle = settings.defaultNodeColor || "#fff";
|
|
64
|
-
context.fillRect(-textLength / 2 - 4, edgeData.size - size + 2, textLength + 8, size + 2);
|
|
65
|
-
context.fillStyle = color;
|
|
66
|
-
context.fillText(label, -textLength / 2, edgeData.size);
|
|
67
|
-
context.restore();
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export { drawLineLabel };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
/* istanbul ignore file */
|
|
4
|
-
|
|
5
|
-
// language=GLSL
|
|
6
|
-
var SHADER_SOURCE = /* glsl */"\nprecision mediump float;\n\nvarying vec4 v_color;\nvarying vec2 v_normal;\nvarying float v_opacity;\nvarying float v_thickness;\nvarying float v_feather;\n\nconst vec4 transparent = vec4(0.0, 0.0, 0.0, 0.0);\n\nvoid main(void) {\n // We only handle antialiasing for normal mode:\n #ifdef PICKING_MODE\n gl_FragColor = v_color;\n #else\n float dist = length(v_normal) * v_thickness;\n\n float t = smoothstep(\n v_thickness - v_feather,\n v_thickness,\n dist\n );\n\n gl_FragColor = mix(v_color, transparent, t);\n gl_FragColor = mix(transparent, gl_FragColor, v_opacity);\n #endif\n}\n";
|
|
7
|
-
|
|
8
|
-
export { SHADER_SOURCE as default };
|