@openbraininstitute/morphoviewer 0.26.2 → 0.26.4

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 (87) hide show
  1. package/dist/components/button-reset-camera/button-reset-camera.js +2 -2
  2. package/dist/components/button-reset-camera/button-reset-camera.module.css +10 -0
  3. package/dist/components/controls-layout/controls-layout.js +1 -1
  4. package/dist/components/controls-layout/controls-layout.module.css +53 -0
  5. package/dist/components/morpho-viewer-octree/morpho-viewer-octree.js +1 -1
  6. package/dist/components/morpho-viewer-octree/morpho-viewer-octree.module.css +70 -0
  7. package/dist/components/morpho-viewer-octree/painter/manager.d.ts.map +1 -1
  8. package/dist/components/morpho-viewer-octree/painter/manager.js +9 -4
  9. package/dist/components/morpho-viewer-octree/types.d.ts +2 -1
  10. package/dist/components/morpho-viewer-octree/types.d.ts.map +1 -1
  11. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.js +1 -1
  12. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.module.css +13 -0
  13. package/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.js +1 -1
  14. package/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.module.css +25 -0
  15. package/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.js +2 -2
  16. package/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.module.css +115 -0
  17. package/dist/components/morpho-viewer-simul/components/hint/hint.js +1 -1
  18. package/dist/components/morpho-viewer-simul/components/hint/hint.module.css +23 -0
  19. package/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.js +1 -1
  20. package/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.module.css +5 -0
  21. package/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.d.ts +1 -1
  22. package/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.js +2 -2
  23. package/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.module.css +20 -0
  24. package/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.js +3 -3
  25. package/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.module.css +21 -0
  26. package/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.d.ts +1 -1
  27. package/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.js +1 -1
  28. package/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.module.css +52 -0
  29. package/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.js +1 -1
  30. package/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.module.css +69 -0
  31. package/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.js +1 -1
  32. package/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.js +3 -3
  33. package/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.module.css +60 -0
  34. package/dist/components/morpho-viewer-simul/morpho-viewer-simul.js +1 -1
  35. package/dist/components/morpho-viewer-simul/morpho-viewer-simul.module.css +94 -0
  36. package/dist/components/morpho-viewer-simul/painter/manager.js +1 -1
  37. package/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.js +1 -1
  38. package/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.js +1 -1
  39. package/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.js +1 -1
  40. package/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.d.ts +1 -1
  41. package/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.js +1 -1
  42. package/dist/components/morpho-viewer-simul/painter/structure.d.ts.map +1 -1
  43. package/dist/components/morpho-viewer-simul/painter/structure.js +43 -20
  44. package/dist/components/morpho-viewer-simul/painter/tree.d.ts.map +1 -1
  45. package/dist/components/morpho-viewer-simul/painter/tree.js +17 -22
  46. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +1 -1
  47. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.module.css +63 -0
  48. package/dist/components/morpho-viewer-small-circuit/painter/manager.js +3 -3
  49. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts +1 -1
  50. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +1 -1
  51. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts +1 -1
  52. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.js +1 -1
  53. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +1 -1
  54. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.d.ts.map +1 -1
  55. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.js +11 -28
  56. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.d.ts +1 -1
  57. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.d.ts.map +1 -1
  58. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.js +3 -2
  59. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.d.ts +3 -0
  60. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.d.ts.map +1 -0
  61. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.js +24 -0
  62. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +5 -0
  63. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
  64. package/dist/components/morpho-viewer-somas-only/manager/manager.js +41 -4
  65. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +1 -1
  66. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.js +1 -1
  67. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.module.css +15 -0
  68. package/dist/components/morpho-viewer-spinner/morpho-viewer-spinner.js +2 -2
  69. package/dist/components/morpho-viewer-spinner/morpho-viewer-spinner.module.css +31 -0
  70. package/dist/components/tooltip/tooltip.js +1 -1
  71. package/dist/components/tooltip/tooltip.module.css +74 -0
  72. package/dist/icons/icon.module.css +19 -0
  73. package/dist/icons/spinner.js +1 -1
  74. package/dist/morphology/painter/factory.js +1 -1
  75. package/dist/morphology/painter/nodes.d.ts +1 -1
  76. package/dist/morphology/painter/nodes.js +1 -1
  77. package/dist/morphology/painter/painter.d.ts +1 -1
  78. package/dist/morphology/painter/segments.js +1 -1
  79. package/dist/morphology/painter/textures.d.ts +1 -1
  80. package/dist/package.json +9 -5
  81. package/dist/parser/swc.d.ts +1 -1
  82. package/dist/parser/swc.js +1 -1
  83. package/dist/tools/morphology-to-tree.d.ts +2 -2
  84. package/dist/tools/morphology-to-tree.js +1 -1
  85. package/dist/tools/swc-to-tree.d.ts +1 -1
  86. package/dist/tools/swc-to-tree.js +1 -1
  87. package/package.json +8 -4
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import Tooltip from "@/components/tooltip";
3
- import { classNames, useEventValue } from "@/utils";
2
+ import Tooltip from "./../tooltip";
3
+ import { classNames, useEventValue } from "./../../utils";
4
4
  import { IconCenter } from "../icons/center";
