@ohif/mode-segmentation 3.8.0-beta.6 → 3.8.0-beta.60

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.
@@ -1,2 +1,2 @@
1
- !function(o,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("@ohif/core"),require("@ohif/ui")):"function"==typeof define&&define.amd?define("@ohif/mode-segmentation",["@ohif/core","@ohif/ui"],e):"object"==typeof exports?exports["@ohif/mode-segmentation"]=e(require("@ohif/core"),require("@ohif/ui")):o["@ohif/mode-segmentation"]=e(o["@ohif/core"],o["@ohif/ui"])}("undefined"!=typeof self?self:this,((o,e)=>(()=>{"use strict";var t={310:e=>{e.exports=o},214:o=>{o.exports=e}},n={};function i(o){var e=n[o];if(void 0!==e)return e.exports;var r=n[o]={exports:{}};return t[o](r,r.exports,i),r.exports}i.d=(o,e)=>{for(var t in e)i.o(e,t)&&!i.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:e[t]})},i.o=(o,e)=>Object.prototype.hasOwnProperty.call(o,e),i.r=o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})};var r={};return(()=>{i.r(r),i.d(r,{default:()=>E});var o=i(310);const e=JSON.parse('{"u2":"@ohif/mode-segmentation"}').u2;var t=i(214);const{windowLevelPresets:n}=o.defaults;function s(o,e,t,n,i,r,s){return{id:e,icon:t,label:n,type:o,commands:i,tooltip:r,uiType:s}}const a=s.bind(null,"action"),l=s.bind(null,"toggle"),c=s.bind(null,"tool");function m(o,e,t){return{id:o.toString(),title:e,subtitle:t,type:"action",commands:[{commandName:"setWindowLevel",commandOptions:{...n[o]},context:"CORNERSTONE"}]}}const d=["default","mpr","SRToolGroup"];function p(o){return d.map((e=>({commandName:"setToolActive",commandOptions:{toolGroupId:e,toolName:o},context:"CORNERSTONE"})))}const u=[{id:"Zoom",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-zoom",label:"Zoom",commands:p("Zoom")}},{id:"WindowLevel",type:"ohif.splitButton",props:{groupId:"WindowLevel",primary:c("WindowLevel","tool-window-level","Window Level",[{commandName:"setToolActive",commandOptions:{toolName:"WindowLevel"},context:"CORNERSTONE"}],"Window Level"),secondary:{icon:"chevron-down",label:"W/L Manual",isActive:!0,tooltip:"W/L Presets"},isAction:!0,renderer:t.WindowLevelMenuItem,items:[m(1,"Soft tissue","400 / 40"),m(2,"Lung","1500 / -600"),m(3,"Liver","150 / 90"),m(4,"Bone","2500 / 480"),m(5,"Brain","80 / 40")]}},{id:"Pan",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-move",label:"Pan",commands:p("Pan")}},{id:"Capture",type:"ohif.action",props:{icon:"tool-capture",label:"Capture",type:"action",commands:[{commandName:"showDownloadViewportModal",commandOptions:{},context:"CORNERSTONE"}]}},{id:"Layout",type:"ohif.layoutSelector",props:{rows:3,columns:3}},{id:"MPR",type:"ohif.action",props:{type:"toggle",icon:"icon-mpr",label:"MPR",commands:[{commandName:"toggleHangingProtocol",commandOptions:{protocolId:"mpr"},context:"DEFAULT"}]}},{id:"Crosshairs",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-crosshair",label:"Crosshairs",commands:[{commandName:"setToolActive",commandOptions:{toolName:"Crosshairs",toolGroupId:"mpr"},context:"CORNERSTONE"}]}},{id:"MoreTools",type:"ohif.splitButton",props:{isRadio:!0,groupId:"MoreTools",primary:a("Reset","tool-reset","Reset View",[{commandName:"resetViewport",commandOptions:{},context:"CORNERSTONE"}],"Reset"),secondary:{icon:"chevron-down",label:"",isActive:!0,tooltip:"More Tools"},items:[a("Reset","tool-reset","Reset View",[{commandName:"resetViewport",commandOptions:{},context:"CORNERSTONE"}],"Reset"),a("rotate-right","tool-rotate-right","Rotate Right",[{commandName:"rotateViewportCW",commandOptions:{},context:"CORNERSTONE"}],"Rotate +90"),a("flip-horizontal","tool-flip-horizontal","Flip Horizontally",[{commandName:"flipViewportHorizontal",commandOptions:{},context:"CORNERSTONE"}],"Flip Horizontal"),l("StackImageSync","link","Stack Image Sync",[{commandName:"toggleStackImageSync",commandOptions:{},context:"CORNERSTONE"}]),l("ReferenceLines","tool-referenceLines","Reference Lines",[{commandName:"toggleReferenceLines",commandOptions:{},context:"CORNERSTONE"}]),c("StackScroll","tool-stack-scroll","Stack Scroll",[{commandName:"setToolActive",commandOptions:{toolName:"StackScroll"},context:"CORNERSTONE"}],"Stack Scroll"),a("invert","tool-invert","Invert",[{commandName:"invertViewport",commandOptions:{},context:"CORNERSTONE"}],"Invert Colors"),l("cine","tool-cine","Cine",[{commandName:"toggleCine",context:"CORNERSTONE"}],"Cine"),c("Magnify","tool-magnify","Magnify",[{commandName:"setToolActive",commandOptions:{toolName:"Magnify"},context:"CORNERSTONE"}],"Magnify"),a("TagBrowser","list-bullets","Dicom Tag Browser",[{commandName:"openDICOMTagViewer",commandOptions:{},context:"DEFAULT"}],"Dicom Tag Browser")]}}],h={CircularBrush:"CircularBrush",CircularEraser:"CircularEraser",SphereBrush:"SphereBrush",SphereEraser:"SphereEraser",ThresholdCircularBrush:"ThresholdCircularBrush",ThresholdSphereBrush:"ThresholdSphereBrush"},f={CircularBrush:"FILL_INSIDE_CIRCLE",CircularEraser:"ERASE_INSIDE_CIRCLE",SphereBrush:"FILL_INSIDE_SPHERE",SphereEraser:"ERASE_INSIDE_SPHERE",ThresholdCircularBrush:"THRESHOLD_INSIDE_CIRCLE",ThresholdSphereBrush:"THRESHOLD_INSIDE_SPHERE"};function S(o){const{toolNames:e,Enums:t}=o.exports;return{active:[{toolName:e.WindowLevel,bindings:[{mouseButton:t.MouseBindings.Primary}]},{toolName:e.Pan,bindings:[{mouseButton:t.MouseBindings.Auxiliary}]},{toolName:e.Zoom,bindings:[{mouseButton:t.MouseBindings.Secondary}]},{toolName:e.StackScrollMouseWheel,bindings:[]}],passive:Object.keys(h).map((o=>({toolName:o,parentTool:"Brush",configuration:{activeStrategy:f[o]}}))).concat([{toolName:e.CircleScissors},{toolName:e.RectangleScissors},{toolName:e.SphereScissors},{toolName:e.StackScroll},{toolName:e.Magnify},{toolName:e.SegmentationDisplay}]),disabled:[{toolName:e.ReferenceLines}]}}const N="@ohif/extension-default.sopClassHandlerModule.stack",g="@ohif/extension-cornerstone-dicom-seg.sopClassHandlerModule.dicom-seg",y={"@ohif/extension-default":"^3.0.0","@ohif/extension-cornerstone":"^3.0.0","@ohif/extension-cornerstone-dicom-seg":"^3.0.0"},E={id:e,modeFactory:function(t){let{modeConfiguration:n}=t;return{id:e,routeName:"segmentation",displayName:"Segmentation",onModeEnter:o=>{let{servicesManager:e,extensionManager:t,commandsManager:n}=o;const{measurementService:i,toolbarService:r,toolGroupService:s}=e.services;let a;i.clearMeasurements(),function(o,e,t){!function(o,e,t,n){const i=S(o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"));e.createToolGroupAndAddTools("default",i)}(o,e),function(o,e,t){const n=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),i=S(n);i.disabled.push({toolName:n.exports.toolNames.Crosshairs,configuration:{viewportIndicators:!1,autoPan:{enabled:!1,panSize:10}}},{toolName:n.exports.toolNames.ReferenceLines}),e.createToolGroupAndAddTools("mpr",i)}(o,e)}(t,s),({unsubscribe:a}=s.subscribe(s.EVENTS.VIEWPORT_ADDED,(()=>{r.recordInteraction({groupId:"WindowLevel",interactionType:"tool",commands:[{commandName:"setToolActive",commandOptions:{toolName:"WindowLevel"},context:"CORNERSTONE"}]}),a()}))),r.init(t),r.addButtons(u),r.createButtonSection("primary",["Zoom","WindowLevel","Pan","Capture","Layout","MPR","Crosshairs","MoreTools"])},onModeExit:o=>{let{servicesManager:e}=o;const{toolGroupService:t,syncGroupService:n,toolbarService:i,segmentationService:r,cornerstoneViewportService:s}=e.services;t.destroy(),n.destroy(),r.destroy(),s.destroy()},validationTags:{study:[],series:[]},isValidMode:o=>{let{modalities:e}=o;return!0},routes:[{path:"template",layoutTemplate:o=>{let{location:e,servicesManager:t}=o;return{id:"@ohif/extension-default.layoutTemplateModule.viewerLayout",props:{leftPanels:["@ohif/extension-default.panelModule.seriesList"],rightPanels:["@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentationWithTools"],viewports:[{namespace:"@ohif/extension-cornerstone.viewportModule.cornerstone",displaySetsToDisplay:[N]},{namespace:"@ohif/extension-cornerstone-dicom-seg.viewportModule.dicom-seg",displaySetsToDisplay:[g]}]}}}}],extensions:y,sopClassHandlers:[N,g],hotkeys:[...o.hotkeys.defaults.hotkeyBindings]}},extensionDependencies:y}})(),r})()));
1
+ !function(o,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("@ohif/core"),require("@ohif/ui")):"function"==typeof define&&define.amd?define("@ohif/mode-segmentation",["@ohif/core","@ohif/ui"],e):"object"==typeof exports?exports["@ohif/mode-segmentation"]=e(require("@ohif/core"),require("@ohif/ui")):o["@ohif/mode-segmentation"]=e(o["@ohif/core"],o["@ohif/ui"])}("undefined"!=typeof self?self:this,((o,e)=>(()=>{"use strict";var t={498:e=>{e.exports=o},610:o=>{o.exports=e}},n={};function i(o){var e=n[o];if(void 0!==e)return e.exports;var r=n[o]={exports:{}};return t[o](r,r.exports,i),r.exports}i.d=(o,e)=>{for(var t in e)i.o(e,t)&&!i.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:e[t]})},i.o=(o,e)=>Object.prototype.hasOwnProperty.call(o,e),i.r=o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})};var r={};return(()=>{i.r(r),i.d(r,{default:()=>y});var o=i(498);const e=JSON.parse('{"UU":"@ohif/mode-segmentation"}').UU;var t=i(610);const{windowLevelPresets:n}=o.defaults;function a(o,e,t,n,i,r,a){return{id:e,icon:t,label:n,type:o,commands:i,tooltip:r,uiType:a}}const s=a.bind(null,"action"),l=a.bind(null,"toggle"),c=a.bind(null,"tool");function m(o,e,t){return{id:o.toString(),title:e,subtitle:t,type:"action",commands:[{commandName:"setWindowLevel",commandOptions:{...n[o]},context:"CORNERSTONE"}]}}const d=["default","mpr","SRToolGroup"];function p(o){return d.map((e=>({commandName:"setToolActive",commandOptions:{toolGroupId:e,toolName:o},context:"CORNERSTONE"})))}const u=[{id:"Zoom",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-zoom",label:"Zoom",commands:p("Zoom")}},{id:"WindowLevel",type:"ohif.splitButton",props:{groupId:"WindowLevel",primary:c("WindowLevel","tool-window-level","Window Level",[{commandName:"setToolActive",commandOptions:{toolName:"WindowLevel"},context:"CORNERSTONE"}],"Window Level"),secondary:{icon:"chevron-down",label:"W/L Manual",isActive:!0,tooltip:"W/L Presets"},isAction:!0,renderer:t.WindowLevelMenuItem,items:[m(1,"Soft tissue","400 / 40"),m(2,"Lung","1500 / -600"),m(3,"Liver","150 / 90"),m(4,"Bone","2500 / 480"),m(5,"Brain","80 / 40")]}},{id:"Pan",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-move",label:"Pan",commands:p("Pan")}},{id:"Capture",type:"ohif.action",props:{icon:"tool-capture",label:"Capture",type:"action",commands:[{commandName:"showDownloadViewportModal",commandOptions:{},context:"CORNERSTONE"}]}},{id:"Layout",type:"ohif.layoutSelector",props:{rows:3,columns:3}},{id:"MPR",type:"ohif.action",props:{type:"toggle",icon:"icon-mpr",label:"MPR",commands:[{commandName:"toggleHangingProtocol",commandOptions:{protocolId:"mpr"},context:"DEFAULT"}]}},{id:"Crosshairs",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-crosshair",label:"Crosshairs",commands:[{commandName:"setToolActive",commandOptions:{toolName:"Crosshairs",toolGroupId:"mpr"},context:"CORNERSTONE"}]}},{id:"MoreTools",type:"ohif.splitButton",props:{isRadio:!0,groupId:"MoreTools",primary:s("Reset","tool-reset","Reset View",[{commandName:"resetViewport",commandOptions:{},context:"CORNERSTONE"}],"Reset"),secondary:{icon:"chevron-down",label:"",isActive:!0,tooltip:"More Tools"},items:[s("Reset","tool-reset","Reset View",[{commandName:"resetViewport",commandOptions:{},context:"CORNERSTONE"}],"Reset"),s("rotate-right","tool-rotate-right","Rotate Right",[{commandName:"rotateViewportCW",commandOptions:{},context:"CORNERSTONE"}],"Rotate +90"),s("flip-horizontal","tool-flip-horizontal","Flip Horizontally",[{commandName:"flipViewportHorizontal",commandOptions:{},context:"CORNERSTONE"}],"Flip Horizontal"),l("ImageSliceSync","link","Stack Image Sync",[{commandName:"toggleImageSliceSync",commandOptions:{},context:"CORNERSTONE"}]),l("ReferenceLines","tool-referenceLines","Reference Lines",[{commandName:"toggleReferenceLines",commandOptions:{},context:"CORNERSTONE"}]),c("StackScroll","tool-stack-scroll","Stack Scroll",[{commandName:"setToolActive",commandOptions:{toolName:"StackScroll"},context:"CORNERSTONE"}],"Stack Scroll"),s("invert","tool-invert","Invert",[{commandName:"invertViewport",commandOptions:{},context:"CORNERSTONE"}],"Invert Colors"),l("cine","tool-cine","Cine",[{commandName:"toggleCine",context:"CORNERSTONE"}],"Cine"),c("Magnify","tool-magnify","Magnify",[{commandName:"setToolActive",commandOptions:{toolName:"Magnify"},context:"CORNERSTONE"}],"Magnify"),s("TagBrowser","list-bullets","Dicom Tag Browser",[{commandName:"openDICOMTagViewer",commandOptions:{},context:"DEFAULT"}],"Dicom Tag Browser")]}}];function f(o){const{toolNames:e,Enums:t}=o.exports;return{active:[{toolName:e.WindowLevel,bindings:[{mouseButton:t.MouseBindings.Primary}]},{toolName:e.Pan,bindings:[{mouseButton:t.MouseBindings.Auxiliary}]},{toolName:e.Zoom,bindings:[{mouseButton:t.MouseBindings.Secondary}]},{toolName:e.StackScrollMouseWheel,bindings:[]}],passive:[{toolName:"CircularBrush",parentTool:"Brush",configuration:{activeStrategy:"FILL_INSIDE_CIRCLE"}},{toolName:"CircularEraser",parentTool:"Brush",configuration:{activeStrategy:"ERASE_INSIDE_CIRCLE"}},{toolName:"SphereBrush",parentTool:"Brush",configuration:{activeStrategy:"FILL_INSIDE_SPHERE"}},{toolName:"SphereEraser",parentTool:"Brush",configuration:{activeStrategy:"ERASE_INSIDE_SPHERE"}},{toolName:"ThresholdCircularBrush",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_CIRCLE",strategySpecificConfiguration:{THRESHOLD:{threshold:[-500,500]}}}},{toolName:"ThresholdSphereBrush",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_SPHERE",strategySpecificConfiguration:{THRESHOLD:{threshold:[-500,500]}}}},{toolName:e.CircleScissors},{toolName:e.RectangleScissors},{toolName:e.SphereScissors},{toolName:e.StackScroll},{toolName:e.Magnify},{toolName:e.SegmentationDisplay}],disabled:[{toolName:e.ReferenceLines}]}}const S="@ohif/extension-default.sopClassHandlerModule.stack",g="@ohif/extension-cornerstone-dicom-seg.sopClassHandlerModule.dicom-seg",N={"@ohif/extension-default":"^3.0.0","@ohif/extension-cornerstone":"^3.0.0","@ohif/extension-cornerstone-dicom-seg":"^3.0.0"},y={id:e,modeFactory:function({modeConfiguration:t}){return{id:e,routeName:"segmentation",displayName:"Segmentation",onModeEnter:({servicesManager:o,extensionManager:e,commandsManager:t})=>{const{measurementService:n,toolbarService:i,toolGroupService:r}=o.services;let a;n.clearMeasurements(),function(o,e,t){!function(o,e,t,n){const i=f(o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"));e.createToolGroupAndAddTools("default",i)}(o,e),function(o,e,t){const n=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),i=f(n);i.disabled.push({toolName:n.exports.toolNames.Crosshairs,configuration:{viewportIndicators:!1,autoPan:{enabled:!1,panSize:10}}},{toolName:n.exports.toolNames.ReferenceLines}),e.createToolGroupAndAddTools("mpr",i)}(o,e)}(e,r),({unsubscribe:a}=r.subscribe(r.EVENTS.VIEWPORT_ADDED,(()=>{i.recordInteraction({groupId:"WindowLevel",interactionType:"tool",commands:[{commandName:"setToolActive",commandOptions:{toolName:"WindowLevel"},context:"CORNERSTONE"}]}),a()}))),i.init(e),i.addButtons(u),i.createButtonSection("primary",["Zoom","WindowLevel","Pan","Capture","Layout","MPR","Crosshairs","MoreTools"])},onModeExit:({servicesManager:o})=>{const{toolGroupService:e,syncGroupService:t,toolbarService:n,segmentationService:i,cornerstoneViewportService:r}=o.services;e.destroy(),t.destroy(),i.destroy(),r.destroy()},validationTags:{study:[],series:[]},isValidMode:({modalities:o})=>{const e=o.split("\\");return 1!==e.length||!["SM","US","MG","OT","DOC","CR"].includes(e[0])},routes:[{path:"template",layoutTemplate:({location:o,servicesManager:e})=>({id:"@ohif/extension-default.layoutTemplateModule.viewerLayout",props:{leftPanels:["@ohif/extension-default.panelModule.seriesList"],rightPanels:["@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentationWithTools"],viewports:[{namespace:"@ohif/extension-cornerstone.viewportModule.cornerstone",displaySetsToDisplay:[S]},{namespace:"@ohif/extension-cornerstone-dicom-seg.viewportModule.dicom-seg",displaySetsToDisplay:[g]}]}})}],extensions:N,sopClassHandlers:[S,g],hotkeys:[...o.hotkeys.defaults.hotkeyBindings]}},extensionDependencies:N}})(),r})()));
2
2
  //# sourceMappingURL=index.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","mappings":"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ACJK,KAAM,kBACNuB,MAAO,CACLvB,KAAM,OACNC,KAAM,iBACNC,MAAO,aACPC,SAAU,CACR,CACEY,YAAa,gBACbC,eAAgB,CACdI,SAAU,aACVE,YAAa,OAEfL,QAAS,kBAMjB,CACEtB,GAAI,YACJK,KAAM,mBACNuB,MAAO,CACLY,SAAS,EACTX,QAAS,YACTC,QAASnB,EACP,QACA,aACA,aACA,CACE,CACES,YAAa,gBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,SAEFS,UAAW,CACTzB,KAAM,eACNC,MAAO,GACPyB,UAAU,EACVvB,QAAS,cAEX2B,MAAO,CACLzB,EACE,QACA,aACA,aACA,CACE,CACES,YAAa,gBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,SAEFX,EACE,eACA,oBACA,eACA,CACE,CACES,YAAa,mBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,cAEFX,EACE,kBACA,uBACA,oBACA,CACE,CACES,YAAa,yBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,mBAEFT,EAAoB,iBAAkB,OAAQ,mBAAoB,CAChE,CACEO,YAAa,uBACbC,eAAgB,CAAC,EACjBC,QAAS,iBAGbT,EACE,iBACA,sBACA,kBACA,CACE,CACEO,YAAa,uBACbC,eAAgB,CAAC,EACjBC,QAAS,iBAIfR,EACE,cACA,oBACA,eACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,eAEZH,QAAS,gBAGb,gBAEFX,EACE,SACA,cACA,SACA,CACE,CACES,YAAa,iBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,iBAEFT,EACE,OACA,YACA,OACA,CACE,CACEO,YAAa,aACbE,QAAS,gBAGb,QAEFR,EACE,UACA,eACA,UACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,WAEZH,QAAS,gBAGb,WAEFX,EACE,aACA,eACA,oBACA,CACE,CACES,YAAa,qBACbC,eAAgB,CAAC,EACjBC,QAAS,YAGb,yBC5VJmB,EAAqB,CACzBC,cAAe,gBACfC,eAAgB,iBAChBC,YAAa,cACbC,aAAc,eACdC,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","sources":["webpack://@ohif/mode-segmentation/webpack/universalModuleDefinition","webpack://@ohif/mode-segmentation/external umd {\"commonjs2\":\"@ohif/core\",\"commonjs\":\"@ohif/core\",\"amd\":\"@ohif/core\",\"root\":\"@ohif/core\"}","webpack://@ohif/mode-segmentation/external umd {\"commonjs2\":\"@ohif/ui\",\"commonjs\":\"@ohif/ui\",\"amd\":\"@ohif/ui\",\"root\":\"@ohif/ui\"}","webpack://@ohif/mode-segmentation/webpack/bootstrap","webpack://@ohif/mode-segmentation/webpack/runtime/define property getters","webpack://@ohif/mode-segmentation/webpack/runtime/hasOwnProperty shorthand","webpack://@ohif/mode-segmentation/webpack/runtime/make namespace object","webpack://@ohif/mode-segmentation/./src/id.js","webpack://@ohif/mode-segmentation/./src/toolbarButtons.ts","webpack://@ohif/mode-segmentation/./src/initToolGroups.ts","webpack://@ohif/mode-segmentation/./src/index.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@ohif/core\"), require(\"@ohif/ui\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"@ohif/mode-segmentation\", [\"@ohif/core\", \"@ohif/ui\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@ohif/mode-segmentation\"] = factory(require(\"@ohif/core\"), require(\"@ohif/ui\"));\n\telse\n\t\troot[\"@ohif/mode-segmentation\"] = factory(root[\"@ohif/core\"], root[\"@ohif/ui\"]);\n})(typeof self !== 'undefined' ? self : this, (__WEBPACK_EXTERNAL_MODULE__310__, __WEBPACK_EXTERNAL_MODULE__214__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__310__;","module.exports = __WEBPACK_EXTERNAL_MODULE__214__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import packageJson from '../package.json';\n\nconst id = packageJson.name;\n\nexport { id };\n","import {\n // ExpandableToolbarButton,\n // ListMenu,\n WindowLevelMenuItem,\n} from '@ohif/ui';\nimport { defaults } from '@ohif/core';\n\nconst { windowLevelPresets } = defaults;\n/**\n *\n * @param {*} type - 'tool' | 'action' | 'toggle'\n * @param {*} id\n * @param {*} icon\n * @param {*} label\n */\nfunction _createButton(type, id, icon, label, commands, tooltip, uiType) {\n return {\n id,\n icon,\n label,\n type,\n commands,\n tooltip,\n uiType,\n };\n}\n\nconst _createActionButton = _createButton.bind(null, 'action');\nconst _createToggleButton = _createButton.bind(null, 'toggle');\nconst _createToolButton = _createButton.bind(null, 'tool');\n\n/**\n *\n * @param {*} preset - preset number (from above import)\n * @param {*} title\n * @param {*} subtitle\n */\nfunction _createWwwcPreset(preset, title, subtitle) {\n return {\n id: preset.toString(),\n title,\n subtitle,\n type: 'action',\n commands: [\n {\n commandName: 'setWindowLevel',\n commandOptions: {\n ...windowLevelPresets[preset],\n },\n context: 'CORNERSTONE',\n },\n ],\n };\n}\n\nconst toolGroupIds = ['default', 'mpr', 'SRToolGroup'];\n\n/**\n * Creates an array of 'setToolActive' commands for the given toolName - one for\n * each toolGroupId specified in toolGroupIds.\n * @param {string} toolName\n * @returns {Array} an array of 'setToolActive' commands\n */\nfunction _createSetToolActiveCommands(toolName) {\n const temp = toolGroupIds.map(toolGroupId => ({\n commandName: 'setToolActive',\n commandOptions: {\n toolGroupId,\n toolName,\n },\n context: 'CORNERSTONE',\n }));\n return temp;\n}\n\nconst toolbarButtons = [\n // Zoom..\n {\n id: 'Zoom',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-zoom',\n label: 'Zoom',\n commands: _createSetToolActiveCommands('Zoom'),\n },\n },\n // Window Level + Presets...\n {\n id: 'WindowLevel',\n type: 'ohif.splitButton',\n props: {\n groupId: 'WindowLevel',\n primary: _createToolButton(\n 'WindowLevel',\n 'tool-window-level',\n 'Window Level',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'WindowLevel',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Window Level'\n ),\n secondary: {\n icon: 'chevron-down',\n label: 'W/L Manual',\n isActive: true,\n tooltip: 'W/L Presets',\n },\n isAction: true, // ?\n renderer: WindowLevelMenuItem,\n items: [\n _createWwwcPreset(1, 'Soft tissue', '400 / 40'),\n _createWwwcPreset(2, 'Lung', '1500 / -600'),\n _createWwwcPreset(3, 'Liver', '150 / 90'),\n _createWwwcPreset(4, 'Bone', '2500 / 480'),\n _createWwwcPreset(5, 'Brain', '80 / 40'),\n ],\n },\n },\n // Pan...\n {\n id: 'Pan',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-move',\n label: 'Pan',\n commands: _createSetToolActiveCommands('Pan'),\n },\n },\n {\n id: 'Capture',\n type: 'ohif.action',\n props: {\n icon: 'tool-capture',\n label: 'Capture',\n type: 'action',\n commands: [\n {\n commandName: 'showDownloadViewportModal',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n },\n },\n {\n id: 'Layout',\n type: 'ohif.layoutSelector',\n props: {\n rows: 3,\n columns: 3,\n },\n },\n {\n id: 'MPR',\n type: 'ohif.action',\n props: {\n type: 'toggle',\n icon: 'icon-mpr',\n label: 'MPR',\n commands: [\n {\n commandName: 'toggleHangingProtocol',\n commandOptions: {\n protocolId: 'mpr',\n },\n context: 'DEFAULT',\n },\n ],\n },\n },\n {\n id: 'Crosshairs',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-crosshair',\n label: 'Crosshairs',\n commands: [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Crosshairs',\n toolGroupId: 'mpr',\n },\n context: 'CORNERSTONE',\n },\n ],\n },\n },\n // More...\n {\n id: 'MoreTools',\n type: 'ohif.splitButton',\n props: {\n isRadio: true, // ?\n groupId: 'MoreTools',\n primary: _createActionButton(\n 'Reset',\n 'tool-reset',\n 'Reset View',\n [\n {\n commandName: 'resetViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Reset'\n ),\n secondary: {\n icon: 'chevron-down',\n label: '',\n isActive: true,\n tooltip: 'More Tools',\n },\n items: [\n _createActionButton(\n 'Reset',\n 'tool-reset',\n 'Reset View',\n [\n {\n commandName: 'resetViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Reset'\n ),\n _createActionButton(\n 'rotate-right',\n 'tool-rotate-right',\n 'Rotate Right',\n [\n {\n commandName: 'rotateViewportCW',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Rotate +90'\n ),\n _createActionButton(\n 'flip-horizontal',\n 'tool-flip-horizontal',\n 'Flip Horizontally',\n [\n {\n commandName: 'flipViewportHorizontal',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Flip Horizontal'\n ),\n _createToggleButton('StackImageSync', 'link', 'Stack Image Sync', [\n {\n commandName: 'toggleStackImageSync',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ]),\n _createToggleButton(\n 'ReferenceLines',\n 'tool-referenceLines', // change this with the new icon\n 'Reference Lines',\n [\n {\n commandName: 'toggleReferenceLines',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ]\n ),\n _createToolButton(\n 'StackScroll',\n 'tool-stack-scroll',\n 'Stack Scroll',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'StackScroll',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Stack Scroll'\n ),\n _createActionButton(\n 'invert',\n 'tool-invert',\n 'Invert',\n [\n {\n commandName: 'invertViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Invert Colors'\n ),\n _createToggleButton(\n 'cine',\n 'tool-cine',\n 'Cine',\n [\n {\n commandName: 'toggleCine',\n context: 'CORNERSTONE',\n },\n ],\n 'Cine'\n ),\n _createToolButton(\n 'Magnify',\n 'tool-magnify',\n 'Magnify',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Magnify',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Magnify'\n ),\n _createActionButton(\n 'TagBrowser',\n 'list-bullets',\n 'Dicom Tag Browser',\n [\n {\n commandName: 'openDICOMTagViewer',\n commandOptions: {},\n context: 'DEFAULT',\n },\n ],\n 'Dicom Tag Browser'\n ),\n ],\n },\n },\n];\n\nexport default toolbarButtons;\n","const brushInstanceNames = {\n CircularBrush: 'CircularBrush',\n CircularEraser: 'CircularEraser',\n SphereBrush: 'SphereBrush',\n SphereEraser: 'SphereEraser',\n ThresholdCircularBrush: 'ThresholdCircularBrush',\n ThresholdSphereBrush: 'ThresholdSphereBrush',\n};\n\nconst brushStrategies = {\n CircularBrush: 'FILL_INSIDE_CIRCLE',\n CircularEraser: 'ERASE_INSIDE_CIRCLE',\n SphereBrush: 'FILL_INSIDE_SPHERE',\n SphereEraser: 'ERASE_INSIDE_SPHERE',\n ThresholdCircularBrush: 'THRESHOLD_INSIDE_CIRCLE',\n ThresholdSphereBrush: 'THRESHOLD_INSIDE_SPHERE',\n};\n\nfunction createTools(utilityModule) {\n const { toolNames, Enums } = utilityModule.exports;\n return {\n active: [\n { toolName: toolNames.WindowLevel, bindings: [{ mouseButton: Enums.MouseBindings.Primary }] },\n { toolName: toolNames.Pan, bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }] },\n { toolName: toolNames.Zoom, bindings: [{ mouseButton: Enums.MouseBindings.Secondary }] },\n { toolName: toolNames.StackScrollMouseWheel, bindings: [] },\n ],\n passive: Object.keys(brushInstanceNames)\n .map(brushName => ({\n toolName: brushName,\n parentTool: 'Brush',\n configuration: {\n activeStrategy: brushStrategies[brushName],\n },\n }))\n .concat([\n { toolName: toolNames.CircleScissors },\n { toolName: toolNames.RectangleScissors },\n { toolName: toolNames.SphereScissors },\n { toolName: toolNames.StackScroll },\n { toolName: toolNames.Magnify },\n { toolName: toolNames.SegmentationDisplay },\n ]),\n disabled: [{ toolName: toolNames.ReferenceLines }],\n };\n}\n\nfunction initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, toolGroupId) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n const tools = createTools(utilityModule);\n toolGroupService.createToolGroupAndAddTools(toolGroupId, tools);\n}\n\nfunction initMPRToolGroup(extensionManager, toolGroupService, commandsManager) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n const tools = createTools(utilityModule);\n tools.disabled.push(\n {\n toolName: utilityModule.exports.toolNames.Crosshairs,\n configuration: {\n viewportIndicators: false,\n autoPan: {\n enabled: false,\n panSize: 10,\n },\n },\n },\n { toolName: utilityModule.exports.toolNames.ReferenceLines }\n );\n toolGroupService.createToolGroupAndAddTools('mpr', tools);\n}\n\nfunction initToolGroups(extensionManager, toolGroupService, commandsManager) {\n initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, 'default');\n initMPRToolGroup(extensionManager, toolGroupService, commandsManager);\n}\n\nexport default initToolGroups;\n","import { hotkeys } from '@ohif/core';\nimport { id } from './id';\nimport toolbarButtons from './toolbarButtons';\nimport initToolGroups from './initToolGroups';\n\nconst ohif = {\n layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout',\n sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack',\n hangingProtocol: '@ohif/extension-default.hangingProtocolModule.default',\n leftPanel: '@ohif/extension-default.panelModule.seriesList',\n rightPanel: '@ohif/extension-default.panelModule.measure',\n};\n\nconst cornerstone = {\n viewport: '@ohif/extension-cornerstone.viewportModule.cornerstone',\n};\n\nconst segmentation = {\n panel: '@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentation',\n panelTool: '@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentationWithTools',\n sopClassHandler: '@ohif/extension-cornerstone-dicom-seg.sopClassHandlerModule.dicom-seg',\n viewport: '@ohif/extension-cornerstone-dicom-seg.viewportModule.dicom-seg',\n};\n\n/**\n * Just two dependencies to be able to render a viewport with panels in order\n * to make sure that the mode is working.\n */\nconst extensionDependencies = {\n '@ohif/extension-default': '^3.0.0',\n '@ohif/extension-cornerstone': '^3.0.0',\n '@ohif/extension-cornerstone-dicom-seg': '^3.0.0',\n};\n\nfunction modeFactory({ modeConfiguration }) {\n return {\n /**\n * Mode ID, which should be unique among modes used by the viewer. This ID\n * is used to identify the mode in the viewer's state.\n */\n id,\n routeName: 'segmentation',\n /**\n * Mode name, which is displayed in the viewer's UI in the workList, for the\n * user to select the mode.\n */\n displayName: 'Segmentation',\n /**\n * Runs when the Mode Route is mounted to the DOM. Usually used to initialize\n * Services and other resources.\n */\n onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => {\n const { measurementService, toolbarService, toolGroupService } = servicesManager.services;\n\n measurementService.clearMeasurements();\n\n // Init Default and SR ToolGroups\n initToolGroups(extensionManager, toolGroupService, commandsManager);\n\n let unsubscribe;\n\n const activateTool = () => {\n toolbarService.recordInteraction({\n groupId: 'WindowLevel',\n interactionType: 'tool',\n commands: [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'WindowLevel',\n },\n context: 'CORNERSTONE',\n },\n ],\n });\n\n // We don't need to reset the active tool whenever a viewport is getting\n // added to the toolGroup.\n unsubscribe();\n };\n\n // Since we only have one viewport for the basic cs3d mode and it has\n // only one hanging protocol, we can just use the first viewport\n ({ unsubscribe } = toolGroupService.subscribe(\n toolGroupService.EVENTS.VIEWPORT_ADDED,\n activateTool\n ));\n\n toolbarService.init(extensionManager);\n toolbarService.addButtons(toolbarButtons);\n toolbarService.createButtonSection('primary', [\n 'Zoom',\n 'WindowLevel',\n 'Pan',\n 'Capture',\n 'Layout',\n 'MPR',\n 'Crosshairs',\n 'MoreTools',\n ]);\n },\n onModeExit: ({ servicesManager }) => {\n const {\n toolGroupService,\n syncGroupService,\n toolbarService,\n segmentationService,\n cornerstoneViewportService,\n } = servicesManager.services;\n\n toolGroupService.destroy();\n syncGroupService.destroy();\n segmentationService.destroy();\n cornerstoneViewportService.destroy();\n },\n /** */\n validationTags: {\n study: [],\n series: [],\n },\n /**\n * A boolean return value that indicates whether the mode is valid for the\n * modalities of the selected studies. For instance a PET/CT mode should be\n */\n isValidMode: ({ modalities }) => true,\n /**\n * Mode Routes are used to define the mode's behavior. A list of Mode Route\n * that includes the mode's path and the layout to be used. The layout will\n * include the components that are used in the layout. For instance, if the\n * default layoutTemplate is used (id: '@ohif/extension-default.layoutTemplateModule.viewerLayout')\n * it will include the leftPanels, rightPanels, and viewports. However, if\n * you define another layoutTemplate that includes a Footer for instance,\n * you should provide the Footer component here too. Note: We use Strings\n * to reference the component's ID as they are registered in the internal\n * ExtensionManager. The template for the string is:\n * `${extensionId}.{moduleType}.${componentId}`.\n */\n routes: [\n {\n path: 'template',\n layoutTemplate: ({ location, servicesManager }) => {\n return {\n id: ohif.layout,\n props: {\n leftPanels: [ohif.leftPanel],\n rightPanels: [segmentation.panelTool],\n viewports: [\n {\n namespace: cornerstone.viewport,\n displaySetsToDisplay: [ohif.sopClassHandler],\n },\n {\n namespace: segmentation.viewport,\n displaySetsToDisplay: [segmentation.sopClassHandler],\n },\n ],\n },\n };\n },\n },\n ],\n /** List of extensions that are used by the mode */\n extensions: extensionDependencies,\n /** HangingProtocol used by the mode */\n // hangingProtocol: [''],\n /** SopClassHandlers used by the mode */\n sopClassHandlers: [ohif.sopClassHandler, segmentation.sopClassHandler],\n /** hotkeys for mode */\n hotkeys: [...hotkeys.defaults.hotkeyBindings],\n };\n}\n\nconst mode = {\n id,\n modeFactory,\n extensionDependencies,\n};\n\nexport default mode;\n"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__310__","__WEBPACK_EXTERNAL_MODULE__214__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","id","packageJson","windowLevelPresets","defaults","_createButton","type","icon","label","commands","tooltip","uiType","_createActionButton","bind","_createToggleButton","_createToolButton","_createWwwcPreset","preset","title","subtitle","toString","commandName","commandOptions","context","toolGroupIds","_createSetToolActiveCommands","toolName","map","toolGroupId","props","groupId","primary","secondary","isActive","isAction","renderer","WindowLevelMenuItem","items","rows","columns","protocolId","isRadio","brushInstanceNames","CircularBrush","CircularEraser","SphereBrush","SphereEraser","ThresholdCircularBrush","ThresholdSphereBrush","brushStrategies","createTools","utilityModule","toolNames","Enums","active","WindowLevel","bindings","mouseButton","MouseBindings","Primary","Pan","Auxiliary","Zoom","Secondary","StackScrollMouseWheel","passive","keys","brushName","parentTool","configuration","activeStrategy","concat","CircleScissors","RectangleScissors","SphereScissors","StackScroll","Magnify","SegmentationDisplay","disabled","ReferenceLines","ohif","segmentation","extensionDependencies","modeFactory","_ref","modeConfiguration","routeName","displayName","onModeEnter","_ref2","servicesManager","extensionManager","commandsManager","measurementService","toolbarService","toolGroupService","services","unsubscribe","clearMeasurements","tools","getModuleEntry","createToolGroupAndAddTools","initDefaultToolGroup","push","Crosshairs","viewportIndicators","autoPan","enabled","panSize","initMPRToolGroup","initToolGroups","subscribe","EVENTS","VIEWPORT_ADDED","activateTool","recordInteraction","interactionType","init","addButtons","toolbarButtons","createButtonSection","onModeExit","_ref3","syncGroupService","segmentationService","cornerstoneViewportService","destroy","validationTags","study","series","isValidMode","_ref4","modalities","routes","path","layoutTemplate","_ref5","location","leftPanels","rightPanels","viewports","namespace","displaySetsToDisplay","extensions","sopClassHandlers","hotkeys","hotkeyBindings"],"sourceRoot":""}
