@react-fabric/graph 1.0.0-beta.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/css/styles.css +56 -0
  4. package/dist/cjs/_virtual/_commonjs-dynamic-modules.js +7 -0
  5. package/dist/cjs/_virtual/_commonjsHelpers.js +7 -0
  6. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +14 -0
  7. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +9 -0
  8. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +35 -0
  9. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +11 -0
  10. package/dist/cjs/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +20 -0
  11. package/dist/cjs/_virtual/elk-worker.js +8 -0
  12. package/dist/cjs/_virtual/elk.bundled.js +5 -0
  13. package/dist/cjs/node_modules/elkjs/lib/elk.bundled.js +6667 -0
  14. package/dist/cjs/packages/graph/src/components/Context.js +108 -0
  15. package/dist/cjs/packages/graph/src/components/ContextMenu.js +134 -0
  16. package/dist/cjs/packages/graph/src/components/Tools.js +127 -0
  17. package/dist/cjs/packages/graph/src/components/Viewer.js +57 -0
  18. package/dist/cjs/packages/graph/src/constants/index.js +16 -0
  19. package/dist/cjs/packages/graph/src/graph/index.js +425 -0
  20. package/dist/cjs/packages/graph/src/hooks/sigmaDragSelect.js +169 -0
  21. package/dist/cjs/packages/graph/src/hooks/sigmaHilighter.js +83 -0
  22. package/dist/cjs/packages/graph/src/hooks/sigmaMouseActions.js +145 -0
  23. package/dist/cjs/packages/graph/src/hooks/useGraphology.js +41 -0
  24. package/dist/cjs/packages/graph/src/hooks/useSigma.js +112 -0
  25. package/dist/cjs/packages/graph/src/index.js +33 -0
  26. package/dist/cjs/packages/graph/src/programs/arrow-head/frag.glsl.js +8 -0
  27. package/dist/cjs/packages/graph/src/programs/arrow-head/index.js +142 -0
  28. package/dist/cjs/packages/graph/src/programs/arrow-head/vert.glsl.js +8 -0
  29. package/dist/cjs/packages/graph/src/programs/edge-curve/drawLabel.js +136 -0
  30. package/dist/cjs/packages/graph/src/programs/edge-curve/frag.glsl.js +8 -0
  31. package/dist/cjs/packages/graph/src/programs/edge-curve/index.js +157 -0
  32. package/dist/cjs/packages/graph/src/programs/edge-curve/vert.glsl.js +8 -0
  33. package/dist/cjs/packages/graph/src/programs/edge-line/drawLabel.js +70 -0
  34. package/dist/cjs/packages/graph/src/programs/edge-line/frag.glsl.js +8 -0
  35. package/dist/cjs/packages/graph/src/programs/edge-line/index.js +166 -0
  36. package/dist/cjs/packages/graph/src/programs/edge-line/vert.glsl.js +8 -0
  37. package/dist/cjs/packages/graph/src/programs/node-badge/factory.js +249 -0
  38. package/dist/cjs/packages/graph/src/programs/node-badge/frag.glsl.js +8 -0
  39. package/dist/cjs/packages/graph/src/programs/node-badge/index.js +33 -0
  40. package/dist/cjs/packages/graph/src/programs/node-badge/texture.js +455 -0
  41. package/dist/cjs/packages/graph/src/programs/node-badge/vert.glsl.js +19 -0
  42. package/dist/cjs/packages/graph/src/programs/node-circle/base/drawHover.js +70 -0
  43. package/dist/cjs/packages/graph/src/programs/node-circle/base/drawLabel.js +112 -0
  44. package/dist/cjs/packages/graph/src/programs/node-circle/base/frag.glsl.js +8 -0
  45. package/dist/cjs/packages/graph/src/programs/node-circle/base/index.js +136 -0
  46. package/dist/cjs/packages/graph/src/programs/node-circle/base/vert.glsl.js +8 -0
  47. package/dist/cjs/packages/graph/src/programs/node-circle/index.js +15 -0
  48. package/dist/cjs/packages/graph/src/programs/node-image/factory.js +223 -0
  49. package/dist/cjs/packages/graph/src/programs/node-image/frag.glsl.js +8 -0
  50. package/dist/cjs/packages/graph/src/programs/node-image/index.js +14 -0
  51. package/dist/cjs/packages/graph/src/programs/node-image/texture.js +472 -0
  52. package/dist/cjs/packages/graph/src/programs/node-image/vert.glsl.js +8 -0
  53. package/dist/cjs/packages/graph/src/programs/node-rect/base/drawHover.js +67 -0
  54. package/dist/cjs/packages/graph/src/programs/node-rect/base/drawLabel.js +106 -0
  55. package/dist/cjs/packages/graph/src/programs/node-rect/base/frag.glsl.js +8 -0
  56. package/dist/cjs/packages/graph/src/programs/node-rect/base/index.js +135 -0
  57. package/dist/cjs/packages/graph/src/programs/node-rect/base/vert.glsl.js +8 -0
  58. package/dist/cjs/packages/graph/src/programs/node-rect/index.js +15 -0
  59. package/dist/esm/_virtual/_commonjs-dynamic-modules.js +7 -0
  60. package/dist/esm/_virtual/_commonjsHelpers.js +7 -0
  61. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +14 -0
  62. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +9 -0
  63. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +34 -0
  64. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +13 -0
  65. package/dist/esm/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +20 -0
  66. package/dist/esm/_virtual/elk-worker.js +8 -0
  67. package/dist/esm/_virtual/elk.bundled.js +5 -0
  68. package/dist/esm/node_modules/elkjs/lib/elk.bundled.js +6667 -0
  69. package/dist/esm/packages/graph/src/components/Context.js +107 -0
  70. package/dist/esm/packages/graph/src/components/ContextMenu.js +134 -0
  71. package/dist/esm/packages/graph/src/components/Tools.js +127 -0
  72. package/dist/esm/packages/graph/src/components/Viewer.js +57 -0
  73. package/dist/esm/packages/graph/src/constants/index.js +16 -0
  74. package/dist/esm/packages/graph/src/graph/index.js +425 -0
  75. package/dist/esm/packages/graph/src/hooks/sigmaDragSelect.js +169 -0
  76. package/dist/esm/packages/graph/src/hooks/sigmaHilighter.js +83 -0
  77. package/dist/esm/packages/graph/src/hooks/sigmaMouseActions.js +145 -0
  78. package/dist/esm/packages/graph/src/hooks/useGraphology.js +41 -0
  79. package/dist/esm/packages/graph/src/hooks/useSigma.js +112 -0
  80. package/dist/esm/packages/graph/src/index.js +30 -0
  81. package/dist/esm/packages/graph/src/programs/arrow-head/frag.glsl.js +8 -0
  82. package/dist/esm/packages/graph/src/programs/arrow-head/index.js +141 -0
  83. package/dist/esm/packages/graph/src/programs/arrow-head/vert.glsl.js +8 -0
  84. package/dist/esm/packages/graph/src/programs/edge-curve/drawLabel.js +136 -0
  85. package/dist/esm/packages/graph/src/programs/edge-curve/frag.glsl.js +8 -0
  86. package/dist/esm/packages/graph/src/programs/edge-curve/index.js +156 -0
  87. package/dist/esm/packages/graph/src/programs/edge-curve/vert.glsl.js +8 -0
  88. package/dist/esm/packages/graph/src/programs/edge-line/drawLabel.js +70 -0
  89. package/dist/esm/packages/graph/src/programs/edge-line/frag.glsl.js +8 -0
  90. package/dist/esm/packages/graph/src/programs/edge-line/index.js +166 -0
  91. package/dist/esm/packages/graph/src/programs/edge-line/vert.glsl.js +8 -0
  92. package/dist/esm/packages/graph/src/programs/node-badge/factory.js +249 -0
  93. package/dist/esm/packages/graph/src/programs/node-badge/frag.glsl.js +8 -0
  94. package/dist/esm/packages/graph/src/programs/node-badge/index.js +32 -0
  95. package/dist/esm/packages/graph/src/programs/node-badge/texture.js +445 -0
  96. package/dist/esm/packages/graph/src/programs/node-badge/vert.glsl.js +19 -0
  97. package/dist/esm/packages/graph/src/programs/node-circle/base/drawHover.js +70 -0
  98. package/dist/esm/packages/graph/src/programs/node-circle/base/drawLabel.js +112 -0
  99. package/dist/esm/packages/graph/src/programs/node-circle/base/frag.glsl.js +8 -0
  100. package/dist/esm/packages/graph/src/programs/node-circle/base/index.js +136 -0
  101. package/dist/esm/packages/graph/src/programs/node-circle/base/vert.glsl.js +8 -0
  102. package/dist/esm/packages/graph/src/programs/node-circle/index.js +15 -0
  103. package/dist/esm/packages/graph/src/programs/node-image/factory.js +223 -0
  104. package/dist/esm/packages/graph/src/programs/node-image/frag.glsl.js +8 -0
  105. package/dist/esm/packages/graph/src/programs/node-image/index.js +13 -0
  106. package/dist/esm/packages/graph/src/programs/node-image/texture.js +462 -0
  107. package/dist/esm/packages/graph/src/programs/node-image/vert.glsl.js +8 -0
  108. package/dist/esm/packages/graph/src/programs/node-rect/base/drawHover.js +67 -0
  109. package/dist/esm/packages/graph/src/programs/node-rect/base/drawLabel.js +106 -0
  110. package/dist/esm/packages/graph/src/programs/node-rect/base/frag.glsl.js +8 -0
  111. package/dist/esm/packages/graph/src/programs/node-rect/base/index.js +135 -0
  112. package/dist/esm/packages/graph/src/programs/node-rect/base/vert.glsl.js +8 -0
  113. package/dist/esm/packages/graph/src/programs/node-rect/index.js +15 -0
  114. package/dist/types/components/Context.d.ts +18 -0
  115. package/dist/types/components/ContextMenu.d.ts +1 -0
  116. package/dist/types/components/Tools.d.ts +1 -0
  117. package/dist/types/components/Viewer.d.ts +2 -0
  118. package/dist/types/constants/index.d.ts +12 -0
  119. package/dist/types/graph/index.d.ts +30 -0
  120. package/dist/types/graph/layout.worker.d.ts +1 -0
  121. package/dist/types/hooks/sigmaDragSelect.d.ts +8 -0
  122. package/dist/types/hooks/sigmaHilighter.d.ts +3 -0
  123. package/dist/types/hooks/sigmaMouseActions.d.ts +3 -0
  124. package/dist/types/hooks/useGraphology.d.ts +6 -0
  125. package/dist/types/hooks/useSigma.d.ts +8 -0
  126. package/dist/types/index.d.ts +3 -0
  127. package/dist/types/programs/arrow-head/frag.glsl.d.ts +2 -0
  128. package/dist/types/programs/arrow-head/index.d.ts +9 -0
  129. package/dist/types/programs/arrow-head/vert.glsl.d.ts +2 -0
  130. package/dist/types/programs/edge-curve/drawLabel.d.ts +6 -0
  131. package/dist/types/programs/edge-curve/frag.glsl.d.ts +2 -0
  132. package/dist/types/programs/edge-curve/index.d.ts +43 -0
  133. package/dist/types/programs/edge-curve/vert.glsl.d.ts +2 -0
  134. package/dist/types/programs/edge-line/drawLabel.d.ts +5 -0
  135. package/dist/types/programs/edge-line/frag.glsl.d.ts +2 -0
  136. package/dist/types/programs/edge-line/index.d.ts +11 -0
  137. package/dist/types/programs/edge-line/vert.glsl.d.ts +2 -0
  138. package/dist/types/programs/node-badge/factory.d.ts +27 -0
  139. package/dist/types/programs/node-badge/frag.glsl.d.ts +2 -0
  140. package/dist/types/programs/node-badge/index.d.ts +5 -0
  141. package/dist/types/programs/node-badge/texture.d.ts +102 -0
  142. package/dist/types/programs/node-badge/vert.glsl.d.ts +2 -0
  143. package/dist/types/programs/node-circle/base/drawHover.d.ts +8 -0
  144. package/dist/types/programs/node-circle/base/drawLabel.d.ts +8 -0
  145. package/dist/types/programs/node-circle/base/frag.glsl.d.ts +2 -0
  146. package/dist/types/programs/node-circle/base/index.d.ts +37 -0
  147. package/dist/types/programs/node-circle/base/vert.glsl.d.ts +2 -0
  148. package/dist/types/programs/node-circle/index.d.ts +11 -0
  149. package/dist/types/programs/node-image/factory.d.ts +25 -0
  150. package/dist/types/programs/node-image/frag.glsl.d.ts +2 -0
  151. package/dist/types/programs/node-image/index.d.ts +5 -0
  152. package/dist/types/programs/node-image/texture.d.ts +102 -0
  153. package/dist/types/programs/node-image/vert.glsl.d.ts +2 -0
  154. package/dist/types/programs/node-rect/base/drawHover.d.ts +8 -0
  155. package/dist/types/programs/node-rect/base/drawLabel.d.ts +8 -0
  156. package/dist/types/programs/node-rect/base/frag.glsl.d.ts +2 -0
  157. package/dist/types/programs/node-rect/base/index.d.ts +34 -0
  158. package/dist/types/programs/node-rect/base/vert.glsl.d.ts +2 -0
  159. package/dist/types/programs/node-rect/index.d.ts +11 -0
  160. package/dist/types/types/index.d.ts +189 -0
  161. package/package.json +69 -0
  162. package/src/components/Context.tsx +135 -0
  163. package/src/components/ContextMenu.tsx +156 -0
  164. package/src/components/Tools.tsx +107 -0
  165. package/src/components/Viewer.tsx +75 -0
  166. package/src/constants/index.ts +22 -0
  167. package/src/graph/index.ts +428 -0
  168. package/src/graph/layout.worker.ts +42 -0
  169. package/src/hooks/sigmaDragSelect.ts +219 -0
  170. package/src/hooks/sigmaHilighter.ts +107 -0
  171. package/src/hooks/sigmaMouseActions.ts +153 -0
  172. package/src/hooks/useGraphology.ts +31 -0
  173. package/src/hooks/useSigma.ts +118 -0
  174. package/src/index.ts +34 -0
  175. package/src/programs/arrow-head/frag.glsl.ts +18 -0
  176. package/src/programs/arrow-head/index.ts +148 -0
  177. package/src/programs/arrow-head/vert.glsl.ts +75 -0
  178. package/src/programs/edge-curve/drawLabel.ts +166 -0
  179. package/src/programs/edge-curve/frag.glsl.ts +86 -0
  180. package/src/programs/edge-curve/index.ts +158 -0
  181. package/src/programs/edge-curve/vert.glsl.ts +110 -0
  182. package/src/programs/edge-line/drawLabel.ts +113 -0
  183. package/src/programs/edge-line/frag.glsl.ts +34 -0
  184. package/src/programs/edge-line/index.ts +165 -0
  185. package/src/programs/edge-line/vert.glsl.ts +104 -0
  186. package/src/programs/node-badge/factory.ts +327 -0
  187. package/src/programs/node-badge/frag.glsl.ts +79 -0
  188. package/src/programs/node-badge/index.ts +35 -0
  189. package/src/programs/node-badge/texture.ts +425 -0
  190. package/src/programs/node-badge/vert.glsl.ts +99 -0
  191. package/src/programs/node-circle/base/drawHover.ts +80 -0
  192. package/src/programs/node-circle/base/drawLabel.ts +145 -0
  193. package/src/programs/node-circle/base/frag.glsl.ts +72 -0
  194. package/src/programs/node-circle/base/index.ts +102 -0
  195. package/src/programs/node-circle/base/vert.glsl.ts +83 -0
  196. package/src/programs/node-circle/index.ts +19 -0
  197. package/src/programs/node-image/factory.ts +301 -0
  198. package/src/programs/node-image/frag.glsl.ts +97 -0
  199. package/src/programs/node-image/index.ts +7 -0
  200. package/src/programs/node-image/texture.ts +435 -0
  201. package/src/programs/node-image/vert.glsl.ts +60 -0
  202. package/src/programs/node-rect/base/drawHover.ts +77 -0
  203. package/src/programs/node-rect/base/drawLabel.ts +149 -0
  204. package/src/programs/node-rect/base/frag.glsl.ts +67 -0
  205. package/src/programs/node-rect/base/index.ts +109 -0
  206. package/src/programs/node-rect/base/vert.glsl.ts +87 -0
  207. package/src/programs/node-rect/index.ts +19 -0
  208. package/src/types/index.ts +210 -0
