@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,249 @@
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 _get from '@babel/runtime/helpers/get';
7
+ import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
8
+ import _inherits from '@babel/runtime/helpers/inherits';
9
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
10
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
11
+ import { NodeProgram } from 'sigma/rendering';
12
+ import { floatColor } from 'sigma/utils';
13
+ import SHADER_SOURCE from './frag.glsl.js';
14
+ import { DEFAULT_TEXTURE_MANAGER_OPTIONS, TextureManager } from './texture.js';
15
+ import VERTEX_SHADER_SOURCE from './vert.glsl.js';
16
+
17
+ var _excluded = ["drawHover", "drawLabel", "drawingMode", "keepWithinCircle", "padding", "colorAttribute", "badgePosition"];
18
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
19
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
20
+ 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; }
21
+ 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; }
22
+ var ICON_MAP = {
23
+ star: "M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z",
24
+ exclaim: "M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",
25
+ thumbUp: "M23,10C23,8.89 22.1,8 21,8H14.68L15.64,3.43C15.66,3.33 15.67,3.22 15.67,3.11C15.67,2.7 15.5,2.32 15.23,2.05L14.17,1L7.59,7.58C7.22,7.95 7,8.45 7,9V19A2,2 0 0,0 9,21H18C18.83,21 19.54,20.5 19.84,19.78L22.86,12.73C22.95,12.5 23,12.26 23,12V10M1,21H5V9H1V21Z",
26
+ thumbDown: "M19,15H23V3H19M15,3H6C5.17,3 4.46,3.5 4.16,4.22L1.14,11.27C1.05,11.5 1,11.74 1,12V14A2,2 0 0,0 3,16H9.31L8.36,20.57C8.34,20.67 8.33,20.77 8.33,20.88C8.33,21.3 8.5,21.67 8.77,21.94L9.83,23L16.41,16.41C16.78,16.05 17,15.55 17,15V5C17,3.89 16.1,3 15,3Z"
27
+ };
28
+ var POSITION = {
29
+ "top-left": 0,
30
+ "top-right": 1,
31
+ "bottom-left": 2,
32
+ "bottom-right": 3,
33
+ top: 4,
34
+ left: 5,
35
+ right: 6,
36
+ bottom: 7
37
+ };
38
+
39
+ /* istanbul ignore file */
40
+
41
+ var _WebGLRenderingContex = WebGLRenderingContext,
42
+ UNSIGNED_BYTE = _WebGLRenderingContex.UNSIGNED_BYTE,
43
+ FLOAT = _WebGLRenderingContex.FLOAT;
44
+ var DEFAULT_CREATE_NODE_IMAGE_OPTIONS = _objectSpread(_objectSpread({}, DEFAULT_TEXTURE_MANAGER_OPTIONS), {}, {
45
+ drawingMode: "background",
46
+ keepWithinCircle: true,
47
+ drawLabel: undefined,
48
+ drawHover: undefined,
49
+ padding: 0,
50
+ colorAttribute: "color"
51
+ });
52
+ var UNIFORMS = ["u_sizeRatio", "u_correctionRatio", "u_cameraAngle", "u_percentagePadding", "u_matrix", "u_colorizeImages", "u_keepWithinCircle", "u_atlas"];
53
+
54
+ /**
55
+ * To share the texture between the program instances of the graph and the
56
+ * hovered nodes (to prevent some flickering, mostly), this program must be
57
+ * "built" for each sigma instance:
58
+ */
59
+ function getNodeImageProgram(options) {
60
+ var _NodeImageProgram;
61
+ var _badgePosition$DEFAUL = _objectSpread(_objectSpread(_objectSpread({
62
+ badgePosition: "top-right"
63
+ }, DEFAULT_CREATE_NODE_IMAGE_OPTIONS), options !== null && options !== void 0 ? options : {}), {}, {
64
+ drawLabel: undefined,
65
+ drawHover: undefined
66
+ }),
67
+ drawHover = _badgePosition$DEFAUL.drawHover,
68
+ drawLabel = _badgePosition$DEFAUL.drawLabel;
69
+ _badgePosition$DEFAUL.drawingMode;
70
+ var keepWithinCircle = _badgePosition$DEFAUL.keepWithinCircle,
71
+ padding = _badgePosition$DEFAUL.padding;
72
+ _badgePosition$DEFAUL.colorAttribute;
73
+ var badgePosition = _badgePosition$DEFAUL.badgePosition,
74
+ textureManagerOptions = _objectWithoutProperties(_badgePosition$DEFAUL, _excluded);
75
+
76
+ /**
77
+ * This texture manager is shared between all instances of this exact class,
78
+ * returned by this call to getNodeProgramImage. This means that remounting
79
+ * the sigma instance will not reload the images and regenerate the texture.
80
+ */
81
+ var textureManager = new TextureManager(textureManagerOptions);
82
+ return _NodeImageProgram = /*#__PURE__*/function (_NodeProgram) {
83
+ function NodeImageProgram(gl, pickingBuffer, renderer) {
84
+ var _this;
85
+ _classCallCheck(this, NodeImageProgram);
86
+ _this = _callSuper(this, NodeImageProgram, [gl, pickingBuffer, renderer]);
87
+ _this.textureManagerCallback = function () {
88
+ if (!_this) return;
89
+ if (_this.bindTexture) {
90
+ _this.atlas = textureManager.getAtlas();
91
+ _this.textureImage = textureManager.getTexture();
92
+ _this.bindTexture();
93
+ if (_this.latestRenderParams) _this.render(_this.latestRenderParams);
94
+ }
95
+ if (renderer !== null && renderer !== void 0 && renderer.refresh) renderer.refresh();
96
+ };
97
+ textureManager.on(TextureManager.NEW_TEXTURE_EVENT, _this.textureManagerCallback);
98
+ _this.atlas = textureManager.getAtlas();
99
+ _this.textureImage = textureManager.getTexture();
100
+ _this.texture = gl.createTexture();
101
+ _this.bindTexture();
102
+ return _this;
103
+ }
104
+ _inherits(NodeImageProgram, _NodeProgram);
105
+ return _createClass(NodeImageProgram, [{
106
+ key: "getDefinition",
107
+ value: function getDefinition() {
108
+ return {
109
+ VERTICES: 4,
110
+ VERTEX_SHADER_SOURCE: VERTEX_SHADER_SOURCE,
111
+ FRAGMENT_SHADER_SOURCE: SHADER_SOURCE,
112
+ METHOD: WebGLRenderingContext.TRIANGLE_FAN,
113
+ UNIFORMS: UNIFORMS,
114
+ ATTRIBUTES: [{
115
+ name: "a_position",
116
+ size: 2,
117
+ type: FLOAT
118
+ }, {
119
+ name: "a_size",
120
+ size: 1,
121
+ type: FLOAT
122
+ }, {
123
+ name: "a_opacity",
124
+ size: 1,
125
+ type: FLOAT
126
+ }, {
127
+ name: "a_circle",
128
+ size: 1,
129
+ type: FLOAT
130
+ }, {
131
+ name: "a_placement",
132
+ size: 1,
133
+ type: FLOAT
134
+ }, {
135
+ name: "a_fill",
136
+ size: 4,
137
+ type: UNSIGNED_BYTE,
138
+ normalized: true
139
+ }, {
140
+ name: "a_color",
141
+ size: 4,
142
+ type: UNSIGNED_BYTE,
143
+ normalized: true
144
+ }, {
145
+ name: "a_id",
146
+ size: 4,
147
+ type: UNSIGNED_BYTE,
148
+ normalized: true
149
+ }, {
150
+ name: "a_texture",
151
+ size: 4,
152
+ type: FLOAT
153
+ }],
154
+ CONSTANT_ATTRIBUTES: [{
155
+ name: "a_angle",
156
+ size: 1,
157
+ type: FLOAT
158
+ }],
159
+ CONSTANT_DATA: [[NodeImageProgram.ANGLE_1], [NodeImageProgram.ANGLE_2], [NodeImageProgram.ANGLE_3], [NodeImageProgram.ANGLE_4]]
160
+ };
161
+ }
162
+ }, {
163
+ key: "kill",
164
+ value: function kill() {
165
+ textureManager.off(TextureManager.NEW_TEXTURE_EVENT, this.textureManagerCallback);
166
+ }
167
+ }, {
168
+ key: "bindTexture",
169
+ value: function bindTexture() {
170
+ var gl = this.normalProgram.gl;
171
+ gl.bindTexture(gl.TEXTURE_2D, this.texture);
172
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this.textureImage);
173
+ gl.generateMipmap(gl.TEXTURE_2D);
174
+ }
175
+ }, {
176
+ key: "renderProgram",
177
+ value: function renderProgram(params, programInfo) {
178
+ if (!programInfo.isPicking) {
179
+ // Rebind texture (since it's been just unbound by picking):
180
+ var gl = programInfo.gl;
181
+ gl.bindTexture(gl.TEXTURE_2D, this.texture);
182
+ }
183
+ _get(_getPrototypeOf(NodeImageProgram.prototype), "renderProgram", this).call(this, params, programInfo);
184
+ }
185
+ }, {
186
+ key: "processVisibleItem",
187
+ value: function processVisibleItem(nodeIndex, startIndex, data) {
188
+ var _data$badge, _badge$color, _ref, _badge$iconColor, _ICON_MAP, _data$opacity, _POSITION$badgePositi;
189
+ var array = this.array;
190
+ var badge = (_data$badge = data.badge) === null || _data$badge === void 0 ? void 0 : _data$badge.find(function (b) {
191
+ return b.position === badgePosition;
192
+ });
193
+ var fill = floatColor((_badge$color = badge === null || badge === void 0 ? void 0 : badge.color) !== null && _badge$color !== void 0 ? _badge$color : "#00000000");
194
+ var color = floatColor((_ref = (_badge$iconColor = badge === null || badge === void 0 ? void 0 : badge.iconColor) !== null && _badge$iconColor !== void 0 ? _badge$iconColor : this.renderer.getSetting("labelColor").color) !== null && _ref !== void 0 ? _ref : "#000");
195
+ var imageSource = badge ? (_ICON_MAP = ICON_MAP[badge.type]) !== null && _ICON_MAP !== void 0 ? _ICON_MAP : badge.path : undefined;
196
+ var imagePosition = imageSource ? this.atlas[imageSource] : undefined;
197
+ if (typeof imageSource === "string" && !imagePosition) void textureManager.registerImage(imageSource);
198
+ array[startIndex++] = data.x;
199
+ array[startIndex++] = data.y;
200
+ array[startIndex++] = data.size;
201
+ array[startIndex++] = !imageSource ? 0 : (_data$opacity = data.opacity) !== null && _data$opacity !== void 0 ? _data$opacity : 1;
202
+ array[startIndex++] = keepWithinCircle ? 1 : 0;
203
+ array[startIndex++] = (_POSITION$badgePositi = POSITION[badgePosition]) !== null && _POSITION$badgePositi !== void 0 ? _POSITION$badgePositi : 0;
204
+ array[startIndex++] = fill;
205
+ array[startIndex++] = color;
206
+ array[startIndex++] = nodeIndex;
207
+
208
+ // Reference texture:
209
+ if (imagePosition) {
210
+ var _this$textureImage = this.textureImage,
211
+ width = _this$textureImage.width,
212
+ height = _this$textureImage.height;
213
+ array[startIndex++] = imagePosition.x / width;
214
+ array[startIndex++] = imagePosition.y / height;
215
+ array[startIndex++] = imagePosition.size / width;
216
+ array[startIndex++] = imagePosition.size / height;
217
+ } else {
218
+ array[startIndex++] = 0;
219
+ array[startIndex++] = 0;
220
+ array[startIndex++] = 0;
221
+ array[startIndex++] = 0;
222
+ }
223
+ }
224
+ }, {
225
+ key: "setUniforms",
226
+ value: function setUniforms(params, _ref2) {
227
+ var gl = _ref2.gl,
228
+ uniformLocations = _ref2.uniformLocations;
229
+ var u_sizeRatio = uniformLocations.u_sizeRatio,
230
+ u_correctionRatio = uniformLocations.u_correctionRatio,
231
+ u_matrix = uniformLocations.u_matrix,
232
+ u_atlas = uniformLocations.u_atlas,
233
+ u_keepWithinCircle = uniformLocations.u_keepWithinCircle,
234
+ u_cameraAngle = uniformLocations.u_cameraAngle,
235
+ u_percentagePadding = uniformLocations.u_percentagePadding;
236
+ this.latestRenderParams = params;
237
+ gl.uniform1f(u_correctionRatio, params.correctionRatio);
238
+ gl.uniform1f(u_sizeRatio, params.sizeRatio);
239
+ gl.uniform1f(u_cameraAngle, params.cameraAngle);
240
+ gl.uniform1f(u_percentagePadding, padding);
241
+ gl.uniformMatrix3fv(u_matrix, false, params.matrix);
242
+ gl.uniform1i(u_atlas, 0);
243
+ gl.uniform1i(u_keepWithinCircle, keepWithinCircle ? 1 : 0);
244
+ }
245
+ }]);
246
+ }(NodeProgram), _defineProperty(_NodeImageProgram, "ANGLE_1", 1 * Math.PI / 4), _defineProperty(_NodeImageProgram, "ANGLE_2", 3 * Math.PI / 4), _defineProperty(_NodeImageProgram, "ANGLE_3", 5 * Math.PI / 4), _defineProperty(_NodeImageProgram, "ANGLE_4", 7 * Math.PI / 4), _defineProperty(_NodeImageProgram, "drawLabel", drawLabel), _defineProperty(_NodeImageProgram, "drawHover", drawHover), _NodeImageProgram;
247
+ }
248
+
249
+ export { getNodeImageProgram as default };
@@ -0,0 +1,8 @@
1
+ 'use client';
2
+
3
+ /* istanbul ignore file */
4
+
5
+ // language=GLSL
6
+ var SHADER_SOURCE = /* glsl */"\nprecision highp float;\n\nvarying vec4 v_fill;\nvarying vec4 v_color;\nvarying vec4 v_texture;\nvarying vec2 v_diffVector;\nvarying float v_opacity;\nvarying float v_radius;\n\nuniform sampler2D u_atlas;\nuniform float u_correctionRatio;\nuniform float u_cameraAngle;\nuniform float u_percentagePadding;\nuniform bool u_keepWithinCircle;\nuniform bool u_shape;\n\nconst vec4 transparent = vec4(0.0, 0.0, 0.0, 0.0);\n\nconst float radius = 0.5;\n\nvoid main(void) {\n float border = 2.0 * u_correctionRatio;\n float dist = length(v_diffVector);\n vec4 color = v_fill;\n\n float c = cos(-u_cameraAngle);\n float s = sin(-u_cameraAngle);\n vec2 diffVector = mat2(c, s, -s, c) * (v_diffVector);\n\n // No antialiasing for picking mode:\n #ifdef PICKING_MODE\n border = 0.0;\n gl_FragColor = v_color;\n\n #else\n // First case: No image to display\n if (v_texture.w <= 0.0) {\n color = v_fill;\n }\n\n // Second case: Image loaded into the texture\n else {\n float paddingRatio = 1.0 + 2.0 * u_percentagePadding;\n float coef = 1.0;\n vec2 coordinateInTexture = diffVector * vec2(paddingRatio, -paddingRatio) / v_radius / 2.0 * coef + vec2(0.5, 0.5);\n vec4 texel = texture2D(u_atlas, (v_texture.xy + coordinateInTexture * v_texture.zw), -1.0);\n\n // Colorize all visible image pixels:\n color = mix(v_fill, v_color, texel.a);\n \n // Erase pixels \"in the padding\":\n if (abs(diffVector.x) > v_radius / paddingRatio || abs(diffVector.y) > v_radius / paddingRatio) {\n color = v_fill;\n }\n }\n\n // Crop in a circle when u_keepWithinCircle is truthy:\n if(v_opacity == 0.0) {\n gl_FragColor = transparent;\n }\n else if (dist - v_radius + border > border)\n gl_FragColor = transparent;\n else if (dist - v_radius + border > 0.0) {\n gl_FragColor = mix(v_fill, transparent, (dist - v_radius + border) / border);\n }\n else {\n gl_FragColor = mix(v_fill, color, v_opacity);\n }\n #endif\n \n\n}\n";
7
+
8
+ export { SHADER_SOURCE as default };
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+
3
+ import getNodeImageProgram from './factory.js';
4
+
5
+ /* istanbul ignore file */
6
+
7
+ var NodeBadgeProgram = function NodeBadgeProgram(isCircle) {
8
+ return [getNodeImageProgram({
9
+ keepWithinCircle: isCircle,
10
+ badgePosition: "top-right"
11
+ }), getNodeImageProgram({
12
+ keepWithinCircle: isCircle,
13
+ badgePosition: "top-left"
14
+ }), getNodeImageProgram({
15
+ keepWithinCircle: isCircle,
16
+ badgePosition: "bottom-right"
17
+ }), getNodeImageProgram({
18
+ keepWithinCircle: isCircle,
19
+ badgePosition: "bottom-left"
20
+ }), getNodeImageProgram({
21
+ keepWithinCircle: isCircle,
22
+ badgePosition: "top"
23
+ }), getNodeImageProgram({
24
+ keepWithinCircle: isCircle,
25
+ badgePosition: "left"
26
+ }), getNodeImageProgram({
27
+ keepWithinCircle: isCircle,
28
+ badgePosition: "right"
29
+ })];
30
+ };
31
+
32
+ export { NodeBadgeProgram, getNodeImageProgram as createNodeImageProgram };