5
5
  import styles from "./button-reset-camera.module.css";
6
6
  export function ButtonCameraReset({ className, painterManager }) {
@@ -0,0 +1,10 @@
1
+ .buttonResetCamera {
2
+ transition: all 0.3s;
3
+ opacity: 1;
4
+ transform: translateY(0);
5
+
6
+ &.hide {
7
+ opacity: 0;
8
+ transform: translateY(-100%);
9
+ }
10
+ }
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { classNames } from "@/utils";
2
+ import { classNames } from "./../../utils";
3
3
  import { IconCenter } from "../icons/center";
4
4
  import { IconClose } from "../icons/close";
5
5
  import { IconFullscreen } from "../icons/fullscreen";
@@ -0,0 +1,53 @@
1
+ .controlsLayout {
2
+ position: absolute;
3
+ left: 0;
4
+ top: 0;
5
+ width: 100%;
6
+ padding: 0.5em;
7
+ display: flex;
8
+ flex-wrap: wrap;
9
+ flex-direction: row;
10
+ justify-content: space-between;
11
+ align-items: center;
12
+ gap: 1em;
13
+
14
+ div.group {
15
+ padding: 0;
16
+ margin: 0;
17
+ display: flex;
18
+ flex-wrap: nowrap;
19
+ flex-direction: row;
20
+ justify-content: flex-start;
21
+ align-items: center;
22
+ gap: .25em;
23
+ }
24
+
25
+ button,
26
+ button {
27
+ font: inherit;
28
+ width: 2.5em;
29
+ height: 2.5em;
30
+ display: grid;
31
+ place-items: center;
32
+ flex: 0 0 auto;
33
+ cursor: pointer;
34
+ color: #fff;
35
+ border: 2px solid #000;
36
+ border-radius: 2px;
37
+ background: #3a3a3a;
38
+ margin: 0;
39
+ box-sizing: border-box;
40
+ transition: all 0.3s;
41
+
42
+ &:hover {
43
+ background-color: #adf;
44
+ color: #000;
45
+ }
46
+
47
+ &:active {
48
+ background-color: rgb(0, 153, 255);
49
+ color: #000;
50
+ }
51
+ }
52
+
53
+ }
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tgdFullscreenToggle } from "@tolokoban/tgd";
3
3
  import React from "react";
4
- import { classNames } from "@/utils";
4
+ import { classNames } from "./../../utils";
5
5
  import { IconCenter } from "../icons/center";
6
6
  import { IconFullscreen } from "../icons/fullscreen";
7
7
  import MorphoViewerScalebar from "../morpho-viewer-scalebar";