@@ -0,0 +1,157 @@
1
+ 'use strict';
2
+
3
+ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
+ var _createClass = require('@babel/runtime/helpers/createClass');
5
+ var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
6
+ var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
7
+ var _inherits = require('@babel/runtime/helpers/inherits');
8
+ var edgeCurve = require('@sigma/edge-curve');
9
+ var rendering = require('sigma/rendering');
10
+ var utils = require('sigma/utils');
11
+ var drawLabel = require('./drawLabel.js');
12
+ var frag_glsl = require('./frag.glsl.js');
13
+ var vert_glsl = require('./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: vert_glsl,
36
+ FRAGMENT_SHADER_SOURCE: frag_glsl,
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$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.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 : edgeCurve.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++] = utils.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
+ }(rendering.EdgeProgram);
147
+ var EdgeCurveProgram = rendering.createEdgeCompoundProgram([EdgeCurveProgramBase
148
+ // createEdgeArrowHeadProgram({ extremity: "source" }),
149
+ // createEdgeArrowHeadProgram({ extremity: "target" }),
150
+ ], drawLabel.createDrawCurvedEdgeLabel({
151
+ curvatureAttribute: "curvature",
152
+ defaultCurvature: edgeCurve.DEFAULT_EDGE_CURVATURE,
153
+ arrowHead: null
154
+ }));
155
+
156
+ exports.EdgeCurveProgram = EdgeCurveProgram;
157
+ exports.EdgeCurveProgramBase = EdgeCurveProgramBase;
@@ -0,0 +1,8 @@
1
+ 'use strict';
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
+ module.exports = SHADER;
@@ -0,0 +1,70 @@
1
+ 'use strict';
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
+ exports.drawLineLabel = drawLineLabel;
@@ -0,0 +1,8 @@
1
+ 'use strict';
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
+ module.exports = SHADER_SOURCE;
@@ -0,0 +1,166 @@
1
+ 'use strict';
2
+
3
+ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
+ var _createClass = require('@babel/runtime/helpers/createClass');
5
+ var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
6
+ var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
7
+ var _inherits = require('@babel/runtime/helpers/inherits');
8
+ var rendering = require('sigma/rendering');
9
+ var utils = require('sigma/utils');
10
+ var index = require('../arrow-head/index.js');
11
+ var drawLabel = require('./drawLabel.js');
12
+ var frag_glsl = require('./frag.glsl.js');
13
+ var vert_glsl = require('./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_zoomRatio", "u_sizeRatio", "u_correctionRatio", "u_pixelRatio", "u_feather", "u_minEdgeThickness", "u_lengthToThicknessRatio"];
24
+ var EdgeLineProgramBase = /*#__PURE__*/function (_EdgeProgram) {
25
+ function EdgeLineProgramBase() {
26
+ _classCallCheck(this, EdgeLineProgramBase);
27
+ return _callSuper(this, EdgeLineProgramBase, arguments);
28
+ }
29
+ _inherits(EdgeLineProgramBase, _EdgeProgram);
30
+ return _createClass(EdgeLineProgramBase, [{
31
+ key: "getDefinition",
32
+ value: function getDefinition() {
33
+ return {
34
+ VERTICES: 6,
35
+ VERTEX_SHADER_SOURCE: vert_glsl,
36
+ FRAGMENT_SHADER_SOURCE: frag_glsl,
37
+ METHOD: WebGLRenderingContext.TRIANGLES,
38
+ UNIFORMS: UNIFORMS,
39
+ ATTRIBUTES: [{
40
+ name: "a_positionStart",
41
+ size: 2,
42
+ type: FLOAT
43
+ }, {
44
+ name: "a_positionEnd",
45
+ size: 2,
46
+ type: FLOAT
47
+ }, {
48
+ name: "a_normal",
49
+ size: 2,
50
+ type: FLOAT
51
+ }, {
52
+ name: "a_color",
53
+ size: 4,
54
+ type: UNSIGNED_BYTE,
55
+ normalized: true
56
+ }, {
57
+ name: "a_opacity",
58
+ size: 1,
59
+ type: FLOAT
60
+ }, {
61
+ name: "a_id",
62
+ size: 4,
63
+ type: UNSIGNED_BYTE,
64
+ normalized: true
65
+ }, {
66
+ name: "a_sourceRadius",
67
+ size: 1,
68
+ type: FLOAT
69
+ }, {
70
+ name: "a_targetRadius",
71
+ size: 1,
72
+ type: FLOAT
73
+ }],
74
+ CONSTANT_ATTRIBUTES: [
75
+ // If 0, then position will be a_positionStart
76
+ // If 2, then position will be a_positionEnd
77
+ {
78
+ name: "a_positionCoef",
79
+ size: 1,
80
+ type: FLOAT
81
+ }, {
82
+ name: "a_normalCoef",
83
+ size: 1,
84
+ type: FLOAT
85
+ }, {
86
+ name: "a_sourceRadiusCoef",
87
+ size: 1,
88
+ type: FLOAT
89
+ }, {
90
+ name: "a_targetRadiusCoef",
91
+ size: 1,
92
+ type: FLOAT
93
+ }],
94
+ CONSTANT_DATA: [[0, 1, -1, 0], [0, -1, 1, 0], [1, 1, 0, 1], [1, 1, 0, 1], [0, -1, 1, 0], [1, -1, 0, -1]]
95
+ };
96
+ }
97
+ }, {
98
+ key: "processVisibleItem",
99
+ value: function processVisibleItem(edgeIndex, startIndex, sourceData, targetData, data) {
100
+ var _data$color, _data$opacity, _data$arrow, _data$arrow2;
101
+ var color = (_data$color = data.color) !== null && _data$color !== void 0 ? _data$color : this.renderer.getSetting("defaultEdgeColor");
102
+ if (data.selected) color = "#f00";
103
+ if (data.highlight) color = "#F54A4A";
104
+ var thickness = Math.min(data.size || 1, 0.5) * (data.selected || data.highlight ? 8 : 4);
105
+ var x1 = sourceData.x;
106
+ var y1 = sourceData.y;
107
+ var x2 = targetData.x;
108
+ var y2 = targetData.y;
109
+
110
+ // Computing normals
111
+ var dx = x2 - x1;
112
+ var dy = y2 - y1;
113
+ var sourceRadius = sourceData.size || 1;
114
+ var targetRadius = targetData.size || 1;
115
+ var len = dx * dx + dy * dy;
116
+ var n1 = 0;
117
+ var n2 = 0;
118
+ if (len) {
119
+ len = 1 / Math.sqrt(len);
120
+ n1 = -dy * len * thickness;
121
+ n2 = dx * len * thickness;
122
+ }
123
+ var array = this.array;
124
+ array[startIndex++] = x1;
125
+ array[startIndex++] = y1;
126
+ array[startIndex++] = x2;
127
+ array[startIndex++] = y2;
128
+ array[startIndex++] = n1;
129
+ array[startIndex++] = n2;
130
+ array[startIndex++] = utils.floatColor(color);
131
+ array[startIndex++] = (_data$opacity = data.opacity) !== null && _data$opacity !== void 0 ? _data$opacity : 1;
132
+ array[startIndex++] = edgeIndex;
133
+ array[startIndex++] = ["both", "source"].includes((_data$arrow = data.arrow) !== null && _data$arrow !== void 0 ? _data$arrow : "") ? sourceRadius : 0;
134
+ array[startIndex++] = ["both", "target"].includes((_data$arrow2 = data.arrow) !== null && _data$arrow2 !== void 0 ? _data$arrow2 : "") ? targetRadius : 0;
135
+ }
136
+ }, {
137
+ key: "setUniforms",
138
+ value: function setUniforms(params, _ref) {
139
+ var gl = _ref.gl,
140
+ uniformLocations = _ref.uniformLocations;
141
+ var u_matrix = uniformLocations.u_matrix,
142
+ u_zoomRatio = uniformLocations.u_zoomRatio,
143
+ u_feather = uniformLocations.u_feather,
144
+ u_pixelRatio = uniformLocations.u_pixelRatio,
145
+ u_correctionRatio = uniformLocations.u_correctionRatio,
146
+ u_sizeRatio = uniformLocations.u_sizeRatio,
147
+ u_minEdgeThickness = uniformLocations.u_minEdgeThickness,
148
+ u_lengthToThicknessRatio = uniformLocations.u_lengthToThicknessRatio;
149
+ gl.uniformMatrix3fv(u_matrix, false, params.matrix);
150
+ gl.uniform1f(u_zoomRatio, params.zoomRatio);
151
+ gl.uniform1f(u_sizeRatio, params.sizeRatio);
152
+ gl.uniform1f(u_correctionRatio, params.correctionRatio);
153
+ gl.uniform1f(u_pixelRatio, params.pixelRatio);
154
+ gl.uniform1f(u_feather, params.antiAliasingFeather);
155
+ gl.uniform1f(u_minEdgeThickness, params.minEdgeThickness);
156
+ gl.uniform1f(u_lengthToThicknessRatio, 2.5);
157
+ }
158
+ }]);
159
+ }(rendering.EdgeProgram);
160
+ var EdgeLineProgram = rendering.createEdgeCompoundProgram([EdgeLineProgramBase, index.createEdgeArrowHeadProgram({
161
+ extremity: "source"
162
+ }), index.createEdgeArrowHeadProgram({
163
+ extremity: "target"
164
+ })], drawLabel.drawLineLabel);
165
+
166
+ exports.EdgeLineProgram = EdgeLineProgram;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ /* istanbul ignore file */
4
+
5
+ // language=GLSL
6
+ var SHADER_SOURCE = /* glsl */"\nattribute vec4 a_id;\nattribute vec4 a_color;\nattribute vec2 a_normal;\nattribute float a_opacity;\nattribute float a_normalCoef;\nattribute vec2 a_positionStart;\nattribute vec2 a_positionEnd;\nattribute float a_positionCoef;\nattribute float a_sourceRadius;\nattribute float a_targetRadius;\nattribute float a_sourceRadiusCoef;\nattribute float a_targetRadiusCoef;\n\nuniform mat3 u_matrix;\nuniform float u_sizeRatio;\nuniform float u_zoomRatio;\nuniform float u_pixelRatio;\nuniform float u_correctionRatio;\nuniform float u_minEdgeThickness;\nuniform float u_lengthToThicknessRatio;\nuniform float u_feather;\n\nvarying vec4 v_color;\nvarying vec2 v_normal;\nvarying float v_opacity;\nvarying float v_thickness;\nvarying float v_feather;\n\nconst float minThickness = 1.7;\nconst float bias = 255.0 / 254.0;\n\nvoid main() {\n vec2 normal = a_normal * a_normalCoef;\n vec2 position = a_positionStart * (1.0 - a_positionCoef) + a_positionEnd * a_positionCoef;\n\n float normalLength = length(normal);\n vec2 unitNormal = normal / normalLength;\n\n // We require edges to be at least \"minThickness\" pixels thick *on screen*\n // (so we need to compensate the size ratio):\n float pixelsThickness = max(normalLength, minThickness * u_sizeRatio);\n\n // Then, we need to retrieve the normalized thickness of the edge in the WebGL\n // referential (in a ([0, 1], [0, 1]) space), using our \"magic\" correction\n // ratio:\n float webGLThickness = pixelsThickness * u_correctionRatio / u_sizeRatio;\n\n // Here, we move the point to leave space for the arrow heads:\n // Source arrow head\n float sourceRadius = a_sourceRadius * a_sourceRadiusCoef;\n float sourceDirection = sign(sourceRadius);\n float webGLSourceRadius = sourceDirection * sourceRadius * 2.0 * u_correctionRatio / u_sizeRatio;\n float webGLSourceArrowHeadLength = webGLThickness * u_lengthToThicknessRatio * 2.0;\n vec2 sourceCompensationVector =\n vec2(-sourceDirection * unitNormal.y, sourceDirection * unitNormal.x)\n * (webGLSourceRadius + webGLSourceArrowHeadLength);\n \n // Target arrow head\n float targetRadius = a_targetRadius * a_targetRadiusCoef;\n float targetDirection = sign(targetRadius);\n float webGLTargetRadius = targetDirection * targetRadius * 2.0 * u_correctionRatio / u_sizeRatio;\n float webGLTargetArrowHeadLength = webGLThickness * u_lengthToThicknessRatio * 2.0;\n vec2 targetCompensationVector =\n vec2(-targetDirection * unitNormal.y, targetDirection * unitNormal.x)\n * (webGLTargetRadius + webGLTargetArrowHeadLength);\n\n if(a_sourceRadius == 0.0) {\n sourceCompensationVector = vec2(0.0, 0.0);\n }\n if(a_targetRadius == 0.0) {\n targetCompensationVector = vec2(0.0, 0.0);\n }\n\n // Here is the proper position of the vertex\n gl_Position = vec4((u_matrix * vec3(position + unitNormal * webGLThickness + sourceCompensationVector + targetCompensationVector, 1)).xy, 0, 1);\n\n // For the fragment shader though, we need a thickness that takes the \"magic\"\n // correction ratio into account (as in webGLThickness), but so that the\n // antialiasing effect does not depend on the zoom level. So here's yet\n // another thickness version:\n v_thickness = webGLThickness / u_zoomRatio;\n\n v_normal = unitNormal;\n\n v_feather = u_feather * u_correctionRatio / u_zoomRatio / u_pixelRatio * 2.0;\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
+ module.exports = SHADER_SOURCE;