@openbraininstitute/morphoviewer 0.30.1 → 0.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +13 -8
  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 +2 -0
  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 +9 -1
  6. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +34 -5
  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 +267 -8
  9. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.d.ts +26 -0
  10. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.d.ts.map +1 -0
  11. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.js +105 -0
  12. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +3 -0
  13. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -1
  14. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +19 -4
  15. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts +6 -8
  16. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts.map +1 -1
  17. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.js +2 -1
  18. package/dist/components/morpho-viewer-small-circuit/types.d.ts +6 -2
  19. package/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
  20. package/dist/components/morpho-viewer-somas-only/manager/adaptative-resolution.d.ts +6 -2
  21. package/dist/components/morpho-viewer-somas-only/manager/adaptative-resolution.d.ts.map +1 -1
  22. package/dist/components/morpho-viewer-somas-only/manager/adaptative-resolution.js +63 -31
  23. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +30 -1
  24. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
  25. package/dist/components/morpho-viewer-somas-only/manager/manager.js +263 -13
  26. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts +5 -0
  27. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts.map +1 -1
  28. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +43 -6
  29. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.js +13 -8
  30. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.module.css +10 -0
  31. package/dist/components/morpho-viewer-somas-only/types.d.ts +6 -2
  32. package/dist/components/morpho-viewer-somas-only/types.d.ts.map +1 -1
  33. package/dist/components/types.d.ts +32 -0
  34. package/dist/components/types.d.ts.map +1 -1
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/package.json +2 -2
  38. package/dist/painters/overlay-interaction.d.ts +49 -0
  39. package/dist/painters/overlay-interaction.d.ts.map +1 -0
  40. package/dist/painters/overlay-interaction.js +432 -0
  41. package/dist/painters/overlay-surface.d.ts +18 -0
  42. package/dist/painters/overlay-surface.d.ts.map +1 -0
  43. package/dist/painters/overlay-surface.js +83 -0
  44. package/dist/painters/world-overlays.d.ts +25 -0
  45. package/dist/painters/world-overlays.d.ts.map +1 -0
  46. package/dist/painters/world-overlays.js +185 -0
  47. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { tgdFullscreenToggle } from "@tolokoban/tgd";
3
3
  import React from "react";
4
4
  import { version } from "./../../package.json";
@@ -37,14 +37,19 @@ export function MorphoViewerSomasOnly(props) {
37
37
  return (_jsxs("div", { ref: ref, className: classNames(props.className, styles.morphoViewerSomasOnly), "data-version": version, 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, unit: props.scalebar }))] }));
38
38
  }
39
39
  const Canvas = React.memo(({ painterManager }) => {
40
- return (_jsx("canvas", { className: styles.webgl, ref: (canvas) => {
41
- painterManager.canvas = canvas;
42
- return () => {
43
- painterManager.canvas = null;
44
- };
45
- } }, "canvas"));
40
+ return (_jsxs(_Fragment, { children: [_jsx("canvas", { className: styles.webgl, ref: (canvas) => {
41
+ painterManager.canvas = canvas;
42
+ return () => {
43
+ painterManager.canvas = null;
44
+ };
45
+ } }, "canvas"), _jsx("canvas", { className: styles.webglOverlays, ref: (canvas) => {
46
+ painterManager.overlayCanvas = canvas;
47
+ return () => {
48
+ painterManager.overlayCanvas = null;
49
+ };
50
+ } }, "overlays")] }));
46
51
  });
