@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
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,QAAQ,EAER,KAAK,sBAAsB,EAG5B,MAAM,gBAAgB,CAAC;AAUxB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEjF,cAAM,cAAc;IAIlB,SAAgB,aAAa,mBAA0B;IAEvD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA4B;IAClE,OAAO,CAAC,gBAAgB,CAAiC;IAGzD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8B;IACnE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAEzB;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAEzB;IACH,OAAO,CAAC,WAAW,CAAkD;IAErE,IAAI,UAAU,IAAI,cAAc,GAAG,aAAa,CAE/C;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,cAAc,GAAG,aAAa,EAUxD;IAED,IAAI,KAAK,IAGQ,sBAAsB,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CADnE;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EAEnE;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAShC;IAED,IAAI,MAAM,IAAI,iBAAiB,GAAG,IAAI,CAErC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAM1C;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IACD,IAAI,eAAe,CAAC,eAAe,EAAE,MAAM,EAa1C;IAED,IAAI,SAAS,IAAI,oBAAoB,EAAE,CAEtC;IACD,IAAI,SAAS,CAAC,SAAS,EAAE,oBAAoB,EAAE,EAkB9C;IAGD,OAAO,CAAC,cAAc;IAetB,QAAQ,CAAC,WAAW,aA6BlB;IASF,QAAQ,CAAC,OAAO,GACd,UAAU,2BAA2B,KACpC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgBjC;IAEF,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,UAAU;IAsDlB,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAUxB;IAEF,OAAO,CAAC,MAAM;CAgBf;AAED,YAAY,EAAE,cAAc,EAAE,CAAC;AAqB/B,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,UAAU,EACV,KAAK,EACL,UAAU,EACV,eAAe,EACf,OAAO,GACR,EAAE,0BAA0B,GAAG,cAAc,CA8B7C"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/manager.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,31 @@
1
1
  import { __awaiter } from "tslib";
2
- import { TgdBoundingBox, TgdCameraOrthographic, TgdCameraPerspective, TgdColor, TgdContext, TgdControllerCameraOrbit, TgdEvent, TgdPainterClear, TgdPainterState, tgdActionCreateCameraInterpolation, } from "@tolokoban/tgd";
2
+ import { TgdBoundingBox, TgdCameraOrthographic, TgdCameraPerspective, TgdColor, TgdContext, TgdControllerCameraOrbit, TgdEvent, TgdPainterClear, TgdPainterState, tgdActionCreateCameraInterpolation, webglBlendGet, webglBlendSet, webglPresetBlend, } from "@tolokoban/tgd";
3
3
  import React from "react";
4
4
  import { watchSpacePerPixel } from "./../../../behaviors";
5
5
  import { PainterGizmo } from "./../../../painters/gizmo";
6
- import { reencodeSnapshot } from "../../snapshot";
6
+ import { OverlayInteractionController } from "./../../../painters/overlay-interaction";
7
+ import { OverlaySurface } from "./../../../painters/overlay-surface";
7
8
  import { AdpatativeResolution } from "./adaptative-resolution";
8
9
  import { PainterCellInfos } from "./painter-cell-infos";
