@openbraininstitute/morphoviewer 0.28.0 → 0.30.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 (60) hide show
  1. package/dist/components/morpho-viewer-octree/morpho-viewer-octree.d.ts.map +1 -1
  2. package/dist/components/morpho-viewer-octree/morpho-viewer-octree.js +3 -2
  3. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.d.ts +1 -1
  4. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.d.ts.map +1 -1
  5. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.js +60 -26
  6. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.module.css +19 -9
  7. package/dist/components/morpho-viewer-scalebar/painter.d.ts +2 -1
  8. package/dist/components/morpho-viewer-scalebar/painter.d.ts.map +1 -1
  9. package/dist/components/morpho-viewer-scalebar/painter.js +113 -10
  10. package/dist/components/morpho-viewer-scalebar/resolve.d.ts +36 -0
  11. package/dist/components/morpho-viewer-scalebar/resolve.d.ts.map +1 -0
  12. package/dist/components/morpho-viewer-scalebar/resolve.js +129 -0
  13. package/dist/components/morpho-viewer-simul/morpho-viewer-simul.d.ts.map +1 -1
  14. package/dist/components/morpho-viewer-simul/morpho-viewer-simul.js +3 -2
  15. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.d.ts.map +1 -1
  16. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +3 -2
  17. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +9 -1
  18. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
  19. package/dist/components/morpho-viewer-small-circuit/painter/manager.js +54 -5
  20. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/index.d.ts +2 -0
  21. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/index.d.ts.map +1 -0
  22. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/index.js +2 -0
  23. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts +23 -0
  24. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts.map +1 -0
  25. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.js +79 -0
  26. package/dist/components/morpho-viewer-small-circuit/types.d.ts +8 -0
  27. package/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
  28. package/dist/components/morpho-viewer-somas-only/index.d.ts +1 -0
  29. package/dist/components/morpho-viewer-somas-only/index.d.ts.map +1 -1
  30. package/dist/components/morpho-viewer-somas-only/index.js +2 -1
  31. package/dist/components/morpho-viewer-somas-only/manager/adaptative-resolution.d.ts.map +1 -1
  32. package/dist/components/morpho-viewer-somas-only/manager/adaptative-resolution.js +7 -5
  33. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +10 -1
  34. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
  35. package/dist/components/morpho-viewer-somas-only/manager/manager.js +103 -6
  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 +69 -7
  38. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.d.ts.map +1 -1
  39. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.js +3 -2
  40. package/dist/components/morpho-viewer-somas-only/types.d.ts +4 -0
  41. package/dist/components/morpho-viewer-somas-only/types.d.ts.map +1 -1
  42. package/dist/components/signals.d.ts +15 -0
  43. package/dist/components/signals.d.ts.map +1 -0
  44. package/dist/components/signals.js +27 -0
  45. package/dist/components/snapshot.d.ts +3 -0
  46. package/dist/components/snapshot.d.ts.map +1 -0
  47. package/dist/components/snapshot.js +32 -0
  48. package/dist/components/types.d.ts +57 -4
  49. package/dist/components/types.d.ts.map +1 -1
  50. package/dist/components/types.js +24 -2
  51. package/dist/index.d.ts +3 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +2 -1
  54. package/dist/package.json +1 -1
  55. package/dist/painters/gizmo.d.ts +1 -0
  56. package/dist/painters/gizmo.d.ts.map +1 -1
  57. package/dist/painters/gizmo.js +9 -2
  58. package/dist/utils.d.ts.map +1 -1
  59. package/dist/utils.js +1 -1
  60. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tgdFullscreenToggle } from "@tolokoban/tgd";
3
3
  import React from "react";
4
+ import { version } from "./../../package.json";
4
5
  import { useDebugMode } from "./../../utils";
5
6
  import { ButtonCameraReset } from "../button-reset-camera";
6
7
  import { MorphoViewerIconClose } from "../icons/close";
