@openbraininstitute/morphoviewer 0.26.2 → 0.26.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/components/button-reset-camera/button-reset-camera.js +2 -2
  2. package/dist/components/button-reset-camera/button-reset-camera.module.css +10 -0
  3. package/dist/components/controls-layout/controls-layout.js +1 -1
  4. package/dist/components/controls-layout/controls-layout.module.css +53 -0
  5. package/dist/components/morpho-viewer-octree/morpho-viewer-octree.js +1 -1
  6. package/dist/components/morpho-viewer-octree/morpho-viewer-octree.module.css +70 -0
  7. package/dist/components/morpho-viewer-octree/painter/manager.d.ts.map +1 -1
  8. package/dist/components/morpho-viewer-octree/painter/manager.js +9 -4
  9. package/dist/components/morpho-viewer-octree/types.d.ts +2 -1
  10. package/dist/components/morpho-viewer-octree/types.d.ts.map +1 -1
  11. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.js +1 -1
  12. package/dist/components/morpho-viewer-scalebar/morpho-viewer-scalebar.module.css +13 -0
  13. package/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.js +1 -1
  14. package/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.module.css +25 -0
  15. package/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.js +2 -2
  16. package/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.module.css +115 -0
  17. package/dist/components/morpho-viewer-simul/components/hint/hint.js +1 -1
  18. package/dist/components/morpho-viewer-simul/components/hint/hint.module.css +23 -0
  19. package/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.js +1 -1
  20. package/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.module.css +5 -0
  21. package/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.d.ts +1 -1
  22. package/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.js +2 -2
  23. package/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.module.css +20 -0
  24. package/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.js +3 -3
  25. package/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.module.css +21 -0
  26. package/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.d.ts +1 -1
  27. package/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.js +1 -1
  28. package/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.module.css +52 -0
  29. package/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.js +1 -1
  30. package/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.module.css +69 -0
  31. package/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.js +1 -1
  32. package/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.js +3 -3
  33. package/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.module.css +60 -0
  34. package/dist/components/morpho-viewer-simul/morpho-viewer-simul.js +1 -1
  35. package/dist/components/morpho-viewer-simul/morpho-viewer-simul.module.css +94 -0
  36. package/dist/components/morpho-viewer-simul/painter/manager.js +1 -1
  37. package/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.js +1 -1
  38. package/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.js +1 -1
  39. package/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.js +1 -1
  40. package/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.d.ts +1 -1
  41. package/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.js +1 -1
  42. package/dist/components/morpho-viewer-simul/painter/structure.d.ts.map +1 -1
  43. package/dist/components/morpho-viewer-simul/painter/structure.js +43 -20
  44. package/dist/components/morpho-viewer-simul/painter/tree.d.ts.map +1 -1
  45. package/dist/components/morpho-viewer-simul/painter/tree.js +17 -22
  46. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +1 -1
  47. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.module.css +63 -0
  48. package/dist/components/morpho-viewer-small-circuit/painter/manager.js +3 -3
  49. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts +1 -1
  50. package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +1 -1
  51. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts +1 -1
  52. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.js +1 -1
  53. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +1 -1
  54. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.d.ts.map +1 -1
  55. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.js +11 -28
  56. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.d.ts +1 -1
  57. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.d.ts.map +1 -1
  58. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/proximity.js +3 -2
  59. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.d.ts +3 -0
  60. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.d.ts.map +1 -0
  61. package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.js +24 -0
  62. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +5 -0
  63. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
  64. package/dist/components/morpho-viewer-somas-only/manager/manager.js +41 -4
  65. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +1 -1
  66. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.js +1 -1
  67. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.module.css +15 -0
  68. package/dist/components/morpho-viewer-spinner/morpho-viewer-spinner.js +2 -2
  69. package/dist/components/morpho-viewer-spinner/morpho-viewer-spinner.module.css +31 -0
  70. package/dist/components/tooltip/tooltip.js +1 -1
  71. package/dist/components/tooltip/tooltip.module.css +74 -0
  72. package/dist/icons/icon.module.css +19 -0
  73. package/dist/icons/spinner.js +1 -1
  74. package/dist/morphology/painter/factory.js +1 -1
  75. package/dist/morphology/painter/nodes.d.ts +1 -1
  76. package/dist/morphology/painter/nodes.js +1 -1
  77. package/dist/morphology/painter/painter.d.ts +1 -1
  78. package/dist/morphology/painter/segments.js +1 -1
  79. package/dist/morphology/painter/textures.d.ts +1 -1
  80. package/dist/package.json +9 -5
  81. package/dist/parser/swc.d.ts +1 -1
  82. package/dist/parser/swc.js +1 -1
  83. package/dist/tools/morphology-to-tree.d.ts +2 -2
  84. package/dist/tools/morphology-to-tree.js +1 -1
  85. package/dist/tools/swc-to-tree.d.ts +1 -1
  86. package/dist/tools/swc-to-tree.js +1 -1
  87. package/package.json +8 -4
