@ohif/app 3.12.0-beta.77 → 3.12.0-beta.78

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 (48) hide show
  1. package/dist/{147.bundle.23cc8fbbd94c0b65d337.js → 147.bundle.53fe889b205dd91c245b.js} +2 -2
  2. package/dist/{1604.bundle.5d95724cde8a8c23f7d7.js → 1604.bundle.0d3b54b754c97de7aa88.js} +5 -5
  3. package/dist/{1919.bundle.9abab6d9c380f9ef6f0b.js → 1919.bundle.099a3ad4025e527284b0.js} +6 -6
  4. package/dist/{2701.bundle.4c715c1d9bb7828886d8.js → 2701.bundle.6418ae6e9e372ccae322.js} +4 -4
  5. package/dist/{9856.bundle.31827ec7e09a8978744c.js → 306.bundle.a2380c4b23436c127faf.js} +110 -1
  6. package/dist/{9892.bundle.a09d4f672f8a784971a2.js → 3190.bundle.cd955568fe4d80ab2e4b.js} +114 -1
  7. package/dist/{3613.bundle.4a3b2f819e9698e9b7b3.js → 3613.bundle.f5fceb4697407a89921b.js} +60 -105
  8. package/dist/{4019.bundle.ddfa6fc4ccf74563cd40.js → 4019.bundle.6505ff57ca48af03da8a.js} +2 -2
  9. package/dist/{7197.bundle.f3676c560bf394aafd45.js → 4092.bundle.48390d480273857e794e.js} +338 -7
  10. package/dist/{7197.css → 4092.css} +1 -0
  11. package/dist/{4113.bundle.87c1437c5d1452a0c08b.js → 4113.bundle.8e8cca0c8fbf690e7b93.js} +2 -2
  12. package/dist/{414.bundle.2f752ae2409c02c49f10.js → 414.bundle.597500ee9c214b0a7212.js} +8 -8
  13. package/dist/{4202.bundle.1cef28d8aec1155d35d1.js → 4202.bundle.1c5271f1cacf5794aba7.js} +2 -2
  14. package/dist/{5349.bundle.14d76a9cb0f587c90614.js → 5349.bundle.6bf58c3e9e9571fa8a7d.js} +4 -4
  15. package/dist/{5457.bundle.635f651e4719be983799.js → 5457.bundle.9758280deb7db83edb99.js} +0 -8
  16. package/dist/{5485.bundle.919876def56a45d73ab2.js → 5485.bundle.aafe4c0e2e9e2afd878d.js} +0 -8
  17. package/dist/{5802.bundle.48e7f1324fc9e4486603.js → 5802.bundle.8922caf16c088b10cdb0.js} +2 -2
  18. package/dist/{6201.bundle.9f04a5cc79aec668f347.js → 6201.bundle.b0a52e8b23e83d7820d6.js} +2 -2
  19. package/dist/{8815.bundle.75f4d45eedb9c28c2181.js → 6725.bundle.75f59fc21a7fbecb9bce.js} +468 -37
  20. package/dist/{6991.bundle.594d1a749b0e67bbedf9.js → 6991.bundle.500dbaf5bec95a3d49d2.js} +2 -2
  21. package/dist/{3409.bundle.0e1e8c8a894cea8bc17b.js → 7948.bundle.8c0bd83ffaacabc3dcbd.js} +889 -238
  22. package/dist/{810.bundle.fd0a60e4edaeff3cc7ff.js → 810.bundle.d31e9fd894cac5ec768a.js} +6 -6
  23. package/dist/{8558.bundle.ad2f1dac0b4b583d75db.js → 8558.bundle.83d96d728f9f186ea5ad.js} +1 -1
  24. package/dist/{934.bundle.a3ba7abd77061cfa2d32.js → 934.bundle.a25daa6ed5038a83faf8.js} +2 -2
  25. package/dist/{1447.bundle.0e0f2e950690447bfda1.js → 9548.bundle.9e723f4ad09b9c1b431a.js} +69 -43
  26. package/dist/{8740.bundle.39b40ee21a873e824ce8.js → 9845.bundle.6ee5ca8fe9f68cefd56d.js} +5 -5
  27. package/dist/{9862.bundle.dc627e5f01fc4698a00f.js → 9862.bundle.e2c4c129f7907500b840.js} +2 -2
  28. package/dist/{app.bundle.c1735280b1ffec7296cf.js → app.bundle.0cf7e86910258d22401b.js} +483 -146
  29. package/dist/app.bundle.css +1 -1
  30. package/dist/{compute.bundle.08b8136bed028bf71f58.js → compute.bundle.f6f1236073e2a486ddfb.js} +3 -3
  31. package/dist/index.html +1 -1
  32. package/dist/{polySeg.bundle.a9790a5891bb286e7d4f.js → polySeg.bundle.d0ed88f3bfea700c211b.js} +3 -3
  33. package/dist/sw.js +1 -1
  34. package/package.json +20 -20
  35. package/dist/8740.css +0 -1
  36. /package/dist/{1459.bundle.84812caf93825d54325d.js → 1459.bundle.c878b794be71883de852.js} +0 -0
  37. /package/dist/{1807.bundle.48ef151b1f5c3a5e7e63.js → 1807.bundle.ade363b62ad3a0442a9c.js} +0 -0
  38. /package/dist/{213.bundle.9f5dbdcc51ecade9796c.js → 213.bundle.1cc1975ae90ca2eadfd5.js} +0 -0
  39. /package/dist/{2243.bundle.d485d2f4c40244af3599.js → 2243.bundle.a4c417be34f113e1fbc6.js} +0 -0
  40. /package/dist/{2424.bundle.dc021a7edf7f3a35176a.js → 2424.bundle.22082b8a1483bc47cbb1.js} +0 -0
  41. /package/dist/{2518.bundle.bdbd870da5355fdf502a.js → 2518.bundle.b21d8c66dc8deb8ba922.js} +0 -0
  42. /package/dist/{319.bundle.cd9383a345b9da2ba840.js → 319.bundle.f5adcbbef5767dedc45d.js} +0 -0
  43. /package/dist/{6027.bundle.5a2c33fa1eb3d810e7c1.js → 6027.bundle.5649e4e1fde732251102.js} +0 -0
  44. /package/dist/{7159.bundle.a472333e58e930b53e22.js → 7159.bundle.a5991a5d4f0dd8f1c95f.js} +0 -0
  45. /package/dist/{7412.bundle.0764ad3a00b3e9a044d9.js → 7412.bundle.94802a6a629f62daab88.js} +0 -0
  46. /package/dist/{7431.bundle.6dee1ec831da974a7433.js → 7431.bundle.ad1982d7c54a5931d409.js} +0 -0
  47. /package/dist/{7639.bundle.12fe44f68f57a135f9d8.js → 7639.bundle.c6ee8cf4672716943e89.js} +0 -0
  48. /package/dist/{85.bundle.38a0d049316b0e71f7d0.js → 85.bundle.b1586702f9300c017632.js} +0 -0