1
+ {"version":3,"file":"index.umd.js","mappings":"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ACJK,KAAM,kBACNuB,MAAO,CACLvB,KAAM,OACNC,KAAM,iBACNC,MAAO,aACPC,SAAU,CACR,CACEY,YAAa,gBACbC,eAAgB,CACdI,SAAU,aACVE,YAAa,OAEfL,QAAS,kBAMjB,CACEtB,GAAI,YACJK,KAAM,mBACNuB,MAAO,CACLY,SAAS,EACTX,QAAS,YACTC,QAASnB,EACP,QACA,aACA,aACA,CACE,CACES,YAAa,gBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,SAEFS,UAAW,CACTzB,KAAM,eACNC,MAAO,GACPyB,UAAU,EACVvB,QAAS,cAEX2B,MAAO,CACLzB,EACE,QACA,aACA,aACA,CACE,CACES,YAAa,gBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,SAEFX,EACE,eACA,oBACA,eACA,CACE,CACES,YAAa,mBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,cAEFX,EACE,kBACA,uBACA,oBACA,CACE,CACES,YAAa,yBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,mBAEFT,EAAoB,iBAAkB,OAAQ,mBAAoB,CAChE,CACEO,YAAa,uBACbC,eAAgB,CAAC,EACjBC,QAAS,iBAGbT,EACE,iBACA,sBACA,kBACA,CACE,CACEO,YAAa,uBACbC,eAAgB,CAAC,EACjBC,QAAS,iBAIfR,EACE,cACA,oBACA,eACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,eAEZH,QAAS,gBAGb,gBAEFX,EACE,SACA,cACA,SACA,CACE,CACES,YAAa,iBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,iBAEFT,EACE,OACA,YACA,OACA,CACE,CACEO,YAAa,aACbE,QAAS,gBAGb,QAEFR,EACE,UACA,eACA,UACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,WAEZH,QAAS,gBAGb,WAEFX,EACE,aACA,eACA,oBACA,CACE,CACES,YAAa,qBACbC,eAAgB,CAAC,EACjBC,QAAS,YAGb,yBC5VV,SAASmB,EAAYC,GACnB,MAAM,UAAEC,EAAS,MAAEC,GAAUF,EAAc1E,QAC3C,MAA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","sources":["webpack://@ohif/mode-segmentation/webpack/universalModuleDefinition","webpack://@ohif/mode-segmentation/external umd {\"commonjs2\":\"@ohif/core\",\"commonjs\":\"@ohif/core\",\"amd\":\"@ohif/core\",\"root\":\"@ohif/core\"}","webpack://@ohif/mode-segmentation/external umd {\"commonjs2\":\"@ohif/ui\",\"commonjs\":\"@ohif/ui\",\"amd\":\"@ohif/ui\",\"root\":\"@ohif/ui\"}","webpack://@ohif/mode-segmentation/webpack/bootstrap","webpack://@ohif/mode-segmentation/webpack/runtime/define property getters","webpack://@ohif/mode-segmentation/webpack/runtime/hasOwnProperty shorthand","webpack://@ohif/mode-segmentation/webpack/runtime/make namespace object","webpack://@ohif/mode-segmentation/./src/id.js","webpack://@ohif/mode-segmentation/./src/toolbarButtons.ts","webpack://@ohif/mode-segmentation/./src/initToolGroups.ts","webpack://@ohif/mode-segmentation/./src/index.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@ohif/core\"), require(\"@ohif/ui\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"@ohif/mode-segmentation\", [\"@ohif/core\", \"@ohif/ui\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@ohif/mode-segmentation\"] = factory(require(\"@ohif/core\"), require(\"@ohif/ui\"));\n\telse\n\t\troot[\"@ohif/mode-segmentation\"] = factory(root[\"@ohif/core\"], root[\"@ohif/ui\"]);\n})(typeof self !== 'undefined' ? self : this, (__WEBPACK_EXTERNAL_MODULE__498__, __WEBPACK_EXTERNAL_MODULE__610__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__498__;","module.exports = __WEBPACK_EXTERNAL_MODULE__610__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import packageJson from '../package.json';\n\nconst id = packageJson.name;\n\nexport { id };\n","import {\n // ExpandableToolbarButton,\n // ListMenu,\n WindowLevelMenuItem,\n} from '@ohif/ui';\nimport { defaults } from '@ohif/core';\n\nconst { windowLevelPresets } = defaults;\n/**\n *\n * @param {*} type - 'tool' | 'action' | 'toggle'\n * @param {*} id\n * @param {*} icon\n * @param {*} label\n */\nfunction _createButton(type, id, icon, label, commands, tooltip, uiType) {\n return {\n id,\n icon,\n label,\n type,\n commands,\n tooltip,\n uiType,\n };\n}\n\nconst _createActionButton = _createButton.bind(null, 'action');\nconst _createToggleButton = _createButton.bind(null, 'toggle');\nconst _createToolButton = _createButton.bind(null, 'tool');\n\n/**\n *\n * @param {*} preset - preset number (from above import)\n * @param {*} title\n * @param {*} subtitle\n */\nfunction _createWwwcPreset(preset, title, subtitle) {\n return {\n id: preset.toString(),\n title,\n subtitle,\n type: 'action',\n commands: [\n {\n commandName: 'setWindowLevel',\n commandOptions: {\n ...windowLevelPresets[preset],\n },\n context: 'CORNERSTONE',\n },\n ],\n };\n}\n\nconst toolGroupIds = ['default', 'mpr', 'SRToolGroup'];\n\n/**\n * Creates an array of 'setToolActive' commands for the given toolName - one for\n * each toolGroupId specified in toolGroupIds.\n * @param {string} toolName\n * @returns {Array} an array of 'setToolActive' commands\n */\nfunction _createSetToolActiveCommands(toolName) {\n const temp = toolGroupIds.map(toolGroupId => ({\n commandName: 'setToolActive',\n commandOptions: {\n toolGroupId,\n toolName,\n },\n context: 'CORNERSTONE',\n }));\n return temp;\n}\n\nconst toolbarButtons = [\n // Zoom..\n {\n id: 'Zoom',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-zoom',\n label: 'Zoom',\n commands: _createSetToolActiveCommands('Zoom'),\n },\n },\n // Window Level + Presets...\n {\n id: 'WindowLevel',\n type: 'ohif.splitButton',\n props: {\n groupId: 'WindowLevel',\n primary: _createToolButton(\n 'WindowLevel',\n 'tool-window-level',\n 'Window Level',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'WindowLevel',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Window Level'\n ),\n secondary: {\n icon: 'chevron-down',\n label: 'W/L Manual',\n isActive: true,\n tooltip: 'W/L Presets',\n },\n isAction: true, // ?\n renderer: WindowLevelMenuItem,\n items: [\n _createWwwcPreset(1, 'Soft tissue', '400 / 40'),\n _createWwwcPreset(2, 'Lung', '1500 / -600'),\n _createWwwcPreset(3, 'Liver', '150 / 90'),\n _createWwwcPreset(4, 'Bone', '2500 / 480'),\n _createWwwcPreset(5, 'Brain', '80 / 40'),\n ],\n },\n },\n // Pan...\n {\n id: 'Pan',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-move',\n label: 'Pan',\n commands: _createSetToolActiveCommands('Pan'),\n },\n },\n {\n id: 'Capture',\n type: 'ohif.action',\n props: {\n icon: 'tool-capture',\n label: 'Capture',\n type: 'action',\n commands: [\n {\n commandName: 'showDownloadViewportModal',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n },\n },\n {\n id: 'Layout',\n type: 'ohif.layoutSelector',\n props: {\n rows: 3,\n columns: 3,\n },\n },\n {\n id: 'MPR',\n type: 'ohif.action',\n props: {\n type: 'toggle',\n icon: 'icon-mpr',\n label: 'MPR',\n commands: [\n {\n commandName: 'toggleHangingProtocol',\n commandOptions: {\n protocolId: 'mpr',\n },\n context: 'DEFAULT',\n },\n ],\n },\n },\n {\n id: 'Crosshairs',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-crosshair',\n label: 'Crosshairs',\n commands: [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Crosshairs',\n toolGroupId: 'mpr',\n },\n context: 'CORNERSTONE',\n },\n ],\n },\n },\n // More...\n {\n id: 'MoreTools',\n type: 'ohif.splitButton',\n props: {\n isRadio: true, // ?\n groupId: 'MoreTools',\n primary: _createActionButton(\n 'Reset',\n 'tool-reset',\n 'Reset View',\n [\n {\n commandName: 'resetViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Reset'\n ),\n secondary: {\n icon: 'chevron-down',\n label: '',\n isActive: true,\n tooltip: 'More Tools',\n },\n items: [\n _createActionButton(\n 'Reset',\n 'tool-reset',\n 'Reset View',\n [\n {\n commandName: 'resetViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Reset'\n ),\n _createActionButton(\n 'rotate-right',\n 'tool-rotate-right',\n 'Rotate Right',\n [\n {\n commandName: 'rotateViewportCW',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Rotate +90'\n ),\n _createActionButton(\n 'flip-horizontal',\n 'tool-flip-horizontal',\n 'Flip Horizontally',\n [\n {\n commandName: 'flipViewportHorizontal',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Flip Horizontal'\n ),\n _createToggleButton('ImageSliceSync', 'link', 'Stack Image Sync', [\n {\n commandName: 'toggleImageSliceSync',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ]),\n _createToggleButton(\n 'ReferenceLines',\n 'tool-referenceLines', // change this with the new icon\n 'Reference Lines',\n [\n {\n commandName: 'toggleReferenceLines',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ]\n ),\n _createToolButton(\n 'StackScroll',\n 'tool-stack-scroll',\n 'Stack Scroll',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'StackScroll',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Stack Scroll'\n ),\n _createActionButton(\n 'invert',\n 'tool-invert',\n 'Invert',\n [\n {\n commandName: 'invertViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Invert Colors'\n ),\n _createToggleButton(\n 'cine',\n 'tool-cine',\n 'Cine',\n [\n {\n commandName: 'toggleCine',\n context: 'CORNERSTONE',\n },\n ],\n 'Cine'\n ),\n _createToolButton(\n 'Magnify',\n 'tool-magnify',\n 'Magnify',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Magnify',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Magnify'\n ),\n _createActionButton(\n 'TagBrowser',\n 'list-bullets',\n 'Dicom Tag Browser',\n [\n {\n commandName: 'openDICOMTagViewer',\n commandOptions: {},\n context: 'DEFAULT',\n },\n ],\n 'Dicom Tag Browser'\n ),\n ],\n },\n },\n];\n\nexport default toolbarButtons;\n","function createTools(utilityModule) {\n const { toolNames, Enums } = utilityModule.exports;\n return {\n active: [\n { toolName: toolNames.WindowLevel, bindings: [{ mouseButton: Enums.MouseBindings.Primary }] },\n { toolName: toolNames.Pan, bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }] },\n { toolName: toolNames.Zoom, bindings: [{ mouseButton: Enums.MouseBindings.Secondary }] },\n { toolName: toolNames.StackScrollMouseWheel, bindings: [] },\n ],\n passive: [\n {\n toolName: 'CircularBrush',\n parentTool: 'Brush',\n configuration: {\n activeStrategy: 'FILL_INSIDE_CIRCLE',\n },\n },\n {\n toolName: 'CircularEraser',\n parentTool: 'Brush',\n configuration: {\n activeStrategy: 'ERASE_INSIDE_CIRCLE',\n },\n },\n {\n toolName: 'SphereBrush',\n parentTool: 'Brush',\n configuration: {\n activeStrategy: 'FILL_INSIDE_SPHERE',\n },\n },\n {\n toolName: 'SphereEraser',\n parentTool: 'Brush',\n configuration: {\n activeStrategy: 'ERASE_INSIDE_SPHERE',\n },\n },\n {\n toolName: 'ThresholdCircularBrush',\n parentTool: 'Brush',\n configuration: {\n activeStrategy: 'THRESHOLD_INSIDE_CIRCLE',\n strategySpecificConfiguration: {\n THRESHOLD: {\n threshold: [-500, 500],\n },\n },\n },\n },\n {\n toolName: 'ThresholdSphereBrush',\n parentTool: 'Brush',\n configuration: {\n activeStrategy: 'THRESHOLD_INSIDE_SPHERE',\n strategySpecificConfiguration: {\n THRESHOLD: {\n threshold: [-500, 500],\n },\n },\n },\n },\n { toolName: toolNames.CircleScissors },\n { toolName: toolNames.RectangleScissors },\n { toolName: toolNames.SphereScissors },\n { toolName: toolNames.StackScroll },\n { toolName: toolNames.Magnify },\n { toolName: toolNames.SegmentationDisplay },\n ],\n disabled: [{ toolName: toolNames.ReferenceLines }],\n };\n}\n\nfunction initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, toolGroupId) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n const tools = createTools(utilityModule);\n toolGroupService.createToolGroupAndAddTools(toolGroupId, tools);\n}\n\nfunction initMPRToolGroup(extensionManager, toolGroupService, commandsManager) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n const tools = createTools(utilityModule);\n tools.disabled.push(\n {\n toolName: utilityModule.exports.toolNames.Crosshairs,\n configuration: {\n viewportIndicators: false,\n autoPan: {\n enabled: false,\n panSize: 10,\n },\n },\n },\n { toolName: utilityModule.exports.toolNames.ReferenceLines }\n );\n toolGroupService.createToolGroupAndAddTools('mpr', tools);\n}\n\nfunction initToolGroups(extensionManager, toolGroupService, commandsManager) {\n initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, 'default');\n initMPRToolGroup(extensionManager, toolGroupService, commandsManager);\n}\n\nexport default initToolGroups;\n","import { hotkeys } from '@ohif/core';\nimport { id } from './id';\nimport toolbarButtons from './toolbarButtons';\nimport initToolGroups from './initToolGroups';\n\nconst ohif = {\n layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout',\n sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack',\n hangingProtocol: '@ohif/extension-default.hangingProtocolModule.default',\n leftPanel: '@ohif/extension-default.panelModule.seriesList',\n rightPanel: '@ohif/extension-default.panelModule.measure',\n};\n\nconst cornerstone = {\n viewport: '@ohif/extension-cornerstone.viewportModule.cornerstone',\n};\n\nconst segmentation = {\n panel: '@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentation',\n panelTool: '@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentationWithTools',\n sopClassHandler: '@ohif/extension-cornerstone-dicom-seg.sopClassHandlerModule.dicom-seg',\n viewport: '@ohif/extension-cornerstone-dicom-seg.viewportModule.dicom-seg',\n};\n\n/**\n * Just two dependencies to be able to render a viewport with panels in order\n * to make sure that the mode is working.\n */\nconst extensionDependencies = {\n '@ohif/extension-default': '^3.0.0',\n '@ohif/extension-cornerstone': '^3.0.0',\n '@ohif/extension-cornerstone-dicom-seg': '^3.0.0',\n};\n\nfunction modeFactory({ modeConfiguration }) {\n return {\n /**\n * Mode ID, which should be unique among modes used by the viewer. This ID\n * is used to identify the mode in the viewer's state.\n */\n id,\n routeName: 'segmentation',\n /**\n * Mode name, which is displayed in the viewer's UI in the workList, for the\n * user to select the mode.\n */\n displayName: 'Segmentation',\n /**\n * Runs when the Mode Route is mounted to the DOM. Usually used to initialize\n * Services and other resources.\n */\n onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => {\n const { measurementService, toolbarService, toolGroupService } = servicesManager.services;\n\n measurementService.clearMeasurements();\n\n // Init Default and SR ToolGroups\n initToolGroups(extensionManager, toolGroupService, commandsManager);\n\n let unsubscribe;\n\n const activateTool = () => {\n toolbarService.recordInteraction({\n groupId: 'WindowLevel',\n interactionType: 'tool',\n commands: [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'WindowLevel',\n },\n context: 'CORNERSTONE',\n },\n ],\n });\n\n // We don't need to reset the active tool whenever a viewport is getting\n // added to the toolGroup.\n unsubscribe();\n };\n\n // Since we only have one viewport for the basic cs3d mode and it has\n // only one hanging protocol, we can just use the first viewport\n ({ unsubscribe } = toolGroupService.subscribe(\n toolGroupService.EVENTS.VIEWPORT_ADDED,\n activateTool\n ));\n\n toolbarService.init(extensionManager);\n toolbarService.addButtons(toolbarButtons);\n toolbarService.createButtonSection('primary', [\n 'Zoom',\n 'WindowLevel',\n 'Pan',\n 'Capture',\n 'Layout',\n 'MPR',\n 'Crosshairs',\n 'MoreTools',\n ]);\n },\n onModeExit: ({ servicesManager }) => {\n const {\n toolGroupService,\n syncGroupService,\n toolbarService,\n segmentationService,\n cornerstoneViewportService,\n } = servicesManager.services;\n\n toolGroupService.destroy();\n syncGroupService.destroy();\n segmentationService.destroy();\n cornerstoneViewportService.destroy();\n },\n /** */\n validationTags: {\n study: [],\n series: [],\n },\n /**\n * A boolean return value that indicates whether the mode is valid for the\n * modalities of the selected studies. Currently we don't have stack viewport\n * segmentations and we should exclude them\n */\n isValidMode: ({ modalities }) => {\n // Don't show the mode if the selected studies have only one modality\n // that is not supported by the mode\n const modalitiesArray = modalities.split('\\\\');\n if (modalitiesArray.length === 1) {\n return !['SM', 'US', 'MG', 'OT', 'DOC', 'CR'].includes(modalitiesArray[0]);\n }\n\n return true;\n },\n /**\n * Mode Routes are used to define the mode's behavior. A list of Mode Route\n * that includes the mode's path and the layout to be used. The layout will\n * include the components that are used in the layout. For instance, if the\n * default layoutTemplate is used (id: '@ohif/extension-default.layoutTemplateModule.viewerLayout')\n * it will include the leftPanels, rightPanels, and viewports. However, if\n * you define another layoutTemplate that includes a Footer for instance,\n * you should provide the Footer component here too. Note: We use Strings\n * to reference the component's ID as they are registered in the internal\n * ExtensionManager. The template for the string is:\n * `${extensionId}.{moduleType}.${componentId}`.\n */\n routes: [\n {\n path: 'template',\n layoutTemplate: ({ location, servicesManager }) => {\n return {\n id: ohif.layout,\n props: {\n leftPanels: [ohif.leftPanel],\n rightPanels: [segmentation.panelTool],\n viewports: [\n {\n namespace: cornerstone.viewport,\n displaySetsToDisplay: [ohif.sopClassHandler],\n },\n {\n namespace: segmentation.viewport,\n displaySetsToDisplay: [segmentation.sopClassHandler],\n },\n ],\n },\n };\n },\n },\n ],\n /** List of extensions that are used by the mode */\n extensions: extensionDependencies,\n /** HangingProtocol used by the mode */\n // hangingProtocol: [''],\n /** SopClassHandlers used by the mode */\n sopClassHandlers: [ohif.sopClassHandler, segmentation.sopClassHandler],\n /** hotkeys for mode */\n hotkeys: [...hotkeys.defaults.hotkeyBindings],\n };\n}\n\nconst mode = {\n id,\n modeFactory,\n extensionDependencies,\n};\n\nexport default mode;\n"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__498__","__WEBPACK_EXTERNAL_MODULE__610__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","id","packageJson","windowLevelPresets","defaults","_createButton","type","icon","label","commands","tooltip","uiType","_createActionButton","bind","_createToggleButton","_createToolButton","_createWwwcPreset","preset","title","subtitle","toString","commandName","commandOptions","context","toolGroupIds","_createSetToolActiveCommands","toolName","map","toolGroupId","props","groupId","primary","secondary","isActive","isAction","renderer","WindowLevelMenuItem","items","rows","columns","protocolId","isRadio","createTools","utilityModule","toolNames","Enums","active","WindowLevel","bindings","mouseButton","MouseBindings","Primary","Pan","Auxiliary","Zoom","Secondary","StackScrollMouseWheel","passive","parentTool","configuration","activeStrategy","strategySpecificConfiguration","THRESHOLD","threshold","CircleScissors","RectangleScissors","SphereScissors","StackScroll","Magnify","SegmentationDisplay","disabled","ReferenceLines","ohif","segmentation","extensionDependencies","modeFactory","modeConfiguration","routeName","displayName","onModeEnter","servicesManager","extensionManager","commandsManager","measurementService","toolbarService","toolGroupService","services","unsubscribe","clearMeasurements","tools","getModuleEntry","createToolGroupAndAddTools","initDefaultToolGroup","push","Crosshairs","viewportIndicators","autoPan","enabled","panSize","initMPRToolGroup","initToolGroups","subscribe","EVENTS","VIEWPORT_ADDED","activateTool","recordInteraction","interactionType","init","addButtons","toolbarButtons","createButtonSection","onModeExit","syncGroupService","segmentationService","cornerstoneViewportService","destroy","validationTags","study","series","isValidMode","modalities","modalitiesArray","split","length","includes","routes","path","layoutTemplate","location","leftPanels","rightPanels","viewports","namespace","displaySetsToDisplay","extensions","sopClassHandlers","hotkeys","hotkeyBindings"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohif/mode-segmentation",
3
- "version": "3.8.0-beta.6",
3
+ "version": "3.8.0-beta.60",
4
4
  "description": "OHIF segmentation mode which enables labelmap segmentation read/edit/export",
5
5
  "author": "@ohif",
6
6
  "license": "MIT",
@@ -24,6 +24,8 @@
24
24
  "yarn": ">=1.16.0"
25
25
  },
26
26
  "scripts": {
27
+ "clean": "shx rm -rf dist",
28
+ "clean:deep": "yarn run clean && shx rm -rf node_modules",
27
29
  "dev": "cross-env NODE_ENV=development webpack --config .webpack/webpack.dev.js --watch --output-pathinfo",
28
30
  "dev:cornerstone": "yarn run dev",
29
31
  "build": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js",
@@ -33,25 +35,26 @@
33
35
  "test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
34
36
  },
35
37
  "peerDependencies": {
36
- "@ohif/core": "3.8.0-beta.6"
38
+ "@ohif/core": "3.8.0-beta.60"
37
39
  },
38
40
  "dependencies": {
39
- "@babel/runtime": "^7.20.13"
41
+ "@babel/runtime": "^7.20.13",
42
+ "i18next": "^17.0.3"
40
43
  },
41
44
  "devDependencies": {
42
- "@babel/core": "^7.21.4",
45
+ "@babel/core": "^7.23.2",
43
46
  "@babel/plugin-proposal-class-properties": "^7.16.7",
44
47
  "@babel/plugin-proposal-object-rest-spread": "^7.17.3",
45
48
  "@babel/plugin-proposal-private-methods": "^7.18.6",
46
49
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
47
50
  "@babel/plugin-transform-arrow-functions": "^7.16.7",
48
51
  "@babel/plugin-transform-regenerator": "^7.16.7",
49
- "@babel/plugin-transform-runtime": "^7.17.0",
52
+ "@babel/plugin-transform-runtime": "^7.23.2",
50
53
  "@babel/plugin-transform-typescript": "^7.13.0",
51
- "@babel/preset-env": "^7.16.11",
54
+ "@babel/preset-env": "7.23.2",
52
55
  "@babel/preset-react": "^7.16.7",
53
56
  "@babel/preset-typescript": "^7.13.0",
54
- "babel-eslint": "^8.0.3",
57
+ "babel-eslint": "^10.1.0",
55
58
  "babel-loader": "^8.0.0-beta.4",
56
59
  "babel-plugin-inline-react-svg": "^2.0.1",
57
60
  "clean-webpack-plugin": "^4.0.0",