@@ -28,7 +29,7 @@ export function MorphoViewerSimul(props) {
28
29
  const handleCopyMorphologyToClipboard = () => {
29
30
  navigator.clipboard.writeText(JSON.stringify(props.morphology));
30
31
  };
31
- return (_jsxs("div", { className: styles.main, ref: ref, children: [_jsx(Canvas, { painterManager: painterManager }), _jsx(HintPanel, { painterManager: painterManager }), _jsxs("header", { children: [_jsx(ModeSelector, { painterManager: painterManager }), _jsx(ZoomSlider, { className: styles.zoomSlider, painterManager: painterManager }), _jsx(ButtonCameraReset, { painterManager: painterManager }), _jsxs("div", { className: styles.flex, children: [_jsx("button", { type: "button", onClick: handleFullscreen, children: _jsx(MorphoViewerIconFullscreen, {}) }), props.onMinimize && (_jsx("button", { type: "button", onClick: props.onMinimize, children: _jsx(MorphoViewerIconMinimize, {}) })), props.onClose && (_jsx("button", { type: "button", onClick: props.onClose, children: _jsx(MorphoViewerIconClose, {}) }))] })] }), debugMode && (_jsx("footer", { children: _jsx("button", { type: "button", onClick: handleCopyMorphologyToClipboard, children: _jsx(MorphoViewerIconCopy, {}) }) })), spikingManager && _jsx(SpikingController, { spikingManager: spikingManager }), _jsx(LegendOverlay, Object.assign({}, extraProps)), _jsx(AddRecordingDialog, Object.assign({}, extraProps))] }));
32
+ return (_jsxs("div", { className: styles.main, ref: ref, "data-version": version, children: [_jsx(Canvas, { painterManager: painterManager }), _jsx(HintPanel, { painterManager: painterManager }), _jsxs("header", { children: [_jsx(ModeSelector, { painterManager: painterManager }), _jsx(ZoomSlider, { className: styles.zoomSlider, painterManager: painterManager }), _jsx(ButtonCameraReset, { painterManager: painterManager }), _jsxs("div", { className: styles.flex, children: [_jsx("button", { type: "button", onClick: handleFullscreen, children: _jsx(MorphoViewerIconFullscreen, {}) }), props.onMinimize && (_jsx("button", { type: "button", onClick: props.onMinimize, children: _jsx(MorphoViewerIconMinimize, {}) })), props.onClose && (_jsx("button", { type: "button", onClick: props.onClose, children: _jsx(MorphoViewerIconClose, {}) }))] })] }), debugMode && (_jsx("footer", { children: _jsx("button", { type: "button", onClick: handleCopyMorphologyToClipboard, children: _jsx(MorphoViewerIconCopy, {}) }) })), spikingManager && _jsx(SpikingController, { spikingManager: spikingManager }), _jsx(LegendOverlay, Object.assign({}, extraProps)), _jsx(AddRecordingDialog, Object.assign({}, extraProps))] }));
32
33
  }
33
34
  const Canvas = React.memo(({ painterManager }) => {
34
35
  return (_jsx("canvas", { ref: (canvas) => {
@@ -38,4 +39,4 @@ const Canvas = React.memo(({ painterManager }) => {
38
39
  };
39
40
  } }, "canvas"));
40
41
  });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zaW11bC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2ltdWwvbW9ycGhvLXZpZXdlci1zaW11bC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXZDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLGtCQUFrQixNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RCxPQUFPLFlBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLGlCQUFpQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sVUFBVSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxzQkFBc0IsSUFBSSxvQkFBb0IsRUFDOUMsb0JBQW9CLEdBQ3JCLE1BQU0sV0FBVyxDQUFDO0FBSW5CLE9BQU8sTUFBTSxNQUFNLGtDQUFrQyxDQUFDO0FBR3RELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUE2QjtJQUM3RCxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FB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
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zaW11bC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2ltdWwvbW9ycGhvLXZpZXdlci1zaW11bC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxrQkFBa0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxhQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxZQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxpQkFBaUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLFVBQVUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBRUwsc0JBQXNCLElBQUksb0JBQW9CLEVBQzlDLG9CQUFvQixHQUNyQixNQUFNLFdBQVcsQ0FBQztBQUluQixPQUFPLE1BQU0sTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBNkI7SUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"morpho-viewer-small-circuit.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,GAAG,CAAC;AAyCvD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,qBAgD5E"}
1
+ {"version":3,"file":"morpho-viewer-small-circuit.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,GAAG,CAAC;AAyCvD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,qBAiD5E"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tgdFullscreenToggle } from "@tolokoban/tgd";
3
3
  import React from "react";
4
+ import { version } from "./../../package.json";
4
5
  import { classNames } from "./../../utils";
5
6
  import { ControlsLayout } from "../controls-layout";
6
7
  import MorphoViewerScalebar from "../morpho-viewer-scalebar";
@@ -35,7 +36,7 @@ export function MorphoViewerSmallCircuit(props) {
35
36
  };
36
37
  return (_jsxs("div", { ref: ref, className: classNames(props.className, styles.morphoViewerSmallCircuit), style: {
37
38
  background: (_a = props.backgroundColor) !== null && _a !== void 0 ? _a : "#000",
38
- }, children: [_jsx(Canvas, { painterManager: manager }), _jsx(ControlsLayout, { content: (_b = props.controls) !== null && _b !== void 0 ? _b : getDefaultControls(props), onClick: handleControls }), props.scalebar && (_jsx(MorphoViewerScalebar, { className: props.scalebar, spacePerPixelEvent: manager.eventScalebar, unit: props.scalebar }))] }));
39
+ }, "data-version": version, children: [_jsx(Canvas, { painterManager: manager }), _jsx(ControlsLayout, { content: (_b = props.controls) !== null && _b !== void 0 ? _b : getDefaultControls(props), onClick: handleControls }), props.scalebar && (_jsx(MorphoViewerScalebar, { className: props.scalebar, spacePerPixelEvent: manager.eventScalebar, unit: props.scalebar }))] }));
39
40
  }
