@openbraininstitute/morphoviewer 0.30.0 → 0.31.0

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 (61) hide show
  1. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +14 -9
  2. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.module.css +10 -0
  3. package/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts +4 -1
  4. package/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts.map +1 -1
  5. package/dist/components/morpho-viewer-small-circuit/painter/camera.js +12 -2
  6. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +39 -8
  7. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
  8. package/dist/components/morpho-viewer-small-circuit/painter/manager.js +292 -20
  9. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +4 -4
  10. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.d.ts +2 -0
  11. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.d.ts.map +1 -1
  12. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.js +3 -1
  13. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.d.ts +26 -0
  14. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.d.ts.map +1 -0
  15. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.js +105 -0
  16. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell-flat.d.ts +11 -0
  17. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell-flat.d.ts.map +1 -0
  18. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell-flat.js +7 -0
  19. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell-id.d.ts +12 -0
  20. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell-id.d.ts.map +1 -0
  21. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell-id.js +7 -0
  22. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +9 -2
  23. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -1
  24. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +76 -8
  25. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts +6 -8
  26. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts.map +1 -1
  27. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.js +2 -1
  28. package/dist/components/morpho-viewer-small-circuit/types.d.ts +6 -2
  29. package/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
  30. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +32 -4
  31. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
  32. package/dist/components/morpho-viewer-somas-only/manager/manager.js +254 -13
  33. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts +5 -0
  34. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts.map +1 -1
  35. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +43 -6
  36. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.js +14 -9
  37. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.module.css +10 -0
  38. package/dist/components/morpho-viewer-somas-only/types.d.ts +6 -2
  39. package/dist/components/morpho-viewer-somas-only/types.d.ts.map +1 -1
  40. package/dist/components/signals.d.ts +6 -3
  41. package/dist/components/signals.d.ts.map +1 -1
  42. package/dist/components/signals.js +1 -1
  43. package/dist/components/types.d.ts +32 -0
  44. package/dist/components/types.d.ts.map +1 -1
  45. package/dist/index.d.ts +3 -3
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -2
  48. package/dist/package.json +2 -2
  49. package/dist/painters/overlay-interaction.d.ts +49 -0
  50. package/dist/painters/overlay-interaction.d.ts.map +1 -0
  51. package/dist/painters/overlay-interaction.js +432 -0
  52. package/dist/painters/overlay-surface.d.ts +18 -0
  53. package/dist/painters/overlay-surface.d.ts.map +1 -0
  54. package/dist/painters/overlay-surface.js +83 -0
  55. package/dist/painters/world-overlays.d.ts +25 -0
  56. package/dist/painters/world-overlays.d.ts.map +1 -0
  57. package/dist/painters/world-overlays.js +185 -0
  58. package/package.json +2 -2
  59. package/dist/components/snapshot.d.ts +0 -3
  60. package/dist/components/snapshot.d.ts.map +0 -1
  61. package/dist/components/snapshot.js +0 -32