@@ -0,0 +1,70 @@
1
+ .morphoViewerOctree {
2
+ position: relative;
3
+
4
+ >canvas.webgl {
5
+ position: absolute;
6
+ left: 0;
7
+ top: 0;
8
+ width: 100%;
9
+ height: 100%;
10
+ margin: 0;
11
+ background-color: #000;
12
+ }
13
+
14
+ >header {
15
+ top: 0;
16
+ }
17
+
18
+ >header,
19
+ >footer {
20
+ position: absolute;
21
+ left: 0;
22
+ width: 100%;
23
+ box-sizing: border-box;
24
+ padding: 1em;
25
+ margin: 0;
26
+ display: flex;
27
+ flex-wrap: nowrap;
28
+ flex-direction: row;
29
+ justify-content: space-between;
30
+ align-items: center;
31
+ gap: 2em;
32
+
33
+ >div.flex {
34
+ display: flex;
35
+ flex-wrap: nowrap;
36
+ flex-direction: row;
37
+ justify-content: flex-start;
38
+ align-items: center;
39
+ gap: 0.5em;
40
+ }
41
+
42
+ button {
43
+ font: inherit;
44
+ width: 2.5em;
45
+ height: 2.5em;
46
+ display: grid;
47
+ place-items: center;
48
+ flex: 0 0 auto;
49
+ cursor: pointer;
50
+ color: #fff;
51
+ border: 2px solid #000;
52
+ border-radius: 2px;
53
+ background: #3a3a3a;
54
+ margin: 0;
55
+ box-sizing: border-box;
56
+ transition: all 0.3s;
57
+
58
+ &:hover {
59
+ background-color: #adf;
60
+ color: #000;
61
+ }
62
+ }
63
+
64
+ .zoomSlider {
65
+ color: #fff;
66
+ flex: 0 0 auto;
67
+ width: 240px;
68
+ }
69
+ }
70
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-octree/painter/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,QAAQ,EAMR,KAAK,sBAAsB,EAU9B,MAAM,gBAAgB,CAAA;AAQvB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AASvD,qBAAa,aAAa;IACf,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAQ;IAC5D,SAAS,EAAE,uBAAuB,CAAC,WAAW,CAAC,GAAG,IAAI,CAAQ;IACrE,SAAgB,aAAa,mBAAyB;IAEtD,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAC1E,OAAO,CAAC,YAAY,CAAgE;IACpF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGtB;IACH,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,kBAAkB,CAM6C;IACvE,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,YAAY,CAAgC;;IAMpD,IAAI,KAAK,IAAI,KAAK,GAAG,sBAAsB,CAE1C;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,SAAS,EAsBrE;IAED,WAAW;IAgBX,IAAI,MAAM,IAGS,MAAM,CADxB;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAMxB;IAED,IAAI,MAAM,IAAI,iBAAiB,GAAG,IAAI,CAErC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAiC1C;IAED,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CA8D/B;CACL;AAoBD,wBAAgB,gBAAgB,CAAC,EAC7B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,GACR,EAAE,uBAAuB,GAAG,aAAa,CAazC"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-octree/painter/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,QAAQ,EAMR,KAAK,sBAAsB,EAU5B,MAAM,gBAAgB,CAAC;AAQxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AASxD,qBAAa,aAAa;IACjB,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAQ;IAC5D,SAAS,EAAE,uBAAuB,CAAC,WAAW,CAAC,GAAG,IAAI,CAAQ;IACrE,SAAgB,aAAa,mBAA0B;IAEvD,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAC1E,OAAO,CAAC,YAAY,CAAgE;IACpF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGtB;IACH,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,kBAAkB,CAM6C;IACvE,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,YAAY,CAAgC;;IAMpD,IAAI,KAAK,IAAI,KAAK,GAAG,sBAAsB,CAE1C;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,SAAS,EAsBrE;IAED,WAAW;IAgBX,IAAI,MAAM,IAGS,MAAM,CADxB;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAMxB;IAED,IAAI,MAAM,IAAI,iBAAiB,GAAG,IAAI,CAErC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAiC1C;IAED,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAmE/B;CACH;AAoBD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EAAE,uBAAuB,GAAG,aAAa,CAazC"}
@@ -1,7 +1,7 @@
1
1
  import { __awaiter } from "tslib";
2
- import { TgdContext, TgdControllerCameraOrbit, TgdDataGlb, TgdEvent, TgdGeometryBox, TgdMaterialDiffuse, TgdPainterClear, TgdPainterGizmo, TgdPainterGroup, TgdPainterLOD, TgdPainterMesh, TgdPainterMeshGltf, TgdPainterState, TgdQuat, TgdVec3, tgdActionCreateCameraInterpolation, tgdEasingFunctionInOutQuad, } from "@tolokoban/tgd";
2
+ import { TgdColor, TgdContext, TgdControllerCameraOrbit, TgdDataGlb, TgdEvent, TgdGeometryBox, TgdMaterialDiffuse, TgdPainterClear, TgdPainterGizmo, TgdPainterGroup, TgdPainterLOD, TgdPainterMesh, TgdPainterMeshGltf, TgdPainterState, TgdQuat, TgdVec3, tgdActionCreateCameraInterpolation, tgdEasingFunctionInOutQuad, } from "@tolokoban/tgd";
3
3
  import React from "react";
