@yurialvesbordin/graphium 2.0.1 → 2.1.1
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/README.md +11 -0
- package/dist/Graphium.d.ts +1 -0
- package/dist/Graphium.d.ts.map +1 -1
- package/dist/Graphium.js +9 -1
- package/dist/Graphium.js.map +1 -1
- package/dist/core/GraphEditor.d.ts.map +1 -1
- package/dist/core/GraphEditor.js +3 -0
- package/dist/core/GraphEditor.js.map +1 -1
- package/dist/core/GraphModel.d.ts +2 -0
- package/dist/core/GraphModel.d.ts.map +1 -1
- package/dist/core/GraphModel.js +11 -4
- package/dist/core/GraphModel.js.map +1 -1
- package/dist/core/handles.d.ts +2 -0
- package/dist/core/handles.d.ts.map +1 -1
- package/dist/core/handles.js +5 -0
- package/dist/core/handles.js.map +1 -1
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/interaction/InteractionBinder.d.ts.map +1 -1
- package/dist/interaction/InteractionBinder.js +3 -0
- package/dist/interaction/InteractionBinder.js.map +1 -1
- package/dist/interaction/PointerController.d.ts +2 -0
- package/dist/interaction/PointerController.d.ts.map +1 -1
- package/dist/interaction/PointerController.js +23 -1
- package/dist/interaction/PointerController.js.map +1 -1
- package/dist/physics/PhysicsEngine.d.ts +5 -0
- package/dist/physics/PhysicsEngine.d.ts.map +1 -1
- package/dist/physics/PhysicsEngine.js +49 -3
- package/dist/physics/PhysicsEngine.js.map +1 -1
- package/dist/physics/SpatialHash.d.ts +2 -0
- package/dist/physics/SpatialHash.d.ts.map +1 -1
- package/dist/physics/SpatialHash.js +20 -0
- package/dist/physics/SpatialHash.js.map +1 -1
- package/dist/render/LabelLayer.d.ts.map +1 -1
- package/dist/render/LabelLayer.js +8 -4
- package/dist/render/LabelLayer.js.map +1 -1
- package/dist/render/TextureAtlas.d.ts +4 -0
- package/dist/render/TextureAtlas.d.ts.map +1 -1
- package/dist/render/TextureAtlas.js +35 -16
- package/dist/render/TextureAtlas.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,9 @@ export class TextureAtlas {
|
|
|
9
9
|
this.loadedCount = 0;
|
|
10
10
|
this.entries = new Map();
|
|
11
11
|
this.pending = new Set();
|
|
12
|
+
this.freeSlots = [];
|
|
12
13
|
this.nextSlot = 0;
|
|
14
|
+
this.settleCallbacks = [];
|
|
13
15
|
this.onEvent = null;
|
|
14
16
|
this.uploadedRevision = -1;
|
|
15
17
|
this.gl = gl;
|
|
@@ -48,11 +50,21 @@ export class TextureAtlas {
|
|
|
48
50
|
entry.mode = mode;
|
|
49
51
|
return entry.slot;
|
|
50
52
|
}
|
|
51
|
-
if (
|
|
53
|
+
if (typeof Image === 'undefined') {
|
|
54
|
+
return -1;
|
|
55
|
+
}
|
|
56
|
+
let slot;
|
|
57
|
+
if (this.freeSlots.length > 0) {
|
|
58
|
+
slot = this.freeSlots.pop();
|
|
59
|
+
}
|
|
60
|
+
else if (this.nextSlot < this.maxSlots) {
|
|
61
|
+
slot = this.nextSlot++;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
52
64
|
return -1;
|
|
53
65
|
}
|
|
54
66
|
const record = {
|
|
55
|
-
slot
|
|
67
|
+
slot,
|
|
56
68
|
ready: false,
|
|
57
69
|
failed: false,
|
|
58
70
|
used: true,
|
|
@@ -64,12 +76,15 @@ export class TextureAtlas {
|
|
|
64
76
|
const image = new Image();
|
|
65
77
|
image.crossOrigin = 'anonymous';
|
|
66
78
|
image.onload = () => {
|
|
67
|
-
|
|
79
|
+
this.pending.delete(url);
|
|
80
|
+
this.notifySettled();
|
|
81
|
+
// The entry may have been swept or replaced while the image was in
|
|
82
|
+
// flight, and its slot may now belong to a different URL.
|
|
83
|
+
if (this.entries.get(url) !== record) {
|
|
68
84
|
return;
|
|
69
85
|
}
|
|
70
86
|
record.ready = true;
|
|
71
87
|
record.image = image;
|
|
72
|
-
this.pending.delete(url);
|
|
73
88
|
this.drawEntry(record);
|
|
74
89
|
this.loadedCount++;
|
|
75
90
|
if (this.onEvent) {
|
|
@@ -77,8 +92,9 @@ export class TextureAtlas {
|
|
|
77
92
|
}
|
|
78
93
|
};
|
|
79
94
|
image.onerror = () => {
|
|
80
|
-
record.failed = true;
|
|
81
95
|
this.pending.delete(url);
|
|
96
|
+
this.notifySettled();
|
|
97
|
+
record.failed = true;
|
|
82
98
|
if (this.onEvent) {
|
|
83
99
|
this.onEvent({ type: 'imageerror', url, slot: record.slot });
|
|
84
100
|
}
|
|
@@ -124,6 +140,7 @@ export class TextureAtlas {
|
|
|
124
140
|
for (const [url, entry] of this.entries) {
|
|
125
141
|
if (!entry.used) {
|
|
126
142
|
this.entries.delete(url);
|
|
143
|
+
this.freeSlots.push(entry.slot);
|
|
127
144
|
}
|
|
128
145
|
else {
|
|
129
146
|
entry.used = false;
|
|
@@ -136,22 +153,24 @@ export class TextureAtlas {
|
|
|
136
153
|
return Promise.resolve();
|
|
137
154
|
}
|
|
138
155
|
return new Promise(resolve => {
|
|
139
|
-
|
|
156
|
+
this.settleCallbacks.push(() => {
|
|
140
157
|
if (this.pending.size === 0) {
|
|
141
158
|
resolve();
|
|
142
|
-
return true;
|
|
143
159
|
}
|
|
144
|
-
|
|
145
|
-
};
|
|
146
|
-
const previous = this.onEvent;
|
|
147
|
-
this.onEvent = event => {
|
|
148
|
-
if (previous) {
|
|
149
|
-
previous(event);
|
|
150
|
-
}
|
|
151
|
-
check();
|
|
152
|
-
};
|
|
160
|
+
});
|
|
153
161
|
});
|
|
154
162
|
}
|
|
163
|
+
/** Resolves loadAll waiters once the pending set drains. */
|
|
164
|
+
notifySettled() {
|
|
165
|
+
if (this.pending.size > 0 || this.settleCallbacks.length === 0) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const callbacks = this.settleCallbacks;
|
|
169
|
+
this.settleCallbacks = [];
|
|
170
|
+
for (const callback of callbacks) {
|
|
171
|
+
callback();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
155
174
|
/** Reports whether a URL finished loading successfully. */
|
|
156
175
|
isReady(url) {
|
|
157
176
|
return this.entries.get(url)?.ready ?? false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureAtlas.js","sourceRoot":"","sources":["../../src/render/TextureAtlas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"TextureAtlas.js","sourceRoot":"","sources":["../../src/render/TextureAtlas.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yurialvesbordin/graphium",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "Remastered high-performance WebGL2 graph visualization library with silk-smooth force physics, curved edges, node images and a fluent API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|