@andespindola/brainlink 0.1.0-beta.46 → 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)) {
|
|
@@ -983,12 +983,12 @@ const computeRenderVisibility = () => {
|
|
|
983
983
|
const sourceNodes = viewportNodes.length > 0 ? viewportNodes : state.visibleNodes
|
|
984
984
|
const sampleLimit = nodeBudgetForScale(state.transform.scale)
|
|
985
985
|
const sampled = sourceNodes.length > sampleLimit
|
|
986
|
-
? sampleVisibleNodes(Math.min(sampleLimit, renderNodeBudget))
|
|
986
|
+
? sampleVisibleNodes(Math.min(sampleLimit, renderNodeBudget), sourceNodes)
|
|
987
987
|
: sourceNodes.slice(0, Math.min(sourceNodes.length, renderNodeBudget))
|
|
988
988
|
const sampledIds = new Set(sampled.map((node) => node.id))
|
|
989
989
|
state.renderClusters = []
|
|
990
990
|
state.renderNodes = sampled
|
|
991
|
-
state.renderEdges = state.transform.scale >= 0.
|
|
991
|
+
state.renderEdges = state.transform.scale >= 0.1 ? collectVisibleEdgesForNodes(sampledIds) : []
|
|
992
992
|
return
|
|
993
993
|
}
|
|
994
994
|
|
|
@@ -1143,9 +1143,15 @@ const render = now => {
|
|
|
1143
1143
|
} else {
|
|
1144
1144
|
state.offscreenFrameCount = 0
|
|
1145
1145
|
}
|
|
1146
|
+
const minimumEdgeScale =
|
|
1147
|
+
state.nodes.length > massiveGraphNodeThreshold
|
|
1148
|
+
? 0.1
|
|
1149
|
+
: state.nodes.length > largeGraphNodeThreshold
|
|
1150
|
+
? 0.16
|
|
1151
|
+
: 0
|
|
1146
1152
|
const drawEdges =
|
|
1147
1153
|
state.renderClusters.length === 0 &&
|
|
1148
|
-
|
|
1154
|
+
state.transform.scale >= minimumEdgeScale
|
|
1149
1155
|
if (drawEdges) {
|
|
1150
1156
|
state.renderEdges.forEach(edge => {
|
|
1151
1157
|
const selectedEdge = state.selected && (edge.source === state.selected.id || edge.target === state.selected.id)
|
package/package.json
CHANGED