@@ -5313,8 +5313,8 @@ const isPlaneIntersectingAABB = (origin, normal, minX, minY, minZ, maxX, maxY, m
5313
5313
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5314
5314
  /* harmony export */ H: () => (/* binding */ interpolatePoints)
5315
5315
  /* harmony export */ });
5316
- /* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56399);
5317
- /* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20071);
5316
+ /* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51167);
5317
+ /* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50647);
5318
5318
 
5319
5319
 
5320
5320
  function isPoints3D(points) {
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[7197],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[4092,8402],{
3
3
 
4
- /***/ 96975:
4
+ /***/ 9099:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -345,8 +345,8 @@ function getHangingProtocolModule() {
345
345
  }
346
346
  /* harmony default export */ const src_getHangingProtocolModule = (getHangingProtocolModule);
347
347
 
348
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 139 modules
349
- var default_src = __webpack_require__(11447);
348
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 141 modules
349
+ var default_src = __webpack_require__(39548);
350
350
  // EXTERNAL MODULE: ../../../extensions/default/src/utils/_shared/PROMPT_RESPONSES.ts
351
351
  var PROMPT_RESPONSES = __webpack_require__(96357);
352
352
  ;// ../../../extensions/cornerstone-dicom-seg/src/commandsModule.ts
@@ -397,8 +397,7 @@ const commandsModule = ({
397
397
  const {
398
398
  segmentationService,
399
399
  displaySetService,
400
- viewportGridService,
401
- toolGroupService
400
+ viewportGridService
402
401
  } = servicesManager.services;
403
402
  const actions = {
404
403
  /**
@@ -636,6 +635,22 @@ const commandsModule = ({
636
635
  } catch (e) {
637
636
  console.warn(e);
638
637
  }
638
+ },
639
+ toggleActiveSegmentationUtility: ({
640
+ itemId: buttonId
641
+ }) => {
642
+ const {
643
+ uiState,
644
+ setUIState
645
+ } = default_src.useUIStateStore.getState();
646
+ const isButtonActive = uiState['activeSegmentationUtility'] === buttonId;
647
+ console.log('toggleActiveSegmentationUtility', isButtonActive, buttonId);
648
+ // if the button is active, clear the active segmentation utility
649
+ if (isButtonActive) {
650
+ setUIState('activeSegmentationUtility', null);
651
+ } else {
652
+ setUIState('activeSegmentationUtility', buttonId);
653
+ }
639
654
  }
640
655
  };
641
656
  const definitions = {
@@ -653,6 +668,9 @@ const commandsModule = ({
653
668
  },
654
669
  downloadRTSS: {
655
670
  commandFn: actions.downloadRTSS
671
+ },
672
+ toggleActiveSegmentationUtility: {
673
+ commandFn: actions.toggleActiveSegmentationUtility
656
674
  }
657
675
  };
658
676
  return {
@@ -662,7 +680,279 @@ const commandsModule = ({
662
680
  };
663
681
  };
664
682
  /* harmony default export */ const src_commandsModule = (commandsModule);
683
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 192 modules
684
+ var cornerstone_src = __webpack_require__(37948);
685
+ // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3073 modules
686
+ var ui_next_src = __webpack_require__(1246);
687
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/index.js
688
+ var utilities = __webpack_require__(53860);
689
+ ;// ../../../extensions/cornerstone-dicom-seg/src/components/LogicalContourOperationsOptions.tsx
690
+
691
+
692
+
693
+
694
+
695
+
696
+ const {
697
+ LogicalOperation
698
+ } = utilities.contourSegmentation;
699
+ const options = [{
700
+ value: 'merge',
701
+ logicalOperation: LogicalOperation.Union,
702
+ label: 'Merge',
703
+ icon: 'actions-combine-merge',
704
+ helperIcon: 'helper-combine-merge'
705
+ }, {
706
+ value: 'intersect',
707
+ logicalOperation: LogicalOperation.Intersect,
708
+ label: 'Intersect',
709
+ icon: 'actions-combine-intersect',
710
+ helperIcon: 'helper-combine-intersect'
711
+ }, {
712
+ value: 'subtract',
713
+ logicalOperation: LogicalOperation.Subtract,
714
+ label: 'Subtract',
715
+ icon: 'actions-combine-subtract',
716
+ helperIcon: 'helper-combine-subtract'
717
+ }];
718
+
719
+ // Shared component for segment selection
720
+ function SegmentSelector({
721
+ label,
722
+ value,
723
+ onValueChange,
724
+ segments,
725
+ placeholder = 'Select a segment'
726
+ }) {
727
+ return /*#__PURE__*/react.createElement("div", {
728
+ className: "flex justify-between gap-6"
729
+ }, /*#__PURE__*/react.createElement("div", null, label), /*#__PURE__*/react.createElement(ui_next_src/* Select */.l6P, {
730
+ key: `select-segment-${label}`,
731
+ onValueChange: onValueChange,
732
+ value: value
733
+ }, /*#__PURE__*/react.createElement(ui_next_src/* SelectTrigger */.bqE, {
734
+ className: "overflow-hidden"
735
+ }, /*#__PURE__*/react.createElement(ui_next_src/* SelectValue */.yvm, {
736
+ placeholder: placeholder
737
+ })), /*#__PURE__*/react.createElement(ui_next_src/* SelectContent */.gCo, null, segments.map(segment => /*#__PURE__*/react.createElement(ui_next_src/* SelectItem */.ebT, {
738
+ key: segment.segmentIndex,
739
+ value: segment.segmentIndex.toString()
740
+ }, segment.label)))));
741
+ }
742
+ function LogicalContourOperationOptions() {
743
+ const {
744
+ servicesManager
745
+ } = (0,src/* useSystem */.Jg)();
746
+ const {
747
+ segmentationService
748
+ } = servicesManager.services;
749
+ const {
750
+ segmentationsWithRepresentations
751
+ } = (0,cornerstone_src.useActiveViewportSegmentationRepresentations)();
752
+ const activeRepresentation = segmentationsWithRepresentations?.find(({
753
+ representation
754
+ }) => representation?.active);
755
+ const segments = activeRepresentation ? Object.values(activeRepresentation.segmentation.segments) : [];
756
+
757
+ // Calculate the next available segment index
758
+ const nextSegmentIndex = activeRepresentation ? segmentationService.getNextAvailableSegmentIndex(activeRepresentation.segmentation.segmentationId) : 1;
759
+ const activeSegment = segments.find(segment => segment.active);
760
+ const activeSegmentIndex = activeSegment?.segmentIndex || 0;
761
+ const [operation, setOperation] = (0,react.useState)(options[0]);
762
+ const [segmentA, setSegmentA] = (0,react.useState)(activeSegmentIndex?.toString() || '');
763
+ const [segmentB, setSegmentB] = (0,react.useState)('');
764
+ const [createNewSegment, setCreateNewSegment] = (0,react.useState)(false);
765
+ const [newSegmentName, setNewSegmentName] = (0,react.useState)('');
766
+ (0,react.useEffect)(() => {
767
+ setSegmentA(activeSegmentIndex?.toString() || null);
768
+ }, [activeSegmentIndex]);
769
+ (0,react.useEffect)(() => {
770
+ setNewSegmentName(`Segment ${nextSegmentIndex}`);
771
+ }, [nextSegmentIndex]);
772
+ const runCommand = (0,src/* useRunCommand */.qN)();
773
+ const applyLogicalContourOperation = (0,react.useCallback)(() => {
774
+ let resultSegmentIndex = segmentA;
775
+ if (createNewSegment) {
776
+ resultSegmentIndex = nextSegmentIndex.toString();
777
+ runCommand('addSegment', {
778
+ segmentationId: activeRepresentation.segmentation.segmentationId,
779
+ config: {
780
+ label: newSegmentName,
781
+ segmentIndex: nextSegmentIndex
782
+ }
783
+ });
784
+ }
785
+ runCommand('applyLogicalContourOperation', {
786
+ segmentAInfo: {
787
+ segmentationId: activeRepresentation.segmentation.segmentationId,
788
+ segmentIndex: parseInt(segmentA)
789
+ },
790
+ segmentBInfo: {
791
+ segmentationId: activeRepresentation.segmentation.segmentationId,
792
+ segmentIndex: parseInt(segmentB)
793
+ },
794
+ resultSegmentInfo: {
795
+ segmentationId: activeRepresentation.segmentation.segmentationId,
796
+ segmentIndex: parseInt(resultSegmentIndex)
797
+ },
798
+ logicalOperation: operation.logicalOperation
799
+ });
800
+ }, [activeRepresentation?.segmentation?.segmentationId, createNewSegment, newSegmentName, nextSegmentIndex, operation.logicalOperation, runCommand, segmentA, segmentB]);
801
+ return /*#__PURE__*/react.createElement("div", {
802
+ className: "flex w-[245px] flex-col gap-4"
803
+ }, /*#__PURE__*/react.createElement("div", {
804
+ className: "flex items-start justify-between"
805
+ }, /*#__PURE__*/react.createElement("div", {
806
+ className: "flex w-auto flex-col items-center gap-2 text-base font-normal leading-none"
807
+ }, /*#__PURE__*/react.createElement(ui_next_src/* Tabs */.tUM, {
808
+ value: operation.value
809
+ }, /*#__PURE__*/react.createElement(ui_next_src/* TabsList */.j7C, {
810
+ className: "inline-flex space-x-1"
811
+ }, options.map(option => {
812
+ const {
813
+ value,
814
+ icon
815
+ } = option;
816
+ return /*#__PURE__*/react.createElement(ui_next_src/* TabsTrigger */.Xib, {
817
+ value: value,
818
+ key: `logical-contour-operation-${value}`,
819
+ onClick: () => setOperation(option)
820
+ }, /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI1.ByName, {
821
+ name: icon
822
+ }));
823
+ }))), /*#__PURE__*/react.createElement("div", null, operation.label)), /*#__PURE__*/react.createElement("div", {
824
+ className: "bg-primary-dark flex h-[62px] w-[88px] items-center justify-center rounded-lg"
825
+ }, /*#__PURE__*/react.createElement(ui_next_src/* Icons */.FI1.ByName, {
826
+ name: operation.helperIcon
827
+ }))), /*#__PURE__*/react.createElement(SegmentSelector, {
828
+ label: "A",
829
+ value: segmentA,
830
+ onValueChange: setSegmentA,
831
+ segments: segments
832
+ }), /*#__PURE__*/react.createElement(SegmentSelector, {
833
+ label: "B",
834
+ value: segmentB,
835
+ onValueChange: setSegmentB,
836
+ segments: segments
837
+ }), /*#__PURE__*/react.createElement("div", {
838
+ className: "flex justify-end pl-[34px]"
839
+ }, /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
840
+ className: "border-primary/60 grow border",
841
+ variant: "ghost",
842
+ onClick: () => {
843
+ applyLogicalContourOperation();
844
+ }
845
+ }, operation.label)), /*#__PURE__*/react.createElement(ui_next_src/* Separator */.wvv, {
846
+ className: "bg-input mt-2 h-[1px]"
847
+ }), /*#__PURE__*/react.createElement("div", {
848
+ className: "flex flex-col gap-2"
849
+ }, /*#__PURE__*/react.createElement("div", {
850
+ className: "flex items-center justify-start gap-2"
851
+ }, /*#__PURE__*/react.createElement(ui_next_src/* Switch */.dOG, {
852
+ id: "logical-contour-operations-create-new-segment-switch",
853
+ onCheckedChange: setCreateNewSegment
854
+ }), /*#__PURE__*/react.createElement(ui_next_src/* Label */.JU7, {
855
+ htmlFor: "logical-contour-operations-create-new-segment-switch"
856
+ }, "Create a new segment")), /*#__PURE__*/react.createElement("div", {
857
+ className: "pl-9"
858
+ }, /*#__PURE__*/react.createElement(ui_next_src/* Input */.pde, {
859
+ className: (0,ui_next_src.cn)(createNewSegment ? 'visible' : 'hidden'),
860
+ disabled: !createNewSegment,
861
+ id: "logical-contour-operations-create-new-segment-input",
862
+ type: "text",
863
+ placeholder: "New segment name",
864
+ value: newSegmentName,
865
+ onChange: e => setNewSegmentName(e.target.value)
866
+ }))));
867
+ }
868
+ /* harmony default export */ const LogicalContourOperationsOptions = (LogicalContourOperationOptions);
869
+ ;// ../../../extensions/cornerstone-dicom-seg/src/components/SimplifyContourOptions.tsx
870
+
871
+
872
+
873
+ function SimplifyContourOptions() {
874
+ const [areaThreshold, setAreaThreshold] = (0,react.useState)(10);
875
+ const runCommand = (0,src/* useRunCommand */.qN)();
876
+ return /*#__PURE__*/react.createElement("div", {
877
+ className: "flex w-auto w-[252px] flex-col gap-[8px] text-base font-normal leading-none"
878
+ }, /*#__PURE__*/react.createElement("div", {
879
+ className: "flex w-auto flex-col gap-[10px] text-base font-normal leading-none"
880
+ }, /*#__PURE__*/react.createElement("div", null, "Fill contour holes"), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
881
+ className: "border-primary/60 border",
882
+ variant: "ghost",
883
+ onClick: () => {
884
+ runCommand('removeContourHoles');
885
+ }
886
+ }, "Fill Holes"), /*#__PURE__*/react.createElement(ui_next_src/* Separator */.wvv, {
887
+ className: "bg-input mt-[20px] h-[1px]"
888
+ })), /*#__PURE__*/react.createElement("div", {
889
+ className: "flex w-auto flex-col gap-[10px] text-base font-normal leading-none"
890
+ }, /*#__PURE__*/react.createElement("div", null, "Remove Small Contours"), /*#__PURE__*/react.createElement("div", {
891
+ className: "flex items-center gap-2 self-end"
892
+ }, /*#__PURE__*/react.createElement(ui_next_src/* Label */.JU7, {
893
+ htmlFor: "simplify-contour-options",
894
+ className: "text-muted-foreground"
895
+ }, "Area Threshold"), /*#__PURE__*/react.createElement(ui_next_src/* Input */.pde, {
896
+ id: "simplify-contour-options",
897
+ className: "w-20",
898
+ type: "number",
899
+ value: areaThreshold,
900
+ onChange: e => setAreaThreshold(Number(e.target.value))
901
+ })), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
902
+ className: "border-primary/60 border",
903
+ variant: "ghost",
904
+ onClick: () => {
905
+ runCommand('removeSmallContours', {
906
+ areaThreshold
907
+ });
908
+ }
909
+ }, "Remove Small Contours"), /*#__PURE__*/react.createElement(ui_next_src/* Separator */.wvv, {
910
+ className: "bg-input mt-[20px] h-[1px]"
911
+ })), /*#__PURE__*/react.createElement("div", {
912
+ className: "flex w-auto flex-col gap-[10px] text-base font-normal leading-none"
913
+ }, /*#__PURE__*/react.createElement("div", null, "Create New Segment from Holes"), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
914
+ className: "border-primary/60 border",
915
+ variant: "ghost",
916
+ onClick: () => {
917
+ runCommand('convertContourHoles');
918
+ }
919
+ }, "Create New Segment")));
920
+ }
921
+ /* harmony default export */ const components_SimplifyContourOptions = (SimplifyContourOptions);
922
+ ;// ../../../extensions/cornerstone-dicom-seg/src/components/SmoothContoursOptions.tsx
923
+
924
+
925
+
926
+ function SmoothContoursOptions() {
927
+ const runCommand = (0,src/* useRunCommand */.qN)();
928
+ return /*#__PURE__*/react.createElement("div", {
929
+ className: "flex w-auto w-[245px] flex-col gap-[8px] text-base font-normal leading-none"
930
+ }, /*#__PURE__*/react.createElement("div", {
931
+ className: "flex w-auto flex-col gap-[10px] text-base font-normal leading-none"
932
+ }, /*#__PURE__*/react.createElement("div", null, "Smooth all edges"), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
933
+ className: "border-primary/60 border",
934
+ variant: "ghost",
935
+ onClick: () => {
936
+ runCommand('smoothContours');
937
+ }
938
+ }, "Smooth Edges"), /*#__PURE__*/react.createElement(ui_next_src/* Separator */.wvv, {
939
+ className: "bg-input mt-[20px] h-[1px]"
940
+ })), /*#__PURE__*/react.createElement("div", {
941
+ className: "flex w-auto flex-col gap-[10px] text-base font-normal leading-none"
942
+ }, /*#__PURE__*/react.createElement("div", null, "Remove extra points"), /*#__PURE__*/react.createElement(ui_next_src/* Button */.$nd, {
943
+ className: "border-primary/60 border",
944
+ variant: "ghost",
945
+ onClick: () => {
946
+ runCommand('decimateContours');
947
+ }
948
+ }, "Remove Points")));
949
+ }
950
+ /* harmony default export */ const components_SmoothContoursOptions = (SmoothContoursOptions);
665
951
  ;// ../../../extensions/cornerstone-dicom-seg/src/getToolbarModule.ts
