@andespindola/brainlink 0.1.0-beta.45 → 0.1.0-beta.47
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.
|
@@ -500,17 +500,17 @@ const fallbackViewportNodes = () => {
|
|
|
500
500
|
return nodes
|
|
501
501
|
}
|
|
502
502
|
|
|
503
|
-
const sampleVisibleNodes = (limit = renderNodeBudget) => {
|
|
504
|
-
if (
|
|
503
|
+
const sampleVisibleNodes = (limit = renderNodeBudget, sourceNodes = state.visibleNodes) => {
|
|
504
|
+
if (sourceNodes.length === 0 || limit <= 0) {
|
|
505
505
|
return []
|
|
506
506
|
}
|
|
507
507
|
|
|
508
508
|
const nodes = []
|
|
509
|
-
const maxNodes = Math.min(Math.max(limit, 1),
|
|
510
|
-
const step = Math.max(1, Math.ceil(
|
|
509
|
+
const maxNodes = Math.min(Math.max(limit, 1), sourceNodes.length)
|
|
510
|
+
const step = Math.max(1, Math.ceil(sourceNodes.length / maxNodes))
|
|
511
511
|
|
|
512
|
-
for (let index = 0; index <
|
|
513
|
-
nodes.push(
|
|
512
|
+
for (let index = 0; index < sourceNodes.length && nodes.length < maxNodes; index += step) {
|
|
513
|
+
nodes.push(sourceNodes[index])
|
|
514
514
|
}
|
|
515
515
|
|
|
516
516
|
if (state.selected && !nodes.find(node => node.id === state.selected.id)) {
|
|
@@ -978,43 +978,17 @@ const computeRenderVisibility = () => {
|
|
|
978
978
|
return
|
|
979
979
|
}
|
|
980
980
|
|
|
981
|
-
if (state.visibleNodes.length > massiveGraphNodeThreshold && state.transform.scale <= 0.035) {
|
|
982
|
-
const viewportClusters = filterOverviewClustersByViewport(viewport)
|
|
983
|
-
const clusters = viewportClusters.length > 0
|
|
984
|
-
? viewportClusters
|
|
985
|
-
: state.overviewClusters.slice(0, Math.min(220, state.overviewClusters.length))
|
|
986
|
-
const clusterLimit = clusterBudgetForScale(state.transform.scale)
|
|
987
|
-
const limitedClusters = clusters.slice(0, Math.min(clusterLimit, clusters.length))
|
|
988
|
-
if (limitedClusters.length > 0) {
|
|
989
|
-
state.renderClusters = limitedClusters
|
|
990
|
-
state.renderNodes = limitedClusters.map((cluster) => cluster.representative)
|
|
991
|
-
state.renderEdges = []
|
|
992
|
-
return
|
|
993
|
-
}
|
|
994
|
-
}
|
|
995
|
-
|
|
996
|
-
if (state.visibleNodes.length > massiveGraphNodeThreshold && state.transform.scale <= 0.06) {
|
|
997
|
-
const viewportClusters = filterOverviewClustersByViewport(viewport)
|
|
998
|
-
const clusters = viewportClusters.length > 0
|
|
999
|
-
? viewportClusters
|
|
1000
|
-
: state.overviewClusters.slice(0, Math.min(400, state.overviewClusters.length))
|
|
1001
|
-
const clusterLimit = clusterBudgetForScale(state.transform.scale)
|
|
1002
|
-
const limitedClusters = clusters.slice(0, Math.min(clusterLimit, clusters.length))
|
|
1003
|
-
if (limitedClusters.length > 0) {
|
|
1004
|
-
state.renderClusters = limitedClusters
|
|
1005
|
-
state.renderNodes = limitedClusters.map((cluster) => cluster.representative)
|
|
1006
|
-
state.renderEdges = []
|
|
1007
|
-
return
|
|
1008
|
-
}
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
981
|
if (state.visibleNodes.length > massiveGraphNodeThreshold) {
|
|
982
|
+
const viewportNodes = viewportNodesFromSpatialIndex(viewport)
|
|
983
|
+
const sourceNodes = viewportNodes.length > 0 ? viewportNodes : state.visibleNodes
|
|
1012
984
|
const sampleLimit = nodeBudgetForScale(state.transform.scale)
|
|
1013
|
-
const sampled =
|
|
985
|
+
const sampled = sourceNodes.length > sampleLimit
|
|
986
|
+
? sampleVisibleNodes(Math.min(sampleLimit, renderNodeBudget), sourceNodes)
|
|
987
|
+
: sourceNodes.slice(0, Math.min(sourceNodes.length, renderNodeBudget))
|
|
1014
988
|
const sampledIds = new Set(sampled.map((node) => node.id))
|
|
1015
989
|
state.renderClusters = []
|
|
1016
990
|
state.renderNodes = sampled
|
|
1017
|
-
state.renderEdges = state.transform.scale >= 0.
|
|
991
|
+
state.renderEdges = state.transform.scale >= 0.1 ? collectVisibleEdgesForNodes(sampledIds) : []
|
|
1018
992
|
return
|
|
1019
993
|
}
|
|
1020
994
|
|
|
@@ -1169,9 +1143,15 @@ const render = now => {
|
|
|
1169
1143
|
} else {
|
|
1170
1144
|
state.offscreenFrameCount = 0
|
|
1171
1145
|
}
|
|
1146
|
+
const minimumEdgeScale =
|
|
1147
|
+
state.nodes.length > massiveGraphNodeThreshold
|
|
1148
|
+
? 0.1
|
|
1149
|
+
: state.nodes.length > largeGraphNodeThreshold
|
|
1150
|
+
? 0.16
|
|
1151
|
+
: 0
|
|
1172
1152
|
const drawEdges =
|
|
1173
1153
|
state.renderClusters.length === 0 &&
|
|
1174
|
-
|
|
1154
|
+
state.transform.scale >= minimumEdgeScale
|
|
1175
1155
|
if (drawEdges) {
|
|
1176
1156
|
state.renderEdges.forEach(edge => {
|
|
1177
1157
|
const selectedEdge = state.selected && (edge.source === state.selected.id || edge.target === state.selected.id)
|
package/package.json
CHANGED