@ohif/mode-preclinical-4d 3.12.0-beta.9 → 3.12.0-beta.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["ohif-mode-preclinical-4d"]=o():e["ohif-mode-preclinical-4d"]=o()}(globalThis,()=>(()=>{"use strict";var e={d:(o,t)=>{for(var a in t)e.o(t,a)&&!e.o(o,a)&&Object.defineProperty(o,a,{enumerable:!0,get:t[a]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{default:()=>B});const t=JSON.parse('{"UU":"@ohif/mode-preclinical-4d"}').UU,a="@ohif/extension-cornerstone-dynamic-volume.panelModule.dynamic-segmentation";const i=[["@ohif/extension-cornerstone-dynamic-volume.panelModule.dynamic-volume","@ohif/extension-cornerstone.panelModule.activeViewportWindowLevel"]],n={panels:{left:i,right:[]}};function r({servicesManager:e}){const{workflowStepsService:o}=e.services,t=function({servicesManager:e}){const{toolbarService:o}=e.services,t=function({toolbarService:e}){return[{buttonSection:e.sections.primary,buttons:["MeasurementTools","Zoom","WindowLevel","Crosshairs","Pan"]},{buttonSection:"MeasurementTools",buttons:["Length","Bidirectional","ArrowAnnotate","EllipticalROI"]}]}({toolbarService:o}),r=function({toolbarService:e}){return[{buttonSection:e.sections.dynamicToolbox,buttons:["SegmentationTools"]},{buttonSection:"SegmentationTools",buttons:["BrushTools","RectangleROIStartEndThreshold"]},{buttonSection:"BrushTools",buttons:["Brush","Eraser","Threshold"]}]}({toolbarService:o});return{steps:[{id:"dataPreparation",name:"Data Preparation",layout:{panels:{left:i}},toolbarButtons:t,hangingProtocol:{protocolId:"default4D",stageId:"dataPreparation"},info:"In the Data Preparation step, you can visualize the dynamic PT volume data in three orthogonal views: axial, sagittal, and coronal. Use the left panel controls to adjust the visualization settings, such as playback speed, or navigate between different frames. This step allows you to assess the quality of the PT data and prepare for further analysis or registration with other modalities."},{id:"registration",name:"Registration",layout:n,toolbarButtons:t,hangingProtocol:{protocolId:"default4D",stageId:"registration"},info:"The Registration step provides a comprehensive view of the CT, PT, and fused CT-PT volume data in multiple orientations. The fusion viewports display the CT and PT volumes overlaid, allowing you to visually assess the alignment and registration between the two modalities. The individual CT and PT viewports are also available for side-by-side comparison. This step is crucial for ensuring proper registration before proceeding with further analysis or quantification."},{id:"roiQuantification",name:"ROI Quantification",layout:{panels:{left:i,right:[[a]]},options:{leftPanelClosed:!1,rightPanelClosed:!1}},toolbarButtons:[...t,...r],hangingProtocol:{protocolId:"default4D",stageId:"roiQuantification"},info:"The ROI quantification step allows you to define regions of interest (ROIs) with labelmap segmentations, on the fused CT-PT volume data using the labelmap tools. The left panel provides controls for adjusting the dynamic volume visualization, while the right panel offers tools for segmentation, editing, and exporting the ROI data. This step enables you to quantify the uptake or other measures within the defined ROIs for further analysis."},{id:"kineticAnalysis",name:"Kinetic Analysis",layout:n,toolbarButtons:t,hangingProtocol:{protocolId:"default4D",stageId:"kineticAnalysis"},onEnter:[{commandName:"updateSegmentationsChartDisplaySet",options:{servicesManager:e}}],info:"The Kinetic Analysis step provides a comprehensive view for visualizing and analyzing the dynamic data derived from the ROI segmentations. The fusion viewports display the combined CT-PT volume data, while a dedicated viewport shows a series chart representing the data over time. This step allows you to explore the temporal dynamics of the uptake or other kinetic measures within the defined regions of interest, enabling further quantitative analysis and modeling."}]}}({servicesManager:e});o.addWorkflowSteps(t.steps),o.setActiveWorkflowStep(t.steps[0].id)}const s="dynamic4D-default",l="dynamic4D-pt",d="dynamic4D-fusion",u="dynamic4D-ct",c={"viewport-0":"rgb(200, 0, 0)","viewport-1":"rgb(200, 200, 0)","viewport-2":"rgb(0, 200, 0)"},p={axial:"rgb(200, 0, 0)",sagittal:"rgb(200, 200, 0)",coronal:"rgb(0, 200, 0)"};function m({toolNames:e,Enums:o,toolGroupService:t,commandsManager:a,servicesManager:i}){!function(e,o,t,a,i){const{cornerstoneViewportService:n}=i.services,r={active:[{toolName:e.WindowLevel,bindings:[{mouseButton:o.MouseBindings.Primary}]},{toolName:e.Pan,bindings:[{mouseButton:o.MouseBindings.Auxiliary}]},{toolName:e.Zoom,bindings:[{mouseButton:o.MouseBindings.Secondary},{numTouchPoints:2}]},{toolName:e.StackScroll,bindings:[{mouseButton:o.MouseBindings.Wheel},{numTouchPoints:3}]}],passive:[{toolName:e.Length},{toolName:e.SegmentBidirectional},{toolName:e.ArrowAnnotate},{toolName:e.Bidirectional},{toolName:e.Probe},{toolName:e.EllipticalROI},{toolName:e.RectangleROI},{toolName:e.RectangleROIThreshold},{toolName:e.RectangleScissors},{toolName:e.PaintFill},{toolName:e.StackScroll},{toolName:e.Magnify},{toolName:"CircularBrush",parentTool:"Brush",configuration:{activeStrategy:"FILL_INSIDE_CIRCLE",brushSize:7}},{toolName:"CircularEraser",parentTool:"Brush",configuration:{activeStrategy:"ERASE_INSIDE_CIRCLE",brushSize:7}},{toolName:"SphereBrush",parentTool:"Brush",configuration:{activeStrategy:"FILL_INSIDE_SPHERE",brushSize:7}},{toolName:"SphereEraser",parentTool:"Brush",configuration:{activeStrategy:"ERASE_INSIDE_SPHERE",brushSize:7}},{toolName:"ThresholdCircularBrush",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_CIRCLE",brushSize:7}},{toolName:"ThresholdSphereBrush",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_SPHERE",brushSize:7}},{toolName:e.CircleScissors},{toolName:e.RectangleScissors},{toolName:e.SphereScissors},{toolName:e.StackScroll},{toolName:e.Magnify}],enabled:[],disabled:[{toolName:e.Crosshairs,configuration:{viewportIndicators:!0,viewportIndicatorsConfig:{circleRadius:5,xOffset:.95,yOffset:.05},disableOnPassive:!0,autoPan:{enabled:!1,panSize:10},getReferenceLineColor:e=>{const o=n.getViewportInfo(e),t=o?.viewportOptions;return t?c[t.id]||p[t.orientation]||"#0c0":(console.warn("missing viewport?",e),"#0c0")}}}]};t.createToolGroupAndAddTools(l,{...r,passive:[...r.passive,{toolName:"RectangleROIStartEndThreshold"}]}),t.createToolGroupAndAddTools(u,{...r,passive:[...r.passive,{toolName:"RectangleROIStartEndThreshold"}]}),t.createToolGroupAndAddTools(d,{...r,passive:[...r.passive,{toolName:"RectangleROIStartEndThreshold"}]}),t.createToolGroupAndAddTools(s,r)}(e,o,t,0,i)}const h={commandName:"setToolActiveToolbar",commandOptions:{toolGroupIds:[l,u,d,s]}},v=[{id:"MeasurementTools",uiType:"ohif.toolButtonList",props:{buttonSection:!0}},{id:"BrushTools",uiType:"ohif.toolBoxButtonGroup",props:{buttonSection:!0}},{id:"SegmentationTools",uiType:"ohif.toolBoxButton",props:{buttonSection:!0}},{id:"AdvancedRenderingControls",uiType:"ohif.advancedRenderingControls",props:{buttonSection:!0}},{id:"modalityLoadBadge",uiType:"ohif.modalityLoadBadge",props:{icon:"Status",label:"Status",tooltip:"Status",evaluate:{name:"evaluate.modalityLoadBadge",hideWhenDisabled:!0}}},{id:"navigationComponent",uiType:"ohif.navigationComponent",props:{icon:"Navigation",label:"Navigation",tooltip:"Navigate between segments/measurements and manage their visibility",evaluate:{name:"evaluate.navigationComponent",hideWhenDisabled:!0}}},{id:"windowLevelMenuEmbedded",uiType:"ohif.windowLevelMenuEmbedded",props:{icon:"WindowLevel",label:"Window Level",tooltip:"Adjust window/level presets and customize image contrast settings",evaluate:{name:"evaluate.windowLevelMenuEmbedded",hideWhenDisabled:!0}}},{id:"trackingStatus",uiType:"ohif.trackingStatus",props:{icon:"TrackingStatus",label:"Tracking Status",tooltip:"View and manage tracking status of measurements and annotations",evaluate:{name:"evaluate.trackingStatus",hideWhenDisabled:!0}}},{id:"Length",uiType:"ohif.toolButton",props:{icon:"tool-length",label:"Length",tooltip:"Length Tool",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"Bidirectional",uiType:"ohif.toolButton",props:{icon:"tool-bidirectional",label:"Bidirectional",tooltip:"Bidirectional Tool",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"ArrowAnnotate",uiType:"ohif.toolButton",props:{icon:"tool-annotate",label:"Annotation",tooltip:"Arrow Annotate",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"EllipticalROI",uiType:"ohif.toolButton",props:{icon:"tool-ellipse",label:"Ellipse",tooltip:"Ellipse ROI",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"Zoom",uiType:"ohif.toolButton",props:{icon:"tool-zoom",label:"Zoom",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"WindowLevel",uiType:"ohif.toolButton",props:{icon:"tool-window-level",label:"Window Level",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"Pan",uiType:"ohif.toolButton",props:{type:"tool",icon:"tool-move",label:"Pan",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"TrackballRotate",uiType:"ohif.toolButton",props:{type:"tool",icon:"tool-3d-rotate",label:"3D Rotate",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"Capture",uiType:"ohif.toolButton",props:{icon:"tool-capture",label:"Capture",commands:"showDownloadViewportModal",evaluate:["evaluate.action",{name:"evaluate.viewport.supported",unsupportedViewportTypes:["video","wholeSlide"]}]}},{id:"Layout",uiType:"ohif.layoutSelector",props:{rows:3,columns:4,evaluate:"evaluate.action",commands:"setViewportGridLayout"}},{id:"Crosshairs",uiType:"ohif.toolButton",props:{type:"tool",icon:"tool-crosshair",label:"Crosshairs",commands:h,evaluate:"evaluate.cornerstoneTool"}},{id:"ProgressDropdown",uiType:"ohif.progressDropdown"},{id:"RectangleROIStartEndThreshold",uiType:"ohif.toolBoxButton",props:{icon:"tool-create-threshold",label:"Rectangle ROI Threshold",commands:h,evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["RectangleROIStartEndThreshold"]},options:"tmtv.RectangleROIThresholdOptions"}},{id:"Brush",uiType:"ohif.toolButton",props:{icon:"icon-tool-brush",label:"Brush",evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["CircularBrush","SphereBrush"]},options:[{name:"Size (mm)",id:"brush-radius",type:"range",min:.5,max:99.5,step:.5,value:7,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularBrush","SphereBrush"]}}},{name:"Shape",type:"radio",id:"brush-mode",value:"CircularBrush",values:[{value:"CircularBrush",label:"Circle"},{value:"SphereBrush",label:"Sphere"}],commands:"setToolActiveToolbar"}]}},{id:"Eraser",uiType:"ohif.toolButton",props:{icon:"icon-tool-eraser",label:"Eraser",evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["CircularEraser","SphereEraser"]},options:[{name:"Radius (mm)",id:"eraser-radius",type:"range",min:.5,max:99.5,step:.5,value:7,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularEraser","SphereEraser"]}}},{name:"Shape",type:"radio",id:"eraser-mode",value:"CircularEraser",values:[{value:"CircularEraser",label:"Circle"},{value:"SphereEraser",label:"Sphere"}],commands:"setToolActiveToolbar"}]}},{id:"Threshold",uiType:"ohif.toolButton",props:{icon:"icon-tool-threshold",label:"Threshold",evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]},options:[{name:"Radius (mm)",id:"threshold-radius",type:"range",min:.5,max:99.5,step:.5,value:7,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]}}},{name:"Shape",type:"radio",id:"eraser-mode",value:"ThresholdCircularBrush",values:[{value:"ThresholdCircularBrush",label:"Circle"},{value:"ThresholdSphereBrush",label:"Sphere"}],commands:"setToolActiveToolbar"},{name:"ThresholdRange",type:"double-range",id:"threshold-range",min:0,max:100,step:.5,value:[2,50],commands:{commandName:"setThresholdRange",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]}}}]}},{id:"Shapes",uiType:"ohif.toolBoxButton",props:{label:"Shapes",evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["CircleScissor","SphereScissor","RectangleScissor"]},icon:"icon-tool-shape",options:[{name:"Shape",type:"radio",value:"CircleScissor",id:"shape-mode",values:[{value:"CircleScissor",label:"Circle"},{value:"SphereScissor",label:"Sphere"},{value:"RectangleScissor",label:"Rectangle"}],commands:"setToolActiveToolbar"}]}},{id:"dataOverlayMenu",uiType:"ohif.dataOverlayMenu",props:{icon:"ViewportViews",label:"Data Overlay",tooltip:"Configure data overlay options and manage foreground/background display sets",evaluate:"evaluate.dataOverlayMenu"}},{id:"orientationMenu",uiType:"ohif.orientationMenu",props:{icon:"OrientationSwitch",label:"Orientation",tooltip:"Change viewport orientation between axial, sagittal, coronal and reformat planes",evaluate:{name:"evaluate.orientationMenu"}}},{id:"windowLevelMenu",uiType:"ohif.windowLevelMenu",props:{icon:"WindowLevel",label:"Window Level",tooltip:"Adjust window/level presets and customize image contrast settings",evaluate:"evaluate.windowLevelMenu"}},{id:"voiManualControlMenu",uiType:"ohif.voiManualControlMenu",props:{icon:"WindowLevelAdvanced",label:"Advanced Window Level",tooltip:"Advanced window/level settings with manual controls and presets",evaluate:"evaluate.voiManualControlMenu"}},{id:"thresholdMenu",uiType:"ohif.thresholdMenu",props:{icon:"Threshold",label:"Threshold",tooltip:"Image threshold settings",evaluate:{name:"evaluate.thresholdMenu",hideWhenDisabled:!0}}},{id:"opacityMenu",uiType:"ohif.opacityMenu",props:{icon:"Opacity",label:"Opacity",tooltip:"Image opacity settings",evaluate:{name:"evaluate.opacityMenu",hideWhenDisabled:!0}}},{id:"Colorbar",uiType:"ohif.colorbar",props:{type:"tool",label:"Colorbar"}}],g={"@ohif/extension-default":"3.7.0-beta.76","@ohif/extension-cornerstone":"3.7.0-beta.76","@ohif/extension-cornerstone-dynamic-volume":"3.7.0-beta.76","@ohif/extension-cornerstone-dicom-seg":"3.7.0-beta.76","@ohif/extension-tmtv":"3.7.0-beta.76"},f="@ohif/extension-default.layoutTemplateModule.viewerLayout",y="@ohif/extension-default.sopClassHandlerModule.stack",S="@ohif/extension-default.sopClassHandlerModule.chart",T="@ohif/extension-default.viewportModule.chartViewport",b="@ohif/extension-cornerstone-dynamic-volume.panelModule.dynamic-volume",w="@ohif/extension-cornerstone.viewportModule.cornerstone",M="@ohif/extension-cornerstone.panelModule.activeViewportWindowLevel";const B={id:t,modeFactory:function({modeConfiguration:e}){return{id:t,routeName:"dynamic-volume",displayName:"Preclinical 4D",onModeEnter:function({servicesManager:e,extensionManager:o,commandsManager:t}){const{measurementService:a,toolbarService:i,cineService:n,cornerstoneViewportService:r,toolGroupService:s,customizationService:l,viewportGridService:d}=e.services,u=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),{toolNames:c,Enums:p}=u.exports;a.clearMeasurements(),m({toolNames:c,Enums:p,toolGroupService:s,commandsManager:t,servicesManager:e}),i.register(v),i.updateSection(i.sections.secondary,["ProgressDropdown"]),i.updateSection(i.sections.viewportActionMenu.topLeft,["orientationMenu","dataOverlayMenu"]),i.updateSection(i.sections.viewportActionMenu.topLeft,["orientationMenu","dataOverlayMenu"]),i.updateSection(i.sections.viewportActionMenu.bottomMiddle,["AdvancedRenderingControls"]),i.updateSection("AdvancedRenderingControls",["windowLevelMenuEmbedded","voiManualControlMenu","Colorbar","opacityMenu","thresholdMenu"]),i.updateSection(i.sections.viewportActionMenu.topRight,["modalityLoadBadge","trackingStatus","navigationComponent"]),i.updateSection(i.sections.viewportActionMenu.bottomLeft,["windowLevelMenu"]),l.setCustomizations({"panelSegmentation.tableMode":{$set:"expanded"},"panelSegmentation.onSegmentationAdd":{$set:()=>{t.run("createNewLabelMapForDynamicVolume")}},"panelSegmentation.showAddSegment":{$set:!1}});const{unsubscribe:h}=r.subscribe(r.EVENTS.VIEWPORT_VOLUMES_CHANGED,()=>{const e=d.getActiveViewportId(),o=r.getCornerstoneViewport(e);n.playClip(o.element,{viewportId:e}),h()})},onSetupRouteComplete:({servicesManager:e})=>{r({servicesManager:e})},onModeExit:({servicesManager:e})=>{const{toolGroupService:o,syncGroupService:t,segmentationService:a,cornerstoneViewportService:i}=e.services;o.destroy(),t.destroy(),a.destroy(),i.destroy()},get validationTags(){return{study:[],series:[]}},isValidMode:({modalities:e,study:o})=>({valid:"M1"===o.mrn,description:"This mode is only available for 4D PET/CT studies."}),routes:[{path:"preclinical-4d",layoutTemplate:({location:e,servicesManager:o})=>({id:f,props:{leftPanels:[[b,M]],leftPanelResizable:!0,rightPanels:[],rightPanelResizable:!0,rightPanelClosed:!0,viewports:[{namespace:w,displaySetsToDisplay:[y]},{namespace:T,displaySetsToDisplay:[S]}]}})}],extensions:g,hangingProtocol:"default4D",sopClassHandlers:[S,y]}},extensionDependencies:g};return o=o.default})());
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["ohif-mode-preclinical-4d"]=t():e["ohif-mode-preclinical-4d"]=t()}(globalThis,()=>(()=>{"use strict";var e={d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{default:()=>de});const o=JSON.parse('{"UU":"@ohif/mode-preclinical-4d"}').UU,n="@ohif/extension-cornerstone-dynamic-volume.panelModule.dynamic-segmentation";const i=[["@ohif/extension-cornerstone-dynamic-volume.panelModule.dynamic-volume","@ohif/extension-cornerstone.panelModule.activeViewportWindowLevel"]],a={panels:{left:i,right:[]}};function r({servicesManager:e}){const{workflowStepsService:t}=e.services,o=function({servicesManager:e}){const{toolbarService:t}=e.services,o=function({toolbarService:e}){return[{buttonSection:e.sections.primary,buttons:["MeasurementTools","Zoom","WindowLevel","Crosshairs","Pan"]},{buttonSection:"MeasurementTools",buttons:["Length","Bidirectional","ArrowAnnotate","EllipticalROI"]}]}({toolbarService:t}),r=function({toolbarService:e}){return[{buttonSection:e.sections.dynamicToolbox,buttons:["SegmentationTools"]},{buttonSection:"SegmentationTools",buttons:["BrushTools","RectangleROIStartEndThreshold"]},{buttonSection:"BrushTools",buttons:["Brush","Eraser","Threshold"]}]}({toolbarService:t});return{steps:[{id:"dataPreparation",name:"Data Preparation",layout:{panels:{left:i}},toolbarButtons:o,hangingProtocol:{protocolId:"default4D",stageId:"dataPreparation"},info:"In the Data Preparation step, you can visualize the dynamic PT volume data in three orthogonal views: axial, sagittal, and coronal. Use the left panel controls to adjust the visualization settings, such as playback speed, or navigate between different frames. This step allows you to assess the quality of the PT data and prepare for further analysis or registration with other modalities."},{id:"registration",name:"Registration",layout:a,toolbarButtons:o,hangingProtocol:{protocolId:"default4D",stageId:"registration"},info:"The Registration step provides a comprehensive view of the CT, PT, and fused CT-PT volume data in multiple orientations. The fusion viewports display the CT and PT volumes overlaid, allowing you to visually assess the alignment and registration between the two modalities. The individual CT and PT viewports are also available for side-by-side comparison. This step is crucial for ensuring proper registration before proceeding with further analysis or quantification."},{id:"roiQuantification",name:"ROI Quantification",layout:{panels:{left:i,right:[[n]]},options:{leftPanelClosed:!1,rightPanelClosed:!1}},toolbarButtons:[...o,...r],hangingProtocol:{protocolId:"default4D",stageId:"roiQuantification"},info:"The ROI quantification step allows you to define regions of interest (ROIs) with labelmap segmentations, on the fused CT-PT volume data using the labelmap tools. The left panel provides controls for adjusting the dynamic volume visualization, while the right panel offers tools for segmentation, editing, and exporting the ROI data. This step enables you to quantify the uptake or other measures within the defined ROIs for further analysis."},{id:"kineticAnalysis",name:"Kinetic Analysis",layout:a,toolbarButtons:o,hangingProtocol:{protocolId:"default4D",stageId:"kineticAnalysis"},onEnter:[{commandName:"updateSegmentationsChartDisplaySet",options:{servicesManager:e}}],info:"The Kinetic Analysis step provides a comprehensive view for visualizing and analyzing the dynamic data derived from the ROI segmentations. The fusion viewports display the combined CT-PT volume data, while a dedicated viewport shows a series chart representing the data over time. This step allows you to explore the temporal dynamics of the uptake or other kinetic measures within the defined regions of interest, enabling further quantitative analysis and modeling."}]}}({servicesManager:e});t.addWorkflowSteps(o.steps),t.setActiveWorkflowStep(o.steps[0].id)}const s="dynamic4D-default",l="dynamic4D-pt",u="dynamic4D-fusion",c="dynamic4D-ct",p={"viewport-0":"rgb(200, 0, 0)","viewport-1":"rgb(200, 200, 0)","viewport-2":"rgb(0, 200, 0)"},d={axial:"rgb(200, 0, 0)",sagittal:"rgb(200, 200, 0)",coronal:"rgb(0, 200, 0)"};function h({toolNames:e,Enums:t,toolGroupService:o,commandsManager:n,servicesManager:i}){!function(e,t,o,n,i){const{cornerstoneViewportService:a}=i.services,r={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},{numTouchPoints:2}]},{toolName:e.StackScroll,bindings:[{mouseButton:t.MouseBindings.Wheel},{numTouchPoints:3}]}],passive:[{toolName:e.Length},{toolName:e.SegmentBidirectional},{toolName:e.ArrowAnnotate},{toolName:e.Bidirectional},{toolName:e.Probe},{toolName:e.EllipticalROI},{toolName:e.RectangleROI},{toolName:e.RectangleROIThreshold},{toolName:e.RectangleScissors},{toolName:e.PaintFill},{toolName:e.StackScroll},{toolName:e.Magnify},{toolName:"CircularBrush",parentTool:"Brush",configuration:{activeStrategy:"FILL_INSIDE_CIRCLE",brushSize:7}},{toolName:"CircularEraser",parentTool:"Brush",configuration:{activeStrategy:"ERASE_INSIDE_CIRCLE",brushSize:7}},{toolName:"SphereBrush",parentTool:"Brush",configuration:{activeStrategy:"FILL_INSIDE_SPHERE",brushSize:7}},{toolName:"SphereEraser",parentTool:"Brush",configuration:{activeStrategy:"ERASE_INSIDE_SPHERE",brushSize:7}},{toolName:"ThresholdCircularBrush",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_CIRCLE",brushSize:7}},{toolName:"ThresholdSphereBrush",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_SPHERE",brushSize:7}},{toolName:e.CircleScissors},{toolName:e.RectangleScissors},{toolName:e.SphereScissors},{toolName:e.StackScroll},{toolName:e.Magnify}],enabled:[],disabled:[{toolName:e.Crosshairs,configuration:{viewportIndicators:!0,viewportIndicatorsConfig:{circleRadius:5,xOffset:.95,yOffset:.05},disableOnPassive:!0,autoPan:{enabled:!1,panSize:10},getReferenceLineColor:e=>{const t=a.getViewportInfo(e),o=t?.viewportOptions;return o?p[o.id]||d[o.orientation]||"#0c0":(console.warn("missing viewport?",e),"#0c0")}}}]};o.createToolGroupAndAddTools(l,{...r,passive:[...r.passive,{toolName:"RectangleROIStartEndThreshold"}]}),o.createToolGroupAndAddTools(c,{...r,passive:[...r.passive,{toolName:"RectangleROIStartEndThreshold"}]}),o.createToolGroupAndAddTools(u,{...r,passive:[...r.passive,{toolName:"RectangleROIStartEndThreshold"}]}),o.createToolGroupAndAddTools(s,r)}(e,t,o,0,i)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function g(e){var t=function(e,t){if("object"!=f(e)||!e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,t||"default");if("object"!=f(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==f(t)?t:t+""}function v(e,t,o){return(t=g(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function m(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?Object(arguments[t]):{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&n.push.apply(n,Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable})),n.forEach(function(t){v(e,t,o[t])})}return e}function y(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function b(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,g(n.key),n)}}function S(e,t,o){return t&&b(e.prototype,t),o&&b(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e}function w(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function k(e,t){if(t&&("object"==f(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return w(e)}function x(e){return x=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},x(e)}function T(e,t){return T=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},T(e,t)}function O(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&T(e,t)}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,n=Array(t);o<t;o++)n[o]=e[o];return n}function C(e,t){if(e){if("string"==typeof e)return R(e,t);var o={}.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?R(e,t):void 0}}function N(e){return function(e){if(Array.isArray(e))return R(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||C(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function B(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var n,i,a,r,s=[],l=!0,u=!1;try{if(a=(o=o.call(e)).next,0===t){if(Object(o)!==o)return;l=!1}else for(;!(l=(n=a.call(o)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(e){u=!0,i=e}finally{try{if(!l&&null!=o.return&&(r=o.return(),Object(r)!==r))return}finally{if(u)throw i}}return s}}(e,t)||C(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var L={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,t){var o;console&&console[e]&&(o=console)[e].apply(o,N(t))}},E=new(function(){function e(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};y(this,e),this.init(t,o)}return S(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||L,this.options=t,this.debug=t.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"log","",!0)}},{key:"warn",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"warn","",!0)}},{key:"error",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"error","")}},{key:"deprecate",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(e,t,o,n){return n&&!this.debug?null:("string"==typeof e[0]&&(e[0]="".concat(o).concat(this.prefix," ").concat(e[0])),this.logger[t](e))}},{key:"create",value:function(t){return new e(this.logger,m({},{prefix:"".concat(this.prefix,":").concat(t,":")},this.options))}}]),e}()),P=function(){function e(){y(this,e),this.observers={}}return S(e,[{key:"on",value:function(e,t){var o=this;return e.split(" ").forEach(function(e){o.observers[e]=o.observers[e]||[],o.observers[e].push(t)}),this}},{key:"off",value:function(e,t){this.observers[e]&&(t?this.observers[e]=this.observers[e].filter(function(e){return e!==t}):delete this.observers[e])}},{key:"emit",value:function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),n=1;n<t;n++)o[n-1]=arguments[n];this.observers[e]&&[].concat(this.observers[e]).forEach(function(e){e.apply(void 0,o)});this.observers["*"]&&[].concat(this.observers["*"]).forEach(function(t){t.apply(t,[e].concat(o))})}}]),e}();function M(){var e,t,o=new Promise(function(o,n){e=o,t=n});return o.resolve=e,o.reject=t,o}function j(e){return null==e?"":""+e}function A(e,t,o){function n(e){return e&&e.indexOf("###")>-1?e.replace(/###/g,"."):e}function i(){return!e||"string"==typeof e}for(var a="string"!=typeof t?[].concat(t):t.split(".");a.length>1;){if(i())return{};var r=n(a.shift());!e[r]&&o&&(e[r]=new o),e=e[r]}return i()?{}:{obj:e,k:n(a.shift())}}function I(e,t,o){var n=A(e,t,Object);n.obj[n.k]=o}function D(e,t){var o=A(e,t),n=o.obj,i=o.k;if(n)return n[i]}function V(e,t,o){var n=D(e,o);return void 0!==n?n:D(t,o)}function F(e,t,o){for(var n in t)n in e?"string"==typeof e[n]||e[n]instanceof String||"string"==typeof t[n]||t[n]instanceof String?o&&(e[n]=t[n]):F(e[n],t[n],o):e[n]=t[n];return e}function z(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var H={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function U(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,function(e){return H[e]}):e}var W=function(e){function t(e){var o,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return y(this,t),o=k(this,x(t).call(this)),P.call(w(o)),o.data=e||{},o.options=n,void 0===o.options.keySeparator&&(o.options.keySeparator="."),o}return O(t,e),S(t,[{key:"addNamespaces",value:function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}},{key:"getResource",value:function(e,t,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,a=[e,t];return o&&"string"!=typeof o&&(a=a.concat(o)),o&&"string"==typeof o&&(a=a.concat(i?o.split(i):o)),e.indexOf(".")>-1&&(a=e.split(".")),D(this.data,a)}},{key:"addResource",value:function(e,t,o,n){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},a=this.options.keySeparator;void 0===a&&(a=".");var r=[e,t];o&&(r=r.concat(a?o.split(a):o)),e.indexOf(".")>-1&&(n=t,t=(r=e.split("."))[1]),this.addNamespaces(t),I(this.data,r,n),i.silent||this.emit("added",e,t,o,n)}},{key:"addResources",value:function(e,t,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var i in o)"string"!=typeof o[i]&&"[object Array]"!==Object.prototype.toString.apply(o[i])||this.addResource(e,t,i,o[i],{silent:!0});n.silent||this.emit("added",e,t,o)}},{key:"addResourceBundle",value:function(e,t,o,n,i){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},r=[e,t];e.indexOf(".")>-1&&(n=o,o=t,t=(r=e.split("."))[1]),this.addNamespaces(t);var s=D(this.data,r)||{};n?F(s,o,i):s=m({},s,o),I(this.data,r,s),a.silent||this.emit("added",e,t,o)}},{key:"removeResourceBundle",value:function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}},{key:"hasResourceBundle",value:function(e,t){return void 0!==this.getResource(e,t)}},{key:"getResourceBundle",value:function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?m({},{},this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"toJSON",value:function(){return this.data}}]),t}(P),_={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,o,n,i){var a=this;return e.forEach(function(e){a.processors[e]&&(t=a.processors[e].process(t,o,n,i))}),t}},K=function(e){function t(e){var o,n,i,a,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return y(this,t),o=k(this,x(t).call(this)),P.call(w(o)),n=["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],i=e,a=w(o),n.forEach(function(e){i[e]&&(a[e]=i[e])}),o.options=r,void 0===o.options.keySeparator&&(o.options.keySeparator="."),o.logger=E.create("translator"),o}return O(t,e),S(t,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},o=this.resolve(e,t);return o&&void 0!==o.res}},{key:"extractFromKey",value:function(e,t){var o=t.nsSeparator||this.options.nsSeparator;void 0===o&&(o=":");var n=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,i=t.ns||this.options.defaultNS;if(o&&e.indexOf(o)>-1){var a=e.split(o);(o!==n||o===n&&this.options.ns.indexOf(a[0])>-1)&&(i=a.shift()),e=a.join(n)}return"string"==typeof i&&(i=[i]),{key:e,namespaces:i}}},{key:"translate",value:function(e,t){var o=this;if("object"!==f(t)&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),t||(t={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var n=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,i=this.extractFromKey(e[e.length-1],t),a=i.key,r=i.namespaces,s=r[r.length-1],l=t.lng||this.language,u=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(l&&"cimode"===l.toLowerCase()){if(u){var c=t.nsSeparator||this.options.nsSeparator;return s+c+a}return a}var p=this.resolve(e,t),d=p&&p.res,h=p&&p.usedKey||a,g=p&&p.exactUsedKey||a,v=Object.prototype.toString.apply(d),y=void 0!==t.joinArrays?t.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject;if(b&&d&&("string"!=typeof d&&"boolean"!=typeof d&&"number"!=typeof d)&&["[object Number]","[object Function]","[object RegExp]"].indexOf(v)<0&&("string"!=typeof y||"[object Array]"!==v)){if(!t.returnObjects&&!this.options.returnObjects)return this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,d,t):"key '".concat(a," (").concat(this.language,")' returned an object instead of string.");if(n){var S="[object Array]"===v,w=S?[]:{},k=S?g:h;for(var x in d)if(Object.prototype.hasOwnProperty.call(d,x)){var T="".concat(k).concat(n).concat(x);w[x]=this.translate(T,m({},t,{joinArrays:!1,ns:r})),w[x]===T&&(w[x]=d[x])}d=w}}else if(b&&"string"==typeof y&&"[object Array]"===v)(d=d.join(y))&&(d=this.extendTranslation(d,e,t));else{var O=!1,R=!1;if(!this.isValidLookup(d)&&void 0!==t.defaultValue){if(O=!0,void 0!==t.count){var C=this.pluralResolver.getSuffix(l,t.count);d=t["defaultValue".concat(C)]}d||(d=t.defaultValue)}this.isValidLookup(d)||(R=!0,d=a);var N=t.defaultValue&&t.defaultValue!==d&&this.options.updateMissing;if(R||O||N){this.logger.log(N?"updateKey":"missingKey",l,s,a,N?t.defaultValue:d);var B=[],L=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if("fallback"===this.options.saveMissingTo&&L&&L[0])for(var E=0;E<L.length;E++)B.push(L[E]);else"all"===this.options.saveMissingTo?B=this.languageUtils.toResolveHierarchy(t.lng||this.language):B.push(t.lng||this.language);var P=function(e,n){o.options.missingKeyHandler?o.options.missingKeyHandler(e,s,n,N?t.defaultValue:d,N,t):o.backendConnector&&o.backendConnector.saveMissing&&o.backendConnector.saveMissing(e,s,n,N?t.defaultValue:d,N,t),o.emit("missingKey",e,s,n,d)};if(this.options.saveMissing){var M=void 0!==t.count&&"string"!=typeof t.count;this.options.saveMissingPlurals&&M?B.forEach(function(e){o.pluralResolver.getPluralFormsOfKey(e,a).forEach(function(t){return P([e],t)})}):P(B,a)}}d=this.extendTranslation(d,e,t,p),R&&d===a&&this.options.appendNamespaceToMissingKey&&(d="".concat(s,":").concat(a)),R&&this.options.parseMissingKeyHandler&&(d=this.options.parseMissingKeyHandler(d))}return d}},{key:"extendTranslation",value:function(e,t,o,n){var i=this;if(this.i18nFormat&&this.i18nFormat.parse)e=this.i18nFormat.parse(e,o,n.usedLng,n.usedNS,n.usedKey,{resolved:n});else if(!o.skipInterpolation){o.interpolation&&this.interpolator.init(m({},o,{interpolation:m({},this.options.interpolation,o.interpolation)}));var a=o.replace&&"string"!=typeof o.replace?o.replace:o;this.options.interpolation.defaultVariables&&(a=m({},this.options.interpolation.defaultVariables,a)),e=this.interpolator.interpolate(e,a,o.lng||this.language,o),!1!==o.nest&&(e=this.interpolator.nest(e,function(){return i.translate.apply(i,arguments)},o)),o.interpolation&&this.interpolator.reset()}var r=o.postProcess||this.options.postProcess,s="string"==typeof r?[r]:r;return null!=e&&s&&s.length&&!1!==o.applyPostProcessor&&(e=_.handle(s,e,t,this.options&&this.options.postProcessPassResolved?m({i18nResolved:n},o):o,this)),e}},{key:"resolve",value:function(e){var t,o,n,i,a,r=this,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach(function(e){if(!r.isValidLookup(t)){var l=r.extractFromKey(e,s),u=l.key;o=u;var c=l.namespaces;r.options.fallbackNS&&(c=c.concat(r.options.fallbackNS));var p=void 0!==s.count&&"string"!=typeof s.count,d=void 0!==s.context&&"string"==typeof s.context&&""!==s.context,h=s.lngs?s.lngs:r.languageUtils.toResolveHierarchy(s.lng||r.language,s.fallbackLng);c.forEach(function(e){r.isValidLookup(t)||(a=e,r.utils&&r.utils.hasLoadedNamespace&&!r.utils.hasLoadedNamespace(a)&&r.logger.warn('key "'.concat(o,'" for namespace "').concat(a,"\" won't get resolved as namespace was not yet loaded"),"This means something IS WRONG in your application setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"),h.forEach(function(o){if(!r.isValidLookup(t)){i=o;var a,l,c=u,h=[c];if(r.i18nFormat&&r.i18nFormat.addLookupKeys)r.i18nFormat.addLookupKeys(h,u,o,e,s);else p&&(a=r.pluralResolver.getSuffix(o,s.count)),p&&d&&h.push(c+a),d&&h.push(c+="".concat(r.options.contextSeparator).concat(s.context)),p&&h.push(c+=a);for(;l=h.pop();)r.isValidLookup(t)||(n=l,t=r.getResource(o,e,l,s))}}))})}}),{res:t,usedKey:o,exactUsedKey:n,usedLng:i,usedNS:a}}},{key:"isValidLookup",value:function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,t,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,o,n):this.resourceStore.getResource(e,t,o,n)}}]),t}(P);function q(e){return e.charAt(0).toUpperCase()+e.slice(1)}var G=function(){function e(t){y(this,e),this.options=t,this.whitelist=this.options.whitelist||!1,this.logger=E.create("languageUtils")}return S(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length?null:(t.pop(),this.formatLanguageCode(t.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var t=e.split("-");return this.formatLanguageCode(t[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],o=e.split("-");return this.options.lowerCaseLng?o=o.map(function(e){return e.toLowerCase()}):2===o.length?(o[0]=o[0].toLowerCase(),o[1]=o[1].toUpperCase(),t.indexOf(o[1].toLowerCase())>-1&&(o[1]=q(o[1].toLowerCase()))):3===o.length&&(o[0]=o[0].toLowerCase(),2===o[1].length&&(o[1]=o[1].toUpperCase()),"sgn"!==o[0]&&2===o[2].length&&(o[2]=o[2].toUpperCase()),t.indexOf(o[1].toLowerCase())>-1&&(o[1]=q(o[1].toLowerCase())),t.indexOf(o[2].toLowerCase())>-1&&(o[2]=q(o[2].toLowerCase()))),o.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isWhitelisted",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitWhitelist)&&(e=this.getLanguagePartFromCode(e)),!this.whitelist||!this.whitelist.length||this.whitelist.indexOf(e)>-1}},{key:"getFallbackCodes",value:function(e,t){if(!e)return[];if("string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var o=e[t];return o||(o=e[this.getScriptPartFromCode(t)]),o||(o=e[this.formatLanguageCode(t)]),o||(o=e.default),o||[]}},{key:"toResolveHierarchy",value:function(e,t){var o=this,n=this.getFallbackCodes(t||this.options.fallbackLng||[],e),i=[],a=function(e){e&&(o.isWhitelisted(e)?i.push(e):o.logger.warn("rejecting non-whitelisted language code: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&a(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&a(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&a(this.getLanguagePartFromCode(e))):"string"==typeof e&&a(this.formatLanguageCode(e)),n.forEach(function(e){i.indexOf(e)<0&&a(o.formatLanguageCode(e))}),i}}]),e}(),$=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","id","ja","jbo","ka","kk","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he"],nr:[1,2,20,21],fc:22}],J={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0===e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0===e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1===e?0:2===e?1:(e<0||e>10)&&e%10==0?2:3)}};var Z=function(){function e(t){var o,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};y(this,e),this.languageUtils=t,this.options=n,this.logger=E.create("pluralResolver"),this.rules=(o={},$.forEach(function(e){e.lngs.forEach(function(t){o[t]={numbers:e.nr,plurals:J[e.fc]}})}),o)}return S(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=this.getRule(e);return t&&t.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){var o=this,n=[],i=this.getRule(e);return i?(i.numbers.forEach(function(i){var a=o.getSuffix(e,i);n.push("".concat(t).concat(a))}),n):n}},{key:"getSuffix",value:function(e,t){var o=this,n=this.getRule(e);if(n){var i=n.noAbs?n.plurals(t):n.plurals(Math.abs(t)),a=n.numbers[i];this.options.simplifyPluralSuffix&&2===n.numbers.length&&1===n.numbers[0]&&(2===a?a="plural":1===a&&(a=""));var r=function(){return o.options.prepend&&a.toString()?o.options.prepend+a.toString():a.toString()};return"v1"===this.options.compatibilityJSON?1===a?"":"number"==typeof a?"_plural_".concat(a.toString()):r():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===n.numbers.length&&1===n.numbers[0]?r():this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString()}return this.logger.warn("no plural rule found for: ".concat(e)),""}}]),e}(),Q=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};y(this,e),this.logger=E.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return S(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var t=e.interpolation;this.escape=void 0!==t.escape?t.escape:U,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?z(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?z(t.suffix):t.suffixEscaped||"}}",this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||",",this.unescapePrefix=t.unescapeSuffix?"":t.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":t.unescapeSuffix||"",this.nestingPrefix=t.nestingPrefix?z(t.nestingPrefix):t.nestingPrefixEscaped||z("$t("),this.nestingSuffix=t.nestingSuffix?z(t.nestingSuffix):t.nestingSuffixEscaped||z(")"),this.maxReplaces=t.maxReplaces?t.maxReplaces:1e3,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var t="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(t,"g");var o="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(o,"g")}},{key:"interpolate",value:function(e,t,o,n){var i,a,r,s=this,l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function u(e){return e.replace(/\$/g,"$$$$")}var c=function(e){if(e.indexOf(s.formatSeparator)<0)return V(t,l,e);var n=e.split(s.formatSeparator),i=n.shift().trim(),a=n.join(s.formatSeparator).trim();return s.format(V(t,l,i),a,o)};this.resetRegExp();var p=n&&n.missingInterpolationHandler||this.options.missingInterpolationHandler;for(r=0;i=this.regexpUnescape.exec(e);){if(void 0===(a=c(i[1].trim())))if("function"==typeof p){var d=p(e,i,n);a="string"==typeof d?d:""}else this.logger.warn("missed to pass in variable ".concat(i[1]," for interpolating ").concat(e)),a="";else"string"==typeof a||this.useRawValueToEscape||(a=j(a));if(e=e.replace(i[0],u(a)),this.regexpUnescape.lastIndex=0,++r>=this.maxReplaces)break}for(r=0;i=this.regexp.exec(e);){if(void 0===(a=c(i[1].trim())))if("function"==typeof p){var h=p(e,i,n);a="string"==typeof h?h:""}else this.logger.warn("missed to pass in variable ".concat(i[1]," for interpolating ").concat(e)),a="";else"string"==typeof a||this.useRawValueToEscape||(a=j(a));if(a=this.escapeValue?u(this.escape(a)):u(a),e=e.replace(i[0],a),this.regexp.lastIndex=0,++r>=this.maxReplaces)break}return e}},{key:"nest",value:function(e,t){var o,n,i=m({},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{});function a(e,t){if(e.indexOf(",")<0)return e;var o=e.split(",");e=o.shift();var n=o.join(",");n=(n=this.interpolate(n,i)).replace(/'/g,'"');try{i=JSON.parse(n),t&&(i=m({},t,i))}catch(t){this.logger.error("failed parsing options string in nesting for key ".concat(e),t)}return delete i.defaultValue,e}for(i.applyPostProcessor=!1,delete i.defaultValue;o=this.nestingRegexp.exec(e);){if((n=t(a.call(this,o[1].trim(),i),i))&&o[0]===e&&"string"!=typeof n)return n;"string"!=typeof n&&(n=j(n)),n||(this.logger.warn("missed to resolve ".concat(o[1]," for nesting ").concat(e)),n=""),e=e.replace(o[0],n),this.regexp.lastIndex=0}return e}}]),e}();var Y=function(e){function t(e,o,n){var i,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return y(this,t),i=k(this,x(t).call(this)),P.call(w(i)),i.backend=e,i.store=o,i.services=n,i.languageUtils=n.languageUtils,i.options=a,i.logger=E.create("backendConnector"),i.state={},i.queue=[],i.backend&&i.backend.init&&i.backend.init(n,a.backend,a),i}return O(t,e),S(t,[{key:"queueLoad",value:function(e,t,o,n){var i=this,a=[],r=[],s=[],l=[];return e.forEach(function(e){var n=!0;t.forEach(function(t){var s="".concat(e,"|").concat(t);!o.reload&&i.store.hasResourceBundle(e,t)?i.state[s]=2:i.state[s]<0||(1===i.state[s]?r.indexOf(s)<0&&r.push(s):(i.state[s]=1,n=!1,r.indexOf(s)<0&&r.push(s),a.indexOf(s)<0&&a.push(s),l.indexOf(t)<0&&l.push(t)))}),n||s.push(e)}),(a.length||r.length)&&this.queue.push({pending:r,loaded:{},errors:[],callback:n}),{toLoad:a,pending:r,toLoadLanguages:s,toLoadNamespaces:l}}},{key:"loaded",value:function(e,t,o){var n=B(e.split("|"),2),i=n[0],a=n[1];t&&this.emit("failedLoading",i,a,t),o&&this.store.addResourceBundle(i,a,o),this.state[e]=t?-1:2;var r={};this.queue.forEach(function(o){var n,s,l,u,c,p;n=o.loaded,s=a,u=A(n,[i],Object),c=u.obj,p=u.k,c[p]=c[p]||[],l&&(c[p]=c[p].concat(s)),l||c[p].push(s),function(e,t){for(var o=e.indexOf(t);-1!==o;)e.splice(o,1),o=e.indexOf(t)}(o.pending,e),t&&o.errors.push(t),0!==o.pending.length||o.done||(Object.keys(o.loaded).forEach(function(e){r[e]||(r[e]=[]),o.loaded[e].length&&o.loaded[e].forEach(function(t){r[e].indexOf(t)<0&&r[e].push(t)})}),o.done=!0,o.errors.length?o.callback(o.errors):o.callback())}),this.emit("loaded",r),this.queue=this.queue.filter(function(e){return!e.done})}},{key:"read",value:function(e,t,o){var n=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:250,r=arguments.length>5?arguments[5]:void 0;return e.length?this.backend[o](e,t,function(s,l){s&&l&&i<5?setTimeout(function(){n.read.call(n,e,t,o,i+1,2*a,r)},a):r(s,l)}):r(null,{})}},{key:"prepareLoading",value:function(e,t){var o=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var a=this.queueLoad(e,t,n,i);if(!a.toLoad.length)return a.pending.length||i(),null;a.toLoad.forEach(function(e){o.loadOne(e)})}},{key:"load",value:function(e,t,o){this.prepareLoading(e,t,{},o)}},{key:"reload",value:function(e,t,o){this.prepareLoading(e,t,{reload:!0},o)}},{key:"loadOne",value:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=B(e.split("|"),2),i=n[0],a=n[1];this.read(i,a,"read",null,null,function(n,r){n&&t.logger.warn("".concat(o,"loading namespace ").concat(a," for language ").concat(i," failed"),n),!n&&r&&t.logger.log("".concat(o,"loaded namespace ").concat(a," for language ").concat(i),r),t.loaded(e,n,r)})}},{key:"saveMissing",value:function(e,t,o,n,i){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t)?this.logger.warn('did not save key "'.concat(o,'" for namespace "').concat(t,'" as the namespace was not yet loaded'),"This means something IS WRONG in your application setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"):(this.backend&&this.backend.create&&this.backend.create(e,t,o,n,null,m({},a,{isUpdate:i})),e&&e[0]&&this.store.addResource(e[0],t,o,n))}}]),t}(P);function X(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.whitelist&&e.whitelist.indexOf("cimode")<0&&(e.whitelist=e.whitelist.concat(["cimode"])),e}function ee(){}const te=new(function(e){function t(){var e,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(y(this,t),e=k(this,x(t).call(this)),P.call(w(e)),e.options=X(o),e.services={},e.logger=E,e.modules={external:[]},n&&!e.isInitialized&&!o.isClone){if(!e.options.initImmediate)return e.init(o,n),k(e,w(e));setTimeout(function(){e.init(o,n)},0)}return e}return O(t,e),S(t,[{key:"init",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;function n(e){return e?"function"==typeof e?new e:e:null}if("function"==typeof t&&(o=t,t={}),this.options=m({},{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};if("object"===f(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===f(e[2])||"object"===f(e[3])){var o=e[3]||e[2];Object.keys(o).forEach(function(e){t[e]=o[e]})}return t},interpolation:{escapeValue:!0,format:function(e,t,o){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",maxReplaces:1e3}},this.options,X(t)),this.format=this.options.interpolation.format,o||(o=ee),!this.options.isClone){this.modules.logger?E.init(n(this.modules.logger),this.options):E.init(null,this.options);var i=new G(this.options);this.store=new W(this.options.resources,this.options);var a=this.services;a.logger=E,a.resourceStore=this.store,a.languageUtils=i,a.pluralResolver=new Z(i,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),a.interpolator=new Q(this.options),a.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},a.backendConnector=new Y(n(this.modules.backend),a.resourceStore,a,this.options),a.backendConnector.on("*",function(t){for(var o=arguments.length,n=new Array(o>1?o-1:0),i=1;i<o;i++)n[i-1]=arguments[i];e.emit.apply(e,[t].concat(n))}),this.modules.languageDetector&&(a.languageDetector=n(this.modules.languageDetector),a.languageDetector.init(a,this.options.detection,this.options)),this.modules.i18nFormat&&(a.i18nFormat=n(this.modules.i18nFormat),a.i18nFormat.init&&a.i18nFormat.init(this)),this.translator=new K(this.services,this.options),this.translator.on("*",function(t){for(var o=arguments.length,n=new Array(o>1?o-1:0),i=1;i<o;i++)n[i-1]=arguments[i];e.emit.apply(e,[t].concat(n))}),this.modules.external.forEach(function(t){t.init&&t.init(e)})}["getResource","addResource","addResources","addResourceBundle","removeResourceBundle","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(function(t){e[t]=function(){var o;return(o=e.store)[t].apply(o,arguments)}});var r=M(),s=function(){e.changeLanguage(e.options.lng,function(t,n){e.isInitialized=!0,e.logger.log("initialized",e.options),e.emit("initialized",e.options),r.resolve(n),o(t,n)})};return this.options.resources||!this.options.initImmediate?s():setTimeout(s,0),r}},{key:"loadResources",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ee;if(!this.options.resources||this.options.partialBundledLanguages){if(this.language&&"cimode"===this.language.toLowerCase())return t();var o=[],n=function(t){t&&e.services.languageUtils.toResolveHierarchy(t).forEach(function(e){o.indexOf(e)<0&&o.push(e)})};if(this.language)n(this.language);else this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(function(e){return n(e)});this.options.preload&&this.options.preload.forEach(function(e){return n(e)}),this.services.backendConnector.load(o,this.options.ns,t)}else t(null)}},{key:"reloadResources",value:function(e,t,o){var n=M();return e||(e=this.languages),t||(t=this.options.ns),o||(o=ee),this.services.backendConnector.reload(e,t,function(e){n.resolve(),o(e)}),n}},{key:"use",value:function(e){return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&_.addPostProcessor(e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"changeLanguage",value:function(e,t){var o=this,n=M();this.emit("languageChanging",e);var i=function(e){e&&(o.language=e,o.languages=o.services.languageUtils.toResolveHierarchy(e),o.translator.language||o.translator.changeLanguage(e),o.services.languageDetector&&o.services.languageDetector.cacheUserLanguage(e)),o.loadResources(function(i){!function(e,i){o.translator.changeLanguage(i),i&&(o.emit("languageChanged",i),o.logger.log("languageChanged",i)),n.resolve(function(){return o.t.apply(o,arguments)}),t&&t(e,function(){return o.t.apply(o,arguments)})}(i,e)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(i):i(e):i(this.services.languageDetector.detect()),n}},{key:"getFixedT",value:function(e,t){var o=this,n=function e(t,n){var i;if("object"!==f(n)){for(var a=arguments.length,r=new Array(a>2?a-2:0),s=2;s<a;s++)r[s-2]=arguments[s];i=o.options.overloadTranslationOptionHandler([t,n].concat(r))}else i=m({},n);return i.lng=i.lng||e.lng,i.lngs=i.lngs||e.lngs,i.ns=i.ns||e.ns,o.t(t,i)};return"string"==typeof e?n.lng=e:n.lngs=e,n.ns=t,n}},{key:"t",value:function(){var e;return this.translator&&(e=this.translator).translate.apply(e,arguments)}},{key:"exists",value:function(){var e;return this.translator&&(e=this.translator).exists.apply(e,arguments)}},{key:"setDefaultNamespace",value:function(e){this.options.defaultNS=e}},{key:"hasLoadedNamespace",value:function(e){var t=this;if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var o=this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===o.toLowerCase())return!0;var a=function(e,o){var n=t.services.backendConnector.state["".concat(e,"|").concat(o)];return-1===n||2===n};return!!this.hasResourceBundle(o,e)||(!this.services.backendConnector.backend||!(!a(o,e)||n&&!a(i,e)))}},{key:"loadNamespaces",value:function(e,t){var o=this,n=M();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach(function(e){o.options.ns.indexOf(e)<0&&o.options.ns.push(e)}),this.loadResources(function(e){n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var o=M();"string"==typeof e&&(e=[e]);var n=this.options.preload||[],i=e.filter(function(e){return n.indexOf(e)<0});return i.length?(this.options.preload=n.concat(i),this.loadResources(function(e){o.resolve(),t&&t(e)}),o):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.languages&&this.languages.length>0?this.languages[0]:this.language),!e)return"rtl";return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>=0?"rtl":"ltr"}},{key:"createInstance",value:function(){return new t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}},{key:"cloneInstance",value:function(){var e=this,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ee,i=m({},this.options,o,{isClone:!0}),a=new t(i);return["store","services","language"].forEach(function(t){a[t]=e[t]}),a.translator=new K(a.services,a.options),a.translator.on("*",function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),n=1;n<t;n++)o[n-1]=arguments[n];a.emit.apply(a,[e].concat(o))}),a.init(i,n),a.translator.options=a.options,a}}]),t}(P)),oe={commandName:"setToolActiveToolbar",commandOptions:{toolGroupIds:[l,c,u,s]}},ne=[{id:"MeasurementTools",uiType:"ohif.toolButtonList",props:{buttonSection:!0}},{id:"BrushTools",uiType:"ohif.toolBoxButtonGroup",props:{buttonSection:!0}},{id:"SegmentationTools",uiType:"ohif.toolBoxButton",props:{buttonSection:!0}},{id:"AdvancedRenderingControls",uiType:"ohif.advancedRenderingControls",props:{buttonSection:!0}},{id:"modalityLoadBadge",uiType:"ohif.modalityLoadBadge",props:{icon:"Status",label:te.t("Buttons:Status"),tooltip:te.t("Buttons:Status"),evaluate:{name:"evaluate.modalityLoadBadge",hideWhenDisabled:!0}}},{id:"navigationComponent",uiType:"ohif.navigationComponent",props:{icon:"Navigation",label:te.t("Buttons:Navigation"),tooltip:te.t("Buttons:Navigate between segments/measurements and manage their visibility"),evaluate:{name:"evaluate.navigationComponent",hideWhenDisabled:!0}}},{id:"windowLevelMenuEmbedded",uiType:"ohif.windowLevelMenuEmbedded",props:{icon:"WindowLevel",label:te.t("Buttons:Window Level"),tooltip:te.t("Buttons:Adjust window/level presets and customize image contrast settings"),evaluate:{name:"evaluate.windowLevelMenuEmbedded",hideWhenDisabled:!0}}},{id:"trackingStatus",uiType:"ohif.trackingStatus",props:{icon:"TrackingStatus",label:te.t("Buttons:Tracking Status"),tooltip:te.t("Buttons:View and manage tracking status of measurements and annotations"),evaluate:{name:"evaluate.trackingStatus",hideWhenDisabled:!0}}},{id:"Length",uiType:"ohif.toolButton",props:{icon:"tool-length",label:te.t("Buttons:Length"),tooltip:te.t("Buttons:Length Tool"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"Bidirectional",uiType:"ohif.toolButton",props:{icon:"tool-bidirectional",label:te.t("Buttons:Bidirectional"),tooltip:te.t("Buttons:Bidirectional Tool"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"ArrowAnnotate",uiType:"ohif.toolButton",props:{icon:"tool-annotate",label:te.t("Buttons:Annotation"),tooltip:te.t("Buttons:Arrow Annotate"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"EllipticalROI",uiType:"ohif.toolButton",props:{icon:"tool-ellipse",label:te.t("Buttons:Ellipse"),tooltip:te.t("Buttons:Ellipse ROI"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"Zoom",uiType:"ohif.toolButton",props:{icon:"tool-zoom",label:te.t("Buttons:Zoom"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"WindowLevel",uiType:"ohif.toolButton",props:{icon:"tool-window-level",label:te.t("Buttons:Window Level"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"Pan",uiType:"ohif.toolButton",props:{type:"tool",icon:"tool-move",label:te.t("Buttons:Pan"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"TrackballRotate",uiType:"ohif.toolButton",props:{type:"tool",icon:"tool-3d-rotate",label:te.t("Buttons:3D Rotate"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"Capture",uiType:"ohif.toolButton",props:{icon:"tool-capture",label:te.t("Buttons:Capture"),commands:"showDownloadViewportModal",evaluate:["evaluate.action",{name:"evaluate.viewport.supported",unsupportedViewportTypes:["video","wholeSlide"]}]}},{id:"Layout",uiType:"ohif.layoutSelector",props:{rows:3,columns:4,evaluate:"evaluate.action",commands:"setViewportGridLayout"}},{id:"Crosshairs",uiType:"ohif.toolButton",props:{type:"tool",icon:"tool-crosshair",label:te.t("Buttons:Crosshairs"),commands:oe,evaluate:"evaluate.cornerstoneTool"}},{id:"ProgressDropdown",uiType:"ohif.progressDropdown"},{id:"RectangleROIStartEndThreshold",uiType:"ohif.toolBoxButton",props:{icon:"tool-create-threshold",label:te.t("Buttons:Rectangle ROI Threshold"),commands:oe,evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["RectangleROIStartEndThreshold"]},options:"tmtv.RectangleROIThresholdOptions"}},{id:"Brush",uiType:"ohif.toolButton",props:{icon:"icon-tool-brush",label:te.t("Buttons:Brush"),evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["CircularBrush","SphereBrush"]},options:[{name:"Size (mm)",id:"brush-radius",type:"range",min:.5,max:99.5,step:.5,value:7,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularBrush","SphereBrush"]}}},{name:"Shape",type:"radio",id:"brush-mode",value:"CircularBrush",values:[{value:"CircularBrush",label:"Circle"},{value:"SphereBrush",label:"Sphere"}],commands:"setToolActiveToolbar"}]}},{id:"Eraser",uiType:"ohif.toolButton",props:{icon:"icon-tool-eraser",label:te.t("Buttons:Eraser"),evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["CircularEraser","SphereEraser"]},options:[{name:"Radius (mm)",id:"eraser-radius",type:"range",min:.5,max:99.5,step:.5,value:7,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularEraser","SphereEraser"]}}},{name:"Shape",type:"radio",id:"eraser-mode",value:"CircularEraser",values:[{value:"CircularEraser",label:"Circle"},{value:"SphereEraser",label:"Sphere"}],commands:"setToolActiveToolbar"}]}},{id:"Threshold",uiType:"ohif.toolButton",props:{icon:"icon-tool-threshold",label:te.t("Buttons:Threshold"),evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]},options:[{name:"Radius (mm)",id:"threshold-radius",type:"range",min:.5,max:99.5,step:.5,value:7,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]}}},{name:"Shape",type:"radio",id:"eraser-mode",value:"ThresholdCircularBrush",values:[{value:"ThresholdCircularBrush",label:"Circle"},{value:"ThresholdSphereBrush",label:"Sphere"}],commands:"setToolActiveToolbar"},{name:"ThresholdRange",type:"double-range",id:"threshold-range",min:0,max:100,step:.5,value:[2,50],commands:{commandName:"setThresholdRange",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]}}}]}},{id:"Shapes",uiType:"ohif.toolBoxButton",props:{label:"Shapes",evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["CircleScissor","SphereScissor","RectangleScissor"]},icon:"icon-tool-shape",options:[{name:"Shape",type:"radio",value:"CircleScissor",id:"shape-mode",values:[{value:"CircleScissor",label:"Circle"},{value:"SphereScissor",label:"Sphere"},{value:"RectangleScissor",label:"Rectangle"}],commands:"setToolActiveToolbar"}]}},{id:"dataOverlayMenu",uiType:"ohif.dataOverlayMenu",props:{icon:"ViewportViews",label:te.t("Buttons:Data Overlay"),tooltip:te.t("Buttons:Configure data overlay options and manage foreground/background display sets"),evaluate:"evaluate.dataOverlayMenu"}},{id:"orientationMenu",uiType:"ohif.orientationMenu",props:{icon:"OrientationSwitch",label:te.t("Buttons:Orientation"),tooltip:te.t("Buttons:Change viewport orientation between axial, sagittal, coronal and reformat planes"),evaluate:{name:"evaluate.orientationMenu"}}},{id:"windowLevelMenu",uiType:"ohif.windowLevelMenu",props:{icon:"WindowLevel",label:te.t("Buttons:Window Level"),tooltip:te.t("Buttons:Adjust window/level presets and customize image contrast settings"),evaluate:"evaluate.windowLevelMenu"}},{id:"voiManualControlMenu",uiType:"ohif.voiManualControlMenu",props:{icon:"WindowLevelAdvanced",label:te.t("Buttons:Advanced Window Level"),tooltip:te.t("Buttons:Advanced window/level settings with manual controls and presets"),evaluate:"evaluate.voiManualControlMenu"}},{id:"thresholdMenu",uiType:"ohif.thresholdMenu",props:{icon:"Threshold",label:te.t("Buttons:Threshold"),tooltip:te.t("Buttons:Image threshold settings"),evaluate:{name:"evaluate.thresholdMenu",hideWhenDisabled:!0}}},{id:"opacityMenu",uiType:"ohif.opacityMenu",props:{icon:"Opacity",label:te.t("Buttons:Opacity"),tooltip:te.t("Buttons:Image opacity settings"),evaluate:{name:"evaluate.opacityMenu",hideWhenDisabled:!0}}},{id:"Colorbar",uiType:"ohif.colorbar",props:{type:"tool",label:te.t("Buttons:Colorbar")}}],ie={"@ohif/extension-default":"3.7.0-beta.76","@ohif/extension-cornerstone":"3.7.0-beta.76","@ohif/extension-cornerstone-dynamic-volume":"3.7.0-beta.76","@ohif/extension-cornerstone-dicom-seg":"3.7.0-beta.76","@ohif/extension-tmtv":"3.7.0-beta.76"},ae="@ohif/extension-default.layoutTemplateModule.viewerLayout",re="@ohif/extension-default.sopClassHandlerModule.stack",se="@ohif/extension-default.sopClassHandlerModule.chart",le="@ohif/extension-default.viewportModule.chartViewport",ue="@ohif/extension-cornerstone-dynamic-volume.panelModule.dynamic-volume",ce="@ohif/extension-cornerstone.viewportModule.cornerstone",pe="@ohif/extension-cornerstone.panelModule.activeViewportWindowLevel";const de={id:o,modeFactory:function({modeConfiguration:e}){return{id:o,routeName:"dynamic-volume",displayName:"Preclinical 4D",onModeEnter:function({servicesManager:e,extensionManager:t,commandsManager:o}){const{measurementService:n,toolbarService:i,cineService:a,cornerstoneViewportService:r,toolGroupService:s,customizationService:l,viewportGridService:u}=e.services,c=t.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),{toolNames:p,Enums:d}=c.exports;n.clearMeasurements(),h({toolNames:p,Enums:d,toolGroupService:s,commandsManager:o,servicesManager:e}),i.register(ne),i.updateSection(i.sections.secondary,["ProgressDropdown"]),i.updateSection(i.sections.viewportActionMenu.topLeft,["orientationMenu","dataOverlayMenu"]),i.updateSection(i.sections.viewportActionMenu.topLeft,["orientationMenu","dataOverlayMenu"]),i.updateSection(i.sections.viewportActionMenu.bottomMiddle,["AdvancedRenderingControls"]),i.updateSection("AdvancedRenderingControls",["windowLevelMenuEmbedded","voiManualControlMenu","Colorbar","opacityMenu","thresholdMenu"]),i.updateSection(i.sections.viewportActionMenu.topRight,["modalityLoadBadge","trackingStatus","navigationComponent"]),i.updateSection(i.sections.viewportActionMenu.bottomLeft,["windowLevelMenu"]),l.setCustomizations({"panelSegmentation.tableMode":{$set:"expanded"},"panelSegmentation.onSegmentationAdd":{$set:()=>{o.run("createNewLabelMapForDynamicVolume")}},"panelSegmentation.showAddSegment":{$set:!1}});const{unsubscribe:f}=r.subscribe(r.EVENTS.VIEWPORT_VOLUMES_CHANGED,()=>{const e=u.getActiveViewportId(),t=r.getCornerstoneViewport(e);a.playClip(t.element,{viewportId:e}),f()})},onSetupRouteComplete:({servicesManager:e})=>{r({servicesManager:e})},onModeExit:({servicesManager:e})=>{const{toolGroupService:t,syncGroupService:o,segmentationService:n,cornerstoneViewportService:i}=e.services;t.destroy(),o.destroy(),n.destroy(),i.destroy()},get validationTags(){return{study:[],series:[]}},isValidMode:({modalities:e,study:t})=>({valid:"M1"===t.mrn,description:"This mode is only available for 4D PET/CT studies."}),routes:[{path:"preclinical-4d",layoutTemplate:({location:e,servicesManager:t})=>({id:ae,props:{leftPanels:[[ue,pe]],leftPanelResizable:!0,rightPanels:[],rightPanelResizable:!0,rightPanelClosed:!0,viewports:[{namespace:ce,displaySetsToDisplay:[re]},{namespace:le,displaySetsToDisplay:[se]}]}})}],extensions:ie,hangingProtocol:"default4D",sopClassHandlers:[se,re]}},extensionDependencies:ie};return t=t.default})());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohif/mode-preclinical-4d",
3
- "version": "3.12.0-beta.9",
3
+ "version": "3.12.0-beta.91",
4
4
  "description": "4D Workflow",
5
5
  "author": "OHIF",
6
6
  "license": "MIT",
@@ -33,18 +33,18 @@
33
33
  "test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
34
34
  },
35
35
  "peerDependencies": {
36
- "@ohif/core": "3.12.0-beta.9",
37
- "@ohif/extension-cornerstone": "3.12.0-beta.9",
38
- "@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.9",
39
- "@ohif/extension-cornerstone-dynamic-volume": "3.12.0-beta.9",
40
- "@ohif/extension-default": "3.12.0-beta.9",
41
- "@ohif/extension-tmtv": "3.12.0-beta.9"
36
+ "@ohif/core": "3.12.0-beta.91",
37
+ "@ohif/extension-cornerstone": "3.12.0-beta.91",
38
+ "@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.91",
39
+ "@ohif/extension-cornerstone-dynamic-volume": "3.12.0-beta.91",
40
+ "@ohif/extension-default": "3.12.0-beta.91",
41
+ "@ohif/extension-tmtv": "3.12.0-beta.91"
42
42
  },
43
43
  "dependencies": {
44
- "@babel/runtime": "^7.20.13"
44
+ "@babel/runtime": "7.28.2"
45
45
  },
46
46
  "devDependencies": {
47
47
  "webpack": "5.95.0",
48
- "webpack-merge": "^5.7.3"
48
+ "webpack-merge": "5.10.0"
49
49
  }
50
50
  }