952
+
953
+
954
+
955
+
666
956
  function getToolbarModule({
667
957
  servicesManager
668
958
  }) {
@@ -672,6 +962,27 @@ function getToolbarModule({
672
962
  toolGroupService
673
963
  } = servicesManager.services;
674
964
  return [{
965
+ name: 'cornerstone.SimplifyContourOptions',
966
+ defaultComponent: components_SimplifyContourOptions
967
+ }, {
968
+ name: 'cornerstone.LogicalContourOperationsOptions',
969
+ defaultComponent: LogicalContourOperationsOptions
970
+ }, {
971
+ name: 'cornerstone.SmoothContoursOptions',
972
+ defaultComponent: components_SmoothContoursOptions
973
+ }, {
974
+ name: 'cornerstone.isActiveSegmentationUtility',
975
+ evaluate: ({
976
+ button
977
+ }) => {
978
+ const {
979
+ uiState
980
+ } = default_src.useUIStateStore.getState();
981
+ return {
982
+ isActive: uiState[`activeSegmentationUtility`] === button.id
983
+ };
984
+ }
985
+ }, {
675
986
  name: 'evaluate.cornerstone.hasSegmentation',
676
987
  evaluate: ({
677
988
  viewportId
@@ -681,6 +992,26 @@ function getToolbarModule({
681
992
  disabled: !segmentations?.length
682
993
  };
683
994
  }
995
+ }, {
996
+ name: 'evaluate.cornerstone.hasSegmentationOfType',
997
+ evaluate: ({
998
+ viewportId,
999
+ segmentationRepresentationType
1000
+ }) => {
1001
+ const segmentations = segmentationService.getSegmentationRepresentations(viewportId);
1002
+ if (!segmentations?.length) {
1003
+ return {
1004
+ disabled: true,
1005
+ disabledText: 'No segmentations available'
1006
+ };
1007
+ }
1008
+ if (!segmentations.some(segmentation => Boolean(segmentation.type === segmentationRepresentationType))) {
1009
+ return {
1010
+ disabled: true,
1011
+ disabledText: `No ${segmentationRepresentationType} segmentations available`
1012
+ };
1013
+ }
1014
+ }
684
1015
  }, {
685
1016
  name: 'evaluate.cornerstone.segmentation',
686
1017
  evaluate: ({
@@ -744,7 +1075,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
744
1075
 
745
1076
 
746
1077
  const Component = /*#__PURE__*/react.lazy(() => {
747
- return Promise.all(/* import() */[__webpack_require__.e(7431), __webpack_require__.e(3409), __webpack_require__.e(8740)]).then(__webpack_require__.bind(__webpack_require__, 69845));
1078
+ return __webpack_require__.e(/* import() */ 9845).then(__webpack_require__.bind(__webpack_require__, 69845));
748
1079
  });
749
1080
  const OHIFCornerstoneSEGViewport = props => {
750
1081
  return /*#__PURE__*/react.createElement(react.Suspense, {
@@ -1,2 +1,3 @@
1
1
  .dicom-tag-browser-table{margin-left:auto;margin-right:auto}.dicom-tag-browser-table-wrapper{overflow-x:scroll}.dicom-tag-browser-table tr{border-top:1px solid #ddd;color:#fff;padding-left:10px;padding-right:10px;white-space:nowrap}.stick{overflow:clip;position:sticky}.dicom-tag-browser-content{overflow:hidden}.dicom-tag-browser-instance-range .range{height:20px}.dicom-tag-browser-instance-range{padding:20px 0}.dicom-tag-browser-table td.dicom-tag-browser-table-center{text-align:center}.dicom-tag-browser-table th{color:"#20A5D6";padding-left:10px;padding-right:10px;text-align:center}.dicom-tag-browser-table th.dicom-tag-browser-table-left{text-align:left}
2
2
  .chrome-picker{background:#090c29!important}
3
+ .dicom-upload-drop-area-border-dash{background-image:repeating-linear-gradient(90deg,#7bb2ce 0,#7bb2ce 50%,#0000 0,#0000),repeating-linear-gradient(90deg,#7bb2ce 0,#7bb2ce 50%,#0000 0,#0000),repeating-linear-gradient(180deg,#7bb2ce 0,#7bb2ce 50%,#0000 0,#0000),repeating-linear-gradient(180deg,#7bb2ce 0,#7bb2ce 50%,#0000 0,#0000);background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:20px 3px,20px 3px,3px 20px,3px 20px}
@@ -77,8 +77,8 @@ var react = __webpack_require__(86326);
77
77
  var src = __webpack_require__(42356);
78
78
  // EXTERNAL MODULE: ../../i18n/src/index.js + 210 modules
79
79
  var i18n_src = __webpack_require__(68523);
80
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 186 modules
81
- var cornerstone_src = __webpack_require__(23409);
80
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 192 modules
81
+ var cornerstone_src = __webpack_require__(37948);
82
82
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/esm/index.js + 69 modules
83
83
  var esm = __webpack_require__(53434);
84
84
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js
@@ -117,8 +117,8 @@ var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
117
117
  var es = __webpack_require__(70574);
118
118
  // EXTERNAL MODULE: ../../../node_modules/@xstate/react/es/index.js + 8 modules
119
119
  var react_es = __webpack_require__(95261);
120
- // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3072 modules
121
- var src = __webpack_require__(42606);
120
+ // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3073 modules
121
+ var src = __webpack_require__(1246);
122
122
  ;// ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js
123
123
 
124
124
  const RESPONSE = {
@@ -1066,8 +1066,8 @@ var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
1066
1066
  var src = __webpack_require__(42356);
1067
1067
  // EXTERNAL MODULE: ../../../extensions/default/src/Panels/StudyBrowser/PanelStudyBrowser.tsx + 3 modules
1068
1068
  var PanelStudyBrowser = __webpack_require__(40565);
1069
- // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3072 modules
1070
- var ui_next_src = __webpack_require__(42606);
1069
+ // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3073 modules
1070
+ var ui_next_src = __webpack_require__(1246);
1071
1071
  ;// ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/untrackSeriesModal.tsx
1072
1072
 
1073
1073
 
@@ -1244,8 +1244,8 @@ function getImageSrcFromImageId(cornerstone, imageId) {
1244
1244
  });
1245
1245
  }
1246
1246
  /* harmony default export */ const PanelStudyBrowserTracking_getImageSrcFromImageId = (getImageSrcFromImageId);
1247
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 139 modules
1248
- var default_src = __webpack_require__(11447);
1247
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 141 modules
1248
+ var default_src = __webpack_require__(39548);
1249
1249
  ;// ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/index.tsx
1250
1250
 
1251
1251
  //
@@ -1306,8 +1306,8 @@ function _createGetImageSrcFromImageIdFn(extensionManager) {
1306
1306
  }
1307
1307
  }
1308
1308
  /* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
1309
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 186 modules
1310
- var cornerstone_src = __webpack_require__(23409);
1309
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 192 modules
1310
+ var cornerstone_src = __webpack_require__(37948);
1311
1311
  ;// ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking.tsx
1312
1312
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
1313
1313
 
@@ -11,8 +11,8 @@ __webpack_require__.r(__webpack_exports__);
11
11
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97598);
12
12
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);
13
13
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86326);
14
- /* harmony import */ var _ohif_ui_next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42606);
15
- /* harmony import */ var _ohif_extension_cornerstone__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23409);
14
+ /* harmony import */ var _ohif_ui_next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1246);
15
+ /* harmony import */ var _ohif_extension_cornerstone__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37948);
16
16
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
17
17
 
18
18
 
@@ -17,10 +17,10 @@ var react = __webpack_require__(86326);
17
17
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
18
18
  var prop_types = __webpack_require__(97598);
19
19
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
20
- // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3072 modules
21
- var src = __webpack_require__(42606);
22
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 186 modules
23
- var cornerstone_src = __webpack_require__(23409);
20
+ // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3073 modules
21
+ var src = __webpack_require__(1246);
22
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 192 modules
23
+ var cornerstone_src = __webpack_require__(37948);
24
24
  ;// ../../../extensions/cornerstone-dicom-rt/src/utils/promptHydrateRT.ts
25
25
 
26
26
  function promptHydrateRT({
@@ -946,14 +946,6 @@ const toolbarButtons = [
946
946
  disabledText: 'Select an MPR viewport to enable this tool'
947
947
  }
948
948
  }
949
- },
950
- // Section containers for the nested toolbox
951
- {
952
- id: 'SegmentationUtilities',
953
- uiType: 'ohif.toolBoxButton',
954
- props: {
955
- buttonSection: true
956
- }
957
949
  }, {
958
950
  id: 'SegmentLabelTool',
959
951
  uiType: 'ohif.toolBoxButton',
@@ -946,14 +946,6 @@ const toolbarButtons = [
946
946
  disabledText: 'Select an MPR viewport to enable this tool'
947
947
  }
948
948
  }
949
- },
950
- // Section containers for the nested toolbox
951
- {
952
- id: 'SegmentationUtilities',
953
- uiType: 'ohif.toolBoxButton',
954
- props: {
955
- buttonSection: true
956
- }
957
949
  }, {
958
950
  id: 'SegmentLabelTool',
959
951
  uiType: 'ohif.toolBoxButton',
@@ -14,8 +14,8 @@ __webpack_require__.d(__webpack_exports__, {
14
14
 
15
15
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
16
16
  var react = __webpack_require__(86326);
17
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 139 modules
18
- var src = __webpack_require__(11447);
17
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 141 modules
18
+ var src = __webpack_require__(39548);
19
19
  ;// ../../../extensions/dicom-microscopy/src/DicomMicroscopyViewport.css
20
20
  // extracted by mini-css-extract-plugin
21
21
 
@@ -30,8 +30,8 @@ var i18n_src = __webpack_require__(68523);
30
30
  var esm = __webpack_require__(15327);
31
31
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/esm/index.js + 69 modules
32
32
  var dist_esm = __webpack_require__(53434);
33
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 186 modules
34
- var cornerstone_src = __webpack_require__(23409);
33
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 192 modules
34
+ var cornerstone_src = __webpack_require__(37948);
35
35
  ;// ../../../extensions/cornerstone-dicom-pmap/src/getSopClassHandlerModule.ts
36
36
 
37
37