@@ -0,0 +1,185 @@
1
+ import { TgdColor, TgdPainterGroup, TgdPainterPointsCloud, TgdTexture2D, tgdCanvasCreatePalette, } from "@tolokoban/tgd";
2
+ export class PainterWorldOverlays extends TgdPainterGroup {
3
+ constructor(context) {
4
+ super({ name: "PainterWorldOverlays" });
5
+ this.context = context;
6
+ this._overlays = [];
7
+ this.painter = null;
8
+ this.dataPoint = null;
9
+ this._radius = 5;
10
+ this._minRadiusInPixels = 4;
11
+ this._highlightedId = null;
12
+ this.texture = new TgdTexture2D(context, {
13
+ params: {
14
+ magFilter: "NEAREST",
15
+ minFilter: "NEAREST",
16
+ },
17
+ });
18
+ }
19
+ get radius() {
20
+ return this._radius;
21
+ }
22
+ set radius(radius) {
23
+ if (this._radius === radius)
24
+ return;
25
+ this._radius = radius;
26
+ const { painter } = this;
27
+ if (painter) {
28
+ painter.radiusMultiplier = radius;
29
+ this.context.paint();
30
+ }
31
+ }
32
+ get minRadiusInPixels() {
33
+ return this._minRadiusInPixels;
34
+ }
35
+ set minRadiusInPixels(minRadiusInPixels) {
36
+ if (this._minRadiusInPixels === minRadiusInPixels)
37
+ return;
38
+ this._minRadiusInPixels = minRadiusInPixels;
39
+ const { painter } = this;
40
+ if (painter) {
41
+ painter.minSizeInPixels = minRadiusInPixels;
42
+ this.context.paint();
43
+ }
44
+ }
45
+ get highlightedId() {
46
+ return this._highlightedId;
47
+ }
48
+ set highlightedId(highlightedId) {
49
+ if (this._highlightedId === highlightedId)
50
+ return;
51
+ this._highlightedId = highlightedId;
52
+ this.rebuild();
53
+ }
54
+ get overlays() {
55
+ return this._overlays;
56
+ }
57
+ set overlays(overlays) {
58
+ if (sameOverlayTopology(this._overlays, overlays) && this.painter && this.dataPoint) {
59
+ this._overlays = overlays;
60
+ this.syncPositions();
61
+ return;
62
+ }
63
+ this._overlays = overlays;
64
+ this.rebuild();
65
+ }
66
+ syncPositions() {
67
+ const { dataPoint, painter } = this;
68
+ if (!dataPoint || !painter)
69
+ return;
70
+ writePositions(dataPoint, this._overlays, this._highlightedId);
71
+ this.uploadPositions();
72
+ }
73
+ uploadPositions() {
74
+ var _a, _b, _c, _d;
75
+ const { painter, dataPoint, context } = this;
76
+ if (!painter || !dataPoint)
77
+ return;
78
+ const internals = painter;
79
+ const dataset = (_b = (_a = internals.vao) === null || _a === void 0 ? void 0 : _a.datasets) === null || _b === void 0 ? void 0 : _b[0];
80
+ if (!dataset) {
81
+ this.rebuild();
82
+ return;
83
+ }
84
+ const shared = new Float32Array(dataset.data);
85
+ const count = dataPoint.length >> 2;
86
+ const expectedFloats = count * 6;
87
+ if (shared.length !== expectedFloats) {
88
+ this.rebuild();
89
+ return;
90
+ }
91
+ for (let i = 0; i < count; i++) {
92
+ const src = i * 4;
93
+ const dst = i * 6;
94
+ shared[dst] = dataPoint[src];
95
+ shared[dst + 1] = dataPoint[src + 1];
96
+ shared[dst + 2] = dataPoint[src + 2];
97
+ shared[dst + 3] = dataPoint[src + 3];
98
+ }
99
+ const buffer = (_d = (_c = internals.vao).getBuffer) === null || _d === void 0 ? void 0 : _d.call(_c, 0);
100
+ if (buffer) {
101
+ const { gl } = context;
102
+ buffer.bind();
103
+ gl.bufferSubData(gl.ARRAY_BUFFER, 0, shared);
104
+ }
105
+ else {
106
+ dataset.set("attPoint", dataPoint);
107
+ internals.vao.updateDataset(dataset);
108
+ }
109
+ context.paint();
110
+ }
111
+ rebuild() {
112
+ const { overlays } = this;
113
+ this.removeAll();
114
+ this.painter = null;
115
+ this.dataPoint = null;
116
+ if (overlays.length > 0) {
117
+ const palette = overlays.map((overlay) => forceOpaque(overlay.id && overlay.id === this._highlightedId
118
+ ? highlightColor(overlay.color)
119
+ : overlay.color));
120
+ this.texture.loadBitmap(tgdCanvasCreatePalette(palette));
121
+ const attXYZR = [];
122
+ const attUV = [];
123
+ for (let indexGroup = 0; indexGroup < overlays.length; indexGroup++) {
124
+ const group = overlays[indexGroup];
125
+ const highlighted = Boolean(group.id && group.id === this._highlightedId);
126
+ const scale = highlighted ? 1.55 : 1;
127
+ const u = (indexGroup + 0.5) / overlays.length;
128
+ for (let indexCoords = 0; indexCoords < group.coordinates.length; indexCoords += 3) {
129
+ const x = group.coordinates[indexCoords + 0];
130
+ const y = group.coordinates[indexCoords + 1];
131
+ const z = group.coordinates[indexCoords + 2];
132
+ attXYZR.push(x, y, z, scale);
133
+ attUV.push(u, 0.5);
134
+ }
135
+ }
136
+ const dataPoint = new Float32Array(attXYZR);
137
+ this.dataPoint = dataPoint;
138
+ const painter = new TgdPainterPointsCloud(this.context, {
139
+ dataPoint,
140
+ dataUV: new Float32Array(attUV),
141
+ texture: this.texture,
142
+ radiusMultiplier: this.radius,
143
+ minSizeInPixels: this.minRadiusInPixels,
144
+ fragCode: TgdPainterPointsCloud.fragCodeFlat(),
145
+ });
146
+ this.painter = painter;
147
+ this.add(painter);
148
+ }
149
+ this.context.paint();
150
+ }
151
+ }
152
+ function highlightColor(color) {
153
+ return TgdColor.fromMix(0.55, color, "#ffffff").alphaSet(1).toString();
154
+ }
155
+ function forceOpaque(color) {
156
+ return TgdColor.fromString(color).alphaSet(1).toString();
157
+ }
158
+ function sameOverlayTopology(a, b) {
159
+ if (a.length !== b.length)
160
+ return false;
161
+ for (let i = 0; i < a.length; i++) {
162
+ if (a[i].color !== b[i].color)
163
+ return false;
164
+ if (a[i].id !== b[i].id)
165
+ return false;
166
+ if (a[i].coordinates.length !== b[i].coordinates.length)
167
+ return false;
168
+ }
169
+ return true;
170
+ }
171
+ function writePositions(dataPoint, overlays, highlightedId) {
172
+ let offset = 0;
173
+ for (const group of overlays) {
174
+ const scale = group.id && group.id === highlightedId ? 1.55 : 1;
175
+ const coords = group.coordinates;
176
+ for (let i = 0; i < coords.length; i += 3) {
177
+ dataPoint[offset] = coords[i];
178
+ dataPoint[offset + 1] = coords[i + 1];
179
+ dataPoint[offset + 2] = coords[i + 2];
180
+ dataPoint[offset + 3] = scale;
181
+ offset += 4;
182
+ }
183
+ }
184
+ }
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQtb3ZlcmxheXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlcnMvd29ybGQtb3ZlcmxheXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixzQkFBc0IsR0FDdkIsTUFBTSxnQkFBZ0IsQ0FBQztBQWtDeEIsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGVBQWU7SUFTdkQsWUFBNEIsT0FBbUI7UUFDN0MsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQURkLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFQdkMsY0FBUyxHQUErQixFQUFFLENBQUM7UUFDM0MsWUFBTyxHQUFpQyxJQUFJLENBQUM7UUFDN0MsY0FBUyxHQUF3QixJQUFJLENBQUM7UUFDdEMsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQUN2QixtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFJM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDdkMsTUFBTSxFQUFFO2dCQUNOLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixTQUFTLEVBQUUsU0FBUzthQUNyQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLE1BQWM7UUFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU07WUFBRSxPQUFPO1FBRXBDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxnQkFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openbraininstitute/morphoviewer",
3
- "version": "0.30.0",
3
+ "version": "0.31.0",
4
4
  "description": "Class to display SWC files in 3D on a canvas",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -42,7 +42,7 @@
