@openbraininstitute/morphoviewer 0.31.1 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/components/morpho-viewer-simul/painter/manager.d.ts.map +1 -1
  2. package/dist/components/morpho-viewer-simul/painter/manager.js +2 -2
  3. package/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -1
  4. package/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.js +2 -2
  5. package/dist/components/morpho-viewer-simul/types/public.d.ts +2 -1
  6. package/dist/components/morpho-viewer-simul/types/public.d.ts.map +1 -1
  7. package/dist/components/morpho-viewer-small-circuit/index.d.ts +1 -0
  8. package/dist/components/morpho-viewer-small-circuit/index.d.ts.map +1 -1
  9. package/dist/components/morpho-viewer-small-circuit/index.js +2 -1
  10. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +30 -2
  11. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
  12. package/dist/components/morpho-viewer-small-circuit/painter/manager.js +341 -5
  13. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.d.ts +1 -0
  14. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.d.ts.map +1 -1
  15. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.js +2 -1
  16. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts +2 -0
  17. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -1
  18. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +19 -5
  19. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/segment-offscreen-painter.d.ts +24 -0
  20. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/segment-offscreen-painter.d.ts.map +1 -0
  21. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/segment-offscreen-painter.js +86 -0
  22. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/section-index.d.ts +19 -0
  23. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/section-index.d.ts.map +1 -0
  24. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/section-index.js +69 -0
  25. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts +2 -0
  26. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts.map +1 -1
  27. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.js +65 -18
  28. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +4 -1
  29. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -1
  30. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +19 -2
  31. package/dist/components/morpho-viewer-small-circuit/painter/painter-location-markers/index.d.ts +2 -0
  32. package/dist/components/morpho-viewer-small-circuit/painter/painter-location-markers/index.d.ts.map +1 -0
  33. package/dist/components/morpho-viewer-small-circuit/painter/painter-location-markers/index.js +2 -0
  34. package/dist/components/morpho-viewer-small-circuit/painter/painter-location-markers/painter-location-markers.d.ts +27 -0
  35. package/dist/components/morpho-viewer-small-circuit/painter/painter-location-markers/painter-location-markers.d.ts.map +1 -0
  36. package/dist/components/morpho-viewer-small-circuit/painter/painter-location-markers/painter-location-markers.js +83 -0
  37. package/dist/components/morpho-viewer-small-circuit/types.d.ts +40 -1
  38. package/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
  39. package/dist/morphology-picking/index.d.ts +6 -0
  40. package/dist/morphology-picking/index.d.ts.map +1 -0
  41. package/dist/morphology-picking/index.js +5 -0
  42. package/dist/morphology-picking/material-index.d.ts.map +1 -0
  43. package/dist/morphology-picking/material-index.js +14 -0
  44. package/dist/morphology-picking/material-segment-index.d.ts +5 -0
  45. package/dist/morphology-picking/material-segment-index.d.ts.map +1 -0
  46. package/dist/morphology-picking/material-segment-index.js +14 -0
  47. package/dist/morphology-picking/section-offset.d.ts +4 -0
  48. package/dist/morphology-picking/section-offset.d.ts.map +1 -0
  49. package/dist/morphology-picking/section-offset.js +33 -0
  50. package/dist/morphology-picking/segment-index-codec.d.ts +4 -0
  51. package/dist/morphology-picking/segment-index-codec.d.ts.map +1 -0
  52. package/dist/morphology-picking/segment-index-codec.js +22 -0
  53. package/dist/morphology-picking/types.d.ts +12 -0
  54. package/dist/morphology-picking/types.d.ts.map +1 -0
  55. package/dist/morphology-picking/types.js +2 -0
  56. package/dist/package.json +1 -1
  57. package/package.json +1 -1
  58. package/dist/components/morpho-viewer-simul/painter/math.d.ts +0 -4
  59. package/dist/components/morpho-viewer-simul/painter/math.d.ts.map +0 -1
  60. package/dist/components/morpho-viewer-simul/painter/math.js +0 -33
  61. package/dist/components/morpho-viewer-simul/painter/offscreen-painter/material-index.d.ts.map +0 -1
  62. package/dist/components/morpho-viewer-simul/painter/offscreen-painter/material-index.js +0 -14
  63. /package/dist/{components/morpho-viewer-simul/painter/offscreen-painter → morphology-picking}/material-index.d.ts +0 -0