@@ -0,0 +1,69 @@
1
+ .speedCombo {
2
+ position: absolute;
3
+ left: 0;
4
+ bottom: calc(48px + 32px);
5
+ width: 48px;
6
+ height: auto;
7
+ display: grid;
8
+ place-items: center;
9
+ }
10
+
11
+ button.speedComboButton {
12
+ display: inline-block;
13
+ font: inherit;
14
+ font-size: 80%;
15
+ border: none;
16
+ color: #000;
17
+ background: #fff;
18
+ border-radius: 99vmax;
19
+ width: auto;
20
+ text-align: center;
21
+
22
+ &:hover {
23
+ background: #adf;
24
+ }
25
+ }
26
+
27
+ div.dialog {
28
+ backdrop-filter: brightness(0.333);
29
+ position: absolute;
30
+ left: 0;
31
+ top: 0;
32
+ width: 100%;
33
+ height: 100%;
34
+ opacity: 0;
35
+ pointer-events: none;
36
+ transition: all 0.2s;
37
+ z-index: 9999;
38
+
39
+ &.open {
40
+ opacity: 1;
41
+ pointer-events: all;
42
+ }
43
+
44
+ > div.column {
45
+ display: flex;
46
+ flex-wrap: nowrap;
47
+ flex-direction: column;
48
+ justify-content: flex-start;
49
+ align-items: flex-start;
50
+ gap: 0.5em;
51
+ border: none;
52
+ background: #0005;
53
+ position: absolute;
54
+ top: auto;
55
+ left: 0;
56
+ bottom: calc(80px + 32px);
57
+ padding: 8px;
58
+ margin: 0;
59
+
60
+ > div.row {
61
+ display: flex;
62
+ flex-wrap: nowrap;
63
+ flex-direction: row;
64
+ justify-content: flex-start;
65
+ align-items: center;
66
+ gap: 0.5em;
67
+ }
68
+ }
69
+ }
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEventValue } from "@/utils";
2
+ import { useEventValue } from "./../../../../utils";
3
3
  import PlayButton from "./play-button";
4
4
  import SimulCombo from "./simul-combo";
5
5
  import { SpeedCombo } from "./speed-combo";
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { classNames, useEventValue } from "@/utils";
2
+ import { classNames, useEventValue } from "./../../../../utils";
3
3
  import styles from "./zoom-slider.module.css";