47
52
  function getDefaultControls(props) {
48
53
  return ["reset-camera", ["fullscreen", props.onClose && "close", props.onMinimize && "minimize"]];
49
54
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zb21hcy1vbmx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zb21hcy1vbmx5L21vcnBoby12aWV3ZXItc29tYXMtb25seS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxPQUFPLEVBQXNCLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sb0JBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUF1QixVQUFVLElBQUksaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJakYsT0FBTyxNQUFNLE1BQU0sdUNBQXVDLENBQUM7QUFFM0QsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQWlDOztJQUNyRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUF3QixJQUFJLENBQUMsQ0FBQztJQUN0RCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsRUFBRTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUVqQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQXFCLEVBQVEsRUFBRTs7UUFDckQsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssWUFBWTtnQkFDZixzQkFBc0IsRUFBRSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxjQUFjO2dCQUNqQixjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsTUFBQSxLQUFLLENBQUMsT0FBTyxxREFBSSxDQUFDO2dCQUNsQixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLE1BQUEsS0FBSyxDQUFDLFVBQVUscURBQUksQ0FBQztnQkFDckIsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPLENBQ0wsZUFDRSxHQUFHLEVBQUUsR0FBRyxFQUNSLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMscUJBQXFCLENBQUMsa0JBQ3RELE9BQU8sYUFFckIsS0FBQyxNQUFNLElBQUMsY0FBYyxFQUFFLGNBQWMsR0FBSSxFQUMxQyxLQUFDLGNBQWMsSUFDYixPQUFPLEVBQUUsTUFBQSxLQUFLLENBQUMsUUFBUSxtQ0FBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFDcEQsT0FBTyxFQUFFLGNBQWMsR0FDdkIsRUFDRCxLQUFLLENBQUMsUUFBUSxJQUFJLENBQ2pCLEtBQUMsb0JBQW9CLElBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUN6QixrQkFBa0IsRUFBRSxjQUFjLENBQUMsYUFBYSxFQUNoRCxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsR0FDcEIsQ0FDSCxJQUNHLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQXNDLEVBQUUsRUFBRTtJQUNuRixPQUFPLENBQ0wsaUJBRUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQ3ZCLEdBQUcsRUFBRSxDQUFDLE1BQWdDLEVBQUUsRUFBRTtZQUN4QyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUMvQixPQUFPLEdBQUcsRUFBRTtnQkFDVixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUMvQixDQUFDLENBQUM7UUFDSixDQUFDLElBUEcsUUFBUSxDQVFaLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxrQkFBa0IsQ0FBQyxLQUFpQztJQUMzRCxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDIn0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zb21hcy1vbmx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zb21hcy1vbmx5L21vcnBoby12aWV3ZXItc29tYXMtb25seS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxPQUFPLEVBQXNCLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sb0JBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUF1QixVQUFVLElBQUksaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJakYsT0FBTyxNQUFNLE1BQU0sdUNBQXVDLENBQUM7QUFFM0QsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQWlDOztJQUNyRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUF3QixJQUFJLENBQUMsQ0FBQztJQUN0RCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsRUFBRTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUVqQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQXFCLEVBQVEsRUFBRTs7UUFDckQsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssWUFBWTtnQkFDZixzQkFBc0IsRUFBRSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxjQUFjO2dCQUNqQixjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsTUFBQSxLQUFLLENBQUMsT0FBTyxxREFBSSxDQUFDO2dCQUNsQixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLE1BQUEsS0FBSyxDQUFDLFVBQVUscURBQUksQ0FBQztnQkFDckIsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPLENBQ0wsZUFDRSxHQUFHLEVBQUUsR0FBRyxFQUNSLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMscUJBQXFCLENBQUMsa0JBQ3RELE9BQU8sYUFFckIsS0FBQyxNQUFNLElBQUMsY0FBYyxFQUFFLGNBQWMsR0FBSSxFQUMxQyxLQUFDLGNBQWMsSUFDYixPQUFPLEVBQUUsTUFBQSxLQUFLLENBQUMsUUFBUSxtQ0FBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFDcEQsT0FBTyxFQUFFLGNBQWMsR0FDdkIsRUFDRCxLQUFLLENBQUMsUUFBUSxJQUFJLENBQ2pCLEtBQUMsb0JBQW9CLElBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUN6QixrQkFBa0IsRUFBRSxjQUFjLENBQUMsYUFBYSxFQUNoRCxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsR0FDcEIsQ0FDSCxJQUNHLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQXNDLEVBQUUsRUFBRTtJQUNuRixPQUFPLENBQ0wsOEJBQ0UsaUJBRUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQ3ZCLEdBQUcsRUFBRSxDQUFDLE1BQWdDLEVBQUUsRUFBRTtvQkFDeEMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7b0JBQy9CLE9BQU8sR0FBRyxFQUFFO3dCQUNWLGNBQWMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUMvQixDQUFDLENBQUM7Z0JBQ0osQ0FBQyxJQVBHLFFBQVEsQ0FRWixFQUNGLGlCQUVFLFNBQVMsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUMvQixHQUFHLEVBQUUsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7b0JBQ3hDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO29CQUN0QyxPQUFPLEdBQUcsRUFBRTt3QkFDVixjQUFjLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDdEMsQ0FBQyxDQUFDO2dCQUNKLENBQUMsSUFQRyxVQUFVLENBUWQsSUFDRCxDQUNKLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILFNBQVMsa0JBQWtCLENBQUMsS0FBaUM7SUFDM0QsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDcEcsQ0FBQyJ9
@@ -12,4 +12,14 @@
12
12
  width: 100%;
13
13
  height: 100%;
14
14
  }
