@openbraininstitute/morphoviewer 0.33.0 → 0.35.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 (62) hide show
  1. package/dist/behaviors/index.d.ts +1 -0
  2. package/dist/behaviors/index.d.ts.map +1 -1
  3. package/dist/behaviors/index.js +2 -1
  4. package/dist/behaviors/space-per-pixel.d.ts.map +1 -1
  5. package/dist/behaviors/space-per-pixel.js +2 -2
  6. package/dist/behaviors/zoom.d.ts +3 -0
  7. package/dist/behaviors/zoom.d.ts.map +1 -0
  8. package/dist/behaviors/zoom.js +13 -0
  9. package/dist/components/morpho-viewer-small-circuit/index.d.ts +1 -0
  10. package/dist/components/morpho-viewer-small-circuit/index.d.ts.map +1 -1
  11. package/dist/components/morpho-viewer-small-circuit/index.js +2 -1
  12. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.d.ts.map +1 -1
  13. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +20 -2
  14. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.module.css +8 -0
  15. package/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts +6 -1
  16. package/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts.map +1 -1
  17. package/dist/components/morpho-viewer-small-circuit/painter/camera.js +20 -5
  18. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +31 -6
  19. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
  20. package/dist/components/morpho-viewer-small-circuit/painter/manager.js +240 -45
  21. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.d.ts +1 -0
  22. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.d.ts.map +1 -1
  23. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.js +2 -1
  24. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-flat-texture-intensity.d.ts +11 -0
  25. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-flat-texture-intensity.d.ts.map +1 -0
  26. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-flat-texture-intensity.js +32 -0
  27. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +2 -4
  28. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -1
  29. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +10 -14
  30. package/dist/components/morpho-viewer-small-circuit/types.d.ts +3 -1
  31. package/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
  32. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +17 -1
  33. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
  34. package/dist/components/morpho-viewer-somas-only/manager/manager.js +120 -2
  35. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts +1 -0
  36. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts.map +1 -1
  37. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +12 -6
  38. package/dist/components/morpho-viewer-somas-only/manager/painter-soma-cloud.d.ts +27 -0
  39. package/dist/components/morpho-viewer-somas-only/manager/painter-soma-cloud.d.ts.map +1 -0
  40. package/dist/components/morpho-viewer-somas-only/manager/painter-soma-cloud.js +131 -0
  41. package/dist/components/morpho-viewer-somas-only/types.d.ts +2 -1
  42. package/dist/components/morpho-viewer-somas-only/types.d.ts.map +1 -1
  43. package/dist/components/signals.d.ts +1 -0
  44. package/dist/components/signals.d.ts.map +1 -1
  45. package/dist/components/signals.js +2 -1
  46. package/dist/index.d.ts +2 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +2 -1
  49. package/dist/package.json +1 -1
  50. package/dist/painters/gizmo.d.ts +1 -0
  51. package/dist/painters/gizmo.d.ts.map +1 -1
  52. package/dist/painters/gizmo.js +27 -5
  53. package/dist/spikes/index.d.ts +3 -0
  54. package/dist/spikes/index.d.ts.map +1 -0
  55. package/dist/spikes/index.js +2 -0
  56. package/dist/spikes/spiking-circuit.d.ts +30 -0
  57. package/dist/spikes/spiking-circuit.d.ts.map +1 -0
  58. package/dist/spikes/spiking-circuit.js +159 -0
  59. package/dist/spikes/types.d.ts +16 -0
  60. package/dist/spikes/types.d.ts.map +1 -0
  61. package/dist/spikes/types.js +2 -0
  62. package/package.json +1 -1
@@ -15,5 +15,6 @@ export declare class MorphoViewerSignals {
15
15
  readonly cameraReset: MorphoViewerSignal<MorphoViewerSignalCameraResetOptions | undefined, void>;
16
16
  readonly snapshot: MorphoViewerSignal<MorphoViewerSignalSnapshotOptions | undefined, HTMLImageElement | null>;
17
17
  readonly nudgeMorphology: MorphoViewerSignal<void, void>;
18
+ readonly setZoom: MorphoViewerSignal<number, void>;
18
19
  }