4
- import { watchSpacePerPixel } from "@/behaviors";
4
+ import { watchSpacePerPixel } from "./../../../behaviors";
5
5
  import { morphoViewerOctreeBlockToId } from "../tools";
6
6
  import { makeCamera } from "./camera";
7
7
  const DEFAULT_GIZMO_PROPS = {
@@ -82,7 +82,12 @@ export class OctreeManager {
82
82
  const asset = yield TgdDataGlb.parse(block.data);
83
83
  const mesh = new TgdPainterMeshGltf(context, {
84
84
  asset,
85
- material: this.material,
85
+ material: block.color
86
+ ? new TgdMaterialDiffuse({
87
+ lockLightsToCamera: true,
88
+ color: TgdColor.fromString(block.color).toArayNumber4(),
89
+ })
90
+ : this.material,
86
91
  });
87
92
  return mesh;
88
93
  }
@@ -209,4 +214,4 @@ export function useOctreeManager({ meshId, loadInfo, loadBlock, gizmo, }) {
209
214
  }, [meshId, loadInfo, loadBlock, gizmo]);
210
215
  return ref.current;
211
216
  }
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItb2N0cmVlL3BhaW50ZXIvbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdILFVBQVUsRUFDVix3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFFBQVEsRUFDUixjQUFjLEVBRWQsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixlQUFlLEVBRWYsZUFBZSxFQUNmLGFBQWEsRUFDYixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixPQUFPLEVBQ1AsT0FBTyxFQUNQLGtDQUFrQyxFQUNsQywwQkFBMEIsR0FDN0IsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFFekIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWhELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBSXJDLE1BQU0sbUJBQW1CLEdBQTJCO0lBQ2hELE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDVixNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsQ0FBQztDQUNaLENBQUE7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQTRCdEI7UUEzQk8sYUFBUSxHQUErQyxJQUFJLENBQUM7UUFDNUQsY0FBUyxHQUFnRCxJQUFJLENBQUM7UUFDckQsa0JBQWEsR0FBRyxJQUFJLFFBQVEsRUFBVSxDQUFBO1FBRTlDLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUE2QixJQUFJLENBQUM7UUFDekMsWUFBTyxHQUFzQixJQUFJLENBQUM7UUFDekIsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9B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
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItb2N0cmVlL3BhaW50ZXIvbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdMLFFBQVEsRUFDUixVQUFVLEVBQ1Ysd0JBQXdCLEVBQ3hCLFVBQVUsRUFDVixRQUFRLEVBQ1IsY0FBYyxFQUVkLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsZUFBZSxFQUVmLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsT0FBTyxFQUNQLE9BQU8sRUFDUCxrQ0FBa0MsRUFDbEMsMEJBQTBCLEdBQzNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUl0QyxNQUFNLG1CQUFtQixHQUEyQjtJQUNsRCxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNWLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLENBQUM7Q0FDVixDQUFDO0FBRUYsTUFBTSxPQUFPLGFBQWE7SUE0QnhCO1FBM0JPLGFBQVEsR0FBK0MsSUFBSSxDQUFDO1FBQzVELGNBQVMsR0FBZ0QsSUFBSSxDQUFDO1FBQ3JELGtCQUFhLEdBQUcsSUFBSSxRQUFRLEVBQVUsQ0FBQztRQUUvQyxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBNkIsSUFBSSxDQUFDO1FBQ3pDLFlBQU8sR0FBc0IsSUFBSSxDQUFDO1FBQ3pCLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLElB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
@@ -1,8 +1,9 @@
1
- import { PropsForGizmo, PropsForScalebar } from "../types";
2
1
  import type { ArrayNumber3 } from "@tolokoban/tgd";
2
+ import type { PropsForGizmo, PropsForScalebar } from "../types";
3
3
  export type MorphoViewerOctreeMeshType = {
4
4
  type: "glb";
5
5
  data: ArrayBuffer;
6
+ color?: string;
6
7
  };