@@ -1,9 +1,13 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { TgdBoundingBox, TgdColor, TgdGeometrySphereIco, TgdLight, TgdMaterialFlat, TgdMaterialFlatTexture, TgdPainterGroup, TgdPainterMesh, TgdQuat, TgdTexture2D, TgdVec4, tgdCanvasCreatePalette, } from "@tolokoban/tgd";
3
3
  import { MorphoViewerTreeItemType } from "./../../../morpho-viewer-simul";
4
+ import { MaterialSegmentIndex } from "./../../../../morphology-picking";
4
5
  import { int16ToVec3 } from "./../../../../utils";
5
6
  import { createCellFromTree } from "./factory/tree";
6
7
  import { MaterialDiffuseAlpha } from "./material-diffuse-alpha";
8
+ function isSelectionMaterial(material) {
9
+ return typeof material === "number" || material === "segment";
10
+ }
7
11
  export class PainterCell extends TgdPainterGroup {
8
12
  constructor(context, options) {
9
13
  var _a, _b, _c;
@@ -15,6 +19,7 @@ export class PainterCell extends TgdPainterGroup {
15
19
  this._black = false;
16
20
  this._isDeleted = false;
17
21
  this._bbox = new TgdBoundingBox();
22
+ this._sections = null;
18
23
  const { cell } = options;
19
24
  const [x, y, z] = options.cell.center;
20
25
  this.bbox.addSphere(x, y, z, cell.somaRadius * 5);
@@ -36,6 +41,9 @@ export class PainterCell extends TgdPainterGroup {
36
41
  case "flat":
37
42
  this.material = new TgdMaterialFlatTexture({ texture });
38
43
  break;
44
+ case "segment":
45
+ this.material = new MaterialSegmentIndex();
46
+ break;
39
47
  default:
40
48
  this.material = new TgdMaterialFlat({
41
49
  color: [...int16ToVec3(materialType), 1],
@@ -58,6 +66,9 @@ export class PainterCell extends TgdPainterGroup {
58
66
  get bbox() {
59
67
  return this._bbox;
60
68
  }
69
+ get sections() {
70
+ return this._sections;
71
+ }
61
72
  get isDeleted() {
62
73
  return this._isDeleted || this.context.isDeleted;
63
74
  }
@@ -98,13 +109,17 @@ export class PainterCell extends TgdPainterGroup {
98
109
  }
99
110
  loadCell() {
100
111
  return __awaiter(this, void 0, void 0, function* () {
112
+ var _a;
101
113
  const { context, material } = this;
102
114
  const { cell, loadCell, onCellLoaded } = this.options;
103
115
  try {
104
116
  const [path] = cell.id.split("?");
105
117
  const data = yield loadCell(path);
118
+ if (this.isDeleted)
119
+ return;
106
120
  if (isCellAsTree(data)) {
107
- const { node, bbox } = createCellFromTree(context, material, data.data, typeof this.options.matrerial === "number");
121
+ const { node, bbox, sections } = createCellFromTree(context, material, data.data, isSelectionMaterial((_a = this.options.matrerial) !== null && _a !== void 0 ? _a : "full"));
122
+ this._sections = sections;
108
123
  const [x, y, z] = cell.center;
109
124
  const quat = new TgdQuat(cell.orientation);
110
125
  node.transfo.setPosition(x, y, z);
@@ -123,6 +138,8 @@ export class PainterCell extends TgdPainterGroup {
123
138
  }
124
139
  }
125
140
  catch (error) {
141
+ if (this.isDeleted || this.context.isDeleted)
142
+ return;
126
143
  console.error(`Error loading cell "${cell.id}":`, error);
127
144
  onCellLoaded === null || onCellLoaded === void 0 ? void 0 : onCellLoaded(null);
128
145
  }
@@ -240,4 +257,4 @@ function computeSomaCenter(data, transfo) {
240
257
  }
241
258
  return center;
242
259
  }
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1jZWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvcGFpbnRlci1jZWxsL3BhaW50ZXItY2VsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxRQUFRLEVBRVIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFFUixlQUFlLEVBQ2Ysc0JBQXNCLEVBR3RCLGVBQWUsRUFDZixjQUFjLEVBQ2QsT0FBTyxFQUNQLFlBQVksRUFFWixPQUFPLEVBQ1Asc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUF5Qix3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUF3QmhFLE1BQU0sT0FBTyxXQUFZLFNBQVEsZUFBZTtJQVU5QyxZQUNrQixPQUFtQixFQUNoQixPQUEyQjs7UUFFOUMsS0FBSyxDQUFDO1lBQ0osSUFBSSxFQUNGLE1BQUEsT0FBTyxDQUFDLElBQUksbUNBQ1osaUJBQWlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRztTQUN0SixDQUFDLENBQUM7UUFQYSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBUnhDLFdBQU0sR0FBRyxLQUFL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
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1jZWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvcGFpbnRlci1jZWxsL3BhaW50ZXItY2VsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxRQUFRLEVBRVIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFFUixlQUFlLEVBQ2Ysc0JBQXNCLEVBR3RCLGVBQWUsRUFDZixjQUFjLEVBQ2QsT0FBTyxFQUNQLFlBQVksRUFFWixPQUFPLEVBQ1Asc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUF5Qix3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUE4QmhFLFNBQVMsbUJBQW1CLENBQUMsUUFBaUM7SUFDNUQsT0FBTyxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBVzlDLFlBQ2tCLE9BQW1CLEVBQ2hCLE9BQTJCOztRQUU5QyxLQUFLLENBQUM7WUFDSixJQUFJLEVBQ0YsTUFBQSxPQUFPLENBQUMsSUFBSSxtQ0FDWixpQkFBaUIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLE9BQU8sT0FBTyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FB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
@@ -0,0 +1,2 @@
1
+ export * from "./painter-location-markers";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/painter-location-markers/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./painter-location-markers";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNtYWxsLWNpcmN1aXQvcGFpbnRlci9wYWludGVyLWxvY2F0aW9uLW1hcmtlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQyJ9
@@ -0,0 +1,27 @@
1
+ import { type TgdContext, TgdPainterGroup } from "@tolokoban/tgd";
2
+ export interface LocationMarker {
3
+ x: number;
4
+ y: number;
5
+ z: number;
6
+ }
7
+ export declare class PainterLocationMarkers extends TgdPainterGroup {
8
+ readonly context: TgdContext;
9
+ private readonly texture;
10
+ private painter;
11
+ private _markers;
12
+ private _color;
13
+ private _radius;
14
+ private _minRadiusInPixels;
15
+ constructor(context: TgdContext);
16
+ get markers(): LocationMarker[];
17
+ set markers(markers: LocationMarker[]);
18
+ get color(): string;
19
+ set color(color: string);
20
+ get radius(): number;
21
+ set radius(radius: number);
22
+ get minRadiusInPixels(): number;
23
+ set minRadiusInPixels(minRadiusInPixels: number);
24
+ private rebuild;
25
+ delete(): void;
26
+ }
27
+ //# sourceMappingURL=painter-location-markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"painter-location-markers.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/painter-location-markers/painter-location-markers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,eAAe,EAIhB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AASD,qBAAa,sBAAuB,SAAQ,eAAe;aAQ7B,OAAO,EAAE,UAAU;IAP/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,kBAAkB,CAAK;gBAEH,OAAO,EAAE,UAAU;IAO/C,IAAI,OAAO,IAAI,cAAc,EAAE,CAE9B;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,EAGpC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAKtB;IAGD,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAMxB;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IACD,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,EAM9C;IAED,OAAO,CAAC,OAAO;IA2Bf,MAAM,IAAI,IAAI;CAIf"}
@@ -0,0 +1,83 @@
1
+ import { TgdPainterGroup, TgdPainterPointsCloud, TgdTexture2D, tgdCanvasCreateFill, } from "@tolokoban/tgd";
2
+ export class PainterLocationMarkers extends TgdPainterGroup {
3
+ constructor(context) {
4
+ super({ name: "PainterLocationMarkers" });
5
+ this.context = context;
6
+ this.painter = null;
7
+ this._markers = [];
8
+ this._color = "#ef9f27";
9
+ this._radius = 3;
10
+ this._minRadiusInPixels = 6;
11
+ this.texture = new TgdTexture2D(context, {
12
+ params: { magFilter: "NEAREST", minFilter: "NEAREST" },
13
+ });
14
+ }
15
+ get markers() {
16
+ return this._markers;
17
+ }
18
+ set markers(markers) {
19
+ this._markers = markers;
20
+ this.rebuild();
21
+ }
22
+ get color() {
23
+ return this._color;
24
+ }
25
+ set color(color) {
26
+ if (this._color === color)
27
+ return;
28
+ this._color = color;
29
+ this.rebuild();
30
+ }
31
+ get radius() {
32
+ return this._radius;
33
+ }
34
+ set radius(radius) {
35
+ if (this._radius === radius)
36
+ return;
37
+ this._radius = radius;
38
+ if (this.painter)
39
+ this.painter.radiusMultiplier = radius;
40
+ this.context.paint();
41
+ }
42
+ get minRadiusInPixels() {
43
+ return this._minRadiusInPixels;
44
+ }
45
+ set minRadiusInPixels(minRadiusInPixels) {
46
+ if (this._minRadiusInPixels === minRadiusInPixels)
47
+ return;
48
+ this._minRadiusInPixels = minRadiusInPixels;
49
+ if (this.painter)
50
+ this.painter.minSizeInPixels = minRadiusInPixels;
51
+ this.context.paint();
52
+ }
53
+ rebuild() {
54
+ this.removeAll();
55
+ this.painter = null;
56
+ const { _markers: markers } = this;
57
+ if (markers.length > 0) {
58
+ this.texture.loadBitmap(tgdCanvasCreateFill(1, 1, this._color));
59
+ const attXYZR = [];
60
+ const attUV = [];
61
+ for (const { x, y, z } of markers) {
62
+ attXYZR.push(x, y, z, 1);
63
+ attUV.push(0.5, 0.5);
64
+ }
65
+ const painter = new TgdPainterPointsCloud(this.context, {
66
+ dataPoint: new Float32Array(attXYZR),
67
+ dataUV: new Float32Array(attUV),
68
+ texture: this.texture,
69
+ radiusMultiplier: this._radius,
70
+ minSizeInPixels: this._minRadiusInPixels,
71
+ fragCode: TgdPainterPointsCloud.fragCodeSphere({ depthPrecision: "none" }),
72
+ });
73
+ this.painter = painter;
74
+ this.add(painter);
75
+ }
76
+ this.context.paint();
77
+ }
78
+ delete() {
79
+ super.delete();
80
+ this.texture.delete();
81
+ }
82
+ }
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1sb2NhdGlvbi1tYXJrZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvcGFpbnRlci1sb2NhdGlvbi1tYXJrZXJzL3BhaW50ZXItbG9jYXRpb24tbWFya2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFnQnhCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxlQUFlO0lBUXpELFlBQTRCLE9BQW1CO1FBQzdDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7UUFEaEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQU52QyxZQUFPLEdBQWlDLElBQUksQ0FBQztRQUM3QyxhQUFRLEdBQXFCLEVBQUUsQ0FBQztRQUNoQyxXQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ25CLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWix1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFJN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDdkMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFO1NBQ3ZELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLE9BQXlCO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFB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
@@ -1,5 +1,5 @@
1
1
  import type { ControlsLayoutProps } from "../controls-layout";
2
- import type { MorphoViewerTree } from "../morpho-viewer-simul";
2
+ import type { MorphoViewerTree, MorphoViewerTreeItemType } from "../morpho-viewer-simul";
3
3
  import type { MorphoViewerSignals } from "../signals";
4
4
  import type { MorphoViewerWorldOverlay, PropsForGizmo, PropsForOverlayInteraction, PropsForScalebar } from "../types";
5
5
  export interface SectionColors {
@@ -17,6 +17,44 @@ export interface MorphoViewerSmallCircuitCell {
17
17
  somaRadius: number;
18
18
  color?: string | SectionColors;
19
19
  }
20
+ export interface MorphoViewerMorphologyLocationPick {
21
+ cell: MorphoViewerSmallCircuitCell;
22
+ sectionName: string;
23
+ sonataSectionId?: number;
24
+ sectionType?: MorphoViewerTreeItemType;
25
+ offset: number;
26
+ existingMarker?: MorphoViewerMorphologyLocationMarker;
27
+ }
28
+ export interface MorphoViewerMorphologyLocationMarker {
29
+ cellId: string;
30
+ sectionName: string;
31
+ offset: number;
32
+ sonataSectionId?: number;
33
+ sectionType?: MorphoViewerTreeItemType;
34
+ }
35
+ export interface MorphoViewerMorphologyLocationHover extends MorphoViewerMorphologyLocationMarker {
36
+ kind: "selected" | "preview";
37
+ screen: {
38
+ x: number;
39
+ y: number;
40
+ };
41
+ }
42
+ export interface MorphoViewerMorphologyLocationLabel {
43
+ marker: MorphoViewerMorphologyLocationMarker;
44
+ screen: {
45
+ x: number;
46
+ y: number;
47
+ };
48
+ visible: boolean;
49
+ }
50
+ export interface MorphoViewerMorphologyLocationSelection {
51
+ selected: MorphoViewerMorphologyLocationMarker[];
52
+ onPick(this: void, pick: MorphoViewerMorphologyLocationPick): void;
53
+ onHover?(this: void, hover: MorphoViewerMorphologyLocationHover | null): void;
54
+ onLabelsChange?(this: void, labels: MorphoViewerMorphologyLocationLabel[]): void;
55
+ color?: string;
56
+ radius?: number;
57
+ }
20
58
  export type MorphoViewerSmallCircuitCellData = {
21
59
  type: "tree";
22
60
  data: MorphoViewerTree;
@@ -38,6 +76,7 @@ export type MorphoViewerSmallCircuitProps = PropsForGizmo & PropsForScalebar & P
38
76
  highlightedCellIds?: string[];
39
77
  onCellHover?(cell: MorphoViewerSmallCircuitCell | undefined): void;
40
78
  onCellClick?(cell: MorphoViewerSmallCircuitCell | undefined): void;
79
+ locationSelection?: MorphoViewerMorphologyLocationSelection;
41
80
  onClose?(): void;
42
81
  onMinimize?(): void;
43
82
  loadCell(id: string): Promise<MorphoViewerSmallCircuitCellData | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-small-circuit/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,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,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CAChC;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,aAAa,GACvD,gBAAgB,GAChB,0BAA0B,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,4BAA4B,EAAE,CAAC;IAMxC,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAEtC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAKnC,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,YAAY,GAAG,MAAM,EAAE,CAAC;KACtC,CAAC,CAAC;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAOnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAIvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,CAAC,IAAI,EAAE,4BAA4B,GAAG,SAAS,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,CAAC,IAAI,EAAE,4BAA4B,GAAG,SAAS,GAAG,IAAI,CAAC;IACnE,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,UAAU,CAAC,IAAI,IAAI,CAAC;IAKpB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC;IAOvE,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAM1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAQlB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-small-circuit/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { MaterialIndex } from "./material-index";
2
+ export { MaterialSegmentIndex } from "./material-segment-index";
3
+ export { computeSectionOffset } from "./section-offset";
4
+ export { decodeSegmentIndex, encodeSegmentIndex, spiralPixelOffsets, } from "./segment-index-codec";
5
+ export type { PickableSegment, SectionSegmentIndex } from "./types";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/morphology-picking/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { MaterialIndex } from "./material-index";
2
+ export { MaterialSegmentIndex } from "./material-segment-index";
3
+ export { computeSectionOffset } from "./section-offset";
4
+ export { decodeSegmentIndex, encodeSegmentIndex, spiralPixelOffsets, } from "./segment-index-codec";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ycGhvbG9neS1waWNraW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixrQkFBa0IsR0FDbkIsTUFBTSx1QkFBdUIsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-index.d.ts","sourceRoot":"","sources":["../../src/morphology-picking/material-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiC,MAAM,gBAAgB,CAAC;AAE5E,qBAAa,aAAc,SAAQ,WAAW;;CAa7C"}
@@ -0,0 +1,14 @@
1
+ import { TgdMaterial, tgdCodeFunction_float01ToVec3 } from "@tolokoban/tgd";
2
+ export class MaterialIndex extends TgdMaterial {
3
+ constructor() {
4
+ super({
5
+ varyings: {
6
+ varColor: "vec3",
7
+ },
8
+ extraVertexShaderFunctions: Object.assign({}, tgdCodeFunction_float01ToVec3()),
9
+ vertexShaderCode: ["varColor = float01ToVec3(mix(attUV1_A.y, attUV1_B.y, uniMix));"],
10
+ fragmentShaderCode: ["return vec4(varColor, 1);"],
11
+ });
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ycGhvbG9neS1waWNraW5nL21hdGVyaWFsLWluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxNQUFNLE9BQU8sYUFBYyxTQUFRLFdBQVc7SUFDNUM7UUFDRSxLQUFLLENBQUM7WUFDSixRQUFRLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLE1BQU07YUFDakI7WUFDRCwwQkFBMEIsb0JBQ3JCLDZCQUE2QixFQUFFLENBQ25DO1lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxnRUFBZ0UsQ0FBQztZQUNwRixrQkFBa0IsRUFBRSxDQUFDLDJCQUEyQixDQUFDO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
@@ -0,0 +1,5 @@
1
+ import { TgdMaterial } from "@tolokoban/tgd";
2
+ export declare class MaterialSegmentIndex extends TgdMaterial {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=material-segment-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-segment-index.d.ts","sourceRoot":"","sources":["../../src/morphology-picking/material-segment-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiC,MAAM,gBAAgB,CAAC;AAY5E,qBAAa,oBAAqB,SAAQ,WAAW;;CAapD"}
@@ -0,0 +1,14 @@
1
+ import { TgdMaterial, tgdCodeFunction_float01ToVec3 } from "@tolokoban/tgd";
2
+ export class MaterialSegmentIndex extends TgdMaterial {
3
+ constructor() {
4
+ super({
5
+ varyings: {
6
+ varColor: "vec3",
7
+ },
8
+ extraVertexShaderFunctions: Object.assign({}, tgdCodeFunction_float01ToVec3()),
9
+ vertexShaderCode: ["varColor = float01ToVec3(uv.y);"],
10
+ fragmentShaderCode: ["return vec4(varColor, 1);"],
11
+ });
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtc2VnbWVudC1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb3JwaG9sb2d5LXBpY2tpbmcvbWF0ZXJpYWwtc2VnbWVudC1pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFZNUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFdBQVc7SUFDbkQ7UUFDRSxLQUFLLENBQUM7WUFDSixRQUFRLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLE1BQU07YUFDakI7WUFDRCwwQkFBMEIsb0JBQ3JCLDZCQUE2QixFQUFFLENBQ25DO1lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztZQUNyRCxrQkFBa0IsRUFBRSxDQUFDLDJCQUEyQixDQUFDO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
@@ -0,0 +1,4 @@
1
+ import { type TgdCamera } from "@tolokoban/tgd";
2
+ import type { PickableSegment, SectionSegmentIndex } from "./types";
3
+ export declare function computeSectionOffset(sections: SectionSegmentIndex, item: PickableSegment, camera: TgdCamera, xScreen: number, yScreen: number): number;
4
+ //# sourceMappingURL=section-offset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-offset.d.ts","sourceRoot":"","sources":["../../src/morphology-picking/section-offset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA2C,MAAM,gBAAgB,CAAC;AAEzF,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AASpE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,UAehB"}
@@ -0,0 +1,33 @@
1
+ import { TgdMat4, TgdVec2, TgdVec4, tgdCalcClamp } from "@tolokoban/tgd";
2
+ export function computeSectionOffset(sections, item, camera, xScreen, yScreen) {
3
+ const offsetSegment = computeSegmentOffset(item, camera, xScreen, yScreen);
4
+ const segments = sections.getSegmentsOfSection(item.sectionName);
5
+ let distance = 0;
6
+ let totalDistance = 0;
7
+ for (const segment of segments) {
8
+ totalDistance += segment.segmentLength;
9
+ if (segment.segmentIndex === item.segmentIndex) {
10
+ distance += segment.segmentLength * offsetSegment;
11
+ }
12
+ else if (segment.segmentIndex < item.segmentIndex) {
13
+ distance += segment.segmentLength;
14
+ }
15
+ }
16
+ return totalDistance > 0 ? distance / totalDistance : 0;
17
+ }
18
+ function computeSegmentOffset(item, camera, xScreen, yScreen) {
19
+ const start = new TgdVec4(...item.start, 1);
20
+ const end = new TgdVec4(...item.end, 1);
21
+ const matrix = new TgdMat4(camera.matrixProjection).multiply(camera.matrixModelView);
22
+ start.applyMatrix(matrix);
23
+ start.scale(1 / start.w);
24
+ end.applyMatrix(matrix);
25
+ end.scale(1 / end.w);
26
+ const vecU = new TgdVec2(end.x - start.x, end.y - start.y);
27
+ const length = vecU.size;
28
+ vecU.normalize();
29
+ const vecV = new TgdVec2(xScreen - start.x, yScreen - start.y);
30
+ const distance = vecU.dot(vecV);
31
+ return tgdCalcClamp(length > 0 ? distance / length : 0, 0, 1);
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1vZmZzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ycGhvbG9neS1waWNraW5nL3NlY3Rpb24tb2Zmc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFXekYsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxRQUE2QixFQUM3QixJQUFxQixFQUNyQixNQUFpQixFQUNqQixPQUFlLEVBQ2YsT0FBZTtJQUVmLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztJQUN0QixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLGFBQWEsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0MsUUFBUSxJQUFJLE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3BELENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BELFFBQVEsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQVFELFNBQVMsb0JBQW9CLENBQzNCLElBQXFCLEVBQ3JCLE1BQWlCLEVBQ2pCLE9BQWUsRUFDZixPQUFlO0lBRWYsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JGLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDIn0=
@@ -0,0 +1,4 @@
1
+ export declare function encodeSegmentIndex(index: number, count: number): number;
2
+ export declare function decodeSegmentIndex(value: number, count: number): number;
3
+ export declare function spiralPixelOffsets(radius: number): ReadonlyArray<readonly [number, number]>;
4
+ //# sourceMappingURL=segment-index-codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-index-codec.d.ts","sourceRoot":"","sources":["../../src/morphology-picking/segment-index-codec.ts"],"names":[],"mappings":"AASA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvE;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvE;AASD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAa3F"}
@@ -0,0 +1,22 @@
1
+ export function encodeSegmentIndex(index, count) {
2
+ return (index + 1.5) / (count + 2);
3
+ }
4
+ export function decodeSegmentIndex(value, count) {
5
+ return Math.floor((count + 2) * value) - 1;
6
+ }
7
+ const spiralCache = new Map();
8
+ export function spiralPixelOffsets(radius) {
9
+ const cached = spiralCache.get(radius);
10
+ if (cached)
11
+ return cached;
12
+ const offsets = [];
13
+ for (let dy = -radius; dy <= radius; dy++) {
14
+ for (let dx = -radius; dx <= radius; dx++) {
15
+ offsets.push([dx, dy]);
16
+ }
17
+ }
18
+ offsets.sort((a, b) => Math.pow(a[0], 2) + Math.pow(a[1], 2) - (Math.pow(b[0], 2) + Math.pow(b[1], 2)));
19
+ spiralCache.set(radius, offsets);
20
+ return offsets;
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1pbmRleC1jb2RlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb3JwaG9sb2d5LXBpY2tpbmcvc2VnbWVudC1pbmRleC1jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBYSxFQUFFLEtBQWE7SUFDN0QsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBR0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQzdELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFvRCxDQUFDO0FBT2hGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFjO0lBQy9DLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsSUFBSSxNQUFNO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFFMUIsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQztJQUM1QyxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUksQ0FBQyxDQUFBLEdBQUcsU0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUksQ0FBQyxDQUFBLEdBQUcsQ0FBQyxTQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBSSxDQUFDLENBQUEsR0FBRyxTQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7SUFDeEUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakMsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
@@ -0,0 +1,12 @@
1
+ import type { ArrayNumber3 } from "@tolokoban/tgd";
2
+ export interface PickableSegment {
3
+ sectionName: string;
4
+ segmentIndex: number;
5
+ segmentLength: number;
6
+ start: ArrayNumber3;
7
+ end: ArrayNumber3;
8
+ }
9
+ export interface SectionSegmentIndex {
10
+ getSegmentsOfSection(sectionName: string): PickableSegment[];
11
+ }
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/morphology-picking/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQnD,MAAM,WAAW,eAAe;IAE9B,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;CACnB;AAGD,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CAC9D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ycGhvbG9neS1waWNraW5nL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openbraininstitute/morphoviewer",
3
- "version": "0.31.1",
3
+ "version": "0.32.0",
4
4
  "description": "Class to display SWC files in 3D on a canvas",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openbraininstitute/morphoviewer",
3
- "version": "0.31.1",
3
+ "version": "0.32.0",
4
4
  "description": "Class to display SWC files in 3D on a canvas",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -1,4 +0,0 @@
1
- import { type TgdCamera } from "@tolokoban/tgd";
2
- import type { Structure, StructureItem } from "./structure";
3
- export declare function computeSectionOffset(structure: Structure, item: StructureItem, camera: TgdCamera, xScreen: number, yScreen: number): number;
4
- //# sourceMappingURL=math.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA2C,MAAM,gBAAgB,CAAC;AAEzF,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,UAehB"}
@@ -1,33 +0,0 @@
1
- import { TgdMat4, TgdVec2, TgdVec4, tgdCalcClamp } from "@tolokoban/tgd";
2
- export function computeSectionOffset(structure, item, camera, xScreen, yScreen) {
3
- const offsetSegment = computeSegmentOffset(item, camera, xScreen, yScreen);
4
- const segments = structure.getSegmentsOfSection(item.sectionName);
5
- let distance = 0;
6
- let totalDistance = 0;
7
- for (const segment of segments) {
8
- totalDistance += segment.segmentLength;
9
- if (segment.segmentIndex === item.segmentIndex) {
10
- distance += segment.segmentLength * offsetSegment;
11
- }
12
- else if (segment.segmentIndex < item.segmentIndex) {
13
- distance += segment.segmentLength;
14
- }
15
- }
16
- return totalDistance > 0 ? distance / totalDistance : 0;
17
- }
18
- function computeSegmentOffset(item, camera, xScreen, yScreen) {
19
- const start = new TgdVec4(...item.start, 1);
20
- const end = new TgdVec4(...item.end, 1);
21
- const matrix = new TgdMat4(camera.matrixProjection).multiply(camera.matrixModelView);
22
- start.applyMatrix(matrix);
23
- start.scale(1 / start.w);
24
- end.applyMatrix(matrix);
25
- end.scale(1 / end.w);
26
- const vecU = new TgdVec2(end.x - start.x, end.y - start.y);
27
- const length = vecU.size;
28
- vecU.normalize();
29
- const vecV = new TgdVec2(xScreen - start.x, yScreen - start.y);
30
- const distance = vecU.dot(vecV);
31
- return tgdCalcClamp(length > 0 ? distance / length : 0, 0, 1);
32
- }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2ltdWwvcGFpbnRlci9tYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJekYsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxTQUFvQixFQUNwQixJQUFtQixFQUNuQixNQUFpQixFQUNqQixPQUFlLEVBQ2YsT0FBZTtJQUVmLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztJQUN0QixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLGFBQWEsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0MsUUFBUSxJQUFJLE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3BELENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BELFFBQVEsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQzNCLElBQW1CLEVBQ25CLE1BQWlCLEVBQ2pCLE9BQWUsRUFDZixPQUFlO0lBRWYsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JGLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"material-index.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-simul/painter/offscreen-painter/material-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE5E,qBAAa,aAAc,SAAQ,WAAW;;CAa7C"}
@@ -1,14 +0,0 @@
1
- import { tgdCodeFunction_float01ToVec3, TgdMaterial } from "@tolokoban/tgd";
2
- export class MaterialIndex extends TgdMaterial {
3
- constructor() {
4
- super({
5
- varyings: {
6
- varColor: "vec3",
7
- },
8
- extraVertexShaderFunctions: Object.assign({}, tgdCodeFunction_float01ToVec3()),
9
- vertexShaderCode: ["varColor = float01ToVec3(mix(attUV1_A.y, attUV1_B.y, uniMix));"],
10
- fragmentShaderCode: ["return vec4(varColor, 1);"],
11
- });
12
- }
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNpbXVsL3BhaW50ZXIvb2Zmc2NyZWVuLXBhaW50ZXIvbWF0ZXJpYWwtaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE1BQU0sT0FBTyxhQUFjLFNBQVEsV0FBVztJQUM1QztRQUNFLEtBQUssQ0FBQztZQUNKLFFBQVEsRUFBRTtnQkFDUixRQUFRLEVBQUUsTUFBTTthQUNqQjtZQUNELDBCQUEwQixvQkFDckIsNkJBQTZCLEVBQUUsQ0FDbkM7WUFDRCxnQkFBZ0IsRUFBRSxDQUFDLGdFQUFnRSxDQUFDO1lBQ3BGLGtCQUFrQixFQUFFLENBQUMsMkJBQTJCLENBQUM7U0FDbEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=