@cornerstonejs/core 1.22.1 → 1.23.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/cjs/RenderingEngine/StackViewport.js +8 -3
- package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/Viewport.d.ts +3 -1
- package/dist/cjs/RenderingEngine/Viewport.js +65 -24
- package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/VolumeViewport.d.ts +1 -1
- package/dist/cjs/RenderingEngine/VolumeViewport.js +4 -4
- package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/VolumeViewport3D.d.ts +1 -0
- package/dist/cjs/RenderingEngine/VolumeViewport3D.js +7 -0
- package/dist/cjs/RenderingEngine/VolumeViewport3D.js.map +1 -1
- package/dist/cjs/cache/classes/Surface.d.ts +22 -0
- package/dist/cjs/cache/classes/Surface.js +32 -0
- package/dist/cjs/cache/classes/Surface.js.map +1 -0
- package/dist/cjs/enums/Events.d.ts +2 -1
- package/dist/cjs/enums/Events.js +1 -0
- package/dist/cjs/enums/Events.js.map +1 -1
- package/dist/cjs/enums/GeometryType.d.ts +2 -1
- package/dist/cjs/enums/GeometryType.js +1 -0
- package/dist/cjs/enums/GeometryType.js.map +1 -1
- package/dist/cjs/loaders/geometryLoader.d.ts +2 -2
- package/dist/cjs/loaders/geometryLoader.js +6 -37
- package/dist/cjs/loaders/geometryLoader.js.map +1 -1
- package/dist/cjs/loaders/utils/contourSet/createContourSet.d.ts +2 -0
- package/dist/cjs/loaders/utils/contourSet/createContourSet.js +25 -0
- package/dist/cjs/loaders/utils/contourSet/createContourSet.js.map +1 -0
- package/dist/cjs/loaders/utils/contourSet/validateContourSet.d.ts +2 -0
- package/dist/cjs/loaders/utils/contourSet/validateContourSet.js +26 -0
- package/dist/cjs/loaders/utils/contourSet/validateContourSet.js.map +1 -0
- package/dist/cjs/loaders/utils/surface/createSurface.d.ts +2 -0
- package/dist/cjs/loaders/utils/surface/createSurface.js +27 -0
- package/dist/cjs/loaders/utils/surface/createSurface.js.map +1 -0
- package/dist/cjs/loaders/utils/surface/validateSurface.d.ts +2 -0
- package/dist/cjs/loaders/utils/surface/validateSurface.js +11 -0
- package/dist/cjs/loaders/utils/surface/validateSurface.js.map +1 -0
- package/dist/cjs/types/IActor.d.ts +1 -0
- package/dist/cjs/types/IGeometry.d.ts +2 -1
- package/dist/cjs/types/SurfaceData.d.ts +12 -0
- package/dist/cjs/types/SurfaceData.js +3 -0
- package/dist/cjs/types/SurfaceData.js.map +1 -0
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/cjs/utilities/getSpacingInNormalDirection.d.ts +5 -1
- package/dist/cjs/utilities/getSpacingInNormalDirection.js.map +1 -1
- package/dist/esm/RenderingEngine/StackViewport.js +8 -3
- package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/Viewport.d.ts +3 -1
- package/dist/esm/RenderingEngine/Viewport.js +45 -15
- package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
- package/dist/esm/RenderingEngine/VolumeViewport.d.ts +1 -1
- package/dist/esm/RenderingEngine/VolumeViewport.js +5 -5
- package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/VolumeViewport3D.d.ts +1 -0
- package/dist/esm/RenderingEngine/VolumeViewport3D.js +7 -0
- package/dist/esm/RenderingEngine/VolumeViewport3D.js.map +1 -1
- package/dist/esm/cache/classes/Surface.d.ts +22 -0
- package/dist/esm/cache/classes/Surface.js +27 -0
- package/dist/esm/cache/classes/Surface.js.map +1 -0
- package/dist/esm/enums/Events.d.ts +2 -1
- package/dist/esm/enums/Events.js +1 -0
- package/dist/esm/enums/Events.js.map +1 -1
- package/dist/esm/enums/GeometryType.d.ts +2 -1
- package/dist/esm/enums/GeometryType.js +1 -0
- package/dist/esm/enums/GeometryType.js.map +1 -1
- package/dist/esm/loaders/geometryLoader.d.ts +2 -2
- package/dist/esm/loaders/geometryLoader.js +6 -37
- package/dist/esm/loaders/geometryLoader.js.map +1 -1
- package/dist/esm/loaders/utils/contourSet/createContourSet.d.ts +2 -0
- package/dist/esm/loaders/utils/contourSet/createContourSet.js +21 -0
- package/dist/esm/loaders/utils/contourSet/createContourSet.js.map +1 -0
- package/dist/esm/loaders/utils/contourSet/validateContourSet.d.ts +2 -0
- package/dist/esm/loaders/utils/contourSet/validateContourSet.js +22 -0
- package/dist/esm/loaders/utils/contourSet/validateContourSet.js.map +1 -0
- package/dist/esm/loaders/utils/surface/createSurface.d.ts +2 -0
- package/dist/esm/loaders/utils/surface/createSurface.js +23 -0
- package/dist/esm/loaders/utils/surface/createSurface.js.map +1 -0
- package/dist/esm/loaders/utils/surface/validateSurface.d.ts +2 -0
- package/dist/esm/loaders/utils/surface/validateSurface.js +7 -0
- package/dist/esm/loaders/utils/surface/validateSurface.js.map +1 -0
- package/dist/esm/types/IActor.d.ts +1 -0
- package/dist/esm/types/IGeometry.d.ts +2 -1
- package/dist/esm/types/SurfaceData.d.ts +12 -0
- package/dist/esm/types/SurfaceData.js +2 -0
- package/dist/esm/types/SurfaceData.js.map +1 -0
- package/dist/esm/types/index.d.ts +2 -1
- package/dist/esm/utilities/getSpacingInNormalDirection.d.ts +5 -1
- package/dist/esm/utilities/getSpacingInNormalDirection.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/RenderingEngine/StackViewport.ts +8 -3
- package/src/RenderingEngine/Viewport.ts +57 -17
- package/src/RenderingEngine/VolumeViewport.ts +9 -11
- package/src/RenderingEngine/VolumeViewport3D.ts +8 -0
- package/src/cache/classes/Surface.ts +49 -0
- package/src/enums/Events.ts +5 -0
- package/src/enums/GeometryType.ts +1 -0
- package/src/loaders/geometryLoader.ts +13 -63
- package/src/loaders/utils/contourSet/createContourSet.ts +29 -0
- package/src/loaders/utils/contourSet/validateContourSet.ts +38 -0
- package/src/loaders/utils/surface/createSurface.ts +31 -0
- package/src/loaders/utils/surface/validateSurface.ts +9 -0
- package/src/types/IActor.ts +2 -0
- package/src/types/IGeometry.ts +2 -1
- package/src/types/SurfaceData.ts +15 -0
- package/src/types/index.ts +4 -0
- package/src/utilities/getSpacingInNormalDirection.ts +2 -2
|
@@ -7,6 +7,7 @@ declare class VolumeViewport3D extends BaseVolumeViewport {
|
|
|
7
7
|
getRotation: () => number;
|
|
8
8
|
getCurrentImageIdIndex: () => number | undefined;
|
|
9
9
|
getCurrentImageId: () => string;
|
|
10
|
+
posProcessNewActors(): void;
|
|
10
11
|
setSlabThickness(slabThickness: number, filterActorUIDs?: Array<string>): void;
|
|
11
12
|
setBlendMode(blendMode: BlendModes, filterActorUIDs?: string[], immediate?: boolean): void;
|
|
12
13
|
resetProperties(volumeId?: string): void;
|
|
@@ -24,6 +24,13 @@ class VolumeViewport3D extends BaseVolumeViewport {
|
|
|
24
24
|
this.resetVolumeViewportClippingRange();
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
|
+
posProcessNewActors() {
|
|
28
|
+
if (this.newActorAdded) {
|
|
29
|
+
const renderer = this.getRenderer();
|
|
30
|
+
renderer.resetCameraClippingRange();
|
|
31
|
+
}
|
|
32
|
+
super.posProcessNewActors();
|
|
33
|
+
}
|
|
27
34
|
setSlabThickness(slabThickness, filterActorUIDs) {
|
|
28
35
|
return null;
|
|
29
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolumeViewport3D.js","sourceRoot":"","sources":["../../../src/RenderingEngine/VolumeViewport3D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAStD,MAAM,gBAAiB,SAAQ,kBAAkB;IAC/C,YAAY,KAAoB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAyBf,gBAAW,GAAG,GAAW,EAAE,CAAC,CAAC,CAAC;QAE9B,2BAAsB,GAAG,GAAuB,EAAE;YAChD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,sBAAiB,GAAG,GAAW,EAAE;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QA/BA,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAEzD,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE/C,IAAI,kBAAkB,IAAI,IAAI,EAAE;YAC9B,YAAY,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;SACxD;QAED,IAAI,WAAW,IAAI,WAAW,KAAK,eAAe,CAAC,WAAW,EAAE;YAC9D,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;SACxC;IACH,CAAC;IAEM,WAAW,CAChB,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,IAAI,EAChB,aAAa,GAAG,IAAI;QAEpB,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAYD,gBAAgB,CACd,aAAqB,EACrB,eAA+B;QAE/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CACV,SAAqB,EACrB,eAA0B,EAC1B,SAAmB;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,QAAiB;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"VolumeViewport3D.js","sourceRoot":"","sources":["../../../src/RenderingEngine/VolumeViewport3D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAStD,MAAM,gBAAiB,SAAQ,kBAAkB;IAC/C,YAAY,KAAoB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAyBf,gBAAW,GAAG,GAAW,EAAE,CAAC,CAAC,CAAC;QAE9B,2BAAsB,GAAG,GAAuB,EAAE;YAChD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,sBAAiB,GAAG,GAAW,EAAE;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QA/BA,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAEzD,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE/C,IAAI,kBAAkB,IAAI,IAAI,EAAE;YAC9B,YAAY,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;SACxD;QAED,IAAI,WAAW,IAAI,WAAW,KAAK,eAAe,CAAC,WAAW,EAAE;YAC9D,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;SACxC;IACH,CAAC;IAEM,WAAW,CAChB,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,IAAI,EAChB,aAAa,GAAG,IAAI;QAEpB,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAYD,mBAAmB;QACjB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;SACrC;QACD,KAAK,CAAC,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAED,gBAAgB,CACd,aAAqB,EACrB,eAA+B;QAE/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CACV,SAAqB,EACrB,eAA0B,EAC1B,SAAmB;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,QAAiB;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SurfaceData, Point3 } from '../../types';
|
|
2
|
+
declare type SurfaceProps = {
|
|
3
|
+
id: string;
|
|
4
|
+
data: SurfaceData;
|
|
5
|
+
frameOfReferenceUID: string;
|
|
6
|
+
color?: Point3;
|
|
7
|
+
};
|
|
8
|
+
export declare class Surface {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly sizeInBytes: number;
|
|
11
|
+
readonly frameOfReferenceUID: string;
|
|
12
|
+
private color;
|
|
13
|
+
private points;
|
|
14
|
+
private polys;
|
|
15
|
+
constructor(props: SurfaceProps);
|
|
16
|
+
_getSizeInBytes(): number;
|
|
17
|
+
getColor(): Point3;
|
|
18
|
+
getPoints(): number[];
|
|
19
|
+
getPolys(): number[];
|
|
20
|
+
getSizeInBytes(): number;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class Surface {
|
|
2
|
+
constructor(props) {
|
|
3
|
+
this.color = [200, 0, 0];
|
|
4
|
+
this.id = props.id;
|
|
5
|
+
this.points = props.data.points;
|
|
6
|
+
this.polys = props.data.polys;
|
|
7
|
+
this.color = props.color ?? this.color;
|
|
8
|
+
this.frameOfReferenceUID = props.frameOfReferenceUID;
|
|
9
|
+
this.sizeInBytes = this._getSizeInBytes();
|
|
10
|
+
}
|
|
11
|
+
_getSizeInBytes() {
|
|
12
|
+
return this.points.length * 4 + this.polys.length * 4;
|
|
13
|
+
}
|
|
14
|
+
getColor() {
|
|
15
|
+
return this.color;
|
|
16
|
+
}
|
|
17
|
+
getPoints() {
|
|
18
|
+
return this.points;
|
|
19
|
+
}
|
|
20
|
+
getPolys() {
|
|
21
|
+
return this.polys;
|
|
22
|
+
}
|
|
23
|
+
getSizeInBytes() {
|
|
24
|
+
return this.sizeInBytes;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Surface.js","sourceRoot":"","sources":["../../../../src/cache/classes/Surface.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,OAAO;IAQlB,YAAY,KAAmB;QAJvB,UAAK,GAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAKlC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -27,6 +27,7 @@ declare enum Events {
|
|
|
27
27
|
STACK_VIEWPORT_NEW_STACK = "CORNERSTONE_STACK_VIEWPORT_NEW_STACK",
|
|
28
28
|
STACK_VIEWPORT_SCROLL = "CORNERSTONE_STACK_VIEWPORT_SCROLL",
|
|
29
29
|
GEOMETRY_CACHE_GEOMETRY_ADDED = "CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED",
|
|
30
|
-
VOLUME_SCROLL_OUT_OF_BOUNDS = "CORNERSTONE_VOLUME_SCROLL_OUT_OF_BOUNDS"
|
|
30
|
+
VOLUME_SCROLL_OUT_OF_BOUNDS = "CORNERSTONE_VOLUME_SCROLL_OUT_OF_BOUNDS",
|
|
31
|
+
CLIPPING_PLANES_UPDATED = "CORNERSTONE_CLIPPING_PLANES_UPDATED"
|
|
31
32
|
}
|
|
32
33
|
export default Events;
|
package/dist/esm/enums/Events.js
CHANGED
|
@@ -29,6 +29,7 @@ var Events;
|
|
|
29
29
|
Events["STACK_VIEWPORT_SCROLL"] = "CORNERSTONE_STACK_VIEWPORT_SCROLL";
|
|
30
30
|
Events["GEOMETRY_CACHE_GEOMETRY_ADDED"] = "CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED";
|
|
31
31
|
Events["VOLUME_SCROLL_OUT_OF_BOUNDS"] = "CORNERSTONE_VOLUME_SCROLL_OUT_OF_BOUNDS";
|
|
32
|
+
Events["CLIPPING_PLANES_UPDATED"] = "CORNERSTONE_CLIPPING_PLANES_UPDATED";
|
|
32
33
|
})(Events || (Events = {}));
|
|
33
34
|
export default Events;
|
|
34
35
|
//# sourceMappingURL=Events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../src/enums/Events.ts"],"names":[],"mappings":"AAGA,IAAK,
|
|
1
|
+
{"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../src/enums/Events.ts"],"names":[],"mappings":"AAGA,IAAK,MAwNJ;AAxND,WAAK,MAAM;IAST,qDAA2C,CAAA;IAK3C,+CAAqC,CAAA;IAQrC,yDAA+C,CAAA;IAO/C,mDAAyC,CAAA;IAOzC,mDAAyC,CAAA;IAOzC,qEAA2D,CAAA;IAO3D,2DAAiD,CAAA;IAOjD,yDAA+C,CAAA;IAO/C,uDAA6C,CAAA;IAS7C,qEAA2D,CAAA;IAS3D,uFAA6E,CAAA;IAO7E,mDAAyC,CAAA;IAOzC,6DAAmD,CAAA;IAInD,+EAAqE,CAAA;IAQrE,qDAA2C,CAAA;IAO3C,mEAAyD,CAAA;IAOzD,yEAA+D,CAAA;IAO/D,6EAAmE,CAAA;IAOnE,6EAAmE,CAAA;IAOnE,iFAAuE,CAAA;IAOvE,yDAA+C,CAAA;IAS/C,2DAAiD,CAAA;IAQjD,iEAAuD,CAAA;IAOvD,2EAAiE,CAAA;IAQjE,iEAAuD,CAAA;IAOvD,2EAAiE,CAAA;IAOjE,qEAA2D,CAAA;IAK3D,qFAA2E,CAAA;IAM3E,iFAAuE,CAAA;IAKvE,yEAA+D,CAAA;AAIjE,CAAC,EAxNI,MAAM,KAAN,MAAM,QAwNV;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeometryType.js","sourceRoot":"","sources":["../../../src/enums/GeometryType.ts"],"names":[],"mappings":"AAAA,IAAK,
|
|
1
|
+
{"version":3,"file":"GeometryType.js","sourceRoot":"","sources":["../../../src/enums/GeometryType.ts"],"names":[],"mappings":"AAAA,IAAK,YAGJ;AAHD,WAAK,YAAY;IACf,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACrB,CAAC,EAHI,YAAY,KAAZ,YAAY,QAGhB;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '@kitware/vtk.js/Rendering/Profiles/Geometry';
|
|
2
2
|
import { GeometryType } from '../enums';
|
|
3
|
-
import { IGeometry, PublicContourSetData } from '../types';
|
|
3
|
+
import { IGeometry, PublicContourSetData, PublicSurfaceData } from '../types';
|
|
4
4
|
declare type GeometryOptions = {
|
|
5
5
|
type: GeometryType;
|
|
6
|
-
geometryData: PublicContourSetData;
|
|
6
|
+
geometryData: PublicContourSetData | PublicSurfaceData;
|
|
7
7
|
};
|
|
8
8
|
declare function createAndCacheGeometry(geometryId: string, options: GeometryOptions): Promise<IGeometry>;
|
|
9
9
|
export { createAndCacheGeometry };
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import '@kitware/vtk.js/Rendering/Profiles/Geometry';
|
|
2
2
|
import cache from '../cache';
|
|
3
|
-
import { ContourSet } from '../cache/classes/ContourSet';
|
|
4
3
|
import { GeometryType } from '../enums';
|
|
4
|
+
import { createContourSet } from './utils/contourSet/createContourSet';
|
|
5
|
+
import { createSurface } from './utils/surface/createSurface';
|
|
5
6
|
async function createAndCacheGeometry(geometryId, options) {
|
|
6
7
|
let geometry = cache.getGeometry(geometryId);
|
|
7
8
|
if (geometry) {
|
|
8
9
|
return geometry;
|
|
9
10
|
}
|
|
10
11
|
if (options.type === GeometryType.CONTOUR) {
|
|
11
|
-
geometry =
|
|
12
|
+
geometry = createContourSet(geometryId, options.geometryData);
|
|
13
|
+
}
|
|
14
|
+
else if (options.type === GeometryType.SURFACE) {
|
|
15
|
+
geometry = createSurface(geometryId, options.geometryData);
|
|
12
16
|
}
|
|
13
17
|
else {
|
|
14
18
|
throw new Error('Unknown geometry type, Only CONTOUR is supported');
|
|
@@ -19,40 +23,5 @@ async function createAndCacheGeometry(geometryId, options) {
|
|
|
19
23
|
await cache.putGeometryLoadObject(geometryId, geometryLoadObject);
|
|
20
24
|
return geometry;
|
|
21
25
|
}
|
|
22
|
-
function _createContourSet(geometryId, contourSetData) {
|
|
23
|
-
if (!contourSetData || contourSetData.data.length === 0) {
|
|
24
|
-
throw new Error('Invalid contour set data, see publicContourSetData type for more info');
|
|
25
|
-
}
|
|
26
|
-
if (!contourSetData.id) {
|
|
27
|
-
throw new Error('Invalid contour set data, each contour set must have an id');
|
|
28
|
-
}
|
|
29
|
-
if (!contourSetData.data || !Array.isArray(contourSetData.data)) {
|
|
30
|
-
throw new Error('Invalid contour set data, each contour set must have an array of contours');
|
|
31
|
-
}
|
|
32
|
-
contourSetData.data.forEach((contourData) => {
|
|
33
|
-
if (!contourData.points || !Array.isArray(contourData.points)) {
|
|
34
|
-
throw new Error('Invalid contour set data, each contour must have an array of points');
|
|
35
|
-
}
|
|
36
|
-
contourData.points.forEach((point) => {
|
|
37
|
-
if (!point || !Array.isArray(point) || point.length !== 3) {
|
|
38
|
-
throw new Error('Invalid contour set data, each point must be an array of length 3');
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
const contourSet = new ContourSet({
|
|
43
|
-
id: contourSetData.id,
|
|
44
|
-
data: contourSetData.data,
|
|
45
|
-
color: contourSetData.color,
|
|
46
|
-
frameOfReferenceUID: contourSetData.frameOfReferenceUID,
|
|
47
|
-
segmentIndex: contourSetData.segmentIndex,
|
|
48
|
-
});
|
|
49
|
-
const geometry = {
|
|
50
|
-
id: geometryId,
|
|
51
|
-
type: GeometryType.CONTOUR,
|
|
52
|
-
data: contourSet,
|
|
53
|
-
sizeInBytes: contourSet.getSizeInBytes(),
|
|
54
|
-
};
|
|
55
|
-
return geometry;
|
|
56
|
-
}
|
|
57
26
|
export { createAndCacheGeometry };
|
|
58
27
|
//# sourceMappingURL=geometryLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometryLoader.js","sourceRoot":"","sources":["../../../src/loaders/geometryLoader.ts"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC;AAErD,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"geometryLoader.js","sourceRoot":"","sources":["../../../src/loaders/geometryLoader.ts"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC;AAErD,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAmB9D,KAAK,UAAU,sBAAsB,CACnC,UAAkB,EAClB,OAAwB;IAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC;KACjB;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,EAAE;QACzC,QAAQ,GAAG,gBAAgB,CACzB,UAAU,EACV,OAAO,CAAC,YAAoC,CAC7C,CAAC;KACH;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,EAAE;QAChD,QAAQ,GAAG,aAAa,CACtB,UAAU,EACV,OAAO,CAAC,YAAiC,CAC1C,CAAC;KACH;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;KACrE;IAED,MAAM,kBAAkB,GAAG;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;KACnC,CAAC;IAEF,MAAM,KAAK,CAAC,qBAAqB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAElE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GeometryType } from '../../../enums';
|
|
2
|
+
import { validateContourSet } from './validateContourSet';
|
|
3
|
+
import { ContourSet } from '../../../cache/classes/ContourSet';
|
|
4
|
+
export function createContourSet(geometryId, contourSetData) {
|
|
5
|
+
validateContourSet(contourSetData);
|
|
6
|
+
const contourSet = new ContourSet({
|
|
7
|
+
id: contourSetData.id,
|
|
8
|
+
data: contourSetData.data,
|
|
9
|
+
color: contourSetData.color,
|
|
10
|
+
frameOfReferenceUID: contourSetData.frameOfReferenceUID,
|
|
11
|
+
segmentIndex: 1,
|
|
12
|
+
});
|
|
13
|
+
const geometry = {
|
|
14
|
+
id: geometryId,
|
|
15
|
+
type: GeometryType.CONTOUR,
|
|
16
|
+
data: contourSet,
|
|
17
|
+
sizeInBytes: contourSet.getSizeInBytes(),
|
|
18
|
+
};
|
|
19
|
+
return geometry;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=createContourSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createContourSet.js","sourceRoot":"","sources":["../../../../../src/loaders/utils/contourSet/createContourSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,EAClB,cAAoC;IAGpC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,EAAE,EAAE,cAAc,CAAC,EAAE;QACrB,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,KAAK,EAAE,cAAc,CAAC,KAAK;QAC3B,mBAAmB,EAAE,cAAc,CAAC,mBAAmB;QACvD,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAc;QAC1B,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,YAAY,CAAC,OAAO;QAC1B,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,UAAU,CAAC,cAAc,EAAE;KACzC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function validateContourSet(contourSetData) {
|
|
2
|
+
if (!contourSetData || contourSetData.data.length === 0) {
|
|
3
|
+
throw new Error('Invalid contour set data, see publicContourSetData type for more info');
|
|
4
|
+
}
|
|
5
|
+
if (!contourSetData.id) {
|
|
6
|
+
throw new Error('Invalid contour set data, each contour set must have an id');
|
|
7
|
+
}
|
|
8
|
+
if (!contourSetData.data || !Array.isArray(contourSetData.data)) {
|
|
9
|
+
throw new Error('Invalid contour set data, each contour set must have an array of contours');
|
|
10
|
+
}
|
|
11
|
+
contourSetData.data.forEach((contourData) => {
|
|
12
|
+
if (!contourData.points || !Array.isArray(contourData.points)) {
|
|
13
|
+
throw new Error('Invalid contour set data, each contour must have an array of points');
|
|
14
|
+
}
|
|
15
|
+
contourData.points.forEach((point) => {
|
|
16
|
+
if (!point || !Array.isArray(point) || point.length !== 3) {
|
|
17
|
+
throw new Error('Invalid contour set data, each point must be an array of length 3');
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=validateContourSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateContourSet.js","sourceRoot":"","sources":["../../../../../src/loaders/utils/contourSet/validateContourSet.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,cAAoC;IACrE,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACvD,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;KACH;IAGD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE;QACtB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;KACH;IAED,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;QAC/D,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;KACH;IAED,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QAC1C,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC7D,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;SACH;QAED,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzD,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { GeometryType } from '../../../enums';
|
|
2
|
+
import { validateSurface } from './validateSurface';
|
|
3
|
+
import { Surface } from '../../../cache/classes/Surface';
|
|
4
|
+
export function createSurface(geometryId, SurfaceData) {
|
|
5
|
+
validateSurface(SurfaceData);
|
|
6
|
+
const surface = new Surface({
|
|
7
|
+
id: SurfaceData.id,
|
|
8
|
+
color: SurfaceData.color,
|
|
9
|
+
frameOfReferenceUID: SurfaceData.frameOfReferenceUID,
|
|
10
|
+
data: {
|
|
11
|
+
points: SurfaceData.data.points,
|
|
12
|
+
polys: SurfaceData.data.polys,
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
const geometry = {
|
|
16
|
+
id: geometryId,
|
|
17
|
+
type: GeometryType.SURFACE,
|
|
18
|
+
data: surface,
|
|
19
|
+
sizeInBytes: surface.getSizeInBytes(),
|
|
20
|
+
};
|
|
21
|
+
return geometry;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=createSurface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSurface.js","sourceRoot":"","sources":["../../../../../src/loaders/utils/surface/createSurface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,WAA8B;IAG9B,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;QACpD,IAAI,EAAE;YACJ,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM;YAC/B,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK;SAC9B;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAc;QAC1B,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,YAAY,CAAC,OAAO;QAC1B,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE;KACtC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSurface.js","sourceRoot":"","sources":["../../../../../src/loaders/utils/surface/validateSurface.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,cAAiC;IAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;IAEhC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;AACH,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { Surface } from '../cache/classes/Surface';
|
|
1
2
|
import { GeometryType } from '../enums';
|
|
2
3
|
import { IContourSet } from './IContourSet';
|
|
3
4
|
interface IGeometry {
|
|
4
5
|
id: string;
|
|
5
6
|
type: GeometryType;
|
|
6
|
-
data: IContourSet;
|
|
7
|
+
data: IContourSet | Surface;
|
|
7
8
|
sizeInBytes: number;
|
|
8
9
|
}
|
|
9
10
|
export default IGeometry;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Point3 from './Point3';
|
|
2
|
+
declare type PublicSurfaceData = {
|
|
3
|
+
id: string;
|
|
4
|
+
data: SurfaceData;
|
|
5
|
+
frameOfReferenceUID: string;
|
|
6
|
+
color?: Point3;
|
|
7
|
+
};
|
|
8
|
+
declare type SurfaceData = {
|
|
9
|
+
points: number[];
|
|
10
|
+
polys: number[];
|
|
11
|
+
};
|
|
12
|
+
export type { PublicSurfaceData, SurfaceData };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SurfaceData.js","sourceRoot":"","sources":["../../../src/types/SurfaceData.ts"],"names":[],"mappings":""}
|
|
@@ -57,6 +57,7 @@ import type ActorSliceRange from './ActorSliceRange';
|
|
|
57
57
|
import type ImageSliceData from './ImageSliceData';
|
|
58
58
|
import type IGeometry from './IGeometry';
|
|
59
59
|
import type { PublicContourSetData, ContourSetData, ContourData } from './ContourData';
|
|
60
|
+
import type { PublicSurfaceData, SurfaceData } from './SurfaceData';
|
|
60
61
|
import type ICachedGeometry from './ICachedGeometry';
|
|
61
62
|
import type { IContourSet } from './IContourSet';
|
|
62
63
|
import type { IContour } from './IContour';
|
|
@@ -67,4 +68,4 @@ import type { PixelDataTypedArray } from './PixelDataTypedArray';
|
|
|
67
68
|
import type { ImagePixelModule } from './ImagePixelModule';
|
|
68
69
|
import type { ImagePlaneModule } from './ImagePlaneModule';
|
|
69
70
|
import type { AffineMatrix } from './AffineMatrix';
|
|
70
|
-
export type { Cornerstone3DConfig, ICamera, IStackViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, VolumeScalarData, IViewportId, IImageVolume, IDynamicImageVolume, IRenderingEngine, ScalingParameters, PTScaling, Scaling, IStreamingImageVolume, IImage, IImageData, IImageCalibration, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, StackViewportProperties, VolumeViewportProperties, ViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, ViewportPreset, Metadata, OrientationVectors, Point2, Point3, Point4, Mat3, Plane, ViewportInputOptions, VOIRange, VOI, DisplayArea, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, IGeometry, IGeometryLoadObject, ICachedGeometry, PublicContourSetData, ContourSetData, ContourData, IContourSet, IContour, RGB, ColormapPublic, ColormapRegistration, PixelDataTypedArray, ImagePixelModule, ImagePlaneModule, AffineMatrix, };
|
|
71
|
+
export type { Cornerstone3DConfig, ICamera, IStackViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, VolumeScalarData, IViewportId, IImageVolume, IDynamicImageVolume, IRenderingEngine, ScalingParameters, PTScaling, Scaling, IStreamingImageVolume, IImage, IImageData, IImageCalibration, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, StackViewportProperties, VolumeViewportProperties, ViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, ViewportPreset, Metadata, OrientationVectors, Point2, Point3, Point4, Mat3, Plane, ViewportInputOptions, VOIRange, VOI, DisplayArea, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, IGeometry, IGeometryLoadObject, ICachedGeometry, PublicContourSetData, ContourSetData, ContourData, IContourSet, IContour, PublicSurfaceData, SurfaceData, RGB, ColormapPublic, ColormapRegistration, PixelDataTypedArray, ImagePixelModule, ImagePlaneModule, AffineMatrix, };
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
+
import { mat3 } from 'gl-matrix';
|
|
1
2
|
import { IImageVolume, Point3 } from '../types';
|
|
2
|
-
export default function getSpacingInNormalDirection(imageVolume: IImageVolume
|
|
3
|
+
export default function getSpacingInNormalDirection(imageVolume: IImageVolume | {
|
|
4
|
+
direction: mat3;
|
|
5
|
+
spacing: Point3;
|
|
6
|
+
}, viewPlaneNormal: Point3): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSpacingInNormalDirection.js","sourceRoot":"","sources":["../../../src/utilities/getSpacingInNormalDirection.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getSpacingInNormalDirection.js","sourceRoot":"","sources":["../../../src/utilities/getSpacingInNormalDirection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAE,MAAM,WAAW,CAAC;AAcvC,MAAM,CAAC,OAAO,UAAU,2BAA2B,CACjD,WAAgE,EAChE,eAAuB;IAEvB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;IAG3C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAW,CAAC;IAChD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAW,CAAC;IAChD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAW,CAAC;IAEhD,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAQ,eAAe,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAQ,eAAe,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAQ,eAAe,CAAC;KACzC,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAEvC,IAAI,CAAC,GAAG,CACN,gBAAgB,EAChB,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC3B,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC3B,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAC5B,CAAC;IAEF,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE/D,OAAO,wBAAwB,CAAC;AAClC,CAAC"}
|