40
41
  const Canvas = React.memo(({ painterManager }) => {
41
42
  return (_jsx("canvas", { className: styles.webgl, ref: (canvas) => {
@@ -48,4 +49,4 @@ const Canvas = React.memo(({ painterManager }) => {
48
49
  function getDefaultControls(props) {
49
50
  return ["reset-camera", ["fullscreen", props.onClose && "close", props.onMinimize && "minimize"]];
50
51
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L21vcnBoby12aWV3ZXItc21hbGwtY2lyY3VpdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXJDLE9BQU8sRUFBc0IsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEUsT0FBTyxvQkFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQXVCLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSW5FLE9BQU8sTUFBTSxNQUFNLDBDQUEwQyxDQUFDO0FBdUM5RCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBb0M7O0lBQzNFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQXdCLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBRWpCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQztJQUNGLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBcUIsRUFBUSxFQUFFOztRQUNyRCxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxZQUFZO2dCQUNmLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixNQUFBLEtBQUssQ0FBQyxPQUFPLHFEQUFJLENBQUM7Z0JBQ2xCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsTUFBQSxLQUFLLENBQUMsVUFBVSxxREFBSSxDQUFDO2dCQUNyQixNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FDTCxlQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUN2RSxLQUFLLEVBQUU7WUFDTCxVQUFVLEVBQUUsTUFBQSxLQUFLLENBQUMsZUFBZSxtQ0FBSSxNQUFNO1NBQzVDLGFBRUQsS0FBQyxNQUFNLElBQUMsY0FBYyxFQUFFLE9BQU8sR0FBSSxFQUNuQyxLQUFDLGNBQWMsSUFDYixPQUFPLEVBQUUsTUFBQSxLQUFLLENBQUMsUUFBUSxtQ0FBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFDcEQsT0FBTyxFQUFFLGNBQWMsR0FDdkIsRUFDRCxLQUFLLENBQUMsUUFBUSxJQUFJLENBQ2pCLEtBQUMsb0JBQW9CLElBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUN6QixrQkFBa0IsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUN6QyxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsR0FDcEIsQ0FDSCxJQUNHLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQXNDLEVBQUUsRUFBRTtJQUNuRixPQUFPLENBQ0wsaUJBRUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQ3ZCLEdBQUcsRUFBRSxDQUFDLE1BQWdDLEVBQUUsRUFBRTtZQUN4QyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUMvQixPQUFPLEdBQUcsRUFBRTtnQkFDVixjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUMvQixDQUFDLENBQUM7UUFDSixDQUFDLElBUEcsUUFBUSxDQVFaLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxrQkFBa0IsQ0FBQyxLQUFvQztJQUM5RCxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L21vcnBoby12aWV3ZXItc21hbGwtY2lyY3VpdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxPQUFPLEVBQXNCLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sb0JBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUluRSxPQUFPLE1BQU0sTUFBTSwwQ0FBMEMsQ0FBQztBQXVDOUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQW9DOztJQUMzRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUF3QixJQUFJLENBQUMsQ0FBQztJQUN0RCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsRUFBRTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUVqQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQXFCLEVBQVEsRUFBRTs7UUFDckQsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssWUFBWTtnQkFDZixzQkFBc0IsRUFBRSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxjQUFjO2dCQUNqQixPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsTUFBQSxLQUFLLENBQUMsT0FBTyxxREFBSSxDQUFDO2dCQUNsQixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLE1BQUEsS0FBSyxDQUFDLFVBQVUscURBQUksQ0FBQztnQkFDckIsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPLENBQ0wsZUFDRSxHQUFHLEVBQUUsR0FBRyxFQUNSLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFDdkUsS0FBSyxFQUFFO1lBQ0wsVUFBVSxFQUFFLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksTUFBTTtTQUM1QyxrQkFDYSxPQUFPLGFBRXJCLEtBQUMsTUFBTSxJQUFDLGNBQWMsRUFBRSxPQUFPLEdBQUksRUFDbkMsS0FBQyxjQUFjLElBQ2IsT0FBTyxFQUFFLE1BQUEsS0FBSyxDQUFDLFFBQVEsbUNBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQ3BELE9BQU8sRUFBRSxjQUFjLEdBQ3ZCLEVBQ0QsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUNqQixLQUFDLG9CQUFvQixJQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFDekIsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFDekMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEdBQ3BCLENBQ0gsSUFDRyxDQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFzQyxFQUFFLEVBQUU7SUFDbkYsT0FBTyxDQUNMLGlCQUVFLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUN2QixHQUFHLEVBQUUsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7WUFDeEMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDL0IsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsY0FBYyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDL0IsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxJQVBHLFFBQVEsQ0FRWixDQUNILENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILFNBQVMsa0JBQWtCLENBQUMsS0FBb0M7SUFDOUQsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDcEcsQ0FBQyJ9
@@ -1,4 +1,5 @@
1
1
  import { TgdEvent, type TgdPainterGizmoOptions } from "@tolokoban/tgd";
2
+ import type { MorphoViewerSnapshotOptions } from "../../signals";
2
3
  import type { MorphoViewerSmallCircuitCell, MorphoViewerSmallCircuitCellData, MorphoViewerSmallCircuitProps } from "..";
3
4
  export declare class PainterManager {
4
5
  readonly eventRestingPosition: TgdEvent<boolean>;
@@ -29,14 +30,21 @@ export declare class PainterManager {
29
30
  private framebufferBlur;
30
31
  private loadedCellsCache;
31
32
  private circuitSignature;
33
+ private fitCameraOnUpdate;
32
34
  private bbox;
33
35
  private _verbose;
34
36
  private readonly painterGizmo;
37
+ private painterSynapses;
35
38
  get gizmo(): TgdPainterGizmoOptions | boolean | null | undefined;
36
39
  set gizmo(gizmo: TgdPainterGizmoOptions | boolean | null | undefined);
37
40
  readonly cameraReset: () => void | undefined;
41
+ readonly capture: (options?: MorphoViewerSnapshotOptions) => Promise<HTMLImageElement | null>;
38
42
  get verbose(): boolean;
39
43
  set verbose(verbose: boolean);
44
+ setSynapses(synapses: {
45
+ color: string;
46
+ coordinates: Float32Array | number[];
47
+ }[] | undefined, synapsesRadius: number, synapsesMinRadiusInPixels: number): void;
40
48
  setCircuit(circuit: MorphoViewerSmallCircuitCell[], loadCell: (id: string) => Promise<MorphoViewerSmallCircuitCellData | null>): void;
41
49
  private readonly updateCircuit;
42
50
  private readonly adaptCameraFromBBox;
@@ -52,5 +60,5 @@ export declare class PainterManager {
52
60
  private readonly handlePointerTap;
53
61
  private delete;
54
62
  }
55
- export declare function usePainterManager({ backgroundColor, circuit, loadCell, onCellHover, onCellClick, highlightedCellIds, onLoadProgress, gizmo, verbose, }: MorphoViewerSmallCircuitProps): PainterManager;
63
+ export declare function usePainterManager({ backgroundColor, circuit, loadCell, onCellHover, onCellClick, highlightedCellIds, onLoadProgress, gizmo, verbose, synapses, synapsesRadius, synapsesMinRadiusInPixels, signals, }: MorphoViewerSmallCircuitProps): PainterManager;
56
64
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-small-circuit/painter/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-small-circuit/painter/manager.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
+ import { __awaiter } from "tslib";
1
2
  import { TgdBoundingBox, TgdCameraOrthographic, TgdColor, TgdContext, TgdEvent, TgdPainterClear, TgdPainterGroup, TgdPainterState, TgdValueWaitable, } from "@tolokoban/tgd";
2
3
  import React from "react";
3
4
  import { watchSpacePerPixel } from "./../../../behaviors";
4
5
  import { PainterGizmo } from "./../../../painters/gizmo";
5
6
  import { CacheLRU } from "./../../../tools/cache-lru";
7
+ import { reencodeSnapshot } from "../../snapshot";
6
8
  import { CameraManager } from "./camera";
7
9
  import { OffscreenPainter } from "./offscreen-painter";
8
10
  import { PainterCell } from "./painter-cell";
11
+ import { PainterSynapses } from "./painter-synapses";
9
12
  export class PainterManager {
10
13
  constructor() {
11
14
  this.eventRestingPosition = new TgdEvent();
@@ -37,10 +40,28 @@ export class PainterManager {
37
40
  this.framebufferBlur = null;
38
41
  this.loadedCellsCache = new CacheLRU(24);
39
42
  this.circuitSignature = "";
43
+ this.fitCameraOnUpdate = true;
40
44
  this.bbox = new TgdBoundingBox();
41
45
  this._verbose = false;
42
46
  this.painterGizmo = new PainterGizmo();
47
+ this.painterSynapses = null;
43
48
  this.cameraReset = () => { var _a; return (_a = this.cameraManager) === null || _a === void 0 ? void 0 : _a.resetCamera(); };
49
+ this.capture = (options) => __awaiter(this, void 0, void 0, function* () {
50
+ const context = this.context.value;
51
+ if (!context)
52
+ return null;
53
+ const gizmoWas = this.painterGizmo.options;
54
+ const resolutionWas = context.resolution;
55
+ this.painterGizmo.options = false;
56
+ context.resolution = Math.max(1, Math.min(globalThis.devicePixelRatio || 1, 3));
57
+ const snapshot = context.takeSnapshot();
58
+ context.paint();
59
+ const image = yield snapshot;
60
+ this.painterGizmo.options = gizmoWas;
61
+ context.resolution = resolutionWas;
62
+ context.paint();
63
+ return reencodeSnapshot(image, options);
64
+ });
44
65
  this.updateCircuit = () => {
45
66
  var _a, _b;
46
67
  const context = this.context.value;
@@ -78,7 +99,9 @@ export class PainterManager {
78
99
  if (bbox) {
79
100
  this.bbox.addBBox(bbox);
80
101
  }
81
- this.adaptCameraFromBBox();
102
+ if (this.fitCameraOnUpdate) {
103
+ this.adaptCameraFromBBox();
104
+ }
82
105
  this.cellCountLoaded++;
83
106
  (_a = this.onLoadProgress) === null || _a === void 0 ? void 0 : _a.call(this, this.cellCountLoaded / this.cellCountTotal);
84
107
  },
@@ -92,7 +115,9 @@ export class PainterManager {
92
115
  highlightingCells.set(cell.id, highlightedCell);
93
116
  }
94
117
  this.updateHightedCells();
95
- this.adaptCameraFromBBox();
118
+ if (this.fitCameraOnUpdate) {
119
+ this.adaptCameraFromBBox();
120
+ }
96
121
  context.paint();
97
122
  }
98
123
  catch (ex) {
@@ -194,6 +219,14 @@ export class PainterManager {
194
219
  if (this.context.value)
195
220
  this.context.value.verbose = verbose;
196
221
  }
222
+ setSynapses(synapses, synapsesRadius, synapsesMinRadiusInPixels) {
223
+ const { painterSynapses } = this;
224
+ if (!painterSynapses)
225
+ return;
226
+ painterSynapses.synapses = synapses !== null && synapses !== void 0 ? synapses : [];
227
+ painterSynapses.radius = synapsesRadius;
228
+ painterSynapses.minRadiusInPixels = synapsesMinRadiusInPixels;
229
+ }
197
230
  setCircuit(circuit, loadCell) {
198
231
  var _a;
199
232
  if (this.circuit === circuit) {
@@ -204,6 +237,7 @@ export class PainterManager {
204
237
  return;
205
238
  }
206
239
  const signature = circuit.map((item) => item.id).join("\n");
240
+ this.fitCameraOnUpdate = this.circuitSignature !== signature;
207
241
  if (this.circuitSignature !== signature) {
208
242
  this.circuitSignature = signature;
209
243
  this.loadedCellsCache.clear();
@@ -277,6 +311,8 @@ export class PainterManager {
277
311
  verbose: this.verbose,
278
312
  name: "RenderingContext",
279
313
  });
314
+ const painterSynapses = new PainterSynapses(context);
315
+ this.painterSynapses = painterSynapses;
280
316
  this.context.value = context;
281
317
  context.camera = new TgdCameraOrthographic({
282
318
  zoom: 1,
@@ -300,7 +336,7 @@ export class PainterManager {
300
336
  context.add(clear, new TgdPainterState(context, {
301
337
  depth: "less",
302
338
  cull: "back",
303
- children: [this.groupCells],
339
+ children: [this.groupCells, painterSynapses],
304
340
  }), new TgdPainterClear(context, { name: "Clear depth", depth: 1 }), new TgdPainterState(context, {
305
341
  depth: "lessOrEqual",
306
342
  blend: "add",
@@ -332,7 +368,7 @@ export class PainterManager {
332
368
  }
333
369
  }
334
370
  }
335
- export function usePainterManager({ backgroundColor, circuit, loadCell, onCellHover, onCellClick, highlightedCellIds, onLoadProgress, gizmo, verbose, }) {
371
+ export function usePainterManager({ backgroundColor, circuit, loadCell, onCellHover, onCellClick, highlightedCellIds, onLoadProgress, gizmo, verbose, synapses, synapsesRadius = 5, synapsesMinRadiusInPixels = 4, signals, }) {
336
372
  const [, setSpacePerPixel] = React.useState(-1);
337
373
  const ref = React.useRef(null);
338
374
  if (!ref.current) {
@@ -346,12 +382,25 @@ export function usePainterManager({ backgroundColor, circuit, loadCell, onCellHo
346
382
  manager.background = backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : "#000";
347
383
  return () => manager.eventScalebar.removeListener(setSpacePerPixel);
348
384
  }, [onLoadProgress, manager, verbose, backgroundColor]);
385
+ React.useEffect(() => {
386
+ if (!signals)
387
+ return;
388
+ const unregisterReset = signals.cameraReset.register(() => manager.cameraReset());
389
+ const unregisterSnapshot = signals.snapshot.register((options) => manager.capture(options));
390
+ return () => {
391
+ unregisterReset();
392
+ unregisterSnapshot();
393
+ };
394
+ }, [signals, manager]);
349
395
  React.useEffect(() => {
350
396
  manager.setCircuit(circuit, loadCell);
351
397
  }, [circuit, loadCell, manager]);
352
398
  React.useEffect(() => {
353
399
  manager.highlightedCellIds = highlightedCellIds;
354
400
  }, [highlightedCellIds, manager]);
401
+ React.useEffect(() => {
402
+ manager.setSynapses(synapses, synapsesRadius, synapsesMinRadiusInPixels);
403
+ }, [synapses, synapsesRadius, synapsesMinRadiusInPixels, manager]);
355
404
  React.useEffect(() => {
356
405
  if (!onCellHover)
357
406
  return;
@@ -373,4 +422,4 @@ export function usePainterManager({ backgroundColor, circuit, loadCell, onCellHo
373
422
  }, [gizmo, manager]);
374
423
  return ref.current;
375
424
  }
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc21hbGwtY2lyY3VpdC9wYWludGVyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFVBQVUsRUFDVixRQUFRLEVBR1IsZUFBZSxFQUdmLGVBQWUsRUFDZixlQUFlLEVBRWYsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBYTdDLE1BQU0sT0FBTyxjQUFjO0lBQTNCO1FBQ2tCLHlCQUFvQixHQUFHLElBQUksUUFBUSxFQUFXLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxJQUFJLFFBQVEsRUFBNEMsQ0FBQztRQUMxRSxtQkFBYyxHQUFHLElBQUksUUFBUSxFQUE0QyxDQUFDO1FBSTFFLGtCQUFhLEdBQUcsSUFBSSxRQUFRLEVBQVUsQ0FBQztRQWF0QywwQkFBcUIsR0FBRyxHQUFHLENBQUM7UUFDckMsWUFBTyxHQUE2QixJQUFJLENBQUM7UUFDekMsZ0JBQVcsR0FBRyxNQUFNLENBQUM7UUFDWixvQkFBZSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENB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
425
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc21hbGwtY2lyY3VpdC9wYWludGVyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixVQUFVLEVBQ1YsUUFBUSxFQUdSLGVBQWUsRUFFZixlQUFlLEVBQ2YsZUFBZSxFQUVmLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFjckQsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUFDa0IseUJBQW9CLEdBQUcsSUFBSSxRQUFRLEVBQVcsQ0FBQztRQUMvQyxtQkFBYyxHQUFHLElBQUksUUFBUSxFQUE0QyxDQUFDO1FBQzFFLG1CQUFjLEdBQUcsSUFBSSxRQUFRLEVBQTRDLENBQUM7UUFJMUUsa0JBQWEsR0FBRyxJQUFJLFFBQVEsRUFBVSxDQUFDO1FBYXRDLDBCQUFxQixHQUFHLEdBQUcsQ0FBQztRQUNyQyxZQUFPLEdBQTZCLElBQUksQ0FBQztR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
@@ -0,0 +1,2 @@
1
+ export * from "./painter-synapses";
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-synapses/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./painter-synapses";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNtYWxsLWNpcmN1aXQvcGFpbnRlci9wYWludGVyLXN5bmFwc2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUEifQ==
@@ -0,0 +1,23 @@
1
+ import { type TgdContext, TgdPainterGroup } from "@tolokoban/tgd";
2
+ export declare class PainterSynapses extends TgdPainterGroup {
3
+ readonly context: TgdContext;
4
+ private readonly texture;
5
+ private _synapses;
6
+ private painter;
7
+ private _radius;
8
+ private _minRadiusInPixels;
9
+ constructor(context: TgdContext);
10
+ get radius(): number;
11
+ set radius(radius: number);
12
+ get minRadiusInPixels(): number;
13
+ set minRadiusInPixels(minRadiusInPixels: number);
14
+ get synapses(): Array<{
15
+ coordinates: number[] | Float32Array;
16
+ color: string;
17
+ }>;
18
+ set synapses(synapses: Array<{
19
+ coordinates: number[] | Float32Array;
20
+ color: string;
21
+ }>);
22
+ }
23
+ //# sourceMappingURL=painter-synapses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"painter-synapses.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,eAAe,EAIhB,MAAM,gBAAgB,CAAC;AAExB,qBAAa,eAAgB,SAAQ,eAAe;aAOtB,OAAO,EAAE,UAAU;IAN/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,SAAS,CAAsE;IACvF,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,kBAAkB,CAAK;gBAEH,OAAO,EAAE,UAAU;IAU/C,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EASxB;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IACD,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,EAS9C;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAE7E;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EA+BpF;CACF"}
@@ -0,0 +1,79 @@
1
+ import { TgdPainterGroup, TgdPainterPointsCloud, TgdTexture2D, tgdCanvasCreatePalette, } from "@tolokoban/tgd";
2
+ export class PainterSynapses extends TgdPainterGroup {
3
+ constructor(context) {
4
+ super({ name: "PainterSynapses" });
5
+ this.context = context;
6
+ this._synapses = [];
7
+ this.painter = null;
8
+ this._radius = 5;
9
+ this._minRadiusInPixels = 4;
10
+ this.texture = new TgdTexture2D(context, {
11
+ params: {
12
+ magFilter: "NEAREST",
13
+ minFilter: "NEAREST",
14
+ },
15
+ });
16
+ }
17
+ get radius() {
18
+ return this._radius;
19
+ }
20
+ set radius(radius) {
21
+ if (this._radius === radius)
22
+ return;
23
+ this._radius = radius;
24
+ const { painter } = this;
25
+ if (painter) {
26
+ painter.radiusMultiplier = radius;
27
+ this.context.paint();
28
+ }
29
+ }
30
+ get minRadiusInPixels() {
31
+ return this._minRadiusInPixels;
32
+ }
33
+ set minRadiusInPixels(minRadiusInPixels) {
34
+ if (this._minRadiusInPixels === minRadiusInPixels)
35
+ return;
36
+ this._minRadiusInPixels = minRadiusInPixels;
37
+ const { painter } = this;
38
+ if (painter) {
39
+ painter.minSizeInPixels = minRadiusInPixels;
40
+ this.context.paint();
41
+ }
42
+ }
43
+ get synapses() {
44
+ return this._synapses;
45
+ }
46
+ set synapses(synapses) {
47
+ if (this._synapses === synapses)
48
+ return;
49
+ this._synapses = synapses;
50
+ this.removeAll();
51
+ if (synapses.length > 0) {
52
+ this.texture.loadBitmap(tgdCanvasCreatePalette(synapses.map((synapse) => synapse.color)));
53
+ const attXYZR = [];
54
+ const attUV = [];
55
+ for (let indexGroup = 0; indexGroup < synapses.length; indexGroup++) {
56
+ const group = synapses[indexGroup];
57
+ const u = (indexGroup + 0.5) / synapses.length;
58
+ for (let indexCoords = 0; indexCoords < group.coordinates.length; indexCoords += 3) {
59
+ const x = group.coordinates[indexCoords + 0];
60
+ const y = group.coordinates[indexCoords + 1];
61
+ const z = group.coordinates[indexCoords + 2];
62
+ attXYZR.push(x, y, z, 1);
63
+ attUV.push(u, 0.5);
64
+ }
65
+ }
66
+ const painter = new TgdPainterPointsCloud(this.context, {
67
+ dataPoint: new Float32Array(attXYZR),
68
+ dataUV: new Float32Array(attUV),
69
+ texture: this.texture,
70
+ radiusMultiplier: this.radius,
71
+ minSizeInPixels: this.minRadiusInPixels,
72
+ });
73
+ this.painter = painter;
74
+ this.add(painter);
75
+ }
76
+ this.context.paint();
77
+ }
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1zeW5hcHNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc21hbGwtY2lyY3VpdC9wYWludGVyL3BhaW50ZXItc3luYXBzZXMvcGFpbnRlci1zeW5hcHNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQU9sRCxZQUE0QixPQUFtQjtRQUM3QyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBRFQsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUx2QyxjQUFTLEdBQW1FLEVBQUUsQ0FBQztRQUMvRSxZQUFPLEdBQWlDLElBQUksQ0FBQztRQUM3QyxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBSTdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQ3ZDLE1BQU0sRUFBRTtnQkFDTixTQUFTLEVBQUUsU0FBUztnQkFDcEIsU0FBUyxFQUFFLFNBQVM7YUFDckI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFjO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNO1lBQUUsT0FBTztRQUVwQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsZ0JB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
@@ -1,5 +1,6 @@
1
1
  import type { ControlsLayoutProps } from "../controls-layout";
2
2
  import type { MorphoViewerTree } from "../morpho-viewer-simul";
3
+ import type { MorphoViewerSignals } from "../signals";
3
4
  import type { PropsForGizmo, PropsForScalebar } from "../types";
4
5
  export interface SectionColors {
5
6
  soma: string;
@@ -24,6 +25,12 @@ export type MorphoViewerSmallCircuitProps = PropsForGizmo & PropsForScalebar & {
24
25
  className?: string;
25
26
  backgroundColor?: string;
26
27
  circuit: MorphoViewerSmallCircuitCell[];
28
+ synapses?: Array<{
29
+ color: string;
30
+ coordinates: Float32Array | number[];
31
+ }>;
32
+ synapsesRadius?: number;
33
+ synapsesMinRadiusInPixels?: number;
27
34
  highlightedCellIds?: string[];
28
35
  onCellHover?(cell: MorphoViewerSmallCircuitCell | undefined): void;
29
36
  onCellClick?(cell: MorphoViewerSmallCircuitCell | undefined): void;
@@ -33,5 +40,6 @@ export type MorphoViewerSmallCircuitProps = PropsForGizmo & PropsForScalebar & {
33
40
  onLoadProgress?(progress: number): void;
34
41
  controls?: ControlsLayoutProps["content"];
35
42
  verbose?: boolean;
43
+ signals?: MorphoViewerSignals;
36
44
  };
37
45
  //# sourceMappingURL=types.d.ts.map
@@ -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,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhE,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,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,4BAA4B,EAAE,CAAC;IAIxC,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;CACnB,CAAC"}
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,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhE,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,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACxC,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;IAInC,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,2 +1,3 @@
1
1
  export * from "./morpho-viewer-somas-only";
2
+ export * from "./types";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-somas-only/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-somas-only/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,SAAS,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from "./morpho-viewer-somas-only";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNvbWFzLW9ubHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQSJ9
2
+ export * from "./types";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNvbWFzLW9ubHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLFNBQVMsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"adaptative-resolution.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/adaptative-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAElE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;;IAMxC,IAAI,OAAO,IAAI,UAAU,GAAG,IAAI,CAE/B;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EASrC;IAED,KAAK;IAML,QAAQ,CAAC,OAAO,aASd;IAEF,QAAQ,CAAC,MAAM,aASb;IAEF,OAAO,KAAK,UAAU,GAErB;IACD,OAAO,KAAK,UAAU,QAMrB;IAED,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAuBhC;CACH"}
1
+ {"version":3,"file":"adaptative-resolution.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/adaptative-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAYlE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;;IAMxC,IAAI,OAAO,IAAI,UAAU,GAAG,IAAI,CAE/B;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EASrC;IAED,KAAK;IAML,QAAQ,CAAC,OAAO,aASd;IAEF,QAAQ,CAAC,MAAM,aASb;IAEF,OAAO,KAAK,UAAU,GAErB;IACD,OAAO,KAAK,UAAU,QASrB;IAED,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CA0BhC;CACH"}
@@ -1,4 +1,5 @@
1
1
  import { TgdPainterLogic } from "@tolokoban/tgd";
2
+ const MIN_RESOLUTION = 0.2;
2
3
  export class AdpatativeResolution {
3
4
  constructor() {
4
5
  this._context = null;
@@ -34,7 +35,7 @@ export class AdpatativeResolution {
34
35
  this.wasLowRes = isLowRes;
35
36
  const minFPS = 30;
36
37
  const { fps } = context;
37
- if (isLowRes && wasLowRes) {
38
+ if (isLowRes && wasLowRes && fps > 0) {
38
39
  if (fps < minFPS) {
39
40
  this.countSlowFrame++;
40
41
  if (this.countSlowFrame > 1) {
@@ -76,12 +77,13 @@ export class AdpatativeResolution {
76
77
  return this._resolution;
77
78
  }
78
79
  set resolution(resolution) {
79
- if (this._resolution === resolution)
80
+ const clamped = Math.min(1, Math.max(MIN_RESOLUTION, resolution));
81
+ if (this._resolution === clamped)
80
82
  return;
81
- this._resolution = resolution;
83
+ this._resolution = clamped;
82
84
  const { context } = this;
83
85
  if (context)
84
- context.resolution = resolution;
86
+ context.resolution = clamped;
85
87
  }
86
88
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRhdGl2ZS1yZXNvbHV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zb21hcy1vbmx5L21hbmFnZXIvYWRhcHRhdGl2ZS1yZXNvbHV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQjtRQVJRLGFBQVEsR0FBc0IsSUFBSSxDQUFDO1FBQ25DLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQTJCbEIsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUN0QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFFckIsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUVyQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDO1FBRU8sV0FBTSxHQUFHLEdBQUcsRUFBRTtZQUNyQixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFFckIsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUVyQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQztRQWFlLHNCQUFpQixHQUFHLEdBQUcsRUFBRTtZQUN4QyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDOUMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUVyQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUN4QixJQUFJLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUU1QixNQUFNLGNBQWMsR0FBRyxTQUFBLElBQUksQ0FBQyxVQUFVLEVBQUksQ0FBQyxDQUFBLENBQUM7d0JBQzVDLE1BQU0sY0FBYyxHQUFHLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQztRQS9FQSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsT0FBMEI7UUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU87WUFBRSxPQUFPO1FBRXRDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBd0JELElBQVksVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQVksVUFBVSxDQUFDLFVBQWtCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVO1lBQUUsT0FBTztRQUU1QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksT0FBTztZQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9DLENBQUM7Q0EwQkYifQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRhdGl2ZS1yZXNvbHV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zb21hcy1vbmx5L21hbmFnZXIvYWRhcHRhdGl2ZS1yZXNvbHV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFVbEUsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBRTNCLE1BQU0sT0FBTyxvQkFBb0I7SUFTL0I7UUFSUSxhQUFRLEdBQXNCLElBQUksQ0FBQztRQUNuQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2QsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUEyQmxCLFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBRXJCLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxDQUFDO2dCQUFFLE9BQU87WUFFckMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQztRQUVPLFdBQU0sR0FBRyxHQUFHLEVBQUU7WUFDckIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBRXJCLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxDQUFDO2dCQUFFLE9BQU87WUFFckMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFB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