19
20
  //# sourceMappingURL=signals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/components/signals.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,iCAAiC;IAEhD,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;IAEjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oCAAoC;IAInD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD,qBAAa,kBAAkB,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI;IACzD,OAAO,CAAC,OAAO,CAA0D;gBAE7D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzD,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5C,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;CAMzE;AAMD,qBAAa,mBAAmB;IAE9B,SAAgB,WAAW,6EAEvB;IAQJ,SAAgB,QAAQ,6FAGpB;IAEJ,SAAgB,eAAe,iCAA4B;CAC5D"}
1
+ {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/components/signals.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,iCAAiC;IAEhD,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;IAEjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oCAAoC;IAInD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD,qBAAa,kBAAkB,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI;IACzD,OAAO,CAAC,OAAO,CAA0D;gBAE7D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzD,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5C,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;CAMzE;AAMD,qBAAa,mBAAmB;IAE9B,SAAgB,WAAW,6EAEvB;IAQJ,SAAgB,QAAQ,6FAGpB;IAEJ,SAAgB,eAAe,iCAA4B;IAE3D,SAAgB,OAAO,mCAAoC;CAC5D"}
@@ -23,6 +23,7 @@ export class MorphoViewerSignals {
23
23
  this.cameraReset = new MorphoViewerSignal();
24
24
  this.snapshot = new MorphoViewerSignal();
25
25
  this.nudgeMorphology = new MorphoViewerSignal();
26
+ this.setZoom = new MorphoViewerSignal();
26
27
  }
27
28
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NpZ25hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQXFCQSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQVksT0FBbUQ7UUFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUdLLFFBQVEsQ0FBQyxJQUFXOztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO0tBQUE7SUFHRCxRQUFRLENBQUMsT0FBa0Q7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTztnQkFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN6RCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFNRCxNQUFNLE9BQU8sbUJBQW1CO0lBQWhDO1FBRWtCLGdCQUFXLEdBQUcsSUFBSSxrQkFBa0IsRUFFakQsQ0FBQztRQVFZLGFBQVEsR0FBRyxJQUFJLGtCQUFrQixFQUc5QyxDQUFDO1FBRVksb0JBQWUsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDN0QsQ0FBQztDQUFBIn0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NpZ25hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQXFCQSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQVksT0FBbUQ7UUFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUdLLFFBQVEsQ0FBQyxJQUFXOztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO0tBQUE7SUFHRCxRQUFRLENBQUMsT0FBa0Q7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTztnQkFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN6RCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFNRCxNQUFNLE9BQU8sbUJBQW1CO0lBQWhDO1FBRWtCLGdCQUFXLEdBQUcsSUFBSSxrQkFBa0IsRUFFakQsQ0FBQztRQVFZLGFBQVEsR0FBRyxJQUFJLGtCQUFrQixFQUc5QyxDQUFDO1FBRVksb0JBQWUsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFFM0MsWUFBTyxHQUFHLElBQUksa0JBQWtCLEVBQVUsQ0FBQztJQUM3RCxDQUFDO0NBQUEifQ==
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from "./components/morpho-viewer-small-circuit";
7
7
  export * from "./components/morpho-viewer-somas-only";
8
8
  export * from "./components/morpho-viewer-spinner";
9
9
  export { MorphoViewerSignals } from "./components/signals";
10
+ export { DEFAULT_SPIKE_AFTERGLOW_IN_SECONDS, DEFAULT_SPIKE_SPEED } from "./spikes";
10
11
  export * from "./gizmo";
11
12
  export { MorphologyCanvas } from "./morphology/morphology-canvas";
12
13
  export { version } from "./package.json";
@@ -15,6 +16,7 @@ export { morphoViewerConvertSwcIntoTree } from "./tools/swc-to-tree";
15
16
  export { CellNodeType } from "./types";
16
17
  export { useEventState, useEventValue } from "./utils";
17
18
  export type { CanvasOptions } from "./abstract-canvas";
19
+ export type { MorphoViewerSpikes, PropsForSpikeReplay } from "./spikes";
18
20
  export type { ColorsInterface } from "./colors";
19
21
  export type { MorphoViewerSignalSnapshotOptions as MorphoViewerSnapshotOptions } from "./components/signals";
20
22
  export type { MorphoViewerOverlayTransformEvent, MorphoViewerWorldOverlay, PropsForGizmo, PropsForScalebar, ScalebarConfig, ScalebarLabelsConfig, ScalebarOrientation, ScalebarPinsConfig, ScalebarPlacement, ScalebarSide, ScalebarWhen, } from "./components/types";
@@ -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,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"}
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,OAAO,EAAE,kCAAkC,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACnF,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,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACxE,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/index.js CHANGED
@@ -8,6 +8,7 @@ export * from "./components/morpho-viewer-small-circuit";
8
8
  export * from "./components/morpho-viewer-somas-only";
9
9
  export * from "./components/morpho-viewer-spinner";
10
10
  export { MorphoViewerSignals } from "./components/signals";
11
+ export { DEFAULT_SPIKE_AFTERGLOW_IN_SECONDS, DEFAULT_SPIKE_SPEED } from "./spikes";
11
12
  export * from "./gizmo";
12
13
  export { MorphologyCanvas } from "./morphology/morphology-canvas";
13
14
  export { version } from "./package.json";
@@ -15,4 +16,4 @@ export { morphoViewerConvertMorphologyIntoTree } from "./tools/morphology-to-tre
15
16
  export { morphoViewerConvertSwcIntoTree } from "./tools/swc-to-tree";
16
17
  export { CellNodeType } from "./types";
17
18
  export { useEventState, useEventValue } from "./utils";
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBRWIsT0FBTyxFQUNMLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFFBQVEsSUFBSSxpQkFBaUIsRUFDN0IsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELGNBQWMsU0FBUyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDIn0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBRWIsT0FBTyxFQUNMLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFFBQVEsSUFBSSxpQkFBaUIsRUFDN0IsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRixjQUFjLFNBQVMsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQyJ9
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openbraininstitute/morphoviewer",
3
- "version": "0.33.0",
3
+ "version": "0.35.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",
@@ -7,6 +7,7 @@ export declare class PainterGizmo extends TgdPainterGroup {
7
7
  set options(optionsOrBoolean: TgdPainterGizmoOptions | boolean);
8
8
  get context(): TgdContext | null;
9
9
  set context(context: TgdContext | null);
10
+ private applyMargin;
10
11
  private createPainter;
11
12
  }
12
13
  //# sourceMappingURL=gizmo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gizmo.d.ts","sourceRoot":"","sources":["../../src/painters/gizmo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,sBAAsB,EAC3B,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAExB,qBAAa,YAAa,SAAQ,eAAe;IAC/C,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,QAAQ,CAAgC;IAEhD,IAAI,OAAO,IAGmB,sBAAsB,GAAG,OAAO,CAD7D;IACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,OAAO,EAmB7D;IAED,IAAI,OAAO,IAGU,UAAU,GAAG,IAAI,CADrC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EAOrC;IAED,OAAO,CAAC,aAAa;CActB"}
1
+ {"version":3,"file":"gizmo.d.ts","sourceRoot":"","sources":["../../src/painters/gizmo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,sBAAsB,EAC3B,eAAe,EAGhB,MAAM,gBAAgB,CAAC;AAExB,qBAAa,YAAa,SAAQ,eAAe;IAE/C,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,QAAQ,CAAgC;IAEhD,IAAI,OAAO,IAGmB,sBAAsB,GAAG,OAAO,CAD7D;IACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,OAAO,EAmB7D;IAED,IAAI,OAAO,IAGU,UAAU,GAAG,IAAI,CADrC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EAOrC;IAQD,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,aAAa;CAgBtB"}
@@ -21,7 +21,7 @@ export class PainterGizmo extends TgdPainterGroup {
21
21
  this._painter.alignX = options.alignX;
22
22
  this._painter.alignY = options.alignY;
23
23
  this._painter.size = options.size;
24
- this._painter.margin = options.margin;
24
+ this.applyMargin(this._painter, options.margin);
25
25
  }
26
26
  else {
27
27
  this.createPainter();
@@ -38,11 +38,24 @@ export class PainterGizmo extends TgdPainterGroup {
38
38
  this._context = context;
39
39
  this.createPainter();
40
40
  }
41
+ applyMargin(painter, margin) {
42
+ var _a;
43
+ if (hasOverlay(painter)) {
44
+ painter.margin = margin;
45
+ return;
46
+ }
47
+ (_a = this._context) === null || _a === void 0 ? void 0 : _a.execBeforeNextPaint(() => {
48
+ if (this._painter === painter)
49
+ this.applyMargin(painter, margin);
50
+ });
51
+ }
41
52
  createPainter() {
42
53
  const context = this._context;
43
54
  if (!context)
44
55
  return;
45
- const painter = new TgdPainterGizmo(context, this._options);
56
+ const painter = new TgdPainterGizmo(context, Object.assign(Object.assign({}, this._options), { margin: 0 }));
57
+ this.applyMargin(painter, this._options.margin);
58
+ smoothGizmoTexture(painter);
46
59
  this._painter = painter;
47
60
  this.add(new TgdPainterState(context, {
48
61
  depth: "off",
@@ -51,10 +64,19 @@ export class PainterGizmo extends TgdPainterGroup {
51
64
  }));
52
65
  }
53
66
  }
67
+ function hasOverlay(painter) {
68
+ return Boolean(painter.overlay);
69
+ }
70
+ function smoothGizmoTexture(painter) {
71
+ const { textureFramebuffer } = painter;
72
+ textureFramebuffer === null || textureFramebuffer === void 0 ? void 0 : textureFramebuffer.setParams({ minFilter: "LINEAR", magFilter: "LINEAR" });
73
+ }
74
+ const DEFAULT_GIZMO_SIZE = 128;
75
+ const DEFAULT_GIZMO_MARGIN = 8;
54
76
  const DEFAULT_GIZMO_PROPS = {
55
77
  alignX: +1,
56
78
  alignY: -1,
57
- size: 128,
58
- margin: 8,
79
+ size: DEFAULT_GIZMO_SIZE,
80
+ margin: DEFAULT_GIZMO_MARGIN,
59
81
  };
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlcnMvZ2l6bW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGVBQWUsRUFFZixlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE1BQU0sT0FBTyxZQUFhLFNBQVEsZUFBZTtJQUFqRDs7UUFDVSxhQUFRLEdBQTJCLG1CQUFtQixDQUFDO1FBQ3ZELGFBQVEsR0FBc0IsSUFBSSxDQUFDO1FBQ25DLGFBQVEsR0FBMkIsSUFBSSxDQUFDO0lBb0RsRCxDQUFDO0lBbERDLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsZ0JBQWtEO1FBQzVELElBQUksZ0JBQWdCLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBR04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUEwQjtRQUNwQyxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQ04sSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFO1lBQzNCLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUM7U0FDcEIsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxNQUFNLG1CQUFtQixHQUEyQjtJQUNsRCxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNWLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLENBQUM7Q0FDVixDQUFDIn0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlcnMvZ2l6bW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGVBQWUsRUFFZixlQUFlLEVBQ2YsZUFBZSxHQUVoQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE1BQU0sT0FBTyxZQUFhLFNBQVEsZUFBZTtJQUFqRDs7UUFFVSxhQUFRLEdBQTJCLG1CQUFtQixDQUFDO1FBQ3ZELGFBQVEsR0FBc0IsSUFBSSxDQUFDO1FBQ25DLGFBQVEsR0FBMkIsSUFBSSxDQUFDO0lBdUVsRCxDQUFDO0lBckVDLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsZ0JBQWtEO1FBQzVELElBQUksZ0JBQWdCLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxD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
@@ -0,0 +1,3 @@
1
+ export { DEFAULT_SPIKE_AFTERGLOW_IN_SECONDS, DEFAULT_SPIKE_SPEED, SpikingCircuit, } from "./spiking-circuit";
2
+ export type { MorphoViewerSpikes, PropsForSpikeReplay } from "./types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spikes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,mBAAmB,EACnB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DEFAULT_SPIKE_AFTERGLOW_IN_SECONDS, DEFAULT_SPIKE_SPEED, SpikingCircuit, } from "./spiking-circuit";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3Bpa2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxrQ0FBa0MsRUFDbEMsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLG1CQUFtQixDQUFDIn0=
@@ -0,0 +1,30 @@
1
+ import type { MorphoViewerSpikes } from "./types";
2
+ export declare const DEFAULT_SPIKE_SPEED = 100;
3
+ export declare const DEFAULT_SPIKE_AFTERGLOW_IN_SECONDS = 0.35;
4
+ export declare class SpikingCircuit {
5
+ private spikes;
6
+ private _glow;
7
+ private _timeInMs;
8
+ private _playing;
9
+ private _speed;
10
+ private _afterglowInSeconds;
11
+ private lastTickInMs;
12
+ get glow(): Readonly<Float32Array>;
13
+ get timeMinInMs(): number;
14
+ get timeMaxInMs(): number;
15
+ get timeInMs(): number;
16
+ set timeInMs(timeInMs: number);
17
+ get playing(): boolean;
18
+ set playing(playing: boolean);
19
+ get speed(): number;
20
+ set speed(speed: number);
21
+ get afterglowInSeconds(): number;
22
+ set afterglowInSeconds(afterglowInSeconds: number);
23
+ setSpikes(spikes: MorphoViewerSpikes | null, cellCount: number): void;
24
+ setCellCount(cellCount: number): void;
25
+ advance(): boolean;
26
+ private get tauInMs();
27
+ private get glowWindowInMs();
28
+ private computeGlow;
29
+ }
30
+ //# sourceMappingURL=spiking-circuit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spiking-circuit.d.ts","sourceRoot":"","sources":["../../src/spikes/spiking-circuit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAGvC,eAAO,MAAM,kCAAkC,OAAO,CAAC;AAmDvD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,YAAY,CAAK;IAGzB,IAAI,IAAI,IAAI,QAAQ,CAAC,YAAY,CAAC,CAEjC;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAM5B;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAU3B;IAGD,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAOtB;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IACD,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAKhD;IASD,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM;IAU9D,YAAY,CAAC,SAAS,EAAE,MAAM;IAa9B,OAAO,IAAI,OAAO;IA0BlB,OAAO,KAAK,OAAO,GAElB;IAGD,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,CAAC,WAAW;CAqBpB"}
@@ -0,0 +1,159 @@
1
+ export const DEFAULT_SPIKE_SPEED = 100;
2
+ export const DEFAULT_SPIKE_AFTERGLOW_IN_SECONDS = 0.35;
3
+ const GLOW_CUTOFF_IN_TAUS = 5;
4
+ const MAX_FRAME_IN_MS = 250;
5
+ const NOMINAL_FRAME_IN_MS = 1000 / 60;
6
+ export class SpikingCircuit {
7
+ constructor() {
8
+ this.spikes = null;
9
+ this._glow = new Float32Array(0);
10
+ this._timeInMs = 0;
11
+ this._playing = false;
12
+ this._speed = DEFAULT_SPIKE_SPEED;
13
+ this._afterglowInSeconds = DEFAULT_SPIKE_AFTERGLOW_IN_SECONDS;
14
+ this.lastTickInMs = 0;
15
+ }
16
+ get glow() {
17
+ return this._glow;
18
+ }
19
+ get timeMinInMs() {
20
+ var _a, _b;
21
+ return (_b = (_a = this.spikes) === null || _a === void 0 ? void 0 : _a.timeMinInMs) !== null && _b !== void 0 ? _b : 0;
22
+ }
23
+ get timeMaxInMs() {
24
+ var _a, _b;
25
+ return (_b = (_a = this.spikes) === null || _a === void 0 ? void 0 : _a.timeMaxInMs) !== null && _b !== void 0 ? _b : 0;
26
+ }
27
+ get timeInMs() {
28
+ return this._timeInMs;
29
+ }
30
+ set timeInMs(timeInMs) {
31
+ const clamped = clamp(timeInMs, this.timeMinInMs, this.timeMaxInMs);
32
+ if (clamped === this._timeInMs)
33
+ return;
34
+ this._timeInMs = clamped;
35
+ this.computeGlow();
36
+ }
37
+ get playing() {
38
+ return this._playing;
39
+ }
40
+ set playing(playing) {
41
+ if (this._playing === playing)
42
+ return;
43
+ if (playing && this._timeInMs >= this.timeMaxInMs) {
44
+ this._timeInMs = this.timeMinInMs;
45
+ this.computeGlow();
46
+ }
47
+ this._playing = playing;
48
+ this.lastTickInMs = now();
49
+ }
50
+ get speed() {
51
+ return this._speed;
52
+ }
53
+ set speed(speed) {
54
+ if (this._speed === speed)
55
+ return;
56
+ this._speed = speed;
57
+ this.computeGlow();
58
+ }
59
+ get afterglowInSeconds() {
60
+ return this._afterglowInSeconds;
61
+ }
62
+ set afterglowInSeconds(afterglowInSeconds) {
63
+ if (this._afterglowInSeconds === afterglowInSeconds)
64
+ return;
65
+ this._afterglowInSeconds = afterglowInSeconds;
66
+ this.computeGlow();
67
+ }
68
+ setSpikes(spikes, cellCount) {
69
+ if (spikes)
70
+ warnIfUnsorted(spikes.times);
71
+ this.spikes = spikes;
72
+ if (this._glow.length !== cellCount)
73
+ this._glow = new Float32Array(cellCount);
74
+ this._timeInMs = this.timeMinInMs;
75
+ this._playing = false;
76
+ this.computeGlow();
77
+ }
78
+ setCellCount(cellCount) {
79
+ if (this._glow.length === cellCount)
80
+ return;
81
+ this._glow = new Float32Array(cellCount);
82
+ this.computeGlow();
83
+ }
84
+ advance() {
85
+ const wallClock = now();
86
+ const deltaInMs = Math.min(wallClock - this.lastTickInMs, MAX_FRAME_IN_MS);
87
+ this.lastTickInMs = wallClock;
88
+ if (!this._playing || deltaInMs <= 0)
89
+ return false;
90
+ const stepInMs = Math.min((deltaInMs / 1000) * this._speed, Math.max(this.glowWindowInMs, (NOMINAL_FRAME_IN_MS / 1000) * this._speed));
91
+ const timeInMs = this._timeInMs + stepInMs;
92
+ if (timeInMs >= this.timeMaxInMs) {
93
+ this._timeInMs = this.timeMaxInMs;
94
+ this._playing = false;
95
+ this.computeGlow();
96
+ return true;
97
+ }
98
+ this._timeInMs = timeInMs;
99
+ this.computeGlow();
100
+ return false;
101
+ }
102
+ get tauInMs() {
103
+ return Math.max(this._afterglowInSeconds * this._speed, Number.MIN_VALUE);
104
+ }
105
+ get glowWindowInMs() {
106
+ return GLOW_CUTOFF_IN_TAUS * this.tauInMs;
107
+ }
108
+ computeGlow() {
109
+ const glow = this._glow;
110
+ glow.fill(0);
111
+ const { spikes } = this;
112
+ if (!spikes || glow.length === 0)
113
+ return;
114
+ const { cellIndices, times } = spikes;
115
+ const tauInMs = this.tauInMs;
116
+ const t = this._timeInMs;
117
+ const oldest = t - this.glowWindowInMs;
118
+ for (let i = upperBound(times, t) - 1; i >= 0; i--) {
119
+ const spikeTime = times[i];
120
+ if (spikeTime < oldest)
121
+ break;
122
+ const cellIndex = cellIndices[i];
123
+ if (cellIndex >= glow.length)
124
+ continue;
125
+ const intensity = Math.exp((spikeTime - t) / tauInMs);
126
+ if (intensity > glow[cellIndex])
127
+ glow[cellIndex] = intensity;
128
+ }
129
+ }
130
+ }
131
+ function upperBound(values, value) {
132
+ let low = 0;
133
+ let high = values.length;
134
+ while (low < high) {
135
+ const mid = (low + high) >>> 1;
136
+ if (values[mid] <= value)
137
+ low = mid + 1;
138
+ else
139
+ high = mid;
140
+ }
141
+ return low;
142
+ }
143
+ function clamp(value, min, max) {
144
+ if (Number.isNaN(value))
145
+ return min;
146
+ return Math.min(max, Math.max(min, value));
147
+ }
148
+ function warnIfUnsorted(times) {
149
+ for (let i = 1; i < times.length; i++) {
150
+ if (times[i] >= times[i - 1])
151
+ continue;
152
+ console.warn(`Spike times must be ascending, but times[${i}] (${times[i]}) is before times[${i - 1}] (${times[i - 1]}). Cells will light up at the wrong moments.`);
153
+ return;
154
+ }
155
+ }
156
+ function now() {
157
+ return typeof performance === "undefined" ? Date.now() : performance.now();
158
+ }
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpa2luZy1jaXJjdWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NwaWtlcy9zcGlraW5nLWNpcmN1aXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBR3ZDLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLElBQUksQ0FBQztBQU92RCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQVU5QixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFXNUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBdUJ0QyxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNVLFdBQU0sR0FBOEIsSUFBSSxDQUFDO1FBQ3pDLFVBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixXQUFNLEdBQUcsbUJBQW1CLENBQUM7UUFDN0Isd0JBQW1CLEdBQUcsa0NBQWtDLENBQUM7UUFDekQsaUJBQVksR0FBRyxDQUFDLENBQUM7SUFzSjNCLENBQUM7SUFuSkMsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFdBQVc7O1FBQ2IsT0FBTyxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxtQ0FBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksV0FBVzs7UUFDYixPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxXQUFXLG1DQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxRQUFnQjtRQUMzQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BFLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV2QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsT0FBZ0I7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU87WUFBRSxPQUFPO1FBR3RDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUdELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBYTtRQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSztZQUFFLE9BQU87UUFFbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFHcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxrQkFBMEI7UUFDL0MsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssa0JBQWtCO1lBQUUsT0FBTztRQUU1RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFTRCxTQUFTLENBQUMsTUFBaUMsRUFBRSxTQUFpQjtRQUM1RCxJQUFJLE1BQU07WUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBR0QsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUztZQUFFLE9BQU87UUFFNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQVFELE9BQU87UUFDTCxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSSxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFLbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDdkIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUMxRSxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDM0MsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUdELElBQVksT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFHRCxJQUFZLGNBQWM7UUFDeEIsT0FBTyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzVDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNiLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBRXpDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUN2QyxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNuRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxTQUFTLEdBQUcsTUFBTTtnQkFBRSxNQUFNO1lBRTlCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxTQUFTO1lBRXZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDdEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFHRCxTQUFTLFVBQVUsQ0FBQyxNQUFvQixFQUFFLEtBQWE7SUFDckQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN6QixPQUFPLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSztZQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDOztZQUNuQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFPRCxTQUFTLEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEdBQVc7SUFDcEQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3BDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBVUQsU0FBUyxjQUFjLENBQUMsS0FBbUI7SUFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN0QyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFFLFNBQVM7UUFFdkMsT0FBTyxDQUFDLElBQUksQ0FDViw0Q0FBNEMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsOENBQThDLENBQ3RKLENBQUM7UUFDRixPQUFPO0lBQ1QsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLEdBQUc7SUFDVixPQUFPLE9BQU8sV0FBVyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDN0UsQ0FBQyJ9
@@ -0,0 +1,16 @@
1
+ export interface MorphoViewerSpikes {
2
+ cellIndices: Uint32Array;
3
+ times: Float32Array;
4
+ timeMinInMs: number;
5
+ timeMaxInMs: number;
6
+ }
7
+ export interface PropsForSpikeReplay {
8
+ spikes?: MorphoViewerSpikes;
9
+ spikeTime?: number;
10
+ onSpikeTimeChange?(timeInMs: number): void;
11
+ spikePlaying?: boolean;
12
+ onSpikePlayingChange?(playing: boolean): void;
13
+ spikeSpeed?: number;
14
+ spikeAfterglowInSeconds?: number;
15
+ }
16
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/spikes/types.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IASjC,WAAW,EAAE,WAAW,CAAC;IAQzB,KAAK,EAAE,YAAY,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AASD,MAAM,WAAW,mBAAmB;IASlC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAW5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAQnB,iBAAiB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IAKvB,oBAAoB,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAK9C,UAAU,CAAC,EAAE,MAAM,CAAC;IAapB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3Bpa2VzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openbraininstitute/morphoviewer",
3
- "version": "0.33.0",
3
+ "version": "0.35.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",