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