7
8
  export interface MorphoViewerOctreeInfo {
8
9
  bbox: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-octree/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,gBAAgB,CAAA;AAE3F,MAAM,MAAM,0BAA0B,GAAG;IACrC,IAAI,EAAE,KAAK,CAAA;IACX,IAAI,EAAE,WAAW,CAAA;CACpB,CAAA;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE;QACF,GAAG,EAAE,YAAY,CAAA;QACjB,GAAG,EAAE,YAAY,CAAA;KACpB,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,MAAM,uBAAuB,GAAG,aAAa,GAAG,gBAAgB,GAAG;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAA;IAKhE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAA;CACzF,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-octree/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;IAIlB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE;QACJ,GAAG,EAAE,YAAY,CAAC;QAClB,GAAG,EAAE,YAAY,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,uBAAuB,GAAG,aAAa,GACjD,gBAAgB,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAKjE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;CACxF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { classNames } from "@/utils";
3
+ import { classNames } from "./../../utils";
4
4
  import { paint } from "./painter";
5
5
  import styles from "./morpho-viewer-scalebar.module.css";
6
6
  export default function MorphoViewerScalebar({ className, spacePerPixelEvent, unit = 1e-6, }) {
@@ -0,0 +1,13 @@
1
+ .morphoViewerScalebar {
2
+ background: transparent;
3
+ z-index: 1;
4
+ }
5
+
6
+ .defaultLayout {
7
+ position: absolute;
8
+ left: 8px;
9
+ bottom: 8px;
10
+ width: calc(100% - 16px - 128px);
11
+ height: 1.4em;
12
+ pointer-events: none;
13
+ }
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { classNames } from "@/utils";
3
+ import { classNames } from "./../../../../utils";
4
4
  import { Icon3D } from "../../../icons/3d";
5
5
  import { IconDendrogramStraight } from "../../../icons/dendrogram-straight";
6
6
  import styles from "./ModeSelector.module.css";
@@ -0,0 +1,25 @@
1
+ div.modeSelector {
2
+ display: flex;
3
+ flex-wrap: nowrap;
4
+ flex-direction: row;
5
+ justify-content: flex-start;
6
+ align-items: stretch;
7
+ gap: 2px;
8
+
9
+ > button.button {
10
+ border-radius: 0;
11
+
12
+ &.selected {
13
+ background-color: #adf;
14
+ color: #000;
15
+ }
16
+
17
+ &:first-child {
18
+ border-radius: 8px 0 0 8px;
19
+ }
20
+
21
+ &:last-child {
22
+ border-radius: 0 8px 8px 0;
23
+ }
24
+ }
25
+ }
@@ -1,7 +1,7 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { IconClose } from "@/components/icons/close";
4
- import { classNames, useEventValue } from "@/utils";
3
+ import { IconClose } from "./../../../icons/close";
4
+ import { classNames, useEventValue } from "./../../../../utils";
5
5
  import { useRecordingsAndInjection } from "../../hooks";
6
6
  import { HintContent } from "../hint";
7
7
  import { useEscapeHandler } from "./hooks";
@@ -0,0 +1,115 @@
1
+ .addRecordingDialog {
2
+ position: absolute;
3
+ left: 0;
4
+ top: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ display: grid;
8
+ place-items: center;
9
+ background-color: #0001;
10
+ z-index: 10;
11
+ opacity: 0;
12
+ pointer-events: none;
13
+ transition: all 0.3s;
14
+
15
+ &.open {
16
+ opacity: 1;
17
+ pointer-events: all;
18
+ }
19
+
20
+ > div {
21
+ background-color: #3333;
22
+ backdrop-filter: blur(4px);
23
+ color: #fff;
24
+ padding: 1em;
25
+ border-radius: 0.5em;
26
+ border: 2px solid #fff4;
27
+ transition: all 0.3s;
28
+ margin: 4px;
29
+
30
+ &.top {
31
+ place-self: start center;
32
+ }
33
+
34
+ &.bottom {
35
+ place-self: end center;
36
+ }
37
+
38
+ > header {
39
+ width: 100%;
40
+ display: flex;
41
+ flex-wrap: nowrap;
42
+ flex-direction: row;
43
+ justify-content: space-between;
44
+ align-items: center;
45
+ gap: 1em;
46
+ margin-top: -0.5em;
47
+
48
+ > h2 {
49
+ font-size: 150%;
50
+ flex: 1 1 auto;
51
+ margin: 0;
52
+
53
+ > small {
54
+ font-weight: normal;
55
+ }
56
+ }
57
+
58
+ > button {
59
+ flex: 0 0 auto;
60
+ white-space: nowrap;
61
+ font: inherit;
62
+ font-weight: bold;
63
+ color: #7bf;
64
+ background: none;
65
+ border: none;
66
+ display: flex;
67
+ flex-wrap: nowrap;
68
+ flex-direction: row;
69
+ justify-content: flex-start;
70
+ align-items: center;
71
+ gap: 0.5em;
72
+
73
+ &:hover {
74
+ text-decoration: underline;
75
+ }
76
+ }
77
+ }
78
+
79
+ hr {
80
+ margin: 2em 0;
81
+ width: 100%;
82
+ height: 1px;
83
+ border: none;
84
+ background: linear-gradient(to right, transparent, currentColor, transparent);
85
+ }
86
+
87
+ .buttons {
88
+ display: grid;
89
+ grid-template-columns: 1fr 1fr;
90
+ gap: 1em;
91
+
92
+ > button {
93
+ font: inherit;
94
+ border: none;
95
+ font-weight: bolder;
96
+ text-align: center;
97
+ display: grid;
98
+ place-items: center;
99
+ height: 2.5em;
100
+ border-radius: 99vmax;
101
+ background-color: #05a;
102
+ border: 1px solid #fff7;
103
+ color: #fffe;
104
+ padding: 0 1em;
105
+ box-shadow: 0 0.125em 0.25em #000;
106
+ transition: all 0.3s;
107
+
108
+ &:hover,
109
+ &:active {
110
+ filter: brightness(120%);
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { classNames, useEventValue } from "@/utils";
2
+ import { classNames, useEventValue } from "./../../../../utils";
3
3
  import { MorphoViewerTreeItemType } from "../../types/public";
4
4
  import styles from "./hint.module.css";
5
5
  export function HintPanel({ className, painterManager }) {
@@ -0,0 +1,23 @@
1
+ div.hintPanel {
2
+ position: absolute;
3
+ left: 1em;
4
+ width: auto;
5
+ height: auto;
6
+ border-radius: 0.5em;
7
+ border: 1px solid #fff3;
8
+ background-color: #3333;
9
+ backdrop-filter: blur(6px);
10
+ pointer-events: none;
11
+ z-index: 2;
12
+ }
13
+
14
+ div.hintContent {
15
+ padding: 1em;
16
+ display: grid;
17
+ grid-template-columns: auto 1fr;
18
+ gap: 0.25em 1em;
19
+
20
+ > div:nth-child(2n) {
21
+ font-weight: bolder;
22
+ }
23
+ }
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { classNames } from "@/utils";
3
+ import { classNames } from "./../../../../utils";
4
4
  import { useRecordingsAndInjection } from "../../hooks";
5
5
  import { useLegendPainter } from "./legend-painter";
6
6
  import styles from "./legend-overlay.module.css";
@@ -0,0 +1,5 @@
1
+ .legendOverlay {
2
+ pointer-events: none;
3
+ z-index: 1;
4
+ background: transparent;
5
+ }
@@ -1,4 +1,4 @@
1
- import { SpikingManager } from "@/components/morpho-viewer-simul/painter/spiking-manager";
1
+ import { SpikingManager } from "../../../painter/spiking-manager";
2
2
  export interface CurrentTimeProps {
3
3
  spikingManager: SpikingManager;
4
4
  }
@@ -1,7 +1,7 @@
1
1
  import { jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import styles from "./current-time.module.css";
3
- import { useEventValue } from "@/utils";
4
- import { TIMELINE_HEIGHT, TIMELINE_MARGIN } from "@/components/morpho-viewer-simul/contants";
3
+ import { useEventValue } from "./../../../../../utils";
4
+ import { TIMELINE_HEIGHT, TIMELINE_MARGIN } from "./../../../contants";
5
5
  const [, RIGHT, BOTTOM, LEFT] = TIMELINE_MARGIN;
6
6
  export function CurrentTime({ spikingManager }) {
7
7
  const progress = useEventValue(spikingManager.progress, spikingManager.eventProgressChange);
@@ -0,0 +1,20 @@
1
+ .currentTime {
2
+ font-size: 90%;
3
+ display: inline-block;
4
+ position: absolute;
5
+ width: 6em;
6
+ text-align: center;
7
+ left: calc(
8
+ var(--custom-left) +
9
+ var(--custom-progress) *
10
+ (100% - var(--custom-left) - var(--custom-right))
11
+ );
12
+ bottom: calc(2 * var(--custom-bottom) + var(--custom-height));
13
+ color: #fff;
14
+ background-color: #000d;
15
+ border-radius: 99vmax;
16
+ padding: 0 0.5em;
17
+ z-index: 999;
18
+ transform: translateX(-3em);
19
+ border: 1px solid #fff3;
20
+ }
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { IconPause } from "@/components/icons/pause";
3
- import { IconPlay } from "@/components/icons/play";
4
- import { classNames } from "@/utils";
2
+ import { IconPause } from "./../../../../icons/pause";
3
+ import { IconPlay } from "./../../../../icons/play";
4
+ import { classNames } from "./../../../../../utils";
5
5
  import styles from "./play-button.module.css";
6
6
  export default function PlayButton({ spikingManager }) {
7
7
  const [playing, setPlaying] = spikingManager.usePlaying();
@@ -0,0 +1,21 @@
1
+ button.playButton {
2
+ position: absolute;
3
+ left: 0;
4
+ bottom: 0;
5
+ width: 48px;
6
+ height: 48px;
7
+ display: grid;
8
+ place-items: center;
9
+ font-size: 32px;
10
+ color: #fff;
11
+ border: none;
12
+ background: none;
13
+ margin: 0;
14
+ padding: 0;
15
+ cursor: pointer;
16
+
17
+ &:hover {
18
+ background: none;
19
+ color: #adf;
20
+ }
21
+ }
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { MorphoViewerSpikeRecord } from "@/components/morpho-viewer-simul/types/public";
2
+ import { MorphoViewerSpikeRecord } from "../../../types/public";
3
3
  import { SpikingManager } from "../../../painter/spiking-manager";
4
4
  export interface SimulComboProps {
5
5
  spikingManager: SpikingManager;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { classNames } from "@/utils";
3
+ import { classNames } from "./../../../../../utils";
4
4
  import styles from "./simul-combo.module.css";
5
5
  export default function SimulCombo({ spikingManager, spikes }) {
6
6
  const [dialogOpen, setDialogOpen] = React.useState(false);
@@ -0,0 +1,52 @@
1
+ .simulCombo {
2
+ position: absolute;
3
+ left: 48px;
4
+ bottom: calc(40px + 32px);
5
+ padding: 8px;
6
+ }
7
+
8
+ button.button {
9
+ font: inherit;
10
+ border: none;
11
+ background: none;
12
+ text-decoration: underline var(--custom-color) 0.25em;
13
+ font-weight: bold;
14
+ color: #fff;
15
+ text-underline-offset: 0.25em;
16
+ cursor: pointer;
17
+ }
18
+
19
+ div.dialog {
20
+ backdrop-filter: brightness(0.333);
21
+ position: absolute;
22
+ left: 0;
23
+ top: 0;
24
+ width: 100%;
25
+ height: 100%;
26
+ opacity: 0;
27
+ pointer-events: none;
28
+ transition: all 0.2s;
29
+ z-index: 9999;
30
+
31
+ &.open {
32
+ opacity: 1;
33
+ pointer-events: all;
34
+ }
35
+
36
+ > div {
37
+ display: flex;
38
+ flex-wrap: nowrap;
39
+ flex-direction: column;
40
+ justify-content: flex-start;
41
+ align-items: flex-start;
42
+ gap: 1em;
43
+ border: none;
44
+ background: #0005;
45
+ position: absolute;
46
+ top: auto;
47
+ left: 48px;
48
+ bottom: calc(40px + 32px);
49
+ padding: 8px;
50
+ margin: 0;
51
+ }
52
+ }
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import styles from "./speed-combo.module.css";
4
- import { classNames } from "@/utils";
4
+ import { classNames } from "./../../../../../utils";
5
5
  const SPEEDS = [1.0, 0.5, 0.25, 0.1, 0.05, 0.01];
6
6
  export function SpeedCombo({ spikingManager }) {
7
7
  const [speed, setSpeed] = React.useState(spikingManager.speed);