4
- import { IconZoomOut } from "@/components/icons/zoom-out";
5
- import { IconZoomIn } from "@/components/icons/zoom-in";
4
+ import { IconZoomOut } from "./../../../icons/zoom-out";
5
+ import { IconZoomIn } from "./../../../icons/zoom-in";
6
6
  export default function ZoomSlider({ className, painterManager }) {
7
7
  const zoom = useEventValue(1, painterManager.eventZoom);
8
8
  return (_jsxs("div", { className: classNames(className, styles.zoomSlider), children: [_jsx("button", { type: "button", onClick: painterManager.zoomOut, children: _jsx(IconZoomOut, {}) }), _jsx("input", { type: "range", value: zoom, onInput: (evt) => {
@@ -0,0 +1,60 @@
1
+ .zoomSlider {
2
+ display: flex;
3
+ flex-wrap: nowrap;
4
+ flex-direction: row;
5
+ justify-content: flex-start;
6
+ align-items: center;
7
+ gap: 0.5em;
8
+ width: 50%;
9
+ z-index: 9;
10
+
11
+ > * {
12
+ flex: 1 1 auto;
13
+ }
14
+
15
+ > button {
16
+ flex: 0 0 auto;
17
+ display: grid;
18
+ place-items: center;
19
+ width: 1.5em;
20
+ height: 1.5em;
21
+ border-radius: 0.25em;
22
+ cursor: pointer;
23
+ background-color: #adf0;
24
+ transition: all 0.3s;
25
+
26
+ &:hover {
27
+ background-color: #adf;
28
+ color: #000;
29
+ }
30
+ }
31
+
32
+ > :global(.ant-slider) {
33
+ > :global(.ant-slider-rail) {
34
+ background-color: #fff7;
35
+ }
36
+ }
37
+
38
+ --color-input-range: #adf;
39
+
40
+ /* input[type="range"]::-webkit-slider-thumb {
41
+ background: var(--color-input-range);
42
+ cursor: pointer;
43
+ }
44
+
45
+ input[type="range"]::-moz-range-thumb {
46
+ background: var(--color-input-range);
47
+ cursor: pointer;
48
+ }
49
+
50
+ input[type="range"]::-ms-thumb {
51
+ background: var(--color-input-range);
52
+ cursor: pointer;
53
+ } */
54
+ }
55
+
56
+ @container (width < 600px) {
57
+ .zoomSlider > input {
58
+ display: none;
59
+ }
60
+ }
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tgdFullscreenToggle } from "@tolokoban/tgd";
3
3
  import React from "react";
4
- import { useDebugMode } from "@/utils";
4
+ import { useDebugMode } from "./../../utils";
5
5
  import { ButtonCameraReset } from "../button-reset-camera";
6
6
  import { IconClose } from "../icons/close";
7
7
  import { IconCopy } from "../icons/copy";
@@ -0,0 +1,94 @@
1
+ .main {
2
+ position: absolute;
3
+ left: 0;
4
+ top: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ overflow: hidden;
8
+
9
+ background-color: #000;
10
+ color: #fff;
11
+
12
+ > canvas {
13
+ position: absolute;
14
+ left: 0;
15
+ top: 0;
16
+ width: 100%;
17
+ height: 100%;
18
+ }
19
+
20
+ .loading {
21
+ position: absolute;
22
+ left: 0;
23
+ top: 0;
24
+ width: 100%;
25
+ height: 100%;
26
+ display: grid;
27
+ place-content: center;
28
+ font-size: 1000%;
29
+ }
30
+
31
+ > header {
32
+ top: 0;
33
+ bottom: auto;
34
+ }
35
+
36
+ > footer {
37
+ top: auto;
38
+ bottom: 0;
39
+ }
40
+
41
+ > header,
42
+ > footer {
43
+ container-type: inline-size;
44
+ position: absolute;
45
+ left: 0;
46
+ width: 100%;
47
+ box-sizing: border-box;
48
+ padding: 1em;
49
+ margin: 0;
50
+ display: flex;
51
+ flex-wrap: nowrap;
52
+ flex-direction: row;
53
+ justify-content: space-between;
54
+ align-items: center;
55
+ gap: 0;
56
+
57
+ > div.flex {
58
+ display: flex;
59
+ flex-wrap: nowrap;
60
+ flex-direction: row;
61
+ justify-content: flex-start;
62
+ align-items: center;
63
+ gap: 0.5em;
64
+ }
65
+
66
+ button {
67
+ font: inherit;
68
+ width: 2.5em;
69
+ height: 2.5em;
70
+ display: grid;
71
+ place-items: center;
72
+ flex: 0 0 auto;
73
+ cursor: pointer;
74
+ color: #fff;
75
+ border: 2px solid #000;
76
+ border-radius: 2px;
77
+ background: #3a3a3a;
78
+ margin: 0;
79
+ box-sizing: border-box;
80
+ transition: all 0.3s;
81
+
82
+ &:hover {
83
+ background-color: #adf;
84
+ color: #000;
85
+ }
86
+ }
87
+
88
+ .zoomSlider {
89
+ color: #fff;
90
+ flex: 0 0 auto;
91
+ width: 240px;
92
+ }
93
+ }
94
+ }
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { TgdColor, TgdContext, TgdControllerCameraOrbit, TgdEvent, TgdMat4, TgdVec3, tgdCalcMapRange, } from "@tolokoban/tgd";
3
3
  import React from "react";
4
- import { useEventValue } from "@/utils";
4
+ import { useEventValue } from "./../../../utils";
5
5
  import { makeCamera } from "./camera";
6
6
  import { Initializer } from "./initializer";
7
7
  import { computeSectionOffset } from "./math";
@@ -1,7 +1,7 @@
1
1
  import { TgdPainter, TgdPainterGroup, TgdPainterIcon, } from "@tolokoban/tgd";
2
2
  import { PainterCursorFill } from "./fill";
3
3
  import { makeTexture } from "./texture";
4
- import { TIMELINE_HEIGHT, TIMELINE_MARGIN } from "@/components/morpho-viewer-simul/contants";
4
+ import { TIMELINE_HEIGHT, TIMELINE_MARGIN } from "./../../../../contants";
5
5
  export class PainterCursor extends TgdPainter {
6
6
  constructor(context, spikingManager) {
7
7
  super();
@@ -1,5 +1,5 @@
1
1
  import { TgdPainter, TgdPainterProgram, TgdUniformBufferObject, TgdVec2, } from "@tolokoban/tgd";
2
- import { TIMELINE_MARGIN, TIMELINE_HEIGHT } from "@/components/morpho-viewer-simul/contants";
2
+ import { TIMELINE_MARGIN, TIMELINE_HEIGHT } from "./../../../../contants";
3
3
  export class PainterCursorFill extends TgdPainter {
4
4
  constructor(context, spikingManager) {
5
5
  super();
@@ -1,5 +1,5 @@
1
1
  import { TgdColor, TgdPainterGroup, TgdPainterOverlay, TgdTexture2D, tgdCalcClamp, tgdCanvasCreate, tgdCanvasCreateWithContext2D, } from "@tolokoban/tgd";
2
- import { TIMELINE_HEIGHT, TIMELINE_MARGIN } from "@/components/morpho-viewer-simul/contants";
2
+ import { TIMELINE_HEIGHT, TIMELINE_MARGIN } from "./../../../contants";
3
3
  import { PainterCursor } from "./cursor";
4
4
  import { FramebufferTicks } from "./ticks";
5
5
  export class PainterSpikingOverlay extends TgdPainterGroup {
@@ -1,5 +1,5 @@
1
1
  import { TgdContext, TgdEvent, TgdPainterFramebuffer, TgdPainterProgram, TgdTexture2D } from "@tolokoban/tgd";
2
- import { MorphoViewerSpikeRecord } from "@/components/morpho-viewer-simul/types/public";
2
+ import { MorphoViewerSpikeRecord } from "../../../types/public";
3
3
  export interface FramebufferTicksOptions {
4
4
  texture: TgdTexture2D;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import { tgdCalcMix, TgdFilterBlur, TgdMaterialSolid, TgdPainterClear, TgdPainterFilter, TgdPainterFramebuffer, TgdPainterGroup, TgdPainterSegmentsMorphing, TgdPainterState, TgdTexture2D, } from "@tolokoban/tgd";
2
- import { SPIKING_BLUR_SIZE, SPIKING_COLOR, SPIKING_COLOR_MIX, SPIKING_RADIUS_MULTIPLIER, } from "@/components/morpho-viewer-simul/contants";
2
+ import { SPIKING_BLUR_SIZE, SPIKING_COLOR, SPIKING_COLOR_MIX, SPIKING_RADIUS_MULTIPLIER, } from "./../../../contants";
3
3
  export class PainterSpiking extends TgdPainterGroup {
4
4
  constructor(context, data, spikingManager) {
5
5
  super({ name: "PainterSpiking" });
@@ -1 +1 @@
1
- {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAKzB,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAMlB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,qBAAa,SAAS;IACpB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,aAAa,CAAC;IAKpC,SAAgB,aAAa,iBAAwB;IACrD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/C,SAAgB,oBAAoB,EAAE,OAAO,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAI7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsC;IACzE,OAAO,CAAC,mBAAmB,CAAkB;gBAEjC,UAAU,EAAE,gBAAgB;IAmBxC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,wBAAwB;IAKhC,IAAI,kBAAkB,YAErB;IAED,OAAO,CAAC,cAAc;IAmCtB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE;IAI1D,2BAA2B,CACzB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA8BpD,IAAI,MAAM,WAET;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;IAOjC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI;IAI9D,OAAO,CAAC,aAAa;CAgCtB"}
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAKzB,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAMlB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,qBAAa,SAAS;IACpB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,aAAa,CAAC;IAKpC,SAAgB,aAAa,iBAAwB;IACrD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/C,SAAgB,oBAAoB,EAAE,OAAO,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAI7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsC;IACzE,OAAO,CAAC,mBAAmB,CAAkB;gBAEjC,UAAU,EAAE,gBAAgB;IAmBxC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,wBAAwB;IAKhC,IAAI,kBAAkB,YAErB;IAED,OAAO,CAAC,cAAc;IA0DtB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE;IAI1D,2BAA2B,CACzB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA8BpD,IAAI,MAAM,WAET;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;IAOjC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI;IAI9D,OAAO,CAAC,aAAa;CAgCtB"}
@@ -56,27 +56,50 @@ export class Structure {
56
56
  }
57
57
  registerBranch(parent, node, distanceFromSoma) {
58
58
  var _a;
59
- node.distanceFromSoma = distanceFromSoma;
60
- const { type } = node;
61
- if ([
62
- MorphoViewerTreeItemType.Soma,
63
- MorphoViewerTreeItemType.Dendrite,
64
- MorphoViewerTreeItemType.ApicalDendrite,
65
- MorphoViewerTreeItemType.BasalDendrite,
66
- ].includes(type)) {
67
- this.bboxDendrites.addSphere(node.x, node.y, node.z, node.radius);
68
- if (type === MorphoViewerTreeItemType.Soma) {
69
- this.bboxSoma.addSphere(node.x, node.y, node.z, node.radius);
59
+ const alreadyProcessedNodes = new Map();
60
+ const fringe = [
61
+ {
62
+ parent,
63
+ node,
64
+ distanceFromSoma,
65
+ },
66
+ ];
67
+ while (fringe.length > 0) {
68
+ const item = fringe.shift();
69
+ if (!item)
70
+ return;
71
+ const { parent, node, distanceFromSoma } = item;
72
+ if (alreadyProcessedNodes.get(node) === parent)
73
+ continue;
74
+ alreadyProcessedNodes.set(node, parent);
75
+ node.distanceFromSoma = distanceFromSoma;
76
+ const { type } = node;
77
+ if ([
78
+ MorphoViewerTreeItemType.Soma,
79
+ MorphoViewerTreeItemType.Dendrite,
80
+ MorphoViewerTreeItemType.ApicalDendrite,
81
+ MorphoViewerTreeItemType.BasalDendrite,
82
+ ].includes(type)) {
83
+ this.bboxDendrites.addSphere(node.x, node.y, node.z, node.radius);
84
+ if (type === MorphoViewerTreeItemType.Soma) {
85
+ this.bboxSoma.addSphere(node.x, node.y, node.z, node.radius);
86
+ }
70
87
  }
71
- }
72
- if (parent) {
73
- if (node.type === MorphoViewerTreeItemType.ApicalDendrite) {
74
- this._hasApicalDendrites = true;
88
+ if (parent) {
89
+ if (node.type === MorphoViewerTreeItemType.ApicalDendrite) {
90
+ this._hasApicalDendrites = true;
91
+ }
92
+ }
93
+ for (const child of (_a = node.children) !== null && _a !== void 0 ? _a : []) {
94
+ fringe.push({
95
+ parent: node,
96
+ node: child,
97
+ distanceFromSoma: distanceFromSoma +
98
+ (parent
99
+ ? computeDistance([parent.x, parent.y, parent.z], [node.x, node.y, node.z])
100
+ : 0),
101
+ });
75
102
  }
76
- }
77
- for (const child of (_a = node.children) !== null && _a !== void 0 ? _a : []) {
78
- this.registerBranch(node, child, distanceFromSoma +
79
- (parent ? computeDistance([parent.x, parent.y, parent.z], [node.x, node.y, node.z]) : 0));
80
103
  }
81
104
  }
82
105
  getSegmentsOfSection(sectionName) {
@@ -172,4 +195,4 @@ function adjustParentRadius(parent, node) {
172
195
  }
173
196
  return Math.max(parent.radius * 0.5, node.radius);
174
197
  }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zaW11bC9wYWludGVyL3N0cnVjdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGNBQWMsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBR0wsd0JBQXdCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBb0NqRSxNQUFNLE9BQU8sU0FBUztJQXNCcEIsWUFBWSxVQUE0Qjs7UUFmeEIsa0JBQWEsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBTXBDLFNBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBSTVCLGFBQVEsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBQ2pFLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUczQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQUEsVUFBVSxDQUFDLG9CQUFvQixtQ0FBSSxLQUFLLENBQUM7UUFDckUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFrQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUEyQixDQUFDO1FBQzdFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDeEQsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUN2QixJQUEwQixFQUMxQixNQUE2Qjs7UUFFN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFBLElBQUksQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekQsWUFBWSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7WUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxVQUFnQztRQUMvRCxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVPLGNBQWMsQ0FDcEIsTUFBbUMsRUFDbkMsSUFBMEIsRUFDMUIsZ0JBQXdCOztRQUV4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztRQUN0QixJQUNFO1lBQ0Usd0JBQXdCLENBQUMsSUFBSTtZQUM3Qix3QkFBd0IsQ0FBQyxRQUFRO1lBQ2pDLHdCQUF3QixDQUFDLGNBQWM7WUFDdkMsd0JBQXdCLENBQUMsYUFBYTtTQUN2QyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFDaEIsQ0FBQztZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRSxJQUFJLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUNELEtBQUssTUFBTSxLQUFLLElBQUksTUFBQSxJQUFJLENBQUMsUUFBUSxtQ0FBSSxFQUFFLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxDQUNqQixJQUFJLEVBQ0osS0FBSyxFQUNMLGdCQUFnQjtnQkFDZCxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLFdBQW1COztRQUN0QyxPQUFPLE1BQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsbUNBQUksRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCwyQkFBMkIsQ0FDekIsV0FBbUIsRUFDbkIsTUFBYztRQUVkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRWpCLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxXQUFXLGNBQWMsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDakUsSUFBSSwwQkFBMEIsR0FBRyxDQUFDLENBQUM7UUFDbkMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBQ2xDLElBQUksMEJBQTBCLEdBQUcsYUFBYSxJQUFJLHFCQUFxQixFQUFFLENBQUM7Z0JBRXhFLE9BQU87b0JBQ0wsT0FBTztvQkFDUCxNQUFNLEVBQ0osYUFBYSxHQUFHLENBQUM7d0JBQ2YsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEdBQUcsMEJBQTBCLENBQUMsR0FBRyxhQUFhO3dCQUN0RSxDQUFDLENBQUMsR0FBRztpQkFDVixDQUFDO1lBQ0osQ0FBQztZQUNELDBCQUEwQixJQUFJLGFBQWEsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTztZQUNMLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFhO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sS0FBSyxDQUFDLFVBQVUsS0FBSyxxQ0FBcUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFM0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQXNEO1FBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxhQUFhLENBQUMsTUFBNEIsRUFBRSxJQUEwQjs7UUFDNUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQWtCO1lBQzFCLFFBQVEsRUFBRSxFQUFFO1lBQ1osS0FBSztZQUNMLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRztZQUM1QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDM0IsWUFBWSxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDakQsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxhQUFhLEVBQUUsQ0FBQztZQUNoQixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3QixXQUFXLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUM3QyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsV0FBVyxFQUFFLENBQUM7WUFDZCxTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSTtTQUNMLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixNQUFNLFFBQVEsR0FBRyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQ0FBSSxFQUFFLENBQUM7UUFDbkUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBRUQsU0FBUywyQkFBMkIsQ0FBQyxLQUFxQixFQUFFLEtBQXFCO0lBQy9FLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQXlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBZTtJQUN2RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBQSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBSSxDQUFDLENBQUEsR0FBRyxTQUFBLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFJLENBQUMsQ0FBQSxHQUFHLFNBQUEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBT0QsU0FBUyxrQkFBa0IsQ0FBQyxNQUE0QixFQUFFLElBQTBCO0lBQ2xGLElBQ0UsTUFBTSxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxJQUFJO1FBQzdDLElBQUksQ0FBQyxJQUFJLEtBQUssd0JBQXdCLENBQUMsSUFBSSxFQUMzQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BELENBQUMifQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zaW11bC9wYWludGVyL3N0cnVjdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGNBQWMsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBR0wsd0JBQXdCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBb0NqRSxNQUFNLE9BQU8sU0FBUztJQXNCcEIsWUFBWSxVQUE0Qjs7UUFmeEIsa0JBQWEsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBTXBDLFNBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBSTVCLGFBQVEsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBQ2pFLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUczQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQUEsVUFBVSxDQUFDLG9CQUFvQixtQ0FBSSxLQUFLLENBQUM7UUFDckUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFrQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUEyQixDQUFDO1FBQzdFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDeEQsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUN2QixJQUEwQixFQUMxQixNQUE2Qjs7UUFFN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFBLElBQUksQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekQsWUFBWSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7WUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxVQUFnQztRQUMvRCxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVPLGNBQWMsQ0FDcEIsTUFBbUMsRUFDbkMsSUFBMEIsRUFDMUIsZ0JBQXdCOztRQUV4QixNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxFQUFxRCxDQUFDO1FBQzNGLE1BQU0sTUFBTSxHQUlOO1lBQ0o7Z0JBQ0UsTUFBTTtnQkFDTixJQUFJO2dCQUNKLGdCQUFnQjthQUNqQjtTQUNGLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU87WUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDaEQsSUFBSSxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssTUFBTTtnQkFBRSxTQUFTO1lBRXpELHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1lBQ3pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFDRTtnQkFDRSx3QkFBd0IsQ0FBQyxJQUFJO2dCQUM3Qix3QkFBd0IsQ0FBQyxRQUFRO2dCQUNqQyx3QkFBd0IsQ0FBQyxjQUFjO2dCQUN2Qyx3QkFBd0IsQ0FBQyxhQUFhO2FBQ3ZDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUNoQixDQUFDO2dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxJQUFJLEtBQUssd0JBQXdCLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0QsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztnQkFDbEMsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQUEsSUFBSSxDQUFDLFFBQVEsbUNBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1YsTUFBTSxFQUFFLElBQUk7b0JBQ1osSUFBSSxFQUFFLEtBQUs7b0JBQ1gsZ0JBQWdCLEVBQ2QsZ0JBQWdCO3dCQUNoQixDQUFDLE1BQU07NEJBQ0wsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUMzRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNULENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLFdBQW1COztRQUN0QyxPQUFPLE1BQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsbUNBQUksRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCwyQkFBMkIsQ0FDekIsV0FBbUIsRUFDbkIsTUFBYztRQUVkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRWpCLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxXQUFXLGNBQWMsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDakUsSUFBSSwwQkFBMEIsR0FBRyxDQUFDLENBQUM7UUFDbkMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBQ2xDLElBQUksMEJBQTBCLEdBQUcsYUFBYSxJQUFJLHFCQUFxQixFQUFFLENBQUM7Z0JBRXhFLE9BQU87b0JBQ0wsT0FBTztvQkFDUCxNQUFNLEVBQ0osYUFBYSxHQUFHLENBQUM7d0JBQ2YsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEdBQUcsMEJBQTBCLENBQUMsR0FBRyxhQUFhO3dCQUN0RSxDQUFDLENBQUMsR0FBRztpQkFDVixDQUFDO1lBQ0osQ0FBQztZQUNELDBCQUEwQixJQUFJLGFBQWEsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTztZQUNMLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFhO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sS0FBSyxDQUFDLFVBQVUsS0FBSyxxQ0FBcUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFM0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQXNEO1FBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxhQUFhLENBQUMsTUFBNEIsRUFBRSxJQUEwQjs7UUFDNUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQWtCO1lBQzFCLFFBQVEsRUFBRSxFQUFFO1lBQ1osS0FBSztZQUNMLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRztZQUM1QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDM0IsWUFBWSxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDakQsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxhQUFhLEVBQUUsQ0FBQztZQUNoQixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3QixXQUFXLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUM3QyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsV0FBVyxFQUFFLENBQUM7WUFDZCxTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSTtTQUNMLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixNQUFNLFFBQVEsR0FBRyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQ0FBSSxFQUFFLENBQUM7UUFDbkUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBRUQsU0FBUywyQkFBMkIsQ0FBQyxLQUFxQixFQUFFLEtBQXFCO0lBQy9FLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQXlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBZTtJQUN2RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBQSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBSSxDQUFDLENBQUEsR0FBRyxTQUFBLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFJLENBQUMsQ0FBQSxHQUFHLFNBQUEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBT0QsU0FBUyxrQkFBa0IsQ0FBQyxNQUE0QixFQUFFLElBQTBCO0lBQ2xGLElBQ0UsTUFBTSxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxJQUFJO1FBQzdDLElBQUksQ0FBQyxJQUFJLEtBQUssd0JBQXdCLENBQUMsSUFBSSxFQUMzQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BELENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/tree.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,aAAa,CAyB1F;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,SAAI,QAWvD;AAOD,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,SAAI,QAa7D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,SAAK,EAAE,OAAO,SAAK,QAW3E;AAQD,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,QAmCtE"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/tree.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,aAAa,CAyB1F;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,SAAI,QAWvD;AAOD,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,SAAI,QAa7D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,SAAK,EAAE,OAAO,SAAK,QAW3E;AAQD,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,QA8BtE"}
@@ -67,30 +67,25 @@ export function computeRanks(item, rankMin = -1, rankMax = +1) {
67
67
  }
68
68
  }
69
69
  export function addLiaisons(root, items) {
70
- if (!root)
71
- return;
72
- if (root.children.length > 1) {
73
- for (let index = 0; index < root.children.length; index++) {
74
- const child = root.children[index];
75
- const liaison = Object.assign(Object.assign({}, child), { name: `${root.name} > ${child.name}`, type: MorphoViewerTreeItemType.Liaison, index: root.index, start: [...root.end], end: [...child.start], radiusStart: 1e-3, radiusEnd: 1e-3, children: [child] });
76
- const [x1, y1, z1] = liaison.start;
77
- const [x2, y2, z2] = liaison.end;
78
- const x = x2 - x1;
79
- const y = y2 - y1;
80
- const z = z2 - z1;
81
- const distance = x * x + y * y + z * z;
82
- if (distance > 1e-12) {
83
- console.log(root.name, "->", child.name, Math.sqrt(distance), liaison);
70
+ const fringe = [root];
71
+ while (fringe.length > 0) {
72
+ const root = fringe.shift();
73
+ if (!root)
74
+ continue;
75
+ if (root.children.length > 1) {
76
+ for (let index = 0; index < root.children.length; index++) {
77
+ const child = root.children[index];
78
+ const liaison = Object.assign(Object.assign({}, child), { name: `${root.name} > ${child.name}`, type: MorphoViewerTreeItemType.Liaison, index: root.index, start: [...root.end], end: [...child.start], radiusStart: 1e-3, radiusEnd: 1e-3, children: [child] });
79
+ items.push(liaison);
80
+ root.children[index] = liaison;
81
+ fringe.push(child);
84
82
  }
85
- items.push(liaison);
86
- root.children[index] = liaison;
87
- addLiaisons(child, items);
88
83
  }
89
- }
90
- else {
91
- for (const child of root.children) {
92
- addLiaisons(child, items);
84
+ else {
85
+ for (const child of root.children) {
86
+ fringe.push(child);
87
+ }
93
88
  }
94
89
  }
95
90
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2ltdWwvcGFpbnRlci90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSTNELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0IsRUFBRSxJQUEwQjtJQUN6RSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztJQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUs7UUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsU0FBUztRQUUxQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTTtZQUFFLFNBQVM7UUFFdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FB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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2ltdWwvcGFpbnRlci90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSTNELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0IsRUFBRSxJQUEwQjtJQUN6RSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztJQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUs7UUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsU0FBUztRQUUxQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTTtZQUFFLFNBQVM7UUFFdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FB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
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tgdFullscreenToggle } from "@tolokoban/tgd";
3
3
  import React from "react";
4
- import { classNames } from "@/utils";
4
+ import { classNames } from "./../../utils";
5
5
  import { ControlsLayout } from "../controls-layout";
6
6
  import MorphoViewerScalebar from "../morpho-viewer-scalebar";
7
7
  import { usePainterManager } from "./painter";
@@ -0,0 +1,63 @@
1
+ .morphoViewerSmallCircuit {
2
+ position: relative;
3
+ left: 0;
4
+ top: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ color: #fff;
8
+
9
+ >canvas.webgl {
10
+ position: absolute;
11
+ left: 0;
12
+ top: 0;
13
+ width: 100%;
14
+ height: 100%;
15
+ }
16
+
17
+ >header {
18
+ position: absolute;
19
+ left: 0;
20
+ top: 0;
21
+ width: 100%;
22
+ box-sizing: border-box;
23
+ padding: 1em;
24
+ margin: 0;
25
+ display: flex;
26
+ flex-wrap: nowrap;
27
+ flex-direction: row;
28
+ justify-content: space-between;
29
+ align-items: center;
30
+ gap: 2em;
31
+
32
+ >div.flex {
33
+ display: flex;
34
+ flex-wrap: nowrap;
35
+ flex-direction: row;
36
+ justify-content: flex-start;
37
+ align-items: center;
38
+ gap: 0.5em;
39
+ }
40
+
41
+ button {
42
+ font: inherit;
43
+ width: 2.5em;
44
+ height: 2.5em;
45
+ display: grid;
46
+ place-items: center;
47
+ flex: 0 0 auto;
48
+ cursor: pointer;
49
+ color: #fff;
50
+ border: 2px solid #000;
51
+ border-radius: 2px;
52
+ background: #3a3a3a;
53
+ margin: 0;
54
+ box-sizing: border-box;
55
+ transition: all 0.3s;
56
+
57
+ &:hover {
58
+ background-color: #adf;
59
+ color: #000;
60
+ }
61
+ }
62
+ }
63
+ }
@@ -1,8 +1,8 @@
1
1
  import { TgdBoundingBox, TgdCameraOrthographic, TgdColor, TgdContext, TgdEvent, TgdPainterClear, TgdPainterGroup, TgdPainterState, TgdValueWaitable, } from "@tolokoban/tgd";
2
2
  import React from "react";
3
- import { watchSpacePerPixel } from "@/behaviors";
4
- import { PainterGizmo } from "@/painters/gizmo";
5
- import { CacheLRU } from "@/tools/cache-lru";
3
+ import { watchSpacePerPixel } from "./../../../behaviors";
4
+ import { PainterGizmo } from "./../../../painters/gizmo";
5
+ import { CacheLRU } from "./../../../tools/cache-lru";
6
6
  import { CameraManager } from "./camera";
7
7
  import { OffscreenPainter } from "./offscreen-painter";
8
8
  import { PainterCell } from "./painter-cell";
@@ -1,5 +1,5 @@
1
1
  import { TgdContext } from "@tolokoban/tgd";
2
- import type { CacheLRU } from "@/tools/cache-lru";
2
+ import type { CacheLRU } from "../../../../tools/cache-lru";
3
3
  import type { MorphoViewerSmallCircuitCell, MorphoViewerSmallCircuitCellData } from "../../types";
4
4
  export interface OffscreenPainterOptions {
5
5
  circuit: MorphoViewerSmallCircuitCell[];
@@ -1,5 +1,5 @@
1
1
  import { TgdContext, TgdPainterClear, TgdPainterGroup, TgdPainterState, webglPresetDepth, } from "@tolokoban/tgd";
2
- import { vec3ToInt16 } from "@/utils";
2
+ import { vec3ToInt16 } from "./../../../../utils";
3
3
  import { PainterCell } from "../painter-cell";
4
4
  const FIRST_INDEX = 1;
5
5
  export class OffscreenPainter {
@@ -1,5 +1,5 @@
1
1
  import { TgdBoundingBox, type TgdContext, type TgdMaterial, TgdPainterNode } from "@tolokoban/tgd";
2
- import { type MorphoViewerTree } from "@/components/morpho-viewer-simul";
2
+ import { type MorphoViewerTree } from "../../../../morpho-viewer-simul";
3
3
  export declare function createCellFromTree(context: TgdContext, material: TgdMaterial, tree: MorphoViewerTree, forSelection: boolean): {
4
4
  bbox: TgdBoundingBox;
5
5
  node: TgdPainterNode;
@@ -1,5 +1,5 @@
1
1
  import { TgdBoundingBox, TgdPainterNode, TgdPainterSegments, TgdPainterSegmentsData, } from "@tolokoban/tgd";
2
- import { MorphoViewerTreeItemType, } from "@/components/morpho-viewer-simul";
2
+ import { MorphoViewerTreeItemType, } from "./../../../../morpho-viewer-simul";
3
3
  export function createCellFromTree(context, material, tree, forSelection) {
4
4
  const segmentsSoma = new TgdPainterSegmentsData();
5
5
  const segmentsNeurites = new TgdPainterSegmentsData();
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { TgdBoundingBox, TgdColor, TgdGeometrySphereIco, TgdLight, TgdMaterialDiffuse, TgdMaterialFlat, TgdMaterialFlatTexture, TgdPainterGroup, TgdPainterMesh, TgdQuat, TgdTexture2D, TgdVec4, tgdCanvasCreateFill, tgdCanvasCreatePalette, } from "@tolokoban/tgd";
3
- import { int16ToVec3 } from "@/utils";
3
+ import { int16ToVec3 } from "./../../../../utils";
4
4
  import { createCellFromTree } from "./factory/tree";
5
5
  export class PainterCell extends TgdPainterGroup {
6
6
  constructor(context, options) {