9
10
  class PainterManager {
10
11
  constructor() {
11
12
  this.eventScalebar = new TgdEvent();
12
13
  this._canvas = null;
14
+ this._overlayCanvas = null;
13
15
  this._cellInfos = [];
14
16
  this._backgroundColor = "black";
15
17
  this.parsedBackgroundColor = new TgdColor(0, 0, 0, 1);
16
18
  this.painterCellInfos = null;
19
+ this.painterOverlays = null;
20
+ this.overlaySurface = new OverlaySurface();
21
+ this.overlayInteraction = null;
22
+ this._overlays = [];
23
+ this._overlaysRadius = 5;
24
+ this._overlaysMinRadiusInPixels = 4;
25
+ this._overlaysInteractive = false;
26
+ this._highlightedOverlayId = null;
27
+ this._pinnedOverlayOrigin = null;
28
+ this._pinTimeout = null;
17
29
  this.state = null;
18
30
  this.painterClear = null;
19
31
  this.context = null;
@@ -23,6 +35,8 @@ class PainterManager {
23
35
  this.painterGizmo = new PainterGizmo();
24
36
  this.adaptativeResolution = new AdpatativeResolution();
25
37
  this._somaRadius = 1;
38
+ this._neuronOpacity = 1;
39
+ this.spacePerPixel = 1;
26
40
  this.cameraOrtho = new TgdCameraOrthographic({
27
41
  name: "CameraOrtho",
28
42
  });
@@ -30,7 +44,8 @@ class PainterManager {
30
44
  name: "CameraPersp",
31
45
  });
32
46
  this._cameraType = "orthographic";
33
- this.cameraReset = () => {
47
+ this.cameraReset = (options) => {
48
+ var _a;
34
49
  const { context, bbox } = this;
35
50
  if (!context)
36
51
  return;
@@ -48,6 +63,7 @@ class PainterManager {
48
63
  if (Number.isNaN(resettedCamera.transfo.distance)) {
49
64
  return;
50
65
  }
66
+ resettedCamera.zoom = (_a = options === null || options === void 0 ? void 0 : options.zoom) !== null && _a !== void 0 ? _a : 1;
51
67
  const state = resettedCamera.getCurrentState();
52
68
  context.animSchedule({
53
69
  duration: 0.5,
@@ -56,21 +72,24 @@ class PainterManager {
56
72
  });
57
73
  this.adaptativeResolution.lowRes();
58
74
  };
59
- this.capture = (options) => __awaiter(this, void 0, void 0, function* () {
75
+ this.snapshot = (options) => __awaiter(this, void 0, void 0, function* () {
60
76
  const { context } = this;
61
77
  if (!context)
62
78
  return null;
63
79
  const gizmoWas = this.painterGizmo.options;
64
80
  this.painterGizmo.options = false;
65
81
  context.resolution = captureResolution();
66
- const snapshot = context.takeSnapshot();
82
+ const snapshot = context.takeSnapshot(Object.assign({ type: "image/png", quality: 0.8 }, options));
67
83
  context.paint();
68
84
  const image = yield snapshot;
69
85
  this.painterGizmo.options = gizmoWas;
70
86
  this.adaptativeResolution.highRes();
71
87
  context.paint();
72
- return reencodeSnapshot(image, options);
88
+ return image;
73
89
  });
90
+ this.handleSpacePerPixel = (spacePerPixel) => {
91
+ this.spacePerPixel = spacePerPixel;
92
+ };
74
93
  this._cameraChangeTimeout = -1;
75
94
  this.handleCameraChange = () => {
76
95
  const { context } = this;
@@ -114,6 +133,18 @@ class PainterManager {
114
133
  }
115
134
  this.adaptativeResolution.reset();
116
135
  }
136
+ get neuronOpacity() {
137
+ return this._neuronOpacity;
138
+ }
139
+ set neuronOpacity(neuronOpacity) {
140
+ const opacity = clamp01(neuronOpacity);
141
+ if (this._neuronOpacity === opacity)
142
+ return;
143
+ this._neuronOpacity = opacity;
144
+ if (this.painterCellInfos) {
145
+ this.painterCellInfos.opacity = opacity;
146
+ }
147
+ }
117
148
  get canvas() {
118
149
  return this._canvas;
119
150
  }
@@ -126,6 +157,15 @@ class PainterManager {
126
157
  else
127
158
  this.delete();
128
159
  }
160
+ get overlayCanvas() {
161
+ return this._overlayCanvas;
162
+ }
163
+ set overlayCanvas(canvas) {
164
+ if (this._overlayCanvas === canvas)
165
+ return;
166
+ this._overlayCanvas = canvas;
167
+ this.bindOverlaySurface();
168
+ }
129
169
  get backgroundColor() {
130
170
  return this._backgroundColor;
131
171
  }
@@ -161,6 +201,74 @@ class PainterManager {
161
201
  }
162
202
  this.initialize();
163
203
  }
204
+ setOverlays(overlays, overlaysRadius, overlaysMinRadiusInPixels) {
205
+ var _a, _b;
206
+ this._overlaysRadius = overlaysRadius;
207
+ this._overlaysMinRadiusInPixels = overlaysMinRadiusInPixels;
208
+ if ((_a = this.overlayInteraction) === null || _a === void 0 ? void 0 : _a.isDragging) {
209
+ const painter = this.painterOverlays;
210
+ if (painter) {
211
+ painter.radius = this._overlaysRadius;
212
+ painter.minRadiusInPixels = this._overlaysMinRadiusInPixels;
213
+ }
214
+ return;
215
+ }
216
+ if (this._pinnedOverlayOrigin && (overlays === null || overlays === void 0 ? void 0 : overlays.length)) {
217
+ const host = overlays.find((o) => o.id === this._pinnedOverlayOrigin.id && o.origin);
218
+ const tip = readOverlayTip(overlays, this._pinnedOverlayOrigin.id);
219
+ if ((host === null || host === void 0 ? void 0 : host.origin) &&
220
+ tip &&
221
+ originsNearlyEqual(host.origin, this._pinnedOverlayOrigin.origin) &&
222
+ rotationsNearlyEqual(host.rotation, this._pinnedOverlayOrigin.rotation) &&
223
+ originsNearlyEqual(tip, this._pinnedOverlayOrigin.tip)) {
224
+ this.clearPinnedOverlay();
225
+ }
226
+ else {
227
+ const painter = this.painterOverlays;
228
+ if (painter) {
229
+ painter.radius = this._overlaysRadius;
230
+ painter.minRadiusInPixels = this._overlaysMinRadiusInPixels;
231
+ }
232
+ return;
233
+ }
234
+ }
235
+ this._overlays = cloneOverlays(overlays);
236
+ this.applyOverlays();
237
+ (_b = this.context) === null || _b === void 0 ? void 0 : _b.paint();
238
+ }
239
+ setOverlayInteraction(interactive, onTransform) {
240
+ var _a, _b, _c;
241
+ this._overlaysInteractive = interactive;
242
+ this._onOverlayTransform = onTransform;
243
+ (_a = this.overlayInteraction) === null || _a === void 0 ? void 0 : _a.setOnTransform(onTransform);
244
+ if (interactive) {
245
+ (_b = this.overlayInteraction) === null || _b === void 0 ? void 0 : _b.attach();
246
+ }
247
+ else {
248
+ (_c = this.overlayInteraction) === null || _c === void 0 ? void 0 : _c.detach();
249
+ }
250
+ }
251
+ get highlightedOverlayId() {
252
+ return this._highlightedOverlayId;
253
+ }
254
+ set highlightedOverlayId(id) {
255
+ var _a;
256
+ const next = id !== null && id !== void 0 ? id : null;
257
+ if (this._highlightedOverlayId === next)
258
+ return;
259
+ this._highlightedOverlayId = next;
260
+ if (!((_a = this.overlayInteraction) === null || _a === void 0 ? void 0 : _a.isDragging) && this.painterOverlays) {
261
+ this.painterOverlays.highlightedId = next;
262
+ }
263
+ }
264
+ applyOverlays() {
265
+ const { painterOverlays } = this;
266
+ if (!painterOverlays)
267
+ return;
268
+ painterOverlays.overlays = this._overlays;
269
+ painterOverlays.radius = this._overlaysRadius;
270
+ painterOverlays.minRadiusInPixels = this._overlaysMinRadiusInPixels;
271
+ }
164
272
  recolorInPlace() {
165
273
  const { context, state, cellInfos } = this;
166
274
  if (!context || !state)
@@ -169,6 +277,7 @@ class PainterManager {
169
277
  const painterCellInfos = new PainterCellInfos(context, {
170
278
  cellInfos,
171
279
  somaRadius: this.somaRadius,
280
+ opacity: this._neuronOpacity,
172
281
  });
173
282
  this.painterCellInfos = painterCellInfos;
174
283
  this.bbox = painterCellInfos.bbox;
@@ -205,6 +314,7 @@ class PainterManager {
205
314
  this.context = context;
206
315
  this.adaptativeResolution.context = context;
207
316
  this.scalebarCleanup = watchSpacePerPixel(context, this.eventScalebar);
317
+ this.eventScalebar.addListener(this.handleSpacePerPixel);
208
318
  this.parsedBackgroundColor.parse(this._backgroundColor);
209
319
  const clear = new TgdPainterClear(context, {
210
320
  color: this.parsedBackgroundColor.toArayNumber4(),
@@ -214,11 +324,25 @@ class PainterManager {
214
324
  const painterCellInfos = new PainterCellInfos(context, {
215
325
  cellInfos,
216
326
  somaRadius: this.somaRadius,
327
+ opacity: this._neuronOpacity,
217
328
  });
218
329
  this.painterCellInfos = painterCellInfos;
330
+ let savedNeuronBlend;
219
331
  const state = new TgdPainterState(context, {
220
332
  depth: "less",
221
333
  children: [painterCellInfos],
334
+ onEnter: () => {
335
+ if (this._neuronOpacity >= 1)
336
+ return;
337
+ savedNeuronBlend = webglBlendGet(context);
338
+ webglBlendSet(context, webglPresetBlend.alpha);
339
+ },
340
+ onExit: () => {
341
+ if (!savedNeuronBlend)
342
+ return;
343
+ webglBlendSet(context, savedNeuronBlend);
344
+ savedNeuronBlend = undefined;
345
+ },
222
346
  });
223
347
  this.state = state;
224
348
  this.painterGizmo.context = context;
@@ -234,21 +358,93 @@ class PainterManager {
234
358
  inertiaZoom: 300,
235
359
  });
236
360
  this.orbit.eventChange.addListener(this.handleCameraChange);
361
+ this.overlayInteraction = new OverlayInteractionController({
362
+ context,
363
+ getOverlays: () => this._overlays,
364
+ setOverlays: (overlays) => {
365
+ this._overlays = overlays;
366
+ this.applyOverlays();
367
+ },
368
+ syncOverlayPositions: () => {
369
+ var _a;
370
+ (_a = this.painterOverlays) === null || _a === void 0 ? void 0 : _a.syncPositions();
371
+ },
372
+ getHitRadiusPixels: () => Math.max(this._overlaysMinRadiusInPixels * 1.8, this._overlaysRadius / Math.max(this.spacePerPixel, 1e-6)),
373
+ getOrbit: () => this.orbit,
374
+ setHighlightedId: (id) => {
375
+ if (this.painterOverlays) {
376
+ this.painterOverlays.highlightedId = id !== null && id !== void 0 ? id : this._highlightedOverlayId;
377
+ }
378
+ },
379
+ onTransform: this._onOverlayTransform,
380
+ onDragStart: () => this.overlaySurface.beginDrag(),
381
+ onDragEnd: (id) => {
382
+ this.overlaySurface.endDrag();
383
+ this.pinOverlaysAfterDrag(id);
384
+ },
385
+ });
386
+ if (this._overlaysInteractive)
387
+ this.overlayInteraction.attach();
388
+ this.bindOverlaySurface();
237
389
  context.paint();
238
- context.execAfterNextPaint(this.cameraReset);
390
+ context.execAfterNextPaint(() => this.cameraReset());
391
+ }
392
+ bindOverlaySurface() {
393
+ this.overlaySurface.setCanvas(this._overlayCanvas, this.context);
394
+ this.painterOverlays = this.overlaySurface.overlaysPainter;
395
+ if (this.painterOverlays)
396
+ this.applyOverlays();
397
+ }
398
+ pinOverlaysAfterDrag(id) {
399
+ var _a, _b, _c;
400
+ this.clearPinnedOverlay();
401
+ if (!this._onOverlayTransform)
402
+ return;
403
+ const withOrigin = this._overlays.find((o) => o.id === id && o.origin);
404
+ if (!(withOrigin === null || withOrigin === void 0 ? void 0 : withOrigin.id) || !withOrigin.origin)
405
+ return;
406
+ const tip = readOverlayTip(this._overlays, withOrigin.id);
407
+ if (!tip)
408
+ return;
409
+ const rot = withOrigin.rotation;
410
+ this._pinnedOverlayOrigin = {
411
+ id: withOrigin.id,
412
+ origin: [withOrigin.origin[0], withOrigin.origin[1], withOrigin.origin[2]],
413
+ rotation: {
414
+ x: (_a = rot === null || rot === void 0 ? void 0 : rot.x) !== null && _a !== void 0 ? _a : 0,
415
+ y: (_b = rot === null || rot === void 0 ? void 0 : rot.y) !== null && _b !== void 0 ? _b : 0,
416
+ z: (_c = rot === null || rot === void 0 ? void 0 : rot.z) !== null && _c !== void 0 ? _c : 0,
417
+ },
418
+ tip,
419
+ };
420
+ this._pinTimeout = setTimeout(() => this.clearPinnedOverlay(), OVERLAY_PIN_TIMEOUT_MS);
421
+ }
422
+ clearPinnedOverlay() {
423
+ this._pinnedOverlayOrigin = null;
424
+ if (this._pinTimeout !== null) {
425
+ clearTimeout(this._pinTimeout);
426
+ this._pinTimeout = null;
427
+ }
239
428
  }
240
429
  delete() {
241
- var _a, _b;
430
+ var _a, _b, _c;
431
+ this.clearPinnedOverlay();
242
432
  this.adaptativeResolution.context = null;
243
433
  if (!this.context) {
244
434
  return;
245
435
  }
246
436
  (_a = this.scalebarCleanup) === null || _a === void 0 ? void 0 : _a.call(this);
247
- (_b = this.orbit) === null || _b === void 0 ? void 0 : _b.detach();
437
+ this.eventScalebar.removeListener(this.handleSpacePerPixel);
438
+ (_b = this.overlayInteraction) === null || _b === void 0 ? void 0 : _b.detach();
439
+ this.overlayInteraction = null;
440
+ this.overlaySurface.delete();
441
+ (_c = this.orbit) === null || _c === void 0 ? void 0 : _c.detach();
248
442
  this.orbit = null;
249
443
  this.painterClear = null;
250
444
  this.state = null;
251
445
  this.painterCellInfos = null;
446
+ this.painterOverlays = null;
447
+ this.painterGizmo.context = null;
252
448
  this.context.delete();
253
449
  this.context = null;
254
450
  }
@@ -269,7 +465,40 @@ function sameGeometry(a, b) {
269
465
  }
270
466
  return true;
271
467
  }
272
- export function useManager({ cellInfos, somaRadius, gizmo, cameraType, backgroundColor, signals, }) {
468
+ function clamp01(value) {
469
+ if (Number.isNaN(value))
470
+ return 1;
471
+ return Math.min(1, Math.max(0, value));
472
+ }
473
+ const OVERLAY_PIN_TIMEOUT_MS = 2000;
474
+ function cloneOverlays(overlays) {
475
+ if (!(overlays === null || overlays === void 0 ? void 0 : overlays.length))
476
+ return [];
477
+ return overlays.map((overlay) => (Object.assign(Object.assign({}, overlay), { origin: overlay.origin ? [...overlay.origin] : undefined, rotation: overlay.rotation ? Object.assign({}, overlay.rotation) : undefined })));
478
+ }
479
+ const ORIGIN_EPS = 0.05;
480
+ const ROT_EPS = 0.05;
481
+ function originsNearlyEqual(a, b) {
482
+ return (Math.abs(a[0] - b[0]) <= ORIGIN_EPS &&
483
+ Math.abs(a[1] - b[1]) <= ORIGIN_EPS &&
484
+ Math.abs(a[2] - b[2]) <= ORIGIN_EPS);
485
+ }
486
+ function rotationsNearlyEqual(a, b) {
487
+ var _a, _b, _c;
488
+ return (Math.abs(((_a = a === null || a === void 0 ? void 0 : a.x) !== null && _a !== void 0 ? _a : 0) - b.x) <= ROT_EPS &&
489
+ Math.abs(((_b = a === null || a === void 0 ? void 0 : a.y) !== null && _b !== void 0 ? _b : 0) - b.y) <= ROT_EPS &&
490
+ Math.abs(((_c = a === null || a === void 0 ? void 0 : a.z) !== null && _c !== void 0 ? _c : 0) - b.z) <= ROT_EPS);
491
+ }
492
+ function readOverlayTip(overlays, id) {
493
+ var _a;
494
+ const prefer = overlays.find((o) => o.id === id && (o.kind === "electrodes" || !o.kind) && o.coordinates.length >= 3);
495
+ const fallback = overlays.find((o) => o.id === id && o.coordinates.length >= 3);
496
+ const coords = (_a = prefer === null || prefer === void 0 ? void 0 : prefer.coordinates) !== null && _a !== void 0 ? _a : fallback === null || fallback === void 0 ? void 0 : fallback.coordinates;
497
+ if (!coords || coords.length < 3)
498
+ return null;
499
+ return [coords[0], coords[1], coords[2]];
500
+ }
501
+ export function useManager({ cellInfos, somaRadius, gizmo, cameraType, backgroundColor, overlays, overlaysRadius = 5, overlaysMinRadiusInPixels = 4, overlaysInteractive = false, onOverlayTransform, highlightedOverlayId, neuronOpacity = 1, signals, }) {
273
502
  const refManager = React.useRef(null);
274
503
  if (!refManager.current)
275
504
  refManager.current = new PainterManager();
@@ -283,8 +512,8 @@ export function useManager({ cellInfos, somaRadius, gizmo, cameraType, backgroun
283
512
  React.useEffect(() => {
284
513
  if (!signals)
285
514
  return;
286
- const unregisterReset = signals.cameraReset.register(() => manager.cameraReset());
287
- const unregisterSnapshot = signals.snapshot.register((options) => manager.capture(options));
515
+ const unregisterReset = signals.cameraReset.register((options) => manager.cameraReset(options));
516
+ const unregisterSnapshot = signals.snapshot.register((options) => manager.snapshot(options));
288
517
  return () => {
289
518
  unregisterReset();
290
519
  unregisterSnapshot();
@@ -296,10 +525,22 @@ export function useManager({ cellInfos, somaRadius, gizmo, cameraType, backgroun
296
525
  React.useEffect(() => {
297
526
  manager.somaRadius = somaRadius !== null && somaRadius !== void 0 ? somaRadius : DEFAULT_SOMA_RADIUS;
298
527
  }, [somaRadius, manager]);
528
+ React.useEffect(() => {
529
+ manager.neuronOpacity = neuronOpacity;
530
+ }, [neuronOpacity, manager]);
531
+ React.useEffect(() => {
532
+ manager.setOverlays(overlays, overlaysRadius, overlaysMinRadiusInPixels);
533
+ }, [overlays, overlaysRadius, overlaysMinRadiusInPixels, manager]);
534
+ React.useEffect(() => {
535
+ manager.setOverlayInteraction(overlaysInteractive, onOverlayTransform);
536
+ }, [overlaysInteractive, onOverlayTransform, manager]);
537
+ React.useEffect(() => {
538
+ manager.highlightedOverlayId = highlightedOverlayId !== null && highlightedOverlayId !== void 0 ? highlightedOverlayId : null;
539
+ }, [highlightedOverlayId, manager]);
299
540
  React.useEffect(() => {
300
541
  manager.gizmo = gizmo;
301
542
  }, [gizmo, manager]);
302
543
  return refManager.current;
303
544
  }
304
545
  const DEFAULT_SOMA_RADIUS = 12;
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc29tYXMtb25seS9tYW5hZ2VyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsVUFBVSxFQUNWLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsZUFBZSxFQUVmLGVBQWUsRUFDZixrQ0FBa0MsR0FDbkMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUt4RCxNQUFNLGNBQWM7SUFBcEI7UUFJa0Isa0JBQWEsR0FBRyxJQUFJLFFBQVEsRUFBVSxDQUFDO1FBRS9DLFlBQU8sR0FBNkIsSUFBSSxDQUFDO1FBQ3pDLGVBQVUsR0FBMkIsRUFBRSxDQUFDO1FBQ3hDLHFCQUFnQixHQUFHLE9BQU8sQ0FBQztRQUNsQiwwQkFBcUIsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxxQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO1FBR2pELFVBQUssR0FBMkIsSUFBSSxDQUFDO1FBQ3JDLGlCQUFZLEdBQTJCLElBQUksQ0FBQztRQUM1QyxZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxVQUFLLEdBQW9D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
546
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc29tYXMtb25seS9tYW5hZ2VyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsVUFBVSxFQUNWLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsZUFBZSxFQUVmLGVBQWUsRUFDZixrQ0FBa0MsRUFDbEMsYUFBYSxFQUNiLGFBQWEsRUFDYixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZeEQsTUFBTSxjQUFjO0lBQXBCO1FBSWtCLGtCQUFhLEdBQUcsSUFBSSxRQUFRLEVBQVUsQ0FBQztRQUUvQyxZQUFPLEdBQTZCLElBQUksQ0FBQztRQUN6QyxtQkFBYyxHQUE2QixJQUFJLENBQUM7UUFDaEQsZUFBVSxHQUEyQixFQUFFLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELHFCQUFnQixHQUE0QixJQUFJ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
@@ -3,15 +3,20 @@ import type { MorphoViewerCellInfo } from "../types";
3
3
  export interface PainterCellInfosOptions {
4
4
  cellInfos: MorphoViewerCellInfo[];
5
5
  somaRadius: number;
6
+ opacity?: number;
6
7
  }
7
8
  export declare class PainterCellInfos extends TgdPainterGroup {
8
9
  readonly context: TgdContext;
9
10
  readonly bbox: TgdBoundingBox;
10
11
  private readonly texturePalette;
11
12
  private readonly painterPointsCloud;
13
+ private readonly paletteColors;
14
+ private _opacity;
12
15
  constructor(context: TgdContext, options: PainterCellInfosOptions);
13
16
  get somaRadius(): number;
14
17
  set somaRadius(somaRadius: number);
18
+ get opacity(): number;
19
+ set opacity(opacity: number);
15
20
  delete(): void;
16
21
  }
17
22
  //# sourceMappingURL=painter-cell-infos.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"painter-cell-infos.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/painter-cell-infos.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,UAAU,EACf,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAerD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,gBAAiB,SAAQ,eAAe;aAOjC,OAAO,EAAE,UAAU;IANrC,SAAgB,IAAI,EAAE,cAAc,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;gBAGzC,OAAO,EAAE,UAAU,EACnC,OAAO,EAAE,uBAAuB;IAuClC,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAKhC;IAED,MAAM,IAAI,IAAI;CAIf"}
1
+ {"version":3,"file":"painter-cell-infos.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/painter-cell-infos.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,UAAU,EACf,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAerD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,eAAe;aASjC,OAAO,EAAE,UAAU;IARrC,SAAgB,IAAI,EAAE,cAAc,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;IAChD,OAAO,CAAC,QAAQ,CAAS;gBAGP,OAAO,EAAE,UAAU,EACnC,OAAO,EAAE,uBAAuB;IAsClC,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAKhC;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAO1B;IAED,MAAM,IAAI,IAAI;CAIf"}