15
+
16
+ >.webglOverlays {
17
+ position: absolute;
18
+ left: 0;
19
+ top: 0;
20
+ width: 100%;
21
+ height: 100%;
22
+ pointer-events: none;
23
+ z-index: 1;
24
+ }
15
25
  }
@@ -1,18 +1,22 @@
1
1
  import type { ArrayNumber3 } from "@tolokoban/tgd";
2
2
  import type { ControlsLayoutProps } from "../controls-layout";
3
3
  import type { MorphoViewerSignals } from "../signals";
4
- import type { PropsForGizmo, PropsForScalebar } from "../types";
4
+ import type { MorphoViewerWorldOverlay, PropsForGizmo, PropsForOverlayInteraction, PropsForScalebar } from "../types";
5
5
  export interface MorphoViewerCellInfo {
6
6
  morphologyId: string;
7
7
  position: ArrayNumber3;
8
8
  color?: string;
9
9
  }
10
- export type MorphoViewerSomasOnlyProps = PropsForGizmo & PropsForScalebar & {
10
+ export type MorphoViewerSomasOnlyProps = PropsForGizmo & PropsForScalebar & PropsForOverlayInteraction & {
11
11
  className?: string;
12
12
  somaRadius?: number;
13
13
  cellInfos: MorphoViewerCellInfo[];
14
14
  cameraType?: "orthographic" | "perspective";
15
15
  backgroundColor?: string;
16
+ overlays?: MorphoViewerWorldOverlay[];
17
+ overlaysRadius?: number;
18
+ overlaysMinRadiusInPixels?: number;
19
+ neuronOpacity?: number;
16
20
  signals?: MorphoViewerSignals;
17
21
  onClose?(): void;
18
22
  onMinimize?(): void;
@@ -1 +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,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IAevB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,0BAA0B,GAAG,aAAa,GACpD,gBAAgB,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC;IAK5C,eAAe,CAAC,EAAE,MAAM,CAAC;IAQzB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC"}
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,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EACV,wBAAwB,EACxB,aAAa,EACb,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IAevB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,0BAA0B,GAAG,aAAa,GACpD,gBAAgB,GAChB,0BAA0B,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC;IAK5C,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAEtC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAOnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAQvB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC"}
@@ -61,4 +61,36 @@ export interface PropsForGizmo {
61
61
  export interface PropsForScalebar {
62
62
  scalebar?: boolean | string | ScalebarConfig;
63
63
  }
64
+ export interface MorphoViewerWorldOverlay {
65
+ color: string;
66
+ coordinates: Float32Array | number[];
67
+ id?: string;
68
+ kind?: "electrodes" | "origin" | string;
69
+ interactive?: boolean;
70
+ origin?: [number, number, number];
71
+ rotation?: {
72
+ x?: number;
73
+ y?: number;
74
+ z?: number;
75
+ };
76
+ }
77
+ export interface MorphoViewerOverlayTransformEvent {
78
+ id: string;
79
+ origin: {
80
+ x: number;
81
+ y: number;
82
+ z: number;
83
+ };
84
+ rotation: {
85
+ x: number;
86
+ y: number;
87
+ z: number;
88
+ };
89
+ phase: "end";
90
+ }
91
+ export interface PropsForOverlayInteraction {
92
+ overlaysInteractive?: boolean;
93
+ onOverlayTransform?: (event: MorphoViewerOverlayTransformEvent) => void;
94
+ highlightedOverlayId?: string | null;
95
+ }
64
96
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAG7E,eAAO,MAAM,iBAAiB;;;;;;;;;CASpB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAG5F,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAGlG,eAAO,MAAM,YAAY;;;CAGf,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IAEjC,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IAEnC,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAE7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAEnC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAE/B,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAE1B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAE9B,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAE5B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAW5B,KAAK,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAW/B,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;CAC9C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,6 @@ export { useEventState, useEventValue } from "./utils";
17
17
  export type { CanvasOptions } from "./abstract-canvas";
18
18
  export type { ColorsInterface } from "./colors";
19
19
  export type { MorphoViewerSignalSnapshotOptions as MorphoViewerSnapshotOptions } from "./components/signals";
20
- export type { PropsForGizmo, PropsForScalebar, ScalebarConfig, ScalebarLabelsConfig, ScalebarOrientation, ScalebarPinsConfig, ScalebarPlacement, ScalebarSide, ScalebarWhen, } from "./components/types";
20
+ export type { MorphoViewerOverlayTransformEvent, MorphoViewerWorldOverlay, PropsForGizmo, PropsForScalebar, ScalebarConfig, ScalebarLabelsConfig, ScalebarOrientation, ScalebarPinsConfig, ScalebarPlacement, ScalebarSide, ScalebarWhen, } from "./components/types";
21
21
  export type { ColoringType } from "./types";
22
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,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,iCAAiC,IAAI,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC7G,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
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,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,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,iCAAiC,IAAI,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC7G,YAAY,EACV,iCAAiC,EACjC,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openbraininstitute/morphoviewer",
3
- "version": "0.30.1",
3
+ "version": "0.31.1",
4
4
  "description": "Class to display SWC files in 3D on a canvas",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -42,7 +42,7 @@
42
42
  "url": "https://github.com/openbraininstitute/morphoviewer/issues"
43
43
  },
44
44
  "dependencies": {
45
- "@tolokoban/tgd": "^2.0.147",
45
+ "@tolokoban/tgd": "2.4.0",
46
46
  "fflate": "^0.8.3",
47
47
  "tslib": "^2.8.1"
48
48
  },
@@ -0,0 +1,49 @@
1
+ import { type TgdContext } from "@tolokoban/tgd";
2
+ import type { MorphoViewerOverlayTransformEvent, MorphoViewerWorldOverlay } from "../components/types";
3
+ type OrbitGate = {
4
+ enabled: boolean;
5
+ };
6
+ type OverlayInteractionOptions = {
7
+ context: TgdContext;
8
+ getOverlays: () => MorphoViewerWorldOverlay[];
9
+ setOverlays: (overlays: MorphoViewerWorldOverlay[]) => void;
10
+ syncOverlayPositions: () => void;
11
+ getHitRadiusPixels: () => number;
12
+ getOrbit: () => OrbitGate | null;
13
+ setHighlightedId: (id: string | null) => void;
14
+ onTransform?: (event: MorphoViewerOverlayTransformEvent) => void;
15
+ onDragStart?: () => void;
16
+ onDragEnd?: (id: string) => void;
17
+ };
18
+ export declare class OverlayInteractionController {
19
+ private readonly options;
20
+ private drag;
21
+ private hoverId;
22
+ private attached;
23
+ private onTransform?;
24
+ private modifierRotate;
25
+ private syncRaf;
26
+ constructor(options: OverlayInteractionOptions);
27
+ get isDragging(): boolean;
28
+ setOnTransform(onTransform?: (event: MorphoViewerOverlayTransformEvent) => void): void;
29
+ attach(): void;
30
+ detach(): void;
31
+ private readonly preventContextMenu;
32
+ private readonly handleKeyChange;
33
+ private readonly handleHover;
34
+ private readonly handleMoveStart;
35
+ private readonly handleMove;
36
+ private readonly handleMoveEnd;
37
+ private applyTranslate;
38
+ private applyRotate;
39
+ private scheduleSync;
40
+ private flushSync;
41
+ private cancelScheduledSync;
42
+ private emit;
43
+ private finishDrag;
44
+ private setHover;
45
+ private setCursor;
46
+ private pickOverlay;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=overlay-interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-interaction.d.ts","sourceRoot":"","sources":["../../src/painters/overlay-interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAGhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,iCAAiC,EACjC,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,KAAK,SAAS,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAQtC,KAAK,yBAAyB,GAAG;IAC/B,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,EAAE,MAAM,wBAAwB,EAAE,CAAC;IAK9C,WAAW,EAAE,CAAC,QAAQ,EAAE,wBAAwB,EAAE,KAAK,IAAI,CAAC;IAE5D,oBAAoB,EAAE,MAAM,IAAI,CAAC;IAEjC,kBAAkB,EAAE,MAAM,MAAM,CAAC;IAEjC,QAAQ,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,iCAAiC,KAAK,IAAI,CAAC;IAEjE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAsDF,qBAAa,4BAA4B;IAQ3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC,CAAqD;IACzE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAK;gBAES,OAAO,EAAE,yBAAyB;IAK/D,IAAI,UAAU,IAAI,OAAO,CAExB;IAMD,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,iCAAiC,KAAK,IAAI;IAQ/E,MAAM;IAiBN,MAAM;IAmBN,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAEjC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAO9B;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAO1B;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CA4E9B;IAEF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAYzB;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAM5B;IAMF,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,WAAW;CAyCpB"}