42
42
  "url": "https://github.com/openbraininstitute/morphoviewer/issues"
43
43
  },
44
44
  "dependencies": {
45
- "@tolokoban/tgd": "^2.0.147",
45
+ "@tolokoban/tgd": "2.4.0",
46
46
  "fflate": "^0.8.3",
47
47
  "tslib": "^2.8.1"
48
48
  },
@@ -1,3 +0,0 @@
1
- import type { MorphoViewerSnapshotOptions } from "./signals";
2
- export declare function reencodeSnapshot(image: HTMLImageElement | null, options?: MorphoViewerSnapshotOptions): Promise<HTMLImageElement | null>;
3
- //# sourceMappingURL=snapshot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/components/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAO7D,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAC9B,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA4BlC"}
@@ -1,32 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- export function reencodeSnapshot(image, options) {
3
- return __awaiter(this, void 0, void 0, function* () {
4
- const type = options === null || options === void 0 ? void 0 : options.type;
5
- if (!image || !type || type === "image/png")
6
- return image;
7
- const width = image.naturalWidth || image.width;
8
- const height = image.naturalHeight || image.height;
9
- if (!width || !height)
10
- return image;
11
- const canvas = document.createElement("canvas");
12
- canvas.width = width;
13
- canvas.height = height;
14
- const ctx = canvas.getContext("2d");
15
- if (!ctx)
16
- return image;
17
- ctx.drawImage(image, 0, 0, width, height);
18
- const url = canvas.toDataURL(type, options === null || options === void 0 ? void 0 : options.quality);
19
- const out = new Image();
20
- out.width = width;
21
- out.height = height;
22
- yield new Promise((resolve) => {
23
- out.onload = () => resolve();
24
- out.onerror = () => resolve();
25
- out.src = url;
26
- });
27
- if (image.src.startsWith("blob:"))
28
- URL.revokeObjectURL(image.src);
29
- return out;
30
- });
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBT0EsTUFBTSxVQUFnQixnQkFBZ0IsQ0FDcEMsS0FBOEIsRUFDOUIsT0FBcUM7O1FBRXJDLE1BQU0sSUFBSSxHQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssV0FBVztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTFELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDbkQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVwQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV2QixHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTyxDQUFDLENBQUM7UUFFckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN4QixHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNwQixNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FBQSJ9