@openbraininstitute/morphoviewer 0.25.4 → 0.26.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.
- package/README.md +9 -0
- package/lib/dist/abstract-canvas.d.ts +3 -3
- package/lib/dist/abstract-canvas.d.ts.map +1 -1
- package/lib/dist/abstract-canvas.js +1 -1
- package/lib/dist/behaviors/index.js +1 -1
- package/lib/dist/behaviors/space-per-pixel.d.ts +1 -1
- package/lib/dist/behaviors/space-per-pixel.d.ts.map +1 -1
- package/lib/dist/colors.d.ts +1 -2
- package/lib/dist/colors.d.ts.map +1 -1
- package/lib/dist/components/button-reset-camera/button-reset-camera.js +3 -3
- package/lib/dist/components/button-reset-camera/index.js +1 -1
- package/lib/dist/components/controls-layout/controls-layout.js +5 -5
- package/lib/dist/components/controls-layout/index.js +1 -1
- package/lib/dist/components/morpho-viewer-octree/index.js +2 -2
- package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.js +5 -5
- package/lib/dist/components/morpho-viewer-octree/painter/camera.d.ts +4 -4
- package/lib/dist/components/morpho-viewer-octree/painter/camera.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-octree/painter/manager.d.ts +2 -2
- package/lib/dist/components/morpho-viewer-octree/painter/manager.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-octree/painter/manager.js +3 -3
- package/lib/dist/components/morpho-viewer-scalebar/index.js +1 -1
- package/lib/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.js +2 -2
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.js +3 -3
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.js +5 -5
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/hint/hint.js +2 -2
- package/lib/dist/components/morpho-viewer-simul/components/hint/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.js +3 -3
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-painter.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.d.ts +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.js +2 -2
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.js +3 -3
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.d.ts +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.js +5 -5
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.js +3 -3
- package/lib/dist/components/morpho-viewer-simul/contants.d.ts +1 -1
- package/lib/dist/components/morpho-viewer-simul/contants.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/hooks.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/index.js +2 -2
- package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.js +13 -13
- package/lib/dist/components/morpho-viewer-simul/painter/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/initializer.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/manager.d.ts +11 -16
- package/lib/dist/components/morpho-viewer-simul/painter/manager.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/manager.js +8 -8
- package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.d.ts +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.js +2 -2
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/contants.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.js +3 -3
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.d.ts +2 -2
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.js +3 -3
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.d.ts +3 -3
- package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/painter.js +5 -5
- package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/index.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/segments.d.ts +2 -2
- package/lib/dist/components/morpho-viewer-simul/painter/segments.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/segments.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/soma.d.ts +1 -2
- package/lib/dist/components/morpho-viewer-simul/painter/soma.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/soma.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.d.ts +7 -7
- package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/structure.d.ts +2 -2
- package/lib/dist/components/morpho-viewer-simul/painter/structure.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/structure.js +4 -4
- package/lib/dist/components/morpho-viewer-simul/painter/transition.d.ts +2 -2
- package/lib/dist/components/morpho-viewer-simul/painter/transition.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/tree.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/utils.js +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/index.js +2 -2
- package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +5 -5
- package/lib/dist/components/morpho-viewer-small-circuit/painter/index.js +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +8 -10
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.js +21 -45
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.js +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +2 -2
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.js +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.js +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +2 -2
- package/lib/dist/components/morpho-viewer-somas-only/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-somas-only/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/index.js +2 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.d.ts +6 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.js +45 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/index.js +2 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.d.ts +22 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.js +71 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/index.js +2 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +24 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/manager.js +135 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts +13 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +59 -0
- package/lib/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.d.ts +3 -0
- package/lib/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.js +49 -0
- package/lib/dist/components/morpho-viewer-somas-only/types.d.ts +15 -0
- package/lib/dist/components/morpho-viewer-somas-only/types.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-somas-only/types.js +2 -0
- package/lib/dist/components/morpho-viewer-spinner/index.d.ts +2 -0
- package/lib/dist/components/morpho-viewer-spinner/index.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-spinner/index.js +2 -0
- package/lib/dist/components/morpho-viewer-spinner/morpho-viewer-spinner.d.ts +6 -0
- package/lib/dist/components/morpho-viewer-spinner/morpho-viewer-spinner.d.ts.map +1 -0
- package/lib/dist/components/morpho-viewer-spinner/morpho-viewer-spinner.js +8 -0
- package/lib/dist/components/tooltip/index.js +1 -1
- package/lib/dist/components/tooltip/tooltip.js +1 -1
- package/lib/dist/gizmo/gizmo-canvas.d.ts +2 -5
- package/lib/dist/gizmo/gizmo-canvas.d.ts.map +1 -1
- package/lib/dist/gizmo/gizmo-canvas.js +1 -1
- package/lib/dist/gizmo/index.js +1 -1
- package/lib/dist/gizmo/painter/tips.d.ts +2 -2
- package/lib/dist/gizmo/painter/tips.d.ts.map +1 -1
- package/lib/dist/gizmo/painter/tips.js +2 -2
- package/lib/dist/icons/spinner.d.ts +9 -0
- package/lib/dist/icons/spinner.d.ts.map +1 -0
- package/lib/dist/icons/spinner.js +7 -0
- package/lib/dist/index.d.ts +3 -1
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +14 -12
- package/lib/dist/morphology/morphology-canvas.d.ts +2 -2
- package/lib/dist/morphology/morphology-canvas.d.ts.map +1 -1
- package/lib/dist/morphology/morphology-canvas.js +7 -7
- package/lib/dist/morphology/painter/factory.js +2 -2
- package/lib/dist/morphology/painter/index.js +1 -1
- package/lib/dist/morphology/painter/nodes.d.ts +1 -1
- package/lib/dist/morphology/painter/nodes.js +1 -1
- package/lib/dist/morphology/painter/painter.d.ts +1 -1
- package/lib/dist/morphology/painter/painter.js +2 -2
- package/lib/dist/morphology/painter/segments.d.ts +1 -2
- package/lib/dist/morphology/painter/segments.d.ts.map +1 -1
- package/lib/dist/morphology/painter/segments.js +1 -1
- package/lib/dist/morphology/painter/textures.d.ts +1 -1
- package/lib/dist/nrrd/index.js +3 -3
- package/lib/dist/package.json +3 -3
- package/lib/dist/painters/gizmo.d.ts +11 -0
- package/lib/dist/painters/gizmo.d.ts.map +1 -0
- package/lib/dist/painters/gizmo.js +53 -0
- package/lib/dist/parser/swc.d.ts +1 -1
- package/lib/dist/parser/swc.js +2 -2
- package/lib/dist/tools/morphology-to-tree.d.ts +2 -2
- package/lib/dist/tools/morphology-to-tree.js +1 -1
- package/lib/dist/tools/swc-to-tree.d.ts +1 -1
- package/lib/dist/tools/swc-to-tree.js +1 -1
- package/package.json +2 -2
- package/lib/dist/components/button-reset-camera/button-reset-camera.module.css +0 -10
- package/lib/dist/components/controls-layout/controls-layout.module.css +0 -53
- package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.module.css +0 -70
- package/lib/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.module.css +0 -13
- package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.module.css +0 -25
- package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.module.css +0 -115
- package/lib/dist/components/morpho-viewer-simul/components/hint/hint.module.css +0 -23
- package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.module.css +0 -5
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.module.css +0 -20
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.module.css +0 -21
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.module.css +0 -52
- package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.module.css +0 -69
- package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.module.css +0 -60
- package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.module.css +0 -94
- package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.module.css +0 -63
- package/lib/dist/components/tooltip/tooltip.module.css +0 -74
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { TgdBoundingBox, TgdCameraOrthographic, TgdContext, TgdControllerCameraOrbit, TgdEvent, TgdPainterClear, TgdPainterState, tgdActionCreateCameraInterpolation, } from "@tolokoban/tgd";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { watchSpacePerPixel } from "@/behaviors";
|
|
4
|
+
import { PainterGizmo } from "@/painters/gizmo";
|
|
5
|
+
import { PainterCellInfos } from "./painter-cell-infos";
|
|
6
|
+
class PainterManager {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.eventScalebar = new TgdEvent();
|
|
9
|
+
this._canvas = null;
|
|
10
|
+
this._cellInfos = [];
|
|
11
|
+
this.context = null;
|
|
12
|
+
this.orbit = null;
|
|
13
|
+
this.bbox = new TgdBoundingBox();
|
|
14
|
+
this.scalebarCleanup = null;
|
|
15
|
+
this.painterGizmo = new PainterGizmo();
|
|
16
|
+
this.cameraReset = () => {
|
|
17
|
+
const { context, bbox } = this;
|
|
18
|
+
if (!context)
|
|
19
|
+
return;
|
|
20
|
+
context.camera.screenWidth = context.width;
|
|
21
|
+
context.camera.screenHeight = context.height;
|
|
22
|
+
const resettedCamera = context.camera.clone();
|
|
23
|
+
const [width, height] = bbox.size;
|
|
24
|
+
if (width < 1 ||
|
|
25
|
+
height < 1 ||
|
|
26
|
+
resettedCamera.screenWidth < 1 ||
|
|
27
|
+
resettedCamera.screenHeight < 1) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
resettedCamera.fitBoundingBox(bbox);
|
|
31
|
+
if (Number.isNaN(resettedCamera.transfo.distance)) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const state = resettedCamera.getCurrentState();
|
|
35
|
+
context.animSchedule({
|
|
36
|
+
duration: 0.5,
|
|
37
|
+
action: tgdActionCreateCameraInterpolation(context.camera, state),
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
get gizmo() {
|
|
42
|
+
return this.painterGizmo.options;
|
|
43
|
+
}
|
|
44
|
+
set gizmo(gizmo) {
|
|
45
|
+
this.painterGizmo.options = gizmo !== null && gizmo !== void 0 ? gizmo : false;
|
|
46
|
+
}
|
|
47
|
+
get canvas() {
|
|
48
|
+
return this._canvas;
|
|
49
|
+
}
|
|
50
|
+
set canvas(canvas) {
|
|
51
|
+
if (this._canvas === canvas)
|
|
52
|
+
return;
|
|
53
|
+
this._canvas = canvas;
|
|
54
|
+
if (canvas)
|
|
55
|
+
this.initialize();
|
|
56
|
+
else
|
|
57
|
+
this.delete();
|
|
58
|
+
}
|
|
59
|
+
get cellInfos() {
|
|
60
|
+
return this._cellInfos;
|
|
61
|
+
}
|
|
62
|
+
set cellInfos(cellInfos) {
|
|
63
|
+
if (this._cellInfos === cellInfos)
|
|
64
|
+
return;
|
|
65
|
+
this._cellInfos = cellInfos;
|
|
66
|
+
if (this.context) {
|
|
67
|
+
this.delete();
|
|
68
|
+
}
|
|
69
|
+
this.initialize();
|
|
70
|
+
}
|
|
71
|
+
initialize() {
|
|
72
|
+
if (this.context) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const { canvas, cellInfos } = this;
|
|
76
|
+
if (!canvas || !cellInfos) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const context = new TgdContext(canvas, { alpha: false, antialias: true, depth: true });
|
|
80
|
+
this.context = context;
|
|
81
|
+
this.scalebarCleanup = watchSpacePerPixel(context, this.eventScalebar);
|
|
82
|
+
const clear = new TgdPainterClear(context, {
|
|
83
|
+
color: [0, 0, 0, 1],
|
|
84
|
+
depth: 1,
|
|
85
|
+
});
|
|
86
|
+
const painterCellInfos = new PainterCellInfos(context, { cellInfos });
|
|
87
|
+
const state = new TgdPainterState(context, {
|
|
88
|
+
depth: "less",
|
|
89
|
+
children: [painterCellInfos],
|
|
90
|
+
});
|
|
91
|
+
this.painterGizmo.context = context;
|
|
92
|
+
context.add(clear, state, this.painterGizmo);
|
|
93
|
+
const camera = new TgdCameraOrthographic();
|
|
94
|
+
const { bbox } = painterCellInfos;
|
|
95
|
+
this.bbox = bbox;
|
|
96
|
+
camera.transfo.position = bbox.center;
|
|
97
|
+
const [width, height, depth] = bbox.size;
|
|
98
|
+
camera.fitSpaceAtTarget(width, height);
|
|
99
|
+
camera.near = 1;
|
|
100
|
+
camera.far = Math.max(camera.transfo.distance, Math.max(width, height, depth)) * 2;
|
|
101
|
+
context.camera = camera;
|
|
102
|
+
this.orbit = new TgdControllerCameraOrbit(context, {
|
|
103
|
+
inertiaOrbit: 1000,
|
|
104
|
+
inertiaPanning: 1000,
|
|
105
|
+
inertiaZoom: 300,
|
|
106
|
+
});
|
|
107
|
+
context.paint();
|
|
108
|
+
context.execAfterNextPaint(this.cameraReset);
|
|
109
|
+
}
|
|
110
|
+
delete() {
|
|
111
|
+
var _a, _b;
|
|
112
|
+
if (!this.context) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
(_a = this.scalebarCleanup) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
116
|
+
(_b = this.orbit) === null || _b === void 0 ? void 0 : _b.detach();
|
|
117
|
+
this.orbit = null;
|
|
118
|
+
this.context.delete();
|
|
119
|
+
this.context = null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export function useManager({ cellInfos, gizmo }) {
|
|
123
|
+
const refManager = React.useRef(null);
|
|
124
|
+
if (!refManager.current)
|
|
125
|
+
refManager.current = new PainterManager();
|
|
126
|
+
const manager = refManager.current;
|
|
127
|
+
React.useEffect(() => {
|
|
128
|
+
manager.cellInfos = cellInfos;
|
|
129
|
+
}, [cellInfos, manager]);
|
|
130
|
+
React.useEffect(() => {
|
|
131
|
+
manager.gizmo = gizmo;
|
|
132
|
+
}, [gizmo, manager]);
|
|
133
|
+
return refManager.current;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc29tYXMtb25seS9tYW5hZ2VyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxxQkFBcUIsRUFFckIsVUFBVSxFQUNWLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsZUFBZSxFQUVmLGVBQWUsRUFDZixrQ0FBa0MsR0FDbkMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl4RCxNQUFNLGNBQWM7SUFBcEI7UUFJa0Isa0JBQWEsR0FBRyxJQUFJLFFBQVEsRUFBVSxDQUFDO1FBRS9DLFlBQU8sR0FBNkIsSUFBSSxDQUFDO1FBQ3pDLGVBQVUsR0FBMkIsRUFBRSxDQUFDO1FBQ3hDLFlBQU8sR0FBc0IsSUFBSSxDQUFDO1FBQ2xDLFVBQUssR0FBb0MsSUFBSSxDQUFDO1FBQzlDLFNBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQzVCLG9CQUFlLEdBQXdCLElBQUksQ0FBQztRQUNuQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFrQzFDLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQzFCLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFFckIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUMzQyxPQUFPLENBQUMsTUFBTSxDQUFD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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TgdBoundingBox, type TgdContext, TgdPainterGroup } from "@tolokoban/tgd";
|
|
2
|
+
import type { MorphoViewerCellInfo } from "../types";
|
|
3
|
+
export interface PainterCellInfosOptions {
|
|
4
|
+
cellInfos: MorphoViewerCellInfo[];
|
|
5
|
+
}
|
|
6
|
+
export declare class PainterCellInfos extends TgdPainterGroup {
|
|
7
|
+
readonly context: TgdContext;
|
|
8
|
+
readonly bbox: TgdBoundingBox;
|
|
9
|
+
private readonly texturePalette;
|
|
10
|
+
constructor(context: TgdContext, options: PainterCellInfosOptions);
|
|
11
|
+
delete(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=painter-cell-infos.d.ts.map
|
|
@@ -0,0 +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;AAIrD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;AAED,qBAAa,gBAAiB,SAAQ,eAAe;aAKjC,OAAO,EAAE,UAAU;IAJrC,SAAgB,IAAI,EAAE,cAAc,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;gBAG5B,OAAO,EAAE,UAAU,EACnC,OAAO,EAAE,uBAAuB;IAsClC,MAAM,IAAI,IAAI;CAIf"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { TgdBoundingBox, TgdPainterGroup, TgdPainterPointsCloud, TgdTexture2D, tgdCanvasCreatePalette, } from "@tolokoban/tgd";
|
|
2
|
+
import { computeAmbientOcclusion } from "./ambient-occlusion";
|
|
3
|
+
const RADIUS = 15;
|
|
4
|
+
export class PainterCellInfos extends TgdPainterGroup {
|
|
5
|
+
constructor(context, options) {
|
|
6
|
+
var _a;
|
|
7
|
+
const texturePalette = new TgdTexture2D(context, {
|
|
8
|
+
params: {
|
|
9
|
+
magFilter: "LINEAR",
|
|
10
|
+
minFilter: "LINEAR",
|
|
11
|
+
wrapR: "CLAMP_TO_EDGE",
|
|
12
|
+
wrapS: "CLAMP_TO_EDGE",
|
|
13
|
+
wrapT: "CLAMP_TO_EDGE",
|
|
14
|
+
},
|
|
15
|
+
}).loadBitmap(tgdCanvasCreatePalette(["hsl(200, 100%, 80%)", "hsl(200, 100%, 50%)", "hsl(220, 100%, 30%)"], 1));
|
|
16
|
+
const bbox = new TgdBoundingBox();
|
|
17
|
+
const painterPointsCloudOptions = parseCellInfos(options.cellInfos, bbox);
|
|
18
|
+
const uvs = (_a = middleLuminance(painterPointsCloudOptions.dataUV)) !== null && _a !== void 0 ? _a : new Float32Array(2 * options.cellInfos.length);
|
|
19
|
+
const painterPointsCloud = new TgdPainterPointsCloud(context, Object.assign(Object.assign({}, painterPointsCloudOptions), { dataUV: computeAmbientOcclusion(bbox, 10 * RADIUS, painterPointsCloudOptions.dataPoint, uvs), texture: texturePalette, fragCode: TgdPainterPointsCloud.fragCodeSphere({
|
|
20
|
+
enableSpecular: true,
|
|
21
|
+
specularExponent: 50,
|
|
22
|
+
}) }));
|
|
23
|
+
super({
|
|
24
|
+
name: "PainterCellInfos",
|
|
25
|
+
children: [painterPointsCloud],
|
|
26
|
+
});
|
|
27
|
+
this.context = context;
|
|
28
|
+
this.texturePalette = texturePalette;
|
|
29
|
+
this.bbox = bbox;
|
|
30
|
+
}
|
|
31
|
+
delete() {
|
|
32
|
+
this.texturePalette.delete();
|
|
33
|
+
super.delete();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function parseCellInfos(cellInfos, bbox) {
|
|
37
|
+
const dataPoint = [];
|
|
38
|
+
const dataUV = [];
|
|
39
|
+
for (const { position } of cellInfos) {
|
|
40
|
+
const [x, y, z] = position;
|
|
41
|
+
bbox.addSphere(x, y, z, RADIUS);
|
|
42
|
+
dataPoint.push(x, y, z, RADIUS);
|
|
43
|
+
dataUV.push(Math.random(), Math.random());
|
|
44
|
+
}
|
|
45
|
+
const options = {
|
|
46
|
+
dataPoint: new Float32Array(dataPoint),
|
|
47
|
+
dataUV: new Float32Array(dataUV),
|
|
48
|
+
};
|
|
49
|
+
return options;
|
|
50
|
+
}
|
|
51
|
+
function middleLuminance(dataUV) {
|
|
52
|
+
if (!dataUV)
|
|
53
|
+
return;
|
|
54
|
+
for (let i = 1; i < dataUV.length; i += 2) {
|
|
55
|
+
dataUV[i] = 0.5;
|
|
56
|
+
}
|
|
57
|
+
return dataUV;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1jZWxsLWluZm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zb21hcy1vbmx5L21hbmFnZXIvcGFpbnRlci1jZWxsLWluZm9zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBRWQsZUFBZSxFQUNmLHFCQUFxQixFQUVyQixZQUFZLEVBQ1osc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJOUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBTWxCLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBSW5ELFlBQ2tCLE9BQW1CLEVBQ25DLE9BQWdDOztRQUVoQyxNQUFNLGNBQWMsR0FBRyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDL0MsTUFBTSxFQUFFO2dCQUNOLFNBQVMsRUFBRSxRQUFRO2dCQUNuQixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLEtBQUssRUFBRSxlQUFlO2dCQUN0QixLQUFLLEVBQUUsZUFBZTthQUN2QjtTQUNGLENBQUMsQ0FBQyxVQUFVLENBQ1gsc0JBQXNCLENBQ3BCLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLENBQUMsRUFDckUsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbEMsTUFBTSx5QkFBeUIsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRSxNQUFNLEdBQUcsR0FDUCxNQUFBLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsbUNBQ2pELElBQUksWUFBWSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxPQUFPLGtDQUN2RCx5QkFBeUIsS0FDNUIsTUFBTSxFQUFFLHVCQUF1QixDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFDdkIsUUFBUSxFQUFFLHFCQUFxQixDQUFDLGNBQWMsQ0FBQztnQkFDN0MsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGdCQUFnQixFQUFFLEVBQUU7YUFDckIsQ0FBQyxJQUNGLENBQUM7UUFDSCxLQUFLLENBQUM7WUFDSixJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLFFBQVEsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1NBQy9CLENBQUMsQ0FBQztRQWxDYSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBbUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELFNBQVMsY0FBYyxDQUNyQixTQUFpQyxFQUNqQyxJQUFvQjtJQUVwQixNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFDL0IsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLEtBQUssTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFpQztRQUM1QyxTQUFTLEVBQUUsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQ3RDLE1BQU0sRUFBRSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUM7S0FDakMsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxNQUFnQztJQUN2RCxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU87SUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"morpho-viewer-somas-only.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-somas-only/morpho-viewer-somas-only.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAI1D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,2CAyCtE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { tgdFullscreenToggle } from "@tolokoban/tgd";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { classNames } from "@/utils";
|
|
5
|
+
import { ControlsLayout } from "../controls-layout";
|
|
6
|
+
import MorphoViewerScalebar from "../morpho-viewer-scalebar";
|
|
7
|
+
import { useManager as usePainterManager } from "./manager";
|
|
8
|
+
import styles from "./morpho-viewer-somas-only.module.css";
|
|
9
|
+
export function MorphoViewerSomasOnly(props) {
|
|
10
|
+
var _a;
|
|
11
|
+
const ref = React.useRef(null);
|
|
12
|
+
const painterManager = usePainterManager(props);
|
|
13
|
+
const handleToggleFullscreen = () => {
|
|
14
|
+
const div = ref.current;
|
|
15
|
+
if (!div)
|
|
16
|
+
return;
|
|
17
|
+
tgdFullscreenToggle(div);
|
|
18
|
+
};
|
|
19
|
+
const handleControls = (action) => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
switch (action) {
|
|
22
|
+
case "fullscreen":
|
|
23
|
+
handleToggleFullscreen();
|
|
24
|
+
break;
|
|
25
|
+
case "reset-camera":
|
|
26
|
+
painterManager.cameraReset();
|
|
27
|
+
break;
|
|
28
|
+
case "close":
|
|
29
|
+
(_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
|
|
30
|
+
break;
|
|
31
|
+
case "minimize":
|
|
32
|
+
(_b = props.onMinimize) === null || _b === void 0 ? void 0 : _b.call(props);
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
return (_jsxs("div", { ref: ref, className: classNames(props.className, styles.morphoViewerSomasOnly), children: [_jsx(Canvas, { painterManager: painterManager }), _jsx(ControlsLayout, { content: (_a = props.controls) !== null && _a !== void 0 ? _a : getDefaultControls(props), onClick: handleControls }), props.scalebar && (_jsx(MorphoViewerScalebar, { className: props.scalebar, spacePerPixelEvent: painterManager.eventScalebar }))] }));
|
|
37
|
+
}
|
|
38
|
+
const Canvas = React.memo(({ painterManager }) => {
|
|
39
|
+
return (_jsx("canvas", { className: styles.webgl, ref: (canvas) => {
|
|
40
|
+
painterManager.canvas = canvas;
|
|
41
|
+
return () => {
|
|
42
|
+
painterManager.canvas = null;
|
|
43
|
+
};
|
|
44
|
+
} }, "canvas"));
|
|
45
|
+
});
|
|
46
|
+
function getDefaultControls(props) {
|
|
47
|
+
return ["reset-camera", ["fullscreen", props.onClose && "close", props.onMinimize && "minimize"]];
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zb21hcy1vbmx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zb21hcy1vbmx5L21vcnBoby12aWV3ZXItc29tYXMtb25seS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE9BQU8sRUFBc0IsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEUsT0FBTyxvQkFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQXVCLFVBQVUsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUlqRixPQUFPLE1BQU0sTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBaUM7O0lBQ3JFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQXdCLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBRWpCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQztJQUNGLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBcUIsRUFBUSxFQUFFOztRQUNyRCxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxZQUFZO2dCQUNmLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0IsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixNQUFBLEtBQUssQ0FBQyxPQUFPLHFEQUFJLENBQUM7Z0JBQ2xCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsTUFBQSxLQUFLLENBQUMsVUFBVSxxREFBSSxDQUFDO2dCQUNyQixNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FDTCxlQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxhQUNqRixLQUFDLE1BQU0sSUFBQyxjQUFjLEVBQUUsY0FBYyxHQUFJLEVBQzFDLEtBQUMsY0FBYyxJQUNiLE9BQU8sRUFBRSxNQUFBLEtBQUssQ0FBQyxRQUFRLG1DQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUNwRCxPQUFPLEVBQUUsY0FBYyxHQUN2QixFQUNELEtBQUssQ0FBQyxRQUFRLElBQUksQ0FDakIsS0FBQyxvQkFBb0IsSUFDbkIsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQ3pCLGtCQUFrQixFQUFFLGNBQWMsQ0FBQyxhQUFhLEdBQ2hELENBQ0gsSUFDRyxDQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFzQyxFQUFFLEVBQUU7SUFDbkYsT0FBTyxDQUNMLGlCQUVFLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUN2QixHQUFHLEVBQUUsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7WUFDeEMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDL0IsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsY0FBYyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDL0IsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxJQVBHLFFBQVEsQ0FRWixDQUNILENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILFNBQVMsa0JBQWtCLENBQUMsS0FBaUM7SUFDM0QsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDcEcsQ0FBQyJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ArrayNumber3 } from "@tolokoban/tgd";
|
|
2
|
+
import type { ControlsLayoutProps } from "../controls-layout";
|
|
3
|
+
import type { PropsForGizmo, PropsForScalebar } from "../types";
|
|
4
|
+
export interface MorphoViewerCellInfo {
|
|
5
|
+
morphologyId: string;
|
|
6
|
+
position: ArrayNumber3;
|
|
7
|
+
}
|
|
8
|
+
export type MorphoViewerSomasOnlyProps = PropsForGizmo & PropsForScalebar & {
|
|
9
|
+
className?: string;
|
|
10
|
+
cellInfos: MorphoViewerCellInfo[];
|
|
11
|
+
onClose?(): void;
|
|
12
|
+
onMinimize?(): void;
|
|
13
|
+
controls?: ControlsLayoutProps["content"];
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-somas-only/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,MAAM,0BAA0B,GAAG,aAAa,GACpD,gBAAgB,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-spinner/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from "./morpho-viewer-spinner";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNwaW5uZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQSJ9
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface MorphoViewerSpinnerProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
label?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function MorphoViewerSpinner({ className, label }: MorphoViewerSpinnerProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=morpho-viewer-spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"morpho-viewer-spinner.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-spinner/morpho-viewer-spinner.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,KAAgB,EAAE,EAAE,wBAAwB,2CAW5F"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconSpinner } from "@/icons/spinner";
|
|
3
|
+
import { classNames } from "@/utils";
|
|
4
|
+
import styles from "./morpho-viewer-spinner.module.css";
|
|
5
|
+
export function MorphoViewerSpinner({ className, label = "Neuron" }) {
|
|
6
|
+
return (_jsxs("div", { className: classNames(className, styles.morphoViewerSpinner), children: [_jsx(IconSpinner, {}), _jsxs("div", { children: ["Loading", _jsx("br", {}), label] })] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zcGlubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zcGlubmVyL21vcnBoby12aWV3ZXItc3Bpbm5lci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE9BQU8sTUFBTSxNQUFNLG9DQUFvQyxDQUFDO0FBT3hELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsUUFBUSxFQUE0QjtJQUMzRixPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsYUFDL0QsS0FBQyxXQUFXLEtBQUcsRUFDZixxQ0FFRSxjQUFNLEVBQ0wsS0FBSyxJQUNGLElBQ0YsQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default } from "./tooltip
|
|
1
|
+
export { default } from "./tooltip";
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy90b29sdGlwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUMifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { classNames } from "
|
|
2
|
+
import { classNames } from "@/utils";
|
|
3
3
|
import styles from "./tooltip.module.css";
|
|
4
4
|
export default function Tooltip({ className, classNameTooltip, tooltip, arrow = "top", arrowWidth = 16, arrowHeight = 16, backColor = "#fff", foreColor = "#000", children, }) {
|
|
5
5
|
return (_jsxs("div", { className: classNames(className, styles.container), style: {
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { TgdCamera
|
|
1
|
+
import { TgdCamera } from "@tolokoban/tgd";
|
|
2
2
|
export declare class GizmoCanvas {
|
|
3
|
-
eventTipClick:
|
|
4
|
-
from: Readonly<TgdQuat>;
|
|
5
|
-
to: Readonly<TgdQuat>;
|
|
6
|
-
}>;
|
|
3
|
+
eventTipClick: any;
|
|
7
4
|
private _canvas;
|
|
8
5
|
private context;
|
|
9
6
|
private _camera;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gizmo-canvas.d.ts","sourceRoot":"","sources":["../../src/gizmo/gizmo-canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"gizmo-canvas.d.ts","sourceRoot":"","sources":["../../src/gizmo/gizmo-canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAUV,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,WAAW;IAIf,aAAa,MAGf;IAEL,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,YAAY,CAA4B;IAEhD,YAAY,CAAC,MAAM,EAAE,SAAS;IAQ9B,IAAI,MAAM,IAGS,iBAAiB,GAAG,IAAI,CAD1C;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAwC1C;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CA4BxB;CACH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TgdContext, TgdControllerCameraOrbit, TgdEvent, TgdPainterClear, TgdPainterDepth, TgdQuat, TgdVec3, } from "@tolokoban/tgd";
|
|
2
|
-
import { TipsPainter } from "./painter/tips
|
|
2
|
+
import { TipsPainter } from "./painter/tips";
|
|
3
3
|
export class GizmoCanvas {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.eventTipClick = new TgdEvent();
|
package/lib/dist/gizmo/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./gizmo-canvas
|
|
1
|
+
export * from "./gizmo-canvas";
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l6bW8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TgdContext, TgdPainter } from "@tolokoban/tgd";
|
|
2
2
|
export declare class TipsPainter extends TgdPainter {
|
|
3
3
|
private readonly context;
|
|
4
|
-
readonly camera:
|
|
4
|
+
readonly camera: any;
|
|
5
5
|
private readonly texture;
|
|
6
6
|
private readonly prg;
|
|
7
7
|
private readonly vao;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tips.d.ts","sourceRoot":"","sources":["../../../src/gizmo/painter/tips.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tips.d.ts","sourceRoot":"","sources":["../../../src/gizmo/painter/tips.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAEV,UAAU,EAKX,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,WAAY,SAAQ,UAAU;IAW7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,SAAgB,MAAM,MAKnB;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;gBAER,OAAO,EAAE,UAAU;IA4BhD,MAAM,IAAI,IAAI;IAId,KAAK,IAAI,IAAI;IAeb,OAAO;CAWR"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TgdCameraPerspective, TgdDataset, TgdPainter, TgdProgram, TgdTexture2D, TgdVertexArray, tgdCanvasCreateWithContext2D, } from "@tolokoban/tgd";
|
|
2
|
-
import { FRAG } from "./shader.frag
|
|
3
|
-
import { VERT } from "./shader.vert
|
|
2
|
+
import { FRAG } from "./shader.frag";
|
|
3
|
+
import { VERT } from "./shader.vert";
|
|
4
4
|
export class TipsPainter extends TgdPainter {
|
|
5
5
|
constructor(context) {
|
|
6
6
|
super();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CSSProperties } from "react";
|
|
2
|
+
type Props = {
|
|
3
|
+
className?: string;
|
|
4
|
+
size?: string;
|
|
5
|
+
style?: CSSProperties;
|
|
6
|
+
};
|
|
7
|
+
export declare function IconSpinner({ className, style, size }: Props): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/icons/spinner.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,2CAgB5D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { classNames } from "@/utils";
|
|
3
|
+
import styles from "./icon.module.css";
|
|
4
|
+
export function IconSpinner({ className, style, size }) {
|
|
5
|
+
return (_jsxs("svg", { className: classNames(className, styles.icon, styles.spin), style: Object.assign({ "--custom-icon-size": size !== null && size !== void 0 ? size : "1.5em" }, style), viewBox: "-12 -12 24 24", stroke: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("title", { children: "spinner" }), _jsx("path", { d: "M0,-8A8,8 0 0,0 -8,0", strokeWidth: "1", strokeLinecap: "round", fill: "none" })] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pY29ucy9zcGlubmVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUlyQyxPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQVF2QyxNQUFNLFVBQVUsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVM7SUFDM0QsT0FBTyxDQUNMLGVBQ0UsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQzFELEtBQUssa0JBQ0gsb0JBQW9CLEVBQUUsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksT0FBTyxJQUNsQyxLQUFLLEdBRVYsT0FBTyxFQUFDLGVBQWUsRUFDdkIsTUFBTSxFQUFDLGNBQWMsRUFDckIsS0FBSyxFQUFDLDRCQUE0QixhQUVsQyxzQ0FBc0IsRUFDdEIsZUFBTSxDQUFDLEVBQUMsc0JBQXNCLEVBQUMsV0FBVyxFQUFDLEdBQUcsRUFBQyxhQUFhLEVBQUMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLEdBQUcsSUFDL0UsQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9
|
package/lib/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
export { TgdCamera, TgdCameraOrthographic, TgdColor, TgdEvent as MorphoViewerEvent, tgdFullscreenToggle } from "@tolokoban/tgd";
|
|
1
|
+
export { TgdCamera, TgdCameraOrthographic, TgdColor, TgdEvent as MorphoViewerEvent, tgdFullscreenToggle, } from "@tolokoban/tgd";
|
|
2
2
|
export { colorContrast, colorLuminance, colorToRGBA } from "./colors";
|
|
3
3
|
export * from "./components/morpho-viewer-octree";
|
|
4
4
|
export * from "./components/morpho-viewer-simul";
|
|
5
5
|
export * from "./components/morpho-viewer-small-circuit";
|
|
6
|
+
export * from "./components/morpho-viewer-somas-only";
|
|
7
|
+
export * from "./components/morpho-viewer-spinner";
|
|
6
8
|
export * from "./gizmo";
|
|
7
9
|
export { MorphologyCanvas } from "./morphology/morphology-canvas";
|
|
8
10
|
export { version } from "./package.json";
|
package/lib/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,QAAQ,EACR,QAAQ,IAAI,iBAAiB,EAC7B,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACtE,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,qCAAqC,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEvD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
|
package/lib/dist/index.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { TgdCamera, TgdCameraOrthographic, TgdColor, TgdEvent as MorphoViewerEvent, tgdFullscreenToggle } from "@tolokoban/tgd";
|
|
3
|
-
export { colorContrast, colorLuminance, colorToRGBA } from "./colors
|
|
4
|
-
export * from "./components/morpho-viewer-octree
|
|
5
|
-
export * from "./components/morpho-viewer-simul
|
|
6
|
-
export * from "./components/morpho-viewer-small-circuit
|
|
7
|
-
export * from "./
|
|
8
|
-
export
|
|
2
|
+
export { TgdCamera, TgdCameraOrthographic, TgdColor, TgdEvent as MorphoViewerEvent, tgdFullscreenToggle, } from "@tolokoban/tgd";
|
|
3
|
+
export { colorContrast, colorLuminance, colorToRGBA } from "./colors";
|
|
4
|
+
export * from "./components/morpho-viewer-octree";
|
|
5
|
+
export * from "./components/morpho-viewer-simul";
|
|
6
|
+
export * from "./components/morpho-viewer-small-circuit";
|
|
7
|
+
export * from "./components/morpho-viewer-somas-only";
|
|
8
|
+
export * from "./components/morpho-viewer-spinner";
|
|
9
|
+
export * from "./gizmo";
|
|
10
|
+
export { MorphologyCanvas } from "./morphology/morphology-canvas";
|
|
9
11
|
export { version } from "./package.json";
|
|
10
|
-
export { morphoViewerConvertMorphologyIntoTree } from "./tools/morphology-to-tree
|
|
11
|
-
export { morphoViewerConvertSwcIntoTree } from "./tools/swc-to-tree
|
|
12
|
-
export { CellNodeType } from "./types
|
|
13
|
-
export { useEventState, useEventValue } from "./utils
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
export { morphoViewerConvertMorphologyIntoTree } from "./tools/morphology-to-tree";
|
|
13
|
+
export { morphoViewerConvertSwcIntoTree } from "./tools/swc-to-tree";
|
|
14
|
+
export { CellNodeType } from "./types";
|
|
15
|
+
export { useEventState, useEventValue } from "./utils";
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBRWIsT0FBTyxFQUNMLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFFBQVEsSUFBSSxpQkFBaUIsRUFDN0IsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLFNBQVMsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQyJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TgdQuat } from "@tolokoban/tgd";
|
|
2
2
|
import { AbstractCanvas, type CanvasOptions } from "../abstract-canvas";
|
|
3
3
|
import { type ColorsInterface } from "../colors";
|
|
4
4
|
import { type CellNode } from "../parser/swc";
|
|
@@ -6,7 +6,7 @@ import { type ScalebarOptions } from "../scalebar";
|
|
|
6
6
|
import { type ColoringType } from "../types";
|
|
7
7
|
export declare class MorphologyCanvas extends AbstractCanvas {
|
|
8
8
|
readonly colors: ColorsInterface;
|
|
9
|
-
readonly eventColorsChange:
|
|
9
|
+
readonly eventColorsChange: any;
|
|
10
10
|
private _customColorsForSection;
|
|
11
11
|
private _customColorsForDistance;
|
|
12
12
|
private _maxDendriteLength;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"morphology-canvas.d.ts","sourceRoot":"","sources":["../../src/morphology/morphology-canvas.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"morphology-canvas.d.ts","sourceRoot":"","sources":["../../src/morphology/morphology-canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAQH,OAAO,EAKV,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAe,EAAE,KAAK,eAAe,EAAe,MAAM,WAAW,CAAA;AACrE,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,eAAe,CAAA;AACvD,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,UAAU,CAAA;AA2B1D,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,SAAgB,MAAM,EAAE,eAAe,CAAA;IACvC,SAAgB,iBAAiB,MAAmC;IAEpE,OAAO,CAAC,uBAAuB,CAAyB;IACxD,OAAO,CAAC,wBAAwB,CAAyB;IAEzD,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,oBAAoB,CAAK;gBAErB,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM;IAehD,IAAI,sBAAsB,IAOS,MAAM,EAAE,GAAG,IAAI,CALjD;IAKD,IAAI,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAGjD;IAED,IAAI,uBAAuB,IAOS,MAAM,EAAE,GAAG,IAAI,CALlD;IAKD,IAAI,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAGlD;IAKD,IAAI,iBAAiB,WAEpB;IAED,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;IAIlB,iBAAiB,IAAI,OAAO;IAI5B,gBAAgB,IAAI,OAAO;IAM3B,OAAO,CAAC,WAAW;IAOnB,IAAI,SAAS,IAIQ,MAAM,CAF1B;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAQ1B;IAED,SAAgB,iBAAiB,GAAI,SAAS;QAC1C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QACvB,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;KACxB,UAMC;IAEF,SAAgB,WAAW,GAAI,iBAAiB,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAc,UA4B/E;IAEF,eAAe,CAAC,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM;;;;;IAItD,IAAI,OAAO,IAGQ,YAAY,CAD9B;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,YAAY,EAS9B;IAED,IAAI,UAAU,WAEb;IAED,IAAI,UAAU,CAAC,KAAK,QAAA,EASnB;IAED,IAAI,gBAAgB,WAEnB;IACD,IAAI,gBAAgB,CAAC,KAAK,QAAA,EASzB;IAED,IAAI,GAAG,IAGM,MAAM,GAAG,IAAI,CADzB;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAWzB;IAED,IAAI,KAAK,IAGQ,QAAQ,EAAE,CAD1B;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,EAM1B;IAED,SAAgB,KAAK,aAKnB;IAEF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAgBjC;IAEF,OAAO,CAAC,eAAe;IAWvB,SAAS,CAAC,IAAI;IAwCd,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAUhC;CACL"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { TgdEvent, TgdMat3, TgdPainterClear, TgdPainterDepth, TgdPainterLogic, TgdQuat, TgdVec3, tgdActionCreateCameraInterpolation, tgdEasingFunctionInOutCubic, tgdFullscreenTest, } from "@tolokoban/tgd";
|
|
2
|
-
import { AbstractCanvas } from "../abstract-canvas
|
|
3
|
-
import Colors, { colorToRGBA } from "../colors
|
|
4
|
-
import { parseSwc } from "../parser/swc
|
|
5
|
-
import { computeScalebarAttributes } from "../scalebar
|
|
6
|
-
import { CellNodeType } from "../types
|
|
7
|
-
import { SwcPainter } from "./painter
|
|
8
|
-
import { CellNodes } from "./painter/nodes
|
|
2
|
+
import { AbstractCanvas } from "../abstract-canvas";
|
|
3
|
+
import Colors, { colorToRGBA } from "../colors";
|
|
4
|
+
import { parseSwc } from "../parser/swc";
|
|
5
|
+
import { computeScalebarAttributes } from "../scalebar";
|
|
6
|
+
import { CellNodeType } from "../types";
|
|
7
|
+
import { SwcPainter } from "./painter";
|
|
8
|
+
import { CellNodes } from "./painter/nodes";
|
|
9
9
|
export class MorphologyCanvas extends AbstractCanvas {
|
|
10
10
|
constructor(options = {}) {
|
|
11
11
|
super(Object.assign({ name: "MorphologyCanvas", cameraController: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CellNodeType } from "
|
|
2
|
-
import { Segments } from "./segments
|
|
1
|
+
import { CellNodeType } from "@/types";
|
|
2
|
+
import { Segments } from "./segments";
|
|
3
3
|
export function makeData(nodes) {
|
|
4
4
|
const segmentsNeurites = new Segments(nodes);
|
|
5
5
|
const somaNeurites = new Segments(nodes);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SwcPainter } from "./painter
|
|
1
|
+
export { SwcPainter } from "./painter";
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ycGhvbG9neS9wYWludGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUMifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type TgdContext, TgdPainterGroup } from "@tolokoban/tgd";
|
|
2
|
-
import type { ColorsInterface } from "
|
|
2
|
+
import type { ColorsInterface } from "@/colors";
|
|
3
3
|
import type { CellNodes } from "./nodes";
|
|
4
4
|
export declare class SwcPainter extends TgdPainterGroup {
|
|
5
5
|
readonly context: TgdContext;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TgdMaterialDiffuse, TgdPainterGroup, TgdPainterSegments, TgdTexture2D, } from "@tolokoban/tgd";
|
|
2
|
-
import { makeData } from "./factory
|
|
3
|
-
import { getDistancesTextureCanvas, getRegionsTextureCanvas } from "./textures
|
|
2
|
+
import { makeData } from "./factory";
|
|
3
|
+
import { getDistancesTextureCanvas, getRegionsTextureCanvas } from "./textures";
|
|
4
4
|
export class SwcPainter extends TgdPainterGroup {
|
|
5
5
|
constructor(context, nodes) {
|
|
6
6
|
super();
|