@cornerstonejs/adapters 1.41.0 → 1.42.1

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 +1 @@
1
- {"version":3,"file":"adapters.es.js","sources":["../src/adapters/helpers/toArray.ts","../src/adapters/helpers/codeMeaningEquals.ts","../src/adapters/helpers/graphicTypeEquals.ts","../src/adapters/helpers/downloadDICOMData.ts","../src/adapters/Cornerstone/MeasurementReport.js","../src/adapters/Cornerstone/cornerstone4Tag.js","../src/adapters/Cornerstone/Length.js","../src/adapters/Cornerstone/FreehandRoi.js","../src/adapters/Cornerstone/Bidirectional.js","../src/adapters/Cornerstone/EllipticalRoi.js","../src/adapters/Cornerstone/CircleRoi.js","../src/adapters/Cornerstone/ArrowAnnotate.js","../src/adapters/Cornerstone/CobbAngle.js","../src/adapters/Cornerstone/Angle.js","../src/adapters/Cornerstone/RectangleRoi.js","../src/adapters/Cornerstone/Segmentation_3X.js","../src/adapters/enums/Events.ts","../src/adapters/Cornerstone/Segmentation_4X.js","../src/adapters/Cornerstone/Segmentation.js","../src/adapters/Cornerstone/index.ts","../../../node_modules/tslib/tslib.es6.js","../src/adapters/Cornerstone3D/cornerstone3DTag.js","../src/adapters/Cornerstone3D/CodingScheme.js","../src/adapters/Cornerstone3D/MeasurementReport.ts","../src/adapters/Cornerstone3D/ArrowAnnotate.js","../src/adapters/Cornerstone3D/Bidirectional.ts","../src/adapters/Cornerstone3D/Angle.ts","../src/adapters/Cornerstone3D/CobbAngle.ts","../src/adapters/Cornerstone3D/isValidCornerstoneTrackingIdentifier.ts","../src/adapters/Cornerstone3D/CircleROI.ts","../src/adapters/Cornerstone3D/EllipticalROI.ts","../src/adapters/Cornerstone3D/RectangleROI.ts","../src/adapters/Cornerstone3D/Length.js","../src/adapters/Cornerstone3D/PlanarFreehandROI.ts","../src/adapters/Cornerstone3D/Probe.js","../src/adapters/Cornerstone3D/Segmentation/generateSegmentation.ts","../src/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.ts","../src/adapters/Cornerstone3D/Segmentation/generateToolState.ts","../src/adapters/Cornerstone3D/RTStruct/utilities/mergePoints.js","../src/adapters/Cornerstone3D/RTStruct/utilities/contourFinder.js","../src/adapters/Cornerstone3D/RTStruct/utilities/generateContourSetsFromLabelmap.js","../src/adapters/Cornerstone3D/RTStruct/utilities/RectangleROIStartEndThreshold.js","../src/adapters/Cornerstone3D/RTStruct/utilities/AnnotationToPointData.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getPatientModule.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getRTROIObservationsSequence.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getRTSeriesModule.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js","../src/adapters/Cornerstone3D/RTStruct/RTSS.ts","../src/adapters/Cornerstone3D/index.ts","../src/adapters/VTKjs/Segmentation.js","../src/adapters/VTKjs/index.ts","../src/adapters/index.ts"],"sourcesContent":["const toArray = x => (Array.isArray(x) ? x : [x]);\n\nexport { toArray };\n","/**\n * Returns a function that checks if a given content item's ConceptNameCodeSequence.CodeMeaning\n * matches the provided codeMeaningName.\n * @param codeMeaningName - The CodeMeaning to match against.\n * @returns A function that takes a content item and returns a boolean indicating whether the\n * content item's CodeMeaning matches the provided codeMeaningName.\n */\nconst codeMeaningEquals = (codeMeaningName: string) => {\n return (contentItem: any) => {\n return (\n contentItem.ConceptNameCodeSequence.CodeMeaning === codeMeaningName\n );\n };\n};\n\nexport { codeMeaningEquals };\n","/**\n * Checks if a given content item's GraphicType property matches a specified value.\n * @param {string} graphicType - The value to compare the content item's GraphicType property to.\n * @returns {function} A function that takes a content item and returns a boolean indicating whether its GraphicType property matches the specified value.\n */\nconst graphicTypeEquals = graphicType => {\n return contentItem => {\n return contentItem && contentItem.GraphicType === graphicType;\n };\n};\n\nexport { graphicTypeEquals };\n","import { data } from \"dcmjs\";\nimport { Buffer } from \"buffer\";\nconst { datasetToDict } = data;\n\ninterface DicomDataset {\n _meta?: any;\n // other properties\n}\n\n/**\n * Trigger file download from an array buffer\n * @param bufferOrDataset - ArrayBuffer or DicomDataset\n * @param filename - name of the file to download\n */\nexport function downloadDICOMData(\n bufferOrDataset: ArrayBuffer | DicomDataset,\n filename: string\n) {\n let blob;\n if (bufferOrDataset instanceof ArrayBuffer) {\n blob = new Blob([bufferOrDataset], { type: \"application/dicom\" });\n } else {\n if (!bufferOrDataset._meta) {\n throw new Error(\"Dataset must have a _meta property\");\n }\n\n const buffer = Buffer.from(datasetToDict(bufferOrDataset).write());\n blob = new Blob([buffer], { type: \"application/dicom\" });\n }\n\n const link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(blob);\n link.download = filename;\n link.click();\n}\n","import { normalizers, data, utilities, derivations } from \"dcmjs\";\n\nimport { toArray, codeMeaningEquals } from \"../helpers\";\n\nconst { TID1500, addAccessors } = utilities;\n\nconst { StructuredReport } = derivations;\n\nconst { Normalizer } = normalizers;\n\nconst { TID1500MeasurementReport, TID1501MeasurementGroup } = TID1500;\n\nconst { DicomMetaDictionary } = data;\n\nconst FINDING = { CodingSchemeDesignator: \"DCM\", CodeValue: \"121071\" };\nconst FINDING_SITE = { CodingSchemeDesignator: \"SCT\", CodeValue: \"363698007\" };\nconst FINDING_SITE_OLD = { CodingSchemeDesignator: \"SRT\", CodeValue: \"G-C0E3\" };\n\nconst codeValueMatch = (group, code, oldCode) => {\n const { ConceptNameCodeSequence } = group;\n if (!ConceptNameCodeSequence) return;\n const { CodingSchemeDesignator, CodeValue } = ConceptNameCodeSequence;\n return (\n (CodingSchemeDesignator == code.CodingSchemeDesignator &&\n CodeValue == code.CodeValue) ||\n (oldCode &&\n CodingSchemeDesignator == oldCode.CodingSchemeDesignator &&\n CodeValue == oldCode.CodeValue)\n );\n};\n\nfunction getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass\n) {\n const args = toolClass.getTID300RepresentationArguments(tool);\n args.ReferencedSOPSequence = ReferencedSOPSequence;\n\n const TID300Measurement = new toolClass.TID300Representation(args);\n\n return TID300Measurement;\n}\n\nfunction getMeasurementGroup(toolType, toolData, ReferencedSOPSequence) {\n const toolTypeData = toolData[toolType];\n const toolClass =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolType];\n if (\n !toolTypeData ||\n !toolTypeData.data ||\n !toolTypeData.data.length ||\n !toolClass\n ) {\n return;\n }\n\n // Loop through the array of tool instances\n // for this tool\n const Measurements = toolTypeData.data.map(tool => {\n return getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass\n );\n });\n\n return new TID1501MeasurementGroup(Measurements);\n}\n\nexport default class MeasurementReport {\n static getSetupMeasurementData(MeasurementGroup) {\n const { ContentSequence } = MeasurementGroup;\n\n const contentSequenceArr = toArray(ContentSequence);\n const findingGroup = contentSequenceArr.find(group =>\n codeValueMatch(group, FINDING)\n );\n const findingSiteGroups =\n contentSequenceArr.filter(group =>\n codeValueMatch(group, FINDING_SITE, FINDING_SITE_OLD)\n ) || [];\n const NUMGroup = contentSequenceArr.find(\n group => group.ValueType === \"NUM\"\n );\n const SCOORDGroup = toArray(NUMGroup.ContentSequence).find(\n group => group.ValueType === \"SCOORD\"\n );\n const { ReferencedSOPSequence } = SCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n ReferencedSOPSequence;\n\n const defaultState = {\n sopInstanceUid: ReferencedSOPInstanceUID,\n frameIndex: ReferencedFrameNumber || 1,\n complete: true,\n finding: findingGroup\n ? addAccessors(findingGroup.ConceptCodeSequence)\n : undefined,\n findingSites: findingSiteGroups.map(fsg => {\n return addAccessors(fsg.ConceptCodeSequence);\n })\n };\n if (defaultState.finding) {\n defaultState.description = defaultState.finding.CodeMeaning;\n }\n const findingSite =\n defaultState.findingSites && defaultState.findingSites[0];\n if (findingSite) {\n defaultState.location =\n (findingSite[0] && findingSite[0].CodeMeaning) ||\n findingSite.CodeMeaning;\n }\n return {\n defaultState,\n findingGroup,\n findingSiteGroups,\n NUMGroup,\n SCOORDGroup,\n ReferencedSOPSequence,\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber\n };\n }\n\n static generateReport(toolState, metadataProvider, options) {\n // ToolState for array of imageIDs to a Report\n // Assume Cornerstone metadata provider has access to Study / Series / Sop Instance UID\n\n let allMeasurementGroups = [];\n const firstImageId = Object.keys(toolState)[0];\n if (!firstImageId) {\n throw new Error(\"No measurements provided.\");\n }\n\n /* Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Date\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Time\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study ID\n */\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n firstImageId\n );\n\n //const sopCommonModule = metadataProvider.get('sopCommonModule', firstImageId);\n\n // NOTE: We are getting the Series and Study UIDs from the first imageId of the toolState\n // which means that if the toolState is for multiple series, the report will have the incorrect\n // SeriesInstanceUIDs\n const { studyInstanceUID, seriesInstanceUID } = generalSeriesModule;\n\n // Loop through each image in the toolData\n Object.keys(toolState).forEach(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n const frameNumber = metadataProvider.get(\"frameNumber\", imageId);\n const toolData = toolState[imageId];\n const toolTypes = Object.keys(toolData);\n\n const ReferencedSOPSequence = {\n ReferencedSOPClassUID: sopCommonModule.sopClassUID,\n ReferencedSOPInstanceUID: sopCommonModule.sopInstanceUID\n };\n\n if (\n Normalizer.isMultiframeSOPClassUID(sopCommonModule.sopClassUID)\n ) {\n ReferencedSOPSequence.ReferencedFrameNumber = frameNumber;\n }\n\n // Loop through each tool type for the image\n const measurementGroups = [];\n\n toolTypes.forEach(toolType => {\n const group = getMeasurementGroup(\n toolType,\n toolData,\n ReferencedSOPSequence\n );\n if (group) {\n measurementGroups.push(group);\n }\n });\n\n allMeasurementGroups =\n allMeasurementGroups.concat(measurementGroups);\n });\n\n const MeasurementReport = new TID1500MeasurementReport(\n { TID1501MeasurementGroups: allMeasurementGroups },\n options\n );\n\n // TODO: what is the correct metaheader\n // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html\n // TODO: move meta creation to happen in derivations.js\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const derivationSourceDataset = {\n StudyInstanceUID: studyInstanceUID,\n SeriesInstanceUID: seriesInstanceUID\n //SOPInstanceUID: sopInstanceUID, // TODO: Necessary?\n //SOPClassUID: sopClassUID,\n };\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n //MediaStorageSOPClassUID\n //MediaStorageSOPInstanceUID: sopCommonModule.sopInstanceUID,\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n const _vrMap = {\n PixelData: \"OW\"\n };\n\n derivationSourceDataset._meta = _meta;\n derivationSourceDataset._vrMap = _vrMap;\n\n const report = new StructuredReport([derivationSourceDataset]);\n\n const contentItem = MeasurementReport.contentItem(\n derivationSourceDataset\n );\n\n // Merge the derived dataset with the content from the Measurement Report\n report.dataset = Object.assign(report.dataset, contentItem);\n report.dataset._meta = _meta;\n\n return report;\n }\n\n /**\n * Generate Cornerstone tool state from dataset\n * @param {object} dataset dataset\n * @param {object} hooks\n * @param {function} hooks.getToolClass Function to map dataset to a tool class\n * @returns\n */\n static generateToolState(dataset, hooks = {}) {\n // For now, bail out if the dataset is not a TID1500 SR with length measurements\n if (dataset.ContentTemplateSequence.TemplateIdentifier !== \"1500\") {\n throw new Error(\n \"This package can currently only interpret DICOM SR TID 1500\"\n );\n }\n\n const REPORT = \"Imaging Measurements\";\n const GROUP = \"Measurement Group\";\n const TRACKING_IDENTIFIER = \"Tracking Identifier\";\n\n // Identify the Imaging Measurements\n const imagingMeasurementContent = toArray(dataset.ContentSequence).find(\n codeMeaningEquals(REPORT)\n );\n\n // Retrieve the Measurements themselves\n const measurementGroups = toArray(\n imagingMeasurementContent.ContentSequence\n ).filter(codeMeaningEquals(GROUP));\n\n // For each of the supported measurement types, compute the measurement data\n const measurementData = {};\n\n const cornerstoneToolClasses =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE;\n\n const registeredToolClasses = [];\n\n Object.keys(cornerstoneToolClasses).forEach(key => {\n registeredToolClasses.push(cornerstoneToolClasses[key]);\n measurementData[key] = [];\n });\n\n measurementGroups.forEach(measurementGroup => {\n const measurementGroupContentSequence = toArray(\n measurementGroup.ContentSequence\n );\n\n const TrackingIdentifierGroup =\n measurementGroupContentSequence.find(\n contentItem =>\n contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_IDENTIFIER\n );\n\n const TrackingIdentifierValue = TrackingIdentifierGroup.TextValue;\n\n const toolClass = hooks.getToolClass\n ? hooks.getToolClass(\n measurementGroup,\n dataset,\n registeredToolClasses\n )\n : registeredToolClasses.find(tc =>\n tc.isValidCornerstoneTrackingIdentifier(\n TrackingIdentifierValue\n )\n );\n\n if (toolClass) {\n const measurement =\n toolClass.getMeasurementData(measurementGroup);\n\n console.log(`=== ${toolClass.toolType} ===`);\n console.log(measurement);\n\n measurementData[toolClass.toolType].push(measurement);\n }\n });\n\n // NOTE: There is no way of knowing the cornerstone imageIds as that could be anything.\n // That is up to the consumer to derive from the SOPInstanceUIDs.\n return measurementData;\n }\n\n static registerTool(toolClass) {\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[\n toolClass.utilityToolType\n ] = toolClass;\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[\n toolClass.toolType\n ] = toolClass;\n MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.toolType] =\n toolClass.utilityToolType;\n }\n}\n\nMeasurementReport.MEASUREMENT_BY_TOOLTYPE = {};\nMeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE = {};\nMeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE = {};\n","export default \"cornerstoneTools@^4.0.0\";\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Length: TID300Length } = utilities.TID300;\n\nconst LENGTH = \"Length\";\n\nclass Length {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n length: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: Length.toolType,\n handles: {\n start: {},\n end: {},\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.end;\n const distance = tool.length;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:Length\";\n\n return {\n point1,\n point2,\n distance,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nLength.toolType = LENGTH;\nLength.utilityToolType = LENGTH;\nLength.TID300Representation = TID300Length;\nLength.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === LENGTH;\n};\n\nMeasurementReport.registerTool(Length);\n\nexport default Length;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nclass FreehandRoi {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, NUMGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n toolType: FreehandRoi.toolType,\n handles: {\n points: [],\n textBox: {\n active: false,\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n color: undefined,\n invalidated: true\n };\n const { GraphicData } = SCOORDGroup;\n for (let i = 0; i < GraphicData.length; i += 2) {\n state.handles.points.push({\n x: GraphicData[i],\n y: GraphicData[i + 1]\n });\n }\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites, cachedStats = {} } = tool;\n const { points } = handles;\n const { area = 0, perimeter = 0 } = cachedStats;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:FreehandRoi\";\n\n return {\n points,\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nFreehandRoi.toolType = \"FreehandRoi\";\nFreehandRoi.utilityToolType = \"FreehandRoi\";\nFreehandRoi.TID300Representation = TID300Polyline;\nFreehandRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === FreehandRoi.toolType;\n};\n\nMeasurementReport.registerTool(FreehandRoi);\n\nexport default FreehandRoi;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\nimport { toArray } from \"../helpers\";\n\nconst { Bidirectional: TID300Bidirectional } = utilities.TID300;\n\nconst BIDIRECTIONAL = \"Bidirectional\";\nconst LONG_AXIS = \"Long Axis\";\nconst SHORT_AXIS = \"Short Axis\";\nconst FINDING = \"121071\";\nconst FINDING_SITE = \"G-C0E3\";\n\nclass Bidirectional {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { ContentSequence } = MeasurementGroup;\n\n const findingGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeValue === FINDING\n );\n\n const findingSiteGroups = toArray(ContentSequence).filter(\n group => group.ConceptNameCodeSequence.CodeValue === FINDING_SITE\n );\n\n const longAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS\n );\n\n const longAxisSCOORDGroup = toArray(\n longAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const shortAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS\n );\n\n const shortAxisSCOORDGroup = toArray(\n shortAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const { ReferencedSOPSequence } = longAxisSCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n ReferencedSOPSequence;\n\n // Long axis\n\n const longestDiameter = String(\n longAxisNUMGroup.MeasuredValueSequence.NumericValue\n );\n\n const shortestDiameter = String(\n shortAxisNUMGroup.MeasuredValueSequence.NumericValue\n );\n\n const bottomRight = {\n x: Math.max(\n longAxisSCOORDGroup.GraphicData[0],\n longAxisSCOORDGroup.GraphicData[2],\n shortAxisSCOORDGroup.GraphicData[0],\n shortAxisSCOORDGroup.GraphicData[2]\n ),\n y: Math.max(\n longAxisSCOORDGroup.GraphicData[1],\n longAxisSCOORDGroup.GraphicData[3],\n shortAxisSCOORDGroup.GraphicData[1],\n shortAxisSCOORDGroup.GraphicData[3]\n )\n };\n\n const state = {\n sopInstanceUid: ReferencedSOPInstanceUID,\n frameIndex: ReferencedFrameNumber || 1,\n toolType: Bidirectional.toolType,\n active: false,\n handles: {\n start: {\n x: longAxisSCOORDGroup.GraphicData[0],\n y: longAxisSCOORDGroup.GraphicData[1],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 0\n },\n end: {\n x: longAxisSCOORDGroup.GraphicData[2],\n y: longAxisSCOORDGroup.GraphicData[3],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 1\n },\n perpendicularStart: {\n x: shortAxisSCOORDGroup.GraphicData[0],\n y: shortAxisSCOORDGroup.GraphicData[1],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 2\n },\n perpendicularEnd: {\n x: shortAxisSCOORDGroup.GraphicData[2],\n y: shortAxisSCOORDGroup.GraphicData[3],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 3\n },\n textBox: {\n highlight: false,\n hasMoved: true,\n active: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true,\n x: bottomRight.x + 10,\n y: bottomRight.y + 10\n }\n },\n invalidated: false,\n isCreating: false,\n longestDiameter,\n shortestDiameter,\n toolName: \"Bidirectional\",\n visible: true,\n finding: findingGroup\n ? findingGroup.ConceptCodeSequence\n : undefined,\n findingSites: findingSiteGroups.map(fsg => fsg.ConceptCodeSequence)\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { start, end, perpendicularStart, perpendicularEnd } =\n tool.handles;\n const { shortestDiameter, longestDiameter, finding, findingSites } =\n tool;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:Bidirectional\";\n\n return {\n longAxis: {\n point1: start,\n point2: end\n },\n shortAxis: {\n point1: perpendicularStart,\n point2: perpendicularEnd\n },\n longAxisLength: longestDiameter,\n shortAxisLength: shortestDiameter,\n trackingIdentifierTextValue,\n finding: finding,\n findingSites: findingSites || []\n };\n }\n}\n\nBidirectional.toolType = BIDIRECTIONAL;\nBidirectional.utilityToolType = BIDIRECTIONAL;\nBidirectional.TID300Representation = TID300Bidirectional;\nBidirectional.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === BIDIRECTIONAL;\n};\n\nMeasurementReport.registerTool(Bidirectional);\n\nexport default Bidirectional;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Ellipse: TID300Ellipse } = utilities.TID300;\n\nconst ELLIPTICALROI = \"EllipticalRoi\";\n\nclass EllipticalRoi {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const { GraphicData } = SCOORDGroup;\n\n const majorAxis = [\n { x: GraphicData[0], y: GraphicData[1] },\n { x: GraphicData[2], y: GraphicData[3] }\n ];\n const minorAxis = [\n { x: GraphicData[4], y: GraphicData[5] },\n { x: GraphicData[6], y: GraphicData[7] }\n ];\n\n // Calculate two opposite corners of box defined by two axes.\n\n const minorAxisLength = Math.sqrt(\n Math.pow(minorAxis[0].x - minorAxis[1].x, 2) +\n Math.pow(minorAxis[0].y - minorAxis[1].y, 2)\n );\n\n const minorAxisDirection = {\n x: (minorAxis[1].x - minorAxis[0].x) / minorAxisLength,\n y: (minorAxis[1].y - minorAxis[0].y) / minorAxisLength\n };\n\n const halfMinorAxisLength = minorAxisLength / 2;\n\n // First end point of major axis + half minor axis vector\n const corner1 = {\n x: majorAxis[0].x + minorAxisDirection.x * halfMinorAxisLength,\n y: majorAxis[0].y + minorAxisDirection.y * halfMinorAxisLength\n };\n\n // Second end point of major axis - half of minor axis vector\n const corner2 = {\n x: majorAxis[1].x - minorAxisDirection.x * halfMinorAxisLength,\n y: majorAxis[1].y - minorAxisDirection.y * halfMinorAxisLength\n };\n const state = {\n ...defaultState,\n toolType: EllipticalRoi.toolType,\n active: false,\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n handles: {\n end: {\n x: corner1.x,\n y: corner1.y,\n highlight: false,\n active: false\n },\n initialRotation: 0,\n start: {\n x: corner2.x,\n y: corner2.y,\n highlight: false,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n visible: true\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { cachedStats = {}, handles, finding, findingSites } = tool;\n const { start, end } = handles;\n const { area } = cachedStats;\n\n const halfXLength = Math.abs(start.x - end.x) / 2;\n const halfYLength = Math.abs(start.y - end.y) / 2;\n\n const points = [];\n\n const center = { x: (start.x + end.x) / 2, y: (start.y + end.y) / 2 };\n\n if (halfXLength > halfYLength) {\n // X-axis major\n // Major axis\n points.push({ x: center.x - halfXLength, y: center.y });\n points.push({ x: center.x + halfXLength, y: center.y });\n // Minor axis\n points.push({ x: center.x, y: center.y - halfYLength });\n points.push({ x: center.x, y: center.y + halfYLength });\n } else {\n // Y-axis major\n // Major axis\n points.push({ x: center.x, y: center.y - halfYLength });\n points.push({ x: center.x, y: center.y + halfYLength });\n // Minor axis\n points.push({ x: center.x - halfXLength, y: center.y });\n points.push({ x: center.x + halfXLength, y: center.y });\n }\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:EllipticalRoi\";\n\n return {\n area,\n points,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nEllipticalRoi.toolType = ELLIPTICALROI;\nEllipticalRoi.utilityToolType = ELLIPTICALROI;\nEllipticalRoi.TID300Representation = TID300Ellipse;\nEllipticalRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ELLIPTICALROI;\n};\n\nMeasurementReport.registerTool(EllipticalRoi);\n\nexport default EllipticalRoi;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Circle: TID300Circle } = utilities.TID300;\n\nconst CIRCLEROI = \"CircleRoi\";\n\nclass CircleRoi {\n /** Gets the measurement data for cornerstone, given DICOM SR measurement data. */\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const { GraphicData } = SCOORDGroup;\n\n const center = { x: GraphicData[0], y: GraphicData[1] };\n const end = { x: GraphicData[2], y: GraphicData[3] };\n\n const state = {\n ...defaultState,\n toolType: CircleRoi.toolType,\n active: false,\n cachedStats: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0,\n // Dummy values to be updated by cornerstone\n radius: 0,\n perimeter: 0\n },\n handles: {\n end: {\n ...end,\n highlight: false,\n active: false\n },\n initialRotation: 0,\n start: {\n ...center,\n highlight: false,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n visible: true\n };\n\n return state;\n }\n\n /**\n * Gets the TID 300 representation of a circle, given the cornerstone representation.\n *\n * @param {Object} tool\n * @returns\n */\n static getTID300RepresentationArguments(tool) {\n const { cachedStats = {}, handles, finding, findingSites } = tool;\n const { start: center, end } = handles;\n const { area, radius } = cachedStats;\n\n const perimeter = 2 * Math.PI * radius;\n const points = [];\n\n points.push(center);\n points.push(end);\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:CircleRoi\";\n\n return {\n area,\n perimeter,\n radius,\n points,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nCircleRoi.toolType = CIRCLEROI;\nCircleRoi.utilityToolType = CIRCLEROI;\nCircleRoi.TID300Representation = TID300Circle;\nCircleRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === CIRCLEROI;\n};\n\nMeasurementReport.registerTool(CircleRoi);\n\nexport default CircleRoi;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst ARROW_ANNOTATE = \"ArrowAnnotate\";\nconst CORNERSTONEFREETEXT = \"CORNERSTONEFREETEXT\";\n\nclass ArrowAnnotate {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, findingGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const text = findingGroup.ConceptCodeSequence.CodeMeaning;\n\n const { GraphicData } = SCOORDGroup;\n\n const state = {\n ...defaultState,\n toolType: ArrowAnnotate.toolType,\n active: false,\n handles: {\n start: {\n x: GraphicData[0],\n y: GraphicData[1],\n highlight: true,\n active: false\n },\n // Use a generic offset if the stored data doesn't have the endpoint, otherwise\n // use the actual endpoint.\n end: {\n x:\n GraphicData.length == 4\n ? GraphicData[2]\n : GraphicData[0] + 20,\n y:\n GraphicData.length == 4\n ? GraphicData[3]\n : GraphicData[1] + 20,\n highlight: true,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n text,\n visible: true\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const points = [tool.handles.start, tool.handles.end];\n\n let { finding, findingSites } = tool;\n\n const TID300RepresentationArguments = {\n points,\n trackingIdentifierTextValue: `cornerstoneTools@^4.0.0:ArrowAnnotate`,\n findingSites: findingSites || []\n };\n\n // If freetext finding isn't present, add it from the tool text.\n if (!finding || finding.CodeValue !== CORNERSTONEFREETEXT) {\n finding = {\n CodeValue: CORNERSTONEFREETEXT,\n CodingSchemeDesignator: \"CST4\",\n CodeMeaning: tool.text\n };\n }\n\n TID300RepresentationArguments.finding = finding;\n\n return TID300RepresentationArguments;\n }\n}\n\nArrowAnnotate.toolType = ARROW_ANNOTATE;\nArrowAnnotate.utilityToolType = ARROW_ANNOTATE;\nArrowAnnotate.TID300Representation = TID300Point;\nArrowAnnotate.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ARROW_ANNOTATE;\n};\n\nMeasurementReport.registerTool(ArrowAnnotate);\n\nexport default ArrowAnnotate;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\n\nconst COBB_ANGLE = \"CobbAngle\";\n\nclass CobbAngle {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n rAngle: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: CobbAngle.toolType,\n handles: {\n start: {},\n end: {},\n start2: {\n highlight: true,\n drawnIndependently: true\n },\n end2: {\n highlight: true,\n drawnIndependently: true\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.end.x,\n state.handles.end.y,\n state.handles.start2.x,\n state.handles.start2.y,\n state.handles.end2.x,\n state.handles.end2.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.end;\n const point3 = handles.start2;\n const point4 = handles.end2;\n const rAngle = tool.rAngle;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:CobbAngle\";\n\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nCobbAngle.toolType = COBB_ANGLE;\nCobbAngle.utilityToolType = COBB_ANGLE;\nCobbAngle.TID300Representation = TID300CobbAngle;\nCobbAngle.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === COBB_ANGLE;\n};\n\nMeasurementReport.registerTool(CobbAngle);\n\nexport default CobbAngle;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Angle: TID300Angle } = utilities.TID300;\n\nconst ANGLE = \"Angle\";\n\nclass Angle {\n /**\n * Generate TID300 measurement data for a plane angle measurement - use a Angle, but label it as Angle\n */\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n rAngle: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: Angle.toolType,\n handles: {\n start: {},\n middle: {},\n end: {},\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.middle.x,\n state.handles.middle.y,\n state.handles.middle.x,\n state.handles.middle.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.middle;\n const point3 = handles.middle;\n const point4 = handles.end;\n const rAngle = tool.rAngle;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:Angle\";\n\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nAngle.toolType = ANGLE;\nAngle.utilityToolType = ANGLE;\nAngle.TID300Representation = TID300Angle;\nAngle.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ANGLE;\n};\n\nMeasurementReport.registerTool(Angle);\n\nexport default Angle;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nclass RectangleRoi {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, NUMGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n toolType: RectangleRoi.toolType,\n handles: {\n start: {},\n end: {},\n textBox: {\n active: false,\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n },\n initialRotation: 0\n },\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n color: undefined,\n invalidated: true\n };\n const intermediate = {};\n\n [\n state.handles.start.x,\n state.handles.start.y,\n intermediate.x,\n intermediate.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { finding, findingSites, cachedStats = {}, handles } = tool;\n const { start, end } = handles;\n const points = [\n start,\n { x: start.x, y: end.y },\n end,\n { x: end.x, y: start.y }\n ];\n const { area, perimeter } = cachedStats;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:RectangleRoi\";\n\n return {\n points,\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nRectangleRoi.toolType = \"RectangleRoi\";\nRectangleRoi.utilityToolType = \"RectangleRoi\";\nRectangleRoi.TID300Representation = TID300Polyline;\nRectangleRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === RectangleRoi.toolType;\n};\n\nMeasurementReport.registerTool(RectangleRoi);\n\nexport default RectangleRoi;\n","import { log, utilities, normalizers, derivations } from \"dcmjs\";\nimport ndarray from \"ndarray\";\n\nconst {\n rotateDirectionCosinesInPlane,\n flipImageOrientationPatient: flipIOP,\n flipMatrix2D,\n rotateMatrix902D\n} = utilities.orientation;\n\nconst { datasetToBlob, BitArray, DicomMessage, DicomMetaDictionary } =\n utilities;\n\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\n\nconst Segmentation = {\n generateSegmentation,\n generateToolState\n};\n\nexport default Segmentation;\n\n/**\n *\n * @typedef {Object} BrushData\n * @property {Object} toolState - The cornerstoneTools global toolState.\n * @property {Object[]} segments - The cornerstoneTools segment metadata that corresponds to the\n * seriesInstanceUid.\n */\n\n/**\n * generateSegmentation - Generates cornerstoneTools brush data, given a stack of\n * imageIds, images and the cornerstoneTools brushData.\n *\n * @param {object[]} images An array of the cornerstone image objects.\n * @param {BrushData} brushData and object containing the brushData.\n * @returns {type} description\n */\nfunction generateSegmentation(\n images,\n brushData,\n options = { includeSliceSpacing: true }\n) {\n const { toolState, segments } = brushData;\n\n // Calculate the dimensions of the data cube.\n const image0 = images[0];\n\n const dims = {\n x: image0.columns,\n y: image0.rows,\n z: images.length\n };\n\n dims.xy = dims.x * dims.y;\n\n const numSegments = _getSegCount(seg, segments);\n\n if (!numSegments) {\n throw new Error(\"No segments to export!\");\n }\n\n const isMultiframe = image0.imageId.includes(\"?frame\");\n const seg = _createSegFromImages(images, isMultiframe, options);\n\n const { referencedFramesPerSegment, segmentIndicies } =\n _getNumberOfFramesPerSegment(toolState, images, segments);\n\n let NumberOfFrames = 0;\n\n for (let i = 0; i < referencedFramesPerSegment.length; i++) {\n NumberOfFrames += referencedFramesPerSegment[i].length;\n }\n\n seg.setNumberOfFrames(NumberOfFrames);\n\n for (let i = 0; i < segmentIndicies.length; i++) {\n const segmentIndex = segmentIndicies[i];\n const referencedFrameIndicies = referencedFramesPerSegment[i];\n\n // Frame numbers start from 1.\n const referencedFrameNumbers = referencedFrameIndicies.map(element => {\n return element + 1;\n });\n\n const segment = segments[segmentIndex];\n\n seg.addSegment(\n segment,\n _extractCornerstoneToolsPixelData(\n segmentIndex,\n referencedFrameIndicies,\n toolState,\n images,\n dims\n ),\n referencedFrameNumbers\n );\n }\n\n seg.bitPackPixelData();\n\n const segBlob = datasetToBlob(seg.dataset);\n\n return segBlob;\n}\n\nfunction _extractCornerstoneToolsPixelData(\n segmentIndex,\n referencedFrames,\n toolState,\n images,\n dims\n) {\n const pixelData = new Uint8Array(dims.xy * referencedFrames.length);\n\n let pixelDataIndex = 0;\n\n for (let i = 0; i < referencedFrames.length; i++) {\n const frame = referencedFrames[i];\n\n const imageId = images[frame].imageId;\n const imageIdSpecificToolState = toolState[imageId];\n\n const brushPixelData =\n imageIdSpecificToolState.brush.data[segmentIndex].pixelData;\n\n for (let p = 0; p < brushPixelData.length; p++) {\n pixelData[pixelDataIndex] = brushPixelData[p];\n pixelDataIndex++;\n }\n }\n\n return pixelData;\n}\n\nfunction _getNumberOfFramesPerSegment(toolState, images, segments) {\n const segmentIndicies = [];\n const referencedFramesPerSegment = [];\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i]) {\n segmentIndicies.push(i);\n referencedFramesPerSegment.push([]);\n }\n }\n\n for (let z = 0; z < images.length; z++) {\n const imageId = images[z].imageId;\n const imageIdSpecificToolState = toolState[imageId];\n\n for (let i = 0; i < segmentIndicies.length; i++) {\n const segIdx = segmentIndicies[i];\n\n if (\n imageIdSpecificToolState &&\n imageIdSpecificToolState.brush &&\n imageIdSpecificToolState.brush.data &&\n imageIdSpecificToolState.brush.data[segIdx] &&\n imageIdSpecificToolState.brush.data[segIdx].pixelData\n ) {\n referencedFramesPerSegment[i].push(z);\n }\n }\n }\n\n return {\n referencedFramesPerSegment,\n segmentIndicies\n };\n}\n\nfunction _getSegCount(seg, segments) {\n let numSegments = 0;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i]) {\n numSegments++;\n }\n }\n\n return numSegments;\n}\n\n/**\n * _createSegFromImages - description\n *\n * @param {Object[]} images An array of the cornerstone image objects.\n * @param {Boolean} isMultiframe Whether the images are multiframe.\n * @returns {Object} The Seg derived dataSet.\n */\nfunction _createSegFromImages(images, isMultiframe, options) {\n const datasets = [];\n\n if (isMultiframe) {\n const image = images[0];\n const arrayBuffer = image.data.byteArray.buffer;\n\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n\n datasets.push(dataset);\n } else {\n for (let i = 0; i < images.length; i++) {\n const image = images[i];\n const arrayBuffer = image.data.byteArray.buffer;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(\n dicomData.dict\n );\n\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n datasets.push(dataset);\n }\n }\n\n const multiframe = Normalizer.normalizeToDataset(datasets);\n\n return new SegmentationDerivation([multiframe], options);\n}\n\n/**\n * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer The SEG arrayBuffer.\n * @param {*} metadataProvider\n * @returns {Object} The toolState and an object from which the\n * segment metadata can be derived.\n */\nfunction generateToolState(imageIds, arrayBuffer, metadataProvider) {\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n const multiframe = Normalizer.normalizeToDataset([dataset]);\n\n const imagePlaneModule = metadataProvider.get(\n \"imagePlaneModule\",\n imageIds[0]\n );\n\n if (!imagePlaneModule) {\n console.warn(\"Insufficient metadata, imagePlaneModule missing.\");\n }\n\n const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines)\n ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines]\n : [\n imagePlaneModule.rowCosines.x,\n imagePlaneModule.rowCosines.y,\n imagePlaneModule.rowCosines.z,\n imagePlaneModule.columnCosines.x,\n imagePlaneModule.columnCosines.y,\n imagePlaneModule.columnCosines.z\n ];\n\n // Get IOP from ref series, compute supported orientations:\n const validOrientations = getValidOrientations(ImageOrientationPatient);\n\n const SharedFunctionalGroupsSequence =\n multiframe.SharedFunctionalGroupsSequence;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n\n const sliceLength = multiframe.Columns * multiframe.Rows;\n const segMetadata = getSegmentMetadata(multiframe);\n const pixelData = unpackPixelData(multiframe);\n\n const PerFrameFunctionalGroupsSequence =\n multiframe.PerFrameFunctionalGroupsSequence;\n\n const toolState = {};\n\n let inPlane = true;\n\n for (let i = 0; i < PerFrameFunctionalGroupsSequence.length; i++) {\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[i];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const pixelDataI2D = ndarray(\n new Uint8Array(pixelData.buffer, i * sliceLength, sliceLength),\n [multiframe.Rows, multiframe.Columns]\n );\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations\n );\n\n if (!alignedPixelDataI) {\n console.warn(\n \"This segmentation object is not in-plane with the source data. Bailing out of IO. It'd be better to render this with vtkjs. \"\n );\n inPlane = false;\n break;\n }\n\n const segmentIndex =\n PerFrameFunctionalGroups.SegmentIdentificationSequence\n .ReferencedSegmentNumber - 1;\n\n let SourceImageSequence;\n if (\n SharedFunctionalGroupsSequence.DerivationImageSequence &&\n SharedFunctionalGroupsSequence.DerivationImageSequence\n .SourceImageSequence\n ) {\n SourceImageSequence =\n SharedFunctionalGroupsSequence.DerivationImageSequence\n .SourceImageSequence[i];\n } else {\n SourceImageSequence =\n PerFrameFunctionalGroups.DerivationImageSequence\n .SourceImageSequence;\n }\n\n const imageId = getImageIdOfSourceImage(\n SourceImageSequence,\n imageIds,\n metadataProvider\n );\n\n addImageIdSpecificBrushToolState(\n toolState,\n imageId,\n segmentIndex,\n alignedPixelDataI\n );\n }\n\n if (!inPlane) {\n return;\n }\n\n return { toolState, segMetadata };\n}\n\n/**\n * unpackPixelData - Unpacks bitpacked pixelData if the Segmentation is BINARY.\n *\n * @param {Object} multiframe The multiframe dataset.\n * @return {Uint8Array} The unpacked pixelData.\n */\nfunction unpackPixelData(multiframe) {\n const segType = multiframe.SegmentationType;\n\n if (segType === \"BINARY\") {\n return BitArray.unpack(multiframe.PixelData);\n }\n\n const pixelData = new Uint8Array(multiframe.PixelData);\n\n const max = multiframe.MaximumFractionalValue;\n const onlyMaxAndZero =\n pixelData.find(element => element !== 0 && element !== max) ===\n undefined;\n\n if (!onlyMaxAndZero) {\n log.warn(\n \"This is a fractional segmentation, which is not currently supported.\"\n );\n return;\n }\n\n log.warn(\n \"This segmentation object is actually binary... processing as such.\"\n );\n\n return pixelData;\n}\n\n/**\n * addImageIdSpecificBrushToolState - Adds brush pixel data to cornerstoneTools\n * formatted toolState object.\n *\n * @param {Object} toolState The toolState object to modify\n * @param {String} imageId The imageId of the toolState to add the data.\n * @param {Number} segmentIndex The index of the segment data being added.\n * @param {Ndarray} pixelData2D The pixelData in Ndarry 2D format.\n */\nfunction addImageIdSpecificBrushToolState(\n toolState,\n imageId,\n segmentIndex,\n pixelData2D\n) {\n if (!toolState[imageId]) {\n toolState[imageId] = {};\n toolState[imageId].brush = {};\n toolState[imageId].brush.data = [];\n } else if (!toolState[imageId].brush) {\n toolState[imageId].brush = {};\n toolState[imageId].brush.data = [];\n } else if (!toolState[imageId].brush.data) {\n toolState[imageId].brush.data = [];\n }\n\n toolState[imageId].brush.data[segmentIndex] = {};\n\n const brushDataI = toolState[imageId].brush.data[segmentIndex];\n\n brushDataI.pixelData = new Uint8Array(pixelData2D.data.length);\n\n const cToolsPixelData = brushDataI.pixelData;\n\n for (let p = 0; p < cToolsPixelData.length; p++) {\n if (pixelData2D.data[p]) {\n cToolsPixelData[p] = 1;\n } else {\n cToolsPixelData[p] = 0;\n }\n }\n}\n\n/**\n * getImageIdOfSourceImage - Returns the Cornerstone imageId of the source image.\n *\n * @param {Object} SourceImageSequence Sequence describing the source image.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} metadataProvider A Cornerstone metadataProvider to query\n * metadata from imageIds.\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImage(\n SourceImageSequence,\n imageIds,\n metadataProvider\n) {\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n SourceImageSequence;\n\n return ReferencedFrameNumber\n ? getImageIdOfReferencedFrame(\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber,\n imageIds,\n metadataProvider\n )\n : getImageIdOfReferencedSingleFramedSOPInstance(\n ReferencedSOPInstanceUID,\n imageIds,\n metadataProvider\n );\n}\n\n/**\n * getImageIdOfReferencedSingleFramedSOPInstance - Returns the imageId\n * corresponding to the specified sopInstanceUid for single-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {String[]} imageIds The list of imageIds.\n * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids\n * from the cornerstone imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedSingleFramedSOPInstance(\n sopInstanceUid,\n imageIds,\n metadataProvider\n) {\n return imageIds.find(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n if (!sopCommonModule) {\n return;\n }\n\n return sopCommonModule.sopInstanceUID === sopInstanceUid;\n });\n}\n\n/**\n * getImageIdOfReferencedFrame - Returns the imageId corresponding to the\n * specified sopInstanceUid and frameNumber for multi-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {Number} frameNumber The frame number.\n * @param {String} imageIds The list of imageIds.\n * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids\n * from the cornerstone imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedFrame(\n sopInstanceUid,\n frameNumber,\n imageIds,\n metadataProvider\n) {\n const imageId = imageIds.find(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n if (!sopCommonModule) {\n return;\n }\n\n const imageIdFrameNumber = Number(imageId.split(\"frame=\")[1]);\n\n return (\n //frameNumber is zero indexed for cornerstoneDICOMImageLoader image Ids.\n sopCommonModule.sopInstanceUID === sopInstanceUid &&\n imageIdFrameNumber === frameNumber - 1\n );\n });\n\n return imageId;\n}\n\n/**\n * getValidOrientations - returns an array of valid orientations.\n *\n * @param iop - The row (0..2) an column (3..5) direction cosines.\n * @return An array of valid orientations.\n */\nfunction getValidOrientations(iop) {\n const orientations = [];\n\n // [0, 1, 2]: 0, 0hf, 0vf\n // [3, 4, 5]: 90, 90hf, 90vf\n // [6, 7]: 180, 270\n\n orientations[0] = iop;\n orientations[1] = flipIOP.h(iop);\n orientations[2] = flipIOP.v(iop);\n\n const iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2);\n\n orientations[3] = iop90;\n orientations[4] = flipIOP.h(iop90);\n orientations[5] = flipIOP.v(iop90);\n\n orientations[6] = rotateDirectionCosinesInPlane(iop, Math.PI);\n orientations[7] = rotateDirectionCosinesInPlane(iop, 1.5 * Math.PI);\n\n return orientations;\n}\n\n/**\n * alignPixelDataWithSourceData -\n *\n * @param pixelData2D - The data to align.\n * @param iop - The orientation of the image slice.\n * @param orientations - An array of valid imageOrientationPatient values.\n * @return The aligned pixelData.\n */\nfunction alignPixelDataWithSourceData(pixelData2D, iop, orientations) {\n if (compareIOP(iop, orientations[0])) {\n //Same orientation.\n return pixelData2D;\n } else if (compareIOP(iop, orientations[1])) {\n //Flipped vertically.\n return flipMatrix2D.v(pixelData2D);\n } else if (compareIOP(iop, orientations[2])) {\n //Flipped horizontally.\n return flipMatrix2D.h(pixelData2D);\n } else if (compareIOP(iop, orientations[3])) {\n //Rotated 90 degrees.\n return rotateMatrix902D(pixelData2D);\n } else if (compareIOP(iop, orientations[4])) {\n //Rotated 90 degrees and fliped horizontally.\n return flipMatrix2D.h(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[5])) {\n //Rotated 90 degrees and fliped vertically.\n return flipMatrix2D.v(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[6])) {\n //Rotated 180 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n return rotateMatrix902D(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[7])) {\n //Rotated 270 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n return rotateMatrix902D(\n rotateMatrix902D(rotateMatrix902D(pixelData2D))\n );\n }\n}\n\nconst dx = 1e-5;\n\n/**\n * compareIOP - Returns true if iop1 and iop2 are equal\n * within a tollerance, dx.\n *\n * @param iop1 - An ImageOrientationPatient array.\n * @param iop2 - An ImageOrientationPatient array.\n * @return True if iop1 and iop2 are equal.\n */\nfunction compareIOP(iop1, iop2) {\n return (\n Math.abs(iop1[0] - iop2[0]) < dx &&\n Math.abs(iop1[1] - iop2[1]) < dx &&\n Math.abs(iop1[2] - iop2[2]) < dx &&\n Math.abs(iop1[3] - iop2[3]) < dx &&\n Math.abs(iop1[4] - iop2[4]) < dx &&\n Math.abs(iop1[5] - iop2[5]) < dx\n );\n}\n\nfunction getSegmentMetadata(multiframe) {\n const data = [];\n\n const segmentSequence = multiframe.SegmentSequence;\n\n if (Array.isArray(segmentSequence)) {\n for (let segIdx = 0; segIdx < segmentSequence.length; segIdx++) {\n data.push(segmentSequence[segIdx]);\n }\n } else {\n // Only one segment, will be stored as an object.\n data.push(segmentSequence);\n }\n\n return {\n seriesInstanceUid:\n multiframe.ReferencedSeriesSequence.SeriesInstanceUID,\n data\n };\n}\n","/**\n * Cornerstone adapters events\n */\nenum Events {\n /**\n * Cornerstone segmentation load progress event\n */\n SEGMENTATION_LOAD_PROGRESS = \"CORNERSTONE_ADAPTER_SEGMENTATION_LOAD_PROGRESS\"\n}\n\nexport default Events;\n","import {\n log,\n data as dcmjsData,\n utilities,\n normalizers,\n derivations\n} from \"dcmjs\";\nimport ndarray from \"ndarray\";\nimport cloneDeep from \"lodash.clonedeep\";\n\nimport { Events } from \"../enums\";\n\nconst {\n rotateDirectionCosinesInPlane,\n flipImageOrientationPatient: flipIOP,\n flipMatrix2D,\n rotateMatrix902D,\n nearlyEqual\n} = utilities.orientation;\n\nconst { BitArray, DicomMessage, DicomMetaDictionary } = dcmjsData;\n\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\n\nconst { encode, decode } = utilities.compression;\n\n/**\n *\n * @typedef {Object} BrushData\n * @property {Object} toolState - The cornerstoneTools global toolState.\n * @property {Object[]} segments - The cornerstoneTools segment metadata that corresponds to the\n * seriesInstanceUid.\n */\nconst generateSegmentationDefaultOptions = {\n includeSliceSpacing: true,\n rleEncode: false\n};\n\n/**\n * generateSegmentation - Generates cornerstoneTools brush data, given a stack of\n * imageIds, images and the cornerstoneTools brushData.\n *\n * @param {object[]} images An array of cornerstone images that contain the source\n * data under `image.data.byteArray.buffer`.\n * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects.\n * @param {Object} userOptions Options to pass to the segmentation derivation and `fillSegmentation`.\n * @returns {Blob}\n */\nfunction generateSegmentation(images, inputLabelmaps3D, userOptions = {}) {\n const isMultiframe = images[0].imageId.includes(\"?frame\");\n const segmentation = _createSegFromImages(\n images,\n isMultiframe,\n userOptions\n );\n\n return fillSegmentation(segmentation, inputLabelmaps3D, userOptions);\n}\n\n/**\n * Fills a given segmentation object with data from the input labelmaps3D\n *\n * @param segmentation - The segmentation object to be filled.\n * @param inputLabelmaps3D - An array of 3D labelmaps, or a single 3D labelmap.\n * @param userOptions - Optional configuration settings. Will override the default options.\n *\n * @returns {object} The filled segmentation object.\n */\nfunction fillSegmentation(segmentation, inputLabelmaps3D, userOptions = {}) {\n const options = Object.assign(\n {},\n generateSegmentationDefaultOptions,\n userOptions\n );\n\n // Use another variable so we don't redefine labelmaps3D.\n const labelmaps3D = Array.isArray(inputLabelmaps3D)\n ? inputLabelmaps3D\n : [inputLabelmaps3D];\n\n let numberOfFrames = 0;\n const referencedFramesPerLabelmap = [];\n\n for (\n let labelmapIndex = 0;\n labelmapIndex < labelmaps3D.length;\n labelmapIndex++\n ) {\n const labelmap3D = labelmaps3D[labelmapIndex];\n const { labelmaps2D, metadata } = labelmap3D;\n\n const referencedFramesPerSegment = [];\n\n for (let i = 1; i < metadata.length; i++) {\n if (metadata[i]) {\n referencedFramesPerSegment[i] = [];\n }\n }\n\n for (let i = 0; i < labelmaps2D.length; i++) {\n const labelmap2D = labelmaps2D[i];\n\n if (labelmaps2D[i]) {\n const { segmentsOnLabelmap } = labelmap2D;\n\n segmentsOnLabelmap.forEach(segmentIndex => {\n if (segmentIndex !== 0) {\n referencedFramesPerSegment[segmentIndex].push(i);\n numberOfFrames++;\n }\n });\n }\n }\n\n referencedFramesPerLabelmap[labelmapIndex] = referencedFramesPerSegment;\n }\n\n segmentation.setNumberOfFrames(numberOfFrames);\n\n for (\n let labelmapIndex = 0;\n labelmapIndex < labelmaps3D.length;\n labelmapIndex++\n ) {\n const referencedFramesPerSegment =\n referencedFramesPerLabelmap[labelmapIndex];\n\n const labelmap3D = labelmaps3D[labelmapIndex];\n const { metadata } = labelmap3D;\n\n for (\n let segmentIndex = 1;\n segmentIndex < referencedFramesPerSegment.length;\n segmentIndex++\n ) {\n const referencedFrameIndicies =\n referencedFramesPerSegment[segmentIndex];\n\n if (referencedFrameIndicies) {\n // Frame numbers start from 1.\n const referencedFrameNumbers = referencedFrameIndicies.map(\n element => {\n return element + 1;\n }\n );\n const segmentMetadata = metadata[segmentIndex];\n const labelmaps = _getLabelmapsFromReferencedFrameIndicies(\n labelmap3D,\n referencedFrameIndicies\n );\n\n segmentation.addSegmentFromLabelmap(\n segmentMetadata,\n labelmaps,\n segmentIndex,\n referencedFrameNumbers\n );\n }\n }\n }\n if (options.rleEncode) {\n const rleEncodedFrames = encode(\n segmentation.dataset.PixelData,\n numberOfFrames,\n segmentation.dataset.Rows,\n segmentation.dataset.Columns\n );\n\n // Must use fractional now to RLE encode, as the DICOM standard only allows BitStored && BitsAllocated\n // to be 1 for BINARY. This is not ideal and there should be a better format for compression in this manner\n // added to the standard.\n segmentation.assignToDataset({\n BitsAllocated: \"8\",\n BitsStored: \"8\",\n HighBit: \"7\",\n SegmentationType: \"FRACTIONAL\",\n SegmentationFractionalType: \"PROBABILITY\",\n MaximumFractionalValue: \"255\"\n });\n\n segmentation.dataset._meta.TransferSyntaxUID = {\n Value: [\"1.2.840.10008.1.2.5\"],\n vr: \"UI\"\n };\n segmentation.dataset._vrMap.PixelData = \"OB\";\n segmentation.dataset.PixelData = rleEncodedFrames;\n } else {\n // If no rleEncoding, at least bitpack the data.\n segmentation.bitPackPixelData();\n }\n\n return segmentation;\n}\n\nfunction _getLabelmapsFromReferencedFrameIndicies(\n labelmap3D,\n referencedFrameIndicies\n) {\n const { labelmaps2D } = labelmap3D;\n\n const labelmaps = [];\n\n for (let i = 0; i < referencedFrameIndicies.length; i++) {\n const frame = referencedFrameIndicies[i];\n\n labelmaps.push(labelmaps2D[frame].pixelData);\n }\n\n return labelmaps;\n}\n\n/**\n * _createSegFromImages - description\n *\n * @param {Object[]} images An array of the cornerstone image objects.\n * @param {Boolean} isMultiframe Whether the images are multiframe.\n * @returns {Object} The Seg derived dataSet.\n */\nfunction _createSegFromImages(images, isMultiframe, options) {\n const datasets = [];\n\n if (isMultiframe) {\n const image = images[0];\n const arrayBuffer = image.data.byteArray.buffer;\n\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n\n datasets.push(dataset);\n } else {\n for (let i = 0; i < images.length; i++) {\n const image = images[i];\n const arrayBuffer = image.data.byteArray.buffer;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(\n dicomData.dict\n );\n\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n datasets.push(dataset);\n }\n }\n\n const multiframe = Normalizer.normalizeToDataset(datasets);\n\n return new SegmentationDerivation([multiframe], options);\n}\n\n/**\n * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds - An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer - The SEG arrayBuffer.\n * @param {*} metadataProvider.\n * @param {obj} options - Options object.\n *\n * @return {[]ArrayBuffer}a list of array buffer for each labelMap\n * @return {Object} an object from which the segment metadata can be derived\n * @return {[][][]} 2D list containing the track of segments per frame\n * @return {[][][]} 3D list containing the track of segments per frame for each labelMap\n * (available only for the overlapping case).\n */\nasync function generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n options\n) {\n const {\n skipOverlapping = false,\n tolerance = 1e-3,\n TypedArrayConstructor = Uint8Array,\n maxBytesPerChunk = 199000000,\n eventTarget,\n triggerEvent\n } = options;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n const multiframe = Normalizer.normalizeToDataset([dataset]);\n\n const imagePlaneModule = metadataProvider.get(\n \"imagePlaneModule\",\n imageIds[0]\n );\n\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n imageIds[0]\n );\n\n const SeriesInstanceUID = generalSeriesModule.seriesInstanceUID;\n\n if (!imagePlaneModule) {\n console.warn(\"Insufficient metadata, imagePlaneModule missing.\");\n }\n\n const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines)\n ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines]\n : [\n imagePlaneModule.rowCosines.x,\n imagePlaneModule.rowCosines.y,\n imagePlaneModule.rowCosines.z,\n imagePlaneModule.columnCosines.x,\n imagePlaneModule.columnCosines.y,\n imagePlaneModule.columnCosines.z\n ];\n\n // Get IOP from ref series, compute supported orientations:\n const validOrientations = getValidOrientations(ImageOrientationPatient);\n\n const sliceLength = multiframe.Columns * multiframe.Rows;\n const segMetadata = getSegmentMetadata(multiframe, SeriesInstanceUID);\n\n const TransferSyntaxUID = multiframe._meta.TransferSyntaxUID.Value[0];\n\n let pixelData;\n let pixelDataChunks;\n\n if (TransferSyntaxUID === \"1.2.840.10008.1.2.5\") {\n const rleEncodedFrames = Array.isArray(multiframe.PixelData)\n ? multiframe.PixelData\n : [multiframe.PixelData];\n\n pixelData = decode(\n rleEncodedFrames,\n multiframe.Rows,\n multiframe.Columns\n );\n\n if (multiframe.BitsStored === 1) {\n console.warn(\"No implementation for rle + bitbacking.\");\n\n return;\n }\n\n // Todo: need to test this with rle data\n pixelDataChunks = [pixelData];\n } else {\n pixelDataChunks = unpackPixelData(multiframe, { maxBytesPerChunk });\n\n if (!pixelDataChunks) {\n throw new Error(\"Fractional segmentations are not yet supported\");\n }\n }\n\n const orientation = checkOrientation(\n multiframe,\n validOrientations,\n [imagePlaneModule.rows, imagePlaneModule.columns, imageIds.length],\n tolerance\n );\n\n // Pre-compute the sop UID to imageId index map so that in the for loop\n // we don't have to call metadataProvider.get() for each imageId over\n // and over again.\n const sopUIDImageIdIndexMap = imageIds.reduce((acc, imageId) => {\n const { sopInstanceUid } = metadataProvider.get(\n \"generalImageModule\",\n imageId\n );\n acc[sopInstanceUid] = imageId;\n return acc;\n }, {});\n\n let overlapping = false;\n if (!skipOverlapping) {\n overlapping = checkSEGsOverlapping(\n pixelDataChunks,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n sopUIDImageIdIndexMap\n );\n }\n\n let insertFunction;\n\n switch (orientation) {\n case \"Planar\":\n if (overlapping) {\n insertFunction = insertOverlappingPixelDataPlanar;\n } else {\n insertFunction = insertPixelDataPlanar;\n }\n break;\n case \"Perpendicular\":\n //insertFunction = insertPixelDataPerpendicular;\n throw new Error(\n \"Segmentations orthogonal to the acquisition plane of the source data are not yet supported.\"\n );\n case \"Oblique\":\n throw new Error(\n \"Segmentations oblique to the acquisition plane of the source data are not yet supported.\"\n );\n }\n\n /* if SEGs are overlapping:\n 1) the labelmapBuffer will contain M volumes which have non-overlapping segments;\n 2) segmentsOnFrame will have M * numberOfFrames values to track in which labelMap are the segments;\n 3) insertFunction will return the number of LabelMaps\n 4) generateToolState return is an array*/\n\n const segmentsOnFrameArray = [];\n segmentsOnFrameArray[0] = [];\n const segmentsOnFrame = [];\n\n const arrayBufferLength =\n sliceLength * imageIds.length * TypedArrayConstructor.BYTES_PER_ELEMENT;\n const labelmapBufferArray = [];\n labelmapBufferArray[0] = new ArrayBuffer(arrayBufferLength);\n\n // Precompute the indices and metadata so that we don't have to call\n // a function for each imageId in the for loop.\n const imageIdMaps = imageIds.reduce(\n (acc, curr, index) => {\n acc.indices[curr] = index;\n acc.metadata[curr] = metadataProvider.get(\"instance\", curr);\n return acc;\n },\n { indices: {}, metadata: {} }\n );\n\n // This is the centroid calculation for each segment Index, the data structure\n // is a Map with key = segmentIndex and value = {imageIdIndex: centroid, ...}\n // later on we will use this data structure to calculate the centroid of the\n // segment in the labelmapBuffer\n const segmentsPixelIndices = new Map();\n\n await insertFunction(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelDataChunks,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap,\n imageIdMaps,\n eventTarget,\n triggerEvent\n );\n\n // calculate the centroid of each segment\n const centroidXYZ = new Map();\n\n segmentsPixelIndices.forEach((imageIdIndexBufferIndex, segmentIndex) => {\n const { xAcc, yAcc, zAcc, count } = calculateCentroid(\n imageIdIndexBufferIndex,\n multiframe\n );\n\n centroidXYZ.set(segmentIndex, {\n x: Math.floor(xAcc / count),\n y: Math.floor(yAcc / count),\n z: Math.floor(zAcc / count)\n });\n });\n\n return {\n labelmapBufferArray,\n segMetadata,\n segmentsOnFrame,\n segmentsOnFrameArray,\n centroids: centroidXYZ\n };\n}\n\n// function insertPixelDataPerpendicular(\n// segmentsOnFrame,\n// labelmapBuffer,\n// pixelData,\n// multiframe,\n// imageIds,\n// validOrientations,\n// metadataProvider\n// ) {\n// const {\n// SharedFunctionalGroupsSequence,\n// PerFrameFunctionalGroupsSequence,\n// Rows,\n// Columns\n// } = multiframe;\n\n// const firstImagePlaneModule = metadataProvider.get(\n// \"imagePlaneModule\",\n// imageIds[0]\n// );\n\n// const lastImagePlaneModule = metadataProvider.get(\n// \"imagePlaneModule\",\n// imageIds[imageIds.length - 1]\n// );\n\n// console.log(firstImagePlaneModule);\n// console.log(lastImagePlaneModule);\n\n// const corners = [\n// ...getCorners(firstImagePlaneModule),\n// ...getCorners(lastImagePlaneModule)\n// ];\n\n// console.log(`corners:`);\n// console.log(corners);\n\n// const indexToWorld = mat4.create();\n\n// const ippFirstFrame = firstImagePlaneModule.imagePositionPatient;\n// const rowCosines = Array.isArray(firstImagePlaneModule.rowCosines)\n// ? [...firstImagePlaneModule.rowCosines]\n// : [\n// firstImagePlaneModule.rowCosines.x,\n// firstImagePlaneModule.rowCosines.y,\n// firstImagePlaneModule.rowCosines.z\n// ];\n\n// const columnCosines = Array.isArray(firstImagePlaneModule.columnCosines)\n// ? [...firstImagePlaneModule.columnCosines]\n// : [\n// firstImagePlaneModule.columnCosines.x,\n// firstImagePlaneModule.columnCosines.y,\n// firstImagePlaneModule.columnCosines.z\n// ];\n\n// const { pixelSpacing } = firstImagePlaneModule;\n\n// mat4.set(\n// indexToWorld,\n// // Column 1\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[0],\n// // Column 2\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[1],\n// // Column 3\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[2],\n// // Column 4\n// 0,\n// 0,\n// 0,\n// 1\n// );\n\n// // TODO -> Get origin and (x,y,z) increments to build a translation matrix:\n// // TODO -> Equation C.7.6.2.1-1\n\n// // | cx*di rx* Xx 0 | |x|\n// // | cy*di ry Xy 0 | |y|\n// // | cz*di rz Xz 0 | |z|\n// // | tx ty tz 1 | |1|\n\n// // const [\n// // 0, 0 , 0 , 0,\n// // 0, 0 , 0 , 0,\n// // 0, 0 , 0 , 0,\n// // ipp[0], ipp[1] , ipp[2] , 1,\n// // ]\n\n// // Each frame:\n\n// // Find which corner the first voxel lines up with (one of 8 corners.)\n\n// // Find how i,j,k orient with respect to source volume.\n// // Go through each frame, find location in source to start, and whether to increment +/ix,+/-y,+/-z\n// // through each voxel.\n\n// // [1,0,0,0,1,0]\n\n// // const [\n\n// // ]\n\n// // Invert transformation matrix to get worldToIndex\n\n// // Apply world to index on each point to fill up the matrix.\n\n// // const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence\n// // ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n// // .ImageOrientationPatient\n// // : undefined;\n// // const sliceLength = Columns * Rows;\n// }\n\n// function getCorners(imagePlaneModule) {\n// // console.log(imagePlaneModule);\n\n// const {\n// rows,\n// columns,\n// rowCosines,\n// columnCosines,\n// imagePositionPatient: ipp,\n// rowPixelSpacing,\n// columnPixelSpacing\n// } = imagePlaneModule;\n\n// const rowLength = columns * columnPixelSpacing;\n// const columnLength = rows * rowPixelSpacing;\n\n// const entireRowVector = [\n// rowLength * columnCosines[0],\n// rowLength * columnCosines[1],\n// rowLength * columnCosines[2]\n// ];\n\n// const entireColumnVector = [\n// columnLength * rowCosines[0],\n// columnLength * rowCosines[1],\n// columnLength * rowCosines[2]\n// ];\n\n// const topLeft = [ipp[0], ipp[1], ipp[2]];\n// const topRight = [\n// topLeft[0] + entireRowVector[0],\n// topLeft[1] + entireRowVector[1],\n// topLeft[2] + entireRowVector[2]\n// ];\n// const bottomLeft = [\n// topLeft[0] + entireColumnVector[0],\n// topLeft[1] + entireColumnVector[1],\n// topLeft[2] + entireColumnVector[2]\n// ];\n\n// const bottomRight = [\n// bottomLeft[0] + entireRowVector[0],\n// bottomLeft[1] + entireRowVector[1],\n// bottomLeft[2] + entireRowVector[2]\n// ];\n\n// return [topLeft, topRight, bottomLeft, bottomRight];\n// }\n\n/**\n * Find the reference frame of the segmentation frame in the source data.\n *\n * @param {Object} multiframe dicom metadata\n * @param {Int} frameSegment frame dicom index\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUID to imageId\n * @param {Float} tolerance The tolerance parameter\n *\n * @returns {String} Returns the imageId\n */\nfunction findReferenceSourceImageId(\n multiframe,\n frameSegment,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n) {\n let imageId = undefined;\n\n if (!multiframe) {\n return imageId;\n }\n\n const {\n FrameOfReferenceUID,\n PerFrameFunctionalGroupsSequence,\n SourceImageSequence,\n ReferencedSeriesSequence\n } = multiframe;\n\n if (\n !PerFrameFunctionalGroupsSequence ||\n PerFrameFunctionalGroupsSequence.length === 0\n ) {\n return imageId;\n }\n\n const PerFrameFunctionalGroup =\n PerFrameFunctionalGroupsSequence[frameSegment];\n\n if (!PerFrameFunctionalGroup) {\n return imageId;\n }\n\n let frameSourceImageSequence = undefined;\n if (PerFrameFunctionalGroup.DerivationImageSequence) {\n let DerivationImageSequence =\n PerFrameFunctionalGroup.DerivationImageSequence;\n if (Array.isArray(DerivationImageSequence)) {\n if (DerivationImageSequence.length !== 0) {\n DerivationImageSequence = DerivationImageSequence[0];\n } else {\n DerivationImageSequence = undefined;\n }\n }\n\n if (DerivationImageSequence) {\n frameSourceImageSequence =\n DerivationImageSequence.SourceImageSequence;\n if (Array.isArray(frameSourceImageSequence)) {\n if (frameSourceImageSequence.length !== 0) {\n frameSourceImageSequence = frameSourceImageSequence[0];\n } else {\n frameSourceImageSequence = undefined;\n }\n }\n }\n } else if (SourceImageSequence && SourceImageSequence.length !== 0) {\n console.warn(\n \"DerivationImageSequence not present, using SourceImageSequence assuming SEG has the same geometry as the source image.\"\n );\n frameSourceImageSequence = SourceImageSequence[frameSegment];\n }\n\n if (frameSourceImageSequence) {\n imageId = getImageIdOfSourceImageBySourceImageSequence(\n frameSourceImageSequence,\n sopUIDImageIdIndexMap\n );\n }\n\n if (imageId === undefined && ReferencedSeriesSequence) {\n const referencedSeriesSequence = Array.isArray(ReferencedSeriesSequence)\n ? ReferencedSeriesSequence[0]\n : ReferencedSeriesSequence;\n const ReferencedSeriesInstanceUID =\n referencedSeriesSequence.SeriesInstanceUID;\n\n imageId = getImageIdOfSourceImagebyGeometry(\n ReferencedSeriesInstanceUID,\n FrameOfReferenceUID,\n PerFrameFunctionalGroup,\n imageIds,\n metadataProvider,\n tolerance\n );\n }\n\n return imageId;\n}\n\n/**\n * Checks if there is any overlapping segmentations.\n * @returns {boolean} Returns a flag if segmentations overlapping\n */\n\nfunction checkSEGsOverlapping(\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n sopUIDImageIdIndexMap\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n SegmentSequence,\n Rows,\n Columns\n } = multiframe;\n\n let numberOfSegs = SegmentSequence.length;\n if (numberOfSegs < 2) {\n return false;\n }\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n const groupsLen = PerFrameFunctionalGroupsSequence.length;\n\n /** sort groupsLen to have all the segments for each frame in an array\n * frame 2 : 1, 2\n * frame 4 : 1, 3\n * frame 5 : 4\n */\n\n let frameSegmentsMapping = new Map();\n for (let frameSegment = 0; frameSegment < groupsLen; ++frameSegment) {\n const segmentIndex = getSegmentIndex(multiframe, frameSegment);\n if (segmentIndex === undefined) {\n console.warn(\n \"Could not retrieve the segment index for frame segment \" +\n frameSegment +\n \", skipping this frame.\"\n );\n continue;\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n frameSegment,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n frameSegment +\n \".\"\n );\n continue;\n }\n\n const imageIdIndex = imageIds.findIndex(element => element === imageId);\n\n if (frameSegmentsMapping.has(imageIdIndex)) {\n let segmentArray = frameSegmentsMapping.get(imageIdIndex);\n if (!segmentArray.includes(frameSegment)) {\n segmentArray.push(frameSegment);\n frameSegmentsMapping.set(imageIdIndex, segmentArray);\n }\n } else {\n frameSegmentsMapping.set(imageIdIndex, [frameSegment]);\n }\n }\n\n for (let [, role] of frameSegmentsMapping.entries()) {\n let temp2DArray = new TypedArrayConstructor(sliceLength).fill(0);\n\n for (let i = 0; i < role.length; ++i) {\n const frameSegment = role[i];\n\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[frameSegment];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const view = readFromUnpackedChunks(\n pixelData,\n frameSegment * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n console.warn(\n \"Individual SEG frames are out of plane with respect to the first SEG frame, this is not yet supported, skipping this frame.\"\n );\n continue;\n }\n\n const data = alignedPixelDataI.data;\n for (let j = 0, len = data.length; j < len; ++j) {\n if (data[j] !== 0) {\n temp2DArray[j]++;\n if (temp2DArray[j] > 1) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n}\n\nfunction insertOverlappingPixelDataPlanar(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n Rows,\n Columns\n } = multiframe;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n const arrayBufferLength =\n sliceLength * imageIds.length * TypedArrayConstructor.BYTES_PER_ELEMENT;\n // indicate the number of labelMaps\n let M = 1;\n\n // indicate the current labelMap array index;\n let m = 0;\n\n // temp array for checking overlaps\n let tempBuffer = labelmapBufferArray[m].slice(0);\n\n // temp list for checking overlaps\n let tempSegmentsOnFrame = cloneDeep(segmentsOnFrameArray[m]);\n\n /** split overlapping SEGs algorithm for each segment:\n * A) copy the labelmapBuffer in the array with index 0\n * B) add the segment pixel per pixel on the copied buffer from (A)\n * C) if no overlap, copy the results back on the orignal array from (A)\n * D) if overlap, repeat increasing the index m up to M (if out of memory, add new buffer in the array and M++);\n */\n\n let numberOfSegs = multiframe.SegmentSequence.length;\n for (\n let segmentIndexToProcess = 1;\n segmentIndexToProcess <= numberOfSegs;\n ++segmentIndexToProcess\n ) {\n for (\n let i = 0, groupsLen = PerFrameFunctionalGroupsSequence.length;\n i < groupsLen;\n ++i\n ) {\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[i];\n\n const segmentIndex = getSegmentIndex(multiframe, i);\n if (segmentIndex === undefined) {\n throw new Error(\n \"Could not retrieve the segment index. Aborting segmentation loading.\"\n );\n }\n\n if (segmentIndex !== segmentIndexToProcess) {\n continue;\n }\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n // Since we moved to the chunks approach, we need to read the data\n // and handle scenarios where the portion of data is in one chunk\n // and the other portion is in another chunk\n const view = readFromUnpackedChunks(\n pixelData,\n i * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n throw new Error(\n \"Individual SEG frames are out of plane with respect to the first SEG frame. \" +\n \"This is not yet supported. Aborting segmentation loading.\"\n );\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n i,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n i +\n \".\"\n );\n continue;\n }\n\n const sourceImageMetadata = metadataProvider.get(\n \"instance\",\n imageId\n );\n if (\n Rows !== sourceImageMetadata.Rows ||\n Columns !== sourceImageMetadata.Columns\n ) {\n throw new Error(\n \"Individual SEG frames have different geometry dimensions (Rows and Columns) \" +\n \"respect to the source image reference frame. This is not yet supported. \" +\n \"Aborting segmentation loading. \"\n );\n }\n\n const imageIdIndex = imageIds.findIndex(\n element => element === imageId\n );\n const byteOffset =\n sliceLength *\n imageIdIndex *\n TypedArrayConstructor.BYTES_PER_ELEMENT;\n\n const labelmap2DView = new TypedArrayConstructor(\n tempBuffer,\n byteOffset,\n sliceLength\n );\n\n const data = alignedPixelDataI.data;\n\n let segmentOnFrame = false;\n for (let j = 0, len = alignedPixelDataI.data.length; j < len; ++j) {\n if (data[j]) {\n if (labelmap2DView[j] !== 0) {\n m++;\n if (m >= M) {\n labelmapBufferArray[m] = new ArrayBuffer(\n arrayBufferLength\n );\n segmentsOnFrameArray[m] = [];\n M++;\n }\n tempBuffer = labelmapBufferArray[m].slice(0);\n tempSegmentsOnFrame = cloneDeep(\n segmentsOnFrameArray[m]\n );\n\n i = 0;\n break;\n } else {\n labelmap2DView[j] = segmentIndex;\n segmentOnFrame = true;\n }\n }\n }\n\n if (segmentOnFrame) {\n if (!tempSegmentsOnFrame[imageIdIndex]) {\n tempSegmentsOnFrame[imageIdIndex] = [];\n }\n\n tempSegmentsOnFrame[imageIdIndex].push(segmentIndex);\n\n if (!segmentsOnFrame[imageIdIndex]) {\n segmentsOnFrame[imageIdIndex] = [];\n }\n\n segmentsOnFrame[imageIdIndex].push(segmentIndex);\n }\n }\n\n labelmapBufferArray[m] = tempBuffer.slice(0);\n segmentsOnFrameArray[m] = cloneDeep(tempSegmentsOnFrame);\n\n // reset temp variables/buffers for new segment\n m = 0;\n tempBuffer = labelmapBufferArray[m].slice(0);\n tempSegmentsOnFrame = cloneDeep(segmentsOnFrameArray[m]);\n }\n}\n\nconst getSegmentIndex = (multiframe, frame) => {\n const { PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence } =\n multiframe;\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[frame];\n return PerFrameFunctionalGroups &&\n PerFrameFunctionalGroups.SegmentIdentificationSequence\n ? PerFrameFunctionalGroups.SegmentIdentificationSequence\n .ReferencedSegmentNumber\n : SharedFunctionalGroupsSequence.SegmentIdentificationSequence\n ? SharedFunctionalGroupsSequence.SegmentIdentificationSequence\n .ReferencedSegmentNumber\n : undefined;\n};\n\nfunction insertPixelDataPlanar(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap,\n imageIdMaps,\n eventTarget,\n triggerEvent\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n Rows,\n Columns\n } = multiframe;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n\n let i = 0;\n const groupsLen = PerFrameFunctionalGroupsSequence.length;\n const chunkSize = Math.ceil(groupsLen / 10); // 10% of total length\n\n const shouldTriggerEvent = triggerEvent && eventTarget;\n\n // Below, we chunk the processing of the frames to avoid blocking the main thread\n // if the segmentation is large. We also use a promise to allow the caller to\n // wait for the processing to finish.\n return new Promise(resolve => {\n function processInChunks() {\n // process one chunk\n for (let end = Math.min(i + chunkSize, groupsLen); i < end; ++i) {\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[i];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const view = readFromUnpackedChunks(\n pixelData,\n i * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n throw new Error(\n \"Individual SEG frames are out of plane with respect to the first SEG frame. \" +\n \"This is not yet supported. Aborting segmentation loading.\"\n );\n }\n\n const segmentIndex = getSegmentIndex(multiframe, i);\n\n if (segmentIndex === undefined) {\n throw new Error(\n \"Could not retrieve the segment index. Aborting segmentation loading.\"\n );\n }\n\n if (!segmentsPixelIndices.has(segmentIndex)) {\n segmentsPixelIndices.set(segmentIndex, {});\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n i,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n i +\n \".\"\n );\n continue;\n }\n\n const sourceImageMetadata = imageIdMaps.metadata[imageId];\n if (\n Rows !== sourceImageMetadata.Rows ||\n Columns !== sourceImageMetadata.Columns\n ) {\n throw new Error(\n \"Individual SEG frames have different geometry dimensions (Rows and Columns) \" +\n \"respect to the source image reference frame. This is not yet supported. \" +\n \"Aborting segmentation loading. \"\n );\n }\n\n const imageIdIndex = imageIdMaps.indices[imageId];\n\n const byteOffset =\n sliceLength *\n imageIdIndex *\n TypedArrayConstructor.BYTES_PER_ELEMENT;\n\n const labelmap2DView = new TypedArrayConstructor(\n labelmapBufferArray[0],\n byteOffset,\n sliceLength\n );\n\n const data = alignedPixelDataI.data;\n\n const indexCache = [];\n for (\n let j = 0, len = alignedPixelDataI.data.length;\n j < len;\n ++j\n ) {\n if (data[j]) {\n for (let x = j; x < len; ++x) {\n if (data[x]) {\n labelmap2DView[x] = segmentIndex;\n indexCache.push(x);\n }\n }\n\n if (!segmentsOnFrame[imageIdIndex]) {\n segmentsOnFrame[imageIdIndex] = [];\n }\n\n segmentsOnFrame[imageIdIndex].push(segmentIndex);\n\n break;\n }\n }\n\n const segmentIndexObject =\n segmentsPixelIndices.get(segmentIndex);\n segmentIndexObject[imageIdIndex] = indexCache;\n segmentsPixelIndices.set(segmentIndex, segmentIndexObject);\n }\n\n // trigger an event after each chunk\n if (shouldTriggerEvent) {\n const percentComplete = Math.round((i / groupsLen) * 100);\n triggerEvent(eventTarget, Events.SEGMENTATION_LOAD_PROGRESS, {\n percentComplete\n });\n }\n\n // schedule next chunk\n if (i < groupsLen) {\n setTimeout(processInChunks, 0);\n } else {\n // resolve the Promise when all chunks have been processed\n resolve();\n }\n }\n\n processInChunks();\n });\n}\n\nfunction checkOrientation(\n multiframe,\n validOrientations,\n sourceDataDimensions,\n tolerance\n) {\n const { SharedFunctionalGroupsSequence, PerFrameFunctionalGroupsSequence } =\n multiframe;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n\n // Check if in plane.\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[0];\n\n const iop =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const inPlane = validOrientations.some(operation =>\n compareArrays(iop, operation, tolerance)\n );\n\n if (inPlane) {\n return \"Planar\";\n }\n\n if (\n checkIfPerpendicular(iop, validOrientations[0], tolerance) &&\n sourceDataDimensions.includes(multiframe.Rows) &&\n sourceDataDimensions.includes(multiframe.Columns)\n ) {\n // Perpendicular and fits on same grid.\n return \"Perpendicular\";\n }\n\n return \"Oblique\";\n}\n\n/**\n * checkIfPerpendicular - Returns true if iop1 and iop2 are perpendicular\n * within a tolerance.\n *\n * @param {Number[6]} iop1 An ImageOrientationPatient array.\n * @param {Number[6]} iop2 An ImageOrientationPatient array.\n * @param {Number} tolerance.\n * @return {Boolean} True if iop1 and iop2 are equal.\n */\nfunction checkIfPerpendicular(iop1, iop2, tolerance) {\n const absDotColumnCosines = Math.abs(\n iop1[0] * iop2[0] + iop1[1] * iop2[1] + iop1[2] * iop2[2]\n );\n const absDotRowCosines = Math.abs(\n iop1[3] * iop2[3] + iop1[4] * iop2[4] + iop1[5] * iop2[5]\n );\n\n return (\n (absDotColumnCosines < tolerance ||\n Math.abs(absDotColumnCosines - 1) < tolerance) &&\n (absDotRowCosines < tolerance ||\n Math.abs(absDotRowCosines - 1) < tolerance)\n );\n}\n\n/**\n * unpackPixelData - Unpacks bit packed pixelData if the Segmentation is BINARY.\n *\n * @param {Object} multiframe The multiframe dataset.\n * @param {Object} options Options for the unpacking.\n * @return {Uint8Array} The unpacked pixelData.\n */\nfunction unpackPixelData(multiframe, options) {\n const segType = multiframe.SegmentationType;\n\n let data;\n if (Array.isArray(multiframe.PixelData)) {\n data = multiframe.PixelData[0];\n } else {\n data = multiframe.PixelData;\n }\n\n if (data === undefined) {\n log.error(\"This segmentation pixeldata is undefined.\");\n }\n\n if (segType === \"BINARY\") {\n // For extreme big data, we can't unpack the data at once and we need to\n // chunk it and unpack each chunk separately.\n // MAX 2GB is the limit right now to allocate a buffer\n return getUnpackedChunks(data, options.maxBytesPerChunk);\n }\n\n const pixelData = new Uint8Array(data);\n\n const max = multiframe.MaximumFractionalValue;\n const onlyMaxAndZero =\n pixelData.find(element => element !== 0 && element !== max) ===\n undefined;\n\n if (!onlyMaxAndZero) {\n // This is a fractional segmentation, which is not currently supported.\n return;\n }\n\n log.warn(\n \"This segmentation object is actually binary... processing as such.\"\n );\n\n return pixelData;\n}\n\nfunction getUnpackedChunks(data, maxBytesPerChunk) {\n var bitArray = new Uint8Array(data);\n var chunks = [];\n\n var maxBitsPerChunk = maxBytesPerChunk * 8;\n var numberOfChunks = Math.ceil((bitArray.length * 8) / maxBitsPerChunk);\n\n for (var i = 0; i < numberOfChunks; i++) {\n var startBit = i * maxBitsPerChunk;\n var endBit = Math.min(startBit + maxBitsPerChunk, bitArray.length * 8);\n\n var startByte = Math.floor(startBit / 8);\n var endByte = Math.ceil(endBit / 8);\n\n var chunk = bitArray.slice(startByte, endByte);\n var unpackedChunk = BitArray.unpack(chunk);\n\n chunks.push(unpackedChunk);\n }\n\n return chunks;\n}\n\n/**\n * getImageIdOfSourceImageBySourceImageSequence - Returns the Cornerstone imageId of the source image.\n *\n * @param {Object} SourceImageSequence Sequence describing the source image.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImageBySourceImageSequence(\n SourceImageSequence,\n sopUIDImageIdIndexMap\n) {\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n SourceImageSequence;\n\n return ReferencedFrameNumber\n ? getImageIdOfReferencedFrame(\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber,\n sopUIDImageIdIndexMap\n )\n : sopUIDImageIdIndexMap[ReferencedSOPInstanceUID];\n}\n\n/**\n * getImageIdOfSourceImagebyGeometry - Returns the Cornerstone imageId of the source image.\n *\n * @param {String} ReferencedSeriesInstanceUID Referenced series of the source image.\n * @param {String} FrameOfReferenceUID Frame of reference.\n * @param {Object} PerFrameFunctionalGroup Sequence describing segmentation reference attributes per frame.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @param {Float} tolerance The tolerance parameter\n *\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImagebyGeometry(\n ReferencedSeriesInstanceUID,\n FrameOfReferenceUID,\n PerFrameFunctionalGroup,\n imageIds,\n metadataProvider,\n tolerance\n) {\n if (\n ReferencedSeriesInstanceUID === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence[0] === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence[0]\n .ImagePositionPatient === undefined\n ) {\n return undefined;\n }\n\n for (\n let imageIdsIndexc = 0;\n imageIdsIndexc < imageIds.length;\n ++imageIdsIndexc\n ) {\n const sourceImageMetadata = metadataProvider.get(\n \"instance\",\n imageIds[imageIdsIndexc]\n );\n\n if (\n sourceImageMetadata === undefined ||\n sourceImageMetadata.ImagePositionPatient === undefined ||\n sourceImageMetadata.FrameOfReferenceUID !== FrameOfReferenceUID ||\n sourceImageMetadata.SeriesInstanceUID !==\n ReferencedSeriesInstanceUID\n ) {\n continue;\n }\n\n if (\n compareArrays(\n PerFrameFunctionalGroup.PlanePositionSequence[0]\n .ImagePositionPatient,\n sourceImageMetadata.ImagePositionPatient,\n tolerance\n )\n ) {\n return imageIds[imageIdsIndexc];\n }\n }\n}\n\n/**\n * getImageIdOfReferencedFrame - Returns the imageId corresponding to the\n * specified sopInstanceUid and frameNumber for multi-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {Number} frameNumber The frame number.\n * @param {String} imageIds The list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedFrame(\n sopInstanceUid,\n frameNumber,\n sopUIDImageIdIndexMap\n) {\n const imageId = sopUIDImageIdIndexMap[sopInstanceUid];\n\n if (!imageId) {\n return;\n }\n\n const imageIdFrameNumber = Number(imageId.split(\"frame=\")[1]);\n\n return imageIdFrameNumber === frameNumber - 1 ? imageId : undefined;\n}\n\n/**\n * getValidOrientations - returns an array of valid orientations.\n *\n * @param {Number[6]} iop The row (0..2) an column (3..5) direction cosines.\n * @return {Number[8][6]} An array of valid orientations.\n */\nfunction getValidOrientations(iop) {\n const orientations = [];\n\n // [0, 1, 2]: 0, 0hf, 0vf\n // [3, 4, 5]: 90, 90hf, 90vf\n // [6, 7]: 180, 270\n\n orientations[0] = iop;\n orientations[1] = flipIOP.h(iop);\n orientations[2] = flipIOP.v(iop);\n\n const iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2);\n\n orientations[3] = iop90;\n orientations[4] = flipIOP.h(iop90);\n orientations[5] = flipIOP.v(iop90);\n\n orientations[6] = rotateDirectionCosinesInPlane(iop, Math.PI);\n orientations[7] = rotateDirectionCosinesInPlane(iop, 1.5 * Math.PI);\n\n return orientations;\n}\n\n/**\n * alignPixelDataWithSourceData -\n *\n * @param {Ndarray} pixelData2D - The data to align.\n * @param {Number[6]} iop - The orientation of the image slice.\n * @param {Number[8][6]} orientations - An array of valid imageOrientationPatient values.\n * @param {Number} tolerance.\n * @return {Ndarray} The aligned pixelData.\n */\nfunction alignPixelDataWithSourceData(\n pixelData2D,\n iop,\n orientations,\n tolerance\n) {\n if (compareArrays(iop, orientations[0], tolerance)) {\n return pixelData2D;\n } else if (compareArrays(iop, orientations[1], tolerance)) {\n // Flipped vertically.\n\n // Undo Flip\n return flipMatrix2D.v(pixelData2D);\n } else if (compareArrays(iop, orientations[2], tolerance)) {\n // Flipped horizontally.\n\n // Unfo flip\n return flipMatrix2D.h(pixelData2D);\n } else if (compareArrays(iop, orientations[3], tolerance)) {\n //Rotated 90 degrees\n\n // Rotate back\n return rotateMatrix902D(pixelData2D);\n } else if (compareArrays(iop, orientations[4], tolerance)) {\n //Rotated 90 degrees and fliped horizontally.\n\n // Undo flip and rotate back.\n return rotateMatrix902D(flipMatrix2D.h(pixelData2D));\n } else if (compareArrays(iop, orientations[5], tolerance)) {\n // Rotated 90 degrees and fliped vertically\n\n // Unfo flip and rotate back.\n return rotateMatrix902D(flipMatrix2D.v(pixelData2D));\n } else if (compareArrays(iop, orientations[6], tolerance)) {\n // Rotated 180 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n\n return rotateMatrix902D(rotateMatrix902D(pixelData2D));\n } else if (compareArrays(iop, orientations[7], tolerance)) {\n // Rotated 270 degrees\n\n // Rotate back.\n return rotateMatrix902D(\n rotateMatrix902D(rotateMatrix902D(pixelData2D))\n );\n }\n}\n\n/**\n * compareArrays - Returns true if array1 and array2 are equal\n * within a tolerance.\n *\n * @param {Number[]} array1 - An array.\n * @param {Number[]} array2 - An array.\n * @param {Number} tolerance.\n * @return {Boolean} True if array1 and array2 are equal.\n */\nfunction compareArrays(array1, array2, tolerance) {\n if (array1.length != array2.length) {\n return false;\n }\n\n for (let i = 0; i < array1.length; ++i) {\n if (!nearlyEqual(array1[i], array2[i], tolerance)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getSegmentMetadata(multiframe, seriesInstanceUid) {\n const segmentSequence = multiframe.SegmentSequence;\n let data = [];\n\n if (Array.isArray(segmentSequence)) {\n data = [undefined, ...segmentSequence];\n } else {\n // Only one segment, will be stored as an object.\n data = [undefined, segmentSequence];\n }\n\n return {\n seriesInstanceUid,\n data\n };\n}\n\n/**\n * Reads a range of bytes from an array of ArrayBuffer chunks and\n * aggregate them into a new Uint8Array.\n *\n * @param {ArrayBuffer[]} chunks - An array of ArrayBuffer chunks.\n * @param {number} offset - The offset of the first byte to read.\n * @param {number} length - The number of bytes to read.\n * @returns {Uint8Array} A new Uint8Array containing the requested bytes.\n */\nfunction readFromUnpackedChunks(chunks, offset, length) {\n const mapping = getUnpackedOffsetAndLength(chunks, offset, length);\n\n // If all the data is in one chunk, we can just slice that chunk\n if (mapping.start.chunkIndex === mapping.end.chunkIndex) {\n return new Uint8Array(\n chunks[mapping.start.chunkIndex].buffer,\n mapping.start.offset,\n length\n );\n } else {\n // If the data spans multiple chunks, we need to create a new Uint8Array and copy the data from each chunk\n let result = new Uint8Array(length);\n let resultOffset = 0;\n\n for (\n let i = mapping.start.chunkIndex;\n i <= mapping.end.chunkIndex;\n i++\n ) {\n let start =\n i === mapping.start.chunkIndex ? mapping.start.offset : 0;\n let end =\n i === mapping.end.chunkIndex\n ? mapping.end.offset\n : chunks[i].length;\n\n result.set(\n new Uint8Array(chunks[i].buffer, start, end - start),\n resultOffset\n );\n resultOffset += end - start;\n }\n\n return result;\n }\n}\n\nfunction getUnpackedOffsetAndLength(chunks, offset, length) {\n var totalBytes = chunks.reduce((total, chunk) => total + chunk.length, 0);\n\n if (offset < 0 || offset + length > totalBytes) {\n throw new Error(\"Offset and length out of bounds\");\n }\n\n var startChunkIndex = 0;\n var startOffsetInChunk = offset;\n\n while (startOffsetInChunk >= chunks[startChunkIndex].length) {\n startOffsetInChunk -= chunks[startChunkIndex].length;\n startChunkIndex++;\n }\n\n var endChunkIndex = startChunkIndex;\n var endOffsetInChunk = startOffsetInChunk + length;\n\n while (endOffsetInChunk > chunks[endChunkIndex].length) {\n endOffsetInChunk -= chunks[endChunkIndex].length;\n endChunkIndex++;\n }\n\n return {\n start: { chunkIndex: startChunkIndex, offset: startOffsetInChunk },\n end: { chunkIndex: endChunkIndex, offset: endOffsetInChunk }\n };\n}\n\nfunction calculateCentroid(imageIdIndexBufferIndex, multiframe) {\n let xAcc = 0;\n let yAcc = 0;\n let zAcc = 0;\n let count = 0;\n\n for (const [imageIdIndex, bufferIndices] of Object.entries(\n imageIdIndexBufferIndex\n )) {\n const z = Number(imageIdIndex);\n\n if (!bufferIndices || bufferIndices.length === 0) {\n continue;\n }\n\n for (const bufferIndex of bufferIndices) {\n const y = Math.floor(bufferIndex / multiframe.Rows);\n const x = bufferIndex % multiframe.Rows;\n\n xAcc += x;\n yAcc += y;\n zAcc += z;\n\n count++;\n }\n }\n\n return { xAcc, yAcc, zAcc, count };\n}\n\nconst Segmentation = {\n generateSegmentation,\n generateToolState,\n fillSegmentation\n};\n\nexport default Segmentation;\nexport { fillSegmentation, generateSegmentation, generateToolState };\n","import Segmentation_3X from \"./Segmentation_3X\";\nimport Segmentation_4X from \"./Segmentation_4X\";\n\nconst Segmentation = {\n generateSegmentation,\n generateToolState,\n fillSegmentation\n};\n\nexport default Segmentation;\n\n/**\n * generateSegmentation - Generates a DICOM Segmentation object given cornerstoneTools data.\n *\n * @param {object[]} images An array of the cornerstone image objects.\n * @param {Object|Object[]} labelmaps3DorBrushData For 4.X: The cornerstone `Labelmap3D` object, or an array of objects.\n * For 3.X: the BrushData.\n * @param {number} cornerstoneToolsVersion The cornerstoneTools major version to map against.\n * @returns {Object}\n */\nfunction generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options = { includeSliceSpacing: true },\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options\n );\n }\n\n if (cornerstoneToolsVersion === 3) {\n return Segmentation_3X.generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options\n );\n }\n\n console.warn(\n `No generateSegmentation adapater for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n\n/**\n * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer The SEG arrayBuffer.\n * @param {*} metadataProvider\n * @param {bool} skipOverlapping - skip checks for overlapping segs, default value false.\n * @param {number} tolerance - default value 1.e-3.\n * @param {number} cornerstoneToolsVersion - default value 4.\n *\n * @returns {Object} The toolState and an object from which the\n * segment metadata can be derived.\n */\nfunction generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping = false,\n tolerance = 1e-3,\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping,\n tolerance\n );\n }\n\n if (cornerstoneToolsVersion === 3) {\n return Segmentation_3X.generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider\n );\n }\n\n console.warn(\n `No generateToolState adapater for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n\n/**\n * fillSegmentation - Fills a derived segmentation dataset with cornerstoneTools `LabelMap3D` data.\n *\n * @param {object[]} segmentation An empty segmentation derived dataset.\n * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects.\n * @param {Object} userOptions Options object to override default options.\n * @returns {Blob} description\n */\nfunction fillSegmentation(\n segmentation,\n inputLabelmaps3D,\n options = { includeSliceSpacing: true },\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.fillSegmentation(\n segmentation,\n inputLabelmaps3D,\n options\n );\n }\n\n console.warn(\n `No generateSegmentation adapater for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n","import MeasurementReport from \"./MeasurementReport\";\nimport Length from \"./Length\";\nimport FreehandRoi from \"./FreehandRoi\";\nimport Bidirectional from \"./Bidirectional\";\nimport EllipticalRoi from \"./EllipticalRoi\";\nimport CircleRoi from \"./CircleRoi\";\nimport ArrowAnnotate from \"./ArrowAnnotate\";\nimport CobbAngle from \"./CobbAngle\";\nimport Angle from \"./Angle\";\nimport RectangleRoi from \"./RectangleRoi\";\n// Segmentation\nimport Segmentation from \"./Segmentation\";\n\nconst CornerstoneSR = {\n Length,\n FreehandRoi,\n Bidirectional,\n EllipticalRoi,\n CircleRoi,\n ArrowAnnotate,\n MeasurementReport,\n CobbAngle,\n Angle,\n RectangleRoi\n};\n\nconst CornerstoneSEG = {\n Segmentation\n};\n\nexport { CornerstoneSR, CornerstoneSEG };\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","export default \"Cornerstone3DTools@^0.1.0\";\n","// This is a custom coding scheme defined to store some annotations from Cornerstone.\n// Note: CodeMeaning is VR type LO, which means we only actually support 64 characters\n// here this is fine for most labels, but may be problematic at some point.\nconst CORNERSTONEFREETEXT = \"CORNERSTONEFREETEXT\";\n\n// Cornerstone specified coding scheme for storing findings\nconst CodingSchemeDesignator = \"CORNERSTONEJS\";\n\nconst CodingScheme = {\n CodingSchemeDesignator,\n codeValues: {\n CORNERSTONEFREETEXT\n }\n};\n\nexport default CodingScheme;\n","import { normalizers, data, utilities, derivations } from \"dcmjs\";\n\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport { toArray, codeMeaningEquals } from \"../helpers\";\nimport Cornerstone3DCodingScheme from \"./CodingScheme\";\n\nconst { TID1500, addAccessors } = utilities;\n\nconst { StructuredReport } = derivations;\n\nconst { Normalizer } = normalizers;\n\nconst { TID1500MeasurementReport, TID1501MeasurementGroup } = TID1500;\n\nconst { DicomMetaDictionary } = data;\n\nconst FINDING = { CodingSchemeDesignator: \"DCM\", CodeValue: \"121071\" };\nconst FINDING_SITE = { CodingSchemeDesignator: \"SCT\", CodeValue: \"363698007\" };\nconst FINDING_SITE_OLD = { CodingSchemeDesignator: \"SRT\", CodeValue: \"G-C0E3\" };\n\nconst codeValueMatch = (group, code, oldCode?) => {\n const { ConceptNameCodeSequence } = group;\n if (!ConceptNameCodeSequence) return;\n const { CodingSchemeDesignator, CodeValue } = ConceptNameCodeSequence;\n return (\n (CodingSchemeDesignator == code.CodingSchemeDesignator &&\n CodeValue == code.CodeValue) ||\n (oldCode &&\n CodingSchemeDesignator == oldCode.CodingSchemeDesignator &&\n CodeValue == oldCode.CodeValue)\n );\n};\n\nfunction getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass,\n worldToImageCoords\n) {\n const args = toolClass.getTID300RepresentationArguments(\n tool,\n worldToImageCoords\n );\n args.ReferencedSOPSequence = ReferencedSOPSequence;\n\n const TID300Measurement = new toolClass.TID300Representation(args);\n\n return TID300Measurement;\n}\n\nfunction getMeasurementGroup(\n toolType,\n toolData,\n ReferencedSOPSequence,\n worldToImageCoords\n) {\n const toolTypeData = toolData[toolType];\n const toolClass =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolType];\n if (\n !toolTypeData ||\n !toolTypeData.data ||\n !toolTypeData.data.length ||\n !toolClass\n ) {\n return;\n }\n\n // Loop through the array of tool instances\n // for this tool\n const Measurements = toolTypeData.data.map(tool => {\n return getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass,\n worldToImageCoords\n );\n });\n\n return new TID1501MeasurementGroup(Measurements);\n}\n\nexport default class MeasurementReport {\n public static CORNERSTONE_3D_TAG = CORNERSTONE_3D_TAG;\n public static MEASUREMENT_BY_TOOLTYPE = {};\n public static CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE = {};\n public static CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE = {};\n\n static getCornerstoneLabelFromDefaultState(defaultState) {\n const { findingSites = [], finding } = defaultState;\n\n const cornersoneFreeTextCodingValue =\n Cornerstone3DCodingScheme.codeValues.CORNERSTONEFREETEXT;\n\n const freeTextLabel = findingSites.find(\n fs => fs.CodeValue === cornersoneFreeTextCodingValue\n );\n\n if (freeTextLabel) {\n return freeTextLabel.CodeMeaning;\n }\n\n if (finding && finding.CodeValue === cornersoneFreeTextCodingValue) {\n return finding.CodeMeaning;\n }\n }\n\n static generateDatasetMeta() {\n // TODO: what is the correct metaheader\n // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html\n // TODO: move meta creation to happen in derivations.js\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n //MediaStorageSOPClassUID\n //MediaStorageSOPInstanceUID: sopCommonModule.sopInstanceUID,\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n return _meta;\n }\n\n static generateDerivationSourceDataset = instance => {\n const _vrMap = {\n PixelData: \"OW\"\n };\n\n const _meta = MeasurementReport.generateDatasetMeta();\n\n const derivationSourceDataset = {\n ...instance,\n _meta: _meta,\n _vrMap: _vrMap\n };\n\n return derivationSourceDataset;\n };\n\n static getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n toolType\n ) {\n const { ContentSequence } = MeasurementGroup;\n\n const contentSequenceArr = toArray(ContentSequence);\n const findingGroup = contentSequenceArr.find(group =>\n codeValueMatch(group, FINDING)\n );\n const findingSiteGroups =\n contentSequenceArr.filter(group =>\n codeValueMatch(group, FINDING_SITE, FINDING_SITE_OLD)\n ) || [];\n const NUMGroup = contentSequenceArr.find(\n group => group.ValueType === \"NUM\"\n );\n const SCOORDGroup = toArray(NUMGroup.ContentSequence).find(\n group => group.ValueType === \"SCOORD\"\n );\n const { ReferencedSOPSequence } = SCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n ReferencedSOPSequence;\n\n const referencedImageId =\n sopInstanceUIDToImageIdMap[ReferencedSOPInstanceUID];\n const imagePlaneModule = metadata.get(\n \"imagePlaneModule\",\n referencedImageId\n );\n\n const finding = findingGroup\n ? addAccessors(findingGroup.ConceptCodeSequence)\n : undefined;\n const findingSites = findingSiteGroups.map(fsg => {\n return addAccessors(fsg.ConceptCodeSequence);\n });\n\n const defaultState = {\n description: undefined,\n sopInstanceUid: ReferencedSOPInstanceUID,\n annotation: {\n annotationUID: DicomMetaDictionary.uid(),\n metadata: {\n toolName: toolType,\n referencedImageId,\n FrameOfReferenceUID: imagePlaneModule.frameOfReferenceUID,\n label: \"\"\n },\n data: undefined\n },\n finding,\n findingSites\n };\n if (defaultState.finding) {\n defaultState.description = defaultState.finding.CodeMeaning;\n }\n\n defaultState.annotation.metadata.label =\n MeasurementReport.getCornerstoneLabelFromDefaultState(defaultState);\n\n return {\n defaultState,\n NUMGroup,\n SCOORDGroup,\n ReferencedSOPSequence,\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber\n };\n }\n\n static generateReport(\n toolState,\n metadataProvider,\n worldToImageCoords,\n options\n ) {\n // ToolState for array of imageIDs to a Report\n // Assume Cornerstone metadata provider has access to Study / Series / Sop Instance UID\n let allMeasurementGroups = [];\n\n /* Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Date\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Time\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study ID\n */\n\n const sopInstanceUIDsToSeriesInstanceUIDMap = {};\n const derivationSourceDatasets = [];\n\n const _meta = MeasurementReport.generateDatasetMeta();\n\n // Loop through each image in the toolData\n Object.keys(toolState).forEach(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n const instance = metadataProvider.get(\"instance\", imageId);\n\n const { sopInstanceUID, sopClassUID } = sopCommonModule;\n const { SeriesInstanceUID: seriesInstanceUID } = instance;\n\n sopInstanceUIDsToSeriesInstanceUIDMap[sopInstanceUID] =\n seriesInstanceUID;\n\n if (\n !derivationSourceDatasets.find(\n dsd => dsd.SeriesInstanceUID === seriesInstanceUID\n )\n ) {\n // Entry not present for series, create one.\n const derivationSourceDataset =\n MeasurementReport.generateDerivationSourceDataset(instance);\n\n derivationSourceDatasets.push(derivationSourceDataset);\n }\n\n const frameNumber = metadataProvider.get(\"frameNumber\", imageId);\n const toolData = toolState[imageId];\n const toolTypes = Object.keys(toolData);\n\n const ReferencedSOPSequence = {\n ReferencedSOPClassUID: sopClassUID,\n ReferencedSOPInstanceUID: sopInstanceUID,\n ReferencedFrameNumber: undefined\n };\n\n if (\n (instance &&\n instance.NumberOfFrames &&\n instance.NumberOfFrames > 1) ||\n Normalizer.isMultiframeSOPClassUID(sopClassUID)\n ) {\n ReferencedSOPSequence.ReferencedFrameNumber = frameNumber;\n }\n\n // Loop through each tool type for the image\n const measurementGroups = [];\n\n toolTypes.forEach(toolType => {\n const group = getMeasurementGroup(\n toolType,\n toolData,\n ReferencedSOPSequence,\n worldToImageCoords\n );\n if (group) {\n measurementGroups.push(group);\n }\n });\n\n allMeasurementGroups =\n allMeasurementGroups.concat(measurementGroups);\n });\n\n const tid1500MeasurementReport = new TID1500MeasurementReport(\n { TID1501MeasurementGroups: allMeasurementGroups },\n options\n );\n\n const report = new StructuredReport(derivationSourceDatasets, options);\n\n const contentItem = tid1500MeasurementReport.contentItem(\n derivationSourceDatasets,\n { ...options, sopInstanceUIDsToSeriesInstanceUIDMap }\n );\n\n // Merge the derived dataset with the content from the Measurement Report\n report.dataset = Object.assign(report.dataset, contentItem);\n report.dataset._meta = _meta;\n\n return report;\n }\n\n /**\n * Generate Cornerstone tool state from dataset\n */\n static generateToolState(\n dataset,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata,\n hooks\n ) {\n // For now, bail out if the dataset is not a TID1500 SR with length measurements\n if (dataset.ContentTemplateSequence.TemplateIdentifier !== \"1500\") {\n throw new Error(\n \"This package can currently only interpret DICOM SR TID 1500\"\n );\n }\n\n const REPORT = \"Imaging Measurements\";\n const GROUP = \"Measurement Group\";\n const TRACKING_IDENTIFIER = \"Tracking Identifier\";\n const TRACKING_UNIQUE_IDENTIFIER = \"Tracking Unique Identifier\";\n\n // Identify the Imaging Measurements\n const imagingMeasurementContent = toArray(dataset.ContentSequence).find(\n codeMeaningEquals(REPORT)\n );\n\n // Retrieve the Measurements themselves\n const measurementGroups = toArray(\n imagingMeasurementContent.ContentSequence\n ).filter(codeMeaningEquals(GROUP));\n\n // For each of the supported measurement types, compute the measurement data\n const measurementData = {};\n\n const cornerstoneToolClasses =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE;\n\n const registeredToolClasses = [];\n\n Object.keys(cornerstoneToolClasses).forEach(key => {\n registeredToolClasses.push(cornerstoneToolClasses[key]);\n measurementData[key] = [];\n });\n\n measurementGroups.forEach(measurementGroup => {\n try {\n const measurementGroupContentSequence = toArray(\n measurementGroup.ContentSequence\n );\n\n const TrackingIdentifierGroup =\n measurementGroupContentSequence.find(\n contentItem =>\n contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_IDENTIFIER\n );\n\n const TrackingIdentifierValue =\n TrackingIdentifierGroup.TextValue;\n\n const TrackingUniqueIdentifierGroup =\n measurementGroupContentSequence.find(\n contentItem =>\n contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_UNIQUE_IDENTIFIER\n );\n\n const TrackingUniqueIdentifierValue =\n TrackingUniqueIdentifierGroup?.UID;\n\n const toolClass =\n hooks?.getToolClass?.(\n measurementGroup,\n dataset,\n registeredToolClasses\n ) ||\n registeredToolClasses.find(tc =>\n tc.isValidCornerstoneTrackingIdentifier(\n TrackingIdentifierValue\n )\n );\n\n if (toolClass) {\n const measurement = toolClass.getMeasurementData(\n measurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n );\n\n measurement.TrackingUniqueIdentifier =\n TrackingUniqueIdentifierValue;\n\n console.log(`=== ${toolClass.toolType} ===`);\n console.log(measurement);\n\n measurementData[toolClass.toolType].push(measurement);\n }\n } catch (e) {\n console.warn(\n \"Unable to generate tool state for\",\n measurementGroup,\n e\n );\n }\n });\n\n // NOTE: There is no way of knowing the cornerstone imageIds as that could be anything.\n // That is up to the consumer to derive from the SOPInstanceUIDs.\n return measurementData;\n }\n\n /**\n * Register a new tool type.\n * @param toolClass to perform I/O to DICOM for this tool\n */\n public static registerTool(toolClass) {\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[\n toolClass.utilityToolType\n ] = toolClass;\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[\n toolClass.toolType\n ] = toolClass;\n MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.toolType] =\n toolClass.utilityToolType;\n }\n}\n","import MeasurementReport from \"./MeasurementReport\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport CodingScheme from \"./CodingScheme\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst ARROW_ANNOTATE = \"ArrowAnnotate\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${ARROW_ANNOTATE}`;\n\nconst { codeValues, CodingSchemeDesignator } = CodingScheme;\n\nclass ArrowAnnotate {\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n ArrowAnnotate.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const text = defaultState.annotation.metadata.label;\n\n const { GraphicData } = SCOORDGroup;\n\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n // Since the arrowAnnotate measurement is just a point, to generate the tool state\n // we derive the second point based on the image size relative to the first point.\n if (worldCoords.length === 1) {\n const imagePixelModule = metadata.get(\n \"imagePixelModule\",\n referencedImageId\n );\n\n let xOffset = 10;\n let yOffset = 10;\n\n if (imagePixelModule) {\n const { columns, rows } = imagePixelModule;\n xOffset = columns / 10;\n yOffset = rows / 10;\n }\n\n const secondPoint = imageToWorldCoords(referencedImageId, [\n GraphicData[0] + xOffset,\n GraphicData[1] + yOffset\n ]);\n\n worldCoords.push(secondPoint);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n text,\n handles: {\n arrowFirst: true,\n points: [worldCoords[0], worldCoords[1]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, metadata } = tool;\n let { finding, findingSites } = tool;\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"ArrowAnnotate.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const { points, arrowFirst } = data.handles;\n\n let point;\n\n if (arrowFirst) {\n point = points[0];\n } else {\n point = points[1];\n }\n\n const pointImage = worldToImageCoords(referencedImageId, point);\n\n const TID300RepresentationArguments = {\n points: [\n {\n x: pointImage[0],\n y: pointImage[1]\n }\n ],\n trackingIdentifierTextValue,\n findingSites: findingSites || []\n };\n\n // If freetext finding isn't present, add it from the tool text.\n if (!finding || finding.CodeValue !== codeValues.CORNERSTONEFREETEXT) {\n finding = {\n CodeValue: codeValues.CORNERSTONEFREETEXT,\n CodingSchemeDesignator,\n CodeMeaning: data.text\n };\n }\n\n TID300RepresentationArguments.finding = finding;\n\n return TID300RepresentationArguments;\n }\n}\n\nArrowAnnotate.toolType = ARROW_ANNOTATE;\nArrowAnnotate.utilityToolType = ARROW_ANNOTATE;\nArrowAnnotate.TID300Representation = TID300Point;\nArrowAnnotate.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === ARROW_ANNOTATE;\n};\n\nMeasurementReport.registerTool(ArrowAnnotate);\n\nexport default ArrowAnnotate;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport { toArray } from \"../helpers\";\n\nconst { Bidirectional: TID300Bidirectional } = utilities.TID300;\n\nconst BIDIRECTIONAL = \"Bidirectional\";\nconst LONG_AXIS = \"Long Axis\";\nconst SHORT_AXIS = \"Short Axis\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${BIDIRECTIONAL}`;\n\nclass Bidirectional {\n public static toolType = BIDIRECTIONAL;\n public static utilityToolType = BIDIRECTIONAL;\n public static TID300Representation = TID300Bidirectional;\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === BIDIRECTIONAL;\n };\n\n public static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Bidirectional.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n const { ContentSequence } = MeasurementGroup;\n\n const longAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS\n );\n\n const longAxisSCOORDGroup = toArray(\n longAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const shortAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS\n );\n\n const shortAxisSCOORDGroup = toArray(\n shortAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const worldCoords = [];\n\n [longAxisSCOORDGroup, shortAxisSCOORDGroup].forEach(group => {\n const { GraphicData } = group;\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n });\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[2],\n worldCoords[3]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n length: longAxisNUMGroup.MeasuredValueSequence.NumericValue,\n width: shortAxisNUMGroup.MeasuredValueSequence.NumericValue\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Bidirectional.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const { length, width } =\n cachedStats[`imageId:${referencedImageId}`] || {};\n const { points } = handles;\n\n // Find the length and width point pairs by comparing the distances of the points at 0,1 to points at 2,3\n const firstPointPairs = [points[0], points[1]];\n const secondPointPairs = [points[2], points[3]];\n\n const firstPointPairsDistance = Math.sqrt(\n Math.pow(firstPointPairs[0][0] - firstPointPairs[1][0], 2) +\n Math.pow(firstPointPairs[0][1] - firstPointPairs[1][1], 2) +\n Math.pow(firstPointPairs[0][2] - firstPointPairs[1][2], 2)\n );\n\n const secondPointPairsDistance = Math.sqrt(\n Math.pow(secondPointPairs[0][0] - secondPointPairs[1][0], 2) +\n Math.pow(secondPointPairs[0][1] - secondPointPairs[1][1], 2) +\n Math.pow(secondPointPairs[0][2] - secondPointPairs[1][2], 2)\n );\n\n let shortAxisPoints;\n let longAxisPoints;\n if (firstPointPairsDistance > secondPointPairsDistance) {\n shortAxisPoints = firstPointPairs;\n longAxisPoints = secondPointPairs;\n } else {\n shortAxisPoints = secondPointPairs;\n longAxisPoints = firstPointPairs;\n }\n\n const longAxisStartImage = worldToImageCoords(\n referencedImageId,\n shortAxisPoints[0]\n );\n const longAxisEndImage = worldToImageCoords(\n referencedImageId,\n shortAxisPoints[1]\n );\n const shortAxisStartImage = worldToImageCoords(\n referencedImageId,\n longAxisPoints[0]\n );\n const shortAxisEndImage = worldToImageCoords(\n referencedImageId,\n longAxisPoints[1]\n );\n\n return {\n longAxis: {\n point1: {\n x: longAxisStartImage[0],\n y: longAxisStartImage[1]\n },\n point2: {\n x: longAxisEndImage[0],\n y: longAxisEndImage[1]\n }\n },\n shortAxis: {\n point1: {\n x: shortAxisStartImage[0],\n y: shortAxisStartImage[1]\n },\n point2: {\n x: shortAxisEndImage[0],\n y: shortAxisEndImage[1]\n }\n },\n longAxisLength: length,\n shortAxisLength: width,\n trackingIdentifierTextValue,\n finding: finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(Bidirectional);\n\nexport default Bidirectional;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\n\nconst MEASUREMENT_TYPE = \"Angle\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${MEASUREMENT_TYPE}`;\n\nclass Angle {\n public static toolType = MEASUREMENT_TYPE;\n public static utilityToolType = MEASUREMENT_TYPE;\n public static TID300Representation = TID300CobbAngle;\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === MEASUREMENT_TYPE;\n };\n\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n public static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Angle.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [worldCoords[0], worldCoords[1], worldCoords[3]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n angle: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n public static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Angle.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const start1 = worldToImageCoords(referencedImageId, handles.points[0]);\n const middle = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const end = worldToImageCoords(referencedImageId, handles.points[2]);\n\n const point1 = { x: start1[0], y: start1[1] };\n const point2 = { x: middle[0], y: middle[1] };\n const point3 = point2;\n const point4 = { x: end[0], y: end[1] };\n\n const { angle } = cachedStats[`imageId:${referencedImageId}`] || {};\n\n // Represented as a cobb angle\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle: angle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(Angle);\n\nexport default Angle;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\n\nconst MEASUREMENT_TYPE = \"CobbAngle\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${MEASUREMENT_TYPE}`;\n\nclass CobbAngle {\n public static toolType = MEASUREMENT_TYPE;\n public static utilityToolType = MEASUREMENT_TYPE;\n public static TID300Representation = TID300CobbAngle;\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === MEASUREMENT_TYPE;\n };\n\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n public static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n CobbAngle.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[2],\n worldCoords[3]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n angle: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n public static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const start1 = worldToImageCoords(referencedImageId, handles.points[0]);\n const end1 = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const start2 = worldToImageCoords(referencedImageId, handles.points[2]);\n const end2 = worldToImageCoords(referencedImageId, handles.points[3]);\n\n const point1 = { x: start1[0], y: start1[1] };\n const point2 = { x: end1[0], y: end1[1] };\n const point3 = { x: start2[0], y: start2[1] };\n const point4 = { x: end2[0], y: end2[1] };\n\n const { angle } = cachedStats[`imageId:${referencedImageId}`] || {};\n\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle: angle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(CobbAngle);\n\nexport default CobbAngle;\n","import CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\n\nexport default function isValidCornerstoneTrackingIdentifier(\n trackingIdentifier: string\n): boolean {\n if (!trackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = trackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n // The following is needed since the new cornerstone3D has changed\n // case names such as EllipticalRoi to EllipticalROI\n return toolType.toLowerCase() === this.toolType.toLowerCase();\n}\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport isValidCornerstoneTrackingIdentifier from \"./isValidCornerstoneTrackingIdentifier\";\n\nconst { Circle: TID300Circle } = utilities.TID300;\n\nconst CIRCLEROI = \"CircleROI\";\n\nclass CircleROI {\n static trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${CIRCLEROI}`;\n static toolType = CIRCLEROI;\n static utilityToolType = CIRCLEROI;\n static TID300Representation = TID300Circle;\n static isValidCornerstoneTrackingIdentifier =\n isValidCornerstoneTrackingIdentifier;\n\n /** Gets the measurement data for cornerstone, given DICOM SR measurement data. */\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n CircleROI.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n\n // GraphicData is ordered as [centerX, centerY, endX, endY]\n const pointsWorld = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const worldPos = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n\n pointsWorld.push(worldPos);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [...pointsWorld],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0,\n // Dummy values to be updated by cornerstone\n radius: 0,\n perimeter: 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n /**\n * Gets the TID 300 representation of a circle, given the cornerstone representation.\n *\n * @param {Object} tool\n * @returns\n */\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"CircleROI.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const center = worldToImageCoords(referencedImageId, handles.points[0]);\n const end = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const points = [];\n points.push({ x: center[0], y: center[1] });\n points.push({ x: end[0], y: end[1] });\n\n const { area, radius } =\n cachedStats[`imageId:${referencedImageId}`] || {};\n const perimeter = 2 * Math.PI * radius;\n\n return {\n area,\n perimeter,\n radius,\n points,\n trackingIdentifierTextValue: this.trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(CircleROI);\n\nexport default CircleROI;\n","import { vec3 } from \"gl-matrix\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport isValidCornerstoneTrackingIdentifier from \"./isValidCornerstoneTrackingIdentifier\";\n\ntype Point3 = [number, number, number];\n\nconst { Ellipse: TID300Ellipse } = utilities.TID300;\n\nconst ELLIPTICALROI = \"EllipticalROI\";\nconst EPSILON = 1e-4;\n\nclass EllipticalROI {\n static trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${ELLIPTICALROI}`;\n static toolType = ELLIPTICALROI;\n static utilityToolType = ELLIPTICALROI;\n static TID300Representation = TID300Ellipse;\n static isValidCornerstoneTrackingIdentifier =\n isValidCornerstoneTrackingIdentifier;\n\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n EllipticalROI.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n\n // GraphicData is ordered as [majorAxisStartX, majorAxisStartY, majorAxisEndX, majorAxisEndY, minorAxisStartX, minorAxisStartY, minorAxisEndX, minorAxisEndY]\n // But Cornerstone3D points are ordered as top, bottom, left, right for the\n // ellipse so we need to identify if the majorAxis is horizontal or vertical\n // in the image plane and then choose the correct points to use for the ellipse.\n const pointsWorld: Point3[] = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const worldPos = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n\n pointsWorld.push(worldPos);\n }\n\n const majorAxisStart = vec3.fromValues(...pointsWorld[0]);\n const majorAxisEnd = vec3.fromValues(...pointsWorld[1]);\n const minorAxisStart = vec3.fromValues(...pointsWorld[2]);\n const minorAxisEnd = vec3.fromValues(...pointsWorld[3]);\n\n const majorAxisVec = vec3.create();\n vec3.sub(majorAxisVec, majorAxisEnd, majorAxisStart);\n\n // normalize majorAxisVec to avoid scaling issues\n vec3.normalize(majorAxisVec, majorAxisVec);\n\n const minorAxisVec = vec3.create();\n vec3.sub(minorAxisVec, minorAxisEnd, minorAxisStart);\n vec3.normalize(minorAxisVec, minorAxisVec);\n\n const imagePlaneModule = metadata.get(\n \"imagePlaneModule\",\n referencedImageId\n );\n\n if (!imagePlaneModule) {\n throw new Error(\"imageId does not have imagePlaneModule metadata\");\n }\n\n const { columnCosines } = imagePlaneModule;\n\n // find which axis is parallel to the columnCosines\n const columnCosinesVec = vec3.fromValues(\n columnCosines[0],\n columnCosines[1],\n columnCosines[2]\n );\n const projectedMajorAxisOnColVec = vec3.dot(\n columnCosinesVec,\n majorAxisVec\n );\n\n const projectedMinorAxisOnColVec = vec3.dot(\n columnCosinesVec,\n minorAxisVec\n );\n\n const absoluteOfMajorDotProduct = Math.abs(projectedMajorAxisOnColVec);\n const absoluteOfMinorDotProduct = Math.abs(projectedMinorAxisOnColVec);\n\n let ellipsePoints = [];\n if (Math.abs(absoluteOfMajorDotProduct - 1) < EPSILON) {\n ellipsePoints = [\n pointsWorld[0],\n pointsWorld[1],\n pointsWorld[2],\n pointsWorld[3]\n ];\n } else if (Math.abs(absoluteOfMinorDotProduct - 1) < EPSILON) {\n ellipsePoints = [\n pointsWorld[2],\n pointsWorld[3],\n pointsWorld[0],\n pointsWorld[1]\n ];\n } else {\n console.warn(\"OBLIQUE ELLIPSE NOT YET SUPPORTED\");\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [...ellipsePoints],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n const rotation = data.initialRotation || 0;\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"EllipticalROI.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n let top, bottom, left, right;\n // this way when it's restored we can assume the initial rotation is 0.\n if (rotation == 90 || rotation == 270) {\n bottom = worldToImageCoords(referencedImageId, handles.points[2]);\n top = worldToImageCoords(referencedImageId, handles.points[3]);\n left = worldToImageCoords(referencedImageId, handles.points[0]);\n right = worldToImageCoords(referencedImageId, handles.points[1]);\n } else {\n top = worldToImageCoords(referencedImageId, handles.points[0]);\n bottom = worldToImageCoords(referencedImageId, handles.points[1]);\n left = worldToImageCoords(referencedImageId, handles.points[2]);\n right = worldToImageCoords(referencedImageId, handles.points[3]);\n }\n\n // find the major axis and minor axis\n const topBottomLength = Math.abs(top[1] - bottom[1]);\n const leftRightLength = Math.abs(left[0] - right[0]);\n\n const points = [];\n if (topBottomLength > leftRightLength) {\n // major axis is bottom to top\n points.push({ x: top[0], y: top[1] });\n points.push({ x: bottom[0], y: bottom[1] });\n\n // minor axis is left to right\n points.push({ x: left[0], y: left[1] });\n points.push({ x: right[0], y: right[1] });\n } else {\n // major axis is left to right\n points.push({ x: left[0], y: left[1] });\n points.push({ x: right[0], y: right[1] });\n\n // minor axis is bottom to top\n points.push({ x: top[0], y: top[1] });\n points.push({ x: bottom[0], y: bottom[1] });\n }\n\n const { area } = cachedStats[`imageId:${referencedImageId}`] || {};\n\n return {\n area,\n points,\n trackingIdentifierTextValue: this.trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(EllipticalROI);\n\nexport default EllipticalROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nconst TOOLTYPE = \"RectangleROI\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${TOOLTYPE}`;\n\nclass RectangleROI {\n public static toolType = TOOLTYPE;\n public static utilityToolType = TOOLTYPE;\n public static TID300Representation = TID300Polyline;\n\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === TOOLTYPE;\n };\n\n public static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n RectangleROI.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[3],\n worldCoords[2]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const corners = handles.points.map(point =>\n worldToImageCoords(referencedImageId, point)\n );\n\n const { area, perimeter } = cachedStats;\n\n return {\n points: [\n corners[0],\n corners[1],\n corners[3],\n corners[2],\n corners[0]\n ],\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(RectangleROI);\n\nexport default RectangleROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { Length: TID300Length } = utilities.TID300;\n\nconst LENGTH = \"Length\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${LENGTH}`;\n\nclass Length {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Length.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [worldCoords[0], worldCoords[1]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n length: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Length.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const start = worldToImageCoords(referencedImageId, handles.points[0]);\n const end = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const point1 = { x: start[0], y: start[1] };\n const point2 = { x: end[0], y: end[1] };\n\n const { length: distance } =\n cachedStats[`imageId:${referencedImageId}`] || {};\n\n return {\n point1,\n point2,\n distance,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nLength.toolType = LENGTH;\nLength.utilityToolType = LENGTH;\nLength.TID300Representation = TID300Length;\nLength.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === LENGTH;\n};\n\nMeasurementReport.registerTool(Length);\n\nexport default Length;\n","import MeasurementReport from \"./MeasurementReport\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport { vec3 } from \"gl-matrix\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nconst PLANARFREEHANDROI = \"PlanarFreehandROI\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${PLANARFREEHANDROI}`;\nconst closedContourThreshold = 1e-5;\n\nclass PlanarFreehandROI {\n public static toolType = PLANARFREEHANDROI;\n public static utilityToolType = PLANARFREEHANDROI;\n public static TID300Representation = TID300Polyline;\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === PLANARFREEHANDROI;\n };\n\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n PlanarFreehandROI.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n\n const worldCoords = [];\n\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n\n worldCoords.push(point);\n }\n\n const distanceBetweenFirstAndLastPoint = vec3.distance(\n worldCoords[worldCoords.length - 1],\n worldCoords[0]\n );\n\n let isOpenContour = true;\n\n // If the contour is closed, this should have been encoded as exactly the same point, so check for a very small difference.\n if (distanceBetweenFirstAndLastPoint < closedContourThreshold) {\n worldCoords.pop(); // Remove the last element which is duplicated.\n\n isOpenContour = false;\n }\n\n const points = [];\n\n if (isOpenContour) {\n points.push(worldCoords[0], worldCoords[worldCoords.length - 1]);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n polyline: worldCoords,\n isOpenContour,\n handles: {\n points,\n activeHandleIndex: null,\n textBox: {\n hasMoved: false\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { isOpenContour, polyline } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"PlanarFreehandROI.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const points = polyline.map(worldPos =>\n worldToImageCoords(referencedImageId, worldPos)\n );\n\n if (!isOpenContour) {\n // Need to repeat the first point at the end of to have an explicitly closed contour.\n const firstPoint = points[0];\n\n // Explicitly expand to avoid ciruclar references.\n points.push([firstPoint[0], firstPoint[1]]);\n }\n\n const area = 0; // TODO -> The tool doesn't have these stats yet.\n const perimeter = 0;\n\n return {\n points,\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(PlanarFreehandROI);\n\nexport default PlanarFreehandROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst PROBE = \"Probe\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${PROBE}`;\n\nclass Probe {\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Probe.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: worldCoords,\n activeHandleIndex: null,\n textBox: {\n hasMoved: false\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, metadata } = tool;\n let { finding, findingSites } = tool;\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Probe.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const { points } = data.handles;\n\n const pointsImage = points.map(point => {\n const pointImage = worldToImageCoords(referencedImageId, point);\n return {\n x: pointImage[0],\n y: pointImage[1]\n };\n });\n\n const TID300RepresentationArguments = {\n points: pointsImage,\n trackingIdentifierTextValue,\n findingSites: findingSites || [],\n finding\n };\n\n return TID300RepresentationArguments;\n }\n}\n\nProbe.toolType = PROBE;\nProbe.utilityToolType = PROBE;\nProbe.TID300Representation = TID300Point;\nProbe.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === PROBE;\n};\n\nMeasurementReport.registerTool(Probe);\n\nexport default Probe;\n","import { normalizers, derivations } from \"dcmjs\";\nimport { fillSegmentation } from \"../../Cornerstone/Segmentation_4X\";\n\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\n\n/**\n * generateSegmentation - Generates a DICOM Segmentation object given cornerstoneTools data.\n *\n * @param images - An array of the cornerstone image objects, which includes imageId and metadata\n * @param labelmaps - An array of the 3D Volumes that contain the segmentation data.\n */\nfunction generateSegmentation(images, labelmaps, metadata, options = {}) {\n const segmentation = _createMultiframeSegmentationFromReferencedImages(\n images,\n metadata,\n options\n );\n return fillSegmentation(segmentation, labelmaps, options);\n}\n\n/**\n * _createMultiframeSegmentationFromReferencedImages - description\n *\n * @param images - An array of the cornerstone image objects related to the reference\n * series that the segmentation is derived from. You can use methods such as\n * volume.getCornerstoneImages() to get this array.\n *\n * @param options - the options object for the SegmentationDerivation.\n * @returns The Seg derived dataSet.\n */\nfunction _createMultiframeSegmentationFromReferencedImages(\n images,\n metadata,\n options\n) {\n const datasets = images.map(image => {\n // add the sopClassUID to the dataset\n const instance = metadata.get(\"instance\", image.imageId);\n return {\n ...image,\n ...instance,\n // Todo: move to dcmjs tag style\n SOPClassUID: instance.SopClassUID || instance.SOPClassUID,\n SOPInstanceUID: instance.SopInstanceUID || instance.SOPInstanceUID,\n PixelData: image.getPixelData(),\n _vrMap: {\n PixelData: \"OW\"\n },\n _meta: {}\n };\n });\n\n const multiframe = Normalizer.normalizeToDataset(datasets);\n\n return new SegmentationDerivation([multiframe], options);\n}\n\nexport { generateSegmentation };\n","/**\n * Generates 2D label maps from a 3D label map.\n * @param labelmap3D - The 3D label map object to generate 2D label maps from. It is derived\n * from the volume labelmap.\n * @returns The label map object containing the 2D label maps and segments on label maps.\n */\nfunction generateLabelMaps2DFrom3D(labelmap3D): {\n scalarData: number[];\n dimensions: number[];\n segmentsOnLabelmap: number[];\n labelmaps2D: {\n segmentsOnLabelmap: number[];\n pixelData: number[];\n rows: number;\n columns: number;\n }[];\n} {\n // 1. we need to generate labelmaps2D from labelmaps3D, a labelmap2D is for each\n // slice\n const { scalarData, dimensions } = labelmap3D;\n\n // scalarData is a flat array of all the pixels in the volume.\n const labelmaps2D = [];\n const segmentsOnLabelmap3D = new Set();\n\n // X-Y are the row and column dimensions, Z is the number of slices.\n for (let z = 0; z < dimensions[2]; z++) {\n const pixelData = scalarData.slice(\n z * dimensions[0] * dimensions[1],\n (z + 1) * dimensions[0] * dimensions[1]\n );\n\n const segmentsOnLabelmap = [];\n\n for (let i = 0; i < pixelData.length; i++) {\n const segment = pixelData[i];\n if (!segmentsOnLabelmap.includes(segment) && segment !== 0) {\n segmentsOnLabelmap.push(segment);\n }\n }\n\n const labelmap2D = {\n segmentsOnLabelmap,\n pixelData,\n rows: dimensions[1],\n columns: dimensions[0]\n };\n\n if (segmentsOnLabelmap.length === 0) {\n continue;\n }\n\n segmentsOnLabelmap.forEach(segmentIndex => {\n segmentsOnLabelmap3D.add(segmentIndex);\n });\n\n labelmaps2D[dimensions[2] - 1 - z] = labelmap2D;\n }\n\n // remove segment 0 from segmentsOnLabelmap3D\n labelmap3D.segmentsOnLabelmap = Array.from(segmentsOnLabelmap3D);\n\n labelmap3D.labelmaps2D = labelmaps2D;\n\n return labelmap3D;\n}\n\nexport { generateLabelMaps2DFrom3D };\n","import { CornerstoneSEG } from \"../../Cornerstone\";\n\nconst { Segmentation } = CornerstoneSEG;\nconst { generateToolState: generateToolStateCornerstoneLegacy } = Segmentation;\n\n/**\n * generateToolState - Given a set of cornerstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param imageIds - An array of the imageIds.\n * @param arrayBuffer - The SEG arrayBuffer.\n * @param skipOverlapping - skip checks for overlapping segs, default value false.\n * @param tolerance - default value 1.e-3.\n *\n * @returns a list of array buffer for each labelMap\n * an object from which the segment metadata can be derived\n * list containing the track of segments per frame\n * list containing the track of segments per frame for each labelMap (available only for the overlapping case).\n */\nfunction generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping = false,\n tolerance = 1e-3\n) {\n return generateToolStateCornerstoneLegacy(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping,\n tolerance\n );\n}\n\nexport { generateToolState };\n","/**\n * Checks if point is within array\n * @param {*} array\n * @param {*} pt\n * @returns\n */\nfunction ptInArray(array, pt) {\n let index = -1;\n for (let i = 0; i < array.length; i++) {\n if (isSamePoint(pt, array[i])) {\n index = i;\n }\n }\n return index;\n}\n\n/**\n * Checks if point A and point B contain same values\n * @param {*} ptA\n * @param {*} ptB\n * @returns\n */\nfunction isSamePoint(ptA, ptB) {\n if (ptA[0] == ptB[0] && ptA[1] == ptB[1] && ptA[2] == ptB[2]) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Goes through linesArray and replaces all references of old index with new index\n * @param {*} linesArray\n * @param {*} oldIndex\n * @param {*} newIndex\n */\nfunction replacePointIndexReferences(linesArray, oldIndex, newIndex) {\n for (let i = 0; i < linesArray.length; i++) {\n const line = linesArray[i];\n if (line.a == oldIndex) {\n line.a = newIndex;\n } else if (line.b == oldIndex) {\n line.b = newIndex;\n }\n }\n}\n\n/**\n * Iterate through polyData from vtkjs and merge any points that are the same\n * then update merged point references within lines array\n * @param {*} polyData\n * @param {*} bypass\n * @returns\n */\nexport function removeDuplicatePoints(polyData, bypass) {\n const points = polyData.getPoints();\n const lines = polyData.getLines();\n\n const pointsArray = [];\n for (let i = 0; i < points.getNumberOfPoints(); i++) {\n const pt = points.getPoint(i).slice();\n pointsArray.push(pt);\n }\n const linesArray = [];\n for (let i = 0; i < lines.getNumberOfCells(); i++) {\n const cell = lines.getCell(i * 3).slice();\n //console.log(JSON.stringify(cell));\n const a = cell[0];\n const b = cell[1];\n const line = {\n a,\n b\n };\n linesArray.push(line);\n }\n\n if (bypass) {\n return { points: pointsArray, lines: linesArray };\n }\n\n // Iterate through points and replace any duplicates\n const newPoints = [];\n for (let i = 0; i < pointsArray.length; i++) {\n const pt = pointsArray[i];\n let index = ptInArray(newPoints, pt);\n\n if (index >= 0) {\n // Duplicate Point -> replace references in lines\n replacePointIndexReferences(linesArray, i, index);\n } else {\n index = newPoints.length;\n newPoints.push(pt);\n replacePointIndexReferences(linesArray, i, index);\n }\n }\n\n // Final pass through lines, remove any that refer to exact same point\n const newLines = [];\n linesArray.forEach(line => {\n if (line.a != line.b) {\n newLines.push(line);\n }\n });\n\n return { points: newPoints, lines: newLines };\n}\n\nexport default { removeDuplicatePoints };\n","function findNextLink(line, lines, contourPoints) {\n let index = -1;\n lines.forEach((cell, i) => {\n if (index >= 0) {\n return;\n }\n\n if (cell.a == line.b) {\n index = i;\n }\n });\n\n if (index >= 0) {\n const nextLine = lines[index];\n lines.splice(index, 1);\n\n contourPoints.push(nextLine.b);\n\n if (contourPoints[0] == nextLine.b) {\n return {\n remainingLines: lines,\n contourPoints,\n type: \"CLOSED_PLANAR\"\n //type: 'CLOSEDPLANAR_XOR',\n };\n }\n\n return findNextLink(nextLine, lines, contourPoints);\n }\n\n return {\n remainingLines: lines,\n contourPoints,\n type: \"OPEN_PLANAR\"\n };\n}\n\n/**\n *\n * @param {*} lines\n */\nexport function findContours(lines) {\n if (lines.length == 0) {\n return [];\n }\n\n let contourPoints = [];\n\n const firstCell = lines.shift();\n contourPoints.push(firstCell.a);\n contourPoints.push(firstCell.b);\n const result = findNextLink(firstCell, lines, contourPoints);\n\n if (result.remainingLines.length == 0) {\n return [\n {\n type: result.type,\n contourPoints: result.contourPoints\n }\n ];\n } else {\n const extraContours = findContours(result.remainingLines);\n extraContours.push({\n type: result.type,\n contourPoints: result.contourPoints\n });\n return extraContours;\n }\n}\n\nexport function findContoursFromReducedSet(lines, points) {\n return findContours(lines, points);\n}\n\nexport default {\n findContours,\n findContoursFromReducedSet\n};\n","import { removeDuplicatePoints } from \"./mergePoints\";\nimport { findContoursFromReducedSet } from \"./contourFinder\";\n\nfunction generateContourSetsFromLabelmap({\n segmentations,\n cornerstoneCache,\n cornerstoneToolsEnums,\n vtkUtils\n}) {\n const LABELMAP = cornerstoneToolsEnums.SegmentationRepresentations.Labelmap;\n\n const { representationData, segments } = segmentations;\n const { volumeId: segVolumeId } = representationData[LABELMAP];\n\n // Get segmentation volume\n const vol = cornerstoneCache.getVolume(segVolumeId);\n if (!vol) {\n console.warn(`No volume found for ${segVolumeId}`);\n return;\n }\n\n const numSlices = vol.dimensions[2];\n\n // Get image volume segmentation references\n const imageVol = cornerstoneCache.getVolume(vol.referencedVolumeId);\n if (!imageVol) {\n console.warn(`No volume found for ${vol.referencedVolumeId}`);\n return;\n }\n\n // NOTE: Workaround for marching squares not finding closed contours at\n // boundary of image volume, clear pixels along x-y border of volume\n const segData = vol.imageData.getPointData().getScalars().getData();\n const pixelsPerSlice = vol.dimensions[0] * vol.dimensions[1];\n\n for (let z = 0; z < numSlices; z++) {\n for (let y = 0; y < vol.dimensions[1]; y++) {\n for (let x = 0; x < vol.dimensions[0]; x++) {\n const index = x + y * vol.dimensions[0] + z * pixelsPerSlice;\n\n if (\n x === 0 ||\n y === 0 ||\n x === vol.dimensions[0] - 1 ||\n y === vol.dimensions[1] - 1\n ) {\n segData[index] = 0;\n }\n }\n }\n }\n\n // end workaround\n //\n //\n const ContourSets = [];\n\n // Iterate through all segments in current segmentation set\n const numSegments = segments.length;\n for (let segIndex = 0; segIndex < numSegments; segIndex++) {\n const segment = segments[segIndex];\n\n // Skip empty segments\n if (!segment) {\n continue;\n }\n\n const contourSequence = [];\n for (let sliceIndex = 0; sliceIndex < numSlices; sliceIndex++) {\n // Check if the slice is empty before running marching cube\n if (\n isSliceEmptyForSegment(\n sliceIndex,\n segData,\n pixelsPerSlice,\n segIndex\n )\n ) {\n continue;\n }\n\n try {\n const scalars = vtkUtils.vtkDataArray.newInstance({\n name: \"Scalars\",\n values: Array.from(segData),\n numberOfComponents: 1\n });\n\n // Modify segData for this specific segment directly\n let segmentIndexFound = false;\n for (let i = 0; i < segData.length; i++) {\n const value = segData[i];\n if (value === segIndex) {\n segmentIndexFound = true;\n scalars.setValue(i, 1);\n } else {\n scalars.setValue(i, 0);\n }\n }\n\n if (!segmentIndexFound) {\n continue;\n }\n\n const mSquares = vtkUtils.vtkImageMarchingSquares.newInstance({\n slice: sliceIndex\n });\n\n // filter out the scalar data so that only it has background and\n // the current segment index\n const imageDataCopy = vtkUtils.vtkImageData.newInstance();\n\n imageDataCopy.shallowCopy(vol.imageData);\n imageDataCopy.getPointData().setScalars(scalars);\n\n // Connect pipeline\n mSquares.setInputData(imageDataCopy);\n const cValues = [];\n cValues[0] = 1;\n mSquares.setContourValues(cValues);\n mSquares.setMergePoints(false);\n\n // Perform marching squares\n const msOutput = mSquares.getOutputData();\n\n // Clean up output from marching squares\n const reducedSet = removeDuplicatePoints(msOutput);\n if (reducedSet.points?.length) {\n const contours = findContoursFromReducedSet(\n reducedSet.lines,\n reducedSet.points\n );\n\n contourSequence.push({\n referencedImageId: imageVol.imageIds[sliceIndex],\n contours,\n polyData: reducedSet\n });\n }\n } catch (e) {\n console.warn(sliceIndex);\n console.warn(e);\n }\n }\n\n const metadata = {\n referencedImageId: imageVol.imageIds[0], // just use 0\n FrameOfReferenceUID: imageVol.metadata.FrameOfReferenceUID\n };\n\n const ContourSet = {\n label: segment.label,\n color: segment.color,\n metadata,\n sliceContours: contourSequence\n };\n\n ContourSets.push(ContourSet);\n }\n\n return ContourSets;\n}\n\nfunction isSliceEmptyForSegment(sliceIndex, segData, pixelsPerSlice, segIndex) {\n const startIdx = sliceIndex * pixelsPerSlice;\n const endIdx = startIdx + pixelsPerSlice;\n\n for (let i = startIdx; i < endIdx; i++) {\n if (segData[i] === segIndex) {\n return false;\n }\n }\n\n return true;\n}\n\nexport { generateContourSetsFromLabelmap };\n","// comment\nclass RectangleROIStartEndThreshold {\n constructor() {\n // empty\n }\n\n static getContourSequence(toolData, metadataProvider) {\n const { data } = toolData;\n const { projectionPoints, projectionPointsImageIds } = data.cachedStats;\n\n return projectionPoints.map((point, index) => {\n const ContourData = getPointData(point);\n const ContourImageSequence = getContourImageSequence(\n projectionPointsImageIds[index],\n metadataProvider\n );\n\n return {\n NumberOfContourPoints: ContourData.length / 3,\n ContourImageSequence,\n ContourGeometricType: \"CLOSED_PLANAR\",\n ContourData\n };\n });\n }\n}\n\nRectangleROIStartEndThreshold.toolName = \"RectangleROIStartEndThreshold\";\n\nfunction getPointData(points) {\n // Since this is a closed contour, the order of the points is important.\n // re-order the points to be in the correct order clockwise\n // Spread to make sure Float32Arrays are converted to arrays\n const orderedPoints = [\n ...points[0],\n ...points[1],\n ...points[3],\n ...points[2]\n ];\n const pointsArray = orderedPoints.flat();\n\n // reduce the precision of the points to 2 decimal places\n const pointsArrayWithPrecision = pointsArray.map(point => {\n return point.toFixed(2);\n });\n\n return pointsArrayWithPrecision;\n}\n\nfunction getContourImageSequence(imageId, metadataProvider) {\n const sopCommon = metadataProvider.get(\"sopCommonModule\", imageId);\n\n return {\n ReferencedSOPClassUID: sopCommon.sopClassUID,\n ReferencedSOPInstanceUID: sopCommon.sopInstanceUID\n };\n}\nexport default RectangleROIStartEndThreshold;\n","import RectangleROIStartEndThreshold from \"./RectangleROIStartEndThreshold\";\n\nfunction validateAnnotation(annotation) {\n if (!annotation?.data) {\n throw new Error(\"Tool data is empty\");\n }\n\n if (!annotation.metadata || annotation.metadata.referenceImageId) {\n throw new Error(\"Tool data is not associated with any imageId\");\n }\n}\n\nclass AnnotationToPointData {\n constructor() {\n // empty\n }\n\n static convert(annotation, index, metadataProvider) {\n validateAnnotation(annotation);\n\n const { toolName } = annotation.metadata;\n const toolClass = AnnotationToPointData.TOOL_NAMES[toolName];\n\n if (!toolClass) {\n throw new Error(\n `Unknown tool type: ${toolName}, cannot convert to RTSSReport`\n );\n }\n\n // Each toolData should become a list of contours, ContourSequence\n // contains a list of contours with their pointData, their geometry\n // type and their length.\n const ContourSequence = toolClass.getContourSequence(\n annotation,\n metadataProvider\n );\n\n // Todo: random rgb color for now, options should be passed in\n const color = [\n Math.floor(Math.random() * 255),\n Math.floor(Math.random() * 255),\n Math.floor(Math.random() * 255)\n ];\n\n return {\n ReferencedROINumber: index + 1,\n ROIDisplayColor: color,\n ContourSequence\n };\n }\n\n static register(toolClass) {\n AnnotationToPointData.TOOL_NAMES[toolClass.toolName] = toolClass;\n }\n}\n\nAnnotationToPointData.TOOL_NAMES = {};\nAnnotationToPointData.register(RectangleROIStartEndThreshold);\n\nexport default AnnotationToPointData;\n","export default function getPatientModule(imageId, metadataProvider) {\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n imageId\n );\n const generalStudyModule = metadataProvider.get(\n \"generalStudyModule\",\n imageId\n );\n const patientStudyModule = metadataProvider.get(\n \"patientStudyModule\",\n imageId\n );\n const patientModule = metadataProvider.get(\"patientModule\", imageId);\n const patientDemographicModule = metadataProvider.get(\n \"patientDemographicModule\",\n imageId\n );\n\n return {\n Modality: generalSeriesModule.modality,\n PatientID: patientModule.patientId,\n PatientName: patientModule.patientName,\n PatientBirthDate: \"\",\n PatientAge: patientStudyModule.patientAge,\n PatientSex: patientDemographicModule.patientSex,\n PatientWeight: patientStudyModule.patientWeight,\n StudyDate: generalStudyModule.studyDate,\n StudyTime: generalStudyModule.studyTime,\n StudyID: \"ToDo\",\n AccessionNumber: generalStudyModule.accessionNumber\n };\n}\n","export default function getReferencedFrameOfReferenceSequence(\n metadata,\n metadataProvider,\n dataset\n) {\n const { referencedImageId: imageId, FrameOfReferenceUID } = metadata;\n const instance = metadataProvider.get(\"instance\", imageId);\n const { SeriesInstanceUID } = instance;\n\n const { ReferencedSeriesSequence } = dataset;\n\n return [\n {\n FrameOfReferenceUID,\n RTReferencedStudySequence: [\n {\n ReferencedSOPClassUID: dataset.SOPClassUID,\n ReferencedSOPInstanceUID: dataset.SOPInstanceUID,\n RTReferencedSeriesSequence: [\n {\n SeriesInstanceUID,\n ContourImageSequence: [\n ...ReferencedSeriesSequence[0]\n .ReferencedInstanceSequence\n ]\n }\n ]\n }\n ]\n }\n ];\n}\n","export default function getReferencedSeriesSequence(\n metadata,\n _index,\n metadataProvider,\n DicomMetadataStore\n) {\n // grab imageId from toolData\n const { referencedImageId: imageId } = metadata;\n const instance = metadataProvider.get(\"instance\", imageId);\n const { SeriesInstanceUID, StudyInstanceUID } = instance;\n\n const ReferencedSeriesSequence = [];\n if (SeriesInstanceUID) {\n const series = DicomMetadataStore.getSeries(\n StudyInstanceUID,\n SeriesInstanceUID\n );\n\n const ReferencedSeries = {\n SeriesInstanceUID,\n ReferencedInstanceSequence: []\n };\n\n series.instances.forEach(instance => {\n const { SOPInstanceUID, SOPClassUID } = instance;\n ReferencedSeries.ReferencedInstanceSequence.push({\n ReferencedSOPClassUID: SOPClassUID,\n ReferencedSOPInstanceUID: SOPInstanceUID\n });\n });\n\n ReferencedSeriesSequence.push(ReferencedSeries);\n }\n\n return ReferencedSeriesSequence;\n}\n","export default function getRTROIObservationsSequence(toolData, index) {\n return {\n ObservationNumber: index + 1,\n ReferencedROINumber: index + 1,\n RTROIInterpretedType: \"Todo: type\",\n ROIInterpreter: \"Todo: interpreter\"\n };\n}\n","export default function getRTSeriesModule(DicomMetaDictionary) {\n return {\n SeriesInstanceUID: DicomMetaDictionary.uid(), // generate a new series instance uid\n SeriesNumber: \"99\" // Todo:: what should be the series number?\n };\n}\n","export default function getStructureSetModule(contour, index) {\n const { FrameOfReferenceUID } = contour.metadata;\n\n return {\n ROINumber: index + 1,\n ROIName: contour.name || `Todo: name ${index + 1}`,\n ROIDescription: `Todo: description ${index + 1}`,\n ROIGenerationAlgorithm: \"Todo: algorithm\",\n ReferencedFrameOfReferenceUID: FrameOfReferenceUID\n };\n}\n","import {\n generateContourSetsFromLabelmap,\n AnnotationToPointData\n} from \"./utilities\";\nimport dcmjs from \"dcmjs\";\nimport {\n getPatientModule,\n getReferencedFrameOfReferenceSequence,\n getReferencedSeriesSequence,\n getRTROIObservationsSequence,\n getRTSeriesModule,\n getStructureSetModule\n} from \"./utilities\";\n\nconst { DicomMetaDictionary } = dcmjs.data;\n\n/**\n * Convert handles to RTSS report containing the dcmjs dicom dataset.\n *\n * Note: current WIP and using segmentation to contour conversion,\n * routine that is not fully tested\n *\n * @param segmentations - Cornerstone tool segmentations data\n * @param metadataProvider - Metadata provider\n * @param DicomMetadataStore - metadata store instance\n * @param cs - cornerstone instance\n * @param csTools - cornerstone tool instance\n * @returns Report object containing the dataset\n */\nfunction generateRTSSFromSegmentations(\n segmentations,\n metadataProvider,\n DicomMetadataStore,\n cornerstoneCache,\n cornerstoneToolsEnums,\n vtkUtils\n) {\n // Convert segmentations to ROIContours\n const roiContours = [];\n\n const contourSets = generateContourSetsFromLabelmap({\n segmentations,\n cornerstoneCache,\n cornerstoneToolsEnums,\n vtkUtils\n });\n\n contourSets.forEach((contourSet, segIndex) => {\n // Check contour set isn't undefined\n if (contourSet) {\n const contourSequence = [];\n contourSet.sliceContours.forEach(sliceContour => {\n /**\n * addContour - Adds a new ROI with related contours to ROIContourSequence\n *\n * @param newContour - cornerstoneTools `ROIContour` object\n *\n * newContour = {\n * name: string,\n * description: string,\n * contourSequence: array[contour]\n * color: array[number],\n * metadata: {\n * referencedImageId: string,\n * FrameOfReferenceUID: string\n * }\n * }\n *\n * contour = {\n * ContourImageSequence: array[\n * { ReferencedSOPClassUID: string, ReferencedSOPInstanceUID: string}\n * ]\n * ContourGeometricType: string,\n * NumberOfContourPoints: number,\n * ContourData: array[number]\n * }\n */\n // Note: change needed if support non-planar contour representation is needed\n const sopCommon = metadataProvider.get(\n \"sopCommonModule\",\n sliceContour.referencedImageId\n );\n const ReferencedSOPClassUID = sopCommon.sopClassUID;\n const ReferencedSOPInstanceUID = sopCommon.sopInstanceUID;\n const ContourImageSequence = [\n { ReferencedSOPClassUID, ReferencedSOPInstanceUID } // NOTE: replace in dcmjs?\n ];\n\n const sliceContourPolyData = sliceContour.polyData;\n\n sliceContour.contours.forEach((contour, index) => {\n const ContourGeometricType = contour.type;\n const NumberOfContourPoints = contour.contourPoints.length;\n const ContourData = [];\n\n contour.contourPoints.forEach(point => {\n const pointData = sliceContourPolyData.points[point];\n pointData[0] = +pointData[0].toFixed(2);\n pointData[1] = +pointData[1].toFixed(2);\n pointData[2] = +pointData[2].toFixed(2);\n ContourData.push(pointData[0]);\n ContourData.push(pointData[1]);\n ContourData.push(pointData[2]);\n });\n\n contourSequence.push({\n ContourImageSequence,\n ContourGeometricType,\n NumberOfContourPoints,\n ContourNumber: index + 1,\n ContourData\n });\n });\n });\n\n const segLabel = contourSet.label || `Segment ${segIndex + 1}`;\n\n const ROIContour = {\n name: segLabel,\n description: segLabel,\n contourSequence,\n color: contourSet.color,\n metadata: contourSet.metadata\n };\n\n roiContours.push(ROIContour);\n }\n });\n\n const rtMetadata = {\n name: segmentations.label,\n label: segmentations.label\n };\n\n const dataset = _initializeDataset(\n rtMetadata,\n roiContours[0].metadata,\n metadataProvider\n );\n\n roiContours.forEach((contour, index) => {\n const roiContour = {\n ROIDisplayColor: contour.color || [255, 0, 0],\n ContourSequence: contour.contourSequence,\n ReferencedROINumber: index + 1\n };\n\n dataset.StructureSetROISequence.push(\n getStructureSetModule(contour, index, metadataProvider)\n );\n\n dataset.ROIContourSequence.push(roiContour);\n\n // ReferencedSeriesSequence\n dataset.ReferencedSeriesSequence = getReferencedSeriesSequence(\n contour.metadata,\n index,\n metadataProvider,\n DicomMetadataStore\n );\n\n // ReferencedFrameOfReferenceSequence\n dataset.ReferencedFrameOfReferenceSequence =\n getReferencedFrameOfReferenceSequence(\n contour.metadata,\n metadataProvider,\n dataset\n );\n });\n\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n dataset._meta = _meta;\n\n return dataset;\n}\n\n/**\n * Convert handles to RTSSReport report object containing the dcmjs dicom dataset.\n *\n * Note: The tool data needs to be formatted in a specific way, and currently\n * it is limited to the RectangleROIStartEndTool in the Cornerstone.\n *\n * @param annotations Array of Cornerstone tool annotation data\n * @param metadataProvider Metadata provider\n * @param options report generation options\n * @returns Report object containing the dataset\n */\nfunction generateRTSSFromAnnotations(\n annotations,\n metadataProvider,\n DicomMetadataStore,\n options\n) {\n const rtMetadata = {\n name: \"RTSS from Annotations\",\n label: \"RTSS from Annotations\"\n };\n const dataset = _initializeDataset(\n rtMetadata,\n annotations[0].metadata,\n metadataProvider\n );\n\n annotations.forEach((annotation, index) => {\n const ContourSequence = AnnotationToPointData.convert(\n annotation,\n index,\n metadataProvider,\n options\n );\n\n dataset.StructureSetROISequence.push(\n getStructureSetModule(annotation, index, metadataProvider)\n );\n\n dataset.ROIContourSequence.push(ContourSequence);\n dataset.RTROIObservationsSequence.push(\n getRTROIObservationsSequence(annotation, index)\n );\n\n // ReferencedSeriesSequence\n // Todo: handle more than one series\n dataset.ReferencedSeriesSequence = getReferencedSeriesSequence(\n annotation.metadata,\n index,\n metadataProvider,\n DicomMetadataStore\n );\n\n // ReferencedFrameOfReferenceSequence\n dataset.ReferencedFrameOfReferenceSequence =\n getReferencedFrameOfReferenceSequence(\n annotation.metadata,\n metadataProvider,\n dataset\n );\n });\n\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n dataset._meta = _meta;\n\n return dataset;\n}\n\n// /**\n// * Generate Cornerstone tool state from dataset\n// * @param {object} dataset dataset\n// * @param {object} hooks\n// * @param {function} hooks.getToolClass Function to map dataset to a tool class\n// * @returns\n// */\n// //static generateToolState(_dataset, _hooks = {}) {\n// function generateToolState() {\n// // Todo\n// console.warn(\"RTSS.generateToolState not implemented\");\n// }\n\nfunction _initializeDataset(rtMetadata, imgMetadata, metadataProvider) {\n const rtSOPInstanceUID = DicomMetaDictionary.uid();\n\n // get the first annotation data\n const { referencedImageId: imageId, FrameOfReferenceUID } = imgMetadata;\n\n const { studyInstanceUID } = metadataProvider.get(\n \"generalSeriesModule\",\n imageId\n );\n\n const patientModule = getPatientModule(imageId, metadataProvider);\n const rtSeriesModule = getRTSeriesModule(DicomMetaDictionary);\n\n return {\n StructureSetROISequence: [],\n ROIContourSequence: [],\n RTROIObservationsSequence: [],\n ReferencedSeriesSequence: [],\n ReferencedFrameOfReferenceSequence: [],\n ...patientModule,\n ...rtSeriesModule,\n StudyInstanceUID: studyInstanceUID,\n SOPClassUID: \"1.2.840.10008.5.1.4.1.1.481.3\", // RT Structure Set Storage\n SOPInstanceUID: rtSOPInstanceUID,\n Manufacturer: \"dcmjs\",\n Modality: \"RTSTRUCT\",\n FrameOfReferenceUID,\n PositionReferenceIndicator: \"\",\n StructureSetLabel: rtMetadata.label || \"\",\n StructureSetName: rtMetadata.name || \"\",\n ReferringPhysicianName: \"\",\n OperatorsName: \"\",\n StructureSetDate: DicomMetaDictionary.date(),\n StructureSetTime: DicomMetaDictionary.time()\n };\n}\n\nexport { generateRTSSFromSegmentations, generateRTSSFromAnnotations };\n","import MeasurementReport from \"./MeasurementReport\";\nimport CodeScheme from \"./CodingScheme\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\n\nimport ArrowAnnotate from \"./ArrowAnnotate\";\nimport Bidirectional from \"./Bidirectional\";\nimport Angle from \"./Angle\";\nimport CobbAngle from \"./CobbAngle\";\nimport CircleROI from \"./CircleROI\";\nimport EllipticalROI from \"./EllipticalROI\";\nimport RectangleROI from \"./RectangleROI\";\nimport Length from \"./Length\";\nimport PlanarFreehandROI from \"./PlanarFreehandROI\";\nimport Probe from \"./Probe\";\n\nimport * as Segmentation from \"./Segmentation\";\nimport * as RTSS from \"./RTStruct\";\n\nconst Cornerstone3DSR = {\n Bidirectional,\n CobbAngle,\n Angle,\n Length,\n CircleROI,\n EllipticalROI,\n RectangleROI,\n ArrowAnnotate,\n Probe,\n PlanarFreehandROI,\n MeasurementReport,\n CodeScheme,\n CORNERSTONE_3D_TAG\n};\n\nconst Cornerstone3DSEG = {\n Segmentation\n};\n\nconst Cornerstone3DRT = {\n RTSS\n};\n\nexport { Cornerstone3DSR, Cornerstone3DSEG, Cornerstone3DRT };\n","import { data } from \"dcmjs\";\n\nconst { Colors, BitArray } = data;\n\n// TODO: Is there a better name for this? RGBAInt?\n// Should we move it to Colors.js\nfunction dicomlab2RGBA(cielab) {\n const rgba = Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));\n rgba.push(255);\n\n return rgba;\n}\n\n// TODO: Copied these functions in from VTK Math so we don't need a dependency.\n// I guess we should put them somewhere\n// https://github.com/Kitware/vtk-js/blob/master/Sources/Common/Core/Math/index.js\nfunction cross(x, y, out) {\n const Zx = x[1] * y[2] - x[2] * y[1];\n const Zy = x[2] * y[0] - x[0] * y[2];\n const Zz = x[0] * y[1] - x[1] * y[0];\n out[0] = Zx;\n out[1] = Zy;\n out[2] = Zz;\n}\n\nfunction norm(x, n = 3) {\n switch (n) {\n case 1:\n return Math.abs(x);\n case 2:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1]);\n case 3:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);\n default: {\n let sum = 0;\n for (let i = 0; i < n; i++) {\n sum += x[i] * x[i];\n }\n return Math.sqrt(sum);\n }\n }\n}\n\nfunction normalize(x) {\n const den = norm(x);\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n x[2] /= den;\n }\n return den;\n}\n\nfunction subtract(a, b, out) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n}\n\n// TODO: This is a useful utility on its own. We should move it somewhere?\n// dcmjs.adapters.vtk.Multiframe? dcmjs.utils?\nfunction geometryFromFunctionalGroups(dataset, PerFrameFunctionalGroups) {\n const geometry = {};\n const pixelMeasures =\n dataset.SharedFunctionalGroupsSequence.PixelMeasuresSequence;\n const planeOrientation =\n dataset.SharedFunctionalGroupsSequence.PlaneOrientationSequence;\n\n // Find the origin of the volume from the PerFrameFunctionalGroups' ImagePositionPatient values\n //\n // TODO: assumes sorted frames. This should read the ImagePositionPatient from each frame and\n // sort them to obtain the first and last position along the acquisition axis.\n const firstFunctionalGroup = PerFrameFunctionalGroups[0];\n const lastFunctionalGroup =\n PerFrameFunctionalGroups[PerFrameFunctionalGroups.length - 1];\n const firstPosition =\n firstFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(\n Number\n );\n const lastPosition =\n lastFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(\n Number\n );\n\n geometry.origin = firstPosition;\n\n // NB: DICOM PixelSpacing is defined as Row then Column,\n // unlike ImageOrientationPatient\n geometry.spacing = [\n pixelMeasures.PixelSpacing[1],\n pixelMeasures.PixelSpacing[0],\n pixelMeasures.SpacingBetweenSlices\n ].map(Number);\n\n geometry.dimensions = [\n dataset.Columns,\n dataset.Rows,\n PerFrameFunctionalGroups.length\n ].map(Number);\n\n const orientation = planeOrientation.ImageOrientationPatient.map(Number);\n const columnStepToPatient = orientation.slice(0, 3);\n const rowStepToPatient = orientation.slice(3, 6);\n\n geometry.planeNormal = [];\n\n cross(columnStepToPatient, rowStepToPatient, geometry.planeNormal);\n\n geometry.sliceStep = [];\n subtract(lastPosition, firstPosition, geometry.sliceStep);\n normalize(geometry.sliceStep);\n geometry.direction = columnStepToPatient\n .concat(rowStepToPatient)\n .concat(geometry.sliceStep);\n\n return geometry;\n}\n\nexport default class Segmentation {\n constructor() {}\n\n /**\n * Produces an array of Segments from an input DICOM Segmentation dataset\n *\n * Segments are returned with Geometry values that can be used to create\n * VTK Image Data objects.\n *\n * @example Example usage to create VTK Volume actors from each segment:\n *\n * const actors = [];\n * const segments = generateToolState(dataset);\n * segments.forEach(segment => {\n * // now make actors using the segment information\n * const scalarArray = vtk.Common.Core.vtkDataArray.newInstance({\n * name: \"Scalars\",\n * numberOfComponents: 1,\n * values: segment.pixelData,\n * });\n *\n * const imageData = vtk.Common.DataModel.vtkImageData.newInstance();\n * imageData.getPointData().setScalars(scalarArray);\n * imageData.setDimensions(geometry.dimensions);\n * imageData.setSpacing(geometry.spacing);\n * imageData.setOrigin(geometry.origin);\n * imageData.setDirection(geometry.direction);\n *\n * const mapper = vtk.Rendering.Core.vtkVolumeMapper.newInstance();\n * mapper.setInputData(imageData);\n * mapper.setSampleDistance(2.);\n *\n * const actor = vtk.Rendering.Core.vtkVolume.newInstance();\n * actor.setMapper(mapper);\n *\n * actors.push(actor);\n * });\n *\n * @param dataset\n * @return {{}}\n */\n static generateSegments(dataset) {\n if (dataset.SegmentSequence.constructor.name !== \"Array\") {\n dataset.SegmentSequence = [dataset.SegmentSequence];\n }\n\n dataset.SegmentSequence.forEach(segment => {\n // TODO: other interesting fields could be extracted from the segment\n // TODO: Read SegmentsOverlay field\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.8.20.2.html\n\n // TODO: Looks like vtkColor only wants RGB in 0-1 values.\n // Why was this example converting to RGBA with 0-255 values?\n const color = dicomlab2RGBA(segment.RecommendedDisplayCIELabValue);\n\n segments[segment.SegmentNumber] = {\n color,\n functionalGroups: [],\n offset: null,\n size: null,\n pixelData: null\n };\n });\n\n // make a list of functional groups per segment\n dataset.PerFrameFunctionalGroupsSequence.forEach(functionalGroup => {\n const segmentNumber =\n functionalGroup.SegmentIdentificationSequence\n .ReferencedSegmentNumber;\n\n segments[segmentNumber].functionalGroups.push(functionalGroup);\n });\n\n // determine per-segment index into the pixel data\n // TODO: only handles one-bit-per pixel\n const frameSize = Math.ceil((dataset.Rows * dataset.Columns) / 8);\n let nextOffset = 0;\n\n Object.keys(segments).forEach(segmentNumber => {\n const segment = segments[segmentNumber];\n\n segment.numberOfFrames = segment.functionalGroups.length;\n segment.size = segment.numberOfFrames * frameSize;\n segment.offset = nextOffset;\n\n nextOffset = segment.offset + segment.size;\n\n const packedSegment = dataset.PixelData.slice(\n segment.offset,\n nextOffset\n );\n\n segment.pixelData = BitArray.unpack(packedSegment);\n\n const geometry = geometryFromFunctionalGroups(\n dataset,\n segment.functionalGroups\n );\n\n segment.geometry = geometry;\n });\n\n return segments;\n }\n}\n","import Segmentation from \"./Segmentation\";\n\nconst VTKjsSEG = {\n Segmentation\n};\n\nexport { VTKjsSEG };\n","import { CornerstoneSR, CornerstoneSEG } from \"./Cornerstone\";\nimport {\n Cornerstone3DSR,\n Cornerstone3DSEG,\n Cornerstone3DRT\n} from \"./Cornerstone3D\";\nimport { VTKjsSEG } from \"./VTKjs\";\nimport * as Enums from \"./enums\";\nimport * as helpers from \"./helpers\";\n\nconst adaptersSR = {\n Cornerstone: CornerstoneSR,\n Cornerstone3D: Cornerstone3DSR\n};\n\nconst adaptersSEG = {\n Cornerstone: CornerstoneSEG,\n Cornerstone3D: Cornerstone3DSEG,\n VTKjs: VTKjsSEG\n};\n\nconst adaptersRT = {\n Cornerstone3D: Cornerstone3DRT\n};\n\nexport { adaptersSR, adaptersSEG, adaptersRT, Enums, helpers };\n"],"names":["TID1500","utilities","addAccessors","StructuredReport","derivations","Normalizer","normalizers","TID1500MeasurementReport","TID1501MeasurementGroup","DicomMetaDictionary","data","FINDING","CodingSchemeDesignator","CodeValue","FINDING_SITE","FINDING_SITE_OLD","codeValueMatch","group","code","oldCode","ConceptNameCodeSequence","getTID300ContentItem","tool","toolType","ReferencedSOPSequence","toolClass","args","getTID300RepresentationArguments","TID300Measurement","TID300Representation","getMeasurementGroup","toolData","toolTypeData","MeasurementReport","CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE","length","Measurements","map","_classCallCheck","_createClass","key","value","getSetupMeasurementData","MeasurementGroup","ContentSequence","contentSequenceArr","toArray","findingGroup","find","findingSiteGroups","filter","NUMGroup","ValueType","SCOORDGroup","ReferencedSOPInstanceUID","ReferencedFrameNumber","defaultState","sopInstanceUid","frameIndex","complete","finding","ConceptCodeSequence","undefined","findingSites","fsg","description","CodeMeaning","findingSite","location","generateReport","toolState","metadataProvider","options","allMeasurementGroups","firstImageId","Object","keys","Error","generalSeriesModule","get","studyInstanceUID","seriesInstanceUID","forEach","imageId","sopCommonModule","frameNumber","toolTypes","ReferencedSOPClassUID","sopClassUID","sopInstanceUID","isMultiframeSOPClassUID","measurementGroups","push","concat","TID1501MeasurementGroups","fileMetaInformationVersionArray","Uint8Array","derivationSourceDataset","StudyInstanceUID","SeriesInstanceUID","_meta","FileMetaInformationVersion","Value","buffer","vr","TransferSyntaxUID","ImplementationClassUID","uid","ImplementationVersionName","_vrMap","PixelData","report","contentItem","dataset","assign","generateToolState","hooks","arguments","ContentTemplateSequence","TemplateIdentifier","REPORT","GROUP","TRACKING_IDENTIFIER","imagingMeasurementContent","codeMeaningEquals","measurementData","cornerstoneToolClasses","CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE","registeredToolClasses","measurementGroup","measurementGroupContentSequence","TrackingIdentifierGroup","TrackingIdentifierValue","TextValue","getToolClass","tc","isValidCornerstoneTrackingIdentifier","measurement","getMeasurementData","console","log","registerTool","utilityToolType","MEASUREMENT_BY_TOOLTYPE","TID300Length","TID300","Length","LENGTH","_MeasurementReport$ge","state","_objectSpread","MeasuredValueSequence","NumericValue","handles","start","end","textBox","hasMoved","movesIndependently","drawnIndependently","allowedOutsideImage","hasBoundingBox","_SCOORDGroup$GraphicD","_slicedToArray","GraphicData","x","y","point1","point2","distance","trackingIdentifierTextValue","TrackingIdentifier","includes","_TrackingIdentifier$s","split","_TrackingIdentifier$s2","cornerstone4Tag","CORNERSTONE_4_TAG","TID300Polyline","Polyline","FreehandRoi","points","active","cachedStats","area","color","invalidated","i","_tool$cachedStats","_cachedStats$area","_cachedStats$perimete","perimeter","TID300Bidirectional","Bidirectional","BIDIRECTIONAL","LONG_AXIS","SHORT_AXIS","longAxisNUMGroup","longAxisSCOORDGroup","shortAxisNUMGroup","shortAxisSCOORDGroup","longestDiameter","String","shortestDiameter","bottomRight","Math","max","highlight","index","perpendicularStart","perpendicularEnd","isCreating","toolName","visible","_tool$handles","longAxis","shortAxis","longAxisLength","shortAxisLength","TID300Ellipse","Ellipse","ELLIPTICALROI","EllipticalRoi","majorAxis","minorAxis","minorAxisLength","sqrt","pow","minorAxisDirection","halfMinorAxisLength","corner1","corner2","initialRotation","halfXLength","abs","halfYLength","center","TID300Circle","Circle","CIRCLEROI","CircleRoi","radius","PI","TID300Point","Point","ARROW_ANNOTATE","CORNERSTONEFREETEXT","ArrowAnnotate","text","TID300RepresentationArguments","TID300CobbAngle","CobbAngle","COBB_ANGLE","rAngle","start2","end2","point3","point4","TID300Angle","Angle","ANGLE","middle","RectangleRoi","_utilities$orientatio","orientation","rotateDirectionCosinesInPlane","flipIOP","flipImageOrientationPatient","flipMatrix2D","rotateMatrix902D","datasetToBlob","BitArray","DicomMessage","SegmentationDerivation","Segmentation","generateSegmentation","images","brushData","includeSliceSpacing","segments","image0","dims","columns","rows","z","xy","numSegments","_getSegCount","seg","isMultiframe","_createSegFromImages","_getNumberOfFramesPer","_getNumberOfFramesPerSegment","referencedFramesPerSegment","segmentIndicies","NumberOfFrames","setNumberOfFrames","segmentIndex","referencedFrameIndicies","referencedFrameNumbers","element","segment","addSegment","_extractCornerstoneToolsPixelData","bitPackPixelData","segBlob","referencedFrames","pixelData","pixelDataIndex","frame","imageIdSpecificToolState","brushPixelData","brush","p","segIdx","datasets","image","arrayBuffer","byteArray","dicomData","readFile","naturalizeDataset","dict","namifyDataset","meta","multiframe","normalizeToDataset","imageIds","imagePlaneModule","warn","ImageOrientationPatient","Array","isArray","rowCosines","_toConsumableArray","columnCosines","validOrientations","getValidOrientations","SharedFunctionalGroupsSequence","sharedImageOrientationPatient","PlaneOrientationSequence","sliceLength","Columns","Rows","segMetadata","getSegmentMetadata","unpackPixelData","PerFrameFunctionalGroupsSequence","inPlane","PerFrameFunctionalGroups","ImageOrientationPatientI","pixelDataI2D","ndarray","alignedPixelDataI","alignPixelDataWithSourceData","SegmentIdentificationSequence","ReferencedSegmentNumber","SourceImageSequence","DerivationImageSequence","getImageIdOfSourceImage","addImageIdSpecificBrushToolState","segType","SegmentationType","unpack","MaximumFractionalValue","onlyMaxAndZero","pixelData2D","brushDataI","cToolsPixelData","getImageIdOfReferencedFrame","getImageIdOfReferencedSingleFramedSOPInstance","imageIdFrameNumber","Number","iop","orientations","h","v","iop90","compareIOP","dx","iop1","iop2","segmentSequence","SegmentSequence","seriesInstanceUid","ReferencedSeriesSequence","nearlyEqual","dcmjsData","_utilities$compressio","compression","encode","decode","generateSegmentationDefaultOptions","rleEncode","inputLabelmaps3D","userOptions","segmentation","fillSegmentation","labelmaps3D","numberOfFrames","referencedFramesPerLabelmap","_loop","labelmap3D","labelmapIndex","labelmaps2D","metadata","_loop2","_i","labelmap2D","segmentsOnLabelmap","segmentMetadata","labelmaps","_getLabelmapsFromReferencedFrameIndicies","addSegmentFromLabelmap","rleEncodedFrames","assignToDataset","BitsAllocated","BitsStored","HighBit","SegmentationFractionalType","_x","_x2","_x3","_x4","_generateToolState","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_options$skipOverlapp","skipOverlapping","_options$tolerance","tolerance","_options$TypedArrayCo","TypedArrayConstructor","_options$maxBytesPerC","maxBytesPerChunk","eventTarget","triggerEvent","pixelDataChunks","sopUIDImageIdIndexMap","overlapping","insertFunction","segmentsOnFrameArray","segmentsOnFrame","arrayBufferLength","labelmapBufferArray","imageIdMaps","segmentsPixelIndices","centroidXYZ","wrap","_callee$","_context","prev","next","abrupt","checkOrientation","reduce","acc","_metadataProvider$get","checkSEGsOverlapping","t0","insertOverlappingPixelDataPlanar","insertPixelDataPlanar","BYTES_PER_ELEMENT","ArrayBuffer","curr","indices","Map","imageIdIndexBufferIndex","_calculateCentroid","calculateCentroid","xAcc","yAcc","zAcc","count","set","floor","centroids","stop","findReferenceSourceImageId","frameSegment","FrameOfReferenceUID","PerFrameFunctionalGroup","frameSourceImageSequence","getImageIdOfSourceImageBySourceImageSequence","referencedSeriesSequence","ReferencedSeriesInstanceUID","getImageIdOfSourceImagebyGeometry","numberOfSegs","groupsLen","frameSegmentsMapping","_loop3","getSegmentIndex","imageIdIndex","findIndex","has","segmentArray","_ret","_iterator","_createForOfIteratorHelper","entries","_step","s","n","done","_step$value","role","temp2DArray","fill","view","readFromUnpackedChunks","j","len","err","e","f","M","m","tempBuffer","slice","tempSegmentsOnFrame","cloneDeep","segmentIndexToProcess","_loop4","_i2","sourceImageMetadata","byteOffset","labelmap2DView","segmentOnFrame","_ret2","chunkSize","ceil","shouldTriggerEvent","Promise","resolve","processInChunks","min","indexCache","segmentIndexObject","percentComplete","round","Events","SEGMENTATION_LOAD_PROGRESS","setTimeout","sourceDataDimensions","some","operation","compareArrays","checkIfPerpendicular","absDotColumnCosines","absDotRowCosines","error","getUnpackedChunks","bitArray","chunks","maxBitsPerChunk","numberOfChunks","startBit","endBit","startByte","endByte","chunk","unpackedChunk","PlanePositionSequence","ImagePositionPatient","imageIdsIndexc","array1","array2","offset","mapping","getUnpackedOffsetAndLength","chunkIndex","result","resultOffset","totalBytes","total","startChunkIndex","startOffsetInChunk","endChunkIndex","endOffsetInChunk","_i3","_Object$entries","_Object$entries$_i","bufferIndices","_iterator2","_step2","bufferIndex","labelmaps3DorBrushData","cornerstoneToolsVersion","Segmentation_4X","Segmentation_3X","__assign","t","prototype","hasOwnProperty","call","__spreadArray","to","from","pack","l","ar","SuppressedError","suppressed","message","name","CodingScheme","codeValues","Cornerstone3DCodingScheme","CORNERSTONE_3D_TAG","sopInstanceUIDToImageIdMap","imageToWorldCoords","referencedImageId","annotation","label","worldCoords","point","imagePixelModule","xOffset","yOffset","secondPoint","arrowFirst","activeHandleIndex","worldToImageCoords","_data$handles","pointImage","cornerstone3DTag","MEASUREMENT_TYPE","_defineProperty","_data$cachedStats","_ref","PROBE","Probe","pointsImage","ptInArray","array","pt","isSamePoint","ptA","ptB","replacePointIndexReferences","linesArray","oldIndex","newIndex","line","a","b","removeDuplicatePoints","polyData","bypass","getPoints","lines","getLines","pointsArray","getNumberOfPoints","getPoint","getNumberOfCells","cell","getCell","newPoints","newLines","findNextLink","contourPoints","nextLine","splice","remainingLines","type","findContours","firstCell","shift","extraContours","findContoursFromReducedSet","generateContourSetsFromLabelmap","segmentations","cornerstoneCache","cornerstoneToolsEnums","vtkUtils","LABELMAP","SegmentationRepresentations","Labelmap","representationData","segVolumeId","volumeId","vol","getVolume","numSlices","dimensions","imageVol","referencedVolumeId","segData","imageData","getPointData","getScalars","getData","pixelsPerSlice","ContourSets","segIndex","contourSequence","sliceIndex","isSliceEmptyForSegment","_reducedSet$points","scalars","vtkDataArray","newInstance","values","numberOfComponents","segmentIndexFound","setValue","mSquares","vtkImageMarchingSquares","imageDataCopy","vtkImageData","shallowCopy","setScalars","setInputData","cValues","setContourValues","setMergePoints","msOutput","getOutputData","reducedSet","contours","ContourSet","sliceContours","startIdx","endIdx","RectangleROIStartEndThreshold","getContourSequence","projectionPoints","projectionPointsImageIds","ContourData","ContourImageSequence","getContourImageSequence","NumberOfContourPoints","ContourGeometricType","orderedPoints","flat","pointsArrayWithPrecision","toFixed","sopCommon","validateAnnotation","referenceImageId","AnnotationToPointData","convert","TOOL_NAMES","ContourSequence","random","ReferencedROINumber","ROIDisplayColor","register","getPatientModule","generalStudyModule","patientStudyModule","patientModule","patientDemographicModule","Modality","modality","PatientID","patientId","PatientName","patientName","PatientBirthDate","PatientAge","patientAge","PatientSex","patientSex","PatientWeight","patientWeight","StudyDate","studyDate","StudyTime","studyTime","StudyID","AccessionNumber","accessionNumber","getReferencedFrameOfReferenceSequence","instance","RTReferencedStudySequence","SOPClassUID","SOPInstanceUID","RTReferencedSeriesSequence","ReferencedInstanceSequence","getReferencedSeriesSequence","_index","DicomMetadataStore","series","getSeries","ReferencedSeries","instances","getRTROIObservationsSequence","ObservationNumber","RTROIInterpretedType","ROIInterpreter","getRTSeriesModule","SeriesNumber","getStructureSetModule","contour","ROINumber","ROIName","ROIDescription","ROIGenerationAlgorithm","ReferencedFrameOfReferenceUID","CodeScheme","Colors","dicomlab2RGBA","cielab","rgba","dicomlab2RGB","cross","out","Zx","Zy","Zz","norm","sum","normalize","den","subtract","geometryFromFunctionalGroups","geometry","pixelMeasures","PixelMeasuresSequence","planeOrientation","firstFunctionalGroup","lastFunctionalGroup","firstPosition","lastPosition","origin","spacing","PixelSpacing","SpacingBetweenSlices","columnStepToPatient","rowStepToPatient","planeNormal","sliceStep","direction","generateSegments","constructor","RecommendedDisplayCIELabValue","SegmentNumber","functionalGroups","size","functionalGroup","segmentNumber","frameSize","nextOffset","packedSegment"],"mappings":"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B,KAAA;AACJ,GAAA;AAEA,EAAA,IAAMoN,UAAU,GAAGhU,YAAU,CAACiU,kBAAkB,CAACX,QAAQ,CAAC,CAAA;EAE1D,OAAO,IAAI1C,wBAAsB,CAAC,CAACoD,UAAU,CAAC,EAAE7P,OAAO,CAAC,CAAA;AAC5D,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAdA,SAee2C,mBAAiBA,CAAAiT,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,EAAA,OAAAC,kBAAA,CAAAC,KAAA,CAAA,IAAA,EAAApT,SAAA,CAAA,CAAA;AAAA,CAqNhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,SAAAmT,kBAAA,GAAA;AAAAA,EAAAA,kBAAA,GAAAE,iBAAA,eAAAC,mB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","x_google_ignoreList":[20]}
1
+ {"version":3,"file":"adapters.es.js","sources":["../src/adapters/helpers/toArray.ts","../src/adapters/helpers/codeMeaningEquals.ts","../src/adapters/helpers/graphicTypeEquals.ts","../src/adapters/helpers/downloadDICOMData.ts","../src/adapters/Cornerstone/MeasurementReport.js","../src/adapters/Cornerstone/cornerstone4Tag.js","../src/adapters/Cornerstone/Length.js","../src/adapters/Cornerstone/FreehandRoi.js","../src/adapters/Cornerstone/Bidirectional.js","../src/adapters/Cornerstone/EllipticalRoi.js","../src/adapters/Cornerstone/CircleRoi.js","../src/adapters/Cornerstone/ArrowAnnotate.js","../src/adapters/Cornerstone/CobbAngle.js","../src/adapters/Cornerstone/Angle.js","../src/adapters/Cornerstone/RectangleRoi.js","../src/adapters/Cornerstone/Segmentation_3X.js","../src/adapters/enums/Events.ts","../src/adapters/Cornerstone/Segmentation_4X.js","../src/adapters/Cornerstone/Segmentation.js","../src/adapters/Cornerstone/index.ts","../../../node_modules/tslib/tslib.es6.js","../src/adapters/Cornerstone3D/cornerstone3DTag.js","../src/adapters/Cornerstone3D/CodingScheme.js","../src/adapters/Cornerstone3D/MeasurementReport.ts","../src/adapters/Cornerstone3D/ArrowAnnotate.js","../src/adapters/Cornerstone3D/Bidirectional.ts","../src/adapters/Cornerstone3D/Angle.ts","../src/adapters/Cornerstone3D/CobbAngle.ts","../src/adapters/Cornerstone3D/isValidCornerstoneTrackingIdentifier.ts","../src/adapters/Cornerstone3D/CircleROI.ts","../src/adapters/Cornerstone3D/EllipticalROI.ts","../src/adapters/Cornerstone3D/RectangleROI.ts","../src/adapters/Cornerstone3D/Length.js","../src/adapters/Cornerstone3D/PlanarFreehandROI.ts","../src/adapters/Cornerstone3D/Probe.js","../src/adapters/Cornerstone3D/Segmentation/generateSegmentation.ts","../src/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.ts","../src/adapters/Cornerstone3D/Segmentation/generateToolState.ts","../../core/dist/esm/enums/Events.js","../../core/dist/esm/enums/SharedArrayBufferModes.js","../../core/dist/esm/eventTarget.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/construct.js","../../../node_modules/fast-deep-equal/index.js","../../../node_modules/object-keys/isArguments.js","../../../node_modules/object-keys/implementation.js","../../../node_modules/object-keys/index.js","../../../node_modules/has-symbols/shams.js","../../../node_modules/has-symbols/index.js","../../../node_modules/has-proto/index.js","../../../node_modules/function-bind/implementation.js","../../../node_modules/function-bind/index.js","../../../node_modules/hasown/index.js","../../../node_modules/get-intrinsic/index.js","../../../node_modules/has-property-descriptors/index.js","../../../node_modules/gopd/index.js","../../../node_modules/define-data-property/index.js","../../../node_modules/define-properties/index.js","../../../node_modules/globalthis/implementation.browser.js","../../../node_modules/globalthis/polyfill.js","../../../node_modules/globalthis/shim.js","../../../node_modules/globalthis/index.js","../../../node_modules/@kitware/vtk.js/vtk.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/get.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/inherits.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../../../node_modules/@kitware/vtk.js/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../../../node_modules/@kitware/vtk.js/Common/Core/ClassHierarchy.js","../../../node_modules/@kitware/vtk.js/macros.js","../../../node_modules/seedrandom/lib/alea.js","../../../node_modules/seedrandom/lib/xor128.js","../../../node_modules/seedrandom/lib/xorwow.js","../../../node_modules/seedrandom/lib/xorshift7.js","../../../node_modules/seedrandom/lib/xor4096.js","../../../node_modules/seedrandom/lib/tychei.js","../../../node_modules/seedrandom/seedrandom.js","../../../node_modules/seedrandom/index.js","../../../node_modules/@kitware/vtk.js/Common/Core/Math/Constants.js","../../../node_modules/@kitware/vtk.js/Common/Core/Math/index.js","../../../node_modules/@kitware/vtk.js/Common/Core/DataArray/Constants.js","../../../node_modules/@kitware/vtk.js/Common/Core/DataArray.js","../../core/dist/esm/utilities/triggerEvent.js","../../core/dist/esm/utilities/getMinMax.js","../../core/dist/esm/utilities/imageIdToURI.js","../../core/dist/esm/init.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/Plane.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/BoundingBox.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/DataSetAttributes/FieldData.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/DataSetAttributes/Constants.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/DataSetAttributes.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/DataSet/Constants.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/DataSet.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/StructuredData/Constants.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/StructuredData.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/ImageData.js","../../core/dist/esm/utilities/isTypedArray.js","../../../node_modules/@kitware/vtk.js/Rendering/OpenGL/Texture/Constants.js","../../../node_modules/@kitware/vtk.js/Common/Core/HalfFloat.js","../../../node_modules/@kitware/vtk.js/Rendering/SceneGraph/ViewNode.js","../../../node_modules/@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory.js","../../../node_modules/@kitware/vtk.js/Rendering/OpenGL/ViewNodeFactory.js","../../../node_modules/@kitware/vtk.js/Rendering/OpenGL/Texture.js","../../../node_modules/@kitware/vtk.js/Common/Core/Points.js","../../../node_modules/@kitware/vtk.js/Common/Core/CellArray.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/Cell.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/CellLinks.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/CellTypes/Constants.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/CellTypes.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/Line/Constants.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/Line.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/PointSet.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/Triangle.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/PolyData/Constants.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/PolyData.js","../../core/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLTexture.js","../../core/dist/esm/metaData.js","../../core/dist/esm/cache/classes/ImageVolume.js","../../core/dist/esm/cache/cache.js","../../core/dist/esm/utilities/genericMetadataProvider.js","../../tools/dist/esm/enums/SegmentationRepresentations.js","../../tools/dist/esm/utilities/contours/contourFinder.js","../../tools/dist/esm/utilities/contours/mergePoints.js","../../tools/dist/esm/utilities/contours/detectContourHoles.js","../../../node_modules/@kitware/vtk.js/Common/DataModel/EdgeLocator.js","../../../node_modules/@kitware/vtk.js/Filters/General/ImageMarchingSquares/caseTable.js","../../../node_modules/@kitware/vtk.js/Filters/General/ImageMarchingSquares.js","../../tools/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js","../../tools/dist/esm/utilities/contours/RectangleROIStartEndThreshold.js","../../tools/dist/esm/utilities/contours/AnnotationToPointData.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getPatientModule.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getRTROIObservationsSequence.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getRTSeriesModule.js","../src/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js","../src/adapters/Cornerstone3D/RTStruct/RTSS.ts","../src/adapters/Cornerstone3D/RTStruct/index.ts","../src/adapters/Cornerstone3D/index.ts","../src/adapters/VTKjs/Segmentation.js","../src/adapters/VTKjs/index.ts","../src/adapters/index.ts"],"sourcesContent":["const toArray = x => (Array.isArray(x) ? x : [x]);\n\nexport { toArray };\n","/**\n * Returns a function that checks if a given content item's ConceptNameCodeSequence.CodeMeaning\n * matches the provided codeMeaningName.\n * @param codeMeaningName - The CodeMeaning to match against.\n * @returns A function that takes a content item and returns a boolean indicating whether the\n * content item's CodeMeaning matches the provided codeMeaningName.\n */\nconst codeMeaningEquals = (codeMeaningName: string) => {\n return (contentItem: any) => {\n return (\n contentItem.ConceptNameCodeSequence.CodeMeaning === codeMeaningName\n );\n };\n};\n\nexport { codeMeaningEquals };\n","/**\n * Checks if a given content item's GraphicType property matches a specified value.\n * @param {string} graphicType - The value to compare the content item's GraphicType property to.\n * @returns {function} A function that takes a content item and returns a boolean indicating whether its GraphicType property matches the specified value.\n */\nconst graphicTypeEquals = graphicType => {\n return contentItem => {\n return contentItem && contentItem.GraphicType === graphicType;\n };\n};\n\nexport { graphicTypeEquals };\n","import { data } from \"dcmjs\";\nimport { Buffer } from \"buffer\";\nconst { datasetToDict } = data;\n\ninterface DicomDataset {\n _meta?: any;\n // other properties\n}\n\n/**\n * Trigger file download from an array buffer\n * @param bufferOrDataset - ArrayBuffer or DicomDataset\n * @param filename - name of the file to download\n */\nexport function downloadDICOMData(\n bufferOrDataset: ArrayBuffer | DicomDataset,\n filename: string\n) {\n let blob;\n if (bufferOrDataset instanceof ArrayBuffer) {\n blob = new Blob([bufferOrDataset], { type: \"application/dicom\" });\n } else {\n if (!bufferOrDataset._meta) {\n throw new Error(\"Dataset must have a _meta property\");\n }\n\n const buffer = Buffer.from(datasetToDict(bufferOrDataset).write());\n blob = new Blob([buffer], { type: \"application/dicom\" });\n }\n\n const link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(blob);\n link.download = filename;\n link.click();\n}\n","import { normalizers, data, utilities, derivations } from \"dcmjs\";\n\nimport { toArray, codeMeaningEquals } from \"../helpers\";\n\nconst { TID1500, addAccessors } = utilities;\n\nconst { StructuredReport } = derivations;\n\nconst { Normalizer } = normalizers;\n\nconst { TID1500MeasurementReport, TID1501MeasurementGroup } = TID1500;\n\nconst { DicomMetaDictionary } = data;\n\nconst FINDING = { CodingSchemeDesignator: \"DCM\", CodeValue: \"121071\" };\nconst FINDING_SITE = { CodingSchemeDesignator: \"SCT\", CodeValue: \"363698007\" };\nconst FINDING_SITE_OLD = { CodingSchemeDesignator: \"SRT\", CodeValue: \"G-C0E3\" };\n\nconst codeValueMatch = (group, code, oldCode) => {\n const { ConceptNameCodeSequence } = group;\n if (!ConceptNameCodeSequence) return;\n const { CodingSchemeDesignator, CodeValue } = ConceptNameCodeSequence;\n return (\n (CodingSchemeDesignator == code.CodingSchemeDesignator &&\n CodeValue == code.CodeValue) ||\n (oldCode &&\n CodingSchemeDesignator == oldCode.CodingSchemeDesignator &&\n CodeValue == oldCode.CodeValue)\n );\n};\n\nfunction getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass\n) {\n const args = toolClass.getTID300RepresentationArguments(tool);\n args.ReferencedSOPSequence = ReferencedSOPSequence;\n\n const TID300Measurement = new toolClass.TID300Representation(args);\n\n return TID300Measurement;\n}\n\nfunction getMeasurementGroup(toolType, toolData, ReferencedSOPSequence) {\n const toolTypeData = toolData[toolType];\n const toolClass =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolType];\n if (\n !toolTypeData ||\n !toolTypeData.data ||\n !toolTypeData.data.length ||\n !toolClass\n ) {\n return;\n }\n\n // Loop through the array of tool instances\n // for this tool\n const Measurements = toolTypeData.data.map(tool => {\n return getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass\n );\n });\n\n return new TID1501MeasurementGroup(Measurements);\n}\n\nexport default class MeasurementReport {\n static getSetupMeasurementData(MeasurementGroup) {\n const { ContentSequence } = MeasurementGroup;\n\n const contentSequenceArr = toArray(ContentSequence);\n const findingGroup = contentSequenceArr.find(group =>\n codeValueMatch(group, FINDING)\n );\n const findingSiteGroups =\n contentSequenceArr.filter(group =>\n codeValueMatch(group, FINDING_SITE, FINDING_SITE_OLD)\n ) || [];\n const NUMGroup = contentSequenceArr.find(\n group => group.ValueType === \"NUM\"\n );\n const SCOORDGroup = toArray(NUMGroup.ContentSequence).find(\n group => group.ValueType === \"SCOORD\"\n );\n const { ReferencedSOPSequence } = SCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n ReferencedSOPSequence;\n\n const defaultState = {\n sopInstanceUid: ReferencedSOPInstanceUID,\n frameIndex: ReferencedFrameNumber || 1,\n complete: true,\n finding: findingGroup\n ? addAccessors(findingGroup.ConceptCodeSequence)\n : undefined,\n findingSites: findingSiteGroups.map(fsg => {\n return addAccessors(fsg.ConceptCodeSequence);\n })\n };\n if (defaultState.finding) {\n defaultState.description = defaultState.finding.CodeMeaning;\n }\n const findingSite =\n defaultState.findingSites && defaultState.findingSites[0];\n if (findingSite) {\n defaultState.location =\n (findingSite[0] && findingSite[0].CodeMeaning) ||\n findingSite.CodeMeaning;\n }\n return {\n defaultState,\n findingGroup,\n findingSiteGroups,\n NUMGroup,\n SCOORDGroup,\n ReferencedSOPSequence,\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber\n };\n }\n\n static generateReport(toolState, metadataProvider, options) {\n // ToolState for array of imageIDs to a Report\n // Assume Cornerstone metadata provider has access to Study / Series / Sop Instance UID\n\n let allMeasurementGroups = [];\n const firstImageId = Object.keys(toolState)[0];\n if (!firstImageId) {\n throw new Error(\"No measurements provided.\");\n }\n\n /* Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Date\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Time\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study ID\n */\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n firstImageId\n );\n\n //const sopCommonModule = metadataProvider.get('sopCommonModule', firstImageId);\n\n // NOTE: We are getting the Series and Study UIDs from the first imageId of the toolState\n // which means that if the toolState is for multiple series, the report will have the incorrect\n // SeriesInstanceUIDs\n const { studyInstanceUID, seriesInstanceUID } = generalSeriesModule;\n\n // Loop through each image in the toolData\n Object.keys(toolState).forEach(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n const frameNumber = metadataProvider.get(\"frameNumber\", imageId);\n const toolData = toolState[imageId];\n const toolTypes = Object.keys(toolData);\n\n const ReferencedSOPSequence = {\n ReferencedSOPClassUID: sopCommonModule.sopClassUID,\n ReferencedSOPInstanceUID: sopCommonModule.sopInstanceUID\n };\n\n if (\n Normalizer.isMultiframeSOPClassUID(sopCommonModule.sopClassUID)\n ) {\n ReferencedSOPSequence.ReferencedFrameNumber = frameNumber;\n }\n\n // Loop through each tool type for the image\n const measurementGroups = [];\n\n toolTypes.forEach(toolType => {\n const group = getMeasurementGroup(\n toolType,\n toolData,\n ReferencedSOPSequence\n );\n if (group) {\n measurementGroups.push(group);\n }\n });\n\n allMeasurementGroups =\n allMeasurementGroups.concat(measurementGroups);\n });\n\n const MeasurementReport = new TID1500MeasurementReport(\n { TID1501MeasurementGroups: allMeasurementGroups },\n options\n );\n\n // TODO: what is the correct metaheader\n // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html\n // TODO: move meta creation to happen in derivations.js\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const derivationSourceDataset = {\n StudyInstanceUID: studyInstanceUID,\n SeriesInstanceUID: seriesInstanceUID\n //SOPInstanceUID: sopInstanceUID, // TODO: Necessary?\n //SOPClassUID: sopClassUID,\n };\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n //MediaStorageSOPClassUID\n //MediaStorageSOPInstanceUID: sopCommonModule.sopInstanceUID,\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n const _vrMap = {\n PixelData: \"OW\"\n };\n\n derivationSourceDataset._meta = _meta;\n derivationSourceDataset._vrMap = _vrMap;\n\n const report = new StructuredReport([derivationSourceDataset]);\n\n const contentItem = MeasurementReport.contentItem(\n derivationSourceDataset\n );\n\n // Merge the derived dataset with the content from the Measurement Report\n report.dataset = Object.assign(report.dataset, contentItem);\n report.dataset._meta = _meta;\n\n return report;\n }\n\n /**\n * Generate Cornerstone tool state from dataset\n * @param {object} dataset dataset\n * @param {object} hooks\n * @param {function} hooks.getToolClass Function to map dataset to a tool class\n * @returns\n */\n static generateToolState(dataset, hooks = {}) {\n // For now, bail out if the dataset is not a TID1500 SR with length measurements\n if (dataset.ContentTemplateSequence.TemplateIdentifier !== \"1500\") {\n throw new Error(\n \"This package can currently only interpret DICOM SR TID 1500\"\n );\n }\n\n const REPORT = \"Imaging Measurements\";\n const GROUP = \"Measurement Group\";\n const TRACKING_IDENTIFIER = \"Tracking Identifier\";\n\n // Identify the Imaging Measurements\n const imagingMeasurementContent = toArray(dataset.ContentSequence).find(\n codeMeaningEquals(REPORT)\n );\n\n // Retrieve the Measurements themselves\n const measurementGroups = toArray(\n imagingMeasurementContent.ContentSequence\n ).filter(codeMeaningEquals(GROUP));\n\n // For each of the supported measurement types, compute the measurement data\n const measurementData = {};\n\n const cornerstoneToolClasses =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE;\n\n const registeredToolClasses = [];\n\n Object.keys(cornerstoneToolClasses).forEach(key => {\n registeredToolClasses.push(cornerstoneToolClasses[key]);\n measurementData[key] = [];\n });\n\n measurementGroups.forEach(measurementGroup => {\n const measurementGroupContentSequence = toArray(\n measurementGroup.ContentSequence\n );\n\n const TrackingIdentifierGroup =\n measurementGroupContentSequence.find(\n contentItem =>\n contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_IDENTIFIER\n );\n\n const TrackingIdentifierValue = TrackingIdentifierGroup.TextValue;\n\n const toolClass = hooks.getToolClass\n ? hooks.getToolClass(\n measurementGroup,\n dataset,\n registeredToolClasses\n )\n : registeredToolClasses.find(tc =>\n tc.isValidCornerstoneTrackingIdentifier(\n TrackingIdentifierValue\n )\n );\n\n if (toolClass) {\n const measurement =\n toolClass.getMeasurementData(measurementGroup);\n\n console.log(`=== ${toolClass.toolType} ===`);\n console.log(measurement);\n\n measurementData[toolClass.toolType].push(measurement);\n }\n });\n\n // NOTE: There is no way of knowing the cornerstone imageIds as that could be anything.\n // That is up to the consumer to derive from the SOPInstanceUIDs.\n return measurementData;\n }\n\n static registerTool(toolClass) {\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[\n toolClass.utilityToolType\n ] = toolClass;\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[\n toolClass.toolType\n ] = toolClass;\n MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.toolType] =\n toolClass.utilityToolType;\n }\n}\n\nMeasurementReport.MEASUREMENT_BY_TOOLTYPE = {};\nMeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE = {};\nMeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE = {};\n","export default \"cornerstoneTools@^4.0.0\";\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Length: TID300Length } = utilities.TID300;\n\nconst LENGTH = \"Length\";\n\nclass Length {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n length: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: Length.toolType,\n handles: {\n start: {},\n end: {},\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.end;\n const distance = tool.length;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:Length\";\n\n return {\n point1,\n point2,\n distance,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nLength.toolType = LENGTH;\nLength.utilityToolType = LENGTH;\nLength.TID300Representation = TID300Length;\nLength.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === LENGTH;\n};\n\nMeasurementReport.registerTool(Length);\n\nexport default Length;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nclass FreehandRoi {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, NUMGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n toolType: FreehandRoi.toolType,\n handles: {\n points: [],\n textBox: {\n active: false,\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n color: undefined,\n invalidated: true\n };\n const { GraphicData } = SCOORDGroup;\n for (let i = 0; i < GraphicData.length; i += 2) {\n state.handles.points.push({\n x: GraphicData[i],\n y: GraphicData[i + 1]\n });\n }\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites, cachedStats = {} } = tool;\n const { points } = handles;\n const { area = 0, perimeter = 0 } = cachedStats;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:FreehandRoi\";\n\n return {\n points,\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nFreehandRoi.toolType = \"FreehandRoi\";\nFreehandRoi.utilityToolType = \"FreehandRoi\";\nFreehandRoi.TID300Representation = TID300Polyline;\nFreehandRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === FreehandRoi.toolType;\n};\n\nMeasurementReport.registerTool(FreehandRoi);\n\nexport default FreehandRoi;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\nimport { toArray } from \"../helpers\";\n\nconst { Bidirectional: TID300Bidirectional } = utilities.TID300;\n\nconst BIDIRECTIONAL = \"Bidirectional\";\nconst LONG_AXIS = \"Long Axis\";\nconst SHORT_AXIS = \"Short Axis\";\nconst FINDING = \"121071\";\nconst FINDING_SITE = \"G-C0E3\";\n\nclass Bidirectional {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { ContentSequence } = MeasurementGroup;\n\n const findingGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeValue === FINDING\n );\n\n const findingSiteGroups = toArray(ContentSequence).filter(\n group => group.ConceptNameCodeSequence.CodeValue === FINDING_SITE\n );\n\n const longAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS\n );\n\n const longAxisSCOORDGroup = toArray(\n longAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const shortAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS\n );\n\n const shortAxisSCOORDGroup = toArray(\n shortAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const { ReferencedSOPSequence } = longAxisSCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n ReferencedSOPSequence;\n\n // Long axis\n\n const longestDiameter = String(\n longAxisNUMGroup.MeasuredValueSequence.NumericValue\n );\n\n const shortestDiameter = String(\n shortAxisNUMGroup.MeasuredValueSequence.NumericValue\n );\n\n const bottomRight = {\n x: Math.max(\n longAxisSCOORDGroup.GraphicData[0],\n longAxisSCOORDGroup.GraphicData[2],\n shortAxisSCOORDGroup.GraphicData[0],\n shortAxisSCOORDGroup.GraphicData[2]\n ),\n y: Math.max(\n longAxisSCOORDGroup.GraphicData[1],\n longAxisSCOORDGroup.GraphicData[3],\n shortAxisSCOORDGroup.GraphicData[1],\n shortAxisSCOORDGroup.GraphicData[3]\n )\n };\n\n const state = {\n sopInstanceUid: ReferencedSOPInstanceUID,\n frameIndex: ReferencedFrameNumber || 1,\n toolType: Bidirectional.toolType,\n active: false,\n handles: {\n start: {\n x: longAxisSCOORDGroup.GraphicData[0],\n y: longAxisSCOORDGroup.GraphicData[1],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 0\n },\n end: {\n x: longAxisSCOORDGroup.GraphicData[2],\n y: longAxisSCOORDGroup.GraphicData[3],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 1\n },\n perpendicularStart: {\n x: shortAxisSCOORDGroup.GraphicData[0],\n y: shortAxisSCOORDGroup.GraphicData[1],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 2\n },\n perpendicularEnd: {\n x: shortAxisSCOORDGroup.GraphicData[2],\n y: shortAxisSCOORDGroup.GraphicData[3],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 3\n },\n textBox: {\n highlight: false,\n hasMoved: true,\n active: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true,\n x: bottomRight.x + 10,\n y: bottomRight.y + 10\n }\n },\n invalidated: false,\n isCreating: false,\n longestDiameter,\n shortestDiameter,\n toolName: \"Bidirectional\",\n visible: true,\n finding: findingGroup\n ? findingGroup.ConceptCodeSequence\n : undefined,\n findingSites: findingSiteGroups.map(fsg => fsg.ConceptCodeSequence)\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { start, end, perpendicularStart, perpendicularEnd } =\n tool.handles;\n const { shortestDiameter, longestDiameter, finding, findingSites } =\n tool;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:Bidirectional\";\n\n return {\n longAxis: {\n point1: start,\n point2: end\n },\n shortAxis: {\n point1: perpendicularStart,\n point2: perpendicularEnd\n },\n longAxisLength: longestDiameter,\n shortAxisLength: shortestDiameter,\n trackingIdentifierTextValue,\n finding: finding,\n findingSites: findingSites || []\n };\n }\n}\n\nBidirectional.toolType = BIDIRECTIONAL;\nBidirectional.utilityToolType = BIDIRECTIONAL;\nBidirectional.TID300Representation = TID300Bidirectional;\nBidirectional.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === BIDIRECTIONAL;\n};\n\nMeasurementReport.registerTool(Bidirectional);\n\nexport default Bidirectional;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Ellipse: TID300Ellipse } = utilities.TID300;\n\nconst ELLIPTICALROI = \"EllipticalRoi\";\n\nclass EllipticalRoi {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const { GraphicData } = SCOORDGroup;\n\n const majorAxis = [\n { x: GraphicData[0], y: GraphicData[1] },\n { x: GraphicData[2], y: GraphicData[3] }\n ];\n const minorAxis = [\n { x: GraphicData[4], y: GraphicData[5] },\n { x: GraphicData[6], y: GraphicData[7] }\n ];\n\n // Calculate two opposite corners of box defined by two axes.\n\n const minorAxisLength = Math.sqrt(\n Math.pow(minorAxis[0].x - minorAxis[1].x, 2) +\n Math.pow(minorAxis[0].y - minorAxis[1].y, 2)\n );\n\n const minorAxisDirection = {\n x: (minorAxis[1].x - minorAxis[0].x) / minorAxisLength,\n y: (minorAxis[1].y - minorAxis[0].y) / minorAxisLength\n };\n\n const halfMinorAxisLength = minorAxisLength / 2;\n\n // First end point of major axis + half minor axis vector\n const corner1 = {\n x: majorAxis[0].x + minorAxisDirection.x * halfMinorAxisLength,\n y: majorAxis[0].y + minorAxisDirection.y * halfMinorAxisLength\n };\n\n // Second end point of major axis - half of minor axis vector\n const corner2 = {\n x: majorAxis[1].x - minorAxisDirection.x * halfMinorAxisLength,\n y: majorAxis[1].y - minorAxisDirection.y * halfMinorAxisLength\n };\n const state = {\n ...defaultState,\n toolType: EllipticalRoi.toolType,\n active: false,\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n handles: {\n end: {\n x: corner1.x,\n y: corner1.y,\n highlight: false,\n active: false\n },\n initialRotation: 0,\n start: {\n x: corner2.x,\n y: corner2.y,\n highlight: false,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n visible: true\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { cachedStats = {}, handles, finding, findingSites } = tool;\n const { start, end } = handles;\n const { area } = cachedStats;\n\n const halfXLength = Math.abs(start.x - end.x) / 2;\n const halfYLength = Math.abs(start.y - end.y) / 2;\n\n const points = [];\n\n const center = { x: (start.x + end.x) / 2, y: (start.y + end.y) / 2 };\n\n if (halfXLength > halfYLength) {\n // X-axis major\n // Major axis\n points.push({ x: center.x - halfXLength, y: center.y });\n points.push({ x: center.x + halfXLength, y: center.y });\n // Minor axis\n points.push({ x: center.x, y: center.y - halfYLength });\n points.push({ x: center.x, y: center.y + halfYLength });\n } else {\n // Y-axis major\n // Major axis\n points.push({ x: center.x, y: center.y - halfYLength });\n points.push({ x: center.x, y: center.y + halfYLength });\n // Minor axis\n points.push({ x: center.x - halfXLength, y: center.y });\n points.push({ x: center.x + halfXLength, y: center.y });\n }\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:EllipticalRoi\";\n\n return {\n area,\n points,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nEllipticalRoi.toolType = ELLIPTICALROI;\nEllipticalRoi.utilityToolType = ELLIPTICALROI;\nEllipticalRoi.TID300Representation = TID300Ellipse;\nEllipticalRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ELLIPTICALROI;\n};\n\nMeasurementReport.registerTool(EllipticalRoi);\n\nexport default EllipticalRoi;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Circle: TID300Circle } = utilities.TID300;\n\nconst CIRCLEROI = \"CircleRoi\";\n\nclass CircleRoi {\n /** Gets the measurement data for cornerstone, given DICOM SR measurement data. */\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const { GraphicData } = SCOORDGroup;\n\n const center = { x: GraphicData[0], y: GraphicData[1] };\n const end = { x: GraphicData[2], y: GraphicData[3] };\n\n const state = {\n ...defaultState,\n toolType: CircleRoi.toolType,\n active: false,\n cachedStats: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0,\n // Dummy values to be updated by cornerstone\n radius: 0,\n perimeter: 0\n },\n handles: {\n end: {\n ...end,\n highlight: false,\n active: false\n },\n initialRotation: 0,\n start: {\n ...center,\n highlight: false,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n visible: true\n };\n\n return state;\n }\n\n /**\n * Gets the TID 300 representation of a circle, given the cornerstone representation.\n *\n * @param {Object} tool\n * @returns\n */\n static getTID300RepresentationArguments(tool) {\n const { cachedStats = {}, handles, finding, findingSites } = tool;\n const { start: center, end } = handles;\n const { area, radius } = cachedStats;\n\n const perimeter = 2 * Math.PI * radius;\n const points = [];\n\n points.push(center);\n points.push(end);\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:CircleRoi\";\n\n return {\n area,\n perimeter,\n radius,\n points,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nCircleRoi.toolType = CIRCLEROI;\nCircleRoi.utilityToolType = CIRCLEROI;\nCircleRoi.TID300Representation = TID300Circle;\nCircleRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === CIRCLEROI;\n};\n\nMeasurementReport.registerTool(CircleRoi);\n\nexport default CircleRoi;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst ARROW_ANNOTATE = \"ArrowAnnotate\";\nconst CORNERSTONEFREETEXT = \"CORNERSTONEFREETEXT\";\n\nclass ArrowAnnotate {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, findingGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const text = findingGroup.ConceptCodeSequence.CodeMeaning;\n\n const { GraphicData } = SCOORDGroup;\n\n const state = {\n ...defaultState,\n toolType: ArrowAnnotate.toolType,\n active: false,\n handles: {\n start: {\n x: GraphicData[0],\n y: GraphicData[1],\n highlight: true,\n active: false\n },\n // Use a generic offset if the stored data doesn't have the endpoint, otherwise\n // use the actual endpoint.\n end: {\n x:\n GraphicData.length == 4\n ? GraphicData[2]\n : GraphicData[0] + 20,\n y:\n GraphicData.length == 4\n ? GraphicData[3]\n : GraphicData[1] + 20,\n highlight: true,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n text,\n visible: true\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const points = [tool.handles.start, tool.handles.end];\n\n let { finding, findingSites } = tool;\n\n const TID300RepresentationArguments = {\n points,\n trackingIdentifierTextValue: `cornerstoneTools@^4.0.0:ArrowAnnotate`,\n findingSites: findingSites || []\n };\n\n // If freetext finding isn't present, add it from the tool text.\n if (!finding || finding.CodeValue !== CORNERSTONEFREETEXT) {\n finding = {\n CodeValue: CORNERSTONEFREETEXT,\n CodingSchemeDesignator: \"CST4\",\n CodeMeaning: tool.text\n };\n }\n\n TID300RepresentationArguments.finding = finding;\n\n return TID300RepresentationArguments;\n }\n}\n\nArrowAnnotate.toolType = ARROW_ANNOTATE;\nArrowAnnotate.utilityToolType = ARROW_ANNOTATE;\nArrowAnnotate.TID300Representation = TID300Point;\nArrowAnnotate.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ARROW_ANNOTATE;\n};\n\nMeasurementReport.registerTool(ArrowAnnotate);\n\nexport default ArrowAnnotate;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\n\nconst COBB_ANGLE = \"CobbAngle\";\n\nclass CobbAngle {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n rAngle: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: CobbAngle.toolType,\n handles: {\n start: {},\n end: {},\n start2: {\n highlight: true,\n drawnIndependently: true\n },\n end2: {\n highlight: true,\n drawnIndependently: true\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.end.x,\n state.handles.end.y,\n state.handles.start2.x,\n state.handles.start2.y,\n state.handles.end2.x,\n state.handles.end2.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.end;\n const point3 = handles.start2;\n const point4 = handles.end2;\n const rAngle = tool.rAngle;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:CobbAngle\";\n\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nCobbAngle.toolType = COBB_ANGLE;\nCobbAngle.utilityToolType = COBB_ANGLE;\nCobbAngle.TID300Representation = TID300CobbAngle;\nCobbAngle.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === COBB_ANGLE;\n};\n\nMeasurementReport.registerTool(CobbAngle);\n\nexport default CobbAngle;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Angle: TID300Angle } = utilities.TID300;\n\nconst ANGLE = \"Angle\";\n\nclass Angle {\n /**\n * Generate TID300 measurement data for a plane angle measurement - use a Angle, but label it as Angle\n */\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n rAngle: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: Angle.toolType,\n handles: {\n start: {},\n middle: {},\n end: {},\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.middle.x,\n state.handles.middle.y,\n state.handles.middle.x,\n state.handles.middle.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.middle;\n const point3 = handles.middle;\n const point4 = handles.end;\n const rAngle = tool.rAngle;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:Angle\";\n\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nAngle.toolType = ANGLE;\nAngle.utilityToolType = ANGLE;\nAngle.TID300Representation = TID300Angle;\nAngle.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ANGLE;\n};\n\nMeasurementReport.registerTool(Angle);\n\nexport default Angle;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nclass RectangleRoi {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, NUMGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n toolType: RectangleRoi.toolType,\n handles: {\n start: {},\n end: {},\n textBox: {\n active: false,\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n },\n initialRotation: 0\n },\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n color: undefined,\n invalidated: true\n };\n const intermediate = {};\n\n [\n state.handles.start.x,\n state.handles.start.y,\n intermediate.x,\n intermediate.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { finding, findingSites, cachedStats = {}, handles } = tool;\n const { start, end } = handles;\n const points = [\n start,\n { x: start.x, y: end.y },\n end,\n { x: end.x, y: start.y }\n ];\n const { area, perimeter } = cachedStats;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:RectangleRoi\";\n\n return {\n points,\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nRectangleRoi.toolType = \"RectangleRoi\";\nRectangleRoi.utilityToolType = \"RectangleRoi\";\nRectangleRoi.TID300Representation = TID300Polyline;\nRectangleRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === RectangleRoi.toolType;\n};\n\nMeasurementReport.registerTool(RectangleRoi);\n\nexport default RectangleRoi;\n","import { log, utilities, normalizers, derivations } from \"dcmjs\";\nimport ndarray from \"ndarray\";\n\nconst {\n rotateDirectionCosinesInPlane,\n flipImageOrientationPatient: flipIOP,\n flipMatrix2D,\n rotateMatrix902D\n} = utilities.orientation;\n\nconst { datasetToBlob, BitArray, DicomMessage, DicomMetaDictionary } =\n utilities;\n\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\n\nconst Segmentation = {\n generateSegmentation,\n generateToolState\n};\n\nexport default Segmentation;\n\n/**\n *\n * @typedef {Object} BrushData\n * @property {Object} toolState - The cornerstoneTools global toolState.\n * @property {Object[]} segments - The cornerstoneTools segment metadata that corresponds to the\n * seriesInstanceUid.\n */\n\n/**\n * generateSegmentation - Generates cornerstoneTools brush data, given a stack of\n * imageIds, images and the cornerstoneTools brushData.\n *\n * @param {object[]} images An array of the cornerstone image objects.\n * @param {BrushData} brushData and object containing the brushData.\n * @returns {type} description\n */\nfunction generateSegmentation(\n images,\n brushData,\n options = { includeSliceSpacing: true }\n) {\n const { toolState, segments } = brushData;\n\n // Calculate the dimensions of the data cube.\n const image0 = images[0];\n\n const dims = {\n x: image0.columns,\n y: image0.rows,\n z: images.length\n };\n\n dims.xy = dims.x * dims.y;\n\n const numSegments = _getSegCount(seg, segments);\n\n if (!numSegments) {\n throw new Error(\"No segments to export!\");\n }\n\n const isMultiframe = image0.imageId.includes(\"?frame\");\n const seg = _createSegFromImages(images, isMultiframe, options);\n\n const { referencedFramesPerSegment, segmentIndicies } =\n _getNumberOfFramesPerSegment(toolState, images, segments);\n\n let NumberOfFrames = 0;\n\n for (let i = 0; i < referencedFramesPerSegment.length; i++) {\n NumberOfFrames += referencedFramesPerSegment[i].length;\n }\n\n seg.setNumberOfFrames(NumberOfFrames);\n\n for (let i = 0; i < segmentIndicies.length; i++) {\n const segmentIndex = segmentIndicies[i];\n const referencedFrameIndicies = referencedFramesPerSegment[i];\n\n // Frame numbers start from 1.\n const referencedFrameNumbers = referencedFrameIndicies.map(element => {\n return element + 1;\n });\n\n const segment = segments[segmentIndex];\n\n seg.addSegment(\n segment,\n _extractCornerstoneToolsPixelData(\n segmentIndex,\n referencedFrameIndicies,\n toolState,\n images,\n dims\n ),\n referencedFrameNumbers\n );\n }\n\n seg.bitPackPixelData();\n\n const segBlob = datasetToBlob(seg.dataset);\n\n return segBlob;\n}\n\nfunction _extractCornerstoneToolsPixelData(\n segmentIndex,\n referencedFrames,\n toolState,\n images,\n dims\n) {\n const pixelData = new Uint8Array(dims.xy * referencedFrames.length);\n\n let pixelDataIndex = 0;\n\n for (let i = 0; i < referencedFrames.length; i++) {\n const frame = referencedFrames[i];\n\n const imageId = images[frame].imageId;\n const imageIdSpecificToolState = toolState[imageId];\n\n const brushPixelData =\n imageIdSpecificToolState.brush.data[segmentIndex].pixelData;\n\n for (let p = 0; p < brushPixelData.length; p++) {\n pixelData[pixelDataIndex] = brushPixelData[p];\n pixelDataIndex++;\n }\n }\n\n return pixelData;\n}\n\nfunction _getNumberOfFramesPerSegment(toolState, images, segments) {\n const segmentIndicies = [];\n const referencedFramesPerSegment = [];\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i]) {\n segmentIndicies.push(i);\n referencedFramesPerSegment.push([]);\n }\n }\n\n for (let z = 0; z < images.length; z++) {\n const imageId = images[z].imageId;\n const imageIdSpecificToolState = toolState[imageId];\n\n for (let i = 0; i < segmentIndicies.length; i++) {\n const segIdx = segmentIndicies[i];\n\n if (\n imageIdSpecificToolState &&\n imageIdSpecificToolState.brush &&\n imageIdSpecificToolState.brush.data &&\n imageIdSpecificToolState.brush.data[segIdx] &&\n imageIdSpecificToolState.brush.data[segIdx].pixelData\n ) {\n referencedFramesPerSegment[i].push(z);\n }\n }\n }\n\n return {\n referencedFramesPerSegment,\n segmentIndicies\n };\n}\n\nfunction _getSegCount(seg, segments) {\n let numSegments = 0;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i]) {\n numSegments++;\n }\n }\n\n return numSegments;\n}\n\n/**\n * _createSegFromImages - description\n *\n * @param {Object[]} images An array of the cornerstone image objects.\n * @param {Boolean} isMultiframe Whether the images are multiframe.\n * @returns {Object} The Seg derived dataSet.\n */\nfunction _createSegFromImages(images, isMultiframe, options) {\n const datasets = [];\n\n if (isMultiframe) {\n const image = images[0];\n const arrayBuffer = image.data.byteArray.buffer;\n\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n\n datasets.push(dataset);\n } else {\n for (let i = 0; i < images.length; i++) {\n const image = images[i];\n const arrayBuffer = image.data.byteArray.buffer;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(\n dicomData.dict\n );\n\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n datasets.push(dataset);\n }\n }\n\n const multiframe = Normalizer.normalizeToDataset(datasets);\n\n return new SegmentationDerivation([multiframe], options);\n}\n\n/**\n * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer The SEG arrayBuffer.\n * @param {*} metadataProvider\n * @returns {Object} The toolState and an object from which the\n * segment metadata can be derived.\n */\nfunction generateToolState(imageIds, arrayBuffer, metadataProvider) {\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n const multiframe = Normalizer.normalizeToDataset([dataset]);\n\n const imagePlaneModule = metadataProvider.get(\n \"imagePlaneModule\",\n imageIds[0]\n );\n\n if (!imagePlaneModule) {\n console.warn(\"Insufficient metadata, imagePlaneModule missing.\");\n }\n\n const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines)\n ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines]\n : [\n imagePlaneModule.rowCosines.x,\n imagePlaneModule.rowCosines.y,\n imagePlaneModule.rowCosines.z,\n imagePlaneModule.columnCosines.x,\n imagePlaneModule.columnCosines.y,\n imagePlaneModule.columnCosines.z\n ];\n\n // Get IOP from ref series, compute supported orientations:\n const validOrientations = getValidOrientations(ImageOrientationPatient);\n\n const SharedFunctionalGroupsSequence =\n multiframe.SharedFunctionalGroupsSequence;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n\n const sliceLength = multiframe.Columns * multiframe.Rows;\n const segMetadata = getSegmentMetadata(multiframe);\n const pixelData = unpackPixelData(multiframe);\n\n const PerFrameFunctionalGroupsSequence =\n multiframe.PerFrameFunctionalGroupsSequence;\n\n const toolState = {};\n\n let inPlane = true;\n\n for (let i = 0; i < PerFrameFunctionalGroupsSequence.length; i++) {\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[i];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const pixelDataI2D = ndarray(\n new Uint8Array(pixelData.buffer, i * sliceLength, sliceLength),\n [multiframe.Rows, multiframe.Columns]\n );\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations\n );\n\n if (!alignedPixelDataI) {\n console.warn(\n \"This segmentation object is not in-plane with the source data. Bailing out of IO. It'd be better to render this with vtkjs. \"\n );\n inPlane = false;\n break;\n }\n\n const segmentIndex =\n PerFrameFunctionalGroups.SegmentIdentificationSequence\n .ReferencedSegmentNumber - 1;\n\n let SourceImageSequence;\n if (\n SharedFunctionalGroupsSequence.DerivationImageSequence &&\n SharedFunctionalGroupsSequence.DerivationImageSequence\n .SourceImageSequence\n ) {\n SourceImageSequence =\n SharedFunctionalGroupsSequence.DerivationImageSequence\n .SourceImageSequence[i];\n } else {\n SourceImageSequence =\n PerFrameFunctionalGroups.DerivationImageSequence\n .SourceImageSequence;\n }\n\n const imageId = getImageIdOfSourceImage(\n SourceImageSequence,\n imageIds,\n metadataProvider\n );\n\n addImageIdSpecificBrushToolState(\n toolState,\n imageId,\n segmentIndex,\n alignedPixelDataI\n );\n }\n\n if (!inPlane) {\n return;\n }\n\n return { toolState, segMetadata };\n}\n\n/**\n * unpackPixelData - Unpacks bitpacked pixelData if the Segmentation is BINARY.\n *\n * @param {Object} multiframe The multiframe dataset.\n * @return {Uint8Array} The unpacked pixelData.\n */\nfunction unpackPixelData(multiframe) {\n const segType = multiframe.SegmentationType;\n\n if (segType === \"BINARY\") {\n return BitArray.unpack(multiframe.PixelData);\n }\n\n const pixelData = new Uint8Array(multiframe.PixelData);\n\n const max = multiframe.MaximumFractionalValue;\n const onlyMaxAndZero =\n pixelData.find(element => element !== 0 && element !== max) ===\n undefined;\n\n if (!onlyMaxAndZero) {\n log.warn(\n \"This is a fractional segmentation, which is not currently supported.\"\n );\n return;\n }\n\n log.warn(\n \"This segmentation object is actually binary... processing as such.\"\n );\n\n return pixelData;\n}\n\n/**\n * addImageIdSpecificBrushToolState - Adds brush pixel data to cornerstoneTools\n * formatted toolState object.\n *\n * @param {Object} toolState The toolState object to modify\n * @param {String} imageId The imageId of the toolState to add the data.\n * @param {Number} segmentIndex The index of the segment data being added.\n * @param {Ndarray} pixelData2D The pixelData in Ndarry 2D format.\n */\nfunction addImageIdSpecificBrushToolState(\n toolState,\n imageId,\n segmentIndex,\n pixelData2D\n) {\n if (!toolState[imageId]) {\n toolState[imageId] = {};\n toolState[imageId].brush = {};\n toolState[imageId].brush.data = [];\n } else if (!toolState[imageId].brush) {\n toolState[imageId].brush = {};\n toolState[imageId].brush.data = [];\n } else if (!toolState[imageId].brush.data) {\n toolState[imageId].brush.data = [];\n }\n\n toolState[imageId].brush.data[segmentIndex] = {};\n\n const brushDataI = toolState[imageId].brush.data[segmentIndex];\n\n brushDataI.pixelData = new Uint8Array(pixelData2D.data.length);\n\n const cToolsPixelData = brushDataI.pixelData;\n\n for (let p = 0; p < cToolsPixelData.length; p++) {\n if (pixelData2D.data[p]) {\n cToolsPixelData[p] = 1;\n } else {\n cToolsPixelData[p] = 0;\n }\n }\n}\n\n/**\n * getImageIdOfSourceImage - Returns the Cornerstone imageId of the source image.\n *\n * @param {Object} SourceImageSequence Sequence describing the source image.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} metadataProvider A Cornerstone metadataProvider to query\n * metadata from imageIds.\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImage(\n SourceImageSequence,\n imageIds,\n metadataProvider\n) {\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n SourceImageSequence;\n\n return ReferencedFrameNumber\n ? getImageIdOfReferencedFrame(\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber,\n imageIds,\n metadataProvider\n )\n : getImageIdOfReferencedSingleFramedSOPInstance(\n ReferencedSOPInstanceUID,\n imageIds,\n metadataProvider\n );\n}\n\n/**\n * getImageIdOfReferencedSingleFramedSOPInstance - Returns the imageId\n * corresponding to the specified sopInstanceUid for single-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {String[]} imageIds The list of imageIds.\n * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids\n * from the cornerstone imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedSingleFramedSOPInstance(\n sopInstanceUid,\n imageIds,\n metadataProvider\n) {\n return imageIds.find(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n if (!sopCommonModule) {\n return;\n }\n\n return sopCommonModule.sopInstanceUID === sopInstanceUid;\n });\n}\n\n/**\n * getImageIdOfReferencedFrame - Returns the imageId corresponding to the\n * specified sopInstanceUid and frameNumber for multi-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {Number} frameNumber The frame number.\n * @param {String} imageIds The list of imageIds.\n * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids\n * from the cornerstone imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedFrame(\n sopInstanceUid,\n frameNumber,\n imageIds,\n metadataProvider\n) {\n const imageId = imageIds.find(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n if (!sopCommonModule) {\n return;\n }\n\n const imageIdFrameNumber = Number(imageId.split(\"frame=\")[1]);\n\n return (\n //frameNumber is zero indexed for cornerstoneDICOMImageLoader image Ids.\n sopCommonModule.sopInstanceUID === sopInstanceUid &&\n imageIdFrameNumber === frameNumber - 1\n );\n });\n\n return imageId;\n}\n\n/**\n * getValidOrientations - returns an array of valid orientations.\n *\n * @param iop - The row (0..2) an column (3..5) direction cosines.\n * @return An array of valid orientations.\n */\nfunction getValidOrientations(iop) {\n const orientations = [];\n\n // [0, 1, 2]: 0, 0hf, 0vf\n // [3, 4, 5]: 90, 90hf, 90vf\n // [6, 7]: 180, 270\n\n orientations[0] = iop;\n orientations[1] = flipIOP.h(iop);\n orientations[2] = flipIOP.v(iop);\n\n const iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2);\n\n orientations[3] = iop90;\n orientations[4] = flipIOP.h(iop90);\n orientations[5] = flipIOP.v(iop90);\n\n orientations[6] = rotateDirectionCosinesInPlane(iop, Math.PI);\n orientations[7] = rotateDirectionCosinesInPlane(iop, 1.5 * Math.PI);\n\n return orientations;\n}\n\n/**\n * alignPixelDataWithSourceData -\n *\n * @param pixelData2D - The data to align.\n * @param iop - The orientation of the image slice.\n * @param orientations - An array of valid imageOrientationPatient values.\n * @return The aligned pixelData.\n */\nfunction alignPixelDataWithSourceData(pixelData2D, iop, orientations) {\n if (compareIOP(iop, orientations[0])) {\n //Same orientation.\n return pixelData2D;\n } else if (compareIOP(iop, orientations[1])) {\n //Flipped vertically.\n return flipMatrix2D.v(pixelData2D);\n } else if (compareIOP(iop, orientations[2])) {\n //Flipped horizontally.\n return flipMatrix2D.h(pixelData2D);\n } else if (compareIOP(iop, orientations[3])) {\n //Rotated 90 degrees.\n return rotateMatrix902D(pixelData2D);\n } else if (compareIOP(iop, orientations[4])) {\n //Rotated 90 degrees and fliped horizontally.\n return flipMatrix2D.h(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[5])) {\n //Rotated 90 degrees and fliped vertically.\n return flipMatrix2D.v(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[6])) {\n //Rotated 180 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n return rotateMatrix902D(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[7])) {\n //Rotated 270 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n return rotateMatrix902D(\n rotateMatrix902D(rotateMatrix902D(pixelData2D))\n );\n }\n}\n\nconst dx = 1e-5;\n\n/**\n * compareIOP - Returns true if iop1 and iop2 are equal\n * within a tollerance, dx.\n *\n * @param iop1 - An ImageOrientationPatient array.\n * @param iop2 - An ImageOrientationPatient array.\n * @return True if iop1 and iop2 are equal.\n */\nfunction compareIOP(iop1, iop2) {\n return (\n Math.abs(iop1[0] - iop2[0]) < dx &&\n Math.abs(iop1[1] - iop2[1]) < dx &&\n Math.abs(iop1[2] - iop2[2]) < dx &&\n Math.abs(iop1[3] - iop2[3]) < dx &&\n Math.abs(iop1[4] - iop2[4]) < dx &&\n Math.abs(iop1[5] - iop2[5]) < dx\n );\n}\n\nfunction getSegmentMetadata(multiframe) {\n const data = [];\n\n const segmentSequence = multiframe.SegmentSequence;\n\n if (Array.isArray(segmentSequence)) {\n for (let segIdx = 0; segIdx < segmentSequence.length; segIdx++) {\n data.push(segmentSequence[segIdx]);\n }\n } else {\n // Only one segment, will be stored as an object.\n data.push(segmentSequence);\n }\n\n return {\n seriesInstanceUid:\n multiframe.ReferencedSeriesSequence.SeriesInstanceUID,\n data\n };\n}\n","/**\n * Cornerstone adapters events\n */\nenum Events {\n /**\n * Cornerstone segmentation load progress event\n */\n SEGMENTATION_LOAD_PROGRESS = \"CORNERSTONE_ADAPTER_SEGMENTATION_LOAD_PROGRESS\"\n}\n\nexport default Events;\n","import {\n log,\n data as dcmjsData,\n utilities,\n normalizers,\n derivations\n} from \"dcmjs\";\nimport ndarray from \"ndarray\";\nimport cloneDeep from \"lodash.clonedeep\";\n\nimport { Events } from \"../enums\";\n\nconst {\n rotateDirectionCosinesInPlane,\n flipImageOrientationPatient: flipIOP,\n flipMatrix2D,\n rotateMatrix902D,\n nearlyEqual\n} = utilities.orientation;\n\nconst { BitArray, DicomMessage, DicomMetaDictionary } = dcmjsData;\n\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\n\nconst { encode, decode } = utilities.compression;\n\n/**\n *\n * @typedef {Object} BrushData\n * @property {Object} toolState - The cornerstoneTools global toolState.\n * @property {Object[]} segments - The cornerstoneTools segment metadata that corresponds to the\n * seriesInstanceUid.\n */\nconst generateSegmentationDefaultOptions = {\n includeSliceSpacing: true,\n rleEncode: false\n};\n\n/**\n * generateSegmentation - Generates cornerstoneTools brush data, given a stack of\n * imageIds, images and the cornerstoneTools brushData.\n *\n * @param {object[]} images An array of cornerstone images that contain the source\n * data under `image.data.byteArray.buffer`.\n * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects.\n * @param {Object} userOptions Options to pass to the segmentation derivation and `fillSegmentation`.\n * @returns {Blob}\n */\nfunction generateSegmentation(images, inputLabelmaps3D, userOptions = {}) {\n const isMultiframe = images[0].imageId.includes(\"?frame\");\n const segmentation = _createSegFromImages(\n images,\n isMultiframe,\n userOptions\n );\n\n return fillSegmentation(segmentation, inputLabelmaps3D, userOptions);\n}\n\n/**\n * Fills a given segmentation object with data from the input labelmaps3D\n *\n * @param segmentation - The segmentation object to be filled.\n * @param inputLabelmaps3D - An array of 3D labelmaps, or a single 3D labelmap.\n * @param userOptions - Optional configuration settings. Will override the default options.\n *\n * @returns {object} The filled segmentation object.\n */\nfunction fillSegmentation(segmentation, inputLabelmaps3D, userOptions = {}) {\n const options = Object.assign(\n {},\n generateSegmentationDefaultOptions,\n userOptions\n );\n\n // Use another variable so we don't redefine labelmaps3D.\n const labelmaps3D = Array.isArray(inputLabelmaps3D)\n ? inputLabelmaps3D\n : [inputLabelmaps3D];\n\n let numberOfFrames = 0;\n const referencedFramesPerLabelmap = [];\n\n for (\n let labelmapIndex = 0;\n labelmapIndex < labelmaps3D.length;\n labelmapIndex++\n ) {\n const labelmap3D = labelmaps3D[labelmapIndex];\n const { labelmaps2D, metadata } = labelmap3D;\n\n const referencedFramesPerSegment = [];\n\n for (let i = 1; i < metadata.length; i++) {\n if (metadata[i]) {\n referencedFramesPerSegment[i] = [];\n }\n }\n\n for (let i = 0; i < labelmaps2D.length; i++) {\n const labelmap2D = labelmaps2D[i];\n\n if (labelmaps2D[i]) {\n const { segmentsOnLabelmap } = labelmap2D;\n\n segmentsOnLabelmap.forEach(segmentIndex => {\n if (segmentIndex !== 0) {\n referencedFramesPerSegment[segmentIndex].push(i);\n numberOfFrames++;\n }\n });\n }\n }\n\n referencedFramesPerLabelmap[labelmapIndex] = referencedFramesPerSegment;\n }\n\n segmentation.setNumberOfFrames(numberOfFrames);\n\n for (\n let labelmapIndex = 0;\n labelmapIndex < labelmaps3D.length;\n labelmapIndex++\n ) {\n const referencedFramesPerSegment =\n referencedFramesPerLabelmap[labelmapIndex];\n\n const labelmap3D = labelmaps3D[labelmapIndex];\n const { metadata } = labelmap3D;\n\n for (\n let segmentIndex = 1;\n segmentIndex < referencedFramesPerSegment.length;\n segmentIndex++\n ) {\n const referencedFrameIndicies =\n referencedFramesPerSegment[segmentIndex];\n\n if (referencedFrameIndicies) {\n // Frame numbers start from 1.\n const referencedFrameNumbers = referencedFrameIndicies.map(\n element => {\n return element + 1;\n }\n );\n const segmentMetadata = metadata[segmentIndex];\n const labelmaps = _getLabelmapsFromReferencedFrameIndicies(\n labelmap3D,\n referencedFrameIndicies\n );\n\n segmentation.addSegmentFromLabelmap(\n segmentMetadata,\n labelmaps,\n segmentIndex,\n referencedFrameNumbers\n );\n }\n }\n }\n if (options.rleEncode) {\n const rleEncodedFrames = encode(\n segmentation.dataset.PixelData,\n numberOfFrames,\n segmentation.dataset.Rows,\n segmentation.dataset.Columns\n );\n\n // Must use fractional now to RLE encode, as the DICOM standard only allows BitStored && BitsAllocated\n // to be 1 for BINARY. This is not ideal and there should be a better format for compression in this manner\n // added to the standard.\n segmentation.assignToDataset({\n BitsAllocated: \"8\",\n BitsStored: \"8\",\n HighBit: \"7\",\n SegmentationType: \"FRACTIONAL\",\n SegmentationFractionalType: \"PROBABILITY\",\n MaximumFractionalValue: \"255\"\n });\n\n segmentation.dataset._meta.TransferSyntaxUID = {\n Value: [\"1.2.840.10008.1.2.5\"],\n vr: \"UI\"\n };\n segmentation.dataset._vrMap.PixelData = \"OB\";\n segmentation.dataset.PixelData = rleEncodedFrames;\n } else {\n // If no rleEncoding, at least bitpack the data.\n segmentation.bitPackPixelData();\n }\n\n return segmentation;\n}\n\nfunction _getLabelmapsFromReferencedFrameIndicies(\n labelmap3D,\n referencedFrameIndicies\n) {\n const { labelmaps2D } = labelmap3D;\n\n const labelmaps = [];\n\n for (let i = 0; i < referencedFrameIndicies.length; i++) {\n const frame = referencedFrameIndicies[i];\n\n labelmaps.push(labelmaps2D[frame].pixelData);\n }\n\n return labelmaps;\n}\n\n/**\n * _createSegFromImages - description\n *\n * @param {Object[]} images An array of the cornerstone image objects.\n * @param {Boolean} isMultiframe Whether the images are multiframe.\n * @returns {Object} The Seg derived dataSet.\n */\nfunction _createSegFromImages(images, isMultiframe, options) {\n const datasets = [];\n\n if (isMultiframe) {\n const image = images[0];\n const arrayBuffer = image.data.byteArray.buffer;\n\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n\n datasets.push(dataset);\n } else {\n for (let i = 0; i < images.length; i++) {\n const image = images[i];\n const arrayBuffer = image.data.byteArray.buffer;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(\n dicomData.dict\n );\n\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n datasets.push(dataset);\n }\n }\n\n const multiframe = Normalizer.normalizeToDataset(datasets);\n\n return new SegmentationDerivation([multiframe], options);\n}\n\n/**\n * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds - An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer - The SEG arrayBuffer.\n * @param {*} metadataProvider.\n * @param {obj} options - Options object.\n *\n * @return {[]ArrayBuffer}a list of array buffer for each labelMap\n * @return {Object} an object from which the segment metadata can be derived\n * @return {[][][]} 2D list containing the track of segments per frame\n * @return {[][][]} 3D list containing the track of segments per frame for each labelMap\n * (available only for the overlapping case).\n */\nasync function generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n options\n) {\n const {\n skipOverlapping = false,\n tolerance = 1e-3,\n TypedArrayConstructor = Uint8Array,\n maxBytesPerChunk = 199000000,\n eventTarget,\n triggerEvent\n } = options;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n const multiframe = Normalizer.normalizeToDataset([dataset]);\n\n const imagePlaneModule = metadataProvider.get(\n \"imagePlaneModule\",\n imageIds[0]\n );\n\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n imageIds[0]\n );\n\n const SeriesInstanceUID = generalSeriesModule.seriesInstanceUID;\n\n if (!imagePlaneModule) {\n console.warn(\"Insufficient metadata, imagePlaneModule missing.\");\n }\n\n const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines)\n ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines]\n : [\n imagePlaneModule.rowCosines.x,\n imagePlaneModule.rowCosines.y,\n imagePlaneModule.rowCosines.z,\n imagePlaneModule.columnCosines.x,\n imagePlaneModule.columnCosines.y,\n imagePlaneModule.columnCosines.z\n ];\n\n // Get IOP from ref series, compute supported orientations:\n const validOrientations = getValidOrientations(ImageOrientationPatient);\n\n const sliceLength = multiframe.Columns * multiframe.Rows;\n const segMetadata = getSegmentMetadata(multiframe, SeriesInstanceUID);\n\n const TransferSyntaxUID = multiframe._meta.TransferSyntaxUID.Value[0];\n\n let pixelData;\n let pixelDataChunks;\n\n if (TransferSyntaxUID === \"1.2.840.10008.1.2.5\") {\n const rleEncodedFrames = Array.isArray(multiframe.PixelData)\n ? multiframe.PixelData\n : [multiframe.PixelData];\n\n pixelData = decode(\n rleEncodedFrames,\n multiframe.Rows,\n multiframe.Columns\n );\n\n if (multiframe.BitsStored === 1) {\n console.warn(\"No implementation for rle + bitbacking.\");\n\n return;\n }\n\n // Todo: need to test this with rle data\n pixelDataChunks = [pixelData];\n } else {\n pixelDataChunks = unpackPixelData(multiframe, { maxBytesPerChunk });\n\n if (!pixelDataChunks) {\n throw new Error(\"Fractional segmentations are not yet supported\");\n }\n }\n\n const orientation = checkOrientation(\n multiframe,\n validOrientations,\n [imagePlaneModule.rows, imagePlaneModule.columns, imageIds.length],\n tolerance\n );\n\n // Pre-compute the sop UID to imageId index map so that in the for loop\n // we don't have to call metadataProvider.get() for each imageId over\n // and over again.\n const sopUIDImageIdIndexMap = imageIds.reduce((acc, imageId) => {\n const { sopInstanceUid } = metadataProvider.get(\n \"generalImageModule\",\n imageId\n );\n acc[sopInstanceUid] = imageId;\n return acc;\n }, {});\n\n let overlapping = false;\n if (!skipOverlapping) {\n overlapping = checkSEGsOverlapping(\n pixelDataChunks,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n sopUIDImageIdIndexMap\n );\n }\n\n let insertFunction;\n\n switch (orientation) {\n case \"Planar\":\n if (overlapping) {\n insertFunction = insertOverlappingPixelDataPlanar;\n } else {\n insertFunction = insertPixelDataPlanar;\n }\n break;\n case \"Perpendicular\":\n //insertFunction = insertPixelDataPerpendicular;\n throw new Error(\n \"Segmentations orthogonal to the acquisition plane of the source data are not yet supported.\"\n );\n case \"Oblique\":\n throw new Error(\n \"Segmentations oblique to the acquisition plane of the source data are not yet supported.\"\n );\n }\n\n /* if SEGs are overlapping:\n 1) the labelmapBuffer will contain M volumes which have non-overlapping segments;\n 2) segmentsOnFrame will have M * numberOfFrames values to track in which labelMap are the segments;\n 3) insertFunction will return the number of LabelMaps\n 4) generateToolState return is an array*/\n\n const segmentsOnFrameArray = [];\n segmentsOnFrameArray[0] = [];\n const segmentsOnFrame = [];\n\n const arrayBufferLength =\n sliceLength * imageIds.length * TypedArrayConstructor.BYTES_PER_ELEMENT;\n const labelmapBufferArray = [];\n labelmapBufferArray[0] = new ArrayBuffer(arrayBufferLength);\n\n // Precompute the indices and metadata so that we don't have to call\n // a function for each imageId in the for loop.\n const imageIdMaps = imageIds.reduce(\n (acc, curr, index) => {\n acc.indices[curr] = index;\n acc.metadata[curr] = metadataProvider.get(\"instance\", curr);\n return acc;\n },\n { indices: {}, metadata: {} }\n );\n\n // This is the centroid calculation for each segment Index, the data structure\n // is a Map with key = segmentIndex and value = {imageIdIndex: centroid, ...}\n // later on we will use this data structure to calculate the centroid of the\n // segment in the labelmapBuffer\n const segmentsPixelIndices = new Map();\n\n await insertFunction(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelDataChunks,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap,\n imageIdMaps,\n eventTarget,\n triggerEvent\n );\n\n // calculate the centroid of each segment\n const centroidXYZ = new Map();\n\n segmentsPixelIndices.forEach((imageIdIndexBufferIndex, segmentIndex) => {\n const { xAcc, yAcc, zAcc, count } = calculateCentroid(\n imageIdIndexBufferIndex,\n multiframe\n );\n\n centroidXYZ.set(segmentIndex, {\n x: Math.floor(xAcc / count),\n y: Math.floor(yAcc / count),\n z: Math.floor(zAcc / count)\n });\n });\n\n return {\n labelmapBufferArray,\n segMetadata,\n segmentsOnFrame,\n segmentsOnFrameArray,\n centroids: centroidXYZ\n };\n}\n\n// function insertPixelDataPerpendicular(\n// segmentsOnFrame,\n// labelmapBuffer,\n// pixelData,\n// multiframe,\n// imageIds,\n// validOrientations,\n// metadataProvider\n// ) {\n// const {\n// SharedFunctionalGroupsSequence,\n// PerFrameFunctionalGroupsSequence,\n// Rows,\n// Columns\n// } = multiframe;\n\n// const firstImagePlaneModule = metadataProvider.get(\n// \"imagePlaneModule\",\n// imageIds[0]\n// );\n\n// const lastImagePlaneModule = metadataProvider.get(\n// \"imagePlaneModule\",\n// imageIds[imageIds.length - 1]\n// );\n\n// console.log(firstImagePlaneModule);\n// console.log(lastImagePlaneModule);\n\n// const corners = [\n// ...getCorners(firstImagePlaneModule),\n// ...getCorners(lastImagePlaneModule)\n// ];\n\n// console.log(`corners:`);\n// console.log(corners);\n\n// const indexToWorld = mat4.create();\n\n// const ippFirstFrame = firstImagePlaneModule.imagePositionPatient;\n// const rowCosines = Array.isArray(firstImagePlaneModule.rowCosines)\n// ? [...firstImagePlaneModule.rowCosines]\n// : [\n// firstImagePlaneModule.rowCosines.x,\n// firstImagePlaneModule.rowCosines.y,\n// firstImagePlaneModule.rowCosines.z\n// ];\n\n// const columnCosines = Array.isArray(firstImagePlaneModule.columnCosines)\n// ? [...firstImagePlaneModule.columnCosines]\n// : [\n// firstImagePlaneModule.columnCosines.x,\n// firstImagePlaneModule.columnCosines.y,\n// firstImagePlaneModule.columnCosines.z\n// ];\n\n// const { pixelSpacing } = firstImagePlaneModule;\n\n// mat4.set(\n// indexToWorld,\n// // Column 1\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[0],\n// // Column 2\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[1],\n// // Column 3\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[2],\n// // Column 4\n// 0,\n// 0,\n// 0,\n// 1\n// );\n\n// // TODO -> Get origin and (x,y,z) increments to build a translation matrix:\n// // TODO -> Equation C.7.6.2.1-1\n\n// // | cx*di rx* Xx 0 | |x|\n// // | cy*di ry Xy 0 | |y|\n// // | cz*di rz Xz 0 | |z|\n// // | tx ty tz 1 | |1|\n\n// // const [\n// // 0, 0 , 0 , 0,\n// // 0, 0 , 0 , 0,\n// // 0, 0 , 0 , 0,\n// // ipp[0], ipp[1] , ipp[2] , 1,\n// // ]\n\n// // Each frame:\n\n// // Find which corner the first voxel lines up with (one of 8 corners.)\n\n// // Find how i,j,k orient with respect to source volume.\n// // Go through each frame, find location in source to start, and whether to increment +/ix,+/-y,+/-z\n// // through each voxel.\n\n// // [1,0,0,0,1,0]\n\n// // const [\n\n// // ]\n\n// // Invert transformation matrix to get worldToIndex\n\n// // Apply world to index on each point to fill up the matrix.\n\n// // const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence\n// // ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n// // .ImageOrientationPatient\n// // : undefined;\n// // const sliceLength = Columns * Rows;\n// }\n\n// function getCorners(imagePlaneModule) {\n// // console.log(imagePlaneModule);\n\n// const {\n// rows,\n// columns,\n// rowCosines,\n// columnCosines,\n// imagePositionPatient: ipp,\n// rowPixelSpacing,\n// columnPixelSpacing\n// } = imagePlaneModule;\n\n// const rowLength = columns * columnPixelSpacing;\n// const columnLength = rows * rowPixelSpacing;\n\n// const entireRowVector = [\n// rowLength * columnCosines[0],\n// rowLength * columnCosines[1],\n// rowLength * columnCosines[2]\n// ];\n\n// const entireColumnVector = [\n// columnLength * rowCosines[0],\n// columnLength * rowCosines[1],\n// columnLength * rowCosines[2]\n// ];\n\n// const topLeft = [ipp[0], ipp[1], ipp[2]];\n// const topRight = [\n// topLeft[0] + entireRowVector[0],\n// topLeft[1] + entireRowVector[1],\n// topLeft[2] + entireRowVector[2]\n// ];\n// const bottomLeft = [\n// topLeft[0] + entireColumnVector[0],\n// topLeft[1] + entireColumnVector[1],\n// topLeft[2] + entireColumnVector[2]\n// ];\n\n// const bottomRight = [\n// bottomLeft[0] + entireRowVector[0],\n// bottomLeft[1] + entireRowVector[1],\n// bottomLeft[2] + entireRowVector[2]\n// ];\n\n// return [topLeft, topRight, bottomLeft, bottomRight];\n// }\n\n/**\n * Find the reference frame of the segmentation frame in the source data.\n *\n * @param {Object} multiframe dicom metadata\n * @param {Int} frameSegment frame dicom index\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUID to imageId\n * @param {Float} tolerance The tolerance parameter\n *\n * @returns {String} Returns the imageId\n */\nfunction findReferenceSourceImageId(\n multiframe,\n frameSegment,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n) {\n let imageId = undefined;\n\n if (!multiframe) {\n return imageId;\n }\n\n const {\n FrameOfReferenceUID,\n PerFrameFunctionalGroupsSequence,\n SourceImageSequence,\n ReferencedSeriesSequence\n } = multiframe;\n\n if (\n !PerFrameFunctionalGroupsSequence ||\n PerFrameFunctionalGroupsSequence.length === 0\n ) {\n return imageId;\n }\n\n const PerFrameFunctionalGroup =\n PerFrameFunctionalGroupsSequence[frameSegment];\n\n if (!PerFrameFunctionalGroup) {\n return imageId;\n }\n\n let frameSourceImageSequence = undefined;\n if (PerFrameFunctionalGroup.DerivationImageSequence) {\n let DerivationImageSequence =\n PerFrameFunctionalGroup.DerivationImageSequence;\n if (Array.isArray(DerivationImageSequence)) {\n if (DerivationImageSequence.length !== 0) {\n DerivationImageSequence = DerivationImageSequence[0];\n } else {\n DerivationImageSequence = undefined;\n }\n }\n\n if (DerivationImageSequence) {\n frameSourceImageSequence =\n DerivationImageSequence.SourceImageSequence;\n if (Array.isArray(frameSourceImageSequence)) {\n if (frameSourceImageSequence.length !== 0) {\n frameSourceImageSequence = frameSourceImageSequence[0];\n } else {\n frameSourceImageSequence = undefined;\n }\n }\n }\n } else if (SourceImageSequence && SourceImageSequence.length !== 0) {\n console.warn(\n \"DerivationImageSequence not present, using SourceImageSequence assuming SEG has the same geometry as the source image.\"\n );\n frameSourceImageSequence = SourceImageSequence[frameSegment];\n }\n\n if (frameSourceImageSequence) {\n imageId = getImageIdOfSourceImageBySourceImageSequence(\n frameSourceImageSequence,\n sopUIDImageIdIndexMap\n );\n }\n\n if (imageId === undefined && ReferencedSeriesSequence) {\n const referencedSeriesSequence = Array.isArray(ReferencedSeriesSequence)\n ? ReferencedSeriesSequence[0]\n : ReferencedSeriesSequence;\n const ReferencedSeriesInstanceUID =\n referencedSeriesSequence.SeriesInstanceUID;\n\n imageId = getImageIdOfSourceImagebyGeometry(\n ReferencedSeriesInstanceUID,\n FrameOfReferenceUID,\n PerFrameFunctionalGroup,\n imageIds,\n metadataProvider,\n tolerance\n );\n }\n\n return imageId;\n}\n\n/**\n * Checks if there is any overlapping segmentations.\n * @returns {boolean} Returns a flag if segmentations overlapping\n */\n\nfunction checkSEGsOverlapping(\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n sopUIDImageIdIndexMap\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n SegmentSequence,\n Rows,\n Columns\n } = multiframe;\n\n let numberOfSegs = SegmentSequence.length;\n if (numberOfSegs < 2) {\n return false;\n }\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n const groupsLen = PerFrameFunctionalGroupsSequence.length;\n\n /** sort groupsLen to have all the segments for each frame in an array\n * frame 2 : 1, 2\n * frame 4 : 1, 3\n * frame 5 : 4\n */\n\n let frameSegmentsMapping = new Map();\n for (let frameSegment = 0; frameSegment < groupsLen; ++frameSegment) {\n const segmentIndex = getSegmentIndex(multiframe, frameSegment);\n if (segmentIndex === undefined) {\n console.warn(\n \"Could not retrieve the segment index for frame segment \" +\n frameSegment +\n \", skipping this frame.\"\n );\n continue;\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n frameSegment,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n frameSegment +\n \".\"\n );\n continue;\n }\n\n const imageIdIndex = imageIds.findIndex(element => element === imageId);\n\n if (frameSegmentsMapping.has(imageIdIndex)) {\n let segmentArray = frameSegmentsMapping.get(imageIdIndex);\n if (!segmentArray.includes(frameSegment)) {\n segmentArray.push(frameSegment);\n frameSegmentsMapping.set(imageIdIndex, segmentArray);\n }\n } else {\n frameSegmentsMapping.set(imageIdIndex, [frameSegment]);\n }\n }\n\n for (let [, role] of frameSegmentsMapping.entries()) {\n let temp2DArray = new TypedArrayConstructor(sliceLength).fill(0);\n\n for (let i = 0; i < role.length; ++i) {\n const frameSegment = role[i];\n\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[frameSegment];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const view = readFromUnpackedChunks(\n pixelData,\n frameSegment * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n console.warn(\n \"Individual SEG frames are out of plane with respect to the first SEG frame, this is not yet supported, skipping this frame.\"\n );\n continue;\n }\n\n const data = alignedPixelDataI.data;\n for (let j = 0, len = data.length; j < len; ++j) {\n if (data[j] !== 0) {\n temp2DArray[j]++;\n if (temp2DArray[j] > 1) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n}\n\nfunction insertOverlappingPixelDataPlanar(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n Rows,\n Columns\n } = multiframe;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n const arrayBufferLength =\n sliceLength * imageIds.length * TypedArrayConstructor.BYTES_PER_ELEMENT;\n // indicate the number of labelMaps\n let M = 1;\n\n // indicate the current labelMap array index;\n let m = 0;\n\n // temp array for checking overlaps\n let tempBuffer = labelmapBufferArray[m].slice(0);\n\n // temp list for checking overlaps\n let tempSegmentsOnFrame = cloneDeep(segmentsOnFrameArray[m]);\n\n /** split overlapping SEGs algorithm for each segment:\n * A) copy the labelmapBuffer in the array with index 0\n * B) add the segment pixel per pixel on the copied buffer from (A)\n * C) if no overlap, copy the results back on the orignal array from (A)\n * D) if overlap, repeat increasing the index m up to M (if out of memory, add new buffer in the array and M++);\n */\n\n let numberOfSegs = multiframe.SegmentSequence.length;\n for (\n let segmentIndexToProcess = 1;\n segmentIndexToProcess <= numberOfSegs;\n ++segmentIndexToProcess\n ) {\n for (\n let i = 0, groupsLen = PerFrameFunctionalGroupsSequence.length;\n i < groupsLen;\n ++i\n ) {\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[i];\n\n const segmentIndex = getSegmentIndex(multiframe, i);\n if (segmentIndex === undefined) {\n throw new Error(\n \"Could not retrieve the segment index. Aborting segmentation loading.\"\n );\n }\n\n if (segmentIndex !== segmentIndexToProcess) {\n continue;\n }\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n // Since we moved to the chunks approach, we need to read the data\n // and handle scenarios where the portion of data is in one chunk\n // and the other portion is in another chunk\n const view = readFromUnpackedChunks(\n pixelData,\n i * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n throw new Error(\n \"Individual SEG frames are out of plane with respect to the first SEG frame. \" +\n \"This is not yet supported. Aborting segmentation loading.\"\n );\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n i,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n i +\n \".\"\n );\n continue;\n }\n\n const sourceImageMetadata = metadataProvider.get(\n \"instance\",\n imageId\n );\n if (\n Rows !== sourceImageMetadata.Rows ||\n Columns !== sourceImageMetadata.Columns\n ) {\n throw new Error(\n \"Individual SEG frames have different geometry dimensions (Rows and Columns) \" +\n \"respect to the source image reference frame. This is not yet supported. \" +\n \"Aborting segmentation loading. \"\n );\n }\n\n const imageIdIndex = imageIds.findIndex(\n element => element === imageId\n );\n const byteOffset =\n sliceLength *\n imageIdIndex *\n TypedArrayConstructor.BYTES_PER_ELEMENT;\n\n const labelmap2DView = new TypedArrayConstructor(\n tempBuffer,\n byteOffset,\n sliceLength\n );\n\n const data = alignedPixelDataI.data;\n\n let segmentOnFrame = false;\n for (let j = 0, len = alignedPixelDataI.data.length; j < len; ++j) {\n if (data[j]) {\n if (labelmap2DView[j] !== 0) {\n m++;\n if (m >= M) {\n labelmapBufferArray[m] = new ArrayBuffer(\n arrayBufferLength\n );\n segmentsOnFrameArray[m] = [];\n M++;\n }\n tempBuffer = labelmapBufferArray[m].slice(0);\n tempSegmentsOnFrame = cloneDeep(\n segmentsOnFrameArray[m]\n );\n\n i = 0;\n break;\n } else {\n labelmap2DView[j] = segmentIndex;\n segmentOnFrame = true;\n }\n }\n }\n\n if (segmentOnFrame) {\n if (!tempSegmentsOnFrame[imageIdIndex]) {\n tempSegmentsOnFrame[imageIdIndex] = [];\n }\n\n tempSegmentsOnFrame[imageIdIndex].push(segmentIndex);\n\n if (!segmentsOnFrame[imageIdIndex]) {\n segmentsOnFrame[imageIdIndex] = [];\n }\n\n segmentsOnFrame[imageIdIndex].push(segmentIndex);\n }\n }\n\n labelmapBufferArray[m] = tempBuffer.slice(0);\n segmentsOnFrameArray[m] = cloneDeep(tempSegmentsOnFrame);\n\n // reset temp variables/buffers for new segment\n m = 0;\n tempBuffer = labelmapBufferArray[m].slice(0);\n tempSegmentsOnFrame = cloneDeep(segmentsOnFrameArray[m]);\n }\n}\n\nconst getSegmentIndex = (multiframe, frame) => {\n const { PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence } =\n multiframe;\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[frame];\n return PerFrameFunctionalGroups &&\n PerFrameFunctionalGroups.SegmentIdentificationSequence\n ? PerFrameFunctionalGroups.SegmentIdentificationSequence\n .ReferencedSegmentNumber\n : SharedFunctionalGroupsSequence.SegmentIdentificationSequence\n ? SharedFunctionalGroupsSequence.SegmentIdentificationSequence\n .ReferencedSegmentNumber\n : undefined;\n};\n\nfunction insertPixelDataPlanar(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap,\n imageIdMaps,\n eventTarget,\n triggerEvent\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n Rows,\n Columns\n } = multiframe;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n\n let i = 0;\n const groupsLen = PerFrameFunctionalGroupsSequence.length;\n const chunkSize = Math.ceil(groupsLen / 10); // 10% of total length\n\n const shouldTriggerEvent = triggerEvent && eventTarget;\n\n // Below, we chunk the processing of the frames to avoid blocking the main thread\n // if the segmentation is large. We also use a promise to allow the caller to\n // wait for the processing to finish.\n return new Promise(resolve => {\n function processInChunks() {\n // process one chunk\n for (let end = Math.min(i + chunkSize, groupsLen); i < end; ++i) {\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[i];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const view = readFromUnpackedChunks(\n pixelData,\n i * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n throw new Error(\n \"Individual SEG frames are out of plane with respect to the first SEG frame. \" +\n \"This is not yet supported. Aborting segmentation loading.\"\n );\n }\n\n const segmentIndex = getSegmentIndex(multiframe, i);\n\n if (segmentIndex === undefined) {\n throw new Error(\n \"Could not retrieve the segment index. Aborting segmentation loading.\"\n );\n }\n\n if (!segmentsPixelIndices.has(segmentIndex)) {\n segmentsPixelIndices.set(segmentIndex, {});\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n i,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n i +\n \".\"\n );\n continue;\n }\n\n const sourceImageMetadata = imageIdMaps.metadata[imageId];\n if (\n Rows !== sourceImageMetadata.Rows ||\n Columns !== sourceImageMetadata.Columns\n ) {\n throw new Error(\n \"Individual SEG frames have different geometry dimensions (Rows and Columns) \" +\n \"respect to the source image reference frame. This is not yet supported. \" +\n \"Aborting segmentation loading. \"\n );\n }\n\n const imageIdIndex = imageIdMaps.indices[imageId];\n\n const byteOffset =\n sliceLength *\n imageIdIndex *\n TypedArrayConstructor.BYTES_PER_ELEMENT;\n\n const labelmap2DView = new TypedArrayConstructor(\n labelmapBufferArray[0],\n byteOffset,\n sliceLength\n );\n\n const data = alignedPixelDataI.data;\n\n const indexCache = [];\n for (\n let j = 0, len = alignedPixelDataI.data.length;\n j < len;\n ++j\n ) {\n if (data[j]) {\n for (let x = j; x < len; ++x) {\n if (data[x]) {\n labelmap2DView[x] = segmentIndex;\n indexCache.push(x);\n }\n }\n\n if (!segmentsOnFrame[imageIdIndex]) {\n segmentsOnFrame[imageIdIndex] = [];\n }\n\n segmentsOnFrame[imageIdIndex].push(segmentIndex);\n\n break;\n }\n }\n\n const segmentIndexObject =\n segmentsPixelIndices.get(segmentIndex);\n segmentIndexObject[imageIdIndex] = indexCache;\n segmentsPixelIndices.set(segmentIndex, segmentIndexObject);\n }\n\n // trigger an event after each chunk\n if (shouldTriggerEvent) {\n const percentComplete = Math.round((i / groupsLen) * 100);\n triggerEvent(eventTarget, Events.SEGMENTATION_LOAD_PROGRESS, {\n percentComplete\n });\n }\n\n // schedule next chunk\n if (i < groupsLen) {\n setTimeout(processInChunks, 0);\n } else {\n // resolve the Promise when all chunks have been processed\n resolve();\n }\n }\n\n processInChunks();\n });\n}\n\nfunction checkOrientation(\n multiframe,\n validOrientations,\n sourceDataDimensions,\n tolerance\n) {\n const { SharedFunctionalGroupsSequence, PerFrameFunctionalGroupsSequence } =\n multiframe;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n\n // Check if in plane.\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[0];\n\n const iop =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const inPlane = validOrientations.some(operation =>\n compareArrays(iop, operation, tolerance)\n );\n\n if (inPlane) {\n return \"Planar\";\n }\n\n if (\n checkIfPerpendicular(iop, validOrientations[0], tolerance) &&\n sourceDataDimensions.includes(multiframe.Rows) &&\n sourceDataDimensions.includes(multiframe.Columns)\n ) {\n // Perpendicular and fits on same grid.\n return \"Perpendicular\";\n }\n\n return \"Oblique\";\n}\n\n/**\n * checkIfPerpendicular - Returns true if iop1 and iop2 are perpendicular\n * within a tolerance.\n *\n * @param {Number[6]} iop1 An ImageOrientationPatient array.\n * @param {Number[6]} iop2 An ImageOrientationPatient array.\n * @param {Number} tolerance.\n * @return {Boolean} True if iop1 and iop2 are equal.\n */\nfunction checkIfPerpendicular(iop1, iop2, tolerance) {\n const absDotColumnCosines = Math.abs(\n iop1[0] * iop2[0] + iop1[1] * iop2[1] + iop1[2] * iop2[2]\n );\n const absDotRowCosines = Math.abs(\n iop1[3] * iop2[3] + iop1[4] * iop2[4] + iop1[5] * iop2[5]\n );\n\n return (\n (absDotColumnCosines < tolerance ||\n Math.abs(absDotColumnCosines - 1) < tolerance) &&\n (absDotRowCosines < tolerance ||\n Math.abs(absDotRowCosines - 1) < tolerance)\n );\n}\n\n/**\n * unpackPixelData - Unpacks bit packed pixelData if the Segmentation is BINARY.\n *\n * @param {Object} multiframe The multiframe dataset.\n * @param {Object} options Options for the unpacking.\n * @return {Uint8Array} The unpacked pixelData.\n */\nfunction unpackPixelData(multiframe, options) {\n const segType = multiframe.SegmentationType;\n\n let data;\n if (Array.isArray(multiframe.PixelData)) {\n data = multiframe.PixelData[0];\n } else {\n data = multiframe.PixelData;\n }\n\n if (data === undefined) {\n log.error(\"This segmentation pixeldata is undefined.\");\n }\n\n if (segType === \"BINARY\") {\n // For extreme big data, we can't unpack the data at once and we need to\n // chunk it and unpack each chunk separately.\n // MAX 2GB is the limit right now to allocate a buffer\n return getUnpackedChunks(data, options.maxBytesPerChunk);\n }\n\n const pixelData = new Uint8Array(data);\n\n const max = multiframe.MaximumFractionalValue;\n const onlyMaxAndZero =\n pixelData.find(element => element !== 0 && element !== max) ===\n undefined;\n\n if (!onlyMaxAndZero) {\n // This is a fractional segmentation, which is not currently supported.\n return;\n }\n\n log.warn(\n \"This segmentation object is actually binary... processing as such.\"\n );\n\n return pixelData;\n}\n\nfunction getUnpackedChunks(data, maxBytesPerChunk) {\n var bitArray = new Uint8Array(data);\n var chunks = [];\n\n var maxBitsPerChunk = maxBytesPerChunk * 8;\n var numberOfChunks = Math.ceil((bitArray.length * 8) / maxBitsPerChunk);\n\n for (var i = 0; i < numberOfChunks; i++) {\n var startBit = i * maxBitsPerChunk;\n var endBit = Math.min(startBit + maxBitsPerChunk, bitArray.length * 8);\n\n var startByte = Math.floor(startBit / 8);\n var endByte = Math.ceil(endBit / 8);\n\n var chunk = bitArray.slice(startByte, endByte);\n var unpackedChunk = BitArray.unpack(chunk);\n\n chunks.push(unpackedChunk);\n }\n\n return chunks;\n}\n\n/**\n * getImageIdOfSourceImageBySourceImageSequence - Returns the Cornerstone imageId of the source image.\n *\n * @param {Object} SourceImageSequence Sequence describing the source image.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImageBySourceImageSequence(\n SourceImageSequence,\n sopUIDImageIdIndexMap\n) {\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n SourceImageSequence;\n\n return ReferencedFrameNumber\n ? getImageIdOfReferencedFrame(\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber,\n sopUIDImageIdIndexMap\n )\n : sopUIDImageIdIndexMap[ReferencedSOPInstanceUID];\n}\n\n/**\n * getImageIdOfSourceImagebyGeometry - Returns the Cornerstone imageId of the source image.\n *\n * @param {String} ReferencedSeriesInstanceUID Referenced series of the source image.\n * @param {String} FrameOfReferenceUID Frame of reference.\n * @param {Object} PerFrameFunctionalGroup Sequence describing segmentation reference attributes per frame.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @param {Float} tolerance The tolerance parameter\n *\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImagebyGeometry(\n ReferencedSeriesInstanceUID,\n FrameOfReferenceUID,\n PerFrameFunctionalGroup,\n imageIds,\n metadataProvider,\n tolerance\n) {\n if (\n ReferencedSeriesInstanceUID === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence[0] === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence[0]\n .ImagePositionPatient === undefined\n ) {\n return undefined;\n }\n\n for (\n let imageIdsIndexc = 0;\n imageIdsIndexc < imageIds.length;\n ++imageIdsIndexc\n ) {\n const sourceImageMetadata = metadataProvider.get(\n \"instance\",\n imageIds[imageIdsIndexc]\n );\n\n if (\n sourceImageMetadata === undefined ||\n sourceImageMetadata.ImagePositionPatient === undefined ||\n sourceImageMetadata.FrameOfReferenceUID !== FrameOfReferenceUID ||\n sourceImageMetadata.SeriesInstanceUID !==\n ReferencedSeriesInstanceUID\n ) {\n continue;\n }\n\n if (\n compareArrays(\n PerFrameFunctionalGroup.PlanePositionSequence[0]\n .ImagePositionPatient,\n sourceImageMetadata.ImagePositionPatient,\n tolerance\n )\n ) {\n return imageIds[imageIdsIndexc];\n }\n }\n}\n\n/**\n * getImageIdOfReferencedFrame - Returns the imageId corresponding to the\n * specified sopInstanceUid and frameNumber for multi-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {Number} frameNumber The frame number.\n * @param {String} imageIds The list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedFrame(\n sopInstanceUid,\n frameNumber,\n sopUIDImageIdIndexMap\n) {\n const imageId = sopUIDImageIdIndexMap[sopInstanceUid];\n\n if (!imageId) {\n return;\n }\n\n const imageIdFrameNumber = Number(imageId.split(\"frame=\")[1]);\n\n return imageIdFrameNumber === frameNumber - 1 ? imageId : undefined;\n}\n\n/**\n * getValidOrientations - returns an array of valid orientations.\n *\n * @param {Number[6]} iop The row (0..2) an column (3..5) direction cosines.\n * @return {Number[8][6]} An array of valid orientations.\n */\nfunction getValidOrientations(iop) {\n const orientations = [];\n\n // [0, 1, 2]: 0, 0hf, 0vf\n // [3, 4, 5]: 90, 90hf, 90vf\n // [6, 7]: 180, 270\n\n orientations[0] = iop;\n orientations[1] = flipIOP.h(iop);\n orientations[2] = flipIOP.v(iop);\n\n const iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2);\n\n orientations[3] = iop90;\n orientations[4] = flipIOP.h(iop90);\n orientations[5] = flipIOP.v(iop90);\n\n orientations[6] = rotateDirectionCosinesInPlane(iop, Math.PI);\n orientations[7] = rotateDirectionCosinesInPlane(iop, 1.5 * Math.PI);\n\n return orientations;\n}\n\n/**\n * alignPixelDataWithSourceData -\n *\n * @param {Ndarray} pixelData2D - The data to align.\n * @param {Number[6]} iop - The orientation of the image slice.\n * @param {Number[8][6]} orientations - An array of valid imageOrientationPatient values.\n * @param {Number} tolerance.\n * @return {Ndarray} The aligned pixelData.\n */\nfunction alignPixelDataWithSourceData(\n pixelData2D,\n iop,\n orientations,\n tolerance\n) {\n if (compareArrays(iop, orientations[0], tolerance)) {\n return pixelData2D;\n } else if (compareArrays(iop, orientations[1], tolerance)) {\n // Flipped vertically.\n\n // Undo Flip\n return flipMatrix2D.v(pixelData2D);\n } else if (compareArrays(iop, orientations[2], tolerance)) {\n // Flipped horizontally.\n\n // Unfo flip\n return flipMatrix2D.h(pixelData2D);\n } else if (compareArrays(iop, orientations[3], tolerance)) {\n //Rotated 90 degrees\n\n // Rotate back\n return rotateMatrix902D(pixelData2D);\n } else if (compareArrays(iop, orientations[4], tolerance)) {\n //Rotated 90 degrees and fliped horizontally.\n\n // Undo flip and rotate back.\n return rotateMatrix902D(flipMatrix2D.h(pixelData2D));\n } else if (compareArrays(iop, orientations[5], tolerance)) {\n // Rotated 90 degrees and fliped vertically\n\n // Unfo flip and rotate back.\n return rotateMatrix902D(flipMatrix2D.v(pixelData2D));\n } else if (compareArrays(iop, orientations[6], tolerance)) {\n // Rotated 180 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n\n return rotateMatrix902D(rotateMatrix902D(pixelData2D));\n } else if (compareArrays(iop, orientations[7], tolerance)) {\n // Rotated 270 degrees\n\n // Rotate back.\n return rotateMatrix902D(\n rotateMatrix902D(rotateMatrix902D(pixelData2D))\n );\n }\n}\n\n/**\n * compareArrays - Returns true if array1 and array2 are equal\n * within a tolerance.\n *\n * @param {Number[]} array1 - An array.\n * @param {Number[]} array2 - An array.\n * @param {Number} tolerance.\n * @return {Boolean} True if array1 and array2 are equal.\n */\nfunction compareArrays(array1, array2, tolerance) {\n if (array1.length != array2.length) {\n return false;\n }\n\n for (let i = 0; i < array1.length; ++i) {\n if (!nearlyEqual(array1[i], array2[i], tolerance)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getSegmentMetadata(multiframe, seriesInstanceUid) {\n const segmentSequence = multiframe.SegmentSequence;\n let data = [];\n\n if (Array.isArray(segmentSequence)) {\n data = [undefined, ...segmentSequence];\n } else {\n // Only one segment, will be stored as an object.\n data = [undefined, segmentSequence];\n }\n\n return {\n seriesInstanceUid,\n data\n };\n}\n\n/**\n * Reads a range of bytes from an array of ArrayBuffer chunks and\n * aggregate them into a new Uint8Array.\n *\n * @param {ArrayBuffer[]} chunks - An array of ArrayBuffer chunks.\n * @param {number} offset - The offset of the first byte to read.\n * @param {number} length - The number of bytes to read.\n * @returns {Uint8Array} A new Uint8Array containing the requested bytes.\n */\nfunction readFromUnpackedChunks(chunks, offset, length) {\n const mapping = getUnpackedOffsetAndLength(chunks, offset, length);\n\n // If all the data is in one chunk, we can just slice that chunk\n if (mapping.start.chunkIndex === mapping.end.chunkIndex) {\n return new Uint8Array(\n chunks[mapping.start.chunkIndex].buffer,\n mapping.start.offset,\n length\n );\n } else {\n // If the data spans multiple chunks, we need to create a new Uint8Array and copy the data from each chunk\n let result = new Uint8Array(length);\n let resultOffset = 0;\n\n for (\n let i = mapping.start.chunkIndex;\n i <= mapping.end.chunkIndex;\n i++\n ) {\n let start =\n i === mapping.start.chunkIndex ? mapping.start.offset : 0;\n let end =\n i === mapping.end.chunkIndex\n ? mapping.end.offset\n : chunks[i].length;\n\n result.set(\n new Uint8Array(chunks[i].buffer, start, end - start),\n resultOffset\n );\n resultOffset += end - start;\n }\n\n return result;\n }\n}\n\nfunction getUnpackedOffsetAndLength(chunks, offset, length) {\n var totalBytes = chunks.reduce((total, chunk) => total + chunk.length, 0);\n\n if (offset < 0 || offset + length > totalBytes) {\n throw new Error(\"Offset and length out of bounds\");\n }\n\n var startChunkIndex = 0;\n var startOffsetInChunk = offset;\n\n while (startOffsetInChunk >= chunks[startChunkIndex].length) {\n startOffsetInChunk -= chunks[startChunkIndex].length;\n startChunkIndex++;\n }\n\n var endChunkIndex = startChunkIndex;\n var endOffsetInChunk = startOffsetInChunk + length;\n\n while (endOffsetInChunk > chunks[endChunkIndex].length) {\n endOffsetInChunk -= chunks[endChunkIndex].length;\n endChunkIndex++;\n }\n\n return {\n start: { chunkIndex: startChunkIndex, offset: startOffsetInChunk },\n end: { chunkIndex: endChunkIndex, offset: endOffsetInChunk }\n };\n}\n\nfunction calculateCentroid(imageIdIndexBufferIndex, multiframe) {\n let xAcc = 0;\n let yAcc = 0;\n let zAcc = 0;\n let count = 0;\n\n for (const [imageIdIndex, bufferIndices] of Object.entries(\n imageIdIndexBufferIndex\n )) {\n const z = Number(imageIdIndex);\n\n if (!bufferIndices || bufferIndices.length === 0) {\n continue;\n }\n\n for (const bufferIndex of bufferIndices) {\n const y = Math.floor(bufferIndex / multiframe.Rows);\n const x = bufferIndex % multiframe.Rows;\n\n xAcc += x;\n yAcc += y;\n zAcc += z;\n\n count++;\n }\n }\n\n return { xAcc, yAcc, zAcc, count };\n}\n\nconst Segmentation = {\n generateSegmentation,\n generateToolState,\n fillSegmentation\n};\n\nexport default Segmentation;\nexport { fillSegmentation, generateSegmentation, generateToolState };\n","import Segmentation_3X from \"./Segmentation_3X\";\nimport Segmentation_4X from \"./Segmentation_4X\";\n\nconst Segmentation = {\n generateSegmentation,\n generateToolState,\n fillSegmentation\n};\n\nexport default Segmentation;\n\n/**\n * generateSegmentation - Generates a DICOM Segmentation object given cornerstoneTools data.\n *\n * @param {object[]} images An array of the cornerstone image objects.\n * @param {Object|Object[]} labelmaps3DorBrushData For 4.X: The cornerstone `Labelmap3D` object, or an array of objects.\n * For 3.X: the BrushData.\n * @param {number} cornerstoneToolsVersion The cornerstoneTools major version to map against.\n * @returns {Object}\n */\nfunction generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options = { includeSliceSpacing: true },\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options\n );\n }\n\n if (cornerstoneToolsVersion === 3) {\n return Segmentation_3X.generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options\n );\n }\n\n console.warn(\n `No generateSegmentation adapater for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n\n/**\n * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer The SEG arrayBuffer.\n * @param {*} metadataProvider\n * @param {bool} skipOverlapping - skip checks for overlapping segs, default value false.\n * @param {number} tolerance - default value 1.e-3.\n * @param {number} cornerstoneToolsVersion - default value 4.\n *\n * @returns {Object} The toolState and an object from which the\n * segment metadata can be derived.\n */\nfunction generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping = false,\n tolerance = 1e-3,\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping,\n tolerance\n );\n }\n\n if (cornerstoneToolsVersion === 3) {\n return Segmentation_3X.generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider\n );\n }\n\n console.warn(\n `No generateToolState adapater for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n\n/**\n * fillSegmentation - Fills a derived segmentation dataset with cornerstoneTools `LabelMap3D` data.\n *\n * @param {object[]} segmentation An empty segmentation derived dataset.\n * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects.\n * @param {Object} userOptions Options object to override default options.\n * @returns {Blob} description\n */\nfunction fillSegmentation(\n segmentation,\n inputLabelmaps3D,\n options = { includeSliceSpacing: true },\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.fillSegmentation(\n segmentation,\n inputLabelmaps3D,\n options\n );\n }\n\n console.warn(\n `No generateSegmentation adapater for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n","import MeasurementReport from \"./MeasurementReport\";\nimport Length from \"./Length\";\nimport FreehandRoi from \"./FreehandRoi\";\nimport Bidirectional from \"./Bidirectional\";\nimport EllipticalRoi from \"./EllipticalRoi\";\nimport CircleRoi from \"./CircleRoi\";\nimport ArrowAnnotate from \"./ArrowAnnotate\";\nimport CobbAngle from \"./CobbAngle\";\nimport Angle from \"./Angle\";\nimport RectangleRoi from \"./RectangleRoi\";\n// Segmentation\nimport Segmentation from \"./Segmentation\";\n\nconst CornerstoneSR = {\n Length,\n FreehandRoi,\n Bidirectional,\n EllipticalRoi,\n CircleRoi,\n ArrowAnnotate,\n MeasurementReport,\n CobbAngle,\n Angle,\n RectangleRoi\n};\n\nconst CornerstoneSEG = {\n Segmentation\n};\n\nexport { CornerstoneSR, CornerstoneSEG };\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","export default \"Cornerstone3DTools@^0.1.0\";\n","// This is a custom coding scheme defined to store some annotations from Cornerstone.\n// Note: CodeMeaning is VR type LO, which means we only actually support 64 characters\n// here this is fine for most labels, but may be problematic at some point.\nconst CORNERSTONEFREETEXT = \"CORNERSTONEFREETEXT\";\n\n// Cornerstone specified coding scheme for storing findings\nconst CodingSchemeDesignator = \"CORNERSTONEJS\";\n\nconst CodingScheme = {\n CodingSchemeDesignator,\n codeValues: {\n CORNERSTONEFREETEXT\n }\n};\n\nexport default CodingScheme;\n","import { normalizers, data, utilities, derivations } from \"dcmjs\";\n\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport { toArray, codeMeaningEquals } from \"../helpers\";\nimport Cornerstone3DCodingScheme from \"./CodingScheme\";\n\nconst { TID1500, addAccessors } = utilities;\n\nconst { StructuredReport } = derivations;\n\nconst { Normalizer } = normalizers;\n\nconst { TID1500MeasurementReport, TID1501MeasurementGroup } = TID1500;\n\nconst { DicomMetaDictionary } = data;\n\nconst FINDING = { CodingSchemeDesignator: \"DCM\", CodeValue: \"121071\" };\nconst FINDING_SITE = { CodingSchemeDesignator: \"SCT\", CodeValue: \"363698007\" };\nconst FINDING_SITE_OLD = { CodingSchemeDesignator: \"SRT\", CodeValue: \"G-C0E3\" };\n\nconst codeValueMatch = (group, code, oldCode?) => {\n const { ConceptNameCodeSequence } = group;\n if (!ConceptNameCodeSequence) return;\n const { CodingSchemeDesignator, CodeValue } = ConceptNameCodeSequence;\n return (\n (CodingSchemeDesignator == code.CodingSchemeDesignator &&\n CodeValue == code.CodeValue) ||\n (oldCode &&\n CodingSchemeDesignator == oldCode.CodingSchemeDesignator &&\n CodeValue == oldCode.CodeValue)\n );\n};\n\nfunction getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass,\n worldToImageCoords\n) {\n const args = toolClass.getTID300RepresentationArguments(\n tool,\n worldToImageCoords\n );\n args.ReferencedSOPSequence = ReferencedSOPSequence;\n\n const TID300Measurement = new toolClass.TID300Representation(args);\n\n return TID300Measurement;\n}\n\nfunction getMeasurementGroup(\n toolType,\n toolData,\n ReferencedSOPSequence,\n worldToImageCoords\n) {\n const toolTypeData = toolData[toolType];\n const toolClass =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolType];\n if (\n !toolTypeData ||\n !toolTypeData.data ||\n !toolTypeData.data.length ||\n !toolClass\n ) {\n return;\n }\n\n // Loop through the array of tool instances\n // for this tool\n const Measurements = toolTypeData.data.map(tool => {\n return getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass,\n worldToImageCoords\n );\n });\n\n return new TID1501MeasurementGroup(Measurements);\n}\n\nexport default class MeasurementReport {\n public static CORNERSTONE_3D_TAG = CORNERSTONE_3D_TAG;\n public static MEASUREMENT_BY_TOOLTYPE = {};\n public static CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE = {};\n public static CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE = {};\n\n static getCornerstoneLabelFromDefaultState(defaultState) {\n const { findingSites = [], finding } = defaultState;\n\n const cornersoneFreeTextCodingValue =\n Cornerstone3DCodingScheme.codeValues.CORNERSTONEFREETEXT;\n\n const freeTextLabel = findingSites.find(\n fs => fs.CodeValue === cornersoneFreeTextCodingValue\n );\n\n if (freeTextLabel) {\n return freeTextLabel.CodeMeaning;\n }\n\n if (finding && finding.CodeValue === cornersoneFreeTextCodingValue) {\n return finding.CodeMeaning;\n }\n }\n\n static generateDatasetMeta() {\n // TODO: what is the correct metaheader\n // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html\n // TODO: move meta creation to happen in derivations.js\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n //MediaStorageSOPClassUID\n //MediaStorageSOPInstanceUID: sopCommonModule.sopInstanceUID,\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n return _meta;\n }\n\n static generateDerivationSourceDataset = instance => {\n const _vrMap = {\n PixelData: \"OW\"\n };\n\n const _meta = MeasurementReport.generateDatasetMeta();\n\n const derivationSourceDataset = {\n ...instance,\n _meta: _meta,\n _vrMap: _vrMap\n };\n\n return derivationSourceDataset;\n };\n\n static getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n toolType\n ) {\n const { ContentSequence } = MeasurementGroup;\n\n const contentSequenceArr = toArray(ContentSequence);\n const findingGroup = contentSequenceArr.find(group =>\n codeValueMatch(group, FINDING)\n );\n const findingSiteGroups =\n contentSequenceArr.filter(group =>\n codeValueMatch(group, FINDING_SITE, FINDING_SITE_OLD)\n ) || [];\n const NUMGroup = contentSequenceArr.find(\n group => group.ValueType === \"NUM\"\n );\n const SCOORDGroup = toArray(NUMGroup.ContentSequence).find(\n group => group.ValueType === \"SCOORD\"\n );\n const { ReferencedSOPSequence } = SCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n ReferencedSOPSequence;\n\n const referencedImageId =\n sopInstanceUIDToImageIdMap[ReferencedSOPInstanceUID];\n const imagePlaneModule = metadata.get(\n \"imagePlaneModule\",\n referencedImageId\n );\n\n const finding = findingGroup\n ? addAccessors(findingGroup.ConceptCodeSequence)\n : undefined;\n const findingSites = findingSiteGroups.map(fsg => {\n return addAccessors(fsg.ConceptCodeSequence);\n });\n\n const defaultState = {\n description: undefined,\n sopInstanceUid: ReferencedSOPInstanceUID,\n annotation: {\n annotationUID: DicomMetaDictionary.uid(),\n metadata: {\n toolName: toolType,\n referencedImageId,\n FrameOfReferenceUID: imagePlaneModule.frameOfReferenceUID,\n label: \"\"\n },\n data: undefined\n },\n finding,\n findingSites\n };\n if (defaultState.finding) {\n defaultState.description = defaultState.finding.CodeMeaning;\n }\n\n defaultState.annotation.metadata.label =\n MeasurementReport.getCornerstoneLabelFromDefaultState(defaultState);\n\n return {\n defaultState,\n NUMGroup,\n SCOORDGroup,\n ReferencedSOPSequence,\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber\n };\n }\n\n static generateReport(\n toolState,\n metadataProvider,\n worldToImageCoords,\n options\n ) {\n // ToolState for array of imageIDs to a Report\n // Assume Cornerstone metadata provider has access to Study / Series / Sop Instance UID\n let allMeasurementGroups = [];\n\n /* Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Date\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Time\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study ID\n */\n\n const sopInstanceUIDsToSeriesInstanceUIDMap = {};\n const derivationSourceDatasets = [];\n\n const _meta = MeasurementReport.generateDatasetMeta();\n\n // Loop through each image in the toolData\n Object.keys(toolState).forEach(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n const instance = metadataProvider.get(\"instance\", imageId);\n\n const { sopInstanceUID, sopClassUID } = sopCommonModule;\n const { SeriesInstanceUID: seriesInstanceUID } = instance;\n\n sopInstanceUIDsToSeriesInstanceUIDMap[sopInstanceUID] =\n seriesInstanceUID;\n\n if (\n !derivationSourceDatasets.find(\n dsd => dsd.SeriesInstanceUID === seriesInstanceUID\n )\n ) {\n // Entry not present for series, create one.\n const derivationSourceDataset =\n MeasurementReport.generateDerivationSourceDataset(instance);\n\n derivationSourceDatasets.push(derivationSourceDataset);\n }\n\n const frameNumber = metadataProvider.get(\"frameNumber\", imageId);\n const toolData = toolState[imageId];\n const toolTypes = Object.keys(toolData);\n\n const ReferencedSOPSequence = {\n ReferencedSOPClassUID: sopClassUID,\n ReferencedSOPInstanceUID: sopInstanceUID,\n ReferencedFrameNumber: undefined\n };\n\n if (\n (instance &&\n instance.NumberOfFrames &&\n instance.NumberOfFrames > 1) ||\n Normalizer.isMultiframeSOPClassUID(sopClassUID)\n ) {\n ReferencedSOPSequence.ReferencedFrameNumber = frameNumber;\n }\n\n // Loop through each tool type for the image\n const measurementGroups = [];\n\n toolTypes.forEach(toolType => {\n const group = getMeasurementGroup(\n toolType,\n toolData,\n ReferencedSOPSequence,\n worldToImageCoords\n );\n if (group) {\n measurementGroups.push(group);\n }\n });\n\n allMeasurementGroups =\n allMeasurementGroups.concat(measurementGroups);\n });\n\n const tid1500MeasurementReport = new TID1500MeasurementReport(\n { TID1501MeasurementGroups: allMeasurementGroups },\n options\n );\n\n const report = new StructuredReport(derivationSourceDatasets, options);\n\n const contentItem = tid1500MeasurementReport.contentItem(\n derivationSourceDatasets,\n { ...options, sopInstanceUIDsToSeriesInstanceUIDMap }\n );\n\n // Merge the derived dataset with the content from the Measurement Report\n report.dataset = Object.assign(report.dataset, contentItem);\n report.dataset._meta = _meta;\n\n return report;\n }\n\n /**\n * Generate Cornerstone tool state from dataset\n */\n static generateToolState(\n dataset,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata,\n hooks\n ) {\n // For now, bail out if the dataset is not a TID1500 SR with length measurements\n if (dataset.ContentTemplateSequence.TemplateIdentifier !== \"1500\") {\n throw new Error(\n \"This package can currently only interpret DICOM SR TID 1500\"\n );\n }\n\n const REPORT = \"Imaging Measurements\";\n const GROUP = \"Measurement Group\";\n const TRACKING_IDENTIFIER = \"Tracking Identifier\";\n const TRACKING_UNIQUE_IDENTIFIER = \"Tracking Unique Identifier\";\n\n // Identify the Imaging Measurements\n const imagingMeasurementContent = toArray(dataset.ContentSequence).find(\n codeMeaningEquals(REPORT)\n );\n\n // Retrieve the Measurements themselves\n const measurementGroups = toArray(\n imagingMeasurementContent.ContentSequence\n ).filter(codeMeaningEquals(GROUP));\n\n // For each of the supported measurement types, compute the measurement data\n const measurementData = {};\n\n const cornerstoneToolClasses =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE;\n\n const registeredToolClasses = [];\n\n Object.keys(cornerstoneToolClasses).forEach(key => {\n registeredToolClasses.push(cornerstoneToolClasses[key]);\n measurementData[key] = [];\n });\n\n measurementGroups.forEach(measurementGroup => {\n try {\n const measurementGroupContentSequence = toArray(\n measurementGroup.ContentSequence\n );\n\n const TrackingIdentifierGroup =\n measurementGroupContentSequence.find(\n contentItem =>\n contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_IDENTIFIER\n );\n\n const TrackingIdentifierValue =\n TrackingIdentifierGroup.TextValue;\n\n const TrackingUniqueIdentifierGroup =\n measurementGroupContentSequence.find(\n contentItem =>\n contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_UNIQUE_IDENTIFIER\n );\n\n const TrackingUniqueIdentifierValue =\n TrackingUniqueIdentifierGroup?.UID;\n\n const toolClass =\n hooks?.getToolClass?.(\n measurementGroup,\n dataset,\n registeredToolClasses\n ) ||\n registeredToolClasses.find(tc =>\n tc.isValidCornerstoneTrackingIdentifier(\n TrackingIdentifierValue\n )\n );\n\n if (toolClass) {\n const measurement = toolClass.getMeasurementData(\n measurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n );\n\n measurement.TrackingUniqueIdentifier =\n TrackingUniqueIdentifierValue;\n\n console.log(`=== ${toolClass.toolType} ===`);\n console.log(measurement);\n\n measurementData[toolClass.toolType].push(measurement);\n }\n } catch (e) {\n console.warn(\n \"Unable to generate tool state for\",\n measurementGroup,\n e\n );\n }\n });\n\n // NOTE: There is no way of knowing the cornerstone imageIds as that could be anything.\n // That is up to the consumer to derive from the SOPInstanceUIDs.\n return measurementData;\n }\n\n /**\n * Register a new tool type.\n * @param toolClass to perform I/O to DICOM for this tool\n */\n public static registerTool(toolClass) {\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[\n toolClass.utilityToolType\n ] = toolClass;\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[\n toolClass.toolType\n ] = toolClass;\n MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.toolType] =\n toolClass.utilityToolType;\n }\n}\n","import MeasurementReport from \"./MeasurementReport\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport CodingScheme from \"./CodingScheme\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst ARROW_ANNOTATE = \"ArrowAnnotate\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${ARROW_ANNOTATE}`;\n\nconst { codeValues, CodingSchemeDesignator } = CodingScheme;\n\nclass ArrowAnnotate {\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n ArrowAnnotate.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const text = defaultState.annotation.metadata.label;\n\n const { GraphicData } = SCOORDGroup;\n\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n // Since the arrowAnnotate measurement is just a point, to generate the tool state\n // we derive the second point based on the image size relative to the first point.\n if (worldCoords.length === 1) {\n const imagePixelModule = metadata.get(\n \"imagePixelModule\",\n referencedImageId\n );\n\n let xOffset = 10;\n let yOffset = 10;\n\n if (imagePixelModule) {\n const { columns, rows } = imagePixelModule;\n xOffset = columns / 10;\n yOffset = rows / 10;\n }\n\n const secondPoint = imageToWorldCoords(referencedImageId, [\n GraphicData[0] + xOffset,\n GraphicData[1] + yOffset\n ]);\n\n worldCoords.push(secondPoint);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n text,\n handles: {\n arrowFirst: true,\n points: [worldCoords[0], worldCoords[1]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, metadata } = tool;\n let { finding, findingSites } = tool;\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"ArrowAnnotate.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const { points, arrowFirst } = data.handles;\n\n let point;\n\n if (arrowFirst) {\n point = points[0];\n } else {\n point = points[1];\n }\n\n const pointImage = worldToImageCoords(referencedImageId, point);\n\n const TID300RepresentationArguments = {\n points: [\n {\n x: pointImage[0],\n y: pointImage[1]\n }\n ],\n trackingIdentifierTextValue,\n findingSites: findingSites || []\n };\n\n // If freetext finding isn't present, add it from the tool text.\n if (!finding || finding.CodeValue !== codeValues.CORNERSTONEFREETEXT) {\n finding = {\n CodeValue: codeValues.CORNERSTONEFREETEXT,\n CodingSchemeDesignator,\n CodeMeaning: data.text\n };\n }\n\n TID300RepresentationArguments.finding = finding;\n\n return TID300RepresentationArguments;\n }\n}\n\nArrowAnnotate.toolType = ARROW_ANNOTATE;\nArrowAnnotate.utilityToolType = ARROW_ANNOTATE;\nArrowAnnotate.TID300Representation = TID300Point;\nArrowAnnotate.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === ARROW_ANNOTATE;\n};\n\nMeasurementReport.registerTool(ArrowAnnotate);\n\nexport default ArrowAnnotate;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport { toArray } from \"../helpers\";\n\nconst { Bidirectional: TID300Bidirectional } = utilities.TID300;\n\nconst BIDIRECTIONAL = \"Bidirectional\";\nconst LONG_AXIS = \"Long Axis\";\nconst SHORT_AXIS = \"Short Axis\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${BIDIRECTIONAL}`;\n\nclass Bidirectional {\n public static toolType = BIDIRECTIONAL;\n public static utilityToolType = BIDIRECTIONAL;\n public static TID300Representation = TID300Bidirectional;\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === BIDIRECTIONAL;\n };\n\n public static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Bidirectional.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n const { ContentSequence } = MeasurementGroup;\n\n const longAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS\n );\n\n const longAxisSCOORDGroup = toArray(\n longAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const shortAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS\n );\n\n const shortAxisSCOORDGroup = toArray(\n shortAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const worldCoords = [];\n\n [longAxisSCOORDGroup, shortAxisSCOORDGroup].forEach(group => {\n const { GraphicData } = group;\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n });\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[2],\n worldCoords[3]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n length: longAxisNUMGroup.MeasuredValueSequence.NumericValue,\n width: shortAxisNUMGroup.MeasuredValueSequence.NumericValue\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Bidirectional.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const { length, width } =\n cachedStats[`imageId:${referencedImageId}`] || {};\n const { points } = handles;\n\n // Find the length and width point pairs by comparing the distances of the points at 0,1 to points at 2,3\n const firstPointPairs = [points[0], points[1]];\n const secondPointPairs = [points[2], points[3]];\n\n const firstPointPairsDistance = Math.sqrt(\n Math.pow(firstPointPairs[0][0] - firstPointPairs[1][0], 2) +\n Math.pow(firstPointPairs[0][1] - firstPointPairs[1][1], 2) +\n Math.pow(firstPointPairs[0][2] - firstPointPairs[1][2], 2)\n );\n\n const secondPointPairsDistance = Math.sqrt(\n Math.pow(secondPointPairs[0][0] - secondPointPairs[1][0], 2) +\n Math.pow(secondPointPairs[0][1] - secondPointPairs[1][1], 2) +\n Math.pow(secondPointPairs[0][2] - secondPointPairs[1][2], 2)\n );\n\n let shortAxisPoints;\n let longAxisPoints;\n if (firstPointPairsDistance > secondPointPairsDistance) {\n shortAxisPoints = firstPointPairs;\n longAxisPoints = secondPointPairs;\n } else {\n shortAxisPoints = secondPointPairs;\n longAxisPoints = firstPointPairs;\n }\n\n const longAxisStartImage = worldToImageCoords(\n referencedImageId,\n shortAxisPoints[0]\n );\n const longAxisEndImage = worldToImageCoords(\n referencedImageId,\n shortAxisPoints[1]\n );\n const shortAxisStartImage = worldToImageCoords(\n referencedImageId,\n longAxisPoints[0]\n );\n const shortAxisEndImage = worldToImageCoords(\n referencedImageId,\n longAxisPoints[1]\n );\n\n return {\n longAxis: {\n point1: {\n x: longAxisStartImage[0],\n y: longAxisStartImage[1]\n },\n point2: {\n x: longAxisEndImage[0],\n y: longAxisEndImage[1]\n }\n },\n shortAxis: {\n point1: {\n x: shortAxisStartImage[0],\n y: shortAxisStartImage[1]\n },\n point2: {\n x: shortAxisEndImage[0],\n y: shortAxisEndImage[1]\n }\n },\n longAxisLength: length,\n shortAxisLength: width,\n trackingIdentifierTextValue,\n finding: finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(Bidirectional);\n\nexport default Bidirectional;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\n\nconst MEASUREMENT_TYPE = \"Angle\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${MEASUREMENT_TYPE}`;\n\nclass Angle {\n public static toolType = MEASUREMENT_TYPE;\n public static utilityToolType = MEASUREMENT_TYPE;\n public static TID300Representation = TID300CobbAngle;\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === MEASUREMENT_TYPE;\n };\n\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n public static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Angle.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [worldCoords[0], worldCoords[1], worldCoords[3]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n angle: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n public static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Angle.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const start1 = worldToImageCoords(referencedImageId, handles.points[0]);\n const middle = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const end = worldToImageCoords(referencedImageId, handles.points[2]);\n\n const point1 = { x: start1[0], y: start1[1] };\n const point2 = { x: middle[0], y: middle[1] };\n const point3 = point2;\n const point4 = { x: end[0], y: end[1] };\n\n const { angle } = cachedStats[`imageId:${referencedImageId}`] || {};\n\n // Represented as a cobb angle\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle: angle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(Angle);\n\nexport default Angle;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\n\nconst MEASUREMENT_TYPE = \"CobbAngle\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${MEASUREMENT_TYPE}`;\n\nclass CobbAngle {\n public static toolType = MEASUREMENT_TYPE;\n public static utilityToolType = MEASUREMENT_TYPE;\n public static TID300Representation = TID300CobbAngle;\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === MEASUREMENT_TYPE;\n };\n\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n public static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n CobbAngle.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[2],\n worldCoords[3]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n angle: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n public static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const start1 = worldToImageCoords(referencedImageId, handles.points[0]);\n const end1 = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const start2 = worldToImageCoords(referencedImageId, handles.points[2]);\n const end2 = worldToImageCoords(referencedImageId, handles.points[3]);\n\n const point1 = { x: start1[0], y: start1[1] };\n const point2 = { x: end1[0], y: end1[1] };\n const point3 = { x: start2[0], y: start2[1] };\n const point4 = { x: end2[0], y: end2[1] };\n\n const { angle } = cachedStats[`imageId:${referencedImageId}`] || {};\n\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle: angle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(CobbAngle);\n\nexport default CobbAngle;\n","import CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\n\nexport default function isValidCornerstoneTrackingIdentifier(\n trackingIdentifier: string\n): boolean {\n if (!trackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = trackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n // The following is needed since the new cornerstone3D has changed\n // case names such as EllipticalRoi to EllipticalROI\n return toolType.toLowerCase() === this.toolType.toLowerCase();\n}\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport isValidCornerstoneTrackingIdentifier from \"./isValidCornerstoneTrackingIdentifier\";\n\nconst { Circle: TID300Circle } = utilities.TID300;\n\nconst CIRCLEROI = \"CircleROI\";\n\nclass CircleROI {\n static trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${CIRCLEROI}`;\n static toolType = CIRCLEROI;\n static utilityToolType = CIRCLEROI;\n static TID300Representation = TID300Circle;\n static isValidCornerstoneTrackingIdentifier =\n isValidCornerstoneTrackingIdentifier;\n\n /** Gets the measurement data for cornerstone, given DICOM SR measurement data. */\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n CircleROI.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n\n // GraphicData is ordered as [centerX, centerY, endX, endY]\n const pointsWorld = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const worldPos = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n\n pointsWorld.push(worldPos);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [...pointsWorld],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0,\n // Dummy values to be updated by cornerstone\n radius: 0,\n perimeter: 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n /**\n * Gets the TID 300 representation of a circle, given the cornerstone representation.\n *\n * @param {Object} tool\n * @returns\n */\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"CircleROI.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const center = worldToImageCoords(referencedImageId, handles.points[0]);\n const end = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const points = [];\n points.push({ x: center[0], y: center[1] });\n points.push({ x: end[0], y: end[1] });\n\n const { area, radius } =\n cachedStats[`imageId:${referencedImageId}`] || {};\n const perimeter = 2 * Math.PI * radius;\n\n return {\n area,\n perimeter,\n radius,\n points,\n trackingIdentifierTextValue: this.trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(CircleROI);\n\nexport default CircleROI;\n","import { vec3 } from \"gl-matrix\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport isValidCornerstoneTrackingIdentifier from \"./isValidCornerstoneTrackingIdentifier\";\n\ntype Point3 = [number, number, number];\n\nconst { Ellipse: TID300Ellipse } = utilities.TID300;\n\nconst ELLIPTICALROI = \"EllipticalROI\";\nconst EPSILON = 1e-4;\n\nclass EllipticalROI {\n static trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${ELLIPTICALROI}`;\n static toolType = ELLIPTICALROI;\n static utilityToolType = ELLIPTICALROI;\n static TID300Representation = TID300Ellipse;\n static isValidCornerstoneTrackingIdentifier =\n isValidCornerstoneTrackingIdentifier;\n\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n EllipticalROI.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n\n // GraphicData is ordered as [majorAxisStartX, majorAxisStartY, majorAxisEndX, majorAxisEndY, minorAxisStartX, minorAxisStartY, minorAxisEndX, minorAxisEndY]\n // But Cornerstone3D points are ordered as top, bottom, left, right for the\n // ellipse so we need to identify if the majorAxis is horizontal or vertical\n // in the image plane and then choose the correct points to use for the ellipse.\n const pointsWorld: Point3[] = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const worldPos = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n\n pointsWorld.push(worldPos);\n }\n\n const majorAxisStart = vec3.fromValues(...pointsWorld[0]);\n const majorAxisEnd = vec3.fromValues(...pointsWorld[1]);\n const minorAxisStart = vec3.fromValues(...pointsWorld[2]);\n const minorAxisEnd = vec3.fromValues(...pointsWorld[3]);\n\n const majorAxisVec = vec3.create();\n vec3.sub(majorAxisVec, majorAxisEnd, majorAxisStart);\n\n // normalize majorAxisVec to avoid scaling issues\n vec3.normalize(majorAxisVec, majorAxisVec);\n\n const minorAxisVec = vec3.create();\n vec3.sub(minorAxisVec, minorAxisEnd, minorAxisStart);\n vec3.normalize(minorAxisVec, minorAxisVec);\n\n const imagePlaneModule = metadata.get(\n \"imagePlaneModule\",\n referencedImageId\n );\n\n if (!imagePlaneModule) {\n throw new Error(\"imageId does not have imagePlaneModule metadata\");\n }\n\n const { columnCosines } = imagePlaneModule;\n\n // find which axis is parallel to the columnCosines\n const columnCosinesVec = vec3.fromValues(\n columnCosines[0],\n columnCosines[1],\n columnCosines[2]\n );\n const projectedMajorAxisOnColVec = vec3.dot(\n columnCosinesVec,\n majorAxisVec\n );\n\n const projectedMinorAxisOnColVec = vec3.dot(\n columnCosinesVec,\n minorAxisVec\n );\n\n const absoluteOfMajorDotProduct = Math.abs(projectedMajorAxisOnColVec);\n const absoluteOfMinorDotProduct = Math.abs(projectedMinorAxisOnColVec);\n\n let ellipsePoints = [];\n if (Math.abs(absoluteOfMajorDotProduct - 1) < EPSILON) {\n ellipsePoints = [\n pointsWorld[0],\n pointsWorld[1],\n pointsWorld[2],\n pointsWorld[3]\n ];\n } else if (Math.abs(absoluteOfMinorDotProduct - 1) < EPSILON) {\n ellipsePoints = [\n pointsWorld[2],\n pointsWorld[3],\n pointsWorld[0],\n pointsWorld[1]\n ];\n } else {\n console.warn(\"OBLIQUE ELLIPSE NOT YET SUPPORTED\");\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [...ellipsePoints],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n const rotation = data.initialRotation || 0;\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"EllipticalROI.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n let top, bottom, left, right;\n // this way when it's restored we can assume the initial rotation is 0.\n if (rotation == 90 || rotation == 270) {\n bottom = worldToImageCoords(referencedImageId, handles.points[2]);\n top = worldToImageCoords(referencedImageId, handles.points[3]);\n left = worldToImageCoords(referencedImageId, handles.points[0]);\n right = worldToImageCoords(referencedImageId, handles.points[1]);\n } else {\n top = worldToImageCoords(referencedImageId, handles.points[0]);\n bottom = worldToImageCoords(referencedImageId, handles.points[1]);\n left = worldToImageCoords(referencedImageId, handles.points[2]);\n right = worldToImageCoords(referencedImageId, handles.points[3]);\n }\n\n // find the major axis and minor axis\n const topBottomLength = Math.abs(top[1] - bottom[1]);\n const leftRightLength = Math.abs(left[0] - right[0]);\n\n const points = [];\n if (topBottomLength > leftRightLength) {\n // major axis is bottom to top\n points.push({ x: top[0], y: top[1] });\n points.push({ x: bottom[0], y: bottom[1] });\n\n // minor axis is left to right\n points.push({ x: left[0], y: left[1] });\n points.push({ x: right[0], y: right[1] });\n } else {\n // major axis is left to right\n points.push({ x: left[0], y: left[1] });\n points.push({ x: right[0], y: right[1] });\n\n // minor axis is bottom to top\n points.push({ x: top[0], y: top[1] });\n points.push({ x: bottom[0], y: bottom[1] });\n }\n\n const { area } = cachedStats[`imageId:${referencedImageId}`] || {};\n\n return {\n area,\n points,\n trackingIdentifierTextValue: this.trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(EllipticalROI);\n\nexport default EllipticalROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nconst TOOLTYPE = \"RectangleROI\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${TOOLTYPE}`;\n\nclass RectangleROI {\n public static toolType = TOOLTYPE;\n public static utilityToolType = TOOLTYPE;\n public static TID300Representation = TID300Polyline;\n\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === TOOLTYPE;\n };\n\n public static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n RectangleROI.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[3],\n worldCoords[2]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const corners = handles.points.map(point =>\n worldToImageCoords(referencedImageId, point)\n );\n\n const { area, perimeter } = cachedStats;\n\n return {\n points: [\n corners[0],\n corners[1],\n corners[3],\n corners[2],\n corners[0]\n ],\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(RectangleROI);\n\nexport default RectangleROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { Length: TID300Length } = utilities.TID300;\n\nconst LENGTH = \"Length\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${LENGTH}`;\n\nclass Length {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Length.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [worldCoords[0], worldCoords[1]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n length: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Length.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const start = worldToImageCoords(referencedImageId, handles.points[0]);\n const end = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const point1 = { x: start[0], y: start[1] };\n const point2 = { x: end[0], y: end[1] };\n\n const { length: distance } =\n cachedStats[`imageId:${referencedImageId}`] || {};\n\n return {\n point1,\n point2,\n distance,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nLength.toolType = LENGTH;\nLength.utilityToolType = LENGTH;\nLength.TID300Representation = TID300Length;\nLength.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === LENGTH;\n};\n\nMeasurementReport.registerTool(Length);\n\nexport default Length;\n","import MeasurementReport from \"./MeasurementReport\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport { vec3 } from \"gl-matrix\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nconst PLANARFREEHANDROI = \"PlanarFreehandROI\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${PLANARFREEHANDROI}`;\nconst closedContourThreshold = 1e-5;\n\nclass PlanarFreehandROI {\n public static toolType = PLANARFREEHANDROI;\n public static utilityToolType = PLANARFREEHANDROI;\n public static TID300Representation = TID300Polyline;\n public static isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === PLANARFREEHANDROI;\n };\n\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n PlanarFreehandROI.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n\n const worldCoords = [];\n\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n\n worldCoords.push(point);\n }\n\n const distanceBetweenFirstAndLastPoint = vec3.distance(\n worldCoords[worldCoords.length - 1],\n worldCoords[0]\n );\n\n let isOpenContour = true;\n\n // If the contour is closed, this should have been encoded as exactly the same point, so check for a very small difference.\n if (distanceBetweenFirstAndLastPoint < closedContourThreshold) {\n worldCoords.pop(); // Remove the last element which is duplicated.\n\n isOpenContour = false;\n }\n\n const points = [];\n\n if (isOpenContour) {\n points.push(worldCoords[0], worldCoords[worldCoords.length - 1]);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n polyline: worldCoords,\n isOpenContour,\n handles: {\n points,\n activeHandleIndex: null,\n textBox: {\n hasMoved: false\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { isOpenContour, polyline } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"PlanarFreehandROI.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const points = polyline.map(worldPos =>\n worldToImageCoords(referencedImageId, worldPos)\n );\n\n if (!isOpenContour) {\n // Need to repeat the first point at the end of to have an explicitly closed contour.\n const firstPoint = points[0];\n\n // Explicitly expand to avoid ciruclar references.\n points.push([firstPoint[0], firstPoint[1]]);\n }\n\n const area = 0; // TODO -> The tool doesn't have these stats yet.\n const perimeter = 0;\n\n return {\n points,\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nMeasurementReport.registerTool(PlanarFreehandROI);\n\nexport default PlanarFreehandROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst PROBE = \"Probe\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${PROBE}`;\n\nclass Probe {\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Probe.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: worldCoords,\n activeHandleIndex: null,\n textBox: {\n hasMoved: false\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, metadata } = tool;\n let { finding, findingSites } = tool;\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Probe.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const { points } = data.handles;\n\n const pointsImage = points.map(point => {\n const pointImage = worldToImageCoords(referencedImageId, point);\n return {\n x: pointImage[0],\n y: pointImage[1]\n };\n });\n\n const TID300RepresentationArguments = {\n points: pointsImage,\n trackingIdentifierTextValue,\n findingSites: findingSites || [],\n finding\n };\n\n return TID300RepresentationArguments;\n }\n}\n\nProbe.toolType = PROBE;\nProbe.utilityToolType = PROBE;\nProbe.TID300Representation = TID300Point;\nProbe.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === PROBE;\n};\n\nMeasurementReport.registerTool(Probe);\n\nexport default Probe;\n","import { normalizers, derivations } from \"dcmjs\";\nimport { fillSegmentation } from \"../../Cornerstone/Segmentation_4X\";\n\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\n\n/**\n * generateSegmentation - Generates a DICOM Segmentation object given cornerstoneTools data.\n *\n * @param images - An array of the cornerstone image objects, which includes imageId and metadata\n * @param labelmaps - An array of the 3D Volumes that contain the segmentation data.\n */\nfunction generateSegmentation(images, labelmaps, metadata, options = {}) {\n const segmentation = _createMultiframeSegmentationFromReferencedImages(\n images,\n metadata,\n options\n );\n return fillSegmentation(segmentation, labelmaps, options);\n}\n\n/**\n * _createMultiframeSegmentationFromReferencedImages - description\n *\n * @param images - An array of the cornerstone image objects related to the reference\n * series that the segmentation is derived from. You can use methods such as\n * volume.getCornerstoneImages() to get this array.\n *\n * @param options - the options object for the SegmentationDerivation.\n * @returns The Seg derived dataSet.\n */\nfunction _createMultiframeSegmentationFromReferencedImages(\n images,\n metadata,\n options\n) {\n const datasets = images.map(image => {\n // add the sopClassUID to the dataset\n const instance = metadata.get(\"instance\", image.imageId);\n return {\n ...image,\n ...instance,\n // Todo: move to dcmjs tag style\n SOPClassUID: instance.SopClassUID || instance.SOPClassUID,\n SOPInstanceUID: instance.SopInstanceUID || instance.SOPInstanceUID,\n PixelData: image.getPixelData(),\n _vrMap: {\n PixelData: \"OW\"\n },\n _meta: {}\n };\n });\n\n const multiframe = Normalizer.normalizeToDataset(datasets);\n\n return new SegmentationDerivation([multiframe], options);\n}\n\nexport { generateSegmentation };\n","/**\n * Generates 2D label maps from a 3D label map.\n * @param labelmap3D - The 3D label map object to generate 2D label maps from. It is derived\n * from the volume labelmap.\n * @returns The label map object containing the 2D label maps and segments on label maps.\n */\nfunction generateLabelMaps2DFrom3D(labelmap3D): {\n scalarData: number[];\n dimensions: number[];\n segmentsOnLabelmap: number[];\n labelmaps2D: {\n segmentsOnLabelmap: number[];\n pixelData: number[];\n rows: number;\n columns: number;\n }[];\n} {\n // 1. we need to generate labelmaps2D from labelmaps3D, a labelmap2D is for each\n // slice\n const { scalarData, dimensions } = labelmap3D;\n\n // scalarData is a flat array of all the pixels in the volume.\n const labelmaps2D = [];\n const segmentsOnLabelmap3D = new Set();\n\n // X-Y are the row and column dimensions, Z is the number of slices.\n for (let z = 0; z < dimensions[2]; z++) {\n const pixelData = scalarData.slice(\n z * dimensions[0] * dimensions[1],\n (z + 1) * dimensions[0] * dimensions[1]\n );\n\n const segmentsOnLabelmap = [];\n\n for (let i = 0; i < pixelData.length; i++) {\n const segment = pixelData[i];\n if (!segmentsOnLabelmap.includes(segment) && segment !== 0) {\n segmentsOnLabelmap.push(segment);\n }\n }\n\n const labelmap2D = {\n segmentsOnLabelmap,\n pixelData,\n rows: dimensions[1],\n columns: dimensions[0]\n };\n\n if (segmentsOnLabelmap.length === 0) {\n continue;\n }\n\n segmentsOnLabelmap.forEach(segmentIndex => {\n segmentsOnLabelmap3D.add(segmentIndex);\n });\n\n labelmaps2D[dimensions[2] - 1 - z] = labelmap2D;\n }\n\n // remove segment 0 from segmentsOnLabelmap3D\n labelmap3D.segmentsOnLabelmap = Array.from(segmentsOnLabelmap3D);\n\n labelmap3D.labelmaps2D = labelmaps2D;\n\n return labelmap3D;\n}\n\nexport { generateLabelMaps2DFrom3D };\n","import { CornerstoneSEG } from \"../../Cornerstone\";\n\nconst { Segmentation } = CornerstoneSEG;\nconst { generateToolState: generateToolStateCornerstoneLegacy } = Segmentation;\n\n/**\n * generateToolState - Given a set of cornerstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param imageIds - An array of the imageIds.\n * @param arrayBuffer - The SEG arrayBuffer.\n * @param skipOverlapping - skip checks for overlapping segs, default value false.\n * @param tolerance - default value 1.e-3.\n *\n * @returns a list of array buffer for each labelMap\n * an object from which the segment metadata can be derived\n * list containing the track of segments per frame\n * list containing the track of segments per frame for each labelMap (available only for the overlapping case).\n */\nfunction generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping = false,\n tolerance = 1e-3\n) {\n return generateToolStateCornerstoneLegacy(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping,\n tolerance\n );\n}\n\nexport { generateToolState };\n","var Events;\n(function (Events) {\n Events[\"CACHE_SIZE_EXCEEDED\"] = \"CACHE_SIZE_EXCEEDED\";\n Events[\"IMAGE_LOAD_ERROR\"] = \"IMAGE_LOAD_ERROR\";\n Events[\"CAMERA_MODIFIED\"] = \"CORNERSTONE_CAMERA_MODIFIED\";\n Events[\"CAMERA_RESET\"] = \"CORNERSTONE_CAMERA_RESET\";\n Events[\"VOI_MODIFIED\"] = \"CORNERSTONE_VOI_MODIFIED\";\n Events[\"DISPLAY_AREA_MODIFIED\"] = \"CORNERSTONE_DISPLAY_AREA_MODIFIED\";\n Events[\"ELEMENT_DISABLED\"] = \"CORNERSTONE_ELEMENT_DISABLED\";\n Events[\"ELEMENT_ENABLED\"] = \"CORNERSTONE_ELEMENT_ENABLED\";\n Events[\"IMAGE_RENDERED\"] = \"CORNERSTONE_IMAGE_RENDERED\";\n Events[\"IMAGE_VOLUME_MODIFIED\"] = \"CORNERSTONE_IMAGE_VOLUME_MODIFIED\";\n Events[\"IMAGE_VOLUME_LOADING_COMPLETED\"] = \"CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED\";\n Events[\"IMAGE_LOADED\"] = \"CORNERSTONE_IMAGE_LOADED\";\n Events[\"IMAGE_RETRIEVAL_STAGE\"] = \"CORNERSTONE_IMAGE_RETRIEVAL_STAGE\";\n Events[\"IMAGE_LOAD_FAILED\"] = \"CORNERSTONE_IMAGE_LOAD_FAILED\";\n Events[\"VOLUME_VIEWPORT_NEW_VOLUME\"] = \"CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME\";\n Events[\"VOLUME_LOADED\"] = \"CORNERSTONE_VOLUME_LOADED\";\n Events[\"VOLUME_LOADED_FAILED\"] = \"CORNERSTONE_VOLUME_LOADED_FAILED\";\n Events[\"IMAGE_CACHE_IMAGE_ADDED\"] = \"CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED\";\n Events[\"IMAGE_CACHE_IMAGE_REMOVED\"] = \"CORNERSTONE_IMAGE_CACHE_IMAGE_REMOVED\";\n Events[\"VOLUME_CACHE_VOLUME_ADDED\"] = \"CORNERSTONE_VOLUME_CACHE_VOLUME_ADDED\";\n Events[\"VOLUME_CACHE_VOLUME_REMOVED\"] = \"CORNERSTONE_VOLUME_CACHE_VOLUME_REMOVED\";\n Events[\"STACK_NEW_IMAGE\"] = \"CORNERSTONE_STACK_NEW_IMAGE\";\n Events[\"VOLUME_NEW_IMAGE\"] = \"CORNERSTONE_VOLUME_NEW_IMAGE\";\n Events[\"PRE_STACK_NEW_IMAGE\"] = \"CORNERSTONE_PRE_STACK_NEW_IMAGE\";\n Events[\"IMAGE_SPACING_CALIBRATED\"] = \"CORNERSTONE_IMAGE_SPACING_CALIBRATED\";\n Events[\"STACK_VIEWPORT_NEW_STACK\"] = \"CORNERSTONE_STACK_VIEWPORT_NEW_STACK\";\n Events[\"STACK_VIEWPORT_SCROLL\"] = \"CORNERSTONE_STACK_VIEWPORT_SCROLL\";\n Events[\"GEOMETRY_CACHE_GEOMETRY_ADDED\"] = \"CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED\";\n Events[\"VOLUME_SCROLL_OUT_OF_BOUNDS\"] = \"CORNERSTONE_VOLUME_SCROLL_OUT_OF_BOUNDS\";\n Events[\"CLIPPING_PLANES_UPDATED\"] = \"CORNERSTONE_CLIPPING_PLANES_UPDATED\";\n})(Events || (Events = {}));\nexport default Events;\n//# sourceMappingURL=Events.js.map","var SharedArrayBufferModes;\n(function (SharedArrayBufferModes) {\n SharedArrayBufferModes[\"TRUE\"] = \"true\";\n SharedArrayBufferModes[\"FALSE\"] = \"false\";\n SharedArrayBufferModes[\"AUTO\"] = \"auto\";\n})(SharedArrayBufferModes || (SharedArrayBufferModes = {}));\nexport default SharedArrayBufferModes;\n//# sourceMappingURL=SharedArrayBufferModes.js.map","class CornerstoneEventTarget {\n constructor() {\n this.listeners = {};\n }\n reset() {\n this.listeners = {};\n }\n addEventListenerOnce(type, callback) {\n const onceWrapper = (event) => {\n this.removeEventListener(type, onceWrapper);\n callback.call(this, event);\n };\n this.addEventListener(type, onceWrapper);\n }\n addEventListener(type, callback) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n if (this.listeners[type].indexOf(callback) !== -1) {\n return;\n }\n this.listeners[type].push(callback);\n }\n removeEventListener(type, callback) {\n if (!this.listeners[type]) {\n return;\n }\n const stack = this.listeners[type];\n const stackLength = stack.length;\n for (let i = 0; i < stackLength; i++) {\n if (stack[i] === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n dispatchEvent(event) {\n if (!this.listeners[event.type]) {\n return;\n }\n const stack = this.listeners[event.type].slice();\n const stackLength = stack.length;\n for (let i = 0; i < stackLength; i++) {\n try {\n stack[i].call(this, event);\n }\n catch (error) {\n console.error(`error in event listener of type: ${event.type}`, error);\n }\n }\n return !event.defaultPrevented;\n }\n}\nconst eventTarget = new CornerstoneEventTarget();\nexport default eventTarget;\n//# sourceMappingURL=eventTarget.js.map","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record<PropertyKey, unknown>, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/* eslint no-negated-condition: 0, no-new-func: 0 */\n\n'use strict';\n\nif (typeof self !== 'undefined') {\n\tmodule.exports = self;\n} else if (typeof window !== 'undefined') {\n\tmodule.exports = window;\n} else {\n\tmodule.exports = Function('return this')();\n}\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof global !== 'object' || !global || global.Math !== Math || global.Array !== Array) {\n\t\treturn implementation;\n\t}\n\treturn global;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimGlobal() {\n\tvar polyfill = getPolyfill();\n\tif (define.supportsDescriptors) {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(polyfill, 'globalThis');\n\t\tif (!descriptor || (descriptor.configurable && (descriptor.enumerable || !descriptor.writable || globalThis !== polyfill))) { // eslint-disable-line max-len\n\t\t\tObject.defineProperty(polyfill, 'globalThis', {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: polyfill,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t} else if (typeof globalThis !== 'object' || globalThis !== polyfill) {\n\t\tpolyfill.globalThis = polyfill;\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = getPolyfill();\n\nvar getGlobal = function () { return polyfill; };\n\ndefineProperties(getGlobal, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = getGlobal;\n","import _typeof from '@babel/runtime/helpers/typeof';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport globalThisShim from 'globalthis';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar vtkGlobal = globalThisShim(); // returns native globalThis if compliant\n\nvar factoryMapping = {\n vtkObject: function vtkObject() {\n return null;\n }\n};\nfunction vtk(obj) {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (obj.isA) {\n return obj;\n }\n\n if (!obj.vtkClass) {\n if (vtkGlobal.console && vtkGlobal.console.error) {\n vtkGlobal.console.error('Invalid VTK object');\n }\n\n return null;\n }\n\n var constructor = factoryMapping[obj.vtkClass];\n\n if (!constructor) {\n if (vtkGlobal.console && vtkGlobal.console.error) {\n vtkGlobal.console.error(\"No vtk class found for Object of type \".concat(obj.vtkClass));\n }\n\n return null;\n } // Shallow copy object\n\n\n var model = _objectSpread({}, obj); // Convert into vtkObject any nested key\n\n\n Object.keys(model).forEach(function (keyName) {\n if (model[keyName] && _typeof(model[keyName]) === 'object' && model[keyName].vtkClass) {\n model[keyName] = vtk(model[keyName]);\n }\n }); // Return the root\n\n var newInst = constructor(model);\n\n if (newInst && newInst.modified) {\n newInst.modified();\n }\n\n return newInst;\n}\n\nfunction register(vtkClassName, constructor) {\n factoryMapping[vtkClassName] = constructor;\n} // Nest register method under the vtk function\n\n\nvtk.register = register;\n\nexport { vtk as default, vtkGlobal };\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","import _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport _get from '@babel/runtime/helpers/get';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';\nimport _wrapNativeSuper from '@babel/runtime/helpers/wrapNativeSuper';\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/* eslint-disable prefer-rest-params */\nvar ClassHierarchy = /*#__PURE__*/function (_Array) {\n _inherits(ClassHierarchy, _Array);\n\n var _super = _createSuper(ClassHierarchy);\n\n function ClassHierarchy() {\n _classCallCheck(this, ClassHierarchy);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ClassHierarchy, [{\n key: \"push\",\n value: function push() {\n for (var i = 0; i < arguments.length; i++) {\n if (!this.includes(arguments[i])) {\n _get(_getPrototypeOf(ClassHierarchy.prototype), \"push\", this).call(this, arguments[i]);\n }\n }\n\n return this.length;\n }\n }]);\n\n return ClassHierarchy;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nexport { ClassHierarchy as default };\n","import _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport _typeof from '@babel/runtime/helpers/typeof';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport _construct from '@babel/runtime/helpers/construct';\nimport DeepEqual from 'fast-deep-equal';\nimport vtk, { vtkGlobal } from './vtk.js';\nimport ClassHierarchy from './Common/Core/ClassHierarchy.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar globalMTime = 0;\nvar VOID = Symbol('void');\n\nfunction getCurrentGlobalMTime() {\n return globalMTime;\n} // ----------------------------------------------------------------------------\n// Logging function calls\n// ----------------------------------------------------------------------------\n\n/* eslint-disable no-prototype-builtins */\n\n\nvar fakeConsole = {};\n\nfunction noOp() {}\n\nvar consoleMethods = ['log', 'debug', 'info', 'warn', 'error', 'time', 'timeEnd', 'group', 'groupEnd'];\nconsoleMethods.forEach(function (methodName) {\n fakeConsole[methodName] = noOp;\n});\nvtkGlobal.console = console.hasOwnProperty('log') ? console : fakeConsole;\nvar loggerFunctions = {\n debug: noOp,\n // Don't print debug by default\n error: vtkGlobal.console.error || noOp,\n info: vtkGlobal.console.info || noOp,\n log: vtkGlobal.console.log || noOp,\n warn: vtkGlobal.console.warn || noOp\n};\nfunction setLoggerFunction(name, fn) {\n if (loggerFunctions[name]) {\n loggerFunctions[name] = fn || noOp;\n }\n}\nfunction vtkLogMacro() {\n loggerFunctions.log.apply(loggerFunctions, arguments);\n}\nfunction vtkInfoMacro() {\n loggerFunctions.info.apply(loggerFunctions, arguments);\n}\nfunction vtkDebugMacro() {\n loggerFunctions.debug.apply(loggerFunctions, arguments);\n}\nfunction vtkErrorMacro() {\n loggerFunctions.error.apply(loggerFunctions, arguments);\n}\nfunction vtkWarningMacro() {\n loggerFunctions.warn.apply(loggerFunctions, arguments);\n}\nvar ERROR_ONCE_MAP = {};\nfunction vtkOnceErrorMacro(str) {\n if (!ERROR_ONCE_MAP[str]) {\n loggerFunctions.error(str);\n ERROR_ONCE_MAP[str] = true;\n }\n} // ----------------------------------------------------------------------------\n// TypedArray\n// ----------------------------------------------------------------------------\n\nvar TYPED_ARRAYS = Object.create(null);\nTYPED_ARRAYS.Float32Array = Float32Array;\nTYPED_ARRAYS.Float64Array = Float64Array;\nTYPED_ARRAYS.Uint8Array = Uint8Array;\nTYPED_ARRAYS.Int8Array = Int8Array;\nTYPED_ARRAYS.Uint16Array = Uint16Array;\nTYPED_ARRAYS.Int16Array = Int16Array;\nTYPED_ARRAYS.Uint32Array = Uint32Array;\nTYPED_ARRAYS.Int32Array = Int32Array;\nTYPED_ARRAYS.Uint8ClampedArray = Uint8ClampedArray;\n\ntry {\n TYPED_ARRAYS.BigInt64Array = BigInt64Array;\n TYPED_ARRAYS.BigUint64Array = BigUint64Array;\n} catch (_unused) {// ignore\n}\n\nfunction newTypedArray(type) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return _construct(TYPED_ARRAYS[type] || Float64Array, args);\n}\nfunction newTypedArrayFrom(type) {\n var _ref;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_ref = TYPED_ARRAYS[type] || Float64Array).from.apply(_ref, args);\n} // ----------------------------------------------------------------------------\n// capitilize provided string\n// ----------------------------------------------------------------------------\n\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nfunction _capitalize(str) {\n return capitalize(str[0] === '_' ? str.slice(1) : str);\n}\nfunction uncapitalize(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n} // ----------------------------------------------------------------------------\n// Convert byte size into a well formatted string\n// ----------------------------------------------------------------------------\n\nfunction formatBytesToProperUnit(size) {\n var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var chunkSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n var units = ['TB', 'GB', 'MB', 'KB'];\n var value = Number(size);\n var currentUnit = 'B';\n\n while (value > chunkSize) {\n value /= chunkSize;\n currentUnit = units.pop();\n }\n\n return \"\".concat(value.toFixed(precision), \" \").concat(currentUnit);\n} // ----------------------------------------------------------------------------\n// Convert thousand number with proper separator\n// ----------------------------------------------------------------------------\n\nfunction formatNumbersWithThousandSeparator(n) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';\n var sections = [];\n var size = n;\n\n while (size > 1000) {\n sections.push(\"000\".concat(size % 1000).slice(-3));\n size = Math.floor(size / 1000);\n }\n\n if (size > 0) {\n sections.push(size);\n }\n\n sections.reverse();\n return sections.join(separator);\n} // ----------------------------------------------------------------------------\n// Array helper\n// ----------------------------------------------------------------------------\n\nfunction safeArrays(model) {\n Object.keys(model).forEach(function (key) {\n if (Array.isArray(model[key])) {\n model[key] = [].concat(model[key]);\n }\n });\n} // ----------------------------------------------------------------------------\n// shallow equals\n// ----------------------------------------------------------------------------\n\n\nfunction shallowEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n\n for (var i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n} // ----------------------------------------------------------------------------\n\n\nfunction enumToString(e, value) {\n return Object.keys(e).find(function (key) {\n return e[key] === value;\n });\n}\n\nfunction getStateArrayMapFunc(item) {\n if (item && item.isA) {\n return item.getState();\n }\n\n return item;\n} // ----------------------------------------------------------------------------\n// setImmediate\n// ----------------------------------------------------------------------------\n\n\nfunction setImmediateVTK(fn) {\n setTimeout(fn, 0);\n} // ----------------------------------------------------------------------------\n// measurePromiseExecution\n//\n// Measures the time it takes for a promise to finish from\n// the time this function is invoked.\n// The callback receives the time it took for the promise to resolve or reject.\n// ----------------------------------------------------------------------------\n\nfunction measurePromiseExecution(promise, callback) {\n var start = performance.now();\n promise.finally(function () {\n var delta = performance.now() - start;\n callback(delta);\n });\n} // ----------------------------------------------------------------------------\n// vtkObject: modified(), onModified(callback), delete()\n// ----------------------------------------------------------------------------\n\nfunction obj() {\n var publicAPI = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var model = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Ensure each instance as a unique ref of array\n safeArrays(model);\n var callbacks = [];\n\n if (!Number.isInteger(model.mtime)) {\n model.mtime = ++globalMTime;\n }\n\n if (!('classHierarchy' in model)) {\n model.classHierarchy = new ClassHierarchy('vtkObject');\n } else if (!(model.classHierarchy instanceof ClassHierarchy)) {\n var hierarchy = new ClassHierarchy();\n\n for (var i = 0; i < model.classHierarchy.length; i++) {\n hierarchy.push(model.classHierarchy[i]);\n }\n\n model.classHierarchy = hierarchy;\n }\n\n function off(index) {\n callbacks[index] = null;\n }\n\n function on(index) {\n function unsubscribe() {\n off(index);\n }\n\n return Object.freeze({\n unsubscribe: unsubscribe\n });\n }\n\n publicAPI.isDeleted = function () {\n return !!model.deleted;\n };\n\n publicAPI.modified = function (otherMTime) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (otherMTime && otherMTime < publicAPI.getMTime()) {\n return;\n }\n\n model.mtime = ++globalMTime;\n callbacks.forEach(function (callback) {\n return callback && callback(publicAPI);\n });\n };\n\n publicAPI.onModified = function (callback) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n\n var index = callbacks.length;\n callbacks.push(callback);\n return on(index);\n };\n\n publicAPI.getMTime = function () {\n return model.mtime;\n };\n\n publicAPI.isA = function (className) {\n var count = model.classHierarchy.length; // we go backwards as that is more likely for\n // early termination\n\n while (count--) {\n if (model.classHierarchy[count] === className) {\n return true;\n }\n }\n\n return false;\n };\n\n publicAPI.getClassName = function () {\n var depth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return model.classHierarchy[model.classHierarchy.length - 1 - depth];\n };\n\n publicAPI.set = function () {\n var map = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var noWarning = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var noFunction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var ret = false;\n Object.keys(map).forEach(function (name) {\n var fn = noFunction ? null : publicAPI[\"set\".concat(capitalize(name))];\n\n if (fn && Array.isArray(map[name]) && fn.length > 1) {\n ret = fn.apply(void 0, _toConsumableArray(map[name])) || ret;\n } else if (fn) {\n ret = fn(map[name]) || ret;\n } else {\n // Set data on model directly\n if (['mtime'].indexOf(name) === -1 && !noWarning) {\n vtkWarningMacro(\"Warning: Set value to model directly \".concat(name, \", \").concat(map[name]));\n }\n\n ret = model[name] !== map[name] || ret;\n model[name] = map[name];\n }\n });\n return ret;\n };\n\n publicAPI.get = function () {\n for (var _len3 = arguments.length, list = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n list[_key3] = arguments[_key3];\n }\n\n if (!list.length) {\n return model;\n }\n\n var subset = {};\n list.forEach(function (name) {\n subset[name] = model[name];\n });\n return subset;\n };\n\n publicAPI.getReferenceByName = function (val) {\n return model[val];\n };\n\n publicAPI.delete = function () {\n Object.keys(model).forEach(function (field) {\n return delete model[field];\n });\n callbacks.forEach(function (el, index) {\n return off(index);\n }); // Flag the instance being deleted\n\n model.deleted = true;\n }; // Add serialization support\n\n\n publicAPI.getState = function () {\n if (model.deleted) {\n return null;\n }\n\n var jsonArchive = _objectSpread(_objectSpread({}, model), {}, {\n vtkClass: publicAPI.getClassName()\n }); // Convert every vtkObject to its serializable form\n\n\n Object.keys(jsonArchive).forEach(function (keyName) {\n if (jsonArchive[keyName] === null || jsonArchive[keyName] === undefined || keyName[0] === '_' // protected members start with _\n ) {\n delete jsonArchive[keyName];\n } else if (jsonArchive[keyName].isA) {\n jsonArchive[keyName] = jsonArchive[keyName].getState();\n } else if (Array.isArray(jsonArchive[keyName])) {\n jsonArchive[keyName] = jsonArchive[keyName].map(getStateArrayMapFunc);\n }\n }); // Sort resulting object by key name\n\n var sortedObj = {};\n Object.keys(jsonArchive).sort().forEach(function (name) {\n sortedObj[name] = jsonArchive[name];\n }); // Remove mtime\n\n if (sortedObj.mtime) {\n delete sortedObj.mtime;\n }\n\n return sortedObj;\n }; // Add shallowCopy(otherInstance) support\n\n\n publicAPI.shallowCopy = function (other) {\n var debug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (other.getClassName() !== publicAPI.getClassName()) {\n throw new Error(\"Cannot ShallowCopy \".concat(other.getClassName(), \" into \").concat(publicAPI.getClassName()));\n }\n\n var otherModel = other.get();\n var keyList = Object.keys(model).sort();\n var otherKeyList = Object.keys(otherModel).sort();\n otherKeyList.forEach(function (key) {\n var keyIdx = keyList.indexOf(key);\n\n if (keyIdx === -1) {\n if (debug) {\n vtkDebugMacro(\"add \".concat(key, \" in shallowCopy\"));\n }\n } else {\n keyList.splice(keyIdx, 1);\n }\n\n model[key] = otherModel[key];\n });\n\n if (keyList.length && debug) {\n vtkDebugMacro(\"Untouched keys: \".concat(keyList.join(', ')));\n }\n\n publicAPI.modified();\n }; // This function will get called when one invoke JSON.stringify(vtkObject)\n // JSON.stringify will only stringify the return value of this function\n\n\n publicAPI.toJSON = function vtkObjToJSON() {\n return publicAPI.getState();\n }; // Allow usage as decorator\n\n\n return publicAPI;\n} // ----------------------------------------------------------------------------\n// getXXX: add getters\n// ----------------------------------------------------------------------------\n\nvar objectGetterMap = {\n object: function object(publicAPI, model, field) {\n return function getter() {\n return _objectSpread({}, model[field.name]);\n };\n }\n};\nfunction get(publicAPI, model, fieldNames) {\n fieldNames.forEach(function (field) {\n if (_typeof(field) === 'object') {\n var getter = objectGetterMap[field.type];\n\n if (getter) {\n publicAPI[\"get\".concat(_capitalize(field.name))] = getter(publicAPI, model, field);\n } else {\n publicAPI[\"get\".concat(_capitalize(field.name))] = function () {\n return model[field.name];\n };\n }\n } else {\n publicAPI[\"get\".concat(_capitalize(field))] = function () {\n return model[field];\n };\n }\n });\n} // ----------------------------------------------------------------------------\n// setXXX: add setters\n// ----------------------------------------------------------------------------\n\nvar objectSetterMap = {\n enum: function _enum(publicAPI, model, field) {\n var onChanged = \"_on\".concat(_capitalize(field.name), \"Changed\");\n return function (value) {\n if (typeof value === 'string') {\n if (field.enum[value] !== undefined) {\n if (model[field.name] !== field.enum[value]) {\n model[field.name] = field.enum[value];\n publicAPI.modified();\n return true;\n }\n\n return false;\n }\n\n vtkErrorMacro(\"Set Enum with invalid argument \".concat(field, \", \").concat(value));\n throw new RangeError('Set Enum with invalid string argument');\n }\n\n if (typeof value === 'number') {\n if (model[field.name] !== value) {\n if (Object.keys(field.enum).map(function (key) {\n return field.enum[key];\n }).indexOf(value) !== -1) {\n var _model$onChanged;\n\n var previousValue = model[field.name];\n model[field.name] = value;\n (_model$onChanged = model[onChanged]) === null || _model$onChanged === void 0 ? void 0 : _model$onChanged.call(model, publicAPI, model, value, previousValue);\n publicAPI.modified();\n return true;\n }\n\n vtkErrorMacro(\"Set Enum outside numeric range \".concat(field, \", \").concat(value));\n throw new RangeError('Set Enum outside numeric range');\n }\n\n return false;\n }\n\n vtkErrorMacro(\"Set Enum with invalid argument (String/Number) \".concat(field, \", \").concat(value));\n throw new TypeError('Set Enum with invalid argument (String/Number)');\n };\n },\n object: function object(publicAPI, model, field) {\n var onChanged = \"_on\".concat(_capitalize(field.name), \"Changed\");\n return function (value) {\n if (!DeepEqual(model[field.name], value)) {\n var _model$onChanged2;\n\n var previousValue = model[field.name];\n model[field.name] = value;\n (_model$onChanged2 = model[onChanged]) === null || _model$onChanged2 === void 0 ? void 0 : _model$onChanged2.call(model, publicAPI, model, value, previousValue);\n publicAPI.modified();\n return true;\n }\n\n return false;\n };\n }\n};\n\nfunction findSetter(field) {\n if (_typeof(field) === 'object') {\n var fn = objectSetterMap[field.type];\n\n if (fn) {\n return function (publicAPI, model) {\n return fn(publicAPI, model, field);\n };\n }\n\n vtkErrorMacro(\"No setter for field \".concat(field));\n throw new TypeError('No setter for field');\n }\n\n return function getSetter(publicAPI, model) {\n var onChanged = \"_on\".concat(_capitalize(field), \"Changed\");\n return function setter(value) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n if (model[field] !== value) {\n var _model$onChanged3;\n\n var previousValue = model[field.name];\n model[field] = value;\n (_model$onChanged3 = model[onChanged]) === null || _model$onChanged3 === void 0 ? void 0 : _model$onChanged3.call(model, publicAPI, model, value, previousValue);\n publicAPI.modified();\n return true;\n }\n\n return false;\n };\n };\n}\n\nfunction set(publicAPI, model, fields) {\n fields.forEach(function (field) {\n if (_typeof(field) === 'object') {\n publicAPI[\"set\".concat(_capitalize(field.name))] = findSetter(field)(publicAPI, model);\n } else {\n publicAPI[\"set\".concat(_capitalize(field))] = findSetter(field)(publicAPI, model);\n }\n });\n} // ----------------------------------------------------------------------------\n// set/get XXX: add both setters and getters\n// ----------------------------------------------------------------------------\n\nfunction setGet(publicAPI, model, fieldNames) {\n get(publicAPI, model, fieldNames);\n set(publicAPI, model, fieldNames);\n} // ----------------------------------------------------------------------------\n// getXXX: add getters for object of type array with copy to be safe\n// getXXXByReference: add getters for object of type array without copy\n// ----------------------------------------------------------------------------\n\nfunction getArray(publicAPI, model, fieldNames) {\n fieldNames.forEach(function (field) {\n publicAPI[\"get\".concat(_capitalize(field))] = function () {\n return model[field] ? Array.from(model[field]) : model[field];\n };\n\n publicAPI[\"get\".concat(_capitalize(field), \"ByReference\")] = function () {\n return model[field];\n };\n });\n} // ----------------------------------------------------------------------------\n// setXXX: add setter for object of type array\n// if 'defaultVal' is supplied, shorter arrays will be padded to 'size' with 'defaultVal'\n// set...From: fast path to copy the content of an array to the current one without call to modified.\n// ----------------------------------------------------------------------------\n\nfunction setArray(publicAPI, model, fieldNames, size) {\n var defaultVal = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;\n fieldNames.forEach(function (field) {\n if (model[field] && size && model[field].length !== size) {\n throw new RangeError(\"Invalid initial number of values for array (\".concat(field, \")\"));\n }\n\n var onChanged = \"_on\".concat(_capitalize(field), \"Changed\");\n\n publicAPI[\"set\".concat(_capitalize(field))] = function () {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var array = args;\n var changeDetected;\n var needCopy = false; // allow null or an array to be passed as a single arg.\n\n if (array.length === 1 && (array[0] == null || array[0].length >= 0)) {\n /* eslint-disable prefer-destructuring */\n array = array[0];\n /* eslint-enable prefer-destructuring */\n\n needCopy = true;\n }\n\n if (array == null) {\n changeDetected = model[field] !== array;\n } else {\n if (size && array.length !== size) {\n if (array.length < size && defaultVal !== undefined) {\n array = Array.from(array);\n needCopy = false;\n\n while (array.length < size) {\n array.push(defaultVal);\n }\n } else {\n throw new RangeError(\"Invalid number of values for array setter (\".concat(field, \")\"));\n }\n }\n\n changeDetected = model[field] == null || model[field].length !== array.length;\n\n for (var i = 0; !changeDetected && i < array.length; ++i) {\n changeDetected = model[field][i] !== array[i];\n }\n\n if (changeDetected && needCopy) {\n array = Array.from(array);\n }\n }\n\n if (changeDetected) {\n var _model$onChanged4;\n\n var previousValue = model[field.name];\n model[field] = array;\n (_model$onChanged4 = model[onChanged]) === null || _model$onChanged4 === void 0 ? void 0 : _model$onChanged4.call(model, publicAPI, model, array, previousValue);\n publicAPI.modified();\n }\n\n return changeDetected;\n };\n\n publicAPI[\"set\".concat(_capitalize(field), \"From\")] = function (otherArray) {\n var target = model[field];\n otherArray.forEach(function (v, i) {\n target[i] = v;\n });\n };\n });\n} // ----------------------------------------------------------------------------\n// set/get XXX: add setter and getter for object of type array\n// ----------------------------------------------------------------------------\n\nfunction setGetArray(publicAPI, model, fieldNames, size) {\n var defaultVal = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;\n getArray(publicAPI, model, fieldNames);\n setArray(publicAPI, model, fieldNames, size, defaultVal);\n}\nfunction moveToProtected(publicAPI, model, fieldNames) {\n for (var i = 0; i < fieldNames.length; i++) {\n var fieldName = fieldNames[i];\n\n if (model[fieldName] !== undefined) {\n model[\"_\".concat(fieldName)] = model[fieldName];\n delete model[fieldName];\n }\n }\n} // ----------------------------------------------------------------------------\n// vtkAlgorithm: setInputData(), setInputConnection(), getOutputData(), getOutputPort()\n// ----------------------------------------------------------------------------\n\nfunction algo(publicAPI, model, numberOfInputs, numberOfOutputs) {\n if (model.inputData) {\n model.inputData = model.inputData.map(vtk);\n } else {\n model.inputData = [];\n }\n\n if (model.inputConnection) {\n model.inputConnection = model.inputConnection.map(vtk);\n } else {\n model.inputConnection = [];\n }\n\n if (model.output) {\n model.output = model.output.map(vtk);\n } else {\n model.output = [];\n }\n\n if (model.inputArrayToProcess) {\n model.inputArrayToProcess = model.inputArrayToProcess.map(vtk);\n } else {\n model.inputArrayToProcess = [];\n } // Cache the argument for later manipulation\n\n\n model.numberOfInputs = numberOfInputs; // Methods\n\n function setInputData(dataset) {\n var port = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (port >= model.numberOfInputs) {\n vtkErrorMacro(\"algorithm \".concat(publicAPI.getClassName(), \" only has \").concat(model.numberOfInputs, \" input ports. To add more input ports, use addInputData()\"));\n return;\n }\n\n if (model.inputData[port] !== dataset || model.inputConnection[port]) {\n model.inputData[port] = dataset;\n model.inputConnection[port] = null;\n\n if (publicAPI.modified) {\n publicAPI.modified();\n }\n }\n }\n\n function getInputData() {\n var port = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (model.inputConnection[port]) {\n model.inputData[port] = model.inputConnection[port]();\n }\n\n return model.inputData[port];\n }\n\n function setInputConnection(outputPort) {\n var port = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (port >= model.numberOfInputs) {\n var msg = \"algorithm \".concat(publicAPI.getClassName(), \" only has \");\n msg += \"\".concat(model.numberOfInputs);\n msg += ' input ports. To add more input ports, use addInputConnection()';\n vtkErrorMacro(msg);\n return;\n }\n\n model.inputData[port] = null;\n model.inputConnection[port] = outputPort;\n }\n\n function getInputConnection() {\n var port = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return model.inputConnection[port];\n }\n\n function getPortToFill() {\n var portToFill = model.numberOfInputs;\n\n while (portToFill && !model.inputData[portToFill - 1] && !model.inputConnection[portToFill - 1]) {\n portToFill--;\n }\n\n if (portToFill === model.numberOfInputs) {\n model.numberOfInputs++;\n }\n\n return portToFill;\n }\n\n function addInputConnection(outputPort) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n setInputConnection(outputPort, getPortToFill());\n }\n\n function addInputData(dataset) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n setInputData(dataset, getPortToFill());\n }\n\n function getOutputData() {\n var port = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n\n if (publicAPI.shouldUpdate()) {\n publicAPI.update();\n }\n\n return model.output[port];\n }\n\n publicAPI.shouldUpdate = function () {\n var localMTime = publicAPI.getMTime();\n var minOutputMTime = Infinity;\n var count = numberOfOutputs;\n\n while (count--) {\n if (!model.output[count] || model.output[count].isDeleted()) {\n return true;\n }\n\n var mt = model.output[count].getMTime();\n\n if (mt < localMTime) {\n return true;\n }\n\n if (mt < minOutputMTime) {\n minOutputMTime = mt;\n }\n }\n\n count = model.numberOfInputs;\n\n while (count--) {\n var _model$inputConnectio, _publicAPI$getInputDa;\n\n if ((_model$inputConnectio = model.inputConnection[count]) !== null && _model$inputConnectio !== void 0 && _model$inputConnectio.filter.shouldUpdate() || ((_publicAPI$getInputDa = publicAPI.getInputData(count)) === null || _publicAPI$getInputDa === void 0 ? void 0 : _publicAPI$getInputDa.getMTime()) > minOutputMTime) {\n return true;\n }\n }\n\n return false;\n };\n\n function getOutputPort() {\n var port = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n var outputPortAccess = function outputPortAccess() {\n return getOutputData(port);\n }; // Add reference to filter\n\n\n outputPortAccess.filter = publicAPI;\n return outputPortAccess;\n } // Handle input if needed\n\n\n if (model.numberOfInputs) {\n // Reserve inputs\n var count = model.numberOfInputs;\n\n while (count--) {\n model.inputData.push(null);\n model.inputConnection.push(null);\n } // Expose public methods\n\n\n publicAPI.setInputData = setInputData;\n publicAPI.setInputConnection = setInputConnection;\n publicAPI.addInputData = addInputData;\n publicAPI.addInputConnection = addInputConnection;\n publicAPI.getInputData = getInputData;\n publicAPI.getInputConnection = getInputConnection;\n }\n\n if (numberOfOutputs) {\n publicAPI.getOutputData = getOutputData;\n publicAPI.getOutputPort = getOutputPort;\n }\n\n publicAPI.update = function () {\n var ins = [];\n\n if (model.numberOfInputs) {\n var _count = 0;\n\n while (_count < model.numberOfInputs) {\n ins[_count] = publicAPI.getInputData(_count);\n _count++;\n }\n }\n\n if (publicAPI.shouldUpdate() && publicAPI.requestData) {\n publicAPI.requestData(ins, model.output);\n }\n };\n\n publicAPI.getNumberOfInputPorts = function () {\n return model.numberOfInputs;\n };\n\n publicAPI.getNumberOfOutputPorts = function () {\n return numberOfOutputs || model.output.length;\n };\n\n publicAPI.getInputArrayToProcess = function (inputPort) {\n var arrayDesc = model.inputArrayToProcess[inputPort];\n var ds = model.inputData[inputPort];\n\n if (arrayDesc && ds) {\n return ds[\"get\".concat(arrayDesc.fieldAssociation)]().getArray(arrayDesc.arrayName);\n }\n\n return null;\n };\n\n publicAPI.setInputArrayToProcess = function (inputPort, arrayName, fieldAssociation) {\n var attributeType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Scalars';\n\n while (model.inputArrayToProcess.length < inputPort) {\n model.inputArrayToProcess.push(null);\n }\n\n model.inputArrayToProcess[inputPort] = {\n arrayName: arrayName,\n fieldAssociation: fieldAssociation,\n attributeType: attributeType\n };\n };\n} // ----------------------------------------------------------------------------\n// Event handling: onXXX(callback), invokeXXX(args...)\n// ----------------------------------------------------------------------------\n\nvar EVENT_ABORT = Symbol('Event abort');\nfunction event(publicAPI, model, eventName) {\n var callbacks = [];\n var previousDelete = publicAPI.delete;\n var curCallbackID = 1;\n\n function off(callbackID) {\n for (var i = 0; i < callbacks.length; ++i) {\n var _callbacks$i = _slicedToArray(callbacks[i], 1),\n cbID = _callbacks$i[0];\n\n if (cbID === callbackID) {\n callbacks.splice(i, 1);\n return;\n }\n }\n }\n\n function on(callbackID) {\n function unsubscribe() {\n off(callbackID);\n }\n\n return Object.freeze({\n unsubscribe: unsubscribe\n });\n }\n\n function invoke() {\n var _arguments = arguments;\n\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n /* eslint-disable prefer-rest-params */\n // Go through a copy of the callbacks array in case new callbacks\n // get prepended within previous callbacks\n\n\n var currentCallbacks = callbacks.slice();\n\n var _loop = function _loop(index) {\n var _currentCallbacks$ind = _slicedToArray(currentCallbacks[index], 3),\n cb = _currentCallbacks$ind[1],\n priority = _currentCallbacks$ind[2];\n\n if (!cb) {\n return \"continue\"; // eslint-disable-line\n }\n\n if (priority < 0) {\n setTimeout(function () {\n return cb.apply(publicAPI, _arguments);\n }, 1 - priority);\n } else {\n // Abort only if the callback explicitly returns false\n var continueNext = cb.apply(publicAPI, _arguments);\n\n if (continueNext === EVENT_ABORT) {\n return \"break\";\n }\n }\n };\n\n for (var index = 0; index < currentCallbacks.length; ++index) {\n var _ret = _loop(index);\n\n if (_ret === \"continue\") continue;\n if (_ret === \"break\") break;\n }\n /* eslint-enable prefer-rest-params */\n\n }\n\n publicAPI[\"invoke\".concat(_capitalize(eventName))] = invoke;\n\n publicAPI[\"on\".concat(_capitalize(eventName))] = function (callback) {\n var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.0;\n\n if (!callback.apply) {\n console.error(\"Invalid callback for event \".concat(eventName));\n return null;\n }\n\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n\n var callbackID = curCallbackID++;\n callbacks.push([callbackID, callback, priority]);\n callbacks.sort(function (cb1, cb2) {\n return cb2[2] - cb1[2];\n });\n return on(callbackID);\n };\n\n publicAPI.delete = function () {\n previousDelete();\n callbacks.forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 1),\n cbID = _ref3[0];\n\n return off(cbID);\n });\n };\n} // ----------------------------------------------------------------------------\n// newInstance\n// ----------------------------------------------------------------------------\n\nfunction newInstance(extend, className) {\n var constructor = function constructor() {\n var initialValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var model = {};\n var publicAPI = {};\n extend(publicAPI, model, initialValues);\n return Object.freeze(publicAPI);\n }; // Register constructor to factory\n\n\n if (className) {\n vtk.register(className, constructor);\n }\n\n return constructor;\n} // ----------------------------------------------------------------------------\n// Chain function calls\n// ----------------------------------------------------------------------------\n\nfunction chain() {\n for (var _len5 = arguments.length, fn = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n fn[_key5] = arguments[_key5];\n }\n\n return function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return fn.filter(function (i) {\n return !!i;\n }).map(function (i) {\n return i.apply(void 0, args);\n });\n };\n} // ----------------------------------------------------------------------------\n// Some utility methods for vtk objects\n// ----------------------------------------------------------------------------\n\nfunction isVtkObject(instance) {\n return instance && instance.isA && instance.isA('vtkObject');\n}\nfunction traverseInstanceTree(instance, extractFunction) {\n var accumulator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var visitedInstances = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n\n if (isVtkObject(instance)) {\n if (visitedInstances.indexOf(instance) >= 0) {\n // avoid cycles\n return accumulator;\n }\n\n visitedInstances.push(instance);\n var result = extractFunction(instance);\n\n if (result !== undefined) {\n accumulator.push(result);\n } // Now go through this instance's model\n\n\n var model = instance.get();\n Object.keys(model).forEach(function (key) {\n var modelObj = model[key];\n\n if (Array.isArray(modelObj)) {\n modelObj.forEach(function (subObj) {\n traverseInstanceTree(subObj, extractFunction, accumulator, visitedInstances);\n });\n } else {\n traverseInstanceTree(modelObj, extractFunction, accumulator, visitedInstances);\n }\n });\n }\n\n return accumulator;\n} // ----------------------------------------------------------------------------\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n\nfunction debounce(func, wait, immediate) {\n var _this = this;\n\n var timeout;\n\n var debounced = function debounced() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var context = _this;\n\n var later = function later() {\n timeout = null;\n\n if (!immediate) {\n func.apply(context, args);\n }\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n func.apply(context, args);\n }\n };\n\n debounced.cancel = function () {\n return clearTimeout(timeout);\n };\n\n return debounced;\n} // ----------------------------------------------------------------------------\n// Creates a throttled function that only invokes `func` at most once per\n// every `wait` milliseconds.\n\nfunction throttle(callback, delay) {\n var isThrottled = false;\n var argsToUse = null;\n\n function next() {\n isThrottled = false;\n\n if (argsToUse !== null) {\n wrapper.apply(void 0, _toConsumableArray(argsToUse)); // eslint-disable-line\n\n argsToUse = null;\n }\n }\n\n function wrapper() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n\n if (isThrottled) {\n argsToUse = args;\n return;\n }\n\n isThrottled = true;\n callback.apply(void 0, args);\n setTimeout(next, delay);\n }\n\n return wrapper;\n} // ----------------------------------------------------------------------------\n// keystore(publicAPI, model, initialKeystore)\n//\n// - initialKeystore: Initial keystore. This can be either a Map or an\n// object.\n//\n// Generated API\n// setKey(key, value) : mixed (returns value)\n// getKey(key) : mixed\n// getAllKeys() : [mixed]\n// deleteKey(key) : Boolean\n// ----------------------------------------------------------------------------\n\nfunction keystore(publicAPI, model) {\n var initialKeystore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n model.keystore = Object.assign(model.keystore || {}, initialKeystore);\n\n publicAPI.setKey = function (key, value) {\n model.keystore[key] = value;\n };\n\n publicAPI.getKey = function (key) {\n return model.keystore[key];\n };\n\n publicAPI.getAllKeys = function () {\n return Object.keys(model.keystore);\n };\n\n publicAPI.deleteKey = function (key) {\n return delete model.keystore[key];\n };\n\n publicAPI.clearKeystore = function () {\n return publicAPI.getAllKeys().forEach(function (key) {\n return delete model.keystore[key];\n });\n };\n} // ----------------------------------------------------------------------------\n// proxy(publicAPI, model, sectionName, propertyUI)\n//\n// - sectionName: Name of the section for UI\n// - propertyUI: List of props with their UI description\n//\n// Generated API\n// getProxyId() : String\n// listProxyProperties() : [string]\n// updateProxyProperty(name, prop)\n// getProxySection() => List of properties for UI generation\n// ----------------------------------------------------------------------------\n\nvar nextProxyId = 1;\nvar ROOT_GROUP_NAME = '__root__';\nfunction proxy(publicAPI, model) {\n // Proxies are keystores\n keystore(publicAPI, model);\n var parentDelete = publicAPI.delete; // getProxyId\n\n model.proxyId = \"\".concat(nextProxyId++); // ui handling\n\n model.ui = JSON.parse(JSON.stringify(model.ui || [])); // deep copy\n\n get(publicAPI, model, ['proxyId', 'proxyGroup', 'proxyName']);\n setGet(publicAPI, model, ['proxyManager']); // group properties\n\n var propertyMap = {};\n var groupChildrenNames = {};\n\n function registerProperties(descriptionList, currentGroupName) {\n if (!groupChildrenNames[currentGroupName]) {\n groupChildrenNames[currentGroupName] = [];\n }\n\n var childrenNames = groupChildrenNames[currentGroupName];\n\n for (var i = 0; i < descriptionList.length; i++) {\n childrenNames.push(descriptionList[i].name);\n propertyMap[descriptionList[i].name] = descriptionList[i];\n\n if (descriptionList[i].children && descriptionList[i].children.length) {\n registerProperties(descriptionList[i].children, descriptionList[i].name);\n }\n }\n }\n\n registerProperties(model.ui, ROOT_GROUP_NAME);\n\n publicAPI.updateUI = function (ui) {\n model.ui = JSON.parse(JSON.stringify(ui || [])); // deep copy\n\n Object.keys(propertyMap).forEach(function (k) {\n return delete propertyMap[k];\n });\n Object.keys(groupChildrenNames).forEach(function (k) {\n return delete groupChildrenNames[k];\n });\n registerProperties(model.ui, ROOT_GROUP_NAME);\n publicAPI.modified();\n };\n\n function listProxyProperties() {\n var gName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ROOT_GROUP_NAME;\n return groupChildrenNames[gName];\n }\n\n publicAPI.updateProxyProperty = function (propertyName, propUI) {\n var prop = propertyMap[propertyName];\n\n if (prop) {\n Object.assign(prop, propUI);\n } else {\n propertyMap[propertyName] = _objectSpread({}, propUI);\n }\n };\n\n publicAPI.activate = function () {\n if (model.proxyManager) {\n var setActiveMethod = \"setActive\".concat(_capitalize(publicAPI.getProxyGroup().slice(0, -1)));\n\n if (model.proxyManager[setActiveMethod]) {\n model.proxyManager[setActiveMethod](publicAPI);\n }\n }\n }; // property link\n\n\n model.propertyLinkSubscribers = {};\n\n publicAPI.registerPropertyLinkForGC = function (otherLink, type) {\n if (!(type in model.propertyLinkSubscribers)) {\n model.propertyLinkSubscribers[type] = [];\n }\n\n model.propertyLinkSubscribers[type].push(otherLink);\n };\n\n publicAPI.gcPropertyLinks = function (type) {\n var subscribers = model.propertyLinkSubscribers[type] || [];\n\n while (subscribers.length) {\n subscribers.pop().unbind(publicAPI);\n }\n };\n\n model.propertyLinkMap = {};\n\n publicAPI.getPropertyLink = function (id) {\n var persistent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (model.propertyLinkMap[id]) {\n return model.propertyLinkMap[id];\n }\n\n var value = null;\n var links = [];\n var count = 0;\n var updateInProgress = false;\n\n function update(source) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (updateInProgress) {\n return null;\n }\n\n var needUpdate = [];\n var sourceLink = null;\n count = links.length;\n\n while (count--) {\n var link = links[count];\n\n if (link.instance === source) {\n sourceLink = link;\n } else {\n needUpdate.push(link);\n }\n }\n\n if (!sourceLink) {\n return null;\n }\n\n var newValue = sourceLink.instance[\"get\".concat(_capitalize(sourceLink.propertyName))]();\n\n if (!shallowEquals(newValue, value) || force) {\n value = newValue;\n updateInProgress = true;\n\n while (needUpdate.length) {\n var linkToUpdate = needUpdate.pop();\n linkToUpdate.instance.set(_defineProperty({}, linkToUpdate.propertyName, value));\n }\n\n updateInProgress = false;\n }\n\n if (model.propertyLinkMap[id].persistent) {\n model.propertyLinkMap[id].value = newValue;\n }\n\n return newValue;\n }\n\n function unbind(instance, propertyName) {\n var indexToDelete = [];\n count = links.length;\n\n while (count--) {\n var link = links[count];\n\n if (link.instance === instance && (link.propertyName === propertyName || propertyName === undefined)) {\n link.subscription.unsubscribe();\n indexToDelete.push(count);\n }\n }\n\n while (indexToDelete.length) {\n links.splice(indexToDelete.pop(), 1);\n }\n }\n\n function bind(instance, propertyName) {\n var updateMe = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var subscription = instance.onModified(update);\n var other = links[0];\n links.push({\n instance: instance,\n propertyName: propertyName,\n subscription: subscription\n });\n\n if (updateMe) {\n if (model.propertyLinkMap[id].persistent && model.propertyLinkMap[id].value !== undefined) {\n instance.set(_defineProperty({}, propertyName, model.propertyLinkMap[id].value));\n } else if (other) {\n update(other.instance, true);\n }\n }\n\n return {\n unsubscribe: function unsubscribe() {\n return unbind(instance, propertyName);\n }\n };\n }\n\n function unsubscribe() {\n while (links.length) {\n links.pop().subscription.unsubscribe();\n }\n }\n\n var linkHandler = {\n bind: bind,\n unbind: unbind,\n unsubscribe: unsubscribe,\n persistent: persistent\n };\n model.propertyLinkMap[id] = linkHandler;\n return linkHandler;\n }; // extract values\n\n\n function getProperties() {\n var groupName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ROOT_GROUP_NAME;\n var values = [];\n var id = model.proxyId;\n var propertyNames = listProxyProperties(groupName) || [];\n\n for (var i = 0; i < propertyNames.length; i++) {\n var name = propertyNames[i];\n var method = publicAPI[\"get\".concat(_capitalize(name))];\n var value = method ? method() : undefined;\n var prop = {\n id: id,\n name: name,\n value: value\n };\n var children = getProperties(name);\n\n if (children.length) {\n prop.children = children;\n }\n\n values.push(prop);\n }\n\n return values;\n }\n\n publicAPI.listPropertyNames = function () {\n return getProperties().map(function (p) {\n return p.name;\n });\n };\n\n publicAPI.getPropertyByName = function (name) {\n return getProperties().find(function (p) {\n return p.name === name;\n });\n };\n\n publicAPI.getPropertyDomainByName = function (name) {\n return (propertyMap[name] || {}).domain;\n }; // ui section\n\n\n publicAPI.getProxySection = function () {\n return {\n id: model.proxyId,\n name: model.proxyGroup,\n ui: model.ui,\n properties: getProperties()\n };\n }; // free resources\n\n\n publicAPI.delete = function () {\n var list = Object.keys(model.propertyLinkMap);\n var count = list.length;\n\n while (count--) {\n model.propertyLinkMap[list[count]].unsubscribe();\n }\n\n Object.keys(model.propertyLinkSubscribers).forEach(publicAPI.gcPropertyLinks);\n parentDelete();\n }; // @todo fix infinite recursion due to active source\n\n\n publicAPI.getState = function () {\n return null;\n };\n\n function registerLinks() {\n // Allow dynamic registration of links at the application level\n if (model.links) {\n for (var i = 0; i < model.links.length; i++) {\n var _model$links$i = model.links[i],\n link = _model$links$i.link,\n property = _model$links$i.property,\n persistent = _model$links$i.persistent,\n updateOnBind = _model$links$i.updateOnBind,\n type = _model$links$i.type;\n\n if (type === 'application') {\n var sLink = model.proxyManager.getPropertyLink(link, persistent);\n publicAPI.registerPropertyLinkForGC(sLink, 'application');\n sLink.bind(publicAPI, property, updateOnBind);\n }\n }\n }\n }\n\n setImmediateVTK(registerLinks);\n} // ----------------------------------------------------------------------------\n// proxyPropertyMapping(publicAPI, model, map)\n//\n// map = {\n// opacity: { modelKey: 'property', property: 'opacity' },\n// }\n//\n// Generated API:\n// Elevate set/get methods from internal object stored in the model to current one\n// ----------------------------------------------------------------------------\n\nfunction proxyPropertyMapping(publicAPI, model, map) {\n var parentDelete = publicAPI.delete;\n var subscriptions = [];\n var propertyNames = Object.keys(map);\n var count = propertyNames.length;\n\n while (count--) {\n var propertyName = propertyNames[count];\n var _map$propertyName = map[propertyName],\n modelKey = _map$propertyName.modelKey,\n property = _map$propertyName.property,\n _map$propertyName$mod = _map$propertyName.modified,\n modified = _map$propertyName$mod === void 0 ? true : _map$propertyName$mod;\n\n var methodSrc = _capitalize(property);\n\n var methodDst = _capitalize(propertyName);\n\n publicAPI[\"get\".concat(methodDst)] = model[modelKey][\"get\".concat(methodSrc)];\n publicAPI[\"set\".concat(methodDst)] = model[modelKey][\"set\".concat(methodSrc)];\n\n if (modified) {\n subscriptions.push(model[modelKey].onModified(publicAPI.modified));\n }\n }\n\n publicAPI.delete = function () {\n while (subscriptions.length) {\n subscriptions.pop().unsubscribe();\n }\n\n parentDelete();\n };\n} // ----------------------------------------------------------------------------\n// proxyPropertyState(publicAPI, model, state, defaults)\n//\n// state = {\n// representation: {\n// 'Surface with edges': { property: { edgeVisibility: true, representation: 2 } },\n// Surface: { property: { edgeVisibility: false, representation: 2 } },\n// Wireframe: { property: { edgeVisibility: false, representation: 1 } },\n// Points: { property: { edgeVisibility: false, representation: 0 } },\n// },\n// }\n//\n// defaults = {\n// representation: 'Surface',\n// }\n//\n// Generated API\n// get / set Representation ( string ) => push state to various internal objects\n// ----------------------------------------------------------------------------\n\nfunction proxyPropertyState(publicAPI, model) {\n var state = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var defaults = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n model.this = publicAPI;\n\n function applyState(map) {\n var modelKeys = Object.keys(map);\n var count = modelKeys.length;\n\n while (count--) {\n var modelKey = modelKeys[count];\n model[modelKey].set(map[modelKey]);\n }\n }\n\n var modelKeys = Object.keys(defaults);\n var count = modelKeys.length;\n\n var _loop2 = function _loop2() {\n // Add default\n var key = modelKeys[count];\n model[key] = defaults[key]; // Add set method\n\n var mapping = state[key];\n\n publicAPI[\"set\".concat(_capitalize(key))] = function (value) {\n if (value !== model[key]) {\n model[key] = value;\n var propValues = mapping[value];\n applyState(propValues);\n publicAPI.modified();\n }\n };\n };\n\n while (count--) {\n _loop2();\n } // Add getter\n\n\n if (modelKeys.length) {\n get(publicAPI, model, modelKeys);\n }\n} // ----------------------------------------------------------------------------\n// From : https://github.com/facebookarchive/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n//\n//\n// Copyright (c) 2015, Facebook, Inc.\n// All rights reserved.\n//\n// This source code is licensed under the BSD-style license found in the\n// LICENSE file in the root directory of this source tree. An additional grant\n// of patent rights can be found in the PATENTS file in the same directory.\n//\n//\n// Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n// complicated, thus this doc is long and (hopefully) detailed enough to answer\n// your questions.\n//\n// If you need to react to the mouse wheel in a predictable way, this code is\n// like your bestest friend.// hugs//\n//\n// As of today, there are 4 DOM event types you can listen to:\n//\n// 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n// 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n// 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n// 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n//\n// So what to do? The is the best:\n//\n// normalizeWheel.getEventType();\n//\n// In your event callback, use this code to get sane interpretation of the\n// deltas. This code will return an object with properties:\n//\n// spinX -- normalized spin speed (use for zoom) - x plane\n// spinY -- \" - y plane\n// pixelX -- normalized distance (to pixels) - x plane\n// pixelY -- \" - y plane\n//\n// Wheel values are provided by the browser assuming you are using the wheel to\n// scroll a web page by a number of lines or pixels (or pages). Values can vary\n// significantly on different platforms and browsers, forgetting that you can\n// scroll at different speeds. Some devices (like trackpads) emit more events\n// at smaller increments with fine granularity, and some emit massive jumps with\n// linear speed or acceleration.\n//\n// This code does its best to normalize the deltas for you:\n//\n// - spin is trying to normalize how far the wheel was spun (or trackpad\n// dragged). This is super useful for zoom support where you want to\n// throw away the chunky scroll steps on the PC and make those equal to\n// the slow and smooth tiny steps on the Mac. Key data: This code tries to\n// resolve a single slow step on a wheel to 1.\n//\n// - pixel is normalizing the desired scroll delta in pixel units. You'll\n// get the crazy differences between browsers, but at least it'll be in\n// pixels!\n//\n// - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n// should translate to positive value zooming IN, negative zooming OUT.\n// This matches the newer 'wheel' event.\n//\n// Why are there spinX, spinY (or pixels)?\n//\n// - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n// with a mouse. It results in side-scrolling in the browser by default.\n//\n// - spinY is what you expect -- it's the classic axis of a mouse wheel.\n//\n// - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n// probably is by browsers in conjunction with fancy 3D controllers .. but\n// you know.\n//\n// Implementation info:\n//\n// Examples of 'wheel' event if you scroll slowly (down) by one step with an\n// average mouse:\n//\n// OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n// OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n// OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n// Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n// Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n//\n// On the trackpad:\n//\n// OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n// OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n//\n// On other/older browsers.. it's more complicated as there can be multiple and\n// also missing delta values.\n//\n// The 'wheel' event is more standard:\n//\n// http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n//\n// The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n// deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n// backward compatibility with older events. Those other values help us\n// better normalize spin speed. Example of what the browsers provide:\n//\n// | event.wheelDelta | event.detail\n// ------------------+------------------+--------------\n// Safari v5/OS X | -120 | 0\n// Safari v5/Win7 | -120 | 0\n// Chrome v17/OS X | -120 | 0\n// Chrome v17/Win7 | -120 | 0\n// IE9/Win7 | -120 | undefined\n// Firefox v4/OS X | undefined | 1\n// Firefox v4/Win7 | undefined | 3\n//\n// ----------------------------------------------------------------------------\n// Reasonable defaults\n\nvar PIXEL_STEP = 10;\nvar LINE_HEIGHT = 40;\nvar PAGE_HEIGHT = 800;\nfunction normalizeWheel(wheelEvent) {\n var sX = 0; // spinX\n\n var sY = 0; // spinY\n\n var pX = 0; // pixelX\n\n var pY = 0; // pixelY\n // Legacy\n\n if ('detail' in wheelEvent) {\n sY = wheelEvent.detail;\n }\n\n if ('wheelDelta' in wheelEvent) {\n sY = -wheelEvent.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in wheelEvent) {\n sY = -wheelEvent.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in wheelEvent) {\n sX = -wheelEvent.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in wheelEvent && wheelEvent.axis === wheelEvent.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in wheelEvent) {\n pY = wheelEvent.deltaY;\n }\n\n if ('deltaX' in wheelEvent) {\n pX = wheelEvent.deltaX;\n }\n\n if ((pX || pY) && wheelEvent.deltaMode) {\n if (wheelEvent.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n} // ----------------------------------------------------------------------------\n// Default export\n// ----------------------------------------------------------------------------\n\nvar macro = {\n algo: algo,\n capitalize: capitalize,\n chain: chain,\n debounce: debounce,\n enumToString: enumToString,\n event: event,\n EVENT_ABORT: EVENT_ABORT,\n formatBytesToProperUnit: formatBytesToProperUnit,\n formatNumbersWithThousandSeparator: formatNumbersWithThousandSeparator,\n get: get,\n getArray: getArray,\n getCurrentGlobalMTime: getCurrentGlobalMTime,\n getStateArrayMapFunc: getStateArrayMapFunc,\n isVtkObject: isVtkObject,\n keystore: keystore,\n measurePromiseExecution: measurePromiseExecution,\n moveToProtected: moveToProtected,\n newInstance: newInstance,\n newTypedArray: newTypedArray,\n newTypedArrayFrom: newTypedArrayFrom,\n normalizeWheel: normalizeWheel,\n obj: obj,\n proxy: proxy,\n proxyPropertyMapping: proxyPropertyMapping,\n proxyPropertyState: proxyPropertyState,\n safeArrays: safeArrays,\n set: set,\n setArray: setArray,\n setGet: setGet,\n setGetArray: setGetArray,\n setImmediate: setImmediateVTK,\n setLoggerFunction: setLoggerFunction,\n throttle: throttle,\n traverseInstanceTree: traverseInstanceTree,\n TYPED_ARRAYS: TYPED_ARRAYS,\n // deprecated todo remove on breaking API revision\n uncapitalize: uncapitalize,\n VOID: VOID,\n vtkDebugMacro: vtkDebugMacro,\n vtkErrorMacro: vtkErrorMacro,\n vtkInfoMacro: vtkInfoMacro,\n vtkLogMacro: vtkLogMacro,\n vtkOnceErrorMacro: vtkOnceErrorMacro,\n vtkWarningMacro: vtkWarningMacro\n};\n\nexport { EVENT_ABORT, TYPED_ARRAYS, VOID, _capitalize, algo, capitalize, chain, debounce, macro as default, event, formatBytesToProperUnit, formatNumbersWithThousandSeparator, get, getArray, isVtkObject, keystore, measurePromiseExecution, moveToProtected, newInstance, newTypedArray, newTypedArrayFrom, normalizeWheel, obj, proxy, proxyPropertyMapping, proxyPropertyState, set, setArray, setGet, setGetArray, setImmediateVTK, setLoggerFunction, throttle, traverseInstanceTree, uncapitalize, vtkDebugMacro, vtkErrorMacro, vtkInfoMacro, vtkLogMacro, vtkOnceErrorMacro, vtkWarningMacro };\n","// A port of an algorithm by Johannes Baagøe <baagoe@baagoe.com>, 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe <baagoe@baagoe.org>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n","// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n","// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n","/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n","// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n","var IDENTITY = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nvar IDENTITY_3X3 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\nvar EPSILON = 1e-6;\nvar VTK_SMALL_NUMBER = 1.0e-12;\nvar Constants = {\n IDENTITY: IDENTITY,\n IDENTITY_3X3: IDENTITY_3X3,\n EPSILON: EPSILON,\n VTK_SMALL_NUMBER: VTK_SMALL_NUMBER\n};\n\nexport { EPSILON, IDENTITY, IDENTITY_3X3, VTK_SMALL_NUMBER, Constants as default };\n","import _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport seedrandom from 'seedrandom';\nimport macro from '../../../macros.js';\nimport { IDENTITY, IDENTITY_3X3, VTK_SMALL_NUMBER, EPSILON } from './Constants.js';\n\nvar vtkErrorMacro = macro.vtkErrorMacro,\n vtkWarningMacro = macro.vtkWarningMacro; // ----------------------------------------------------------------------------\n\n/* eslint-disable camelcase */\n\n/* eslint-disable no-cond-assign */\n\n/* eslint-disable no-bitwise */\n\n/* eslint-disable no-multi-assign */\n// ----------------------------------------------------------------------------\n\nvar randomSeedValue = 0;\nvar VTK_MAX_ROTATIONS = 20;\n\nfunction notImplemented(method) {\n return function () {\n return vtkErrorMacro(\"vtkMath::\".concat(method, \" - NOT IMPLEMENTED\"));\n };\n} // Swap rows for n by n matrix\n\n\nfunction swapRowsMatrix_nxn(matrix, n, row1, row2) {\n var tmp;\n\n for (var i = 0; i < n; i++) {\n tmp = matrix[row1 * n + i];\n matrix[row1 * n + i] = matrix[row2 * n + i];\n matrix[row2 * n + i] = tmp;\n }\n} // Swap columns for n by n matrix\n\n\nfunction swapColumnsMatrix_nxn(matrix, n, column1, column2) {\n var tmp;\n\n for (var i = 0; i < n; i++) {\n tmp = matrix[i * n + column1];\n matrix[i * n + column1] = matrix[i * n + column2];\n matrix[i * n + column2] = tmp;\n }\n} // ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n\nfunction createArray() {\n var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3;\n // faster than Array.from and/or while loop\n var res = Array(size);\n\n for (var i = 0; i < size; ++i) {\n res[i] = 0;\n }\n\n return res;\n}\nvar Pi = function Pi() {\n return Math.PI;\n};\nfunction radiansFromDegrees(deg) {\n return deg / 180 * Math.PI;\n}\nfunction degreesFromRadians(rad) {\n return rad * 180 / Math.PI;\n}\nvar round = Math.round,\n floor = Math.floor,\n ceil = Math.ceil,\n min = Math.min,\n max = Math.max;\nfunction arrayMin(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stride = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var minValue = Infinity;\n\n for (var i = offset, len = arr.length; i < len; i += stride) {\n if (arr[i] < minValue) {\n minValue = arr[i];\n }\n }\n\n return minValue;\n}\nfunction arrayMax(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stride = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var maxValue = -Infinity;\n\n for (var i = offset, len = arr.length; i < len; i += stride) {\n if (maxValue < arr[i]) {\n maxValue = arr[i];\n }\n }\n\n return maxValue;\n}\nfunction arrayRange(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stride = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var minValue = Infinity;\n var maxValue = -Infinity;\n\n for (var i = offset, len = arr.length; i < len; i += stride) {\n if (arr[i] < minValue) {\n minValue = arr[i];\n }\n\n if (maxValue < arr[i]) {\n maxValue = arr[i];\n }\n }\n\n return [minValue, maxValue];\n}\nvar ceilLog2 = notImplemented('ceilLog2');\nvar factorial = notImplemented('factorial');\nfunction nearestPowerOfTwo(xi) {\n var v = 1;\n\n while (v < xi) {\n v *= 2;\n }\n\n return v;\n}\nfunction isPowerOfTwo(x) {\n return x === nearestPowerOfTwo(x);\n}\nfunction binomial(m, n) {\n var r = 1;\n\n for (var i = 1; i <= n; ++i) {\n r *= (m - i + 1) / i;\n }\n\n return Math.floor(r);\n}\nfunction beginCombination(m, n) {\n if (m < n) {\n return 0;\n }\n\n var r = createArray(n);\n\n for (var i = 0; i < n; ++i) {\n r[i] = i;\n }\n\n return r;\n}\nfunction nextCombination(m, n, r) {\n var status = 0;\n\n for (var i = n - 1; i >= 0; --i) {\n if (r[i] < m - n + i) {\n var j = r[i] + 1;\n\n while (i < n) {\n r[i++] = j++;\n }\n\n status = 1;\n break;\n }\n }\n\n return status;\n}\nfunction randomSeed(seed) {\n seedrandom(\"\".concat(seed), {\n global: true\n });\n randomSeedValue = seed;\n}\nfunction getSeed() {\n return randomSeedValue;\n}\nfunction random() {\n var minValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var maxValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var delta = maxValue - minValue;\n return minValue + delta * Math.random();\n}\nvar gaussian = notImplemented('gaussian'); // Vect3 operations\n\nfunction add(a, b, out) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\nfunction subtract(a, b, out) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\nfunction multiplyScalar(vec, scalar) {\n vec[0] *= scalar;\n vec[1] *= scalar;\n vec[2] *= scalar;\n return vec;\n}\nfunction multiplyScalar2D(vec, scalar) {\n vec[0] *= scalar;\n vec[1] *= scalar;\n return vec;\n}\nfunction multiplyAccumulate(a, b, scalar, out) {\n out[0] = a[0] + b[0] * scalar;\n out[1] = a[1] + b[1] * scalar;\n out[2] = a[2] + b[2] * scalar;\n return out;\n}\nfunction multiplyAccumulate2D(a, b, scalar, out) {\n out[0] = a[0] + b[0] * scalar;\n out[1] = a[1] + b[1] * scalar;\n return out;\n}\nfunction dot(x, y) {\n return x[0] * y[0] + x[1] * y[1] + x[2] * y[2];\n}\nfunction outer(x, y, out_3x3) {\n out_3x3[0] = x[0] * y[0];\n out_3x3[1] = x[0] * y[1];\n out_3x3[2] = x[0] * y[2];\n out_3x3[3] = x[1] * y[0];\n out_3x3[4] = x[1] * y[1];\n out_3x3[5] = x[1] * y[2];\n out_3x3[6] = x[2] * y[0];\n out_3x3[7] = x[2] * y[1];\n out_3x3[8] = x[2] * y[2];\n}\nfunction cross(x, y, out) {\n var Zx = x[1] * y[2] - x[2] * y[1];\n var Zy = x[2] * y[0] - x[0] * y[2];\n var Zz = x[0] * y[1] - x[1] * y[0];\n out[0] = Zx;\n out[1] = Zy;\n out[2] = Zz;\n return out;\n}\nfunction norm(x) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;\n\n switch (n) {\n case 1:\n return Math.abs(x);\n\n case 2:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1]);\n\n case 3:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);\n\n default:\n {\n var sum = 0;\n\n for (var i = 0; i < n; i++) {\n sum += x[i] * x[i];\n }\n\n return Math.sqrt(sum);\n }\n }\n}\nfunction normalize(x) {\n var den = norm(x);\n\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n x[2] /= den;\n }\n\n return den;\n}\nfunction perpendiculars(x, y, z, theta) {\n var x2 = x[0] * x[0];\n var y2 = x[1] * x[1];\n var z2 = x[2] * x[2];\n var r = Math.sqrt(x2 + y2 + z2);\n var dx;\n var dy;\n var dz; // transpose the vector to avoid divide-by-zero error\n\n if (x2 > y2 && x2 > z2) {\n dx = 0;\n dy = 1;\n dz = 2;\n } else if (y2 > z2) {\n dx = 1;\n dy = 2;\n dz = 0;\n } else {\n dx = 2;\n dy = 0;\n dz = 1;\n }\n\n var a = x[dx] / r;\n var b = x[dy] / r;\n var c = x[dz] / r;\n var tmp = Math.sqrt(a * a + c * c);\n\n if (theta !== 0) {\n var sintheta = Math.sin(theta);\n var costheta = Math.cos(theta);\n\n if (y) {\n y[dx] = (c * costheta - a * b * sintheta) / tmp;\n y[dy] = sintheta * tmp;\n y[dz] = (-(a * costheta) - b * c * sintheta) / tmp;\n }\n\n if (z) {\n z[dx] = (-(c * sintheta) - a * b * costheta) / tmp;\n z[dy] = costheta * tmp;\n z[dz] = (a * sintheta - b * c * costheta) / tmp;\n }\n } else {\n if (y) {\n y[dx] = c / tmp;\n y[dy] = 0;\n y[dz] = -a / tmp;\n }\n\n if (z) {\n z[dx] = -a * b / tmp;\n z[dy] = tmp;\n z[dz] = -b * c / tmp;\n }\n }\n}\nfunction projectVector(a, b, projection) {\n var bSquared = dot(b, b);\n\n if (bSquared === 0) {\n projection[0] = 0;\n projection[1] = 0;\n projection[2] = 0;\n return false;\n }\n\n var scale = dot(a, b) / bSquared;\n\n for (var i = 0; i < 3; i++) {\n projection[i] = b[i];\n }\n\n multiplyScalar(projection, scale);\n return true;\n}\nfunction dot2D(x, y) {\n return x[0] * y[0] + x[1] * y[1];\n}\nfunction projectVector2D(a, b, projection) {\n var bSquared = dot2D(b, b);\n\n if (bSquared === 0) {\n projection[0] = 0;\n projection[1] = 0;\n return false;\n }\n\n var scale = dot2D(a, b) / bSquared;\n\n for (var i = 0; i < 2; i++) {\n projection[i] = b[i];\n }\n\n multiplyScalar2D(projection, scale);\n return true;\n}\nfunction distance2BetweenPoints(x, y) {\n return (x[0] - y[0]) * (x[0] - y[0]) + (x[1] - y[1]) * (x[1] - y[1]) + (x[2] - y[2]) * (x[2] - y[2]);\n}\nfunction angleBetweenVectors(v1, v2) {\n var crossVect = [0, 0, 0];\n cross(v1, v2, crossVect);\n return Math.atan2(norm(crossVect), dot(v1, v2));\n}\nfunction signedAngleBetweenVectors(v1, v2, vN) {\n var crossVect = [0, 0, 0];\n cross(v1, v2, crossVect);\n var angle = Math.atan2(norm(crossVect), dot(v1, v2));\n return dot(crossVect, vN) >= 0 ? angle : -angle;\n}\nfunction gaussianAmplitude(mean, variance, position) {\n var distanceFromMean = Math.abs(mean - position);\n return 1 / Math.sqrt(2 * Math.PI * variance) * Math.exp(-Math.pow(distanceFromMean, 2) / (2 * variance));\n}\nfunction gaussianWeight(mean, variance, position) {\n var distanceFromMean = Math.abs(mean - position);\n return Math.exp(-Math.pow(distanceFromMean, 2) / (2 * variance));\n}\nfunction outer2D(x, y, out_2x2) {\n out_2x2[0] = x[0] * y[0];\n out_2x2[1] = x[0] * y[1];\n out_2x2[2] = x[1] * y[0];\n out_2x2[3] = x[1] * y[1];\n}\nfunction norm2D(x2D) {\n return Math.sqrt(x2D[0] * x2D[0] + x2D[1] * x2D[1]);\n}\nfunction normalize2D(x) {\n var den = norm2D(x);\n\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n }\n\n return den;\n}\nfunction rowsToMat4(row0, row1, row2, row3, mat) {\n for (var i = 0; i < 4; i++) {\n mat[i] = row0[i];\n mat[4 + i] = row1[i];\n mat[8 + i] = row2[i];\n mat[12 + i] = row3[i];\n }\n\n return mat;\n}\nfunction columnsToMat4(column0, column1, column2, column3, mat) {\n for (var i = 0; i < 4; i++) {\n mat[4 * i] = column0[i];\n mat[4 * i + 1] = column1[i];\n mat[4 * i + 2] = column2[i];\n mat[4 * i + 3] = column3[i];\n }\n\n return mat;\n}\nfunction rowsToMat3(row0, row1, row2, mat) {\n for (var i = 0; i < 3; i++) {\n mat[i] = row0[i];\n mat[3 + i] = row1[i];\n mat[6 + i] = row2[i];\n }\n\n return mat;\n}\nfunction columnsToMat3(column0, column1, column2, mat) {\n for (var i = 0; i < 3; i++) {\n mat[3 * i] = column0[i];\n mat[3 * i + 1] = column1[i];\n mat[3 * i + 2] = column2[i];\n }\n\n return mat;\n}\nfunction determinant2x2() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 2) {\n return args[0][0] * args[1][1] - args[1][0] * args[0][1];\n }\n\n if (args.length === 4) {\n return args[0] * args[3] - args[1] * args[2];\n }\n\n return Number.NaN;\n}\nfunction LUFactor3x3(mat_3x3, index_3) {\n var maxI;\n var tmp;\n var largest;\n var scale = [0, 0, 0]; // Loop over rows to get implicit scaling information\n\n for (var i = 0; i < 3; i++) {\n largest = Math.abs(mat_3x3[i * 3]);\n\n if ((tmp = Math.abs(mat_3x3[i * 3 + 1])) > largest) {\n largest = tmp;\n }\n\n if ((tmp = Math.abs(mat_3x3[i * 3 + 2])) > largest) {\n largest = tmp;\n }\n\n scale[i] = 1 / largest;\n } // Loop over all columns using Crout's method\n // first column\n\n\n largest = scale[0] * Math.abs(mat_3x3[0]);\n maxI = 0;\n\n if ((tmp = scale[1] * Math.abs(mat_3x3[3])) >= largest) {\n largest = tmp;\n maxI = 1;\n }\n\n if ((tmp = scale[2] * Math.abs(mat_3x3[6])) >= largest) {\n maxI = 2;\n }\n\n if (maxI !== 0) {\n swapRowsMatrix_nxn(mat_3x3, 3, maxI, 0);\n scale[maxI] = scale[0];\n }\n\n index_3[0] = maxI;\n mat_3x3[3] /= mat_3x3[0];\n mat_3x3[6] /= mat_3x3[0]; // second column\n\n mat_3x3[4] -= mat_3x3[3] * mat_3x3[1];\n mat_3x3[7] -= mat_3x3[6] * mat_3x3[1];\n largest = scale[1] * Math.abs(mat_3x3[4]);\n maxI = 1;\n\n if ((tmp = scale[2] * Math.abs(mat_3x3[7])) >= largest) {\n maxI = 2;\n swapRowsMatrix_nxn(mat_3x3, 3, 1, 2);\n scale[2] = scale[1];\n }\n\n index_3[1] = maxI;\n mat_3x3[7] /= mat_3x3[4]; // third column\n\n mat_3x3[5] -= mat_3x3[3] * mat_3x3[2];\n mat_3x3[8] -= mat_3x3[6] * mat_3x3[2] + mat_3x3[7] * mat_3x3[5];\n index_3[2] = 2;\n}\nfunction LUSolve3x3(mat_3x3, index_3, x_3) {\n // forward substitution\n var sum = x_3[index_3[0]];\n x_3[index_3[0]] = x_3[0];\n x_3[0] = sum;\n sum = x_3[index_3[1]];\n x_3[index_3[1]] = x_3[1];\n x_3[1] = sum - mat_3x3[3] * x_3[0];\n sum = x_3[index_3[2]];\n x_3[index_3[2]] = x_3[2];\n x_3[2] = sum - mat_3x3[6] * x_3[0] - mat_3x3[7] * x_3[1]; // back substitution\n\n x_3[2] /= mat_3x3[8];\n x_3[1] = (x_3[1] - mat_3x3[5] * x_3[2]) / mat_3x3[4];\n x_3[0] = (x_3[0] - mat_3x3[1] * x_3[1] - mat_3x3[2] * x_3[2]) / mat_3x3[0];\n}\nfunction linearSolve3x3(mat_3x3, x_3, y_3) {\n var a1 = mat_3x3[0];\n var b1 = mat_3x3[1];\n var c1 = mat_3x3[2];\n var a2 = mat_3x3[3];\n var b2 = mat_3x3[4];\n var c2 = mat_3x3[5];\n var a3 = mat_3x3[6];\n var b3 = mat_3x3[7];\n var c3 = mat_3x3[8]; // Compute the adjoint\n\n var d1 = +determinant2x2(b2, b3, c2, c3);\n var d2 = -determinant2x2(a2, a3, c2, c3);\n var d3 = +determinant2x2(a2, a3, b2, b3);\n var e1 = -determinant2x2(b1, b3, c1, c3);\n var e2 = +determinant2x2(a1, a3, c1, c3);\n var e3 = -determinant2x2(a1, a3, b1, b3);\n var f1 = +determinant2x2(b1, b2, c1, c2);\n var f2 = -determinant2x2(a1, a2, c1, c2);\n var f3 = +determinant2x2(a1, a2, b1, b2); // Compute the determinant\n\n var det = a1 * d1 + b1 * d2 + c1 * d3; // Multiply by the adjoint\n\n var v1 = d1 * x_3[0] + e1 * x_3[1] + f1 * x_3[2];\n var v2 = d2 * x_3[0] + e2 * x_3[1] + f2 * x_3[2];\n var v3 = d3 * x_3[0] + e3 * x_3[1] + f3 * x_3[2]; // Divide by the determinant\n\n y_3[0] = v1 / det;\n y_3[1] = v2 / det;\n y_3[2] = v3 / det;\n}\nfunction multiply3x3_vect3(mat_3x3, in_3, out_3) {\n var x = mat_3x3[0] * in_3[0] + mat_3x3[1] * in_3[1] + mat_3x3[2] * in_3[2];\n var y = mat_3x3[3] * in_3[0] + mat_3x3[4] * in_3[1] + mat_3x3[5] * in_3[2];\n var z = mat_3x3[6] * in_3[0] + mat_3x3[7] * in_3[1] + mat_3x3[8] * in_3[2];\n out_3[0] = x;\n out_3[1] = y;\n out_3[2] = z;\n}\nfunction multiply3x3_mat3(a_3x3, b_3x3, out_3x3) {\n var copyA = _toConsumableArray(a_3x3);\n\n var copyB = _toConsumableArray(b_3x3);\n\n for (var i = 0; i < 3; i++) {\n out_3x3[i] = copyA[0] * copyB[i] + copyA[1] * copyB[i + 3] + copyA[2] * copyB[i + 6];\n out_3x3[i + 3] = copyA[3] * copyB[i] + copyA[4] * copyB[i + 3] + copyA[5] * copyB[i + 6];\n out_3x3[i + 6] = copyA[6] * copyB[i] + copyA[7] * copyB[i + 3] + copyA[8] * copyB[i + 6];\n }\n}\nfunction multiplyMatrix(a, b, rowA, colA, rowB, colB, out_rowXcol) {\n // we need colA == rowB\n if (colA !== rowB) {\n vtkErrorMacro('Number of columns of A must match number of rows of B.');\n } // If a or b is used to store the result, copying them is required\n\n\n var copyA = _toConsumableArray(a);\n\n var copyB = _toConsumableArray(b); // output matrix is rowA*colB\n // output row\n\n\n for (var i = 0; i < rowA; i++) {\n // output col\n for (var j = 0; j < colB; j++) {\n out_rowXcol[i * colB + j] = 0; // sum for this point\n\n for (var k = 0; k < colA; k++) {\n out_rowXcol[i * colB + j] += copyA[i * colA + k] * copyB[j + colB * k];\n }\n }\n }\n}\nfunction transpose3x3(in_3x3, outT_3x3) {\n var tmp; // off-diagonal elements\n\n tmp = in_3x3[3];\n outT_3x3[3] = in_3x3[1];\n outT_3x3[1] = tmp;\n tmp = in_3x3[6];\n outT_3x3[6] = in_3x3[2];\n outT_3x3[2] = tmp;\n tmp = in_3x3[7];\n outT_3x3[7] = in_3x3[5];\n outT_3x3[5] = tmp; // on-diagonal elements\n\n outT_3x3[0] = in_3x3[0];\n outT_3x3[4] = in_3x3[4];\n outT_3x3[8] = in_3x3[8];\n}\nfunction invert3x3(in_3x3, outI_3x3) {\n var a1 = in_3x3[0];\n var b1 = in_3x3[1];\n var c1 = in_3x3[2];\n var a2 = in_3x3[3];\n var b2 = in_3x3[4];\n var c2 = in_3x3[5];\n var a3 = in_3x3[6];\n var b3 = in_3x3[7];\n var c3 = in_3x3[8]; // Compute the adjoint\n\n var d1 = +determinant2x2(b2, b3, c2, c3);\n var d2 = -determinant2x2(a2, a3, c2, c3);\n var d3 = +determinant2x2(a2, a3, b2, b3);\n var e1 = -determinant2x2(b1, b3, c1, c3);\n var e2 = +determinant2x2(a1, a3, c1, c3);\n var e3 = -determinant2x2(a1, a3, b1, b3);\n var f1 = +determinant2x2(b1, b2, c1, c2);\n var f2 = -determinant2x2(a1, a2, c1, c2);\n var f3 = +determinant2x2(a1, a2, b1, b2); // Divide by the determinant\n\n var det = a1 * d1 + b1 * d2 + c1 * d3;\n\n if (det === 0) {\n vtkWarningMacro('Matrix has 0 determinant');\n }\n\n outI_3x3[0] = d1 / det;\n outI_3x3[3] = d2 / det;\n outI_3x3[6] = d3 / det;\n outI_3x3[1] = e1 / det;\n outI_3x3[4] = e2 / det;\n outI_3x3[7] = e3 / det;\n outI_3x3[2] = f1 / det;\n outI_3x3[5] = f2 / det;\n outI_3x3[8] = f3 / det;\n}\nfunction determinant3x3(mat_3x3) {\n return mat_3x3[0] * mat_3x3[4] * mat_3x3[8] + mat_3x3[3] * mat_3x3[7] * mat_3x3[2] + mat_3x3[6] * mat_3x3[1] * mat_3x3[5] - mat_3x3[0] * mat_3x3[7] * mat_3x3[5] - mat_3x3[3] * mat_3x3[1] * mat_3x3[8] - mat_3x3[6] * mat_3x3[4] * mat_3x3[2];\n}\n/**\n * Returns true if elements of both arrays are equals.\n * @param {Array} a an array of numbers (vector, point, matrix...)\n * @param {Array} b an array of numbers (vector, point, matrix...)\n * @param {Number} eps tolerance\n */\n\nfunction areEquals(a, b) {\n var eps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EPSILON;\n\n if (a.length !== b.length) {\n return false;\n }\n\n function isEqual(element, index) {\n return Math.abs(element - b[index]) <= eps;\n }\n\n return a.every(isEqual);\n}\nvar areMatricesEqual = areEquals;\nfunction identity3x3(mat_3x3) {\n for (var i = 0; i < 3; i++) {\n /* eslint-disable-next-line no-multi-assign */\n mat_3x3[i * 3] = mat_3x3[i * 3 + 1] = mat_3x3[i * 3 + 2] = 0;\n mat_3x3[i * 3 + i] = 1;\n }\n}\nfunction identity(n, mat) {\n for (var i = 0; i < n; i++) {\n for (var j = 0; j < n; j++) {\n mat[i * n + j] = 0;\n }\n\n mat[i * n + i] = 1;\n }\n\n return mat;\n}\nfunction isIdentity(mat) {\n var eps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : EPSILON;\n return areMatricesEqual(mat, IDENTITY, eps);\n}\nfunction isIdentity3x3(mat) {\n var eps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : EPSILON;\n return areMatricesEqual(mat, IDENTITY_3X3, eps);\n}\nfunction quaternionToMatrix3x3(quat_4, mat_3x3) {\n var ww = quat_4[0] * quat_4[0];\n var wx = quat_4[0] * quat_4[1];\n var wy = quat_4[0] * quat_4[2];\n var wz = quat_4[0] * quat_4[3];\n var xx = quat_4[1] * quat_4[1];\n var yy = quat_4[2] * quat_4[2];\n var zz = quat_4[3] * quat_4[3];\n var xy = quat_4[1] * quat_4[2];\n var xz = quat_4[1] * quat_4[3];\n var yz = quat_4[2] * quat_4[3];\n var rr = xx + yy + zz; // normalization factor, just in case quaternion was not normalized\n\n var f = 1 / (ww + rr);\n var s = (ww - rr) * f;\n f *= 2;\n mat_3x3[0] = xx * f + s;\n mat_3x3[3] = (xy + wz) * f;\n mat_3x3[6] = (xz - wy) * f;\n mat_3x3[1] = (xy - wz) * f;\n mat_3x3[4] = yy * f + s;\n mat_3x3[7] = (yz + wx) * f;\n mat_3x3[2] = (xz + wy) * f;\n mat_3x3[5] = (yz - wx) * f;\n mat_3x3[8] = zz * f + s;\n}\nfunction roundNumber(num) {\n var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!\"\".concat(num).includes('e')) {\n return +\"\".concat(Math.round(\"\".concat(num, \"e+\").concat(digits)), \"e-\").concat(digits);\n }\n\n var arr = \"\".concat(num).split('e');\n var sig = '';\n\n if (+arr[1] + digits > 0) {\n sig = '+';\n }\n\n return +\"\".concat(Math.round(\"\".concat(+arr[0], \"e\").concat(sig).concat(+arr[1] + digits)), \"e-\").concat(digits);\n}\nfunction roundVector(vector) {\n var out = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0];\n var digits = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n out[0] = roundNumber(vector[0], digits);\n out[1] = roundNumber(vector[1], digits);\n out[2] = roundNumber(vector[2], digits);\n return out;\n}\nfunction jacobiN(a, n, w, v) {\n var i;\n var j;\n var k;\n var iq;\n var ip;\n var numPos;\n var tresh;\n var theta;\n var t;\n var tau;\n var sm;\n var s;\n var h;\n var g;\n var c;\n var tmp;\n var b = createArray(n);\n var z = createArray(n);\n\n var vtkROTATE = function vtkROTATE(aa, ii, jj) {\n g = aa[ii];\n h = aa[jj];\n aa[ii] = g - s * (h + g * tau);\n aa[jj] = h + s * (g - h * tau);\n }; // initialize\n\n\n identity(n, v);\n\n for (ip = 0; ip < n; ip++) {\n b[ip] = w[ip] = a[ip + ip * n];\n z[ip] = 0.0;\n } // begin rotation sequence\n\n\n for (i = 0; i < VTK_MAX_ROTATIONS; i++) {\n sm = 0.0;\n\n for (ip = 0; ip < n - 1; ip++) {\n for (iq = ip + 1; iq < n; iq++) {\n sm += Math.abs(a[ip * n + iq]);\n }\n }\n\n if (sm === 0.0) {\n break;\n } // first 3 sweeps\n\n\n if (i < 3) {\n tresh = 0.2 * sm / (n * n);\n } else {\n tresh = 0.0;\n }\n\n for (ip = 0; ip < n - 1; ip++) {\n for (iq = ip + 1; iq < n; iq++) {\n g = 100.0 * Math.abs(a[ip * n + iq]); // after 4 sweeps\n\n if (i > 3 && Math.abs(w[ip]) + g === Math.abs(w[ip]) && Math.abs(w[iq]) + g === Math.abs(w[iq])) {\n a[ip * n + iq] = 0.0;\n } else if (Math.abs(a[ip * n + iq]) > tresh) {\n h = w[iq] - w[ip];\n\n if (Math.abs(h) + g === Math.abs(h)) {\n t = a[ip * n + iq] / h;\n } else {\n theta = 0.5 * h / a[ip * n + iq];\n t = 1.0 / (Math.abs(theta) + Math.sqrt(1.0 + theta * theta));\n\n if (theta < 0.0) {\n t = -t;\n }\n }\n\n c = 1.0 / Math.sqrt(1 + t * t);\n s = t * c;\n tau = s / (1.0 + c);\n h = t * a[ip * n + iq];\n z[ip] -= h;\n z[iq] += h;\n w[ip] -= h;\n w[iq] += h;\n a[ip * n + iq] = 0.0; // ip already shifted left by 1 unit\n\n for (j = 0; j <= ip - 1; j++) {\n vtkROTATE(a, j * n + ip, j * n + iq);\n } // ip and iq already shifted left by 1 unit\n\n\n for (j = ip + 1; j <= iq - 1; j++) {\n vtkROTATE(a, ip * n + j, j * n + iq);\n } // iq already shifted left by 1 unit\n\n\n for (j = iq + 1; j < n; j++) {\n vtkROTATE(a, ip * n + j, iq * n + j);\n }\n\n for (j = 0; j < n; j++) {\n vtkROTATE(v, j * n + ip, j * n + iq);\n }\n }\n }\n }\n\n for (ip = 0; ip < n; ip++) {\n b[ip] += z[ip];\n w[ip] = b[ip];\n z[ip] = 0.0;\n }\n } // this is NEVER called\n\n\n if (i >= VTK_MAX_ROTATIONS) {\n vtkWarningMacro('vtkMath::Jacobi: Error extracting eigenfunctions');\n return 0;\n } // sort eigenfunctions: these changes do not affect accuracy\n\n\n for (j = 0; j < n - 1; j++) {\n // boundary incorrect\n k = j;\n tmp = w[k];\n\n for (i = j + 1; i < n; i++) {\n // boundary incorrect, shifted already\n if (w[i] >= tmp || Math.abs(w[i] - tmp) < VTK_SMALL_NUMBER) {\n // why exchange if same?\n k = i;\n tmp = w[k];\n }\n }\n\n if (k !== j) {\n w[k] = w[j];\n w[j] = tmp;\n swapColumnsMatrix_nxn(v, n, j, k);\n }\n } // ensure eigenvector consistency (i.e., Jacobi can compute vectors that\n // are negative of one another (.707,.707,0) and (-.707,-.707,0). This can\n // reek havoc in hyperstreamline/other stuff. We will select the most\n // positive eigenvector.\n\n\n var ceil_half_n = (n >> 1) + (n & 1);\n\n for (numPos = 0, i = 0; i < n * n; i++) {\n if (v[i] >= 0.0) {\n numPos++;\n }\n } // if ( numPos < ceil(double(n)/double(2.0)) )\n\n\n if (numPos < ceil_half_n) {\n for (i = 0; i < n; i++) {\n v[i * n + j] *= -1.0;\n }\n }\n\n return 1;\n}\nfunction matrix3x3ToQuaternion(mat_3x3, quat_4) {\n var tmp = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; // on-diagonal elements\n\n tmp[0] = mat_3x3[0] + mat_3x3[4] + mat_3x3[8];\n tmp[5] = mat_3x3[0] - mat_3x3[4] - mat_3x3[8];\n tmp[10] = -mat_3x3[0] + mat_3x3[4] - mat_3x3[8];\n tmp[15] = -mat_3x3[0] - mat_3x3[4] + mat_3x3[8]; // off-diagonal elements\n\n tmp[1] = tmp[4] = mat_3x3[7] - mat_3x3[5];\n tmp[2] = tmp[8] = mat_3x3[2] - mat_3x3[6];\n tmp[3] = tmp[12] = mat_3x3[3] - mat_3x3[1];\n tmp[6] = tmp[9] = mat_3x3[3] + mat_3x3[1];\n tmp[7] = tmp[13] = mat_3x3[2] + mat_3x3[6];\n tmp[11] = tmp[14] = mat_3x3[7] + mat_3x3[5];\n var eigenvectors = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n var eigenvalues = [0, 0, 0, 0]; // convert into format that JacobiN can use,\n // then use Jacobi to find eigenvalues and eigenvectors\n // tmp is copied because jacobiN may modify it\n\n var NTemp = [].concat(tmp);\n jacobiN(NTemp, 4, eigenvalues, eigenvectors); // the first eigenvector is the one we want\n\n quat_4[0] = eigenvectors[0];\n quat_4[1] = eigenvectors[4];\n quat_4[2] = eigenvectors[8];\n quat_4[3] = eigenvectors[12];\n}\nfunction multiplyQuaternion(quat_1, quat_2, quat_out) {\n var ww = quat_1[0] * quat_2[0];\n var wx = quat_1[0] * quat_2[1];\n var wy = quat_1[0] * quat_2[2];\n var wz = quat_1[0] * quat_2[3];\n var xw = quat_1[1] * quat_2[0];\n var xx = quat_1[1] * quat_2[1];\n var xy = quat_1[1] * quat_2[2];\n var xz = quat_1[1] * quat_2[3];\n var yw = quat_1[2] * quat_2[0];\n var yx = quat_1[2] * quat_2[1];\n var yy = quat_1[2] * quat_2[2];\n var yz = quat_1[2] * quat_2[3];\n var zw = quat_1[3] * quat_2[0];\n var zx = quat_1[3] * quat_2[1];\n var zy = quat_1[3] * quat_2[2];\n var zz = quat_1[3] * quat_2[3];\n quat_out[0] = ww - xx - yy - zz;\n quat_out[1] = wx + xw + yz - zy;\n quat_out[2] = wy - xz + yw + zx;\n quat_out[3] = wz + xy - yx + zw;\n}\nfunction orthogonalize3x3(a_3x3, out_3x3) {\n // copy the matrix\n for (var i = 0; i < 9; i++) {\n out_3x3[i] = a_3x3[i];\n } // Pivot the matrix to improve accuracy\n\n\n var scale = createArray(3);\n var index = createArray(3);\n var largest; // Loop over rows to get implicit scaling information\n\n for (var _i = 0; _i < 3; _i++) {\n var _x = Math.abs(out_3x3[_i * 3]);\n\n var _x2 = Math.abs(out_3x3[_i * 3 + 1]);\n\n var _x3 = Math.abs(out_3x3[_i * 3 + 2]);\n\n largest = _x2 > _x ? _x2 : _x;\n largest = _x3 > largest ? _x3 : largest;\n scale[_i] = 1;\n\n if (largest !== 0) {\n scale[_i] /= largest;\n }\n } // first column\n\n\n var x1 = Math.abs(out_3x3[0]) * scale[0];\n var x2 = Math.abs(out_3x3[3]) * scale[1];\n var x3 = Math.abs(out_3x3[6]) * scale[2];\n index[0] = 0;\n largest = x1;\n\n if (x2 >= largest) {\n largest = x2;\n index[0] = 1;\n }\n\n if (x3 >= largest) {\n index[0] = 2;\n }\n\n if (index[0] !== 0) {\n // swap vectors\n swapColumnsMatrix_nxn(out_3x3, 3, index[0], 0);\n scale[index[0]] = scale[0];\n } // second column\n\n\n var y2 = Math.abs(out_3x3[4]) * scale[1];\n var y3 = Math.abs(out_3x3[7]) * scale[2];\n index[1] = 1;\n largest = y2;\n\n if (y3 >= largest) {\n index[1] = 2; // swap vectors\n\n swapColumnsMatrix_nxn(out_3x3, 3, 1, 2);\n } // third column\n\n\n index[2] = 2; // A quaternion can only describe a pure rotation, not\n // a rotation with a flip, therefore the flip must be\n // removed before the matrix is converted to a quaternion.\n\n var flip = 0;\n\n if (determinant3x3(out_3x3) < 0) {\n flip = 1;\n\n for (var _i2 = 0; _i2 < 9; _i2++) {\n out_3x3[_i2] = -out_3x3[_i2];\n }\n } // Do orthogonalization using a quaternion intermediate\n // (this, essentially, does the orthogonalization via\n // diagonalization of an appropriately constructed symmetric\n // 4x4 matrix rather than by doing SVD of the 3x3 matrix)\n\n\n var quat = createArray(4);\n matrix3x3ToQuaternion(out_3x3, quat);\n quaternionToMatrix3x3(quat, out_3x3); // Put the flip back into the orthogonalized matrix.\n\n if (flip) {\n for (var _i3 = 0; _i3 < 9; _i3++) {\n out_3x3[_i3] = -out_3x3[_i3];\n }\n } // Undo the pivoting\n\n\n if (index[1] !== 1) {\n swapColumnsMatrix_nxn(out_3x3, 3, index[1], 1);\n }\n\n if (index[0] !== 0) {\n swapColumnsMatrix_nxn(out_3x3, 3, index[0], 0);\n }\n}\nfunction diagonalize3x3(a_3x3, w_3, v_3x3) {\n var i;\n var j;\n var k;\n var maxI;\n var tmp;\n var maxVal; // a is copied because jacobiN may modify it\n\n var copyA = _toConsumableArray(a_3x3); // diagonalize using Jacobi\n\n\n jacobiN(copyA, 3, w_3, v_3x3); // if all the eigenvalues are the same, return identity matrix\n\n if (w_3[0] === w_3[1] && w_3[0] === w_3[2]) {\n identity3x3(v_3x3);\n return;\n } // transpose temporarily, it makes it easier to sort the eigenvectors\n\n\n transpose3x3(v_3x3, v_3x3); // if two eigenvalues are the same, re-orthogonalize to optimally line\n // up the eigenvectors with the x, y, and z axes\n\n for (i = 0; i < 3; i++) {\n // two eigenvalues are the same\n if (w_3[(i + 1) % 3] === w_3[(i + 2) % 3]) {\n // find maximum element of the independent eigenvector\n maxVal = Math.abs(v_3x3[i * 3]);\n maxI = 0;\n\n for (j = 1; j < 3; j++) {\n if (maxVal < (tmp = Math.abs(v_3x3[i * 3 + j]))) {\n maxVal = tmp;\n maxI = j;\n }\n } // swap the eigenvector into its proper position\n\n\n if (maxI !== i) {\n tmp = w_3[maxI];\n w_3[maxI] = w_3[i];\n w_3[i] = tmp;\n swapRowsMatrix_nxn(v_3x3, 3, i, maxI);\n } // maximum element of eigenvector should be positive\n\n\n if (v_3x3[maxI * 3 + maxI] < 0) {\n v_3x3[maxI * 3] = -v_3x3[maxI * 3];\n v_3x3[maxI * 3 + 1] = -v_3x3[maxI * 3 + 1];\n v_3x3[maxI * 3 + 2] = -v_3x3[maxI * 3 + 2];\n } // re-orthogonalize the other two eigenvectors\n\n\n j = (maxI + 1) % 3;\n k = (maxI + 2) % 3;\n v_3x3[j * 3] = 0.0;\n v_3x3[j * 3 + 1] = 0.0;\n v_3x3[j * 3 + 2] = 0.0;\n v_3x3[j * 3 + j] = 1.0;\n var vectTmp1 = cross([v_3x3[maxI * 3], v_3x3[maxI * 3 + 1], v_3x3[maxI * 3 + 2]], [v_3x3[j * 3], v_3x3[j * 3 + 1], v_3x3[j * 3 + 2]], []);\n normalize(vectTmp1);\n var vectTmp2 = cross(vectTmp1, [v_3x3[maxI * 3], v_3x3[maxI * 3 + 1], v_3x3[maxI * 3 + 2]], []);\n\n for (var t = 0; t < 3; t++) {\n v_3x3[k * 3 + t] = vectTmp1[t];\n v_3x3[j * 3 + t] = vectTmp2[t];\n } // transpose vectors back to columns\n\n\n transpose3x3(v_3x3, v_3x3);\n return;\n }\n } // the three eigenvalues are different, just sort the eigenvectors\n // to align them with the x, y, and z axes\n // find the vector with the largest x element, make that vector\n // the first vector\n\n\n maxVal = Math.abs(v_3x3[0]);\n maxI = 0;\n\n for (i = 1; i < 3; i++) {\n if (maxVal < (tmp = Math.abs(v_3x3[i * 3]))) {\n maxVal = tmp;\n maxI = i;\n }\n } // swap eigenvalue and eigenvector\n\n\n if (maxI !== 0) {\n var eigenValTmp = w_3[maxI];\n w_3[maxI] = w_3[0];\n w_3[0] = eigenValTmp;\n swapRowsMatrix_nxn(v_3x3, 3, maxI, 0);\n } // do the same for the y element\n\n\n if (Math.abs(v_3x3[4]) < Math.abs(v_3x3[7])) {\n var _eigenValTmp = w_3[2];\n w_3[2] = w_3[1];\n w_3[1] = _eigenValTmp;\n swapRowsMatrix_nxn(v_3x3, 3, 1, 2);\n } // ensure that the sign of the eigenvectors is correct\n\n\n for (i = 0; i < 2; i++) {\n if (v_3x3[i * 3 + i] < 0) {\n v_3x3[i * 3] = -v_3x3[i * 3];\n v_3x3[i * 3 + 1] = -v_3x3[i * 3 + 1];\n v_3x3[i * 3 + 2] = -v_3x3[i * 3 + 2];\n }\n } // set sign of final eigenvector to ensure that determinant is positive\n\n\n if (determinant3x3(v_3x3) < 0) {\n v_3x3[6] = -v_3x3[6];\n v_3x3[7] = -v_3x3[7];\n v_3x3[8] = -v_3x3[8];\n } // transpose the eigenvectors back again\n\n\n transpose3x3(v_3x3, v_3x3);\n}\nfunction singularValueDecomposition3x3(a_3x3, u_3x3, w_3, vT_3x3) {\n var i; // copy so that A can be used for U or VT without risk\n\n var B = _toConsumableArray(a_3x3); // temporarily flip if determinant is negative\n\n\n var d = determinant3x3(B);\n\n if (d < 0) {\n for (i = 0; i < 9; i++) {\n B[i] = -B[i];\n }\n } // orthogonalize, diagonalize, etc.\n\n\n orthogonalize3x3(B, u_3x3);\n transpose3x3(B, B);\n multiply3x3_mat3(B, u_3x3, vT_3x3);\n diagonalize3x3(vT_3x3, w_3, vT_3x3);\n multiply3x3_mat3(u_3x3, vT_3x3, u_3x3);\n transpose3x3(vT_3x3, vT_3x3); // re-create the flip\n\n if (d < 0) {\n w_3[0] = -w_3[0];\n w_3[1] = -w_3[1];\n w_3[2] = -w_3[2];\n }\n}\n/**\n * Factor linear equations Ax = b using LU decomposition A = LU. Output factorization LU is in matrix A.\n * @param {Matrix} A square matrix\n * @param {Number} index integer array of pivot indices index[0->n-1]\n * @param {Number} size matrix size\n */\n\nfunction luFactorLinearSystem(A, index, size) {\n var i;\n var j;\n var k;\n var largest;\n var maxI = 0;\n var sum;\n var temp1;\n var temp2;\n var scale = createArray(size); //\n // Loop over rows to get implicit scaling information\n //\n\n for (i = 0; i < size; i++) {\n for (largest = 0.0, j = 0; j < size; j++) {\n if ((temp2 = Math.abs(A[i * size + j])) > largest) {\n largest = temp2;\n }\n }\n\n if (largest === 0.0) {\n vtkWarningMacro('Unable to factor linear system');\n return 0;\n }\n\n scale[i] = 1.0 / largest;\n } //\n // Loop over all columns using Crout's method\n //\n\n\n for (j = 0; j < size; j++) {\n for (i = 0; i < j; i++) {\n sum = A[i * size + j];\n\n for (k = 0; k < i; k++) {\n sum -= A[i * size + k] * A[k * size + j];\n }\n\n A[i * size + j] = sum;\n } //\n // Begin search for largest pivot element\n //\n\n\n for (largest = 0.0, i = j; i < size; i++) {\n sum = A[i * size + j];\n\n for (k = 0; k < j; k++) {\n sum -= A[i * size + k] * A[k * size + j];\n }\n\n A[i * size + j] = sum;\n\n if ((temp1 = scale[i] * Math.abs(sum)) >= largest) {\n largest = temp1;\n maxI = i;\n }\n } //\n // Check for row interchange\n //\n\n\n if (j !== maxI) {\n for (k = 0; k < size; k++) {\n temp1 = A[maxI * size + k];\n A[maxI * size + k] = A[j * size + k];\n A[j * size + k] = temp1;\n }\n\n scale[maxI] = scale[j];\n } //\n // Divide by pivot element and perform elimination\n //\n\n\n index[j] = maxI;\n\n if (Math.abs(A[j * size + j]) <= VTK_SMALL_NUMBER) {\n vtkWarningMacro('Unable to factor linear system');\n return 0;\n }\n\n if (j !== size - 1) {\n temp1 = 1.0 / A[j * size + j];\n\n for (i = j + 1; i < size; i++) {\n A[i * size + j] *= temp1;\n }\n }\n }\n\n return 1;\n}\nfunction luSolveLinearSystem(A, index, x, size) {\n var i;\n var j;\n var ii;\n var idx;\n var sum; //\n // Proceed with forward and backsubstitution for L and U\n // matrices. First, forward substitution.\n //\n\n for (ii = -1, i = 0; i < size; i++) {\n idx = index[i];\n sum = x[idx];\n x[idx] = x[i];\n\n if (ii >= 0) {\n for (j = ii; j <= i - 1; j++) {\n sum -= A[i * size + j] * x[j];\n }\n } else if (sum !== 0.0) {\n ii = i;\n }\n\n x[i] = sum;\n } //\n // Now, back substitution\n //\n\n\n for (i = size - 1; i >= 0; i--) {\n sum = x[i];\n\n for (j = i + 1; j < size; j++) {\n sum -= A[i * size + j] * x[j];\n }\n\n x[i] = sum / A[i * size + i];\n }\n}\nfunction solveLinearSystem(A, x, size) {\n // if we solving something simple, just solve it\n if (size === 2) {\n var y = createArray(2);\n var det = determinant2x2(A[0], A[1], A[2], A[3]);\n\n if (det === 0.0) {\n // Unable to solve linear system\n return 0;\n }\n\n y[0] = (A[3] * x[0] - A[1] * x[1]) / det;\n y[1] = (-(A[2] * x[0]) + A[0] * x[1]) / det;\n x[0] = y[0];\n x[1] = y[1];\n return 1;\n }\n\n if (size === 1) {\n if (A[0] === 0.0) {\n // Unable to solve linear system\n return 0;\n }\n\n x[0] /= A[0];\n return 1;\n } //\n // System of equations is not trivial, use Crout's method\n //\n // Check on allocation of working vectors\n\n\n var index = createArray(size); // Factor and solve matrix\n\n if (luFactorLinearSystem(A, index, size) === 0) {\n return 0;\n }\n\n luSolveLinearSystem(A, index, x, size);\n return 1;\n} // Note that A is modified during the inversion !\n\nfunction invertMatrix(A, AI, size) {\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var column = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var tmp1Size = index || createArray(size);\n var tmp2Size = column || createArray(size); // Factor matrix; then begin solving for inverse one column at a time.\n // Note: tmp1Size returned value is used later, tmp2Size is just working\n // memory whose values are not used in LUSolveLinearSystem\n\n if (luFactorLinearSystem(A, tmp1Size, size) === 0) {\n return null;\n }\n\n for (var j = 0; j < size; j++) {\n for (var i = 0; i < size; i++) {\n tmp2Size[i] = 0.0;\n }\n\n tmp2Size[j] = 1.0;\n luSolveLinearSystem(A, tmp1Size, tmp2Size, size);\n\n for (var _i4 = 0; _i4 < size; _i4++) {\n AI[_i4 * size + j] = tmp2Size[_i4];\n }\n }\n\n return AI;\n}\nfunction estimateMatrixCondition(A, size) {\n var minValue = +Number.MAX_VALUE;\n var maxValue = -Number.MAX_VALUE; // find the maximum value\n\n for (var i = 0; i < size; i++) {\n for (var j = i; j < size; j++) {\n if (Math.abs(A[i * size + j]) > maxValue) {\n maxValue = Math.abs(A[i * size + j]);\n }\n }\n } // find the minimum diagonal value\n\n\n for (var _i5 = 0; _i5 < size; _i5++) {\n if (Math.abs(A[_i5 * size + _i5]) < minValue) {\n minValue = Math.abs(A[_i5 * size + _i5]);\n }\n }\n\n if (minValue === 0.0) {\n return Number.MAX_VALUE;\n }\n\n return maxValue / minValue;\n}\nfunction jacobi(a_3x3, w, v) {\n return jacobiN(a_3x3, 3, w, v);\n}\nfunction solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, mt) {\n // check dimensional consistency\n if (numberOfSamples < xOrder) {\n vtkWarningMacro('Insufficient number of samples. Underdetermined.');\n return 0;\n }\n\n var i;\n var j;\n var k; // set up intermediate variables\n // Allocate matrix to hold X times transpose of X\n\n var XXt = createArray(xOrder * xOrder); // size x by x\n // Allocate the array of eigenvalues and eigenvectors\n\n var eigenvals = createArray(xOrder);\n var eigenvecs = createArray(xOrder * xOrder); // Calculate XXt upper half only, due to symmetry\n\n for (k = 0; k < numberOfSamples; k++) {\n for (i = 0; i < xOrder; i++) {\n for (j = i; j < xOrder; j++) {\n XXt[i * xOrder + j] += xt[k * xOrder + i] * xt[k * xOrder + j];\n }\n }\n } // now fill in the lower half of the XXt matrix\n\n\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < i; j++) {\n XXt[i * xOrder + j] = XXt[j * xOrder + i];\n }\n } // Compute the eigenvectors and eigenvalues\n\n\n jacobiN(XXt, xOrder, eigenvals, eigenvecs); // Smallest eigenval is at the end of the list (xOrder-1), and solution is\n // corresponding eigenvec.\n\n for (i = 0; i < xOrder; i++) {\n mt[i] = eigenvecs[i * xOrder + xOrder - 1];\n }\n\n return 1;\n}\nfunction solveLeastSquares(numberOfSamples, xt, xOrder, yt, yOrder, mt) {\n var checkHomogeneous = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;\n\n // check dimensional consistency\n if (numberOfSamples < xOrder || numberOfSamples < yOrder) {\n vtkWarningMacro('Insufficient number of samples. Underdetermined.');\n return 0;\n }\n\n var homogenFlags = createArray(yOrder);\n var allHomogeneous = 1;\n var hmt;\n var homogRC = 0;\n var i;\n var j;\n var k;\n var someHomogeneous = 0; // Ok, first init some flags check and see if all the systems are homogeneous\n\n if (checkHomogeneous) {\n // If Y' is zero, it's a homogeneous system and can't be solved via\n // the pseudoinverse method. Detect this case, warn the user, and\n // invoke SolveHomogeneousLeastSquares instead. Note that it doesn't\n // really make much sense for yOrder to be greater than one in this case,\n // since that's just yOrder occurrences of a 0 vector on the RHS, but\n // we allow it anyway. N\n // Initialize homogeneous flags on a per-right-hand-side basis\n for (j = 0; j < yOrder; j++) {\n homogenFlags[j] = 1;\n }\n\n for (i = 0; i < numberOfSamples; i++) {\n for (j = 0; j < yOrder; j++) {\n if (Math.abs(yt[i * yOrder + j]) > VTK_SMALL_NUMBER) {\n allHomogeneous = 0;\n homogenFlags[j] = 0;\n }\n }\n } // If we've got one system, and it's homogeneous, do it and bail out quickly.\n\n\n if (allHomogeneous && yOrder === 1) {\n vtkWarningMacro('Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()');\n return solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, mt);\n } // Ok, we've got more than one system of equations.\n // Figure out if we need to calculate the homogeneous equation solution for\n // any of them.\n\n\n if (allHomogeneous) {\n someHomogeneous = 1;\n } else {\n for (j = 0; j < yOrder; j++) {\n if (homogenFlags[j]) {\n someHomogeneous = 1;\n }\n }\n }\n } // If necessary, solve the homogeneous problem\n\n\n if (someHomogeneous) {\n // hmt is the homogeneous equation version of mt, the general solution.\n // hmt should be xOrder x yOrder, but since we are solving only the homogeneous part, here it is xOrder x 1\n hmt = createArray(xOrder); // Ok, solve the homogeneous problem\n\n homogRC = solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, hmt);\n } // set up intermediate variables\n\n\n var XXt = createArray(xOrder * xOrder); // size x by x\n\n var XXtI = createArray(xOrder * xOrder); // size x by x\n\n var XYt = createArray(xOrder * yOrder); // size x by y\n // first find the pseudoinverse matrix\n\n for (k = 0; k < numberOfSamples; k++) {\n for (i = 0; i < xOrder; i++) {\n // first calculate the XXt matrix, only do the upper half (symmetrical)\n for (j = i; j < xOrder; j++) {\n XXt[i * xOrder + j] += xt[k * xOrder + i] * xt[k * xOrder + j];\n } // now calculate the XYt matrix\n\n\n for (j = 0; j < yOrder; j++) {\n XYt[i * yOrder + j] += xt[k * xOrder + i] * yt[k * yOrder + j];\n }\n }\n } // now fill in the lower half of the XXt matrix\n\n\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < i; j++) {\n XXt[i * xOrder + j] = XXt[j * xOrder + i];\n }\n }\n\n var successFlag = invertMatrix(XXt, XXtI, xOrder); // next get the inverse of XXt\n\n if (successFlag) {\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < yOrder; j++) {\n mt[i * yOrder + j] = 0.0;\n\n for (k = 0; k < xOrder; k++) {\n mt[i * yOrder + j] += XXtI[i * xOrder + k] * XYt[k * yOrder + j];\n }\n }\n }\n } // Fix up any of the solutions that correspond to the homogeneous equation\n // problem.\n\n\n if (someHomogeneous) {\n for (j = 0; j < yOrder; j++) {\n if (homogenFlags[j]) {\n // Fix this one\n for (i = 0; i < xOrder; i++) {\n mt[i * yOrder + j] = hmt[i * yOrder];\n }\n }\n }\n }\n\n if (someHomogeneous) {\n return homogRC && successFlag;\n }\n\n return successFlag;\n}\nfunction hex2float(hexStr) {\n var outFloatArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0.5, 1];\n\n switch (hexStr.length) {\n case 3:\n // abc => #aabbcc\n outFloatArray[0] = parseInt(hexStr[0], 16) * 17 / 255;\n outFloatArray[1] = parseInt(hexStr[1], 16) * 17 / 255;\n outFloatArray[2] = parseInt(hexStr[2], 16) * 17 / 255;\n return outFloatArray;\n\n case 4:\n // #abc => #aabbcc\n outFloatArray[0] = parseInt(hexStr[1], 16) * 17 / 255;\n outFloatArray[1] = parseInt(hexStr[2], 16) * 17 / 255;\n outFloatArray[2] = parseInt(hexStr[3], 16) * 17 / 255;\n return outFloatArray;\n\n case 6:\n // ab01df => #ab01df\n outFloatArray[0] = parseInt(hexStr.substr(0, 2), 16) / 255;\n outFloatArray[1] = parseInt(hexStr.substr(2, 2), 16) / 255;\n outFloatArray[2] = parseInt(hexStr.substr(4, 2), 16) / 255;\n return outFloatArray;\n\n case 7:\n // #ab01df\n outFloatArray[0] = parseInt(hexStr.substr(1, 2), 16) / 255;\n outFloatArray[1] = parseInt(hexStr.substr(3, 2), 16) / 255;\n outFloatArray[2] = parseInt(hexStr.substr(5, 2), 16) / 255;\n return outFloatArray;\n\n case 9:\n // #ab01df00\n outFloatArray[0] = parseInt(hexStr.substr(1, 2), 16) / 255;\n outFloatArray[1] = parseInt(hexStr.substr(3, 2), 16) / 255;\n outFloatArray[2] = parseInt(hexStr.substr(5, 2), 16) / 255;\n outFloatArray[3] = parseInt(hexStr.substr(7, 2), 16) / 255;\n return outFloatArray;\n\n default:\n return outFloatArray;\n }\n}\nfunction rgb2hsv(rgb, hsv) {\n var h;\n var s;\n\n var _rgb = _slicedToArray(rgb, 3),\n r = _rgb[0],\n g = _rgb[1],\n b = _rgb[2];\n\n var onethird = 1.0 / 3.0;\n var onesixth = 1.0 / 6.0;\n var twothird = 2.0 / 3.0;\n var cmax = r;\n var cmin = r;\n\n if (g > cmax) {\n cmax = g;\n } else if (g < cmin) {\n cmin = g;\n }\n\n if (b > cmax) {\n cmax = b;\n } else if (b < cmin) {\n cmin = b;\n }\n\n var v = cmax;\n\n if (v > 0.0) {\n s = (cmax - cmin) / cmax;\n } else {\n s = 0.0;\n }\n\n if (s > 0) {\n if (r === cmax) {\n h = onesixth * (g - b) / (cmax - cmin);\n } else if (g === cmax) {\n h = onethird + onesixth * (b - r) / (cmax - cmin);\n } else {\n h = twothird + onesixth * (r - g) / (cmax - cmin);\n }\n\n if (h < 0.0) {\n h += 1.0;\n }\n } else {\n h = 0.0;\n } // Set the values back to the array\n\n\n hsv[0] = h;\n hsv[1] = s;\n hsv[2] = v;\n}\nfunction hsv2rgb(hsv, rgb) {\n var _hsv = _slicedToArray(hsv, 3),\n h = _hsv[0],\n s = _hsv[1],\n v = _hsv[2];\n\n var onethird = 1.0 / 3.0;\n var onesixth = 1.0 / 6.0;\n var twothird = 2.0 / 3.0;\n var fivesixth = 5.0 / 6.0;\n var r;\n var g;\n var b; // compute RGB from HSV\n\n if (h > onesixth && h <= onethird) {\n // green/red\n g = 1.0;\n r = (onethird - h) / onesixth;\n b = 0.0;\n } else if (h > onethird && h <= 0.5) {\n // green/blue\n g = 1.0;\n b = (h - onethird) / onesixth;\n r = 0.0;\n } else if (h > 0.5 && h <= twothird) {\n // blue/green\n b = 1.0;\n g = (twothird - h) / onesixth;\n r = 0.0;\n } else if (h > twothird && h <= fivesixth) {\n // blue/red\n b = 1.0;\n r = (h - twothird) / onesixth;\n g = 0.0;\n } else if (h > fivesixth && h <= 1.0) {\n // red/blue\n r = 1.0;\n b = (1.0 - h) / onesixth;\n g = 0.0;\n } else {\n // red/green\n r = 1.0;\n g = h / onesixth;\n b = 0.0;\n } // add Saturation to the equation.\n\n\n r = s * r + (1.0 - s);\n g = s * g + (1.0 - s);\n b = s * b + (1.0 - s);\n r *= v;\n g *= v;\n b *= v; // Assign back to the array\n\n rgb[0] = r;\n rgb[1] = g;\n rgb[2] = b;\n}\nfunction lab2xyz(lab, xyz) {\n // LAB to XYZ\n var _lab = _slicedToArray(lab, 3),\n L = _lab[0],\n a = _lab[1],\n b = _lab[2];\n\n var var_Y = (L + 16) / 116;\n var var_X = a / 500 + var_Y;\n var var_Z = var_Y - b / 200;\n\n if (Math.pow(var_Y, 3) > 0.008856) {\n var_Y = Math.pow(var_Y, 3);\n } else {\n var_Y = (var_Y - 16.0 / 116.0) / 7.787;\n }\n\n if (Math.pow(var_X, 3) > 0.008856) {\n var_X = Math.pow(var_X, 3);\n } else {\n var_X = (var_X - 16.0 / 116.0) / 7.787;\n }\n\n if (Math.pow(var_Z, 3) > 0.008856) {\n var_Z = Math.pow(var_Z, 3);\n } else {\n var_Z = (var_Z - 16.0 / 116.0) / 7.787;\n }\n\n var ref_X = 0.9505;\n var ref_Y = 1.0;\n var ref_Z = 1.089;\n xyz[0] = ref_X * var_X; // ref_X = 0.9505 Observer= 2 deg Illuminant= D65\n\n xyz[1] = ref_Y * var_Y; // ref_Y = 1.000\n\n xyz[2] = ref_Z * var_Z; // ref_Z = 1.089\n}\nfunction xyz2lab(xyz, lab) {\n var _xyz = _slicedToArray(xyz, 3),\n x = _xyz[0],\n y = _xyz[1],\n z = _xyz[2];\n\n var ref_X = 0.9505;\n var ref_Y = 1.0;\n var ref_Z = 1.089;\n var var_X = x / ref_X; // ref_X = 0.9505 Observer= 2 deg, Illuminant= D65\n\n var var_Y = y / ref_Y; // ref_Y = 1.000\n\n var var_Z = z / ref_Z; // ref_Z = 1.089\n\n if (var_X > 0.008856) var_X = Math.pow(var_X, 1.0 / 3.0);else var_X = 7.787 * var_X + 16.0 / 116.0;\n if (var_Y > 0.008856) var_Y = Math.pow(var_Y, 1.0 / 3.0);else var_Y = 7.787 * var_Y + 16.0 / 116.0;\n if (var_Z > 0.008856) var_Z = Math.pow(var_Z, 1.0 / 3.0);else var_Z = 7.787 * var_Z + 16.0 / 116.0;\n lab[0] = 116 * var_Y - 16;\n lab[1] = 500 * (var_X - var_Y);\n lab[2] = 200 * (var_Y - var_Z);\n}\nfunction xyz2rgb(xyz, rgb) {\n var _xyz2 = _slicedToArray(xyz, 3),\n x = _xyz2[0],\n y = _xyz2[1],\n z = _xyz2[2];\n\n var r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n var g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n var b = x * 0.0557 + y * -0.204 + z * 1.057; // The following performs a \"gamma correction\" specified by the sRGB color\n // space. sRGB is defined by a canonical definition of a display monitor and\n // has been standardized by the International Electrotechnical Commission (IEC\n // 61966-2-1). The nonlinearity of the correction is designed to make the\n // colors more perceptually uniform. This color space has been adopted by\n // several applications including Adobe Photoshop and Microsoft Windows color\n // management. OpenGL is agnostic on its RGB color space, but it is reasonable\n // to assume it is close to this one.\n\n if (r > 0.0031308) r = 1.055 * Math.pow(r, 1 / 2.4) - 0.055;else r *= 12.92;\n if (g > 0.0031308) g = 1.055 * Math.pow(g, 1 / 2.4) - 0.055;else g *= 12.92;\n if (b > 0.0031308) b = 1.055 * Math.pow(b, 1 / 2.4) - 0.055;else b *= 12.92; // Clip colors. ideally we would do something that is perceptually closest\n // (since we can see colors outside of the display gamut), but this seems to\n // work well enough.\n\n var maxVal = r;\n if (maxVal < g) maxVal = g;\n if (maxVal < b) maxVal = b;\n\n if (maxVal > 1.0) {\n r /= maxVal;\n g /= maxVal;\n b /= maxVal;\n }\n\n if (r < 0) r = 0;\n if (g < 0) g = 0;\n if (b < 0) b = 0; // Push values back to array\n\n rgb[0] = r;\n rgb[1] = g;\n rgb[2] = b;\n}\nfunction rgb2xyz(rgb, xyz) {\n var _rgb2 = _slicedToArray(rgb, 3),\n r = _rgb2[0],\n g = _rgb2[1],\n b = _rgb2[2]; // The following performs a \"gamma correction\" specified by the sRGB color\n // space. sRGB is defined by a canonical definition of a display monitor and\n // has been standardized by the International Electrotechnical Commission (IEC\n // 61966-2-1). The nonlinearity of the correction is designed to make the\n // colors more perceptually uniform. This color space has been adopted by\n // several applications including Adobe Photoshop and Microsoft Windows color\n // management. OpenGL is agnostic on its RGB color space, but it is reasonable\n // to assume it is close to this one.\n\n\n if (r > 0.04045) r = Math.pow((r + 0.055) / 1.055, 2.4);else r /= 12.92;\n if (g > 0.04045) g = Math.pow((g + 0.055) / 1.055, 2.4);else g /= 12.92;\n if (b > 0.04045) b = Math.pow((b + 0.055) / 1.055, 2.4);else b /= 12.92; // Observer. = 2 deg, Illuminant = D65\n\n xyz[0] = r * 0.4124 + g * 0.3576 + b * 0.1805;\n xyz[1] = r * 0.2126 + g * 0.7152 + b * 0.0722;\n xyz[2] = r * 0.0193 + g * 0.1192 + b * 0.9505;\n}\nfunction rgb2lab(rgb, lab) {\n var xyz = [0, 0, 0];\n rgb2xyz(rgb, xyz);\n xyz2lab(xyz, lab);\n}\nfunction lab2rgb(lab, rgb) {\n var xyz = [0, 0, 0];\n lab2xyz(lab, xyz);\n xyz2rgb(xyz, rgb);\n}\nfunction uninitializeBounds(bounds) {\n bounds[0] = 1.0;\n bounds[1] = -1.0;\n bounds[2] = 1.0;\n bounds[3] = -1.0;\n bounds[4] = 1.0;\n bounds[5] = -1.0;\n return bounds;\n}\nfunction areBoundsInitialized(bounds) {\n return !(bounds[1] - bounds[0] < 0.0);\n}\n/**\n * @deprecated please use vtkBoundingBox.addPoints(vtkBoundingBox.reset([]), points)\n */\n\nfunction computeBoundsFromPoints(point1, point2, bounds) {\n bounds[0] = Math.min(point1[0], point2[0]);\n bounds[1] = Math.max(point1[0], point2[0]);\n bounds[2] = Math.min(point1[1], point2[1]);\n bounds[3] = Math.max(point1[1], point2[1]);\n bounds[4] = Math.min(point1[2], point2[2]);\n bounds[5] = Math.max(point1[2], point2[2]);\n return bounds;\n}\nfunction clampValue(value, minValue, maxValue) {\n if (value < minValue) {\n return minValue;\n }\n\n if (value > maxValue) {\n return maxValue;\n }\n\n return value;\n}\nfunction clampVector(vector, minVector, maxVector) {\n var out = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [0, 0, 0];\n out[0] = clampValue(vector[0], minVector[0], maxVector[0]);\n out[1] = clampValue(vector[1], minVector[1], maxVector[1]);\n out[2] = clampValue(vector[2], minVector[2], maxVector[2]);\n return out;\n}\nfunction clampAndNormalizeValue(value, range) {\n var result = 0;\n\n if (range[0] !== range[1]) {\n // clamp\n if (value < range[0]) {\n result = range[0];\n } else if (value > range[1]) {\n result = range[1];\n } else {\n result = value;\n } // normalize\n\n\n result = (result - range[0]) / (range[1] - range[0]);\n }\n\n return result;\n}\nvar getScalarTypeFittingRange = notImplemented('GetScalarTypeFittingRange');\nvar getAdjustedScalarRange = notImplemented('GetAdjustedScalarRange');\nfunction extentIsWithinOtherExtent(extent1, extent2) {\n if (!extent1 || !extent2) {\n return 0;\n }\n\n for (var i = 0; i < 6; i += 2) {\n if (extent1[i] < extent2[i] || extent1[i] > extent2[i + 1] || extent1[i + 1] < extent2[i] || extent1[i + 1] > extent2[i + 1]) {\n return 0;\n }\n }\n\n return 1;\n}\nfunction boundsIsWithinOtherBounds(bounds1_6, bounds2_6, delta_3) {\n if (!bounds1_6 || !bounds2_6) {\n return 0;\n }\n\n for (var i = 0; i < 6; i += 2) {\n if (bounds1_6[i] + delta_3[i / 2] < bounds2_6[i] || bounds1_6[i] - delta_3[i / 2] > bounds2_6[i + 1] || bounds1_6[i + 1] + delta_3[i / 2] < bounds2_6[i] || bounds1_6[i + 1] - delta_3[i / 2] > bounds2_6[i + 1]) {\n return 0;\n }\n }\n\n return 1;\n}\nfunction pointIsWithinBounds(point_3, bounds_6, delta_3) {\n if (!point_3 || !bounds_6 || !delta_3) {\n return 0;\n }\n\n for (var i = 0; i < 3; i++) {\n if (point_3[i] + delta_3[i] < bounds_6[2 * i] || point_3[i] - delta_3[i] > bounds_6[2 * i + 1]) {\n return 0;\n }\n }\n\n return 1;\n}\nfunction solve3PointCircle(p1, p2, p3, center) {\n var v21 = createArray(3);\n var v32 = createArray(3);\n var v13 = createArray(3);\n var v12 = createArray(3);\n var v23 = createArray(3);\n var v31 = createArray(3);\n\n for (var i = 0; i < 3; ++i) {\n v21[i] = p1[i] - p2[i];\n v32[i] = p2[i] - p3[i];\n v13[i] = p3[i] - p1[i];\n v12[i] = -v21[i];\n v23[i] = -v32[i];\n v31[i] = -v13[i];\n }\n\n var norm12 = norm(v12);\n var norm23 = norm(v23);\n var norm13 = norm(v13);\n var crossv21v32 = createArray(3);\n cross(v21, v32, crossv21v32);\n var normCross = norm(crossv21v32);\n var radius = norm12 * norm23 * norm13 / (2 * normCross);\n var normCross22 = 2 * normCross * normCross;\n var alpha = norm23 * norm23 * dot(v21, v31) / normCross22;\n var beta = norm13 * norm13 * dot(v12, v32) / normCross22;\n var gamma = norm12 * norm12 * dot(v13, v23) / normCross22;\n\n for (var _i6 = 0; _i6 < 3; ++_i6) {\n center[_i6] = alpha * p1[_i6] + beta * p2[_i6] + gamma * p3[_i6];\n }\n\n return radius;\n}\nvar inf = Infinity;\nvar negInf = -Infinity;\nvar isInf = function isInf(value) {\n return !Number.isFinite(value);\n};\nvar isFinite = Number.isFinite,\n isNaN = Number.isNaN;\nvar isNan = isNaN; // JavaScript - add-on ----------------------\n\nfunction createUninitializedBounds() {\n return [].concat([Number.MAX_VALUE, -Number.MAX_VALUE, // X\n Number.MAX_VALUE, -Number.MAX_VALUE, // Y\n Number.MAX_VALUE, -Number.MAX_VALUE // Z\n ]);\n}\nfunction getMajorAxisIndex(vector) {\n var maxValue = -1;\n var axisIndex = -1;\n\n for (var i = 0; i < vector.length; i++) {\n var value = Math.abs(vector[i]);\n\n if (value > maxValue) {\n axisIndex = i;\n maxValue = value;\n }\n }\n\n return axisIndex;\n}\nfunction floatToHex2(value) {\n var integer = Math.floor(value * 255);\n\n if (integer > 15) {\n return integer.toString(16);\n }\n\n return \"0\".concat(integer.toString(16));\n}\nfunction floatRGB2HexCode(rgbArray) {\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#';\n return \"\".concat(prefix).concat(rgbArray.map(floatToHex2).join(''));\n}\n\nfunction floatToChar(f) {\n return Math.round(f * 255);\n}\n\nfunction float2CssRGBA(rgbArray) {\n if (rgbArray.length === 3) {\n return \"rgb(\".concat(rgbArray.map(floatToChar).join(', '), \")\");\n }\n\n return \"rgba(\".concat(floatToChar(rgbArray[0] || 0), \", \").concat(floatToChar(rgbArray[1] || 0), \", \").concat(floatToChar(rgbArray[2] || 0), \", \").concat(rgbArray[3] || 0, \")\");\n} // ----------------------------------------------------------------------------\n// Only Static API\n// ----------------------------------------------------------------------------\n\nvar vtkMath = {\n Pi: Pi,\n radiansFromDegrees: radiansFromDegrees,\n degreesFromRadians: degreesFromRadians,\n round: round,\n floor: floor,\n ceil: ceil,\n ceilLog2: ceilLog2,\n min: min,\n max: max,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n arrayRange: arrayRange,\n isPowerOfTwo: isPowerOfTwo,\n nearestPowerOfTwo: nearestPowerOfTwo,\n factorial: factorial,\n binomial: binomial,\n beginCombination: beginCombination,\n nextCombination: nextCombination,\n randomSeed: randomSeed,\n getSeed: getSeed,\n random: random,\n gaussian: gaussian,\n add: add,\n subtract: subtract,\n multiplyScalar: multiplyScalar,\n multiplyScalar2D: multiplyScalar2D,\n multiplyAccumulate: multiplyAccumulate,\n multiplyAccumulate2D: multiplyAccumulate2D,\n dot: dot,\n outer: outer,\n cross: cross,\n norm: norm,\n normalize: normalize,\n perpendiculars: perpendiculars,\n projectVector: projectVector,\n projectVector2D: projectVector2D,\n distance2BetweenPoints: distance2BetweenPoints,\n angleBetweenVectors: angleBetweenVectors,\n gaussianAmplitude: gaussianAmplitude,\n gaussianWeight: gaussianWeight,\n dot2D: dot2D,\n outer2D: outer2D,\n norm2D: norm2D,\n normalize2D: normalize2D,\n determinant2x2: determinant2x2,\n LUFactor3x3: LUFactor3x3,\n LUSolve3x3: LUSolve3x3,\n linearSolve3x3: linearSolve3x3,\n multiply3x3_vect3: multiply3x3_vect3,\n multiply3x3_mat3: multiply3x3_mat3,\n multiplyMatrix: multiplyMatrix,\n transpose3x3: transpose3x3,\n invert3x3: invert3x3,\n identity3x3: identity3x3,\n identity: identity,\n isIdentity: isIdentity,\n isIdentity3x3: isIdentity3x3,\n determinant3x3: determinant3x3,\n quaternionToMatrix3x3: quaternionToMatrix3x3,\n areEquals: areEquals,\n areMatricesEqual: areMatricesEqual,\n roundNumber: roundNumber,\n roundVector: roundVector,\n matrix3x3ToQuaternion: matrix3x3ToQuaternion,\n multiplyQuaternion: multiplyQuaternion,\n orthogonalize3x3: orthogonalize3x3,\n diagonalize3x3: diagonalize3x3,\n singularValueDecomposition3x3: singularValueDecomposition3x3,\n solveLinearSystem: solveLinearSystem,\n invertMatrix: invertMatrix,\n luFactorLinearSystem: luFactorLinearSystem,\n luSolveLinearSystem: luSolveLinearSystem,\n estimateMatrixCondition: estimateMatrixCondition,\n jacobi: jacobi,\n jacobiN: jacobiN,\n solveHomogeneousLeastSquares: solveHomogeneousLeastSquares,\n solveLeastSquares: solveLeastSquares,\n hex2float: hex2float,\n rgb2hsv: rgb2hsv,\n hsv2rgb: hsv2rgb,\n lab2xyz: lab2xyz,\n xyz2lab: xyz2lab,\n xyz2rgb: xyz2rgb,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n lab2rgb: lab2rgb,\n uninitializeBounds: uninitializeBounds,\n areBoundsInitialized: areBoundsInitialized,\n computeBoundsFromPoints: computeBoundsFromPoints,\n clampValue: clampValue,\n clampVector: clampVector,\n clampAndNormalizeValue: clampAndNormalizeValue,\n getScalarTypeFittingRange: getScalarTypeFittingRange,\n getAdjustedScalarRange: getAdjustedScalarRange,\n extentIsWithinOtherExtent: extentIsWithinOtherExtent,\n boundsIsWithinOtherBounds: boundsIsWithinOtherBounds,\n pointIsWithinBounds: pointIsWithinBounds,\n solve3PointCircle: solve3PointCircle,\n inf: inf,\n negInf: negInf,\n isInf: isInf,\n isNan: isNaN,\n isNaN: isNaN,\n isFinite: isFinite,\n // JS add-on\n createUninitializedBounds: createUninitializedBounds,\n getMajorAxisIndex: getMajorAxisIndex,\n floatToHex2: floatToHex2,\n floatRGB2HexCode: floatRGB2HexCode,\n float2CssRGBA: float2CssRGBA\n};\n\nvar vtkMath$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createArray: createArray,\n Pi: Pi,\n radiansFromDegrees: radiansFromDegrees,\n degreesFromRadians: degreesFromRadians,\n round: round,\n floor: floor,\n ceil: ceil,\n min: min,\n max: max,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n arrayRange: arrayRange,\n ceilLog2: ceilLog2,\n factorial: factorial,\n nearestPowerOfTwo: nearestPowerOfTwo,\n isPowerOfTwo: isPowerOfTwo,\n binomial: binomial,\n beginCombination: beginCombination,\n nextCombination: nextCombination,\n randomSeed: randomSeed,\n getSeed: getSeed,\n random: random,\n gaussian: gaussian,\n add: add,\n subtract: subtract,\n multiplyScalar: multiplyScalar,\n multiplyScalar2D: multiplyScalar2D,\n multiplyAccumulate: multiplyAccumulate,\n multiplyAccumulate2D: multiplyAccumulate2D,\n dot: dot,\n outer: outer,\n cross: cross,\n norm: norm,\n normalize: normalize,\n perpendiculars: perpendiculars,\n projectVector: projectVector,\n dot2D: dot2D,\n projectVector2D: projectVector2D,\n distance2BetweenPoints: distance2BetweenPoints,\n angleBetweenVectors: angleBetweenVectors,\n signedAngleBetweenVectors: signedAngleBetweenVectors,\n gaussianAmplitude: gaussianAmplitude,\n gaussianWeight: gaussianWeight,\n outer2D: outer2D,\n norm2D: norm2D,\n normalize2D: normalize2D,\n rowsToMat4: rowsToMat4,\n columnsToMat4: columnsToMat4,\n rowsToMat3: rowsToMat3,\n columnsToMat3: columnsToMat3,\n determinant2x2: determinant2x2,\n LUFactor3x3: LUFactor3x3,\n LUSolve3x3: LUSolve3x3,\n linearSolve3x3: linearSolve3x3,\n multiply3x3_vect3: multiply3x3_vect3,\n multiply3x3_mat3: multiply3x3_mat3,\n multiplyMatrix: multiplyMatrix,\n transpose3x3: transpose3x3,\n invert3x3: invert3x3,\n determinant3x3: determinant3x3,\n areEquals: areEquals,\n areMatricesEqual: areMatricesEqual,\n identity3x3: identity3x3,\n identity: identity,\n isIdentity: isIdentity,\n isIdentity3x3: isIdentity3x3,\n quaternionToMatrix3x3: quaternionToMatrix3x3,\n roundNumber: roundNumber,\n roundVector: roundVector,\n jacobiN: jacobiN,\n matrix3x3ToQuaternion: matrix3x3ToQuaternion,\n multiplyQuaternion: multiplyQuaternion,\n orthogonalize3x3: orthogonalize3x3,\n diagonalize3x3: diagonalize3x3,\n singularValueDecomposition3x3: singularValueDecomposition3x3,\n luFactorLinearSystem: luFactorLinearSystem,\n luSolveLinearSystem: luSolveLinearSystem,\n solveLinearSystem: solveLinearSystem,\n invertMatrix: invertMatrix,\n estimateMatrixCondition: estimateMatrixCondition,\n jacobi: jacobi,\n solveHomogeneousLeastSquares: solveHomogeneousLeastSquares,\n solveLeastSquares: solveLeastSquares,\n hex2float: hex2float,\n rgb2hsv: rgb2hsv,\n hsv2rgb: hsv2rgb,\n lab2xyz: lab2xyz,\n xyz2lab: xyz2lab,\n xyz2rgb: xyz2rgb,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n lab2rgb: lab2rgb,\n uninitializeBounds: uninitializeBounds,\n areBoundsInitialized: areBoundsInitialized,\n computeBoundsFromPoints: computeBoundsFromPoints,\n clampValue: clampValue,\n clampVector: clampVector,\n clampAndNormalizeValue: clampAndNormalizeValue,\n getScalarTypeFittingRange: getScalarTypeFittingRange,\n getAdjustedScalarRange: getAdjustedScalarRange,\n extentIsWithinOtherExtent: extentIsWithinOtherExtent,\n boundsIsWithinOtherBounds: boundsIsWithinOtherBounds,\n pointIsWithinBounds: pointIsWithinBounds,\n solve3PointCircle: solve3PointCircle,\n inf: inf,\n negInf: negInf,\n isInf: isInf,\n isFinite: isFinite,\n isNaN: isNaN,\n isNan: isNan,\n createUninitializedBounds: createUninitializedBounds,\n getMajorAxisIndex: getMajorAxisIndex,\n floatToHex2: floatToHex2,\n floatRGB2HexCode: floatRGB2HexCode,\n float2CssRGBA: float2CssRGBA,\n 'default': vtkMath\n});\n\nexport { factorial as $, degreesFromRadians as A, areEquals as B, clampValue as C, arrayRange as D, getMajorAxisIndex as E, isInf as F, rgb2hsv as G, rgb2lab as H, lab2rgb as I, floor as J, round as K, normalize2D as L, nearestPowerOfTwo as M, createUninitializedBounds as N, multiply3x3_vect3 as O, areBoundsInitialized as P, isPowerOfTwo as Q, angleBetweenVectors as R, signedAngleBetweenVectors as S, createArray as T, Pi as U, ceil as V, min as W, max as X, arrayMin as Y, arrayMax as Z, ceilLog2 as _, areMatricesEqual as a, binomial as a0, beginCombination as a1, nextCombination as a2, randomSeed as a3, getSeed as a4, gaussian as a5, multiplyScalar2D as a6, multiplyAccumulate2D as a7, outer as a8, projectVector as a9, singularValueDecomposition3x3 as aA, luFactorLinearSystem as aB, luSolveLinearSystem as aC, invertMatrix as aD, estimateMatrixCondition as aE, solveHomogeneousLeastSquares as aF, solveLeastSquares as aG, hex2float as aH, lab2xyz as aI, xyz2lab as aJ, xyz2rgb as aK, rgb2xyz as aL, computeBoundsFromPoints as aM, clampAndNormalizeValue as aN, getScalarTypeFittingRange as aO, getAdjustedScalarRange as aP, extentIsWithinOtherExtent as aQ, boundsIsWithinOtherBounds as aR, pointIsWithinBounds as aS, solve3PointCircle as aT, inf as aU, negInf as aV, isFinite as aW, isNaN as aX, floatToHex2 as aY, floatRGB2HexCode as aZ, float2CssRGBA as a_, dot2D as aa, projectVector2D as ab, gaussianAmplitude as ac, gaussianWeight as ad, outer2D as ae, norm2D as af, rowsToMat4 as ag, columnsToMat4 as ah, columnsToMat3 as ai, LUFactor3x3 as aj, LUSolve3x3 as ak, linearSolve3x3 as al, multiply3x3_mat3 as am, multiplyMatrix as an, transpose3x3 as ao, invert3x3 as ap, identity3x3 as aq, identity as ar, isIdentity as as, isIdentity3x3 as at, quaternionToMatrix3x3 as au, roundNumber as av, matrix3x3ToQuaternion as aw, multiplyQuaternion as ax, orthogonalize3x3 as ay, diagonalize3x3 as az, roundVector as b, clampVector as c, dot as d, distance2BetweenPoints as e, vtkMath as f, solveLinearSystem as g, hsv2rgb as h, isNan as i, cross as j, add as k, normalize as l, multiplyAccumulate as m, norm as n, determinant2x2 as o, jacobiN as p, perpendiculars as q, radiansFromDegrees as r, subtract as s, jacobi as t, uninitializeBounds as u, vtkMath$1 as v, multiplyScalar as w, random as x, determinant3x3 as y, rowsToMat3 as z };\n","var DataTypeByteSize = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\nvar VtkDataTypes = {\n VOID: '',\n // not sure to know what that should be\n CHAR: 'Int8Array',\n SIGNED_CHAR: 'Int8Array',\n UNSIGNED_CHAR: 'Uint8Array',\n SHORT: 'Int16Array',\n UNSIGNED_SHORT: 'Uint16Array',\n INT: 'Int32Array',\n UNSIGNED_INT: 'Uint32Array',\n FLOAT: 'Float32Array',\n DOUBLE: 'Float64Array'\n};\nvar DefaultDataType = VtkDataTypes.FLOAT;\nvar Constants = {\n DefaultDataType: DefaultDataType,\n DataTypeByteSize: DataTypeByteSize,\n VtkDataTypes: VtkDataTypes\n};\n\nexport { DataTypeByteSize, DefaultDataType, VtkDataTypes, Constants as default };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport Constants from './DataArray/Constants.js';\nimport { newInstance as newInstance$1, newTypedArray, newTypedArrayFrom, obj, set, vtkErrorMacro as vtkErrorMacro$1 } from '../../macros.js';\nimport { n as norm } from './Math/index.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar vtkErrorMacro = vtkErrorMacro$1;\nvar DefaultDataType = Constants.DefaultDataType; // ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n// Original source from https://www.npmjs.com/package/compute-range\n// Modified to accept type arrays\n\nfunction fastComputeRange(arr, offset, numberOfComponents) {\n var len = arr.length;\n var min;\n var max;\n var x;\n var i;\n\n if (len === 0) {\n return {\n min: Number.MAX_VALUE,\n max: -Number.MAX_VALUE\n };\n }\n\n min = arr[offset];\n max = min;\n\n for (i = offset; i < len; i += numberOfComponents) {\n x = arr[i];\n\n if (x < min) {\n min = x;\n } else if (x > max) {\n max = x;\n }\n }\n\n return {\n min: min,\n max: max\n };\n}\n/**\n * @deprecated please use fastComputeRange instead\n */\n\n\nfunction createRangeHelper() {\n var min = Number.MAX_VALUE;\n var max = -Number.MAX_VALUE;\n var count = 0;\n var sum = 0;\n return {\n add: function add(value) {\n if (min > value) {\n min = value;\n }\n\n if (max < value) {\n max = value;\n }\n\n count++;\n sum += value;\n },\n get: function get() {\n return {\n min: min,\n max: max,\n count: count,\n sum: sum,\n mean: sum / count\n };\n },\n getRange: function getRange() {\n return {\n min: min,\n max: max\n };\n }\n };\n}\n\nfunction computeRange(values) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var numberOfComponents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (component < 0 && numberOfComponents > 1) {\n // Compute magnitude\n var size = values.length;\n var numberOfValues = size / numberOfComponents;\n var data = new Float64Array(numberOfValues);\n\n for (var i = 0, j = 0; i < numberOfValues; ++i) {\n var _i;\n\n for (var nextJ = j + numberOfComponents; j < nextJ; ++j) {\n data[i] += values[j] * values[j];\n }\n\n _i = i, data[_i] = Math.pow(data[_i], 0.5);\n }\n\n return fastComputeRange(data, 0, 1);\n }\n\n return fastComputeRange(values, component < 0 ? 0 : component, numberOfComponents);\n}\n\nfunction ensureRangeSize(rangeArray) {\n var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var ranges = rangeArray || []; // Pad ranges with null value to get the\n\n while (ranges.length <= size) {\n ranges.push(null);\n }\n\n return ranges;\n}\n\nfunction getDataType(typedArray) {\n // Expects toString() to return \"[object ...Array]\"\n return Object.prototype.toString.call(typedArray).slice(8, -1);\n}\n\nfunction getMaxNorm(normArray) {\n var numComps = normArray.getNumberOfComponents();\n var maxNorm = 0.0;\n var tuple = new Array(numComps);\n\n for (var i = 0; i < normArray.getNumberOfTuples(); ++i) {\n normArray.getTuple(i, tuple);\n var norm$1 = norm(tuple, numComps);\n\n if (norm$1 > maxNorm) {\n maxNorm = norm$1;\n }\n }\n\n return maxNorm;\n} // ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\n\nvar STATIC = {\n computeRange: computeRange,\n createRangeHelper: createRangeHelper,\n fastComputeRange: fastComputeRange,\n getDataType: getDataType,\n getMaxNorm: getMaxNorm\n}; // ----------------------------------------------------------------------------\n// vtkDataArray methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataArray(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkDataArray');\n /**\n * Resize model.values and copy the old values to the new array.\n * @param {Number} requestedNumTuples Final expected number of tuples; must be >= 0\n * @returns {Boolean} True if a resize occured, false otherwise\n */\n\n function resize(requestedNumTuples) {\n if (requestedNumTuples < 0) {\n return false;\n }\n\n var numComps = publicAPI.getNumberOfComponents();\n var curNumTuples = model.values.length / (numComps > 0 ? numComps : 1);\n\n if (requestedNumTuples === curNumTuples) {\n return true;\n }\n\n if (requestedNumTuples > curNumTuples) {\n // Requested size is bigger than current size. Allocate enough\n // memory to fit the requested size and be more than double the\n // currently allocated memory.\n var oldValues = model.values;\n model.values = newTypedArray(model.dataType, (requestedNumTuples + curNumTuples) * numComps);\n model.values.set(oldValues);\n return true;\n } // Requested size is smaller than currently allocated size\n\n\n if (model.size > requestedNumTuples * numComps) {\n model.size = requestedNumTuples * numComps;\n publicAPI.dataChange();\n }\n\n return true;\n }\n\n publicAPI.dataChange = function () {\n model.ranges = null;\n publicAPI.modified();\n };\n\n publicAPI.resize = function (requestedNumTuples) {\n resize(requestedNumTuples);\n var newSize = requestedNumTuples * publicAPI.getNumberOfComponents();\n\n if (model.size !== newSize) {\n model.size = newSize;\n publicAPI.dataChange();\n return true;\n }\n\n return false;\n }; // FIXME, to rename into \"clear()\" or \"reset()\"\n\n\n publicAPI.initialize = function () {\n publicAPI.resize(0);\n };\n\n publicAPI.getElementComponentSize = function () {\n return model.values.BYTES_PER_ELEMENT;\n }; // Description:\n // Return the data component at the location specified by tupleIdx and\n // compIdx.\n\n\n publicAPI.getComponent = function (tupleIdx) {\n var compIdx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return model.values[tupleIdx * model.numberOfComponents + compIdx];\n }; // Description:\n // Set the data component at the location specified by tupleIdx and compIdx\n // to value.\n // Note that i is less than NumberOfTuples and j is less than\n // NumberOfComponents. Make sure enough memory has been allocated\n // (use SetNumberOfTuples() and SetNumberOfComponents()).\n\n\n publicAPI.setComponent = function (tupleIdx, compIdx, value) {\n if (value !== model.values[tupleIdx * model.numberOfComponents + compIdx]) {\n model.values[tupleIdx * model.numberOfComponents + compIdx] = value;\n publicAPI.dataChange();\n }\n };\n\n publicAPI.getValue = function (valueIdx) {\n var idx = valueIdx / model.numberOfComponents;\n var comp = valueIdx % model.numberOfComponents;\n return publicAPI.getComponent(idx, comp);\n };\n\n publicAPI.setValue = function (valueIdx, value) {\n var idx = valueIdx / model.numberOfComponents;\n var comp = valueIdx % model.numberOfComponents;\n publicAPI.setComponent(idx, comp, value);\n };\n\n publicAPI.getData = function () {\n return model.size === model.values.length ? model.values : model.values.subarray(0, model.size);\n };\n\n publicAPI.getRange = function () {\n var componentIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;\n var rangeIdx = componentIndex < 0 ? model.numberOfComponents : componentIndex;\n var range = null;\n\n if (!model.ranges) {\n model.ranges = ensureRangeSize(model.ranges, model.numberOfComponents);\n }\n\n range = model.ranges[rangeIdx];\n\n if (range) {\n model.rangeTuple[0] = range.min;\n model.rangeTuple[1] = range.max;\n return model.rangeTuple;\n } // Need to compute ranges...\n\n\n range = computeRange(publicAPI.getData(), componentIndex, model.numberOfComponents);\n model.ranges[rangeIdx] = range;\n model.rangeTuple[0] = range.min;\n model.rangeTuple[1] = range.max;\n return model.rangeTuple;\n };\n\n publicAPI.setRange = function (rangeValue, componentIndex) {\n if (!model.ranges) {\n model.ranges = ensureRangeSize(model.ranges, model.numberOfComponents);\n }\n\n var range = {\n min: rangeValue.min,\n max: rangeValue.max\n };\n model.ranges[componentIndex] = range;\n model.rangeTuple[0] = range.min;\n model.rangeTuple[1] = range.max;\n return model.rangeTuple;\n };\n\n publicAPI.setTuple = function (idx, tuple) {\n var offset = idx * model.numberOfComponents;\n\n for (var i = 0; i < model.numberOfComponents; i++) {\n model.values[offset + i] = tuple[i];\n }\n };\n\n publicAPI.setTuples = function (idx, tuples) {\n var i = idx * model.numberOfComponents;\n var last = Math.min(tuples.length, model.size - i);\n\n for (var j = 0; j < last;) {\n model.values[i++] = tuples[j++];\n }\n };\n\n publicAPI.insertTuple = function (idx, tuple) {\n if (model.size <= idx * model.numberOfComponents) {\n model.size = (idx + 1) * model.numberOfComponents;\n resize(idx + 1);\n }\n\n publicAPI.setTuple(idx, tuple);\n return idx;\n };\n\n publicAPI.insertTuples = function (idx, tuples) {\n var end = idx + tuples.length / model.numberOfComponents;\n\n if (model.size < end * model.numberOfComponents) {\n model.size = end * model.numberOfComponents;\n resize(end);\n }\n\n publicAPI.setTuples(idx, tuples);\n return end;\n };\n\n publicAPI.insertNextTuple = function (tuple) {\n var idx = model.size / model.numberOfComponents;\n return publicAPI.insertTuple(idx, tuple);\n };\n\n publicAPI.insertNextTuples = function (tuples) {\n var idx = model.size / model.numberOfComponents;\n return publicAPI.insertTuples(idx, tuples);\n };\n\n publicAPI.getTuple = function (idx) {\n var tupleToFill = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var numberOfComponents = model.numberOfComponents || 1;\n var offset = idx * numberOfComponents; // Check most common component sizes first\n // to avoid doing a for loop if possible\n\n switch (numberOfComponents) {\n case 4:\n tupleToFill[3] = model.values[offset + 3];\n // eslint-disable-next-line no-fallthrough\n\n case 3:\n tupleToFill[2] = model.values[offset + 2];\n // eslint-disable-next-line no-fallthrough\n\n case 2:\n tupleToFill[1] = model.values[offset + 1];\n // eslint-disable-next-line no-fallthrough\n\n case 1:\n tupleToFill[0] = model.values[offset];\n break;\n\n default:\n for (var i = numberOfComponents - 1; i >= 0; --i) {\n tupleToFill[i] = model.values[offset + i];\n }\n\n }\n\n return tupleToFill;\n };\n\n publicAPI.getTuples = function (fromId, toId) {\n var from = (fromId !== null && fromId !== void 0 ? fromId : 0) * model.numberOfComponents;\n var to = (toId !== null && toId !== void 0 ? toId : publicAPI.getNumberOfTuples()) * model.numberOfComponents;\n var arr = publicAPI.getData().subarray(from, to);\n return arr.length > 0 ? arr : null;\n };\n\n publicAPI.getTupleLocation = function () {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n return idx * model.numberOfComponents;\n };\n\n publicAPI.getNumberOfComponents = function () {\n return model.numberOfComponents;\n };\n\n publicAPI.getNumberOfValues = function () {\n return model.size;\n };\n\n publicAPI.getNumberOfTuples = function () {\n return model.size / model.numberOfComponents;\n };\n\n publicAPI.getDataType = function () {\n return model.dataType;\n };\n /* eslint-disable no-use-before-define */\n\n\n publicAPI.newClone = function () {\n return newInstance({\n empty: true,\n name: model.name,\n dataType: model.dataType,\n numberOfComponents: model.numberOfComponents\n });\n };\n /* eslint-enable no-use-before-define */\n\n\n publicAPI.getName = function () {\n if (!model.name) {\n publicAPI.modified();\n model.name = \"vtkDataArray\".concat(publicAPI.getMTime());\n }\n\n return model.name;\n };\n\n publicAPI.setData = function (typedArray, numberOfComponents) {\n model.values = typedArray;\n model.size = typedArray.length;\n model.dataType = getDataType(typedArray);\n\n if (numberOfComponents) {\n model.numberOfComponents = numberOfComponents;\n }\n\n if (model.size % model.numberOfComponents !== 0) {\n model.numberOfComponents = 1;\n }\n\n publicAPI.dataChange();\n }; // Override serialization support\n\n\n publicAPI.getState = function () {\n if (model.deleted) {\n return null;\n }\n\n var jsonArchive = _objectSpread(_objectSpread({}, model), {}, {\n vtkClass: publicAPI.getClassName()\n }); // Convert typed array to regular array\n\n\n jsonArchive.values = Array.from(jsonArchive.values);\n delete jsonArchive.buffer; // Clean any empty data\n\n Object.keys(jsonArchive).forEach(function (keyName) {\n if (!jsonArchive[keyName]) {\n delete jsonArchive[keyName];\n }\n }); // Sort resulting object by key name\n\n var sortedObj = {};\n Object.keys(jsonArchive).sort().forEach(function (name) {\n sortedObj[name] = jsonArchive[name];\n }); // Remove mtime\n\n if (sortedObj.mtime) {\n delete sortedObj.mtime;\n }\n\n return sortedObj;\n };\n\n publicAPI.deepCopy = function (other) {\n publicAPI.shallowCopy(other);\n publicAPI.setData(other.getData().slice());\n };\n\n publicAPI.interpolateTuple = function (idx, source1, source1Idx, source2, source2Idx, t) {\n var numberOfComponents = model.numberOfComponents || 1;\n\n if (numberOfComponents !== source1.getNumberOfComponents() || numberOfComponents !== source2.getNumberOfComponents()) {\n vtkErrorMacro('numberOfComponents must match');\n }\n\n var tuple1 = source1.getTuple(source1Idx);\n var tuple2 = source2.getTuple(source2Idx);\n var out = [];\n out.length = numberOfComponents; // Check most common component sizes first\n // to avoid doing a for loop if possible\n\n switch (numberOfComponents) {\n case 4:\n out[3] = tuple1[3] + (tuple2[3] - tuple1[3]) * t;\n // eslint-disable-next-line no-fallthrough\n\n case 3:\n out[2] = tuple1[2] + (tuple2[2] - tuple1[2]) * t;\n // eslint-disable-next-line no-fallthrough\n\n case 2:\n out[1] = tuple1[1] + (tuple2[1] - tuple1[1]) * t;\n // eslint-disable-next-line no-fallthrough\n\n case 1:\n out[0] = tuple1[0] + (tuple2[0] - tuple1[0]) * t;\n break;\n\n default:\n for (var i = 0; i < numberOfComponents; i++) {\n out[i] = tuple1[i] + (tuple2[i] - tuple1[i]) * t;\n }\n\n }\n\n return publicAPI.insertTuple(idx, out);\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n// size: The current size of the dataArray.\n// NOTE: The underlying typed array may be larger than 'size'.\n\n\nvar DEFAULT_VALUES = {\n name: '',\n numberOfComponents: 1,\n dataType: DefaultDataType,\n rangeTuple: [0, 0] // size: undefined,\n // values: null,\n // ranges: null,\n\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n if (!model.empty && !model.values && !model.size) {\n throw new TypeError('Cannot create vtkDataArray object without: size > 0, values');\n }\n\n if (!model.values) {\n model.values = newTypedArray(model.dataType, model.size);\n } else if (Array.isArray(model.values)) {\n model.values = newTypedArrayFrom(model.dataType, model.values);\n }\n\n if (model.values) {\n var _model$size;\n\n // Takes the size if provided (can be lower than `model.values`) otherwise the actual length of `values`.\n model.size = (_model$size = model.size) !== null && _model$size !== void 0 ? _model$size : model.values.length;\n model.dataType = getDataType(model.values);\n } // Object methods\n\n\n obj(publicAPI, model);\n set(publicAPI, model, ['name', 'numberOfComponents']); // Object specific methods\n\n vtkDataArray(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = newInstance$1(extend, 'vtkDataArray'); // ----------------------------------------------------------------------------\n\nvar vtkDataArray$1 = _objectSpread(_objectSpread({\n newInstance: newInstance,\n extend: extend\n}, STATIC), Constants);\n\nexport { STATIC, vtkDataArray$1 as default, extend, newInstance };\n","import eventTarget from '../eventTarget';\nexport default function triggerEvent(el = eventTarget, type, detail = null) {\n if (!type) {\n throw new Error('Event type was not defined');\n }\n const event = new CustomEvent(type, {\n detail,\n cancelable: true,\n });\n return el.dispatchEvent(event);\n}\n//# sourceMappingURL=triggerEvent.js.map","export default function getMinMax(storedPixelData) {\n let min = storedPixelData[0];\n let max = storedPixelData[0];\n let storedPixel;\n const numPixels = storedPixelData.length;\n for (let index = 1; index < numPixels; index++) {\n storedPixel = storedPixelData[index];\n min = Math.min(min, storedPixel);\n max = Math.max(max, storedPixel);\n }\n return {\n min,\n max,\n };\n}\n//# sourceMappingURL=getMinMax.js.map","export default function imageIdToURI(imageId) {\n const colonIndex = imageId.indexOf(':');\n return imageId.substring(colonIndex + 1);\n}\n//# sourceMappingURL=imageIdToURI.js.map","import { getGPUTier } from 'detect-gpu';\nimport { SharedArrayBufferModes } from './enums';\nimport { getRenderingEngines } from './RenderingEngine/getRenderingEngine';\nlet csRenderInitialized = false;\nlet useSharedArrayBuffer = true;\nlet sharedArrayBufferMode = SharedArrayBufferModes.TRUE;\nimport { deepMerge } from './utilities';\nimport CentralizedWebWorkerManager from './webWorkerManager/webWorkerManager';\nconst defaultConfig = {\n gpuTier: undefined,\n detectGPUConfig: {},\n rendering: {\n useCPURendering: false,\n preferSizeOverAccuracy: false,\n useNorm16Texture: false,\n strictZSpacingForVolumeViewport: true,\n },\n enableCacheOptimization: true,\n};\nlet config = {\n gpuTier: undefined,\n detectGPUConfig: {},\n rendering: {\n useCPURendering: false,\n preferSizeOverAccuracy: false,\n useNorm16Texture: false,\n strictZSpacingForVolumeViewport: true,\n },\n enableCacheOptimization: true,\n};\nlet webWorkerManager = null;\nfunction _getGLContext() {\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl2') ||\n canvas.getContext('webgl') ||\n canvas.getContext('experimental-webgl');\n return gl;\n}\nfunction _hasActiveWebGLContext() {\n const gl = _getGLContext();\n return (gl instanceof WebGLRenderingContext || gl instanceof WebGL2RenderingContext);\n}\nfunction hasSharedArrayBuffer() {\n try {\n if (new SharedArrayBuffer(0)) {\n return true;\n }\n else {\n return false;\n }\n }\n catch {\n return false;\n }\n}\nasync function init(configuration = config) {\n if (csRenderInitialized) {\n return csRenderInitialized;\n }\n config = deepMerge(defaultConfig, configuration);\n const hasWebGLContext = _hasActiveWebGLContext();\n if (!hasWebGLContext) {\n console.log('CornerstoneRender: GPU not detected, using CPU rendering');\n config.rendering.useCPURendering = true;\n }\n else {\n config.gpuTier =\n config.gpuTier || (await getGPUTier(config.detectGPUConfig));\n console.log('CornerstoneRender: Using detect-gpu to get the GPU benchmark:', config.gpuTier);\n if (config.gpuTier.tier < 1) {\n console.log('CornerstoneRender: GPU is not powerful enough, using CPU rendering');\n config.rendering.useCPURendering = true;\n }\n else {\n console.log('CornerstoneRender: using GPU rendering');\n }\n }\n setUseSharedArrayBuffer(sharedArrayBufferMode);\n csRenderInitialized = true;\n if (!webWorkerManager) {\n webWorkerManager = new CentralizedWebWorkerManager();\n }\n return csRenderInitialized;\n}\nfunction setUseCPURendering(status) {\n config.rendering.useCPURendering = status;\n csRenderInitialized = true;\n _updateRenderingPipelinesForAllViewports();\n}\nfunction setPreferSizeOverAccuracy(status) {\n config.rendering.preferSizeOverAccuracy = status;\n csRenderInitialized = true;\n _updateRenderingPipelinesForAllViewports();\n}\nfunction resetUseCPURendering() {\n config.rendering.useCPURendering = !_hasActiveWebGLContext();\n _updateRenderingPipelinesForAllViewports();\n}\nfunction getShouldUseCPURendering() {\n return config.rendering.useCPURendering;\n}\nfunction setUseSharedArrayBuffer(mode) {\n if (mode == SharedArrayBufferModes.AUTO) {\n sharedArrayBufferMode = SharedArrayBufferModes.AUTO;\n const hasSharedBuffer = hasSharedArrayBuffer();\n if (!hasSharedBuffer) {\n useSharedArrayBuffer = false;\n console.warn(`CornerstoneRender: SharedArray Buffer not allowed, performance may be slower.\n Try ensuring page is cross-origin isolated to enable SharedArrayBuffer.`);\n }\n else {\n useSharedArrayBuffer = true;\n console.log('CornerstoneRender: using SharedArrayBuffer');\n }\n return;\n }\n if (mode == SharedArrayBufferModes.TRUE || mode == true) {\n sharedArrayBufferMode = SharedArrayBufferModes.TRUE;\n useSharedArrayBuffer = true;\n return;\n }\n if (mode == SharedArrayBufferModes.FALSE || mode == false) {\n sharedArrayBufferMode = SharedArrayBufferModes.FALSE;\n useSharedArrayBuffer = false;\n return;\n }\n}\nfunction resetUseSharedArrayBuffer() {\n setUseSharedArrayBuffer(sharedArrayBufferMode);\n}\nfunction getShouldUseSharedArrayBuffer() {\n return useSharedArrayBuffer;\n}\nfunction isCornerstoneInitialized() {\n return csRenderInitialized;\n}\nfunction getConfiguration() {\n return config;\n}\nfunction setConfiguration(c) {\n config = c;\n _updateRenderingPipelinesForAllViewports();\n}\nfunction _updateRenderingPipelinesForAllViewports() {\n getRenderingEngines().forEach((engine) => engine\n .getViewports()\n .forEach((viewport) => viewport.updateRenderingPipeline?.()));\n}\nfunction getWebWorkerManager() {\n if (!webWorkerManager) {\n webWorkerManager = new CentralizedWebWorkerManager();\n }\n return webWorkerManager;\n}\nexport { init, getShouldUseCPURendering, getShouldUseSharedArrayBuffer, isCornerstoneInitialized, setUseCPURendering, setUseSharedArrayBuffer, setPreferSizeOverAccuracy, resetUseCPURendering, resetUseSharedArrayBuffer, getConfiguration, setConfiguration, getWebWorkerManager, };\n//# sourceMappingURL=init.js.map","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { s as subtract, d as dot, j as cross, k as add } from '../Core/Math/index.js';\nimport macro from '../../macros.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar PLANE_TOLERANCE = 1.0e-6;\nvar COINCIDE = 'coincide';\nvar DISJOINT = 'disjoint'; // ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction evaluate(normal, origin, x) {\n return normal[0] * (x[0] - origin[0]) + normal[1] * (x[1] - origin[1]) + normal[2] * (x[2] - origin[2]);\n}\n\nfunction distanceToPlane(x, origin, normal) {\n var distance = normal[0] * (x[0] - origin[0]) + normal[1] * (x[1] - origin[1]) + normal[2] * (x[2] - origin[2]);\n return Math.abs(distance);\n}\n\nfunction projectPoint(x, origin, normal, xproj) {\n var xo = [];\n subtract(x, origin, xo);\n var t = dot(normal, xo);\n xproj[0] = x[0] - t * normal[0];\n xproj[1] = x[1] - t * normal[1];\n xproj[2] = x[2] - t * normal[2];\n}\n\nfunction projectVector(v, normal, vproj) {\n var t = dot(v, normal);\n var n2 = dot(normal, normal);\n\n if (n2 === 0) {\n n2 = 1.0;\n }\n\n vproj[0] = v[0] - t * normal[0] / n2;\n vproj[1] = v[1] - t * normal[1] / n2;\n vproj[2] = v[2] - t * normal[2] / n2;\n return vproj;\n}\n\nfunction generalizedProjectPoint(x, origin, normal, xproj) {\n var xo = [];\n subtract(x, origin, xo);\n var t = dot(normal, xo);\n var n2 = dot(normal, normal);\n\n if (n2 !== 0) {\n xproj[0] = x[0] - t * normal[0] / n2;\n xproj[1] = x[1] - t * normal[1] / n2;\n xproj[2] = x[2] - t * normal[2] / n2;\n } else {\n xproj[0] = x[0];\n xproj[1] = x[1];\n xproj[2] = x[2];\n }\n}\n\nfunction intersectWithLine(p1, p2, origin, normal) {\n var outObj = {\n intersection: false,\n betweenPoints: false,\n t: Number.MAX_VALUE,\n x: []\n };\n var p21 = [];\n var p1Origin = []; // Compute line vector\n\n subtract(p2, p1, p21);\n subtract(origin, p1, p1Origin); // Compute denominator. If ~0, line and plane are parallel.\n // const num = vtkMath.dot(normal, origin) - vtkMath.dot(normal, p1);\n\n var num = dot(normal, p1Origin);\n var den = dot(normal, p21); // If denominator with respect to numerator is \"zero\", then the line and\n // plane are considered parallel.\n\n var fabsden;\n var fabstolerance; // Trying to avoid an expensive call to fabs()\n\n if (den < 0.0) {\n fabsden = -den;\n } else {\n fabsden = den;\n }\n\n if (num < 0.0) {\n fabstolerance = -num * PLANE_TOLERANCE;\n } else {\n fabstolerance = num * PLANE_TOLERANCE;\n }\n\n if (fabsden <= fabstolerance) {\n return outObj;\n } // Where on the line between p1 and p2 is the intersection\n // If between 0 and 1, it is between the two points. If < 0 it's before p1, if > 1 it's after p2\n\n\n outObj.t = num / den;\n outObj.x[0] = p1[0] + outObj.t * p21[0];\n outObj.x[1] = p1[1] + outObj.t * p21[1];\n outObj.x[2] = p1[2] + outObj.t * p21[2];\n outObj.intersection = true;\n outObj.betweenPoints = outObj.t >= 0.0 && outObj.t <= 1.0;\n return outObj;\n}\n\nfunction intersectWithPlane(plane1Origin, plane1Normal, plane2Origin, plane2Normal) {\n var outObj = {\n intersection: false,\n l0: [],\n l1: [],\n error: null\n };\n var cross$1 = [];\n cross(plane1Normal, plane2Normal, cross$1);\n var absCross = cross$1.map(function (n) {\n return Math.abs(n);\n }); // test if the two planes are parallel\n\n if (absCross[0] + absCross[1] + absCross[2] < PLANE_TOLERANCE) {\n // test if disjoint or coincide\n var v = [];\n subtract(plane1Origin, plane2Origin, v);\n\n if (dot(plane1Normal, v) === 0) {\n outObj.error = COINCIDE;\n } else {\n outObj.error = DISJOINT;\n }\n\n return outObj;\n } // Plane1 and Plane2 intersect in a line\n // first determine max abs coordinate of the cross product\n\n\n var maxc;\n\n if (absCross[0] > absCross[1] && absCross[0] > absCross[2]) {\n maxc = 'x';\n } else if (absCross[1] > absCross[2]) {\n maxc = 'y';\n } else {\n maxc = 'z';\n } // To get a point on the intersect line, zero the max coord, and solve for the other two\n\n\n var iP = []; // intersectionPoint\n // the constants in the 2 plane equations\n\n var d1 = -dot(plane1Normal, plane1Origin);\n var d2 = -dot(plane2Normal, plane2Origin); // eslint-disable-next-line default-case\n\n switch (maxc) {\n case 'x':\n // intersect with x=0\n iP[0] = 0;\n iP[1] = (d2 * plane1Normal[2] - d1 * plane2Normal[2]) / cross$1[0];\n iP[2] = (d1 * plane2Normal[1] - d2 * plane1Normal[1]) / cross$1[0];\n break;\n\n case 'y':\n // intersect with y=0\n iP[0] = (d1 * plane2Normal[2] - d2 * plane1Normal[2]) / cross$1[1];\n iP[1] = 0;\n iP[2] = (d2 * plane1Normal[0] - d1 * plane2Normal[0]) / cross$1[1];\n break;\n\n case 'z':\n // intersect with z=0\n iP[0] = (d2 * plane1Normal[1] - d1 * plane2Normal[1]) / cross$1[2];\n iP[1] = (d1 * plane2Normal[0] - d2 * plane1Normal[0]) / cross$1[2];\n iP[2] = 0;\n break;\n }\n\n outObj.l0 = iP;\n add(iP, cross$1, outObj.l1);\n outObj.intersection = true;\n return outObj;\n} // ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\n\nvar STATIC = {\n evaluate: evaluate,\n distanceToPlane: distanceToPlane,\n projectPoint: projectPoint,\n projectVector: projectVector,\n generalizedProjectPoint: generalizedProjectPoint,\n intersectWithLine: intersectWithLine,\n intersectWithPlane: intersectWithPlane,\n DISJOINT: DISJOINT,\n COINCIDE: COINCIDE\n}; // ----------------------------------------------------------------------------\n// vtkPlane methods\n// ----------------------------------------------------------------------------\n\nfunction vtkPlane(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPlane');\n\n publicAPI.distanceToPlane = function (x) {\n return distanceToPlane(x, model.origin, model.normal);\n };\n\n publicAPI.projectPoint = function (x, xproj) {\n projectPoint(x, model.origin, model.normal, xproj);\n };\n\n publicAPI.projectVector = function (v, vproj) {\n return projectVector(v, model.normal, vproj);\n };\n\n publicAPI.push = function (distance) {\n if (distance === 0.0) {\n return;\n }\n\n for (var i = 0; i < 3; i++) {\n model.origin[i] += distance * model.normal[i];\n }\n };\n\n publicAPI.generalizedProjectPoint = function (x, xproj) {\n generalizedProjectPoint(x, model.origin, model.normal, xproj);\n };\n\n publicAPI.evaluateFunction = function (x, y, z) {\n if (!Array.isArray(x)) {\n return model.normal[0] * (x - model.origin[0]) + model.normal[1] * (y - model.origin[1]) + model.normal[2] * (z - model.origin[2]);\n }\n\n return model.normal[0] * (x[0] - model.origin[0]) + model.normal[1] * (x[1] - model.origin[1]) + model.normal[2] * (x[2] - model.origin[2]);\n };\n\n publicAPI.evaluateGradient = function (xyz) {\n var retVal = [model.normal[0], model.normal[1], model.normal[2]];\n return retVal;\n };\n\n publicAPI.intersectWithLine = function (p1, p2) {\n return intersectWithLine(p1, p2, model.origin, model.normal);\n };\n\n publicAPI.intersectWithPlane = function (planeOrigin, planeNormal) {\n return intersectWithPlane(planeOrigin, planeNormal, model.origin, model.normal);\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nvar DEFAULT_VALUES = {\n normal: [0.0, 0.0, 1.0],\n origin: [0.0, 0.0, 0.0]\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Object methods\n\n macro.obj(publicAPI, model);\n macro.setGetArray(publicAPI, model, ['normal', 'origin'], 3);\n vtkPlane(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkPlane'); // ----------------------------------------------------------------------------\n\nvar vtkPlane$1 = _objectSpread({\n newInstance: newInstance,\n extend: extend\n}, STATIC);\n\nexport { STATIC, vtkPlane$1 as default, extend, newInstance, vtkPlane };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport { d as dot } from '../Core/Math/index.js';\nimport { vec3 } from 'gl-matrix';\nimport vtkPlane from './Plane.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar INIT_BOUNDS = [Number.MAX_VALUE, -Number.MAX_VALUE, // X\nNumber.MAX_VALUE, -Number.MAX_VALUE, // Y\nNumber.MAX_VALUE, -Number.MAX_VALUE // Z\n]; // ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction _equals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\n\nfunction _isValid(bounds) {\n return bounds[0] <= bounds[1] && bounds[2] <= bounds[3] && bounds[4] <= bounds[5];\n}\n\nfunction _setBounds(bounds, otherBounds) {\n bounds[0] = otherBounds[0];\n bounds[1] = otherBounds[1];\n bounds[2] = otherBounds[2];\n bounds[3] = otherBounds[3];\n bounds[4] = otherBounds[4];\n bounds[5] = otherBounds[5];\n return bounds;\n}\n\nfunction _reset(bounds) {\n return _setBounds(bounds, INIT_BOUNDS);\n}\n\nfunction _addPoint(bounds, x, y, z) {\n var _bounds = _slicedToArray(bounds, 6),\n xMin = _bounds[0],\n xMax = _bounds[1],\n yMin = _bounds[2],\n yMax = _bounds[3],\n zMin = _bounds[4],\n zMax = _bounds[5];\n\n bounds[0] = xMin < x ? xMin : x;\n bounds[1] = xMax > x ? xMax : x;\n bounds[2] = yMin < y ? yMin : y;\n bounds[3] = yMax > y ? yMax : y;\n bounds[4] = zMin < z ? zMin : z;\n bounds[5] = zMax > z ? zMax : z;\n return bounds;\n}\n\nfunction _addPoints(bounds, points) {\n if (points.length === 0) {\n return bounds;\n }\n\n if (Array.isArray(points[0])) {\n for (var i = 0; i < points.length; ++i) {\n _addPoint.apply(void 0, [bounds].concat(_toConsumableArray(points[i])));\n }\n } else {\n for (var _i = 0; _i < points.length; _i += 3) {\n _addPoint.apply(void 0, [bounds].concat(_toConsumableArray(points.slice(_i, _i + 3))));\n }\n }\n\n return bounds;\n}\n\nfunction _addBounds(bounds, xMin, xMax, yMin, yMax, zMin, zMax) {\n var _bounds2 = _slicedToArray(bounds, 6),\n _xMin = _bounds2[0],\n _xMax = _bounds2[1],\n _yMin = _bounds2[2],\n _yMax = _bounds2[3],\n _zMin = _bounds2[4],\n _zMax = _bounds2[5];\n\n if (zMax === undefined) {\n bounds[0] = Math.min(xMin[0], _xMin);\n bounds[1] = Math.max(xMin[1], _xMax);\n bounds[2] = Math.min(xMin[2], _yMin);\n bounds[3] = Math.max(xMin[3], _yMax);\n bounds[4] = Math.min(xMin[4], _zMin);\n bounds[5] = Math.max(xMin[5], _zMax);\n } else {\n bounds[0] = Math.min(xMin, _xMin);\n bounds[1] = Math.max(xMax, _xMax);\n bounds[2] = Math.min(yMin, _yMin);\n bounds[3] = Math.max(yMax, _yMax);\n bounds[4] = Math.min(zMin, _zMin);\n bounds[5] = Math.max(zMax, _zMax);\n }\n\n return bounds;\n}\n\nfunction _setMinPoint(bounds, x, y, z) {\n var _bounds3 = _slicedToArray(bounds, 6),\n xMin = _bounds3[0],\n xMax = _bounds3[1],\n yMin = _bounds3[2],\n yMax = _bounds3[3],\n zMin = _bounds3[4],\n zMax = _bounds3[5];\n\n bounds[0] = x;\n bounds[1] = x > xMax ? x : xMax;\n bounds[2] = y;\n bounds[3] = y > yMax ? y : yMax;\n bounds[4] = z;\n bounds[5] = z > zMax ? z : zMax;\n return xMin !== x || yMin !== y || zMin !== z;\n}\n\nfunction _setMaxPoint(bounds, x, y, z) {\n var _bounds4 = _slicedToArray(bounds, 6),\n xMin = _bounds4[0],\n xMax = _bounds4[1],\n yMin = _bounds4[2],\n yMax = _bounds4[3],\n zMin = _bounds4[4],\n zMax = _bounds4[5];\n\n bounds[0] = x < xMin ? x : xMin;\n bounds[1] = x;\n bounds[2] = y < yMin ? y : yMin;\n bounds[3] = y;\n bounds[4] = z < zMin ? z : zMin;\n bounds[5] = z;\n return xMax !== x || yMax !== y || zMax !== z;\n}\n\nfunction _inflate(bounds, delta) {\n bounds[0] -= delta;\n bounds[1] += delta;\n bounds[2] -= delta;\n bounds[3] += delta;\n bounds[4] -= delta;\n bounds[5] += delta;\n return bounds;\n}\n\nfunction _scale(bounds, sx, sy, sz) {\n if (!_isValid(bounds)) {\n return false;\n }\n\n if (sx >= 0.0) {\n bounds[0] *= sx;\n bounds[1] *= sx;\n } else {\n bounds[0] = sx * bounds[1];\n bounds[1] = sx * bounds[0];\n }\n\n if (sy >= 0.0) {\n bounds[2] *= sy;\n bounds[3] *= sy;\n } else {\n bounds[2] = sy * bounds[3];\n bounds[3] = sy * bounds[2];\n }\n\n if (sz >= 0.0) {\n bounds[4] *= sz;\n bounds[5] *= sz;\n } else {\n bounds[4] = sz * bounds[5];\n bounds[5] = sz * bounds[4];\n }\n\n return true;\n}\n\nfunction _getCenter(bounds) {\n return [0.5 * (bounds[0] + bounds[1]), 0.5 * (bounds[2] + bounds[3]), 0.5 * (bounds[4] + bounds[5])];\n}\nfunction scaleAboutCenter(bounds, sx, sy, sz) {\n if (!_isValid(bounds)) {\n return false;\n }\n\n var center = _getCenter(bounds);\n\n bounds[0] -= center[0];\n bounds[1] -= center[0];\n bounds[2] -= center[1];\n bounds[3] -= center[1];\n bounds[4] -= center[2];\n bounds[5] -= center[2];\n\n _scale(bounds, sx, sy, sz);\n\n bounds[0] += center[0];\n bounds[1] += center[0];\n bounds[2] += center[1];\n bounds[3] += center[1];\n bounds[4] += center[2];\n bounds[5] += center[2];\n return true;\n}\n\nfunction _getLength(bounds, index) {\n return bounds[index * 2 + 1] - bounds[index * 2];\n}\n\nfunction _getLengths(bounds) {\n return [_getLength(bounds, 0), _getLength(bounds, 1), _getLength(bounds, 2)];\n}\n\nfunction _getXRange(bounds) {\n return bounds.slice(0, 2);\n}\n\nfunction _getYRange(bounds) {\n return bounds.slice(2, 4);\n}\n\nfunction _getZRange(bounds) {\n return bounds.slice(4, 6);\n}\n\nfunction _getMaxLength(bounds) {\n var l = _getLengths(bounds);\n\n if (l[0] > l[1]) {\n if (l[0] > l[2]) {\n return l[0];\n }\n\n return l[2];\n }\n\n if (l[1] > l[2]) {\n return l[1];\n }\n\n return l[2];\n}\n\nfunction _getDiagonalLength(bounds) {\n if (_isValid(bounds)) {\n var l = _getLengths(bounds);\n\n return Math.sqrt(l[0] * l[0] + l[1] * l[1] + l[2] * l[2]);\n }\n\n return null;\n}\n\nfunction _getMinPoint(bounds) {\n return [bounds[0], bounds[2], bounds[4]];\n}\n\nfunction _getMaxPoint(bounds) {\n return [bounds[1], bounds[3], bounds[5]];\n}\n\nfunction oppositeSign(a, b) {\n return a <= 0 && b >= 0 || a >= 0 && b <= 0;\n}\n\nfunction _getCorners(bounds, corners) {\n var count = 0;\n\n for (var ix = 0; ix < 2; ix++) {\n for (var iy = 2; iy < 4; iy++) {\n for (var iz = 4; iz < 6; iz++) {\n corners[count] = [bounds[ix], bounds[iy], bounds[iz]];\n count++;\n }\n }\n }\n\n return corners;\n} // Computes the two corners with minimal and miximal coordinates\n\nfunction _computeCornerPoints(bounds, point1, point2) {\n point1[0] = bounds[0];\n point1[1] = bounds[2];\n point1[2] = bounds[4];\n point2[0] = bounds[1];\n point2[1] = bounds[3];\n point2[2] = bounds[5];\n return point1;\n}\n\nfunction _transformBounds(bounds, transform) {\n var out = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n if (out.length < 6) {\n _reset(out);\n }\n\n var corners = _getCorners(bounds, []);\n\n for (var i = 0; i < corners.length; ++i) {\n vec3.transformMat4(corners[i], corners[i], transform);\n }\n\n return _addPoints(out, corners);\n}\n\nfunction _computeScale(bounds) {\n var scale3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n scale3[0] = 0.5 * (bounds[1] - bounds[0]);\n scale3[1] = 0.5 * (bounds[3] - bounds[2]);\n scale3[2] = 0.5 * (bounds[5] - bounds[4]);\n return scale3;\n}\n\nfunction _computeLocalBounds(points, u, v, w) {\n var bounds = [].concat(INIT_BOUNDS);\n var pointsData = points.getData();\n\n for (var i = 0; i < pointsData.length; i += 3) {\n var point = [pointsData[i], pointsData[i + 1], pointsData[i + 2]];\n var du = dot(point, u);\n bounds[0] = Math.min(du, bounds[0]);\n bounds[1] = Math.max(du, bounds[1]);\n var dv = dot(point, v);\n bounds[2] = Math.min(dv, bounds[2]);\n bounds[3] = Math.max(dv, bounds[3]);\n var dw = dot(point, w);\n bounds[4] = Math.min(dw, bounds[4]);\n bounds[5] = Math.max(dw, bounds[5]);\n }\n\n return bounds;\n} // The method returns a non-zero value if the bounding box is hit.\n\nfunction _intersectBox(bounds, origin, dir, coord, tolerance) {\n var inside = true;\n var quadrant = [];\n var whichPlane = 0;\n var maxT = [];\n var candidatePlane = [0.0, 0.0, 0.0];\n var RIGHT = 0;\n var LEFT = 1;\n var MIDDLE = 2; // First find closest planes\n\n for (var i = 0; i < 3; i++) {\n if (origin[i] < bounds[2 * i]) {\n quadrant[i] = LEFT;\n candidatePlane[i] = bounds[2 * i];\n inside = false;\n } else if (origin[i] > bounds[2 * i + 1]) {\n quadrant[i] = RIGHT;\n candidatePlane[i] = bounds[2 * i + 1];\n inside = false;\n } else {\n quadrant[i] = MIDDLE;\n }\n } // Check whether origin of ray is inside bbox\n\n\n if (inside) {\n coord[0] = origin[0];\n coord[1] = origin[1];\n coord[2] = origin[2];\n tolerance[0] = 0;\n return 1;\n } // Calculate parametric distance to plane\n\n\n for (var _i2 = 0; _i2 < 3; _i2++) {\n if (quadrant[_i2] !== MIDDLE && dir[_i2] !== 0.0) {\n maxT[_i2] = (candidatePlane[_i2] - origin[_i2]) / dir[_i2];\n } else {\n maxT[_i2] = -1.0;\n }\n } // Find the largest parametric value of intersection\n\n\n for (var _i3 = 0; _i3 < 3; _i3++) {\n if (maxT[whichPlane] < maxT[_i3]) {\n whichPlane = _i3;\n }\n } // Check for valie intersection along line\n\n\n if (maxT[whichPlane] > 1.0 || maxT[whichPlane] < 0.0) {\n return 0;\n }\n\n tolerance[0] = maxT[whichPlane]; // Intersection point along line is okay. Check bbox.\n\n for (var _i4 = 0; _i4 < 3; _i4++) {\n if (whichPlane !== _i4) {\n coord[_i4] = origin[_i4] + maxT[whichPlane] * dir[_i4];\n\n if (coord[_i4] < bounds[2 * _i4] || coord[_i4] > bounds[2 * _i4 + 1]) {\n return 0;\n }\n } else {\n coord[_i4] = candidatePlane[_i4];\n }\n }\n\n return 1;\n} // Plane intersection with box\n\nfunction _intersectPlane(bounds, origin, normal) {\n var p = [];\n var d = 0;\n var sign = 1;\n var firstOne = 1; // Evaluate the eight points. If there is a sign change, there is an intersection\n\n for (var z = 4; z <= 5; ++z) {\n p[2] = bounds[z];\n\n for (var y = 2; y <= 3; ++y) {\n p[1] = bounds[y];\n\n for (var x = 0; x <= 1; ++x) {\n p[0] = bounds[x];\n d = vtkPlane.evaluate(normal, origin, p);\n\n if (firstOne) {\n sign = d >= 0 ? 1 : -1;\n firstOne = 0;\n }\n\n if (d === 0.0 || sign > 0 && d < 0.0 || sign < 0 && d > 0.0) {\n return 1;\n }\n }\n }\n }\n\n return 0; // no intersection\n}\n\nfunction _intersect(bounds, bBounds) {\n if (!(_isValid(bounds) && _isValid(bBounds))) {\n return false;\n }\n\n var newBounds = [0, 0, 0, 0, 0, 0];\n var intersection;\n\n for (var i = 0; i < 3; i++) {\n intersection = false;\n\n if (bBounds[i * 2] >= bounds[i * 2] && bBounds[i * 2] <= bounds[i * 2 + 1]) {\n intersection = true;\n newBounds[i * 2] = bBounds[i * 2];\n } else if (bounds[i * 2] >= bBounds[i * 2] && bounds[i * 2] <= bBounds[i * 2 + 1]) {\n intersection = true;\n newBounds[i * 2] = bounds[i * 2];\n }\n\n if (bBounds[i * 2 + 1] >= bounds[i * 2] && bBounds[i * 2 + 1] <= bounds[i * 2 + 1]) {\n intersection = true;\n newBounds[i * 2 + 1] = bBounds[2 * i + 1];\n } else if (bounds[i * 2 + 1] >= bBounds[i * 2] && bounds[i * 2 + 1] <= bBounds[i * 2 + 1]) {\n intersection = true;\n newBounds[i * 2 + 1] = bounds[i * 2 + 1];\n }\n\n if (!intersection) {\n return false;\n }\n } // OK they did intersect - set the box to be the result\n\n\n bounds[0] = newBounds[0];\n bounds[1] = newBounds[1];\n bounds[2] = newBounds[2];\n bounds[3] = newBounds[3];\n bounds[4] = newBounds[4];\n bounds[5] = newBounds[5];\n return true;\n}\n\nfunction _intersects(bounds, bBounds) {\n if (!(_isValid(bounds) && _isValid(bBounds))) {\n return false;\n }\n /* eslint-disable no-continue */\n\n\n for (var i = 0; i < 3; i++) {\n if (bBounds[i * 2] >= bounds[i * 2] && bBounds[i * 2] <= bounds[i * 2 + 1]) {\n continue;\n } else if (bounds[i * 2] >= bBounds[i * 2] && bounds[i * 2] <= bBounds[i * 2 + 1]) {\n continue;\n }\n\n if (bBounds[i * 2 + 1] >= bounds[i * 2] && bBounds[i * 2 + 1] <= bounds[i * 2 + 1]) {\n continue;\n } else if (bounds[i * 2 + 1] >= bBounds[i * 2] && bounds[i * 2 + 1] <= bBounds[i * 2 + 1]) {\n continue;\n }\n\n return false;\n }\n /* eslint-enable no-continue */\n\n\n return true;\n}\n\nfunction _containsPoint(bounds, x, y, z) {\n if (x < bounds[0] || x > bounds[1]) {\n return false;\n }\n\n if (y < bounds[2] || y > bounds[3]) {\n return false;\n }\n\n if (z < bounds[4] || z > bounds[5]) {\n return false;\n }\n\n return true;\n}\nfunction contains(bounds, otherBounds) {\n // if either box is not valid or they don't intersect\n if (!_intersects(bounds, otherBounds)) {\n return false;\n }\n\n if (!_containsPoint.apply(void 0, [bounds].concat(_toConsumableArray(_getMinPoint(otherBounds))))) {\n return false;\n }\n\n if (!_containsPoint.apply(void 0, [bounds].concat(_toConsumableArray(_getMaxPoint(otherBounds))))) {\n return false;\n }\n\n return true;\n}\n/**\n * Returns true if plane intersects bounding box.\n * If so, the box is cut by the plane\n * @param {array} origin\n * @param {array} normal\n */\n\nfunction _cutWithPlane(bounds, origin, normal) {\n // Index[0..2] represents the order of traversing the corners of a cube\n // in (x,y,z), (y,x,z) and (z,x,y) ordering, respectively\n var index = [[0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 4, 5, 2, 3, 6, 7], [0, 2, 4, 6, 1, 3, 5, 7]]; // stores the signed distance to a plane\n\n var d = [0, 0, 0, 0, 0, 0, 0, 0];\n var idx = 0;\n\n for (var ix = 0; ix < 2; ix++) {\n for (var iy = 2; iy < 4; iy++) {\n for (var iz = 4; iz < 6; iz++) {\n var x = [bounds[ix], bounds[iy], bounds[iz]];\n d[idx++] = vtkPlane.evaluate(normal, origin, x);\n }\n }\n }\n\n var dir = 2;\n\n while (dir--) {\n // in each direction, we test if the vertices of two orthogonal faces\n // are on either side of the plane\n if (oppositeSign(d[index[dir][0]], d[index[dir][4]]) && oppositeSign(d[index[dir][1]], d[index[dir][5]]) && oppositeSign(d[index[dir][2]], d[index[dir][6]]) && oppositeSign(d[index[dir][3]], d[index[dir][7]])) {\n break;\n }\n }\n\n if (dir < 0) {\n return false;\n }\n\n var sign = Math.sign(normal[dir]);\n var size = Math.abs((bounds[dir * 2 + 1] - bounds[dir * 2]) * normal[dir]);\n var t = sign > 0 ? 1 : 0;\n /* eslint-disable no-continue */\n\n for (var i = 0; i < 4; i++) {\n if (size === 0) {\n continue; // shouldn't happen\n }\n\n var ti = Math.abs(d[index[dir][i]]) / size;\n\n if (sign > 0 && ti < t) {\n t = ti;\n }\n\n if (sign < 0 && ti > t) {\n t = ti;\n }\n }\n /* eslint-enable no-continue */\n\n\n var bound = (1.0 - t) * bounds[dir * 2] + t * bounds[dir * 2 + 1];\n\n if (sign > 0) {\n bounds[dir * 2] = bound;\n } else {\n bounds[dir * 2 + 1] = bound;\n }\n\n return true;\n} // ----------------------------------------------------------------------------\n\nvar BoundingBox = /*#__PURE__*/function () {\n function BoundingBox(refBounds) {\n _classCallCheck(this, BoundingBox);\n\n this.bounds = refBounds;\n\n if (!this.bounds) {\n this.bounds = new Float64Array(INIT_BOUNDS);\n }\n }\n\n _createClass(BoundingBox, [{\n key: \"getBounds\",\n value: function getBounds() {\n return this.bounds;\n }\n }, {\n key: \"equals\",\n value: function equals(otherBounds) {\n return _equals(this.bounds, otherBounds);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return _isValid(this.bounds);\n }\n }, {\n key: \"setBounds\",\n value: function setBounds(otherBounds) {\n return _setBounds(this.bounds, otherBounds);\n }\n }, {\n key: \"reset\",\n value: function reset() {\n return _reset(this.bounds);\n }\n }, {\n key: \"addPoint\",\n value: function addPoint() {\n for (var _len = arguments.length, xyz = new Array(_len), _key = 0; _key < _len; _key++) {\n xyz[_key] = arguments[_key];\n }\n\n return _addPoint.apply(void 0, [this.bounds].concat(xyz));\n }\n }, {\n key: \"addPoints\",\n value: function addPoints(points) {\n return _addPoints(this.bounds, points);\n }\n }, {\n key: \"addBounds\",\n value: function addBounds(xMin, xMax, yMin, yMax, zMin, zMax) {\n return _addBounds(this.bounds, xMin, xMax, yMin, yMax, zMin, zMax);\n }\n }, {\n key: \"setMinPoint\",\n value: function setMinPoint(x, y, z) {\n return _setMinPoint(this.bounds, x, y, z);\n }\n }, {\n key: \"setMaxPoint\",\n value: function setMaxPoint(x, y, z) {\n return _setMaxPoint(this.bounds, x, y, z);\n }\n }, {\n key: \"inflate\",\n value: function inflate(delta) {\n return _inflate(this.bounds, delta);\n }\n }, {\n key: \"scale\",\n value: function scale(sx, sy, sz) {\n return _scale(this.bounds, sx, sy, sz);\n }\n }, {\n key: \"getCenter\",\n value: function getCenter() {\n return _getCenter(this.bounds);\n }\n }, {\n key: \"getLength\",\n value: function getLength(index) {\n return _getLength(this.bounds, index);\n }\n }, {\n key: \"getLengths\",\n value: function getLengths() {\n return _getLengths(this.bounds);\n }\n }, {\n key: \"getMaxLength\",\n value: function getMaxLength() {\n return _getMaxLength(this.bounds);\n }\n }, {\n key: \"getDiagonalLength\",\n value: function getDiagonalLength() {\n return _getDiagonalLength(this.bounds);\n }\n }, {\n key: \"getMinPoint\",\n value: function getMinPoint() {\n return _getMinPoint(this.bounds);\n }\n }, {\n key: \"getMaxPoint\",\n value: function getMaxPoint() {\n return _getMaxPoint(this.bounds);\n }\n }, {\n key: \"getXRange\",\n value: function getXRange() {\n return _getXRange(this.bounds);\n }\n }, {\n key: \"getYRange\",\n value: function getYRange() {\n return _getYRange(this.bounds);\n }\n }, {\n key: \"getZRange\",\n value: function getZRange() {\n return _getZRange(this.bounds);\n }\n }, {\n key: \"getCorners\",\n value: function getCorners(corners) {\n return _getCorners(this.bounds, corners);\n }\n }, {\n key: \"computeCornerPoints\",\n value: function computeCornerPoints(point1, point2) {\n return _computeCornerPoints(this.bounds, point1, point2);\n }\n }, {\n key: \"computeLocalBounds\",\n value: function computeLocalBounds(u, v, w) {\n return _computeLocalBounds(this.bounds, u, v, w);\n }\n }, {\n key: \"transformBounds\",\n value: function transformBounds(transform) {\n var out = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return _transformBounds(this.bounds, transform, out);\n }\n }, {\n key: \"computeScale3\",\n value: function computeScale3(scale3) {\n return _computeScale(this.bounds, scale3);\n }\n }, {\n key: \"cutWithPlane\",\n value: function cutWithPlane(origin, normal) {\n return _cutWithPlane(this.bounds, origin, normal);\n }\n }, {\n key: \"intersectBox\",\n value: function intersectBox(origin, dir, coord, tolerance) {\n return _intersectBox(this.bounds, origin, dir, coord, tolerance);\n }\n }, {\n key: \"intersectPlane\",\n value: function intersectPlane(origin, normal) {\n return _intersectPlane(this.bounds, origin, normal);\n }\n }, {\n key: \"intersect\",\n value: function intersect(otherBounds) {\n return _intersect(this.bounds, otherBounds);\n }\n }, {\n key: \"intersects\",\n value: function intersects(otherBounds) {\n return _intersects(this.bounds, otherBounds);\n }\n }, {\n key: \"containsPoint\",\n value: function containsPoint(x, y, z) {\n return _containsPoint(this.bounds, x, y, z);\n }\n }, {\n key: \"contains\",\n value: function contains(otherBounds) {\n return _intersects(this.bounds, otherBounds);\n }\n }]);\n\n return BoundingBox;\n}();\n\nfunction newInstance(initialValues) {\n var bounds = initialValues && initialValues.bounds;\n return new BoundingBox(bounds);\n} // ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\n\nvar STATIC = {\n equals: _equals,\n isValid: _isValid,\n setBounds: _setBounds,\n reset: _reset,\n addPoint: _addPoint,\n addPoints: _addPoints,\n addBounds: _addBounds,\n setMinPoint: _setMinPoint,\n setMaxPoint: _setMaxPoint,\n inflate: _inflate,\n scale: _scale,\n scaleAboutCenter: scaleAboutCenter,\n getCenter: _getCenter,\n getLength: _getLength,\n getLengths: _getLengths,\n getMaxLength: _getMaxLength,\n getDiagonalLength: _getDiagonalLength,\n getMinPoint: _getMinPoint,\n getMaxPoint: _getMaxPoint,\n getXRange: _getXRange,\n getYRange: _getYRange,\n getZRange: _getZRange,\n getCorners: _getCorners,\n computeCornerPoints: _computeCornerPoints,\n computeLocalBounds: _computeLocalBounds,\n transformBounds: _transformBounds,\n computeScale3: _computeScale,\n cutWithPlane: _cutWithPlane,\n intersectBox: _intersectBox,\n intersectPlane: _intersectPlane,\n intersect: _intersect,\n intersects: _intersects,\n containsPoint: _containsPoint,\n contains: contains,\n INIT_BOUNDS: INIT_BOUNDS\n};\nvar vtkBoundingBox = _objectSpread({\n newInstance: newInstance\n}, STATIC);\n\nexport { STATIC, _addBounds as addBounds, _addPoint as addPoint, _addPoints as addPoints, _computeCornerPoints as computeCornerPoints, _computeLocalBounds as computeLocalBounds, _computeScale as computeScale3, contains, _containsPoint as containsPoint, _cutWithPlane as cutWithPlane, vtkBoundingBox as default, _equals as equals, _getCenter as getCenter, _getCorners as getCorners, _getDiagonalLength as getDiagonalLength, _getLength as getLength, _getLengths as getLengths, _getMaxLength as getMaxLength, _getMaxPoint as getMaxPoint, _getMinPoint as getMinPoint, _getXRange as getXRange, _getYRange as getYRange, _getZRange as getZRange, _inflate as inflate, _intersect as intersect, _intersectBox as intersectBox, _intersectPlane as intersectPlane, _intersects as intersects, _isValid as isValid, _reset as reset, _scale as scale, scaleAboutCenter, _setBounds as setBounds, _setMaxPoint as setMaxPoint, _setMinPoint as setMinPoint, _transformBounds as transformBounds };\n","import vtk from '../../../vtk.js';\nimport macro from '../../../macros.js';\nimport vtkDataArray from '../../Core/DataArray.js';\n\nvar vtkErrorMacro = macro.vtkErrorMacro,\n vtkWarningMacro = macro.vtkWarningMacro; // ----------------------------------------------------------------------------\n// vtkFieldData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkFieldData(publicAPI, model) {\n model.classHierarchy.push('vtkFieldData');\n var superGetState = publicAPI.getState; // Decode serialized data if any\n\n if (model.arrays) {\n model.arrays = model.arrays.map(function (item) {\n return {\n data: vtk(item.data)\n };\n });\n }\n\n publicAPI.initialize = function () {\n publicAPI.initializeFields();\n publicAPI.copyAllOn();\n publicAPI.clearFieldFlags();\n };\n\n publicAPI.initializeFields = function () {\n model.arrays = [];\n model.copyFieldFlags = {};\n publicAPI.modified();\n };\n\n publicAPI.copyStructure = function (other) {\n publicAPI.initializeFields();\n model.copyFieldFlags = other.getCopyFieldFlags().map(function (x) {\n return x;\n }); // Deep-copy\n\n model.arrays = other.arrays().map(function (x) {\n return {\n array: x\n };\n }); // Deep-copy\n // TODO: Copy array information objects (once we support information objects)\n };\n\n publicAPI.getNumberOfArrays = function () {\n return model.arrays.length;\n };\n\n publicAPI.getNumberOfActiveArrays = function () {\n return model.arrays.length;\n };\n\n publicAPI.addArray = function (arr) {\n var name = arr.getName();\n\n var _publicAPI$getArrayWi = publicAPI.getArrayWithIndex(name),\n array = _publicAPI$getArrayWi.array,\n index = _publicAPI$getArrayWi.index;\n\n if (array != null) {\n model.arrays[index] = {\n data: arr\n };\n return index;\n }\n\n model.arrays = [].concat(model.arrays, {\n data: arr\n });\n return model.arrays.length - 1;\n };\n\n publicAPI.removeAllArrays = function () {\n model.arrays = [];\n };\n\n publicAPI.removeArray = function (arrayName) {\n var index = model.arrays.findIndex(function (array) {\n return array.getName() === arrayName;\n });\n return publicAPI.removeArrayByIndex(index);\n };\n\n publicAPI.removeArrayByIndex = function (arrayIdx) {\n if (arrayIdx !== -1 && arrayIdx < model.arrays.length) {\n model.arrays.splice(arrayIdx, 1); // TBD modified() ?\n\n return true;\n }\n\n return false;\n };\n\n publicAPI.getArrays = function () {\n return model.arrays.map(function (entry) {\n return entry.data;\n });\n };\n\n publicAPI.getArray = function (arraySpec) {\n return typeof arraySpec === 'number' ? publicAPI.getArrayByIndex(arraySpec) : publicAPI.getArrayByName(arraySpec);\n };\n\n publicAPI.getArrayByName = function (arrayName) {\n return model.arrays.reduce(function (a, b, i) {\n return b.data.getName() === arrayName ? b.data : a;\n }, null);\n };\n\n publicAPI.getArrayWithIndex = function (arrayName) {\n var index = model.arrays.findIndex(function (array) {\n return array.data.getName() === arrayName;\n });\n return {\n array: index !== -1 ? model.arrays[index].data : null,\n index: index\n };\n };\n\n publicAPI.getArrayByIndex = function (idx) {\n return idx >= 0 && idx < model.arrays.length ? model.arrays[idx].data : null;\n };\n\n publicAPI.hasArray = function (arrayName) {\n return publicAPI.getArrayWithIndex(arrayName).index >= 0;\n };\n\n publicAPI.getArrayName = function (idx) {\n var arr = model.arrays[idx];\n return arr ? arr.data.getName() : '';\n };\n\n publicAPI.getCopyFieldFlags = function () {\n return model.copyFieldFlags;\n };\n\n publicAPI.getFlag = function (arrayName) {\n return model.copyFieldFlags[arrayName];\n };\n\n publicAPI.passData = function (other) {\n var fromId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n var toId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;\n other.getArrays().forEach(function (arr) {\n var copyFlag = publicAPI.getFlag(arr.getName());\n\n if (copyFlag !== false && !(model.doCopyAllOff && copyFlag !== true) && arr) {\n var destArr = publicAPI.getArrayByName(arr.getName());\n\n if (!destArr) {\n if (fromId < 0 || fromId > arr.getNumberOfTuples()) {\n // TBD: should this be a deep or a shallow copy?\n publicAPI.addArray(arr);\n other.getAttributes(arr).forEach(function (attrType) {\n publicAPI.setAttribute(arr, attrType);\n });\n } else {\n var ncomps = arr.getNumberOfComponents();\n var newSize = arr.getNumberOfValues();\n var tId = toId > -1 ? toId : fromId;\n\n if (newSize <= tId * ncomps) {\n newSize = (tId + 1) * ncomps;\n }\n\n destArr = vtkDataArray.newInstance({\n name: arr.getName(),\n dataType: arr.getDataType(),\n numberOfComponents: ncomps,\n values: macro.newTypedArray(arr.getDataType(), newSize),\n size: 0\n });\n destArr.insertTuple(tId, arr.getTuple(fromId));\n publicAPI.addArray(destArr);\n other.getAttributes(arr).forEach(function (attrType) {\n publicAPI.setAttribute(destArr, attrType);\n });\n }\n } else if (arr.getNumberOfComponents() === destArr.getNumberOfComponents()) {\n if (fromId > -1 && fromId < arr.getNumberOfTuples()) {\n var _tId = toId > -1 ? toId : fromId;\n\n destArr.insertTuple(_tId, arr.getTuple(fromId));\n } else {\n // if `fromId` is not provided, just copy all (or as much possible)\n // from `arr` to `destArr`.\n destArr.insertTuples(0, arr.getTuples());\n }\n } else {\n vtkErrorMacro('Unhandled case in passData');\n }\n }\n });\n };\n\n publicAPI.interpolateData = function (other) {\n var fromId1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n var fromId2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;\n var toId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1;\n var t = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0.5;\n other.getArrays().forEach(function (arr) {\n var copyFlag = publicAPI.getFlag(arr.getName());\n\n if (copyFlag !== false && !(model.doCopyAllOff && copyFlag !== true) && arr) {\n var destArr = publicAPI.getArrayByName(arr.getName());\n\n if (!destArr) {\n if (fromId1 < 0 || fromId2 < 0 || fromId1 > arr.getNumberOfTuples()) {\n // TBD: should this be a deep or a shallow copy?\n publicAPI.addArray(arr);\n other.getAttributes(arr).forEach(function (attrType) {\n publicAPI.setAttribute(arr, attrType);\n });\n } else {\n var ncomps = arr.getNumberOfComponents();\n var newSize = arr.getNumberOfValues(); // TODO: Is this supposed to happen?\n\n var tId = toId > -1 ? toId : fromId1;\n\n if (newSize <= tId * ncomps) {\n newSize = (tId + 1) * ncomps;\n }\n\n destArr = vtkDataArray.newInstance({\n name: arr.getName(),\n dataType: arr.getDataType(),\n numberOfComponents: ncomps,\n values: macro.newTypedArray(arr.getDataType(), newSize),\n size: 0\n });\n destArr.interpolateTuple(tId, arr, fromId1, arr, fromId2, t);\n publicAPI.addArray(destArr);\n other.getAttributes(arr).forEach(function (attrType) {\n publicAPI.setAttribute(destArr, attrType);\n });\n }\n } else if (arr.getNumberOfComponents() === destArr.getNumberOfComponents()) {\n if (fromId1 > -1 && fromId1 < arr.getNumberOfTuples()) {\n var _tId2 = toId > -1 ? toId : fromId1;\n\n destArr.interpolateTuple(_tId2, arr, fromId1, arr, fromId2, t);\n vtkWarningMacro('Unexpected case in interpolateData');\n } else {\n // if `fromId` is not provided, just copy all (or as much possible)\n // from `arr` to `destArr`.\n destArr.insertTuples(arr.getTuples());\n }\n } else {\n vtkErrorMacro('Unhandled case in interpolateData');\n }\n }\n });\n };\n\n publicAPI.copyFieldOn = function (arrayName) {\n model.copyFieldFlags[arrayName] = true;\n };\n\n publicAPI.copyFieldOff = function (arrayName) {\n model.copyFieldFlags[arrayName] = false;\n };\n\n publicAPI.copyAllOn = function () {\n if (!model.doCopyAllOn || model.doCopyAllOff) {\n model.doCopyAllOn = true;\n model.doCopyAllOff = false;\n publicAPI.modified();\n }\n };\n\n publicAPI.copyAllOff = function () {\n if (model.doCopyAllOn || !model.doCopyAllOff) {\n model.doCopyAllOn = false;\n model.doCopyAllOff = true;\n publicAPI.modified();\n }\n };\n\n publicAPI.clearFieldFlags = function () {\n model.copyFieldFlags = {};\n };\n\n publicAPI.deepCopy = function (other) {\n model.arrays = other.getArrays().map(function (arr) {\n var arrNew = arr.newClone();\n arrNew.deepCopy(arr);\n return {\n data: arrNew\n };\n });\n };\n\n publicAPI.copyFlags = function (other) {\n return other.getCopyFieldFlags().map(function (x) {\n return x;\n });\n }; // TODO: publicAPI.squeeze = () => model.arrays.forEach(entry => entry.data.squeeze());\n\n\n publicAPI.reset = function () {\n return model.arrays.forEach(function (entry) {\n return entry.data.reset();\n });\n }; // TODO: getActualMemorySize\n\n\n publicAPI.getMTime = function () {\n return model.arrays.reduce(function (a, b) {\n return b.data.getMTime() > a ? b.data.getMTime() : a;\n }, model.mtime);\n }; // TODO: publicAPI.getField = (ids, other) => { copy ids from other into this model's arrays }\n // TODO: publicAPI.getArrayContainingComponent = (component) => ...\n\n\n publicAPI.getNumberOfComponents = function () {\n return model.arrays.reduce(function (a, b) {\n return a + b.data.getNumberOfComponents();\n }, 0);\n };\n\n publicAPI.getNumberOfTuples = function () {\n return model.arrays.length > 0 ? model.arrays[0].getNumberOfTuples() : 0;\n };\n\n publicAPI.getState = function () {\n var result = superGetState();\n\n if (result) {\n result.arrays = model.arrays.map(function (item) {\n return {\n data: item.data.getState()\n };\n });\n }\n\n return result;\n };\n}\n\nvar DEFAULT_VALUES = {\n arrays: [],\n copyFieldFlags: [],\n // fields not to copy\n doCopyAllOn: true,\n doCopyAllOff: false\n};\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues);\n macro.obj(publicAPI, model);\n vtkFieldData(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkFieldData'); // ----------------------------------------------------------------------------\n\nvar vtkFieldData$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { vtkFieldData$1 as default, extend, newInstance };\n","var AttributeTypes = {\n SCALARS: 0,\n VECTORS: 1,\n NORMALS: 2,\n TCOORDS: 3,\n TENSORS: 4,\n GLOBALIDS: 5,\n PEDIGREEIDS: 6,\n EDGEFLAG: 7,\n NUM_ATTRIBUTES: 8\n};\nvar AttributeLimitTypes = {\n MAX: 0,\n EXACT: 1,\n NOLIMIT: 2\n};\nvar CellGhostTypes = {\n DUPLICATECELL: 1,\n // the cell is present on multiple processors\n HIGHCONNECTIVITYCELL: 2,\n // the cell has more neighbors than in a regular mesh\n LOWCONNECTIVITYCELL: 4,\n // the cell has less neighbors than in a regular mesh\n REFINEDCELL: 8,\n // other cells are present that refines it.\n EXTERIORCELL: 16,\n // the cell is on the exterior of the data set\n HIDDENCELL: 32 // the cell is needed to maintain connectivity, but the data values should be ignored.\n\n};\nvar PointGhostTypes = {\n DUPLICATEPOINT: 1,\n // the cell is present on multiple processors\n HIDDENPOINT: 2 // the point is needed to maintain connectivity, but the data values should be ignored.\n\n};\nvar AttributeCopyOperations = {\n COPYTUPLE: 0,\n INTERPOLATE: 1,\n PASSDATA: 2,\n ALLCOPY: 3 // all of the above\n\n};\nvar ghostArrayName = 'vtkGhostType';\nvar DesiredOutputPrecision = {\n DEFAULT: 0,\n // use the point type that does not truncate any data\n SINGLE: 1,\n // use Float32Array\n DOUBLE: 2 // use Float64Array\n\n};\nvar Constants = {\n AttributeCopyOperations: AttributeCopyOperations,\n AttributeLimitTypes: AttributeLimitTypes,\n AttributeTypes: AttributeTypes,\n CellGhostTypes: CellGhostTypes,\n DesiredOutputPrecision: DesiredOutputPrecision,\n PointGhostTypes: PointGhostTypes,\n ghostArrayName: ghostArrayName\n};\n\nexport { AttributeCopyOperations, AttributeLimitTypes, AttributeTypes, CellGhostTypes, DesiredOutputPrecision, PointGhostTypes, Constants as default, ghostArrayName };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport macro from '../../macros.js';\nimport vtkFieldData from './DataSetAttributes/FieldData.js';\nimport Constants from './DataSetAttributes/Constants.js';\nimport vtkDataArray from '../Core/DataArray.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar AttributeTypes = Constants.AttributeTypes,\n AttributeCopyOperations = Constants.AttributeCopyOperations;\nvar vtkWarningMacro = macro.vtkWarningMacro; // ----------------------------------------------------------------------------\n// vtkDataSetAttributes methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataSetAttributes(publicAPI, model) {\n var attrTypes = ['Scalars', 'Vectors', 'Normals', 'TCoords', 'Tensors', 'GlobalIds', 'PedigreeIds'];\n\n function cleanAttributeType(attType) {\n // Given an integer or string, convert the result to one of the\n // strings in the \"attrTypes\" array above or null (if\n // no match is found)\n var cleanAttType = attrTypes.find(function (ee) {\n return AttributeTypes[ee.toUpperCase()] === attType || typeof attType !== 'number' && ee.toLowerCase() === attType.toLowerCase();\n });\n\n if (typeof cleanAttType === 'undefined') {\n cleanAttType = null;\n }\n\n return cleanAttType;\n } // Set our className\n\n\n model.classHierarchy.push('vtkDataSetAttributes');\n\n var superClass = _objectSpread({}, publicAPI);\n\n publicAPI.checkNumberOfComponents = function (x) {\n return true;\n }; // TODO\n\n\n publicAPI.setAttribute = function (arr, uncleanAttType) {\n var attType = cleanAttributeType(uncleanAttType);\n\n if (arr && attType.toUpperCase() === 'PEDIGREEIDS' && !arr.isA('vtkDataArray')) {\n vtkWarningMacro(\"Cannot set attribute \".concat(attType, \". The attribute must be a vtkDataArray.\"));\n return -1;\n }\n\n if (arr && !publicAPI.checkNumberOfComponents(arr, attType)) {\n vtkWarningMacro(\"Cannot set attribute \".concat(attType, \". Incorrect number of components.\"));\n return -1;\n }\n\n var currentAttribute = model[\"active\".concat(attType)];\n\n if (currentAttribute >= 0 && currentAttribute < model.arrays.length) {\n if (model.arrays[currentAttribute] === arr) {\n return currentAttribute;\n } // FIXME setting an array actually changes its index\n\n\n publicAPI.removeArrayByIndex(currentAttribute);\n }\n\n if (arr) {\n currentAttribute = publicAPI.addArray(arr);\n model[\"active\".concat(attType)] = currentAttribute;\n } else {\n model[\"active\".concat(attType)] = -1;\n }\n\n publicAPI.modified();\n return model[\"active\".concat(attType)];\n };\n\n publicAPI.getAttributes = function (arr) {\n return attrTypes.filter(function (attrType) {\n return publicAPI[\"get\".concat(attrType)]() === arr;\n });\n };\n\n publicAPI.setActiveAttributeByName = function (arrayName, attType) {\n return publicAPI.setActiveAttributeByIndex(publicAPI.getArrayWithIndex(arrayName).index, attType);\n };\n\n publicAPI.setActiveAttributeByIndex = function (arrayIdx, uncleanAttType) {\n var attType = cleanAttributeType(uncleanAttType);\n\n if (arrayIdx >= 0 && arrayIdx < model.arrays.length) {\n if (attType.toUpperCase() !== 'PEDIGREEIDS') {\n var arr = publicAPI.getArrayByIndex(arrayIdx);\n\n if (!arr.isA('vtkDataArray')) {\n vtkWarningMacro(\"Cannot set attribute \".concat(attType, \". Only vtkDataArray subclasses can be set as active attributes.\"));\n return -1;\n }\n\n if (!publicAPI.checkNumberOfComponents(arr, attType)) {\n vtkWarningMacro(\"Cannot set attribute \".concat(attType, \". Incorrect number of components.\"));\n return -1;\n }\n }\n\n model[\"active\".concat(attType)] = arrayIdx;\n publicAPI.modified();\n return arrayIdx;\n }\n\n if (arrayIdx === -1) {\n model[\"active\".concat(attType)] = arrayIdx;\n publicAPI.modified();\n }\n\n return -1;\n };\n\n publicAPI.getActiveAttribute = function (attType) {\n // Given an integer enum value or a string (with random capitalization),\n // find the matching string in attrTypes.\n var cleanAttType = cleanAttributeType(attType);\n return publicAPI[\"get\".concat(cleanAttType)]();\n }; // Override to allow proper handling of active attributes\n\n\n publicAPI.removeAllArrays = function () {\n attrTypes.forEach(function (attType) {\n model[\"active\".concat(attType)] = -1;\n });\n superClass.removeAllArrays();\n }; // Override to allow proper handling of active attributes\n\n\n publicAPI.removeArrayByIndex = function (arrayIdx) {\n if (arrayIdx !== -1) {\n attrTypes.forEach(function (attType) {\n if (arrayIdx === model[\"active\".concat(attType)]) {\n model[\"active\".concat(attType)] = -1;\n } else if (arrayIdx < model[\"active\".concat(attType)]) {\n model[\"active\".concat(attType)] -= 1;\n }\n });\n }\n\n return superClass.removeArrayByIndex(arrayIdx);\n };\n\n attrTypes.forEach(function (value) {\n var activeVal = \"active\".concat(value);\n\n publicAPI[\"get\".concat(value)] = function () {\n return publicAPI.getArrayByIndex(model[activeVal]);\n };\n\n publicAPI[\"set\".concat(value)] = function (da) {\n return publicAPI.setAttribute(da, value);\n };\n\n publicAPI[\"setActive\".concat(value)] = function (arrayName) {\n return publicAPI.setActiveAttributeByIndex(publicAPI.getArrayWithIndex(arrayName).index, value);\n };\n\n publicAPI[\"copy\".concat(value, \"Off\")] = function () {\n var attType = value.toUpperCase();\n model.copyAttributeFlags[AttributeCopyOperations.PASSDATA][AttributeTypes[attType]] = false;\n };\n\n publicAPI[\"copy\".concat(value, \"On\")] = function () {\n var attType = value.toUpperCase();\n model.copyAttributeFlags[AttributeCopyOperations.PASSDATA][AttributeTypes[attType]] = true;\n };\n });\n\n publicAPI.initializeAttributeCopyFlags = function () {\n // Default to copying all attributes in every circumstance:\n model.copyAttributeFlags = [];\n Object.keys(AttributeCopyOperations).filter(function (op) {\n return op !== 'ALLCOPY';\n }).forEach(function (attCopyOp) {\n model.copyAttributeFlags[AttributeCopyOperations[attCopyOp]] = Object.keys(AttributeTypes).filter(function (ty) {\n return ty !== 'NUM_ATTRIBUTES';\n }).reduce(function (a, b) {\n a[AttributeTypes[b]] = true;\n return a;\n }, []);\n }); // Override some operations where we don't want to copy:\n\n model.copyAttributeFlags[AttributeCopyOperations.COPYTUPLE][AttributeTypes.GLOBALIDS] = false;\n model.copyAttributeFlags[AttributeCopyOperations.INTERPOLATE][AttributeTypes.GLOBALIDS] = false;\n model.copyAttributeFlags[AttributeCopyOperations.COPYTUPLE][AttributeTypes.PEDIGREEIDS] = false;\n };\n\n publicAPI.initialize = macro.chain(publicAPI.initialize, publicAPI.initializeAttributeCopyFlags); // Process dataArrays if any\n\n if (model.dataArrays && Object.keys(model.dataArrays).length) {\n Object.keys(model.dataArrays).forEach(function (name) {\n if (!model.dataArrays[name].ref && model.dataArrays[name].type === 'vtkDataArray') {\n publicAPI.addArray(vtkDataArray.newInstance(model.dataArrays[name]));\n }\n });\n }\n\n var superShallowCopy = publicAPI.shallowCopy;\n\n publicAPI.shallowCopy = function (other, debug) {\n superShallowCopy(other, debug);\n model.arrays = other.getArrays().map(function (arr) {\n var arrNew = arr.newClone();\n arrNew.shallowCopy(arr, debug);\n return {\n data: arrNew\n };\n });\n };\n\n publicAPI.initializeAttributeCopyFlags();\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n activeScalars: -1,\n activeVectors: -1,\n activeTensors: -1,\n activeNormals: -1,\n activeTCoords: -1,\n activeGlobalIds: -1,\n activePedigreeIds: -1\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Object methods\n\n vtkFieldData.extend(publicAPI, model, initialValues);\n macro.setGet(publicAPI, model, ['activeScalars', 'activeNormals', 'activeTCoords', 'activeVectors', 'activeTensors', 'activeGlobalIds', 'activePedigreeIds']);\n\n if (!model.arrays) {\n model.arrays = {};\n } // Object specific methods\n\n\n vtkDataSetAttributes(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkDataSetAttributes'); // ----------------------------------------------------------------------------\n\nvar vtkDataSetAttributes$1 = _objectSpread({\n newInstance: newInstance,\n extend: extend\n}, Constants);\n\nexport { vtkDataSetAttributes$1 as default, extend, newInstance };\n","// Specify how data arrays can be used by data objects\nvar FieldDataTypes = {\n UNIFORM: 0,\n // data that does not vary over points/cells/etc.\n DATA_OBJECT_FIELD: 0,\n // to match VTK\n COORDINATE: 1,\n // data that specifies the location of each point\n POINT_DATA: 1,\n // to match VTK\n POINT: 2,\n // data defined at each point, but that does not specify the point location\n POINT_FIELD_DATA: 2,\n // to match VTK\n CELL: 3,\n // data defined at each cell, but that does not specify the cell\n CELL_FIELD_DATA: 3,\n // to match VTK\n VERTEX: 4,\n // data defined at each graph vertex, but that does not specify the graph vertex\n VERTEX_FIELD_DATA: 4,\n // to match VTK\n EDGE: 5,\n // data defined at each graph edge, but that does not specify the graph edge\n EDGE_FIELD_DATA: 5,\n // to match VTK\n ROW: 6,\n // data specifying a table row\n ROW_DATA: 6 // to match VTK\n\n};\nvar FieldAssociations = {\n FIELD_ASSOCIATION_POINTS: 0,\n FIELD_ASSOCIATION_CELLS: 1,\n FIELD_ASSOCIATION_NONE: 2,\n FIELD_ASSOCIATION_POINTS_THEN_CELLS: 3,\n FIELD_ASSOCIATION_VERTICES: 4,\n FIELD_ASSOCIATION_EDGES: 5,\n FIELD_ASSOCIATION_ROWS: 6,\n NUMBER_OF_ASSOCIATIONS: 7\n};\nvar Constants = {\n FieldDataTypes: FieldDataTypes,\n FieldAssociations: FieldAssociations\n};\n\nexport { FieldAssociations, FieldDataTypes, Constants as default };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport macro from '../../macros.js';\nimport vtk from '../../vtk.js';\nimport vtkDataSetAttributes from './DataSetAttributes.js';\nimport Constants from './DataSet/Constants.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n// import * as vtkMath from '../../Core/Math';\n//\n// function getBounds(dataset) {\n// if (dataset.bounds) {\n// return dataset.bounds;\n// }\n// if (dataset.type && dataset[dataset.type]) {\n// const ds = dataset[dataset.type];\n// if (ds.bounds) {\n// return ds.bounds;\n// }\n// if (ds.Points && ds.Points.bounds) {\n// return ds.Points.bounds;\n// }\n// if (ds.Points && ds.Points.values) {\n// const array = ds.Points.values;\n// const bbox = [...vtkBoundingBox.INIT_BOUNDS];\n// const size = array.length;\n// const delta = ds.Points.numberOfComponents ? ds.Points.numberOfComponents : 3;\n// for (let idx = 0; idx < size; idx += delta) {\n// vtkBoundingBox.addPoint(bbox, array[idx * delta], array[(idx * delta) + 1], array[(idx * delta) + 2]);\n// }\n// ds.Points.bounds = bbox;\n// return ds.Points.bounds;\n// }\n// }\n// return vtkMath.createUninitializedBounds();\n// }\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nvar DATASET_FIELDS = ['pointData', 'cellData', 'fieldData']; // ----------------------------------------------------------------------------\n// vtkDataSet methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataSet(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkDataSet'); // Add dataset attributes\n\n DATASET_FIELDS.forEach(function (fieldName) {\n if (!model[fieldName]) {\n model[fieldName] = vtkDataSetAttributes.newInstance();\n } else {\n model[fieldName] = vtk(model[fieldName]);\n }\n });\n var superShallowCopy = publicAPI.shallowCopy;\n\n publicAPI.shallowCopy = function (other) {\n var debug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n superShallowCopy(other, debug);\n DATASET_FIELDS.forEach(function (fieldName) {\n model[fieldName] = vtkDataSetAttributes.newInstance();\n model[fieldName].shallowCopy(other.getReferenceByName(fieldName));\n });\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {// pointData: null,\n // cellData: null,\n // fieldData: null,\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Object methods\n\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, DATASET_FIELDS); // Object specific methods\n\n vtkDataSet(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkDataSet'); // ----------------------------------------------------------------------------\n\nvar vtkDataSet$1 = _objectSpread({\n newInstance: newInstance,\n extend: extend\n}, Constants);\n\nexport { vtkDataSet$1 as default, extend, newInstance };\n","var StructuredType = {\n UNCHANGED: 0,\n SINGLE_POINT: 1,\n X_LINE: 2,\n Y_LINE: 3,\n Z_LINE: 4,\n XY_PLANE: 5,\n YZ_PLANE: 6,\n XZ_PLANE: 7,\n XYZ_GRID: 8,\n EMPTY: 9\n};\nvar Constants = {\n StructuredType: StructuredType\n};\n\nexport { StructuredType, Constants as default };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport Constants from './StructuredData/Constants.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar StructuredType = Constants.StructuredType;\nfunction getDataDescriptionFromExtent(inExt) {\n var dataDim = 0;\n\n for (var i = 0; i < 3; ++i) {\n if (inExt[i * 2] < inExt[i * 2 + 1]) {\n dataDim++;\n }\n }\n\n if (inExt[0] > inExt[1] || inExt[2] > inExt[3] || inExt[4] > inExt[5]) {\n return StructuredType.EMPTY;\n }\n\n if (dataDim === 3) {\n return StructuredType.XYZ_GRID;\n }\n\n if (dataDim === 2) {\n if (inExt[0] === inExt[1]) {\n return StructuredType.YZ_PLANE;\n }\n\n if (inExt[2] === inExt[3]) {\n return StructuredType.XZ_PLANE;\n }\n\n return StructuredType.XY_PLANE;\n }\n\n if (dataDim === 1) {\n if (inExt[0] < inExt[1]) {\n return StructuredType.X_LINE;\n }\n\n if (inExt[2] < inExt[3]) {\n return StructuredType.Y_LINE;\n }\n\n return StructuredType.Z_LINE;\n }\n\n return StructuredType.SINGLE_POINT;\n}\nvar vtkStructuredData = _objectSpread({\n getDataDescriptionFromExtent: getDataDescriptionFromExtent\n}, Constants);\n\nexport { vtkStructuredData as default, getDataDescriptionFromExtent };\n","import _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport macro from '../../macros.js';\nimport { b as roundVector, c as clampVector } from '../Core/Math/index.js';\nimport vtkBoundingBox from './BoundingBox.js';\nimport vtkDataSet from './DataSet.js';\nimport vtkStructuredData from './StructuredData.js';\nimport { StructuredType } from './StructuredData/Constants.js';\nimport { mat3, mat4, vec3 } from 'gl-matrix';\n\nvar vtkErrorMacro = macro.vtkErrorMacro; // ----------------------------------------------------------------------------\n// vtkImageData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageData(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageData');\n\n publicAPI.setExtent = function () {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n for (var _len = arguments.length, inExtent = new Array(_len), _key = 0; _key < _len; _key++) {\n inExtent[_key] = arguments[_key];\n }\n\n var extentArray = inExtent.length === 1 ? inExtent[0] : inExtent;\n\n if (extentArray.length !== 6) {\n return false;\n }\n\n var changeDetected = model.extent.some(function (item, index) {\n return item !== extentArray[index];\n });\n\n if (changeDetected) {\n model.extent = extentArray.slice();\n model.dataDescription = vtkStructuredData.getDataDescriptionFromExtent(model.extent);\n publicAPI.modified();\n }\n\n return changeDetected;\n };\n\n publicAPI.setDimensions = function () {\n var i;\n var j;\n var k;\n\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (arguments.length === 1) {\n var array = arguments.length <= 0 ? undefined : arguments[0];\n i = array[0];\n j = array[1];\n k = array[2];\n } else if (arguments.length === 3) {\n i = arguments.length <= 0 ? undefined : arguments[0];\n j = arguments.length <= 1 ? undefined : arguments[1];\n k = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n vtkErrorMacro('Bad dimension specification');\n return;\n }\n\n publicAPI.setExtent(0, i - 1, 0, j - 1, 0, k - 1);\n };\n\n publicAPI.getDimensions = function () {\n return [model.extent[1] - model.extent[0] + 1, model.extent[3] - model.extent[2] + 1, model.extent[5] - model.extent[4] + 1];\n };\n\n publicAPI.getNumberOfCells = function () {\n var dims = publicAPI.getDimensions();\n var nCells = 1;\n\n for (var i = 0; i < 3; i++) {\n if (dims[i] === 0) {\n return 0;\n }\n\n if (dims[i] > 1) {\n nCells *= dims[i] - 1;\n }\n }\n\n return nCells;\n };\n\n publicAPI.getNumberOfPoints = function () {\n var dims = publicAPI.getDimensions();\n return dims[0] * dims[1] * dims[2];\n };\n\n publicAPI.getPoint = function (index) {\n var dims = publicAPI.getDimensions();\n\n if (dims[0] === 0 || dims[1] === 0 || dims[2] === 0) {\n vtkErrorMacro('Requesting a point from an empty image.');\n return null;\n }\n\n var ijk = new Float64Array(3);\n\n switch (model.dataDescription) {\n case StructuredType.EMPTY:\n return null;\n\n case StructuredType.SINGLE_POINT:\n break;\n\n case StructuredType.X_LINE:\n ijk[0] = index;\n break;\n\n case StructuredType.Y_LINE:\n ijk[1] = index;\n break;\n\n case StructuredType.Z_LINE:\n ijk[2] = index;\n break;\n\n case StructuredType.XY_PLANE:\n ijk[0] = index % dims[0];\n ijk[1] = index / dims[0];\n break;\n\n case StructuredType.YZ_PLANE:\n ijk[1] = index % dims[1];\n ijk[2] = index / dims[1];\n break;\n\n case StructuredType.XZ_PLANE:\n ijk[0] = index % dims[0];\n ijk[2] = index / dims[0];\n break;\n\n case StructuredType.XYZ_GRID:\n ijk[0] = index % dims[0];\n ijk[1] = index / dims[0] % dims[1];\n ijk[2] = index / (dims[0] * dims[1]);\n break;\n\n default:\n vtkErrorMacro('Invalid dataDescription');\n break;\n }\n\n var coords = [0, 0, 0];\n publicAPI.indexToWorld(ijk, coords);\n return coords;\n }; // vtkCell *GetCell(vtkIdType cellId) VTK_OVERRIDE;\n // void GetCell(vtkIdType cellId, vtkGenericCell *cell) VTK_OVERRIDE;\n // void GetCellBounds(vtkIdType cellId, double bounds[6]) VTK_OVERRIDE;\n // virtual vtkIdType FindPoint(double x, double y, double z)\n // {\n // return this->vtkDataSet::FindPoint(x, y, z);\n // }\n // vtkIdType FindPoint(double x[3]) VTK_OVERRIDE;\n // vtkIdType FindCell(\n // double x[3], vtkCell *cell, vtkIdType cellId, double tol2,\n // int& subId, double pcoords[3], double *weights) VTK_OVERRIDE;\n // vtkIdType FindCell(\n // double x[3], vtkCell *cell, vtkGenericCell *gencell,\n // vtkIdType cellId, double tol2, int& subId,\n // double pcoords[3], double *weights) VTK_OVERRIDE;\n // vtkCell *FindAndGetCell(double x[3], vtkCell *cell, vtkIdType cellId,\n // double tol2, int& subId, double pcoords[3],\n // double *weights) VTK_OVERRIDE;\n // int GetCellType(vtkIdType cellId) VTK_OVERRIDE;\n // void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) VTK_OVERRIDE\n // {vtkStructuredData::GetCellPoints(cellId,ptIds,this->DataDescription,\n // this->GetDimensions());}\n // void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) VTK_OVERRIDE\n // {vtkStructuredData::GetPointCells(ptId,cellIds,this->GetDimensions());}\n // void ComputeBounds() VTK_OVERRIDE;\n // int GetMaxCellSize() VTK_OVERRIDE {return 8;}; //voxel is the largest\n\n\n publicAPI.getBounds = function () {\n return publicAPI.extentToBounds(publicAPI.getSpatialExtent());\n };\n\n publicAPI.extentToBounds = function (ex) {\n return vtkBoundingBox.transformBounds(ex, model.indexToWorld);\n };\n\n publicAPI.getSpatialExtent = function () {\n return vtkBoundingBox.inflate(_toConsumableArray(model.extent), 0.5);\n }; // Internal, shouldn't need to call this manually.\n\n\n publicAPI.computeTransforms = function () {\n mat4.fromTranslation(model.indexToWorld, model.origin);\n model.indexToWorld[0] = model.direction[0];\n model.indexToWorld[1] = model.direction[1];\n model.indexToWorld[2] = model.direction[2];\n model.indexToWorld[4] = model.direction[3];\n model.indexToWorld[5] = model.direction[4];\n model.indexToWorld[6] = model.direction[5];\n model.indexToWorld[8] = model.direction[6];\n model.indexToWorld[9] = model.direction[7];\n model.indexToWorld[10] = model.direction[8];\n mat4.scale(model.indexToWorld, model.indexToWorld, model.spacing);\n mat4.invert(model.worldToIndex, model.indexToWorld);\n };\n\n publicAPI.indexToWorld = function (ain) {\n var aout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n vec3.transformMat4(aout, ain, model.indexToWorld);\n return aout;\n };\n\n publicAPI.indexToWorldVec3 = publicAPI.indexToWorld;\n\n publicAPI.worldToIndex = function (ain) {\n var aout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n vec3.transformMat4(aout, ain, model.worldToIndex);\n return aout;\n };\n\n publicAPI.worldToIndexVec3 = publicAPI.worldToIndex;\n\n publicAPI.indexToWorldBounds = function (bin) {\n var bout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return vtkBoundingBox.transformBounds(bin, model.indexToWorld, bout);\n };\n\n publicAPI.worldToIndexBounds = function (bin) {\n var bout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return vtkBoundingBox.transformBounds(bin, model.worldToIndex, bout);\n }; // Make sure the transform is correct\n\n\n publicAPI.onModified(publicAPI.computeTransforms);\n publicAPI.computeTransforms();\n\n publicAPI.getCenter = function () {\n return vtkBoundingBox.getCenter(publicAPI.getBounds());\n };\n\n publicAPI.computeHistogram = function (worldBounds) {\n var voxelFunc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var bounds = [0, 0, 0, 0, 0, 0];\n publicAPI.worldToIndexBounds(worldBounds, bounds);\n var point1 = [0, 0, 0];\n var point2 = [0, 0, 0];\n vtkBoundingBox.computeCornerPoints(bounds, point1, point2);\n roundVector(point1, point1);\n roundVector(point2, point2);\n var dimensions = publicAPI.getDimensions();\n clampVector(point1, [0, 0, 0], [dimensions[0] - 1, dimensions[1] - 1, dimensions[2] - 1], point1);\n clampVector(point2, [0, 0, 0], [dimensions[0] - 1, dimensions[1] - 1, dimensions[2] - 1], point2);\n var yStride = dimensions[0];\n var zStride = dimensions[0] * dimensions[1];\n var pixels = publicAPI.getPointData().getScalars().getData();\n var maximum = -Infinity;\n var minimum = Infinity;\n var sumOfSquares = 0;\n var isum = 0;\n var inum = 0;\n\n for (var z = point1[2]; z <= point2[2]; z++) {\n for (var y = point1[1]; y <= point2[1]; y++) {\n var index = point1[0] + y * yStride + z * zStride;\n\n for (var x = point1[0]; x <= point2[0]; x++) {\n if (!voxelFunc || voxelFunc([x, y, z], bounds)) {\n var pixel = pixels[index];\n if (pixel > maximum) maximum = pixel;\n if (pixel < minimum) minimum = pixel;\n sumOfSquares += pixel * pixel;\n isum += pixel;\n inum += 1;\n }\n\n ++index;\n }\n }\n }\n\n var average = inum > 0 ? isum / inum : 0;\n var variance = inum ? Math.abs(sumOfSquares / inum - average * average) : 0;\n var sigma = Math.sqrt(variance);\n return {\n minimum: minimum,\n maximum: maximum,\n average: average,\n variance: variance,\n sigma: sigma,\n count: inum\n };\n }; // TODO: use the unimplemented `vtkDataSetAttributes` for scalar length, that is currently also a TODO (GetNumberOfComponents).\n // Scalar data could be tuples for color information?\n\n\n publicAPI.computeIncrements = function (extent) {\n var numberOfComponents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var increments = [];\n var incr = numberOfComponents; // Calculate array increment offsets\n // similar to c++ vtkImageData::ComputeIncrements\n\n for (var idx = 0; idx < 3; ++idx) {\n increments[idx] = incr;\n incr *= extent[idx * 2 + 1] - extent[idx * 2] + 1;\n }\n\n return increments;\n };\n /**\n * @param {Number[]} index the localized `[i,j,k]` pixel array position. Float values will be rounded.\n * @return {Number} the corresponding flattened index in the scalar array\n */\n\n\n publicAPI.computeOffsetIndex = function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n i = _ref2[0],\n j = _ref2[1],\n k = _ref2[2];\n\n var extent = publicAPI.getExtent();\n var numberOfComponents = publicAPI.getPointData().getScalars().getNumberOfComponents();\n var increments = publicAPI.computeIncrements(extent, numberOfComponents); // Use the array increments to find the pixel index\n // similar to c++ vtkImageData::GetArrayPointer\n // Math.floor to catch \"practically 0\" e^-15 scenarios.\n\n return Math.floor((Math.round(i) - extent[0]) * increments[0] + (Math.round(j) - extent[2]) * increments[1] + (Math.round(k) - extent[4]) * increments[2]);\n };\n /**\n * @param {Number[]} xyz the [x,y,z] Array in world coordinates\n * @return {Number|NaN} the corresponding pixel's index in the scalar array\n */\n\n\n publicAPI.getOffsetIndexFromWorld = function (xyz) {\n var extent = publicAPI.getExtent();\n var index = publicAPI.worldToIndex(xyz); // Confirm indexed i,j,k coords are within the bounds of the volume\n\n for (var idx = 0; idx < 3; ++idx) {\n if (index[idx] < extent[idx * 2] || index[idx] > extent[idx * 2 + 1]) {\n vtkErrorMacro(\"GetScalarPointer: Pixel \".concat(index, \" is not in memory. Current extent = \").concat(extent));\n return NaN;\n }\n } // Assumed the index here is within 0 <-> scalarData.length, but doesn't hurt to check upstream\n\n\n return publicAPI.computeOffsetIndex(index);\n };\n /**\n * @param {Number[]} xyz the [x,y,z] Array in world coordinates\n * @param {Number?} comp the scalar component index for multi-component scalars\n * @return {Number|NaN} the corresponding pixel's scalar value\n */\n\n\n publicAPI.getScalarValueFromWorld = function (xyz) {\n var comp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var numberOfComponents = publicAPI.getPointData().getScalars().getNumberOfComponents();\n\n if (comp < 0 || comp >= numberOfComponents) {\n vtkErrorMacro(\"GetScalarPointer: Scalar Component \".concat(comp, \" is not within bounds. Current Scalar numberOfComponents: \").concat(numberOfComponents));\n return NaN;\n }\n\n var offsetIndex = publicAPI.getOffsetIndexFromWorld(xyz);\n\n if (Number.isNaN(offsetIndex)) {\n // VTK Error Macro will have been tripped already, no need to do it again,\n return offsetIndex;\n }\n\n return publicAPI.getPointData().getScalars().getComponent(offsetIndex, comp);\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n direction: null,\n // a mat3\n indexToWorld: null,\n // a mat4\n worldToIndex: null,\n // a mat4\n spacing: [1.0, 1.0, 1.0],\n origin: [0.0, 0.0, 0.0],\n extent: [0, -1, 0, -1, 0, -1],\n dataDescription: StructuredType.EMPTY\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Inheritance\n\n vtkDataSet.extend(publicAPI, model, initialValues);\n\n if (!model.direction) {\n model.direction = mat3.identity(new Float64Array(9));\n } else if (Array.isArray(model.direction)) {\n model.direction = new Float64Array(model.direction.slice(0, 9));\n }\n\n model.indexToWorld = new Float64Array(16);\n model.worldToIndex = new Float64Array(16); // Set/Get methods\n\n macro.get(publicAPI, model, ['indexToWorld', 'worldToIndex']);\n macro.setGetArray(publicAPI, model, ['origin', 'spacing'], 3);\n macro.setGetArray(publicAPI, model, ['direction'], 9);\n macro.getArray(publicAPI, model, ['extent'], 6); // Object specific methods\n\n vtkImageData(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkImageData'); // ----------------------------------------------------------------------------\n\nvar vtkImageData$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { vtkImageData$1 as default, extend, newInstance };\n","export default function isTypedArray(obj) {\n return (obj instanceof Int8Array ||\n obj instanceof Uint8Array ||\n obj instanceof Uint8ClampedArray ||\n obj instanceof Int16Array ||\n obj instanceof Uint16Array ||\n obj instanceof Int32Array ||\n obj instanceof Uint32Array ||\n obj instanceof Float32Array ||\n obj instanceof Float64Array);\n}\n//# sourceMappingURL=isTypedArray.js.map","var Wrap = {\n CLAMP_TO_EDGE: 0,\n REPEAT: 1,\n MIRRORED_REPEAT: 2\n};\nvar Filter = {\n NEAREST: 0,\n LINEAR: 1,\n NEAREST_MIPMAP_NEAREST: 2,\n NEAREST_MIPMAP_LINEAR: 3,\n LINEAR_MIPMAP_NEAREST: 4,\n LINEAR_MIPMAP_LINEAR: 5\n};\nvar Constants = {\n Wrap: Wrap,\n Filter: Filter\n};\n\nexport { Filter, Wrap, Constants as default };\n","/* eslint-disable no-bitwise */\nvar floatView = new Float32Array(1);\nvar int32View = new Int32Array(floatView.buffer);\n/* eslint-disable no-bitwise */\n\n/* This method is faster than the OpenEXR implementation (very often\n * used, eg. in Ogre), with the additional benefit of rounding, inspired\n * by James Tursa?s half-precision code. */\n\nfunction toHalf(val) {\n floatView[0] = val;\n var x = int32View[0];\n var bits = x >> 16 & 0x8000;\n /* Get the sign */\n\n var m = x >> 12 & 0x07ff;\n /* Keep one extra bit for rounding */\n\n var e = x >> 23 & 0xff;\n /* Using int is faster here */\n\n /* If zero, or denormal, or exponent underflows too much for a denormal\n * half, return signed zero. */\n\n if (e < 103) {\n return bits;\n }\n /* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n\n\n if (e > 142) {\n bits |= 0x7c00;\n /* If exponent was 0xff and one mantissa bit was set, it means NaN,\n * not Inf, so make sure we set one mantissa bit too. */\n\n bits |= (e === 255 ? 0 : 1) && x & 0x007fffff;\n return bits;\n }\n /* If exponent underflows but not too much, return a denormal */\n\n\n if (e < 113) {\n m |= 0x0800;\n /* Extra rounding may overflow and set mantissa to 0 and exponent\n * to 1, which is OK. */\n\n bits |= (m >> 114 - e) + (m >> 113 - e & 1);\n return bits;\n }\n\n bits |= e - 112 << 10 | m >> 1;\n /* Extra rounding. An overflow will set mantissa to 0 and increment\n * the exponent, which is OK. */\n\n bits += m & 1;\n return bits;\n}\n\nfunction fromHalf(h) {\n var s = (h & 0x8000) >> 15;\n var e = (h & 0x7c00) >> 10;\n var f = h & 0x03ff;\n\n if (e === 0) {\n return (s ? -1 : 1) * Math.pow(2, -14) * (f / Math.pow(2, 10));\n }\n\n if (e === 0x1f) {\n return f ? NaN : (s ? -1 : 1) * Infinity;\n }\n\n return (s ? -1 : 1) * Math.pow(2, e - 15) * (1 + f / Math.pow(2, 10));\n}\n\nvar HalfFloat = {\n fromHalf: fromHalf,\n toHalf: toHalf\n};\n\nexport { HalfFloat as default };\n","import macro from '../../macros.js';\n\nvar vtkErrorMacro = macro.vtkErrorMacro;\nvar PASS_TYPES = ['Build', 'Render']; // ----------------------------------------------------------------------------\n// vtkViewNode methods\n// ----------------------------------------------------------------------------\n\nfunction vtkViewNode(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkViewNode'); // Builds myself.\n\n publicAPI.build = function (prepass) {}; // Renders myself\n\n\n publicAPI.render = function (prepass) {};\n\n publicAPI.traverse = function (renderPass) {\n // we can choose to do special\n // traversal here based on pass\n var passTraversal = renderPass.getTraverseOperation();\n var fn = publicAPI[passTraversal];\n\n if (fn) {\n fn(renderPass);\n return;\n } // default traversal\n\n\n publicAPI.apply(renderPass, true);\n\n for (var index = 0; index < model.children.length; index++) {\n model.children[index].traverse(renderPass);\n }\n\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.apply = function (renderPass, prepass) {\n var customRenderPass = publicAPI[renderPass.getOperation()];\n\n if (customRenderPass) {\n customRenderPass(prepass, renderPass);\n }\n };\n\n publicAPI.getViewNodeFor = function (dataObject) {\n if (model.renderable === dataObject) {\n return publicAPI;\n }\n\n for (var index = 0; index < model.children.length; ++index) {\n var child = model.children[index];\n var vn = child.getViewNodeFor(dataObject);\n\n if (vn) {\n return vn;\n }\n }\n\n return undefined;\n };\n\n publicAPI.getFirstAncestorOfType = function (type) {\n if (!model._parent) {\n return null;\n }\n\n if (model._parent.isA(type)) {\n return model._parent;\n }\n\n return model._parent.getFirstAncestorOfType(type);\n }; // add a missing node/child for the passed in renderables. This should\n // be called only in between prepareNodes and removeUnusedNodes\n\n\n publicAPI.addMissingNode = function (dobj) {\n if (!dobj) {\n return;\n }\n\n var result = model._renderableChildMap.get(dobj); // if found just mark as visited\n\n\n if (result !== undefined) {\n result.setVisited(true);\n } else {\n // otherwise create a node\n var newNode = publicAPI.createViewNode(dobj);\n\n if (newNode) {\n newNode.setParent(publicAPI);\n newNode.setVisited(true);\n\n model._renderableChildMap.set(dobj, newNode);\n\n model.children.push(newNode);\n }\n }\n }; // add missing nodes/children for the passed in renderables. This should\n // be called only in between prepareNodes and removeUnusedNodes\n\n\n publicAPI.addMissingNodes = function (dataObjs) {\n if (!dataObjs || !dataObjs.length) {\n return;\n }\n\n for (var index = 0; index < dataObjs.length; ++index) {\n var dobj = dataObjs[index];\n\n var result = model._renderableChildMap.get(dobj); // if found just mark as visited\n\n\n if (result !== undefined) {\n result.setVisited(true);\n } else {\n // otherwise create a node\n var newNode = publicAPI.createViewNode(dobj);\n\n if (newNode) {\n newNode.setParent(publicAPI);\n newNode.setVisited(true);\n\n model._renderableChildMap.set(dobj, newNode);\n\n model.children.push(newNode);\n }\n }\n }\n }; // ability to add children that have no renderable use in the same manner\n // as addMissingNodes This case is when a normal viewnode wants to\n // delegate passes to a helper or child that doeasn't map to a clear\n // renderable or any renderable\n\n\n publicAPI.addMissingChildren = function (children) {\n if (!children || !children.length) {\n return;\n }\n\n for (var index = 0; index < children.length; ++index) {\n var child = children[index];\n var cindex = model.children.indexOf(child);\n\n if (cindex === -1) {\n child.setParent(publicAPI);\n model.children.push(child);\n }\n\n child.setVisited(true);\n }\n };\n\n publicAPI.prepareNodes = function () {\n for (var index = 0; index < model.children.length; ++index) {\n model.children[index].setVisited(false);\n }\n };\n\n publicAPI.setVisited = function (val) {\n model.visited = val;\n };\n\n publicAPI.removeUnusedNodes = function () {\n var deleted = null;\n\n for (var index = 0; index < model.children.length; ++index) {\n var child = model.children[index];\n var visited = child.getVisited();\n\n if (!visited) {\n var renderable = child.getRenderable();\n\n if (renderable) {\n model._renderableChildMap.delete(renderable);\n }\n\n if (!deleted) {\n deleted = [];\n }\n\n deleted.push(child);\n child.delete();\n } else {\n child.setVisited(false);\n }\n }\n\n if (deleted) {\n // slow does alloc but not as common\n model.children = model.children.filter(function (el) {\n return !deleted.includes(el);\n });\n }\n };\n\n publicAPI.createViewNode = function (dataObj) {\n if (!model.myFactory) {\n vtkErrorMacro('Cannot create view nodes without my own factory');\n return null;\n }\n\n var ret = model.myFactory.createNode(dataObj);\n\n if (ret) {\n ret.setRenderable(dataObj);\n }\n\n return ret;\n };\n\n var parentDelete = publicAPI.delete;\n\n publicAPI.delete = function () {\n for (var i = 0; i < model.children.length; i++) {\n model.children[i].delete();\n }\n\n parentDelete();\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n // _parent: null,\n renderable: null,\n myFactory: null,\n children: [],\n visited: false\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Build VTK API\n\n macro.obj(publicAPI, model);\n macro.event(publicAPI, model, 'event');\n model._renderableChildMap = new Map();\n macro.get(publicAPI, model, ['visited']);\n macro.setGet(publicAPI, model, ['_parent', 'renderable', 'myFactory']);\n macro.getArray(publicAPI, model, ['children']);\n macro.moveToProtected(publicAPI, model, ['parent']); // Object methods\n\n vtkViewNode(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\n\nvar newInstance = macro.newInstance(extend, 'vtkViewNode'); // ----------------------------------------------------------------------------\n\nvar vtkViewNode$1 = {\n newInstance: newInstance,\n extend: extend,\n PASS_TYPES: PASS_TYPES\n};\n\nexport { vtkViewNode$1 as default };\n","import macro from '../../macros.js';\n\n// vtkViewNodeFactory methods\n// ----------------------------------------------------------------------------\n\nfunction vtkViewNodeFactory(publicAPI, model) {\n // Make sure our overrides is just for our instance not shared with everyone...\n if (!model.overrides) {\n model.overrides = {};\n } // Set our className\n\n\n model.classHierarchy.push('vtkViewNodeFactory');\n\n publicAPI.createNode = function (dataObject) {\n if (dataObject.isDeleted()) {\n return null;\n }\n\n var cpt = 0;\n var className = dataObject.getClassName(cpt++);\n var isObject = false;\n var keys = Object.keys(model.overrides);\n\n while (className && !isObject) {\n if (keys.indexOf(className) !== -1) {\n isObject = true;\n } else {\n className = dataObject.getClassName(cpt++);\n }\n }\n\n if (!isObject) {\n return null;\n }\n\n var vn = model.overrides[className]();\n vn.setMyFactory(publicAPI);\n return vn;\n };\n\n publicAPI.registerOverride = function (className, func) {\n model.overrides[className] = func;\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {// overrides: {},\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Build VTK API\n\n macro.obj(publicAPI, model); // Object methods\n\n vtkViewNodeFactory(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkViewNodeFactory'); // ----------------------------------------------------------------------------\n\nvar vtkViewNodeFactory$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { vtkViewNodeFactory$1 as default, extend, newInstance };\n","import macro from '../../macros.js';\nimport vtkViewNodeFactory$1 from '../SceneGraph/ViewNodeFactory.js';\n\nvar CLASS_MAPPING = Object.create(null);\nfunction registerOverride(className, fn) {\n CLASS_MAPPING[className] = fn;\n} // ----------------------------------------------------------------------------\n// vtkOpenGLViewNodeFactory methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLViewNodeFactory(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLViewNodeFactory');\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Static class mapping shared across instances\n\n model.overrides = CLASS_MAPPING; // Inheritance\n\n vtkViewNodeFactory$1.extend(publicAPI, model, initialValues); // Object methods\n\n vtkOpenGLViewNodeFactory(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkOpenGLViewNodeFactory'); // ----------------------------------------------------------------------------\n\nvar vtkViewNodeFactory = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { vtkViewNodeFactory as default, extend, newInstance, registerOverride };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport Constants from './Texture/Constants.js';\nimport HalfFloat from '../../Common/Core/HalfFloat.js';\nimport { newInstance as newInstance$1, obj, set, setGet, get, moveToProtected, newTypedArray, vtkDebugMacro as vtkDebugMacro$1, vtkErrorMacro as vtkErrorMacro$1, vtkWarningMacro as vtkWarningMacro$1 } from '../../macros.js';\nimport vtkDataArray from '../../Common/Core/DataArray.js';\nimport { Q as isPowerOfTwo, M as nearestPowerOfTwo } from '../../Common/Core/Math/index.js';\nimport vtkViewNode from '../SceneGraph/ViewNode.js';\nimport { registerOverride } from './ViewNodeFactory.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar Wrap = Constants.Wrap,\n Filter = Constants.Filter;\nvar VtkDataTypes = vtkDataArray.VtkDataTypes;\nvar vtkDebugMacro = vtkDebugMacro$1,\n vtkErrorMacro = vtkErrorMacro$1,\n vtkWarningMacro = vtkWarningMacro$1;\nvar toHalf = HalfFloat.toHalf; // ----------------------------------------------------------------------------\n// vtkOpenGLTexture methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLTexture(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLTexture'); // Renders myself\n\n publicAPI.render = function () {\n var renWin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n if (renWin) {\n model._openGLRenderWindow = renWin;\n } else {\n model._openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer'); // sync renderable properties\n\n model._openGLRenderWindow = model._openGLRenderer.getParent();\n }\n\n model.context = model._openGLRenderWindow.getContext();\n\n if (model.renderable.getInterpolate()) {\n if (model.generateMipmap) {\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n } else {\n publicAPI.setMinificationFilter(Filter.LINEAR);\n }\n\n publicAPI.setMagnificationFilter(Filter.LINEAR);\n } else {\n publicAPI.setMinificationFilter(Filter.NEAREST);\n publicAPI.setMagnificationFilter(Filter.NEAREST);\n }\n\n if (model.renderable.getRepeat()) {\n publicAPI.setWrapR(Wrap.REPEAT);\n publicAPI.setWrapS(Wrap.REPEAT);\n publicAPI.setWrapT(Wrap.REPEAT);\n } // clear image if input data is set\n\n\n if (model.renderable.getInputData()) {\n model.renderable.setImage(null);\n } // create the texture if it is not done already\n\n\n if (!model.handle || model.renderable.getMTime() > model.textureBuildTime.getMTime()) {\n // if we have an Image\n if (model.renderable.getImage() !== null) {\n if (model.renderable.getInterpolate()) {\n model.generateMipmap = true;\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n } // Have an Image which may not be complete\n\n\n if (model.renderable.getImage() && model.renderable.getImageLoaded()) {\n publicAPI.create2DFromImage(model.renderable.getImage());\n publicAPI.activate();\n publicAPI.sendParameters();\n model.textureBuildTime.modified();\n }\n } // if we have a canvas\n\n\n if (model.renderable.getCanvas() !== null) {\n if (model.renderable.getInterpolate()) {\n model.generateMipmap = true;\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n }\n\n var canvas = model.renderable.getCanvas();\n publicAPI.create2DFromRaw(canvas.width, canvas.height, 4, VtkDataTypes.UNSIGNED_CHAR, canvas, true);\n publicAPI.activate();\n publicAPI.sendParameters();\n model.textureBuildTime.modified();\n } // if we have jsImageData\n\n\n if (model.renderable.getJsImageData() !== null) {\n var jsid = model.renderable.getJsImageData();\n\n if (model.renderable.getInterpolate()) {\n model.generateMipmap = true;\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n }\n\n publicAPI.create2DFromRaw(jsid.width, jsid.height, 4, VtkDataTypes.UNSIGNED_CHAR, jsid.data, true);\n publicAPI.activate();\n publicAPI.sendParameters();\n model.textureBuildTime.modified();\n } // if we have InputData\n\n\n var input = model.renderable.getInputData(0);\n\n if (input && input.getPointData().getScalars()) {\n var ext = input.getExtent();\n var inScalars = input.getPointData().getScalars(); // do we have a cube map? Six inputs\n\n var data = [];\n\n for (var i = 0; i < model.renderable.getNumberOfInputPorts(); ++i) {\n var indata = model.renderable.getInputData(i);\n var scalars = indata ? indata.getPointData().getScalars().getData() : null;\n\n if (scalars) {\n data.push(scalars);\n }\n }\n\n if (model.renderable.getInterpolate() && inScalars.getNumberOfComponents() === 4) {\n model.generateMipmap = true;\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n }\n\n if (data.length % 6 === 0) {\n publicAPI.createCubeFromRaw(ext[1] - ext[0] + 1, ext[3] - ext[2] + 1, inScalars.getNumberOfComponents(), inScalars.getDataType(), data);\n } else {\n publicAPI.create2DFromRaw(ext[1] - ext[0] + 1, ext[3] - ext[2] + 1, inScalars.getNumberOfComponents(), inScalars.getDataType(), inScalars.getData());\n }\n\n publicAPI.activate();\n publicAPI.sendParameters();\n model.textureBuildTime.modified();\n }\n }\n\n if (model.handle) {\n publicAPI.activate();\n }\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.destroyTexture = function () {\n // deactivate it first\n publicAPI.deactivate();\n\n if (model.context && model.handle) {\n model.context.deleteTexture(model.handle);\n }\n\n model.handle = 0;\n model.numberOfDimensions = 0;\n model.target = 0;\n model.components = 0;\n model.width = 0;\n model.height = 0;\n model.depth = 0;\n publicAPI.resetFormatAndType();\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.createTexture = function () {\n // reuse the existing handle if we have one\n if (!model.handle) {\n model.handle = model.context.createTexture();\n\n if (model.target) {\n model.context.bindTexture(model.target, model.handle); // See: http://www.openmodel.context..org/wiki/Common_Mistakes#Creating_a_complete_texture\n // turn off mip map filter or set the base and max level correctly. here\n // both are done.\n\n model.context.texParameteri(model.target, model.context.TEXTURE_MIN_FILTER, publicAPI.getOpenGLFilterMode(model.minificationFilter));\n model.context.texParameteri(model.target, model.context.TEXTURE_MAG_FILTER, publicAPI.getOpenGLFilterMode(model.magnificationFilter));\n model.context.texParameteri(model.target, model.context.TEXTURE_WRAP_S, publicAPI.getOpenGLWrapMode(model.wrapS));\n model.context.texParameteri(model.target, model.context.TEXTURE_WRAP_T, publicAPI.getOpenGLWrapMode(model.wrapT));\n\n if (model._openGLRenderWindow.getWebgl2()) {\n model.context.texParameteri(model.target, model.context.TEXTURE_WRAP_R, publicAPI.getOpenGLWrapMode(model.wrapR));\n }\n\n model.context.bindTexture(model.target, null);\n }\n }\n }; //---------------------------------------------------------------------------\n\n\n publicAPI.getTextureUnit = function () {\n if (model._openGLRenderWindow) {\n return model._openGLRenderWindow.getTextureUnitForTexture(publicAPI);\n }\n\n return -1;\n }; //---------------------------------------------------------------------------\n\n\n publicAPI.activate = function () {\n // activate a free texture unit for this texture\n model._openGLRenderWindow.activateTexture(publicAPI);\n\n publicAPI.bind();\n }; //---------------------------------------------------------------------------\n\n\n publicAPI.deactivate = function () {\n if (model._openGLRenderWindow) {\n model._openGLRenderWindow.deactivateTexture(publicAPI);\n }\n }; //---------------------------------------------------------------------------\n\n\n publicAPI.releaseGraphicsResources = function (rwin) {\n if (rwin && model.handle) {\n rwin.activateTexture(publicAPI);\n rwin.deactivateTexture(publicAPI);\n model.context.deleteTexture(model.handle);\n model.handle = 0;\n model.numberOfDimensions = 0;\n model.target = 0;\n model.internalFormat = 0;\n model.format = 0;\n model.openGLDataType = 0;\n model.components = 0;\n model.width = 0;\n model.height = 0;\n model.depth = 0;\n }\n\n if (model.shaderProgram) {\n model.shaderProgram.releaseGraphicsResources(rwin);\n model.shaderProgram = null;\n }\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.bind = function () {\n model.context.bindTexture(model.target, model.handle);\n\n if (model.autoParameters && publicAPI.getMTime() > model.sendParametersTime.getMTime()) {\n publicAPI.sendParameters();\n }\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.isBound = function () {\n var result = false;\n\n if (model.context && model.handle) {\n var target = 0;\n\n switch (model.target) {\n case model.context.TEXTURE_2D:\n target = model.context.TEXTURE_BINDING_2D;\n break;\n\n default:\n vtkWarningMacro('impossible case');\n break;\n }\n\n var oid = model.context.getIntegerv(target);\n result = oid === model.handle;\n }\n\n return result;\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.sendParameters = function () {\n model.context.texParameteri(model.target, model.context.TEXTURE_WRAP_S, publicAPI.getOpenGLWrapMode(model.wrapS));\n model.context.texParameteri(model.target, model.context.TEXTURE_WRAP_T, publicAPI.getOpenGLWrapMode(model.wrapT));\n\n if (model._openGLRenderWindow.getWebgl2()) {\n model.context.texParameteri(model.target, model.context.TEXTURE_WRAP_R, publicAPI.getOpenGLWrapMode(model.wrapR));\n }\n\n model.context.texParameteri(model.target, model.context.TEXTURE_MIN_FILTER, publicAPI.getOpenGLFilterMode(model.minificationFilter));\n model.context.texParameteri(model.target, model.context.TEXTURE_MAG_FILTER, publicAPI.getOpenGLFilterMode(model.magnificationFilter));\n\n if (model._openGLRenderWindow.getWebgl2()) {\n model.context.texParameteri(model.target, model.context.TEXTURE_BASE_LEVEL, model.baseLevel);\n model.context.texParameteri(model.target, model.context.TEXTURE_MAX_LEVEL, model.maxLevel);\n } // model.context.texParameterf(model.target, model.context.TEXTURE_MIN_LOD, model.minLOD);\n // model.context.texParameterf(model.target, model.context.TEXTURE_MAX_LOD, model.maxLOD);\n\n\n model.sendParametersTime.modified();\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getInternalFormat = function (vtktype, numComps) {\n if (!model._forceInternalFormat) {\n model.internalFormat = publicAPI.getDefaultInternalFormat(vtktype, numComps);\n }\n\n if (!model.internalFormat) {\n vtkDebugMacro(\"Unable to find suitable internal format for T=\".concat(vtktype, \" NC= \").concat(numComps));\n }\n\n return model.internalFormat;\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getDefaultInternalFormat = function (vtktype, numComps) {\n var result = 0; // try default next\n\n result = model._openGLRenderWindow.getDefaultTextureInternalFormat(vtktype, numComps, model.oglNorm16Ext, model.useHalfFloat);\n\n if (result) {\n return result;\n }\n\n if (!result) {\n vtkDebugMacro('Unsupported internal texture type!');\n vtkDebugMacro(\"Unable to find suitable internal format for T=\".concat(vtktype, \" NC= \").concat(numComps));\n }\n\n return result;\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.setInternalFormat = function (iFormat) {\n model._forceInternalFormat = true;\n\n if (iFormat !== model.internalFormat) {\n model.internalFormat = iFormat;\n publicAPI.modified();\n }\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getFormat = function (vtktype, numComps) {\n model.format = publicAPI.getDefaultFormat(vtktype, numComps);\n return model.format;\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getDefaultFormat = function (vtktype, numComps) {\n if (model._openGLRenderWindow.getWebgl2()) {\n switch (numComps) {\n case 1:\n return model.context.RED;\n\n case 2:\n return model.context.RG;\n\n case 3:\n return model.context.RGB;\n\n case 4:\n return model.context.RGBA;\n\n default:\n return model.context.RGB;\n }\n } else {\n // webgl1\n switch (numComps) {\n case 1:\n return model.context.LUMINANCE;\n\n case 2:\n return model.context.LUMINANCE_ALPHA;\n\n case 3:\n return model.context.RGB;\n\n case 4:\n return model.context.RGBA;\n\n default:\n return model.context.RGB;\n }\n }\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.resetFormatAndType = function () {\n model.format = 0;\n model.internalFormat = 0;\n model._forceInternalFormat = false;\n model.openGLDataType = 0;\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getDefaultDataType = function (vtkScalarType) {\n // DON'T DEAL with VTK_CHAR as this is platform dependent.\n if (model._openGLRenderWindow.getWebgl2()) {\n switch (vtkScalarType) {\n // case VtkDataTypes.SIGNED_CHAR:\n // return model.context.BYTE;\n case VtkDataTypes.UNSIGNED_CHAR:\n return model.context.UNSIGNED_BYTE;\n // prefer norm16 since that is accurate compared to\n // half float which is not\n\n case model.oglNorm16Ext && !model.useHalfFloat && VtkDataTypes.SHORT:\n return model.context.SHORT;\n\n case model.oglNorm16Ext && !model.useHalfFloat && VtkDataTypes.UNSIGNED_SHORT:\n return model.context.UNSIGNED_SHORT;\n // use half float type\n\n case model.useHalfFloat && VtkDataTypes.SHORT:\n return model.context.HALF_FLOAT;\n\n case model.useHalfFloat && VtkDataTypes.UNSIGNED_SHORT:\n return model.context.HALF_FLOAT;\n // case VtkDataTypes.INT:\n // return model.context.INT;\n // case VtkDataTypes.UNSIGNED_INT:\n // return model.context.UNSIGNED_INT;\n\n case VtkDataTypes.FLOAT:\n case VtkDataTypes.VOID: // used for depth component textures.\n\n default:\n return model.context.FLOAT;\n }\n }\n\n switch (vtkScalarType) {\n // case VtkDataTypes.SIGNED_CHAR:\n // return model.context.BYTE;\n case VtkDataTypes.UNSIGNED_CHAR:\n return model.context.UNSIGNED_BYTE;\n // case VtkDataTypes.SHORT:\n // return model.context.SHORT;\n // case VtkDataTypes.UNSIGNED_SHORT:\n // return model.context.UNSIGNED_SHORT;\n // case VtkDataTypes.INT:\n // return model.context.INT;\n // case VtkDataTypes.UNSIGNED_INT:\n // return model.context.UNSIGNED_INT;\n\n case VtkDataTypes.FLOAT:\n case VtkDataTypes.VOID: // used for depth component textures.\n\n default:\n if (model.context.getExtension('OES_texture_float') && model.context.getExtension('OES_texture_float_linear')) {\n return model.context.FLOAT;\n }\n\n {\n var halfFloat = model.context.getExtension('OES_texture_half_float');\n\n if (halfFloat && model.context.getExtension('OES_texture_half_float_linear')) {\n return halfFloat.HALF_FLOAT_OES;\n }\n }\n return model.context.UNSIGNED_BYTE;\n }\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getOpenGLDataType = function (vtkScalarType) {\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!model.openGLDataType || forceUpdate) {\n model.openGLDataType = publicAPI.getDefaultDataType(vtkScalarType);\n }\n\n return model.openGLDataType;\n };\n\n publicAPI.getShiftAndScale = function () {\n var shift = 0.0;\n var scale = 1.0; // for all float type internal formats\n\n switch (model.openGLDataType) {\n case model.context.BYTE:\n scale = 127.5;\n shift = scale - 128.0;\n break;\n\n case model.context.UNSIGNED_BYTE:\n scale = 255.0;\n shift = 0.0;\n break;\n\n case model.context.SHORT:\n scale = 32767.5;\n shift = scale - 32768.0;\n break;\n\n case model.context.UNSIGNED_SHORT:\n scale = 65536.0;\n shift = 0.0;\n break;\n\n case model.context.INT:\n scale = 2147483647.5;\n shift = scale - 2147483648.0;\n break;\n\n case model.context.UNSIGNED_INT:\n scale = 4294967295.0;\n shift = 0.0;\n break;\n\n case model.context.FLOAT:\n }\n\n return {\n shift: shift,\n scale: scale\n };\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getOpenGLFilterMode = function (emode) {\n switch (emode) {\n case Filter.NEAREST:\n return model.context.NEAREST;\n\n case Filter.LINEAR:\n return model.context.LINEAR;\n\n case Filter.NEAREST_MIPMAP_NEAREST:\n return model.context.NEAREST_MIPMAP_NEAREST;\n\n case Filter.NEAREST_MIPMAP_LINEAR:\n return model.context.NEAREST_MIPMAP_LINEAR;\n\n case Filter.LINEAR_MIPMAP_NEAREST:\n return model.context.LINEAR_MIPMAP_NEAREST;\n\n case Filter.LINEAR_MIPMAP_LINEAR:\n return model.context.LINEAR_MIPMAP_LINEAR;\n\n default:\n return model.context.NEAREST;\n }\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getOpenGLWrapMode = function (vtktype) {\n switch (vtktype) {\n case Wrap.CLAMP_TO_EDGE:\n return model.context.CLAMP_TO_EDGE;\n\n case Wrap.REPEAT:\n return model.context.REPEAT;\n\n case Wrap.MIRRORED_REPEAT:\n return model.context.MIRRORED_REPEAT;\n\n default:\n return model.context.CLAMP_TO_EDGE;\n }\n }; //----------------------------------------------------------------------------\n\n\n function updateArrayDataType(dataType, data) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var pixData = [];\n var pixCount = model.width * model.height * model.components;\n\n if (depth) {\n pixCount *= model.depth;\n } // if the opengl data type is float\n // then the data array must be float\n\n\n if (dataType !== VtkDataTypes.FLOAT && model.openGLDataType === model.context.FLOAT) {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx]) {\n var dataArrayToCopy = data[idx].length > pixCount ? data[idx].subarray(0, pixCount) : data[idx];\n pixData.push(new Float32Array(dataArrayToCopy));\n } else {\n pixData.push(null);\n }\n }\n } // if the opengl data type is ubyte\n // then the data array must be u8, we currently simply truncate the data\n\n\n if (dataType !== VtkDataTypes.UNSIGNED_CHAR && model.openGLDataType === model.context.UNSIGNED_BYTE) {\n for (var _idx = 0; _idx < data.length; _idx++) {\n if (data[_idx]) {\n var _dataArrayToCopy = data[_idx].length > pixCount ? data[_idx].subarray(0, pixCount) : data[_idx];\n\n pixData.push(new Uint8Array(_dataArrayToCopy));\n } else {\n pixData.push(null);\n }\n }\n } // if the opengl data type is half float\n // then the data array must be u16\n\n\n var halfFloat = false;\n\n if (model._openGLRenderWindow.getWebgl2()) {\n halfFloat = model.openGLDataType === model.context.HALF_FLOAT;\n } else {\n var halfFloatExt = model.context.getExtension('OES_texture_half_float');\n halfFloat = halfFloatExt && model.openGLDataType === halfFloatExt.HALF_FLOAT_OES;\n }\n\n if (halfFloat) {\n for (var _idx2 = 0; _idx2 < data.length; _idx2++) {\n if (data[_idx2]) {\n var newArray = new Uint16Array(pixCount);\n var src = data[_idx2];\n\n for (var i = 0; i < pixCount; i++) {\n newArray[i] = toHalf(src[i]);\n }\n\n pixData.push(newArray);\n } else {\n pixData.push(null);\n }\n }\n } // The output has to be filled\n\n\n if (pixData.length === 0) {\n for (var _i = 0; _i < data.length; _i++) {\n pixData.push(data[_i]);\n }\n }\n\n return pixData;\n } //----------------------------------------------------------------------------\n\n\n function scaleTextureToHighestPowerOfTwo(data) {\n if (model._openGLRenderWindow.getWebgl2()) {\n // No need if webGL2\n return data;\n }\n\n var pixData = [];\n var width = model.width;\n var height = model.height;\n var numComps = model.components;\n\n if (data && (!isPowerOfTwo(width) || !isPowerOfTwo(height))) {\n // Scale up the texture to the next highest power of two dimensions.\n var halfFloat = model.context.getExtension('OES_texture_half_float');\n var newWidth = nearestPowerOfTwo(width);\n var newHeight = nearestPowerOfTwo(height);\n var pixCount = newWidth * newHeight * model.components;\n\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx] !== null) {\n var newArray = null;\n var jFactor = height / newHeight;\n var iFactor = width / newWidth;\n var usingHalf = false;\n\n if (model.openGLDataType === model.context.FLOAT) {\n newArray = new Float32Array(pixCount);\n } else if (halfFloat && model.openGLDataType === halfFloat.HALF_FLOAT_OES) {\n newArray = new Uint16Array(pixCount);\n usingHalf = true;\n } else {\n newArray = new Uint8Array(pixCount);\n }\n\n for (var j = 0; j < newHeight; j++) {\n var joff = j * newWidth * numComps;\n var jidx = j * jFactor;\n var jlow = Math.floor(jidx);\n var jhi = Math.ceil(jidx);\n\n if (jhi >= height) {\n jhi = height - 1;\n }\n\n var jmix = jidx - jlow;\n var jmix1 = 1.0 - jmix;\n jlow = jlow * width * numComps;\n jhi = jhi * width * numComps;\n\n for (var i = 0; i < newWidth; i++) {\n var ioff = i * numComps;\n var iidx = i * iFactor;\n var ilow = Math.floor(iidx);\n var ihi = Math.ceil(iidx);\n\n if (ihi >= width) {\n ihi = width - 1;\n }\n\n var imix = iidx - ilow;\n ilow *= numComps;\n ihi *= numComps;\n\n for (var c = 0; c < numComps; c++) {\n if (usingHalf) {\n newArray[joff + ioff + c] = HalfFloat.toHalf(HalfFloat.fromHalf(data[idx][jlow + ilow + c]) * jmix1 * (1.0 - imix) + HalfFloat.fromHalf(data[idx][jlow + ihi + c]) * jmix1 * imix + HalfFloat.fromHalf(data[idx][jhi + ilow + c]) * jmix * (1.0 - imix) + HalfFloat.fromHalf(data[idx][jhi + ihi + c]) * jmix * imix);\n } else {\n newArray[joff + ioff + c] = data[idx][jlow + ilow + c] * jmix1 * (1.0 - imix) + data[idx][jlow + ihi + c] * jmix1 * imix + data[idx][jhi + ilow + c] * jmix * (1.0 - imix) + data[idx][jhi + ihi + c] * jmix * imix;\n }\n }\n }\n }\n\n pixData.push(newArray);\n model.width = newWidth;\n model.height = newHeight;\n } else {\n pixData.push(null);\n }\n }\n } // The output has to be filled\n\n\n if (pixData.length === 0) {\n for (var _i2 = 0; _i2 < data.length; _i2++) {\n pixData.push(data[_i2]);\n }\n }\n\n return pixData;\n } //----------------------------------------------------------------------------\n\n\n function useTexStorage(dataType) {\n if (model._openGLRenderWindow) {\n var _model$renderable;\n\n if (model.resizable || (_model$renderable = model.renderable) !== null && _model$renderable !== void 0 && _model$renderable.getResizable()) {\n // Cannot use texStorage if the texture is supposed to be resizable.\n return false;\n }\n\n if (model._openGLRenderWindow.getWebgl2()) {\n var webGLInfo = model._openGLRenderWindow.getGLInformations();\n\n if (webGLInfo.RENDERER.value.match(/WebKit/gi) && navigator.platform.match(/Mac/gi) && model.oglNorm16Ext && (dataType === VtkDataTypes.UNSIGNED_SHORT || dataType === VtkDataTypes.SHORT)) {\n // Cannot use texStorage with EXT_texture_norm16 textures on Mac M1 GPU.\n // No errors reported but the texture is unusable.\n return false;\n } // Use texStorage for WebGL2\n\n\n return true;\n }\n\n return false;\n }\n\n return false;\n } //----------------------------------------------------------------------------\n\n\n publicAPI.create2DFromRaw = function (width, height, numComps, dataType, data) {\n var flip = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType, true);\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n\n model._openGLRenderWindow.activateTexture(publicAPI);\n\n publicAPI.createTexture();\n publicAPI.bind(); // Create an array of texture with one texture\n\n var dataArray = [data];\n var pixData = updateArrayDataType(dataType, dataArray);\n var scaledData = scaleTextureToHighestPowerOfTwo(pixData); // Source texture data from the PBO.\n\n model.context.pixelStorei(model.context.UNPACK_FLIP_Y_WEBGL, flip);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n if (useTexStorage(dataType)) {\n model.context.texStorage2D(model.target, 1, model.internalFormat, model.width, model.height);\n\n if (scaledData[0] != null) {\n model.context.texSubImage2D(model.target, 0, 0, 0, model.width, model.height, model.format, model.openGLDataType, scaledData[0]);\n }\n } else {\n model.context.texImage2D(model.target, 0, model.internalFormat, model.width, model.height, 0, model.format, model.openGLDataType, scaledData[0]);\n }\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n } // always reset the flip\n\n\n if (flip) {\n model.context.pixelStorei(model.context.UNPACK_FLIP_Y_WEBGL, false);\n }\n\n publicAPI.deactivate();\n return true;\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.createCubeFromRaw = function (width, height, numComps, dataType, data) {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_CUBE_MAP;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n\n model._openGLRenderWindow.activateTexture(publicAPI);\n\n model.maxLevel = data.length / 6 - 1;\n publicAPI.createTexture();\n publicAPI.bind();\n var pixData = updateArrayDataType(dataType, data);\n var scaledData = scaleTextureToHighestPowerOfTwo(pixData); // invert the data because opengl is messed up with cube maps\n // and uses the old renderman standard with Y going down\n // even though it is completely at odds with OpenGL standards\n\n var invertedData = [];\n var widthLevel = model.width;\n var heightLevel = model.height;\n\n for (var i = 0; i < scaledData.length; i++) {\n if (i % 6 === 0 && i !== 0) {\n widthLevel /= 2;\n heightLevel /= 2;\n }\n\n invertedData[i] = newTypedArray(dataType, heightLevel * widthLevel * model.components);\n\n for (var y = 0; y < heightLevel; ++y) {\n var row1 = y * widthLevel * model.components;\n var row2 = (heightLevel - y - 1) * widthLevel * model.components;\n invertedData[i].set(scaledData[i].slice(row2, row2 + widthLevel * model.components), row1);\n }\n } // Source texture data from the PBO.\n\n\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n if (useTexStorage(dataType)) {\n model.context.texStorage2D(model.target, 6, model.internalFormat, model.width, model.height);\n } // We get the 6 images\n\n\n for (var _i3 = 0; _i3 < 6; _i3++) {\n // For each mipmap level\n var j = 0;\n var w = model.width;\n var h = model.height;\n\n while (w >= 1 && h >= 1) {\n // In webgl 1, all levels need to be defined. So if the latest level size is\n // 8x8, we have to add 3 more null textures (4x4, 2x2, 1x1)\n // In webgl 2, the attribute maxLevel will be use.\n var tempData = null;\n\n if (j <= model.maxLevel) {\n tempData = invertedData[6 * j + _i3];\n }\n\n if (useTexStorage(dataType)) {\n if (tempData != null) {\n model.context.texSubImage2D(model.context.TEXTURE_CUBE_MAP_POSITIVE_X + _i3, j, 0, 0, w, h, model.format, model.openGLDataType, tempData);\n }\n } else {\n model.context.texImage2D(model.context.TEXTURE_CUBE_MAP_POSITIVE_X + _i3, j, model.internalFormat, w, h, 0, model.format, model.openGLDataType, tempData);\n }\n\n j++;\n w /= 2;\n h /= 2;\n }\n } // generateMipmap must not be called here because we manually upload all levels\n // if it is called, all levels will be overwritten\n\n\n publicAPI.deactivate();\n return true;\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.createDepthFromRaw = function (width, height, dataType, data) {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n model.format = model.context.DEPTH_COMPONENT;\n\n if (model._openGLRenderWindow.getWebgl2()) {\n if (dataType === VtkDataTypes.FLOAT) {\n model.internalFormat = model.context.DEPTH_COMPONENT32F;\n } else {\n model.internalFormat = model.context.DEPTH_COMPONENT16;\n }\n } else {\n model.internalFormat = model.context.DEPTH_COMPONENT;\n }\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = 1;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n\n model._openGLRenderWindow.activateTexture(publicAPI);\n\n publicAPI.createTexture();\n publicAPI.bind(); // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n if (useTexStorage(dataType)) {\n model.context.texStorage2D(model.target, 1, model.internalFormat, model.width, model.height);\n\n if (data != null) {\n model.context.texSubImage2D(model.target, 0, 0, 0, model.width, model.height, model.format, model.openGLDataType, data);\n }\n } else {\n model.context.texImage2D(model.target, 0, model.internalFormat, model.width, model.height, 0, model.format, model.openGLDataType, data);\n }\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.create2DFromImage = function (image) {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(VtkDataTypes.UNSIGNED_CHAR);\n publicAPI.getInternalFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n publicAPI.getFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = 4;\n model.depth = 1;\n model.numberOfDimensions = 2;\n\n model._openGLRenderWindow.activateTexture(publicAPI);\n\n publicAPI.createTexture();\n publicAPI.bind(); // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1); // Scale up the texture to the next highest power of two dimensions (if needed) and flip y.\n\n var needNearestPowerOfTwo = !model._openGLRenderWindow.getWebgl2() && (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height));\n var canvas = document.createElement('canvas');\n canvas.width = needNearestPowerOfTwo ? nearestPowerOfTwo(image.width) : image.width;\n canvas.height = needNearestPowerOfTwo ? nearestPowerOfTwo(image.height) : image.height;\n model.width = canvas.width;\n model.height = canvas.height;\n var ctx = canvas.getContext('2d');\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height);\n var safeImage = canvas;\n\n if (useTexStorage(VtkDataTypes.UNSIGNED_CHAR)) {\n model.context.texStorage2D(model.target, 1, model.internalFormat, model.width, model.height);\n\n if (safeImage != null) {\n model.context.texSubImage2D(model.target, 0, 0, 0, model.width, model.height, model.format, model.openGLDataType, safeImage);\n }\n } else {\n model.context.texImage2D(model.target, 0, model.internalFormat, model.width, model.height, 0, model.format, model.openGLDataType, safeImage);\n }\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n }; // Compute scale and offset per component from min and max per component\n\n\n function computeScaleOffsets(min, max, numComps) {\n var offset = new Array(numComps);\n var scale = new Array(numComps);\n\n for (var c = 0; c < numComps; ++c) {\n offset[c] = min[c];\n scale[c] = max[c] - min[c] || 1.0;\n }\n\n return {\n scale: scale,\n offset: offset\n };\n } // HalfFloat only represents numbers between [-2048, 2048] exactly accurate,\n // for numbers outside of this range there is a precision limitation\n\n\n function hasExactHalfFloat(offset, scale) {\n // Per Component\n for (var c = 0; c < offset.length; c++) {\n var min = offset[c];\n var max = scale[c] + min;\n\n if (min < -2048 || min > 2048 || max < -2048 || max > 2048) {\n return false;\n }\n }\n\n return true;\n }\n\n function setUseHalfFloat(dataType, offset, scale, preferSizeOverAccuracy) {\n publicAPI.getOpenGLDataType(dataType);\n var useHalfFloat = false;\n\n if (model._openGLRenderWindow.getWebgl2()) {\n useHalfFloat = model.openGLDataType === model.context.HALF_FLOAT;\n } else {\n var halfFloatExt = model.context.getExtension('OES_texture_half_float');\n useHalfFloat = halfFloatExt && model.openGLDataType === halfFloatExt.HALF_FLOAT_OES;\n } // Don't consider halfFloat and convert back to Float when the range of data does not generate an accurate halfFloat\n // AND it is not preferable to have a smaller texture than an exact texture.\n\n\n var isHalfFloat = useHalfFloat && (hasExactHalfFloat(offset, scale) || preferSizeOverAccuracy);\n model.useHalfFloat = isHalfFloat;\n }\n\n function processDataArray(dataArray, preferSizeOverAccuracy) {\n var numComps = dataArray.getNumberOfComponents();\n var dataType = dataArray.getDataType();\n var data = dataArray.getData(); // Compute min max from array\n // Using the vtkDataArray.getRange() enables caching\n\n var minArray = new Array(numComps);\n var maxArray = new Array(numComps);\n\n for (var c = 0; c < numComps; ++c) {\n var _dataArray$getRange = dataArray.getRange(c),\n _dataArray$getRange2 = _slicedToArray(_dataArray$getRange, 2),\n min = _dataArray$getRange2[0],\n max = _dataArray$getRange2[1];\n\n minArray[c] = min;\n maxArray[c] = max;\n }\n\n var scaleOffsets = computeScaleOffsets(minArray, maxArray, numComps); // preferSizeOverAccuracy will override norm16 due to bug with norm16 implementation\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1408247\n\n setUseHalfFloat(dataType, scaleOffsets.offset, scaleOffsets.scale, preferSizeOverAccuracy); // since our default is to use half float, in case that we can't use it\n // we need to use another type\n\n if (!model.useHalfFloat) {\n publicAPI.getOpenGLDataType(dataType, true);\n }\n\n return {\n numComps: numComps,\n dataType: dataType,\n data: data,\n scaleOffsets: scaleOffsets\n };\n }\n\n publicAPI.create2DFilterableFromRaw = function (width, height, numberOfComponents, dataType, values) {\n var preferSizeOverAccuracy = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n return publicAPI.create2DFilterableFromDataArray(width, height, vtkDataArray.newInstance({\n numberOfComponents: numberOfComponents,\n dataType: dataType,\n values: values\n }), preferSizeOverAccuracy);\n };\n\n publicAPI.create2DFilterableFromDataArray = function (width, height, dataArray) {\n var preferSizeOverAccuracy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var _processDataArray = processDataArray(dataArray, preferSizeOverAccuracy),\n numComps = _processDataArray.numComps,\n dataType = _processDataArray.dataType,\n data = _processDataArray.data;\n\n publicAPI.create2DFromRaw(width, height, numComps, dataType, data);\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.create3DFromRaw = function (width, height, depth, numComps, dataType, data) {\n // Permit OpenGLDataType to be half float, if applicable, for 3D\n publicAPI.getOpenGLDataType(dataType); // Now determine the texture parameters using the arguments.\n\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_3D;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = depth;\n model.numberOfDimensions = 3;\n\n model._openGLRenderWindow.activateTexture(publicAPI);\n\n publicAPI.createTexture();\n publicAPI.bind(); // Create an array of texture with one texture\n\n var dataArray = [data];\n var is3DArray = true;\n var pixData = updateArrayDataType(dataType, dataArray, is3DArray);\n var scaledData = scaleTextureToHighestPowerOfTwo(pixData); // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1); // openGLDataType\n\n if (useTexStorage(dataType)) {\n model.context.texStorage3D(model.target, 1, model.internalFormat, model.width, model.height, model.depth);\n\n if (scaledData[0] != null) {\n model.context.texSubImage3D(model.target, 0, 0, 0, 0, model.width, model.height, model.depth, model.format, model.openGLDataType, scaledData[0]);\n }\n } else {\n model.context.texImage3D(model.target, 0, model.internalFormat, model.width, model.height, model.depth, 0, model.format, model.openGLDataType, scaledData[0]);\n }\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n }; //----------------------------------------------------------------------------\n // This method simulates a 3D texture using 2D\n // Prefer create3DFilterableFromDataArray to enable caching of min and max values\n\n\n publicAPI.create3DFilterableFromRaw = function (width, height, depth, numberOfComponents, dataType, values) {\n var preferSizeOverAccuracy = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n return publicAPI.create3DFilterableFromDataArray(width, height, depth, vtkDataArray.newInstance({\n numberOfComponents: numberOfComponents,\n dataType: dataType,\n values: values\n }), preferSizeOverAccuracy);\n }; //----------------------------------------------------------------------------\n // This method create a 3D texture from dimensions and a DataArray\n\n\n publicAPI.create3DFilterableFromDataArray = function (width, height, depth, dataArray) {\n var preferSizeOverAccuracy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var _processDataArray2 = processDataArray(dataArray, preferSizeOverAccuracy),\n numComps = _processDataArray2.numComps,\n dataType = _processDataArray2.dataType,\n data = _processDataArray2.data,\n scaleOffsets = _processDataArray2.scaleOffsets;\n\n var numPixelsIn = width * height * depth;\n var offset = [];\n var scale = [];\n\n for (var c = 0; c < numComps; ++c) {\n offset[c] = 0.0;\n scale[c] = 1.0;\n } // store the information, we will need it later\n // offset and scale are the offset and scale required to get\n // the texture value back to data values ala\n // data = texture * scale + offset\n // and texture = (data - offset)/scale\n\n\n model.volumeInfo = {\n scale: scale,\n offset: offset,\n dataComputedScale: scaleOffsets.scale,\n dataComputedOffset: scaleOffsets.offset,\n width: width,\n height: height,\n depth: depth\n }; // Create a copy of scale and offset to avoid aliasing issues\n // Original is read only, copy is read/write\n // Use the copy as volumeInfo.scale and volumeInfo.offset\n\n var scaleOffsetsCopy = structuredClone(scaleOffsets); // WebGL2 path, we have 3d textures etc\n\n if (model._openGLRenderWindow.getWebgl2()) {\n if (model.oglNorm16Ext && !model.useHalfFloat && dataType === VtkDataTypes.SHORT) {\n for (var _c = 0; _c < numComps; ++_c) {\n model.volumeInfo.scale[_c] = 32767.0;\n }\n\n return publicAPI.create3DFromRaw(width, height, depth, numComps, dataType, data);\n }\n\n if (model.oglNorm16Ext && !model.useHalfFloat && dataType === VtkDataTypes.UNSIGNED_SHORT) {\n for (var _c2 = 0; _c2 < numComps; ++_c2) {\n model.volumeInfo.scale[_c2] = 65535.0;\n }\n\n return publicAPI.create3DFromRaw(width, height, depth, numComps, dataType, data);\n }\n\n if (dataType === VtkDataTypes.FLOAT || model.useHalfFloat && (dataType === VtkDataTypes.SHORT || dataType === VtkDataTypes.UNSIGNED_SHORT)) {\n return publicAPI.create3DFromRaw(width, height, depth, numComps, dataType, data);\n }\n\n if (dataType === VtkDataTypes.UNSIGNED_CHAR) {\n for (var _c3 = 0; _c3 < numComps; ++_c3) {\n model.volumeInfo.scale[_c3] = 255.0;\n }\n\n return publicAPI.create3DFromRaw(width, height, depth, numComps, dataType, data);\n } // otherwise convert to float\n\n\n var _newArray = new Float32Array(numPixelsIn * numComps); // use computed scale and offset\n\n\n model.volumeInfo.offset = scaleOffsetsCopy.offset;\n model.volumeInfo.scale = scaleOffsetsCopy.scale;\n var count = 0;\n var scaleInverse = scaleOffsetsCopy.scale.map(function (s) {\n return 1 / s;\n });\n\n for (var i = 0; i < numPixelsIn; i++) {\n for (var nc = 0; nc < numComps; nc++) {\n _newArray[count] = (data[count] - scaleOffsetsCopy.offset[nc]) * scaleInverse[nc];\n count++;\n }\n }\n\n return publicAPI.create3DFromRaw(width, height, depth, numComps, VtkDataTypes.FLOAT, _newArray);\n } // not webgl2, deal with webgl1, no 3d textures\n // and maybe no float textures\n\n\n var volCopyData = function volCopyData(outArray, outIdx, inValue, smin, smax) {\n outArray[outIdx] = inValue;\n };\n\n var dataTypeToUse = VtkDataTypes.UNSIGNED_CHAR; // unsigned char gets used as is\n\n if (dataType === VtkDataTypes.UNSIGNED_CHAR) {\n for (var _c4 = 0; _c4 < numComps; ++_c4) {\n scaleOffsetsCopy.offset[_c4] = 0.0;\n scaleOffsetsCopy.scale[_c4] = 255.0;\n }\n } else if (model.context.getExtension('OES_texture_float') && model.context.getExtension('OES_texture_float_linear')) {\n // use float textures scaled to 0.0 to 1.0\n dataTypeToUse = VtkDataTypes.FLOAT;\n\n volCopyData = function volCopyData(outArray, outIdx, inValue, soffset, sscale) {\n outArray[outIdx] = (inValue - soffset) / sscale;\n };\n } else {\n // worst case, scale data to uchar\n dataTypeToUse = VtkDataTypes.UNSIGNED_CHAR;\n\n volCopyData = function volCopyData(outArray, outIdx, inValue, soffset, sscale) {\n outArray[outIdx] = 255.0 * (inValue - soffset) / sscale;\n };\n } // Now determine the texture parameters using the arguments.\n\n\n publicAPI.getOpenGLDataType(dataTypeToUse);\n publicAPI.getInternalFormat(dataTypeToUse, numComps);\n publicAPI.getFormat(dataTypeToUse, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n } // have to pack this 3D texture into pot 2D texture\n\n\n model.target = model.context.TEXTURE_2D;\n model.components = numComps;\n model.depth = 1;\n model.numberOfDimensions = 2; // MAX_TEXTURE_SIZE gives the max dimensions that can be supported by the GPU,\n // but it doesn't mean it will fit in memory. If we have to use a float data type\n // or 4 components, there are good chances that the texture size will blow up\n // and could not fit in the GPU memory. Use a smaller texture size in that case,\n // which will force a downsampling of the dataset.\n // That problem does not occur when using webGL2 since we can pack the data in\n // denser textures based on our data type.\n // TODO: try to fit in the biggest supported texture, catch the gl error if it\n // does not fix (OUT_OF_MEMORY), then attempt with smaller texture\n\n var maxTexDim = model.context.getParameter(model.context.MAX_TEXTURE_SIZE);\n\n if (maxTexDim > 4096 && (dataTypeToUse === VtkDataTypes.FLOAT || numComps >= 3)) {\n maxTexDim = 4096;\n } // compute estimate for XY subsample\n\n\n var xstride = 1;\n var ystride = 1;\n\n if (numPixelsIn > maxTexDim * maxTexDim) {\n xstride = Math.ceil(Math.sqrt(numPixelsIn / (maxTexDim * maxTexDim)));\n ystride = xstride;\n }\n\n var targetWidth = Math.sqrt(numPixelsIn) / xstride;\n targetWidth = nearestPowerOfTwo(targetWidth); // determine X reps\n\n var xreps = Math.floor(targetWidth * xstride / width);\n var yreps = Math.ceil(depth / xreps);\n var targetHeight = nearestPowerOfTwo(height * yreps / ystride);\n model.width = targetWidth;\n model.height = targetHeight;\n\n model._openGLRenderWindow.activateTexture(publicAPI);\n\n publicAPI.createTexture();\n publicAPI.bind(); // store the information, we will need it later\n\n model.volumeInfo.xreps = xreps;\n model.volumeInfo.yreps = yreps;\n model.volumeInfo.xstride = xstride;\n model.volumeInfo.ystride = ystride;\n model.volumeInfo.offset = scaleOffsetsCopy.offset;\n model.volumeInfo.scale = scaleOffsetsCopy.scale; // OK stuff the data into the 2d TEXTURE\n // first allocate the new texture\n\n var newArray;\n var pixCount = targetWidth * targetHeight * numComps;\n\n if (dataTypeToUse === VtkDataTypes.FLOAT) {\n newArray = new Float32Array(pixCount);\n } else {\n newArray = new Uint8Array(pixCount);\n } // then stuff the data into it, nothing fancy right now\n // for stride\n\n\n var outIdx = 0;\n var tileWidth = Math.floor(width / xstride);\n var tileHeight = Math.floor(height / ystride);\n\n for (var yRep = 0; yRep < yreps; yRep++) {\n var xrepsThisRow = Math.min(xreps, depth - yRep * xreps);\n var outXContIncr = numComps * (model.width - xrepsThisRow * Math.floor(width / xstride));\n\n for (var tileY = 0; tileY < tileHeight; tileY++) {\n for (var xRep = 0; xRep < xrepsThisRow; xRep++) {\n var inOffset = numComps * ((yRep * xreps + xRep) * width * height + ystride * tileY * width);\n\n for (var tileX = 0; tileX < tileWidth; tileX++) {\n // copy value\n for (var _nc = 0; _nc < numComps; _nc++) {\n volCopyData(newArray, outIdx, data[inOffset + xstride * tileX * numComps + _nc], scaleOffsetsCopy.offset[_nc], scaleOffsetsCopy.scale[_nc]);\n outIdx++;\n }\n }\n }\n\n outIdx += outXContIncr;\n }\n } // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n\n\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n if (useTexStorage(dataTypeToUse)) {\n model.context.texStorage2D(model.target, 1, model.internalFormat, model.width, model.height);\n\n if (newArray != null) {\n model.context.texSubImage2D(model.target, 0, 0, 0, model.width, model.height, model.format, model.openGLDataType, newArray);\n }\n } else {\n model.context.texImage2D(model.target, 0, model.internalFormat, model.width, model.height, 0, model.format, model.openGLDataType, newArray);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n publicAPI.setOpenGLRenderWindow = function (rw) {\n if (model._openGLRenderWindow === rw) {\n return;\n }\n\n publicAPI.releaseGraphicsResources();\n model._openGLRenderWindow = rw;\n model.context = null;\n\n if (rw) {\n model.context = model._openGLRenderWindow.getContext();\n }\n }; //----------------------------------------------------------------------------\n\n\n publicAPI.getMaximumTextureSize = function (ctx) {\n if (ctx && ctx.isCurrent()) {\n return ctx.getIntegerv(ctx.MAX_TEXTURE_SIZE);\n }\n\n return -1;\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n _openGLRenderWindow: null,\n _forceInternalFormat: false,\n context: null,\n handle: 0,\n sendParametersTime: null,\n textureBuildTime: null,\n numberOfDimensions: 0,\n target: 0,\n format: 0,\n openGLDataType: 0,\n components: 0,\n width: 0,\n height: 0,\n depth: 0,\n autoParameters: true,\n wrapS: Wrap.CLAMP_TO_EDGE,\n wrapT: Wrap.CLAMP_TO_EDGE,\n wrapR: Wrap.CLAMP_TO_EDGE,\n minificationFilter: Filter.NEAREST,\n magnificationFilter: Filter.NEAREST,\n minLOD: -1000.0,\n maxLOD: 1000.0,\n baseLevel: 0,\n maxLevel: 1000,\n generateMipmap: false,\n // use half float by default, but it will get set\n // to false if the context does not support it or\n // the voxel intensity range is out of the accurate\n // range of half float\n useHalfFloat: true,\n oglNorm16Ext: null\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Inheritance\n\n vtkViewNode.extend(publicAPI, model, initialValues);\n model.sendParametersTime = {};\n obj(model.sendParametersTime, {\n mtime: 0\n });\n model.textureBuildTime = {};\n obj(model.textureBuildTime, {\n mtime: 0\n }); // Build VTK API\n\n set(publicAPI, model, ['format', 'openGLDataType']);\n setGet(publicAPI, model, ['keyMatrixTime', 'minificationFilter', 'magnificationFilter', 'wrapS', 'wrapT', 'wrapR', 'generateMipmap', 'oglNorm16Ext']);\n get(publicAPI, model, ['width', 'height', 'volumeInfo', 'components', 'handle', 'target']);\n moveToProtected(publicAPI, model, ['openGLRenderWindow']); // Object methods\n\n vtkOpenGLTexture(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = newInstance$1(extend, 'vtkOpenGLTexture'); // ----------------------------------------------------------------------------\n\nvar vtkOpenGLTexture$1 = _objectSpread({\n newInstance: newInstance,\n extend: extend\n}, Constants); // Register ourself to OpenGL backend if imported\n\nregisterOverride('vtkTexture', newInstance);\n\nexport { vtkOpenGLTexture$1 as default, extend, newInstance };\n","import macro from '../../macros.js';\nimport vtkDataArray from './DataArray.js';\nimport { VtkDataTypes } from './DataArray/Constants.js';\n\nvar vtkErrorMacro = macro.vtkErrorMacro;\nvar INVALID_BOUNDS = [1, -1, 1, -1, 1, -1]; // ----------------------------------------------------------------------------\n// vtkPoints methods\n// ----------------------------------------------------------------------------\n\nfunction vtkPoints(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPoints'); // Forwarding methods\n\n publicAPI.getNumberOfPoints = publicAPI.getNumberOfTuples;\n\n publicAPI.setNumberOfPoints = function (nbPoints) {\n var dimension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;\n\n if (publicAPI.getNumberOfPoints() !== nbPoints) {\n model.size = nbPoints * dimension;\n model.values = macro.newTypedArray(model.dataType, model.size);\n publicAPI.setNumberOfComponents(dimension);\n publicAPI.modified();\n }\n };\n\n publicAPI.setPoint = function (idx) {\n for (var _len = arguments.length, xyz = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n xyz[_key - 1] = arguments[_key];\n }\n\n publicAPI.setTuple(idx, xyz);\n };\n\n publicAPI.getPoint = publicAPI.getTuple;\n\n publicAPI.insertNextPoint = function (x, y, z) {\n return publicAPI.insertNextTuple([x, y, z]);\n };\n\n publicAPI.getBounds = function () {\n if (publicAPI.getNumberOfComponents() === 3) {\n var _xRange = publicAPI.getRange(0);\n\n model.bounds[0] = _xRange[0];\n model.bounds[1] = _xRange[1];\n\n var _yRange = publicAPI.getRange(1);\n\n model.bounds[2] = _yRange[0];\n model.bounds[3] = _yRange[1];\n var zRange = publicAPI.getRange(2);\n model.bounds[4] = zRange[0];\n model.bounds[5] = zRange[1];\n return model.bounds;\n }\n\n if (publicAPI.getNumberOfComponents() !== 2) {\n vtkErrorMacro(\"getBounds called on an array with components of\\n \".concat(publicAPI.getNumberOfComponents()));\n return INVALID_BOUNDS;\n }\n\n var xRange = publicAPI.getRange(0);\n model.bounds[0] = xRange[0];\n model.bounds[1] = xRange[1];\n var yRange = publicAPI.getRange(1);\n model.bounds[2] = yRange[0];\n model.bounds[3] = yRange[1];\n model.bounds[4] = 0;\n model.bounds[5] = 0;\n return model.bounds;\n }; // Trigger the computation of bounds\n\n\n publicAPI.computeBounds = publicAPI.getBounds; // Initialize\n\n publicAPI.setNumberOfComponents(model.numberOfComponents < 2 ? 3 : model.numberOfComponents);\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n empty: true,\n numberOfComponents: 3,\n dataType: VtkDataTypes.FLOAT,\n bounds: [1, -1, 1, -1, 1, -1]\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues);\n vtkDataArray.extend(publicAPI, model, initialValues);\n vtkPoints(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkPoints'); // ----------------------------------------------------------------------------\n\nvar vtkPoints$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { vtkPoints$1 as default, extend, newInstance };\n","import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport macro from '../../macros.js';\nimport vtkDataArray from './DataArray.js';\nimport { VtkDataTypes } from './DataArray/Constants.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction extractCellSizes(cellArray) {\n var currentIdx = 0;\n return cellArray.filter(function (value, index) {\n if (index === currentIdx) {\n currentIdx += value + 1;\n return true;\n }\n\n return false;\n });\n}\n\nfunction getNumberOfCells(cellArray) {\n var cellId = 0;\n\n for (var cellArrayIndex = 0; cellArrayIndex < cellArray.length;) {\n cellArrayIndex += cellArray[cellArrayIndex] + 1;\n cellId++;\n }\n\n return cellId;\n} // ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\n\nvar STATIC = {\n extractCellSizes: extractCellSizes,\n getNumberOfCells: getNumberOfCells\n}; // ----------------------------------------------------------------------------\n// vtkCellArray methods\n// ----------------------------------------------------------------------------\n\nfunction vtkCellArray(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkCellArray');\n\n var superClass = _objectSpread({}, publicAPI);\n\n publicAPI.getNumberOfCells = function (recompute) {\n if (model.numberOfCells !== undefined && !recompute) {\n return model.numberOfCells;\n }\n\n if (model.cellSizes) {\n model.numberOfCells = model.cellSizes.length;\n } else {\n model.numberOfCells = getNumberOfCells(publicAPI.getData());\n }\n\n return model.numberOfCells;\n };\n\n publicAPI.getCellSizes = function (recompute) {\n if (model.cellSizes !== undefined && !recompute) {\n return model.cellSizes;\n }\n\n model.cellSizes = extractCellSizes(publicAPI.getData());\n return model.cellSizes;\n };\n /**\n * When `resize()` is being used, you then MUST use `insertNextCell()`.\n */\n\n\n publicAPI.resize = function (requestedNumTuples) {\n var oldNumTuples = publicAPI.getNumberOfTuples();\n superClass.resize(requestedNumTuples);\n var newNumTuples = publicAPI.getNumberOfTuples();\n\n if (newNumTuples < oldNumTuples) {\n if (newNumTuples === 0) {\n model.numberOfCells = 0;\n model.cellSizes = [];\n } else {\n // We do not know how many cells are left.\n // Set to undefined to ensure insertNextCell works correctly.\n model.numberOfCells = undefined;\n model.cellSizes = undefined;\n }\n }\n };\n\n publicAPI.setData = function (typedArray) {\n superClass.setData(typedArray, 1);\n model.numberOfCells = undefined;\n model.cellSizes = undefined;\n };\n\n publicAPI.getCell = function (loc) {\n var cellLoc = loc;\n var numberOfPoints = model.values[cellLoc++];\n return model.values.subarray(cellLoc, cellLoc + numberOfPoints);\n };\n\n publicAPI.insertNextCell = function (cellPointIds) {\n var cellId = publicAPI.getNumberOfCells();\n publicAPI.insertNextTuples([cellPointIds.length].concat(_toConsumableArray(cellPointIds))); // By computing the number of cells earlier, we made sure that numberOfCells is defined\n\n ++model.numberOfCells;\n\n if (model.cellSizes != null) {\n model.cellSizes.push(cellPointIds.length);\n }\n\n return cellId;\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nfunction defaultValues(initialValues) {\n return _objectSpread({\n empty: true,\n numberOfComponents: 1,\n dataType: VtkDataTypes.UNSIGNED_INT\n }, initialValues);\n} // ----------------------------------------------------------------------------\n\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n vtkDataArray.extend(publicAPI, model, defaultValues(initialValues));\n vtkCellArray(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkCellArray'); // ----------------------------------------------------------------------------\n\nvar vtkCellArray$1 = _objectSpread({\n newInstance: newInstance,\n extend: extend\n}, STATIC);\n\nexport { STATIC, vtkCellArray$1 as default, extend, newInstance };\n","import macro from '../../macros.js';\nimport { u as uninitializeBounds } from '../Core/Math/index.js';\nimport vtkPoints from '../Core/Points.js';\n\n// vtkCell methods\n// ----------------------------------------------------------------------------\n\nfunction vtkCell(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkCell');\n\n publicAPI.initialize = function (points) {\n var pointIdsList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!pointIdsList) {\n model.points = points;\n model.pointsIds = new Array(points.getNumberOfPoints());\n\n for (var i = points.getNumberOfPoints() - 1; i >= 0; --i) {\n model.pointsIds[i] = i;\n }\n } else {\n model.pointsIds = pointIdsList;\n var triangleData = model.points.getData();\n\n if (triangleData.length !== 3 * model.pointsIds.length) {\n triangleData = macro.newTypedArray(points.getDataType(), 3 * model.pointsIds.length);\n }\n\n var pointsData = points.getData();\n model.pointsIds.forEach(function (pointId, index) {\n // const start = 3 * pointId;\n // pointsData.set(p.subarray(start, start + 3), 3 * index);\n var pointOffset = 3 * pointId;\n var trianglePointOffset = 3 * index;\n triangleData[trianglePointOffset] = pointsData[pointOffset];\n triangleData[++trianglePointOffset] = pointsData[++pointOffset];\n triangleData[++trianglePointOffset] = pointsData[++pointOffset];\n });\n model.points.setData(triangleData);\n }\n };\n\n publicAPI.getBounds = function () {\n var nbPoints = model.points.getNumberOfPoints();\n var x = [];\n\n if (nbPoints) {\n model.points.getPoint(0, x);\n model.bounds[0] = x[0];\n model.bounds[1] = x[0];\n model.bounds[2] = x[1];\n model.bounds[3] = x[1];\n model.bounds[4] = x[2];\n model.bounds[5] = x[2];\n\n for (var i = 1; i < nbPoints; i++) {\n model.points.getPoint(i, x);\n model.bounds[0] = x[0] < model.bounds[0] ? x[0] : model.bounds[0];\n model.bounds[1] = x[0] > model.bounds[1] ? x[0] : model.bounds[1];\n model.bounds[2] = x[1] < model.bounds[2] ? x[1] : model.bounds[2];\n model.bounds[3] = x[1] > model.bounds[3] ? x[1] : model.bounds[3];\n model.bounds[4] = x[2] < model.bounds[4] ? x[2] : model.bounds[4];\n model.bounds[5] = x[2] > model.bounds[5] ? x[2] : model.bounds[5];\n }\n } else {\n uninitializeBounds(model.bounds);\n }\n\n return model.bounds;\n };\n\n publicAPI.getLength2 = function () {\n publicAPI.getBounds();\n var length = 0.0;\n var diff = 0;\n\n for (var i = 0; i < 3; i++) {\n diff = model.bounds[2 * i + 1] - model.bounds[2 * i];\n length += diff * diff;\n }\n\n return length;\n };\n\n publicAPI.getParametricDistance = function (pcoords) {\n var pDist;\n var pDistMax = 0.0;\n\n for (var i = 0; i < 3; i++) {\n if (pcoords[i] < 0.0) {\n pDist = -pcoords[i];\n } else if (pcoords[i] > 1.0) {\n pDist = pcoords[i] - 1.0;\n } else {\n // inside the cell in the parametric direction\n pDist = 0.0;\n }\n\n if (pDist > pDistMax) {\n pDistMax = pDist;\n }\n }\n\n return pDistMax;\n };\n\n publicAPI.getNumberOfPoints = function () {\n return model.points.getNumberOfPoints();\n };\n\n publicAPI.deepCopy = function (cell) {\n cell.initialize(model.points, model.pointsIds);\n };\n\n publicAPI.getCellDimension = function () {}; // virtual\n\n\n publicAPI.intersectWithLine = function (p1, p2, tol, t, x, pcoords, subId) {}; // virtual\n\n\n publicAPI.evaluatePosition = function (x, closestPoint, subId, pcoords, dist2, weights) {\n macro.vtkErrorMacro('vtkCell.evaluatePosition is not implemented.');\n }; // virtual\n\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n bounds: [-1, -1, -1, -1, -1, -1],\n pointsIds: []\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues);\n macro.obj(publicAPI, model);\n\n if (!model.points) {\n model.points = vtkPoints.newInstance();\n }\n\n macro.get(publicAPI, model, ['points', 'pointsIds']);\n vtkCell(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkCell'); // ----------------------------------------------------------------------------\n\nvar vtkCell$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { vtkCell$1 as default, extend, newInstance };\n","import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport macro from '../../macros.js';\nimport vtkCell from './Cell.js';\n\n// Global methods\n// ----------------------------------------------------------------------------\n\nvar InitLink = {\n ncells: 0,\n cells: null\n};\n\nfunction resize(model, sz) {\n var newSize = sz;\n\n if (sz >= model.array.length) {\n newSize += model.array.length;\n }\n\n while (newSize > model.array.length) {\n model.array.push({\n ncells: 0,\n cells: null\n });\n }\n\n model.array.length = newSize;\n} // ----------------------------------------------------------------------------\n// vtkCellLinks methods\n// ----------------------------------------------------------------------------\n\n\nfunction vtkCellLinks(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkCellLinks');\n /**\n * Build the link list array. All subclasses of vtkAbstractCellLinks\n * must support this method.\n */\n\n publicAPI.buildLinks = function (data) {\n var numPts = data.getPoints().getNumberOfPoints();\n var numCells = data.getNumberOfCells(); // fill out lists with number of references to cells\n\n var linkLoc = new Uint32Array(numPts); // Use fast path if polydata\n\n if (data.isA('vtkPolyData')) {\n // traverse data to determine number of uses of each point\n for (var cellId = 0; cellId < numCells; ++cellId) {\n var _data$getCellPoints = data.getCellPoints(cellId),\n cellPointIds = _data$getCellPoints.cellPointIds;\n\n cellPointIds.forEach(function (cellPointId) {\n publicAPI.incrementLinkCount(cellPointId);\n });\n } // now allocate storage for the links\n\n\n publicAPI.allocateLinks(numPts);\n model.maxId = numPts - 1;\n\n var _loop = function _loop(_cellId) {\n var _data$getCellPoints2 = data.getCellPoints(_cellId),\n cellPointIds = _data$getCellPoints2.cellPointIds;\n\n cellPointIds.forEach(function (cellPointId) {\n publicAPI.insertCellReference(cellPointId, linkLoc[cellPointId]++, _cellId);\n });\n };\n\n for (var _cellId = 0; _cellId < numCells; ++_cellId) {\n _loop(_cellId);\n }\n } // any other type of dataset\n else {\n // traverse data to determine number of uses of each point\n for (var _cellId2 = 0; _cellId2 < numCells; _cellId2++) {\n // TODO: Currently not supported: const cell = data.getCell(cellId);\n var cell = vtkCell.newInstance();\n cell.getPointsIds().forEach(function (cellPointId) {\n publicAPI.incrementLinkCount(cellPointId);\n });\n } // now allocate storage for the links\n\n\n publicAPI.allocateLinks(numPts);\n model.maxId = numPts - 1;\n\n var _loop2 = function _loop2(_cellId3) {\n // TODO: Currently not supported: const cell = data.getCell(cellId);\n var cell = vtkCell.newInstance();\n cell.getPointsIds().forEach(function (cellPointId) {\n publicAPI.insertCellReference(cellPointId, linkLoc[cellPointId]++, _cellId3);\n });\n };\n\n for (var _cellId3 = 0; _cellId3 < numCells; ++_cellId3) {\n _loop2(_cellId3);\n }\n } // end else\n\n };\n /**\n * Build the link list array with a provided connectivity array.\n */\n // publicAPI.buildLinks = (data, connectivity) => {};\n\n /**\n * Allocate the specified number of links (i.e., number of points) that\n * will be built.\n */\n\n\n publicAPI.allocate = function (numLinks) {\n var ext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n model.array = Array(numLinks).fill().map(function () {\n return {\n ncells: 0,\n cells: null\n };\n });\n model.extend = ext;\n model.maxId = -1;\n };\n\n publicAPI.initialize = function () {\n model.array = null;\n };\n /**\n * Get a link structure given a point id.\n */\n\n\n publicAPI.getLink = function (ptId) {\n return model.array[ptId];\n };\n /**\n * Get the number of cells using the point specified by ptId.\n */\n\n\n publicAPI.getNcells = function (ptId) {\n return model.array[ptId].ncells;\n };\n /**\n * Return a list of cell ids using the point.\n */\n\n\n publicAPI.getCells = function (ptId) {\n return model.array[ptId].cells;\n };\n /**\n * Insert a new point into the cell-links data structure. The size parameter\n * is the initial size of the list.\n */\n\n\n publicAPI.insertNextPoint = function (numLinks) {\n model.array.push({\n ncells: numLinks,\n cells: Array(numLinks)\n });\n ++model.maxId;\n };\n /**\n * Insert a cell id into the list of cells (at the end) using the cell id\n * provided. (Make sure to extend the link list (if necessary) using the\n * method resizeCellList().)\n */\n\n\n publicAPI.insertNextCellReference = function (ptId, cellId) {\n model.array[ptId].cells[model.array[ptId].ncells++] = cellId;\n };\n /**\n * Delete point (and storage) by destroying links to using cells.\n */\n\n\n publicAPI.deletePoint = function (ptId) {\n model.array[ptId].ncells = 0;\n model.array[ptId].cells = null;\n };\n /**\n * Delete the reference to the cell (cellId) from the point (ptId). This\n * removes the reference to the cellId from the cell list, but does not\n * resize the list (recover memory with resizeCellList(), if necessary).\n */\n\n\n publicAPI.removeCellReference = function (cellId, ptId) {\n model.array[ptId].cells = model.array[ptId].cells.filter(function (cell) {\n return cell !== cellId;\n });\n model.array[ptId].ncells = model.array[ptId].cells.length;\n };\n /**\n * Add the reference to the cell (cellId) from the point (ptId). This\n * adds a reference to the cellId from the cell list, but does not resize\n * the list (extend memory with resizeCellList(), if necessary).\n */\n\n\n publicAPI.addCellReference = function (cellId, ptId) {\n model.array[ptId].cells[model.array[ptId].ncells++] = cellId;\n };\n /**\n * Change the length of a point's link list (i.e., list of cells using a\n * point) by the size specified.\n */\n\n\n publicAPI.resizeCellList = function (ptId, size) {\n model.array[ptId].cells.length = size;\n };\n /**\n * Reclaim any unused memory.\n */\n\n\n publicAPI.squeeze = function () {\n resize(model, model.maxId + 1);\n };\n /**\n * Reset to a state of no entries without freeing the memory.\n */\n\n\n publicAPI.reset = function () {\n model.maxId = -1;\n };\n /**\n * Standard DeepCopy method. Since this object contains no reference\n * to other objects, there is no ShallowCopy.\n */\n\n\n publicAPI.deepCopy = function (src) {\n model.array = _toConsumableArray(src.array);\n model.extend = src.extend;\n model.maxId = src.maxId;\n };\n /**\n * Increment the count of the number of cells using the point.\n */\n\n\n publicAPI.incrementLinkCount = function (ptId) {\n ++model.array[ptId].ncells;\n };\n\n publicAPI.allocateLinks = function (n) {\n for (var i = 0; i < n; ++i) {\n model.array[i].cells = new Array(model.array[i].ncells);\n }\n };\n /**\n * Insert a cell id into the list of cells using the point.\n */\n\n\n publicAPI.insertCellReference = function (ptId, pos, cellId) {\n model.array[ptId].cells[pos] = cellId;\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n array: null,\n // pointer to data\n maxId: 0,\n // maximum index inserted thus far\n extend: 0 // grow array by this point\n\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues);\n macro.obj(publicAPI, model);\n vtkCellLinks(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkCellLinks'); // ----------------------------------------------------------------------------\n\nvar vtkCellLinks$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { InitLink, vtkCellLinks$1 as default, extend, newInstance };\n","var CellType = {\n // Linear cells\n VTK_EMPTY_CELL: 0,\n VTK_VERTEX: 1,\n VTK_POLY_VERTEX: 2,\n VTK_LINE: 3,\n VTK_POLY_LINE: 4,\n VTK_TRIANGLE: 5,\n VTK_TRIANGLE_STRIP: 6,\n VTK_POLYGON: 7,\n VTK_PIXEL: 8,\n VTK_QUAD: 9,\n VTK_TETRA: 10,\n VTK_VOXEL: 11,\n VTK_HEXAHEDRON: 12,\n VTK_WEDGE: 13,\n VTK_PYRAMID: 14,\n VTK_PENTAGONAL_PRISM: 15,\n VTK_HEXAGONAL_PRISM: 16,\n // Quadratic, isoparametric cells\n VTK_QUADRATIC_EDGE: 21,\n VTK_QUADRATIC_TRIANGLE: 22,\n VTK_QUADRATIC_QUAD: 23,\n VTK_QUADRATIC_POLYGON: 36,\n VTK_QUADRATIC_TETRA: 24,\n VTK_QUADRATIC_HEXAHEDRON: 25,\n VTK_QUADRATIC_WEDGE: 26,\n VTK_QUADRATIC_PYRAMID: 27,\n VTK_BIQUADRATIC_QUAD: 28,\n VTK_TRIQUADRATIC_HEXAHEDRON: 29,\n VTK_QUADRATIC_LINEAR_QUAD: 30,\n VTK_QUADRATIC_LINEAR_WEDGE: 31,\n VTK_BIQUADRATIC_QUADRATIC_WEDGE: 32,\n VTK_BIQUADRATIC_QUADRATIC_HEXAHEDRON: 33,\n VTK_BIQUADRATIC_TRIANGLE: 34,\n // Cubic, isoparametric cell\n VTK_CUBIC_LINE: 35,\n // Special class of cells formed by convex group of points\n VTK_CONVEX_POINT_SET: 41,\n // Polyhedron cell (consisting of polygonal faces)\n VTK_POLYHEDRON: 42,\n // Higher order cells in parametric form\n VTK_PARAMETRIC_CURVE: 51,\n VTK_PARAMETRIC_SURFACE: 52,\n VTK_PARAMETRIC_TRI_SURFACE: 53,\n VTK_PARAMETRIC_QUAD_SURFACE: 54,\n VTK_PARAMETRIC_TETRA_REGION: 55,\n VTK_PARAMETRIC_HEX_REGION: 56,\n // Higher order cells\n VTK_HIGHER_ORDER_EDGE: 60,\n VTK_HIGHER_ORDER_TRIANGLE: 61,\n VTK_HIGHER_ORDER_QUAD: 62,\n VTK_HIGHER_ORDER_POLYGON: 63,\n VTK_HIGHER_ORDER_TETRAHEDRON: 64,\n VTK_HIGHER_ORDER_WEDGE: 65,\n VTK_HIGHER_ORDER_PYRAMID: 66,\n VTK_HIGHER_ORDER_HEXAHEDRON: 67,\n // Arbitrary order Lagrange elements (formulated separated from generic higher order cells)\n VTK_LAGRANGE_CURVE: 68,\n VTK_LAGRANGE_TRIANGLE: 69,\n VTK_LAGRANGE_QUADRILATERAL: 70,\n VTK_LAGRANGE_TETRAHEDRON: 71,\n VTK_LAGRANGE_HEXAHEDRON: 72,\n VTK_LAGRANGE_WEDGE: 73,\n VTK_LAGRANGE_PYRAMID: 74,\n VTK_NUMBER_OF_CELL_TYPES: 75\n}; // This list should contain the cell class names in\n// the same order as in CellType.\n\nvar CellTypesStrings = ['vtkEmptyCell', 'vtkVertex', 'vtkPolyVertex', 'vtkLine', 'vtkPolyLine', 'vtkTriangle', 'vtkTriangleStrip', 'vtkPolygon', 'vtkPixel', 'vtkQuad', 'vtkTetra', 'vtkVoxel', 'vtkHexahedron', 'vtkWedge', 'vtkPyramid', 'vtkPentagonalPrism', 'vtkHexagonalPrism', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'vtkQuadraticEdge', 'vtkQuadraticTriangle', 'vtkQuadraticQuad', 'vtkQuadraticTetra', 'vtkQuadraticHexahedron', 'vtkQuadraticWedge', 'vtkQuadraticPyramid', 'vtkBiQuadraticQuad', 'vtkTriQuadraticHexahedron', 'vtkQuadraticLinearQuad', 'vtkQuadraticLinearWedge', 'vtkBiQuadraticQuadraticWedge', 'vtkBiQuadraticQuadraticHexahedron', 'vtkBiQuadraticTriangle', 'vtkCubicLine', 'vtkQuadraticPolygon', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'vtkConvexPointSet', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'vtkParametricCurve', 'vtkParametricSurface', 'vtkParametricTriSurface', 'vtkParametricQuadSurface', 'vtkParametricTetraRegion', 'vtkParametricHexRegion', 'UnknownClass', 'UnknownClass', 'UnknownClass', 'vtkHigherOrderEdge', 'vtkHigherOrderTriangle', 'vtkHigherOrderQuad', 'vtkHigherOrderPolygon', 'vtkHigherOrderTetrahedron', 'vtkHigherOrderWedge', 'vtkHigherOrderPyramid', 'vtkHigherOrderHexahedron'];\nvar Constants = {\n CellType: CellType,\n CellTypesStrings: CellTypesStrings\n};\n\nexport { CellType, CellTypesStrings, Constants as default };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport macro from '../../macros.js';\nimport { CellTypesStrings, CellType } from './CellTypes/Constants.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n// Global methods\n// ----------------------------------------------------------------------------\n\n/**\n * Given an int (as defined in vtkCellType.h) identifier for a class\n * return it's classname.\n */\n\nfunction getClassNameFromTypeId(typeId) {\n return typeId < CellTypesStrings.length ? CellTypesStrings[typeId] : 'UnknownClass';\n}\n/**\n * Given a data object classname, return it's int identified (as\n * defined in vtkCellType.h)\n */\n\n\nfunction getTypeIdFromClassName(cellTypeString) {\n return CellTypesStrings.findIndex(cellTypeString);\n}\n/**\n * This convenience method is a fast check to determine if a cell type\n * represents a linear or nonlinear cell. This is generally much more\n * efficient than getting the appropriate vtkCell and checking its IsLinear\n * method.\n */\n\n\nfunction isLinear(type) {\n return type < CellType.VTK_QUADRATIC_EDGE || type === CellType.VTK_CONVEX_POINT_SET || type === CellType.VTK_POLYHEDRON;\n}\n\nfunction hasSubCells(cellType) {\n return cellType === CellType.VTK_TRIANGLE_STRIP || cellType === CellType.VTK_POLY_LINE || cellType === CellType.VTK_POLY_VERTEX;\n} // ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\n\nvar STATIC = {\n getClassNameFromTypeId: getClassNameFromTypeId,\n getTypeIdFromClassName: getTypeIdFromClassName,\n isLinear: isLinear,\n hasSubCells: hasSubCells\n}; // ----------------------------------------------------------------------------\n// vtkCellTypes methods\n// ----------------------------------------------------------------------------\n\nfunction vtkCellTypes(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkCellTypes');\n /**\n * Allocate memory for this array. Delete old storage only if necessary.\n */\n\n publicAPI.allocate = function () {\n var sz = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 512;\n var ext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n model.size = sz > 0 ? sz : 1;\n model.extend = ext > 0 ? ext : 1;\n model.maxId = -1;\n model.typeArray = new Uint8Array(sz);\n model.locationArray = new Uint32Array(sz);\n };\n /**\n * Add a cell at specified id.\n */\n\n\n publicAPI.insertCell = function (cellId, type, loc) {\n model.typeArray[cellId] = type;\n model.locationArray[cellId] = loc;\n\n if (cellId > model.maxId) {\n model.maxId = cellId;\n }\n };\n /**\n * Add a cell to the object in the next available slot.\n */\n\n\n publicAPI.insertNextCell = function (type, loc) {\n publicAPI.insertCell(++model.maxId, type, loc);\n return model.maxId;\n };\n /**\n * Specify a group of cell types. This version is provided to maintain\n * backwards compatibility and does a copy of the cellLocations\n */\n\n\n publicAPI.setCellTypes = function (ncells, cellTypes, cellLocations) {\n model.size = ncells;\n model.typeArray = cellTypes;\n model.locationArray = cellLocations;\n model.maxId = ncells - 1;\n };\n /**\n * Return the location of the cell in the associated vtkCellArray.\n */\n\n\n publicAPI.getCellLocation = function (cellId) {\n return model.locationArray[cellId];\n };\n /**\n * Delete cell by setting to nullptr cell type.\n */\n\n\n publicAPI.deleteCell = function (cellId) {\n model.typeArray[cellId] = CellType.VTK_EMPTY_CELL;\n };\n /**\n * Return the number of types in the list.\n */\n\n\n publicAPI.getNumberOfTypes = function () {\n return model.maxId + 1;\n };\n /**\n * Return true if type specified is contained in list; false otherwise.\n */\n\n\n publicAPI.isType = function (type) {\n var numTypes = publicAPI.getNumberOfTypes();\n\n for (var i = 0; i < numTypes; ++i) {\n if (type === publicAPI.getCellType(i)) {\n return true;\n }\n }\n\n return false;\n };\n /**\n * Add the type specified to the end of the list. Range checking is performed.\n */\n\n\n publicAPI.insertNextType = function (type) {\n return publicAPI.insertNextCell(type, -1);\n };\n /**\n * Return the type of cell.\n */\n\n\n publicAPI.getCellType = function (cellId) {\n return model.typeArray[cellId];\n };\n /**\n * Reclaim any extra memory.\n */\n // TODO: publicAPI.squeeze = () => {};\n\n /**\n * Initialize object without releasing memory.\n */\n\n\n publicAPI.reset = function () {\n model.maxId = -1;\n };\n /**\n * Standard DeepCopy method. Since this object contains no reference\n * to other objects, there is no ShallowCopy.\n */\n\n\n publicAPI.deepCopy = function (src) {\n publicAPI.allocate(src.getSize(), src.getExtend());\n model.typeArray.set(src.getTypeArray());\n model.locationArray.set(src.getLocationArray());\n model.maxId = src.getMaxId();\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n // typeArray: null, // pointer to types array\n // locationArray: null; // pointer to array of offsets\n size: 0,\n // allocated size of data\n maxId: -1,\n // maximum index inserted thus far\n extend: 1000 // grow array by this point\n\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues);\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, ['size', 'maxId', 'extend']);\n macro.getArray(publicAPI, model, ['typeArray', 'locationArray']);\n vtkCellTypes(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkCellTypes'); // ----------------------------------------------------------------------------\n\nvar vtkCellTypes$1 = _objectSpread({\n newInstance: newInstance,\n extend: extend\n}, STATIC);\n\nexport { STATIC, vtkCellTypes$1 as default, extend, newInstance };\n","var IntersectionState = {\n NO_INTERSECTION: 0,\n YES_INTERSECTION: 1,\n ON_LINE: 2\n};\nvar Constants = {\n IntersectionState: IntersectionState\n};\n\nexport { IntersectionState, Constants as default };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport macro from '../../macros.js';\nimport Constants from './Line/Constants.js';\nimport vtkCell from './Cell.js';\nimport { d as dot, e as distance2BetweenPoints, s as subtract, g as solveLinearSystem } from '../Core/Math/index.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar IntersectionState = Constants.IntersectionState; // ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction distanceToLine(x, p1, p2) {\n var closestPoint = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var outObj = {\n t: Number.MIN_VALUE,\n distance: 0\n };\n var p21 = [];\n var closest; // Determine appropriate vector\n\n p21[0] = p2[0] - p1[0];\n p21[1] = p2[1] - p1[1];\n p21[2] = p2[2] - p1[2]; // Get parametric location\n\n var num = p21[0] * (x[0] - p1[0]) + p21[1] * (x[1] - p1[1]) + p21[2] * (x[2] - p1[2]);\n var denom = dot(p21, p21); // trying to avoid an expensive fabs\n\n var tolerance = 1e-5 * num;\n\n if (denom !== 0.0) {\n outObj.t = num / denom;\n }\n\n if (tolerance < 0.0) {\n tolerance = -tolerance;\n }\n\n if (-tolerance < denom && denom < tolerance) {\n closest = p1;\n } else if (denom <= 0.0 || outObj.t < 0.0) {\n // If parametric coordinate is within 0<=p<=1, then the point is closest to\n // the line. Otherwise, it's closest to a point at the end of the line.\n closest = p1;\n } else if (outObj.t > 1.0) {\n closest = p2;\n } else {\n closest = p21;\n p21[0] = p1[0] + outObj.t * p21[0];\n p21[1] = p1[1] + outObj.t * p21[1];\n p21[2] = p1[2] + outObj.t * p21[2];\n }\n\n if (closestPoint) {\n closestPoint[0] = closest[0];\n closestPoint[1] = closest[1];\n closestPoint[2] = closest[2];\n }\n\n outObj.distance = distance2BetweenPoints(closest, x);\n return outObj;\n}\n\nfunction intersection(a1, a2, b1, b2, u, v) {\n var a21 = [];\n var b21 = [];\n var b1a1 = [];\n u[0] = 0.0;\n v[0] = 0.0; // Determine line vectors.\n\n subtract(a2, a1, a21);\n subtract(b2, b1, b21);\n subtract(b1, a1, b1a1); // Compute the system (least squares) matrix.\n\n var A = [dot(a21, a21), -dot(a21, b21), -dot(a21, b21), dot(b21, b21)]; // Compute the least squares system constant term.\n\n var c = [];\n c[0] = dot(a21, b1a1);\n c[1] = -dot(b21, b1a1); // Solve the system of equations\n\n if (solveLinearSystem(A, c, 2) === 0) {\n // The lines are colinear. Therefore, one of the four endpoints is the\n // point of closest approach\n var minDist = Number.MAX_VALUE;\n var p = [a1, a2, b1, b2];\n var l1 = [b1, b1, a1, a1];\n var l2 = [b2, b2, a2, a2];\n var uv1 = [v[0], v[0], u[0], u[0]];\n var uv2 = [u[0], u[0], v[0], v[0]];\n var obj;\n\n for (var i = 0; i < 4; i++) {\n obj = distanceToLine(p[i], l1[i], l2[i]);\n\n if (obj.distance < minDist) {\n minDist = obj.distance;\n uv1[i] = obj.t;\n uv2[i] = i % 2;\n }\n }\n\n return IntersectionState.ON_LINE;\n }\n\n u[0] = c[0];\n v[0] = c[1]; // Check parametric coordinates for intersection.\n\n if (u[0] >= 0.0 && u[0] <= 1.0 && v[0] >= 0.0 && v[0] <= 1.0) {\n return IntersectionState.YES_INTERSECTION;\n }\n\n return IntersectionState.NO_INTERSECTION;\n} // ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\n\nvar STATIC = {\n distanceToLine: distanceToLine,\n intersection: intersection\n}; // ----------------------------------------------------------------------------\n// vtkLine methods\n// ----------------------------------------------------------------------------\n\nfunction vtkLine(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkLine');\n\n function isBetweenPoints(t) {\n return t >= 0.0 && t <= 1.0;\n }\n\n publicAPI.getCellDimension = function () {\n return 1;\n };\n\n publicAPI.intersectWithLine = function (p1, p2, tol, x, pcoords) {\n var outObj = {\n intersect: 0,\n t: Number.MAX_VALUE,\n subId: 0,\n betweenPoints: null\n };\n pcoords[1] = 0.0;\n pcoords[2] = 0.0;\n var projXYZ = [];\n var a1 = [];\n var a2 = [];\n model.points.getPoint(0, a1);\n model.points.getPoint(1, a2);\n var u = [];\n var v = [];\n var intersect = intersection(p1, p2, a1, a2, u, v);\n outObj.t = u[0];\n outObj.betweenPoints = isBetweenPoints(outObj.t);\n pcoords[0] = v[0];\n\n if (intersect === IntersectionState.YES_INTERSECTION) {\n // make sure we are within tolerance\n for (var i = 0; i < 3; i++) {\n x[i] = a1[i] + pcoords[0] * (a2[i] - a1[i]);\n projXYZ[i] = p1[i] + outObj.t * (p2[i] - p1[i]);\n }\n\n if (distance2BetweenPoints(x, projXYZ) <= tol * tol) {\n outObj.intersect = 1;\n return outObj;\n }\n } else {\n var outDistance; // check to see if it lies within tolerance\n // one of the parametric coords must be outside 0-1\n\n if (outObj.t < 0.0) {\n outDistance = distanceToLine(p1, a1, a2, x);\n\n if (outDistance.distance <= tol * tol) {\n outObj.t = 0.0;\n outObj.intersect = 1;\n outObj.betweenPoints = true; // Intersection is near p1\n\n return outObj;\n }\n\n return outObj;\n }\n\n if (outObj.t > 1.0) {\n outDistance = distanceToLine(p2, a1, a2, x);\n\n if (outDistance.distance <= tol * tol) {\n outObj.t = 1.0;\n outObj.intersect = 1;\n outObj.betweenPoints = true; // Intersection is near p2\n\n return outObj;\n }\n\n return outObj;\n }\n\n if (pcoords[0] < 0.0) {\n pcoords[0] = 0.0;\n outDistance = distanceToLine(a1, p1, p2, x);\n outObj.t = outDistance.t;\n\n if (outDistance.distance <= tol * tol) {\n outObj.intersect = 1;\n return outObj;\n }\n\n return outObj;\n }\n\n if (pcoords[0] > 1.0) {\n pcoords[0] = 1.0;\n outDistance = distanceToLine(a2, p1, p2, x);\n outObj.t = outDistance.t;\n\n if (outDistance.distance <= tol * tol) {\n outObj.intersect = 1;\n return outObj;\n }\n\n return outObj;\n }\n }\n\n return outObj;\n };\n\n publicAPI.evaluateLocation = function (pcoords, x, weights) {\n var a1 = [];\n var a2 = [];\n model.points.getPoint(0, a1);\n model.points.getPoint(1, a2);\n\n for (var i = 0; i < 3; i++) {\n x[i] = a1[i] + pcoords[0] * (a2[i] - a1[i]);\n }\n\n weights[0] = 1.0 - pcoords[0];\n weights[1] = pcoords[0];\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues);\n vtkCell.extend(publicAPI, model, initialValues);\n vtkLine(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkLine'); // ----------------------------------------------------------------------------\n\nvar vtkLine$1 = _objectSpread(_objectSpread({\n newInstance: newInstance,\n extend: extend\n}, STATIC), Constants);\n\nexport { STATIC, vtkLine$1 as default, extend, newInstance };\n","import vtk from '../../vtk.js';\nimport macro from '../../macros.js';\nimport vtkDataSet from './DataSet.js';\nimport vtkPoints from '../Core/Points.js';\n\n// Global methods\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// vtkPointSet methods\n// ----------------------------------------------------------------------------\n\nfunction vtkPointSet(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPointSet'); // Create empty points\n\n if (!model.points) {\n model.points = vtkPoints.newInstance();\n } else {\n model.points = vtk(model.points);\n }\n\n publicAPI.getNumberOfPoints = function () {\n return model.points.getNumberOfPoints();\n };\n\n publicAPI.getBounds = function () {\n return model.points.getBounds();\n };\n\n publicAPI.computeBounds = function () {\n publicAPI.getBounds();\n };\n\n var superShallowCopy = publicAPI.shallowCopy;\n\n publicAPI.shallowCopy = function (other) {\n var debug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n superShallowCopy(other, debug);\n model.points = vtkPoints.newInstance();\n model.points.shallowCopy(other.getPoints());\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {// points: null,\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Inheritance\n\n vtkDataSet.extend(publicAPI, model, initialValues);\n macro.setGet(publicAPI, model, ['points']); // Object specific methods\n\n vtkPointSet(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkPointSet'); // ----------------------------------------------------------------------------\n\nvar vtkPointSet$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { vtkPointSet$1 as default, extend, newInstance };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport macro from '../../macros.js';\nimport vtkCell from './Cell.js';\nimport { d as dot, j as cross, l as normalize, m as multiplyAccumulate, e as distance2BetweenPoints, o as determinant2x2 } from '../Core/Math/index.js';\nimport vtkLine from './Line.js';\nimport vtkPlane from './Plane.js';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction computeNormalDirection(v1, v2, v3, n) {\n // order is important!!! maintain consistency with triangle vertex order\n var ax = v3[0] - v2[0];\n var ay = v3[1] - v2[1];\n var az = v3[2] - v2[2];\n var bx = v1[0] - v2[0];\n var by = v1[1] - v2[1];\n var bz = v1[2] - v2[2];\n n[0] = ay * bz - az * by;\n n[1] = az * bx - ax * bz;\n n[2] = ax * by - ay * bx;\n}\n\nfunction computeNormal(v1, v2, v3, n) {\n computeNormalDirection(v1, v2, v3, n);\n var length = Math.sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]);\n\n if (length !== 0.0) {\n n[0] /= length;\n n[1] /= length;\n n[2] /= length;\n }\n}\n\nfunction intersectWithTriangle(p1, q1, r1, p2, q2, r2) {\n var tolerance = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1e-6;\n var coplanar = false;\n var pt1 = [];\n var pt2 = [];\n var surfaceId = [];\n var n1 = [];\n var n2 = []; // Compute supporting plane normals.\n\n computeNormal(p1, q1, r1, n1);\n computeNormal(p2, q2, r2, n2);\n var s1 = -dot(n1, p1);\n var s2 = -dot(n2, p2); // Compute signed distances of points p1, q1, r1 from supporting\n // plane of second triangle.\n\n var dist1 = [dot(n2, p1) + s2, dot(n2, q1) + s2, dot(n2, r1) + s2]; // If signs of all points are the same, all the points lie on the\n // same side of the supporting plane, and we can exit early.\n\n if (dist1[0] * dist1[1] > tolerance && dist1[0] * dist1[2] > tolerance) {\n // vtkDebugMacro(<<\"Same side supporting plane 1!\");\n return {\n intersect: false,\n coplanar: coplanar,\n pt1: pt1,\n pt2: pt2,\n surfaceId: surfaceId\n };\n } // Do the same for p2, q2, r2 and supporting plane of first\n // triangle.\n\n\n var dist2 = [dot(n1, p2) + s1, dot(n1, q2) + s1, dot(n1, r2) + s1]; // If signs of all points are the same, all the points lie on the\n // same side of the supporting plane, and we can exit early.\n\n if (dist2[0] * dist2[1] > tolerance && dist2[0] * dist2[2] > tolerance) {\n // vtkDebugMacro(<<\"Same side supporting plane 2!\");\n return {\n intersect: false,\n coplanar: coplanar,\n pt1: pt1,\n pt2: pt2,\n surfaceId: surfaceId\n };\n } // Check for coplanarity of the supporting planes.\n\n\n if (Math.abs(n1[0] - n2[0]) < 1e-9 && Math.abs(n1[1] - n2[1]) < 1e-9 && Math.abs(n1[2] - n2[2]) < 1e-9 && Math.abs(s1 - s2) < 1e-9) {\n coplanar = true; // vtkDebugMacro(<<\"Coplanar!\");\n\n return {\n intersect: false,\n coplanar: coplanar,\n pt1: pt1,\n pt2: pt2,\n surfaceId: surfaceId\n };\n } // There are more efficient ways to find the intersection line (if\n // it exists), but this is clear enough.\n\n\n var pts1 = [p1, q1, r1];\n var pts2 = [p2, q2, r2]; // Find line of intersection (L = p + t*v) between two planes.\n\n var n1n2 = dot(n1, n2);\n var a = (s1 - s2 * n1n2) / (n1n2 * n1n2 - 1.0);\n var b = (s2 - s1 * n1n2) / (n1n2 * n1n2 - 1.0);\n var p = [a * n1[0] + b * n2[0], a * n1[1] + b * n2[1], a * n1[2] + b * n2[2]];\n var v = cross(n1, n2, []);\n normalize(v);\n var index1 = 0;\n var index2 = 0;\n var t1 = [];\n var t2 = [];\n var ts1 = 50;\n var ts2 = 50;\n\n for (var i = 0; i < 3; i++) {\n var id1 = i;\n var id2 = (i + 1) % 3; // Find t coordinate on line of intersection between two planes.\n\n var val1 = vtkPlane.intersectWithLine(pts1[id1], pts1[id2], p2, n2);\n\n if (val1.intersection && val1.t > 0 - tolerance && val1.t < 1 + tolerance) {\n if (val1.t < 1 + tolerance && val1.t > 1 - tolerance) {\n ts1 = index1;\n }\n\n t1[index1++] = dot(val1.x, v) - dot(p, v);\n }\n\n var val2 = vtkPlane.intersectWithLine(pts2[id1], pts2[id2], p1, n1);\n\n if (val2.intersection && val2.t > 0 - tolerance && val2.t < 1 + tolerance) {\n if (val2.t < 1 + tolerance && val2.t > 1 - tolerance) {\n ts2 = index2;\n }\n\n t2[index2++] = dot(val2.x, v) - dot(p, v);\n }\n } // If the value of the index is greater than 2, the intersecting point\n // actually is intersected by all three edges. In this case, set the two\n // edges to the two edges where the intersecting point is not the end point\n\n\n if (index1 > 2) {\n index1--; // swap\n\n var t12 = t1[2];\n t1[2] = t1[ts1];\n t1[ts1] = t12;\n }\n\n if (index2 > 2) {\n index2--;\n var t22 = t2[2];\n t2[2] = t2[ts2];\n t2[ts2] = t22;\n } // Check if only one edge or all edges intersect the supporting\n // planes intersection.\n\n\n if (index1 !== 2 || index2 !== 2) {\n // vtkDebugMacro(<<\"Only one edge intersecting!\");\n return {\n intersect: false,\n coplanar: coplanar,\n pt1: pt1,\n pt2: pt2,\n surfaceId: surfaceId\n };\n } // Check for NaNs\n\n\n if (Number.isNaN(t1[0]) || Number.isNaN(t1[1]) || Number.isNaN(t2[0]) || Number.isNaN(t2[1])) {\n // vtkWarningMacro(<<\"NaNs!\");\n return {\n intersect: false,\n coplanar: coplanar,\n pt1: pt1,\n pt2: pt2,\n surfaceId: surfaceId\n };\n }\n\n if (t1[0] > t1[1]) {\n // swap\n var t11 = t1[1];\n t1[1] = t1[0];\n t1[0] = t11;\n }\n\n if (t2[0] > t2[1]) {\n // swap\n var t21 = t2[1];\n t2[1] = t2[0];\n t2[0] = t21;\n } // Handle the different interval configuration cases.\n\n\n var tt1;\n var tt2;\n\n if (t1[1] < t2[0] || t2[1] < t1[0]) {\n // vtkDebugMacro(<<\"No Overlap!\");\n return {\n intersect: false,\n coplanar: coplanar,\n pt1: pt1,\n pt2: pt2,\n surfaceId: surfaceId\n }; // No overlap\n }\n\n if (t1[0] < t2[0]) {\n if (t1[1] < t2[1]) {\n // First point on surface 2, second point on surface 1\n surfaceId[0] = 2;\n surfaceId[1] = 1;\n tt1 = t2[0];\n tt2 = t1[1];\n } else {\n // Both points belong to lines on surface 2\n surfaceId[0] = 2;\n surfaceId[1] = 2;\n tt1 = t2[0];\n tt2 = t2[1];\n }\n } // t1[0] >= t2[0]\n else if (t1[1] < t2[1]) {\n // Both points belong to lines on surface 1\n surfaceId[0] = 1;\n surfaceId[1] = 1;\n tt1 = t1[0];\n tt2 = t1[1];\n } else {\n // First point on surface 1, second point on surface 2\n surfaceId[0] = 1;\n surfaceId[1] = 2;\n tt1 = t1[0];\n tt2 = t2[1];\n } // Create actual intersection points.\n\n\n multiplyAccumulate(p, v, tt1, pt1);\n multiplyAccumulate(p, v, tt2, pt2);\n return {\n intersect: true,\n coplanar: coplanar,\n pt1: pt1,\n pt2: pt2,\n surfaceId: surfaceId\n };\n} // ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\n\nvar STATIC = {\n computeNormalDirection: computeNormalDirection,\n computeNormal: computeNormal,\n intersectWithTriangle: intersectWithTriangle\n}; // ----------------------------------------------------------------------------\n// vtkTriangle methods\n// ----------------------------------------------------------------------------\n\nfunction vtkTriangle(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkTriangle');\n\n publicAPI.getCellDimension = function () {\n return 2;\n };\n\n publicAPI.intersectWithLine = function (p1, p2, tol, x, pcoords) {\n var outObj = {\n subId: 0,\n t: Number.MAX_VALUE,\n intersect: 0,\n betweenPoints: false\n };\n pcoords[2] = 0.0;\n var closestPoint = [];\n var tol2 = tol * tol; // Get normal for triangle\n\n var pt1 = [];\n var pt2 = [];\n var pt3 = [];\n model.points.getPoint(0, pt1);\n model.points.getPoint(1, pt2);\n model.points.getPoint(2, pt3);\n var n = [];\n var weights = [];\n computeNormal(pt1, pt2, pt3, n);\n\n if (n[0] !== 0 || n[1] !== 0 || n[2] !== 0) {\n // Intersect plane of triangle with line\n var plane = vtkPlane.intersectWithLine(p1, p2, pt1, n);\n outObj.betweenPoints = plane.betweenPoints;\n outObj.t = plane.t;\n x[0] = plane.x[0];\n x[1] = plane.x[1];\n x[2] = plane.x[2];\n\n if (!plane.intersection) {\n pcoords[0] = 0.0;\n pcoords[1] = 0.0;\n outObj.intersect = 0;\n return outObj;\n } // Evaluate position\n\n\n var inside = publicAPI.evaluatePosition(x, closestPoint, pcoords, weights);\n\n if (inside.evaluation >= 0) {\n if (inside.dist2 <= tol2) {\n outObj.intersect = 1;\n return outObj;\n }\n\n outObj.intersect = inside.evaluation;\n return outObj;\n }\n } // Normals are null, so the triangle is degenerated and\n // we still need to check intersection between line and\n // the longest edge.\n\n\n var dist2Pt1Pt2 = distance2BetweenPoints(pt1, pt2);\n var dist2Pt2Pt3 = distance2BetweenPoints(pt2, pt3);\n var dist2Pt3Pt1 = distance2BetweenPoints(pt3, pt1);\n\n if (!model.line) {\n model.line = vtkLine.newInstance();\n }\n\n if (dist2Pt1Pt2 > dist2Pt2Pt3 && dist2Pt1Pt2 > dist2Pt3Pt1) {\n model.line.getPoints().setPoint(0, pt1);\n model.line.getPoints().setPoint(1, pt2);\n } else if (dist2Pt2Pt3 > dist2Pt3Pt1 && dist2Pt2Pt3 > dist2Pt1Pt2) {\n model.line.getPoints().setPoint(0, pt2);\n model.line.getPoints().setPoint(1, pt3);\n } else {\n model.line.getPoints().setPoint(0, pt3);\n model.line.getPoints().setPoint(1, pt1);\n }\n\n var intersectLine = model.line.intersectWithLine(p1, p2, tol, x, pcoords);\n outObj.betweenPoints = intersectLine.betweenPoints;\n outObj.t = intersectLine.t;\n\n if (intersectLine.intersect) {\n var pt3Pt1 = [];\n var pt3Pt2 = [];\n var pt3X = []; // Compute r and s manually, using dot and norm.\n\n for (var i = 0; i < 3; i++) {\n pt3Pt1[i] = pt1[i] - pt3[i];\n pt3Pt2[i] = pt2[i] - pt3[i];\n pt3X[i] = x[i] - pt3[i];\n }\n\n pcoords[0] = dot(pt3X, pt3Pt1) / dist2Pt3Pt1;\n pcoords[1] = dot(pt3X, pt3Pt2) / dist2Pt2Pt3;\n outObj.intersect = 1;\n return outObj;\n }\n\n pcoords[0] = 0.0;\n pcoords[1] = 0.0;\n outObj.intersect = 0;\n return outObj;\n };\n\n publicAPI.evaluatePosition = function (x, closestPoint, pcoords, weights) {\n // will return obj\n var outObj = {\n subId: 0,\n dist2: 0,\n evaluation: -1\n };\n var i;\n var j;\n var pt1 = [];\n var pt2 = [];\n var pt3 = [];\n var n = [];\n var fabsn;\n var rhs = [];\n var c1 = [];\n var c2 = [];\n var det = 0;\n var idx = 0;\n var indices = [];\n var dist2Point;\n var dist2Line1;\n var dist2Line2;\n var closest = [];\n var closestPoint1 = [];\n var closestPoint2 = [];\n var cp = [];\n outObj.subId = 0;\n pcoords[2] = 0.0; // Get normal for triangle, only the normal direction is needed, i.e. the\n // normal need not be normalized (unit length)\n //\n\n model.points.getPoint(1, pt1);\n model.points.getPoint(2, pt2);\n model.points.getPoint(0, pt3);\n computeNormalDirection(pt1, pt2, pt3, n); // Project point to plane\n\n vtkPlane.generalizedProjectPoint(x, pt1, n, cp); // Construct matrices. Since we have over determined system, need to find\n // which 2 out of 3 equations to use to develop equations. (Any 2 should\n // work since we've projected point to plane.)\n\n var maxComponent = 0.0;\n\n for (i = 0; i < 3; i++) {\n // trying to avoid an expensive call to fabs()\n if (n[i] < 0) {\n fabsn = -n[i];\n } else {\n fabsn = n[i];\n }\n\n if (fabsn > maxComponent) {\n maxComponent = fabsn;\n idx = i;\n }\n }\n\n for (j = 0, i = 0; i < 3; i++) {\n if (i !== idx) {\n indices[j++] = i;\n }\n }\n\n for (i = 0; i < 2; i++) {\n rhs[i] = cp[indices[i]] - pt3[indices[i]];\n c1[i] = pt1[indices[i]] - pt3[indices[i]];\n c2[i] = pt2[indices[i]] - pt3[indices[i]];\n }\n\n det = determinant2x2(c1, c2);\n\n if (det === 0.0) {\n pcoords[0] = 0.0;\n pcoords[1] = 0.0;\n outObj.evaluation = -1;\n return outObj;\n }\n\n pcoords[0] = determinant2x2(rhs, c2) / det;\n pcoords[1] = determinant2x2(c1, rhs) / det; // Okay, now find closest point to element\n\n weights[0] = 1 - (pcoords[0] + pcoords[1]);\n weights[1] = pcoords[0];\n weights[2] = pcoords[1];\n\n if (weights[0] >= 0.0 && weights[0] <= 1.0 && weights[1] >= 0.0 && weights[1] <= 1.0 && weights[2] >= 0.0 && weights[2] <= 1.0) {\n // projection distance\n if (closestPoint) {\n outObj.dist2 = distance2BetweenPoints(cp, x);\n closestPoint[0] = cp[0];\n closestPoint[1] = cp[1];\n closestPoint[2] = cp[2];\n }\n\n outObj.evaluation = 1;\n } else {\n var t;\n\n if (closestPoint) {\n if (weights[1] < 0.0 && weights[2] < 0.0) {\n dist2Point = distance2BetweenPoints(x, pt3);\n dist2Line1 = vtkLine.distanceToLine(x, pt1, pt3, t, closestPoint1);\n dist2Line2 = vtkLine.distanceToLine(x, pt3, pt2, t, closestPoint2);\n\n if (dist2Point < dist2Line1) {\n outObj.dist2 = dist2Point;\n closest = pt3;\n } else {\n outObj.dist2 = dist2Line1;\n closest = closestPoint1;\n }\n\n if (dist2Line2 < outObj.dist2) {\n outObj.dist2 = dist2Line2;\n closest = closestPoint2;\n }\n\n for (i = 0; i < 3; i++) {\n closestPoint[i] = closest[i];\n }\n } else if (weights[2] < 0.0 && weights[0] < 0.0) {\n dist2Point = distance2BetweenPoints(x, pt1);\n dist2Line1 = vtkLine.distanceToLine(x, pt1, pt3, t, closestPoint1);\n dist2Line2 = vtkLine.distanceToLine(x, pt1, pt2, t, closestPoint2);\n\n if (dist2Point < dist2Line1) {\n outObj.dist2 = dist2Point;\n closest = pt1;\n } else {\n outObj.dist2 = dist2Line1;\n closest = closestPoint1;\n }\n\n if (dist2Line2 < outObj.dist2) {\n outObj.dist2 = dist2Line2;\n closest = closestPoint2;\n }\n\n for (i = 0; i < 3; i++) {\n closestPoint[i] = closest[i];\n }\n } else if (weights[1] < 0.0 && weights[0] < 0.0) {\n dist2Point = distance2BetweenPoints(x, pt2);\n dist2Line1 = vtkLine.distanceToLine(x, pt2, pt3, t, closestPoint1);\n dist2Line2 = vtkLine.distanceToLine(x, pt1, pt2, t, closestPoint2);\n\n if (dist2Point < dist2Line1) {\n outObj.dist2 = dist2Point;\n closest = pt2;\n } else {\n outObj.dist2 = dist2Line1;\n closest = closestPoint1;\n }\n\n if (dist2Line2 < outObj.dist2) {\n outObj.dist2 = dist2Line2;\n closest = closestPoint2;\n }\n\n for (i = 0; i < 3; i++) {\n closestPoint[i] = closest[i];\n }\n } else if (weights[0] < 0.0) {\n var lineDistance = vtkLine.distanceToLine(x, pt1, pt2, closestPoint);\n outObj.dist2 = lineDistance.distance;\n } else if (weights[1] < 0.0) {\n var _lineDistance = vtkLine.distanceToLine(x, pt2, pt3, closestPoint);\n\n outObj.dist2 = _lineDistance.distance;\n } else if (weights[2] < 0.0) {\n var _lineDistance2 = vtkLine.distanceToLine(x, pt1, pt3, closestPoint);\n\n outObj.dist2 = _lineDistance2.distance;\n }\n }\n\n outObj.evaluation = 0;\n }\n\n return outObj;\n };\n\n publicAPI.evaluateLocation = function (pcoords, x, weights) {\n var p0 = [];\n var p1 = [];\n var p2 = [];\n model.points.getPoint(0, p0);\n model.points.getPoint(1, p1);\n model.points.getPoint(2, p2);\n var u3 = 1.0 - pcoords[0] - pcoords[1];\n\n for (var i = 0; i < 3; i++) {\n x[i] = p0[i] * u3 + p1[i] * pcoords[0] + p2[i] * pcoords[1];\n }\n\n weights[0] = u3;\n weights[1] = pcoords[0];\n weights[2] = pcoords[1];\n };\n\n publicAPI.getParametricDistance = function (pcoords) {\n var pDist;\n var pDistMax = 0.0;\n var pc = [];\n pc[0] = pcoords[0];\n pc[1] = pcoords[1];\n pc[2] = 1.0 - pcoords[0] - pcoords[1];\n\n for (var i = 0; i < 3; i++) {\n if (pc[i] < 0.0) {\n pDist = -pc[i];\n } else if (pc[i] > 1.0) {\n pDist = pc[i] - 1.0;\n } else {\n // inside the cell in the parametric direction\n pDist = 0.0;\n }\n\n if (pDist > pDistMax) {\n pDistMax = pDist;\n }\n }\n\n return pDistMax;\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues);\n vtkCell.extend(publicAPI, model, initialValues);\n vtkTriangle(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkTriangle'); // ----------------------------------------------------------------------------\n\nvar vtkTriangle$1 = _objectSpread({\n newInstance: newInstance,\n extend: extend\n}, STATIC);\n\nexport { STATIC, vtkTriangle$1 as default, extend, newInstance };\n","var POLYDATA_FIELDS = ['verts', 'lines', 'polys', 'strips'];\nvar Constants = {\n POLYDATA_FIELDS: POLYDATA_FIELDS\n};\n\nexport { POLYDATA_FIELDS, Constants as default };\n","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport macro from '../../macros.js';\nimport vtk from '../../vtk.js';\nimport vtkCellArray from '../Core/CellArray.js';\nimport vtkCellLinks from './CellLinks.js';\nimport vtkCellTypes from './CellTypes.js';\nimport vtkLine from './Line.js';\nimport vtkPointSet from './PointSet.js';\nimport vtkTriangle from './Triangle.js';\nimport { CellType } from './CellTypes/Constants.js';\nimport { POLYDATA_FIELDS } from './PolyData/Constants.js';\n\nvar _CELL_FACTORY;\nvar vtkWarningMacro = macro.vtkWarningMacro;\nvar CELL_FACTORY = (_CELL_FACTORY = {}, _defineProperty(_CELL_FACTORY, CellType.VTK_LINE, vtkLine), _defineProperty(_CELL_FACTORY, CellType.VTK_POLY_LINE, vtkLine), _defineProperty(_CELL_FACTORY, CellType.VTK_TRIANGLE, vtkTriangle), _CELL_FACTORY); // ----------------------------------------------------------------------------\n// vtkPolyData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkPolyData(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPolyData');\n\n function camelize(str) {\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (letter) {\n return letter.toUpperCase();\n }).replace(/\\s+/g, '');\n } // build empty cell arrays and set methods\n\n\n POLYDATA_FIELDS.forEach(function (type) {\n publicAPI[\"getNumberOf\".concat(camelize(type))] = function () {\n return model[type].getNumberOfCells();\n };\n\n if (!model[type]) {\n model[type] = vtkCellArray.newInstance();\n } else {\n model[type] = vtk(model[type]);\n }\n });\n\n publicAPI.getNumberOfCells = function () {\n return POLYDATA_FIELDS.reduce(function (num, cellType) {\n return num + model[cellType].getNumberOfCells();\n }, 0);\n };\n\n var superShallowCopy = publicAPI.shallowCopy;\n\n publicAPI.shallowCopy = function (other) {\n var debug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n superShallowCopy(other, debug);\n POLYDATA_FIELDS.forEach(function (type) {\n model[type] = vtkCellArray.newInstance();\n model[type].shallowCopy(other.getReferenceByName(type));\n });\n };\n\n publicAPI.buildCells = function () {\n // here are the number of cells we have\n var nVerts = publicAPI.getNumberOfVerts();\n var nLines = publicAPI.getNumberOfLines();\n var nPolys = publicAPI.getNumberOfPolys();\n var nStrips = publicAPI.getNumberOfStrips(); // pre-allocate the space we need\n\n var nCells = nVerts + nLines + nPolys + nStrips;\n var types = new Uint8Array(nCells);\n var pTypes = types;\n var locs = new Uint32Array(nCells);\n var pLocs = locs; // record locations and type of each cell.\n // verts\n\n if (nVerts) {\n var nextCellPts = 0;\n model.verts.getCellSizes().forEach(function (numCellPts, index) {\n pLocs[index] = nextCellPts;\n pTypes[index] = numCellPts > 1 ? CellType.VTK_POLY_VERTEX : CellType.VTK_VERTEX;\n nextCellPts += numCellPts + 1;\n });\n pLocs = pLocs.subarray(nVerts);\n pTypes = pTypes.subarray(nVerts);\n } // lines\n\n\n if (nLines) {\n var _nextCellPts = 0;\n model.lines.getCellSizes().forEach(function (numCellPts, index) {\n pLocs[index] = _nextCellPts;\n pTypes[index] = numCellPts > 2 ? CellType.VTK_POLY_LINE : CellType.VTK_LINE;\n\n if (numCellPts === 1) {\n vtkWarningMacro('Building VTK_LINE ', index, ' with only one point, but VTK_LINE needs at least two points. Check the input.');\n }\n\n _nextCellPts += numCellPts + 1;\n });\n pLocs = pLocs.subarray(nLines);\n pTypes = pTypes.subarray(nLines);\n } // polys\n\n\n if (nPolys) {\n var _nextCellPts2 = 0;\n model.polys.getCellSizes().forEach(function (numCellPts, index) {\n pLocs[index] = _nextCellPts2;\n\n switch (numCellPts) {\n case 3:\n pTypes[index] = CellType.VTK_TRIANGLE;\n break;\n\n case 4:\n pTypes[index] = CellType.VTK_QUAD;\n break;\n\n default:\n pTypes[index] = CellType.VTK_POLYGON;\n break;\n }\n\n if (numCellPts < 3) {\n vtkWarningMacro('Building VTK_TRIANGLE ', index, ' with less than three points, but VTK_TRIANGLE needs at least three points. Check the input.');\n }\n\n _nextCellPts2 += numCellPts + 1;\n });\n pLocs += pLocs.subarray(nPolys);\n pTypes += pTypes.subarray(nPolys);\n } // strips\n\n\n if (nStrips) {\n var _nextCellPts3 = 0;\n pTypes.fill(CellType.VTK_TRIANGLE_STRIP, 0, nStrips);\n model.strips.getCellSizes().forEach(function (numCellPts, index) {\n pLocs[index] = _nextCellPts3;\n _nextCellPts3 += numCellPts + 1;\n });\n } // set up the cell types data structure\n\n\n model.cells = vtkCellTypes.newInstance();\n model.cells.setCellTypes(nCells, types, locs);\n };\n /**\n * Create upward links from points to cells that use each point. Enables\n * topologically complex queries.\n */\n\n\n publicAPI.buildLinks = function () {\n var initialSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (model.cells === undefined) {\n publicAPI.buildCells();\n }\n\n model.links = vtkCellLinks.newInstance();\n\n if (initialSize > 0) {\n model.links.allocate(initialSize);\n } else {\n model.links.allocate(publicAPI.getPoints().getNumberOfPoints());\n }\n\n model.links.buildLinks(publicAPI);\n };\n\n publicAPI.getCellType = function (cellId) {\n return model.cells.getCellType(cellId);\n };\n\n publicAPI.getCellPoints = function (cellId) {\n var cellType = publicAPI.getCellType(cellId);\n var cells = null;\n\n switch (cellType) {\n case CellType.VTK_VERTEX:\n case CellType.VTK_POLY_VERTEX:\n cells = model.verts;\n break;\n\n case CellType.VTK_LINE:\n case CellType.VTK_POLY_LINE:\n cells = model.lines;\n break;\n\n case CellType.VTK_TRIANGLE:\n case CellType.VTK_QUAD:\n case CellType.VTK_POLYGON:\n cells = model.polys;\n break;\n\n case CellType.VTK_TRIANGLE_STRIP:\n cells = model.strips;\n break;\n\n default:\n cells = null;\n return {\n type: 0,\n cellPointIds: null\n };\n }\n\n var loc = model.cells.getCellLocation(cellId);\n var cellPointIds = cells.getCell(loc);\n return {\n cellType: cellType,\n cellPointIds: cellPointIds\n };\n };\n\n publicAPI.getPointCells = function (ptId) {\n return model.links.getCells(ptId);\n };\n\n publicAPI.getCellEdgeNeighbors = function (cellId, point1, point2) {\n var link1 = model.links.getLink(point1);\n var link2 = model.links.getLink(point2);\n return link1.cells.filter(function (cell) {\n return cell !== cellId && link2.cells.indexOf(cell) !== -1;\n });\n };\n /**\n * If you know the type of cell, you may provide it to improve performances.\n */\n\n\n publicAPI.getCell = function (cellId) {\n var cellHint = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var cellInfo = publicAPI.getCellPoints(cellId);\n var cell = cellHint || CELL_FACTORY[cellInfo.cellType].newInstance();\n cell.initialize(publicAPI.getPoints(), cellInfo.cellPointIds);\n return cell;\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {// verts: null,\n // lines: null,\n // polys: null,\n // strips: null,\n // cells: null,\n // links: null,\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Inheritance\n\n vtkPointSet.extend(publicAPI, model, initialValues);\n macro.get(publicAPI, model, ['cells', 'links']);\n macro.setGet(publicAPI, model, ['verts', 'lines', 'polys', 'strips']); // Object specific methods\n\n vtkPolyData(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkPolyData'); // ----------------------------------------------------------------------------\n\nvar vtkPolyData$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { CELL_FACTORY, vtkPolyData$1 as default, extend, newInstance };\n","import macro from '@kitware/vtk.js/macros';\nimport vtkOpenGLTexture from '@kitware/vtk.js/Rendering/OpenGL/Texture';\nimport HalfFloat from '@kitware/vtk.js/Common/Core/HalfFloat';\nimport { getConfiguration } from '../../init';\nfunction vtkStreamingOpenGLTexture(publicAPI, model) {\n model.classHierarchy.push('vtkStreamingOpenGLTexture');\n const superCreate3DFilterableFromRaw = publicAPI.create3DFilterableFromRaw;\n publicAPI.create3DFilterableFromRaw = (width, height, depth, numComps, dataType, data, preferSizeOverAccuracy) => {\n model.inputDataType = dataType;\n model.inputNumComps = numComps;\n superCreate3DFilterableFromRaw(width, height, depth, numComps, dataType, data, preferSizeOverAccuracy);\n };\n publicAPI.update3DFromRaw = (data) => {\n const { updatedFrames } = model;\n if (!updatedFrames.length) {\n return;\n }\n model._openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n let bytesPerVoxel;\n let TypedArrayConstructor;\n if (data instanceof Uint8Array) {\n bytesPerVoxel = 1;\n TypedArrayConstructor = Uint8Array;\n }\n else if (data instanceof Int16Array) {\n bytesPerVoxel = 2;\n TypedArrayConstructor = Int16Array;\n }\n else if (data instanceof Uint16Array) {\n bytesPerVoxel = 2;\n TypedArrayConstructor = Uint16Array;\n }\n else if (data instanceof Float32Array) {\n bytesPerVoxel = 4;\n TypedArrayConstructor = Float32Array;\n }\n else {\n throw new Error(`No support for given TypedArray.`);\n }\n for (let i = 0; i < updatedFrames.length; i++) {\n if (updatedFrames[i]) {\n model.fillSubImage3D(data, i, bytesPerVoxel, TypedArrayConstructor);\n }\n }\n model.updatedFrames = [];\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n publicAPI.deactivate();\n return true;\n };\n model.fillSubImage3D = (data, frameIndex, bytesPerVoxel, TypedArrayConstructor) => {\n const buffer = data.buffer;\n const frameLength = model.width * model.height;\n const frameLengthInBytes = frameLength * model.components * bytesPerVoxel;\n const zOffset = frameIndex * frameLengthInBytes;\n const rowLength = model.width * model.components;\n const gl = model.context;\n const MAX_TEXTURE_SIZE = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n let blockHeight = Math.floor((bytesPerVoxel * MAX_TEXTURE_SIZE) / model.width);\n blockHeight = Math.min(blockHeight, model.height);\n const { useNorm16Texture, preferSizeOverAccuracy } = getConfiguration().rendering;\n if (useNorm16Texture && !preferSizeOverAccuracy) {\n blockHeight = 1;\n }\n const multiRowBlockLength = rowLength * blockHeight;\n const multiRowBlockLengthInBytes = multiRowBlockLength * bytesPerVoxel;\n const normalBlocks = Math.floor(model.height / blockHeight);\n const lastBlockHeight = model.height % blockHeight;\n const multiRowLastBlockLength = rowLength * lastBlockHeight;\n for (let block = 0; block < normalBlocks; block++) {\n const yOffset = block * blockHeight;\n let dataView = new TypedArrayConstructor(buffer, zOffset + block * multiRowBlockLengthInBytes, multiRowBlockLength);\n if (model.useHalfFloat &&\n (TypedArrayConstructor === Uint16Array ||\n TypedArrayConstructor === Int16Array)) {\n for (let idx = 0; idx < dataView.length; idx++) {\n dataView[idx] = HalfFloat.toHalf(dataView[idx]);\n }\n if (TypedArrayConstructor === Int16Array) {\n dataView = new Uint16Array(dataView);\n }\n }\n gl.texSubImage3D(model.target, 0, 0, yOffset, frameIndex, model.width, blockHeight, 1, model.format, model.openGLDataType, dataView);\n }\n if (lastBlockHeight !== 0) {\n const yOffset = normalBlocks * blockHeight;\n const dataView = new TypedArrayConstructor(buffer, zOffset + normalBlocks * multiRowBlockLengthInBytes, multiRowLastBlockLength);\n gl.texSubImage3D(model.target, 0, 0, yOffset, frameIndex, model.width, lastBlockHeight, 1, model.format, model.openGLDataType, dataView);\n }\n };\n publicAPI.getTextureParameters = () => {\n return {\n width: model.width,\n height: model.height,\n depth: model.depth,\n numComps: model.inputNumComps,\n dataType: model.inputDataType,\n };\n };\n publicAPI.setUpdatedFrame = (frameIndex) => {\n model.updatedFrames[frameIndex] = true;\n };\n}\nconst DEFAULT_VALUES = {\n updatedFrames: [],\n};\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n vtkOpenGLTexture.extend(publicAPI, model, initialValues);\n vtkStreamingOpenGLTexture(publicAPI, model);\n}\nexport const newInstance = macro.newInstance(extend, 'vtkStreamingOpenGLTexture');\nexport default { newInstance, extend };\n//# sourceMappingURL=vtkStreamingOpenGLTexture.js.map","const providers = [];\nexport function addProvider(provider, priority = 0) {\n let i;\n for (i = 0; i < providers.length; i++) {\n if (providers[i].priority <= priority) {\n break;\n }\n }\n providers.splice(i, 0, {\n priority,\n provider,\n });\n}\nexport function removeProvider(provider) {\n for (let i = 0; i < providers.length; i++) {\n if (providers[i].provider === provider) {\n providers.splice(i, 1);\n break;\n }\n }\n}\nexport function removeAllProviders() {\n while (providers.length > 0) {\n providers.pop();\n }\n}\nfunction getMetaData(type, ...queries) {\n for (let i = 0; i < providers.length; i++) {\n const result = providers[i].provider(type, ...queries);\n if (result !== undefined) {\n return result;\n }\n }\n}\nexport { getMetaData as get };\n//# sourceMappingURL=metaData.js.map","import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';\nimport vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';\nimport isTypedArray from '../../utilities/isTypedArray';\nimport { genericMetadataProvider, getMinMax, imageIdToURI, } from '../../utilities';\nimport { vtkStreamingOpenGLTexture } from '../../RenderingEngine/vtkClasses';\nimport cache from '../cache';\nimport * as metaData from '../../metaData';\nexport class ImageVolume {\n constructor(props) {\n this._imageIdsIndexMap = new Map();\n this._imageURIsIndexMap = new Map();\n this.cornerstoneImageMetaData = null;\n this.imageCacheOffsetMap = new Map();\n this.isPreScaled = false;\n const { imageIds, scalarData, scaling, dimensions, spacing, origin, direction, volumeId, referencedVolumeId, sizeInBytes, imageData, metadata, referencedImageIds, additionalDetails, } = props;\n this.imageIds = imageIds;\n this.volumeId = volumeId;\n this.metadata = metadata;\n this.dimensions = dimensions;\n this.spacing = spacing;\n this.origin = origin;\n this.direction = direction;\n this.scalarData = scalarData;\n this.sizeInBytes = sizeInBytes;\n this.vtkOpenGLTexture = vtkStreamingOpenGLTexture.newInstance();\n this.numVoxels =\n this.dimensions[0] * this.dimensions[1] * this.dimensions[2];\n if (imageData) {\n this.imageData = imageData;\n }\n else {\n const imageData = vtkImageData.newInstance();\n const scalarArray = vtkDataArray.newInstance({\n name: 'Pixels',\n numberOfComponents: 1,\n values: scalarData,\n });\n imageData.setDimensions(dimensions);\n imageData.setSpacing(spacing);\n imageData.setDirection(direction);\n imageData.setOrigin(origin);\n imageData.getPointData().setScalars(scalarArray);\n this.imageData = imageData;\n }\n this.numFrames = this._getNumFrames();\n this._reprocessImageIds();\n this._createCornerstoneImageMetaData();\n if (scaling) {\n this.scaling = scaling;\n }\n if (referencedVolumeId) {\n this.referencedVolumeId = referencedVolumeId;\n }\n if (referencedImageIds) {\n this.referencedImageIds = referencedImageIds;\n }\n if (additionalDetails) {\n this.additionalDetails = additionalDetails;\n }\n }\n get imageIds() {\n return this._imageIds;\n }\n set imageIds(newImageIds) {\n this._imageIds = newImageIds;\n this._reprocessImageIds();\n }\n _reprocessImageIds() {\n this._imageIdsIndexMap.clear();\n this._imageURIsIndexMap.clear();\n this._imageIds.forEach((imageId, i) => {\n const imageURI = imageIdToURI(imageId);\n this._imageIdsIndexMap.set(imageId, i);\n this._imageURIsIndexMap.set(imageURI, i);\n });\n }\n isDynamicVolume() {\n return false;\n }\n getScalarData() {\n if (isTypedArray(this.scalarData)) {\n return this.scalarData;\n }\n throw new Error('Unknown scalar data type');\n }\n getImageIdIndex(imageId) {\n return this._imageIdsIndexMap.get(imageId);\n }\n getImageURIIndex(imageURI) {\n return this._imageURIsIndexMap.get(imageURI);\n }\n destroy() {\n this.imageData.delete();\n this.imageData = null;\n this.scalarData = null;\n this.vtkOpenGLTexture.releaseGraphicsResources();\n this.vtkOpenGLTexture.delete();\n }\n getScalarDataArrays() {\n return this.isDynamicVolume()\n ? this.scalarData\n : [this.scalarData];\n }\n decache(completelyRemove = false) {\n if (completelyRemove) {\n this.removeFromCache();\n }\n else {\n this.convertToImageSlicesAndCache();\n }\n }\n removeFromCache() {\n cache.removeVolumeLoadObject(this.volumeId);\n }\n getScalarDataLength() {\n const { scalarData } = this;\n return this.isDynamicVolume()\n ? scalarData[0].length\n : scalarData.length;\n }\n _getNumFrames() {\n const { imageIds, scalarData } = this;\n const scalarDataCount = this.isDynamicVolume() ? scalarData.length : 1;\n return imageIds.length / scalarDataCount;\n }\n _getScalarDataLength() {\n const { scalarData } = this;\n return this.isDynamicVolume()\n ? scalarData[0].length\n : scalarData.length;\n }\n _createCornerstoneImageMetaData() {\n const { numFrames } = this;\n if (numFrames === 0) {\n return;\n }\n const bytesPerImage = this.sizeInBytes / numFrames;\n const scalarDataLength = this._getScalarDataLength();\n const numComponents = scalarDataLength / this.numVoxels;\n const pixelsPerImage = this.dimensions[0] * this.dimensions[1] * numComponents;\n const { PhotometricInterpretation, voiLut, VOILUTFunction } = this.metadata;\n let windowCenter = [];\n let windowWidth = [];\n if (voiLut && voiLut.length) {\n windowCenter = voiLut.map((voi) => {\n return voi.windowCenter;\n });\n windowWidth = voiLut.map((voi) => {\n return voi.windowWidth;\n });\n }\n const color = numComponents > 1 ? true : false;\n this.cornerstoneImageMetaData = {\n bytesPerImage,\n numComponents,\n pixelsPerImage,\n windowCenter,\n windowWidth,\n color,\n rgba: false,\n spacing: this.spacing,\n dimensions: this.dimensions,\n photometricInterpretation: PhotometricInterpretation,\n voiLUTFunction: VOILUTFunction,\n invert: PhotometricInterpretation === 'MONOCHROME1',\n };\n }\n getScalarDataByImageIdIndex(imageIdIndex) {\n if (imageIdIndex < 0 || imageIdIndex >= this.imageIds.length) {\n throw new Error('imageIdIndex out of range');\n }\n const scalarDataArrays = this.getScalarDataArrays();\n const scalarDataIndex = Math.floor(imageIdIndex / this.numFrames);\n return scalarDataArrays[scalarDataIndex];\n }\n getCornerstoneImage(imageId, imageIdIndex) {\n const { imageIds } = this;\n const frameIndex = this.imageIdIndexToFrameIndex(imageIdIndex);\n const { bytesPerImage, pixelsPerImage, windowCenter, windowWidth, numComponents, color, dimensions, spacing, invert, voiLUTFunction, photometricInterpretation, } = this.cornerstoneImageMetaData;\n const scalarData = this.getScalarDataByImageIdIndex(imageIdIndex);\n const volumeBuffer = scalarData.buffer;\n const TypedArray = scalarData.constructor;\n const bytePerPixel = bytesPerImage / pixelsPerImage;\n let byteOffset = bytesPerImage * frameIndex;\n if (scalarData.BYTES_PER_ELEMENT !== bytePerPixel) {\n byteOffset *= scalarData.BYTES_PER_ELEMENT / bytePerPixel;\n }\n const imageScalarData = new TypedArray(pixelsPerImage);\n const volumeBufferView = new TypedArray(volumeBuffer, byteOffset, pixelsPerImage);\n imageScalarData.set(volumeBufferView);\n const volumeImageId = imageIds[imageIdIndex];\n const modalityLutModule = metaData.get('modalityLutModule', volumeImageId) || {};\n const minMax = getMinMax(imageScalarData);\n const intercept = modalityLutModule.rescaleIntercept\n ? modalityLutModule.rescaleIntercept\n : 0;\n return {\n imageId,\n intercept,\n windowCenter,\n windowWidth,\n voiLUTFunction,\n color,\n rgba: false,\n numComps: numComponents,\n rows: dimensions[1],\n columns: dimensions[0],\n sizeInBytes: imageScalarData.byteLength,\n getPixelData: () => imageScalarData,\n minPixelValue: minMax.min,\n maxPixelValue: minMax.max,\n slope: modalityLutModule.rescaleSlope\n ? modalityLutModule.rescaleSlope\n : 1,\n getCanvas: undefined,\n height: dimensions[0],\n width: dimensions[1],\n columnPixelSpacing: spacing[0],\n rowPixelSpacing: spacing[1],\n invert,\n photometricInterpretation,\n };\n }\n imageIdIndexToFrameIndex(imageIdIndex) {\n return imageIdIndex % this.numFrames;\n }\n convertToCornerstoneImage(imageId, imageIdIndex) {\n return this.getCornerstoneImageLoadObject(imageId, imageIdIndex);\n }\n getCornerstoneImageLoadObject(imageId, imageIdIndex) {\n const image = this.getCornerstoneImage(imageId, imageIdIndex);\n const imageLoadObject = {\n promise: Promise.resolve(image),\n };\n return imageLoadObject;\n }\n getCornerstoneImages() {\n const { imageIds } = this;\n return imageIds.map((imageId, imageIdIndex) => {\n return this.getCornerstoneImage(imageId, imageIdIndex);\n });\n }\n convertToImageSlicesAndCache() {\n const byteLength = this.sizeInBytes;\n if (!this.imageIds?.length) {\n const referencedVolumeId = this.referencedVolumeId;\n const referencedVolume = cache.getVolume(referencedVolumeId);\n const numSlices = referencedVolume?.imageIds?.length || this.dimensions[2];\n this.imageIds = Array.from({ length: numSlices }, (_, i) => {\n return `generated:${this.volumeId}:${i}`;\n });\n this._reprocessImageIds();\n this.numFrames = this._getNumFrames();\n this._createCornerstoneImageMetaData();\n }\n const numImages = this.imageIds.length;\n const { bytesPerImage } = this.cornerstoneImageMetaData;\n let bytesRemaining = cache.decacheIfNecessaryUntilBytesAvailable(byteLength, this.imageIds);\n for (let imageIdIndex = 0; imageIdIndex < numImages; imageIdIndex++) {\n const imageId = this.imageIds[imageIdIndex];\n bytesRemaining = bytesRemaining - bytesPerImage;\n const image = this.getCornerstoneImage(imageId, imageIdIndex);\n const imageLoadObject = {\n promise: Promise.resolve(image),\n };\n if (!cache.getImageLoadObject(imageId)) {\n cache.putImageLoadObject(imageId, imageLoadObject).catch((err) => {\n console.error(err);\n });\n }\n if (bytesRemaining <= bytesPerImage) {\n break;\n }\n const imageOrientationPatient = [\n this.direction[0],\n this.direction[1],\n this.direction[2],\n this.direction[3],\n this.direction[4],\n this.direction[5],\n ];\n const precision = 6;\n const imagePositionPatient = [\n parseFloat((this.origin[0] +\n imageIdIndex * this.direction[6] * this.spacing[0]).toFixed(precision)),\n parseFloat((this.origin[1] +\n imageIdIndex * this.direction[7] * this.spacing[1]).toFixed(precision)),\n parseFloat((this.origin[2] +\n imageIdIndex * this.direction[8] * this.spacing[2]).toFixed(precision)),\n ];\n const pixelData = image.getPixelData();\n const bitsAllocated = pixelData.BYTES_PER_ELEMENT * 8;\n const imagePixelModule = {\n bitsAllocated,\n photometricInterpretation: image.photometricInterpretation,\n windowWidth: image.windowWidth,\n windowCenter: image.windowCenter,\n voiLUTFunction: image.voiLUTFunction,\n };\n const imagePlaneModule = {\n rowCosines: [this.direction[0], this.direction[1], this.direction[2]],\n columnCosines: [\n this.direction[3],\n this.direction[4],\n this.direction[5],\n ],\n pixelSpacing: [this.spacing[0], this.spacing[1]],\n imageOrientationPatient: imageOrientationPatient,\n imagePositionPatient: imagePositionPatient,\n columnPixelSpacing: image.columnPixelSpacing,\n rowPixelSpacing: image.rowPixelSpacing,\n columns: image.columns,\n rows: image.rows,\n };\n const generalSeriesModule = {};\n const metadata = {\n imagePixelModule,\n imagePlaneModule,\n generalSeriesModule,\n };\n ['imagePixelModule', 'imagePlaneModule', 'generalSeriesModule'].forEach((type) => {\n genericMetadataProvider.add(imageId, {\n type,\n metadata: metadata[type],\n });\n });\n }\n this.removeFromCache();\n return this.imageIds;\n }\n}\nexport default ImageVolume;\n//# sourceMappingURL=ImageVolume.js.map","import { triggerEvent, imageIdToURI } from '../utilities';\nimport eventTarget from '../eventTarget';\nimport Events from '../enums/Events';\nimport { ImageVolume } from './classes/ImageVolume';\nconst ONE_GB = 1073741824;\nclass Cache {\n constructor() {\n this._imageCache = new Map();\n this._volumeCache = new Map();\n this._imageCacheSize = 0;\n this._volumeCacheSize = 0;\n this._maxCacheSize = 3 * ONE_GB;\n this._maxInstanceSize = 2 * ONE_GB - 8;\n this.setMaxCacheSize = (newMaxCacheSize) => {\n if (!newMaxCacheSize || typeof newMaxCacheSize !== 'number') {\n const errorMessage = `New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;\n throw new Error(errorMessage);\n }\n this._maxCacheSize = newMaxCacheSize;\n };\n this.isCacheable = (byteLength) => {\n if (byteLength > this._maxInstanceSize) {\n return false;\n }\n const unallocatedSpace = this.getBytesAvailable();\n const imageCacheSize = this._imageCacheSize;\n const availableSpace = unallocatedSpace + imageCacheSize;\n return availableSpace > byteLength;\n };\n this.getMaxCacheSize = () => this._maxCacheSize;\n this.getMaxInstanceSize = () => this._maxInstanceSize;\n this.getCacheSize = () => this._imageCacheSize + this._volumeCacheSize;\n this._decacheImage = (imageId) => {\n const { imageLoadObject } = this._imageCache.get(imageId);\n if (imageLoadObject.cancelFn) {\n imageLoadObject.cancelFn();\n }\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n this._imageCache.delete(imageId);\n };\n this._decacheVolume = (volumeId) => {\n const cachedVolume = this._volumeCache.get(volumeId);\n const { volumeLoadObject, volume } = cachedVolume;\n if (volume.cancelLoading) {\n volume.cancelLoading();\n }\n if (volume.imageData) {\n volume.imageData.delete();\n }\n this._restoreImagesFromBuffer(volume);\n if (volumeLoadObject.cancelFn) {\n volumeLoadObject.cancelFn();\n }\n if (volumeLoadObject.decache) {\n volumeLoadObject.decache();\n }\n this._volumeCache.delete(volumeId);\n };\n this.purgeCache = () => {\n const imageIterator = this._imageCache.keys();\n while (true) {\n const { value: imageId, done } = imageIterator.next();\n if (done) {\n break;\n }\n this.removeImageLoadObject(imageId);\n triggerEvent(eventTarget, Events.IMAGE_CACHE_IMAGE_REMOVED, { imageId });\n }\n this.purgeVolumeCache();\n };\n this.purgeVolumeCache = () => {\n const volumeIterator = this._volumeCache.keys();\n while (true) {\n const { value: volumeId, done } = volumeIterator.next();\n if (done) {\n break;\n }\n this.removeVolumeLoadObject(volumeId);\n triggerEvent(eventTarget, Events.VOLUME_CACHE_VOLUME_REMOVED, {\n volumeId,\n });\n }\n };\n this.getVolumeLoadObject = (volumeId) => {\n if (volumeId === undefined) {\n throw new Error('getVolumeLoadObject: volumeId must not be undefined');\n }\n const cachedVolume = this._volumeCache.get(volumeId);\n if (cachedVolume === undefined) {\n return;\n }\n cachedVolume.timeStamp = Date.now();\n return cachedVolume.volumeLoadObject;\n };\n this.getGeometry = (geometryId) => {\n if (geometryId == null) {\n throw new Error('getGeometry: geometryId must not be undefined');\n }\n const cachedGeometry = this._geometryCache.get(geometryId);\n if (cachedGeometry === undefined) {\n return;\n }\n cachedGeometry.timeStamp = Date.now();\n return cachedGeometry.geometry;\n };\n this.getImage = (imageId) => {\n if (imageId === undefined) {\n throw new Error('getImage: imageId must not be undefined');\n }\n const cachedImage = this._imageCache.get(imageId);\n if (cachedImage === undefined) {\n return;\n }\n cachedImage.timeStamp = Date.now();\n return cachedImage.image;\n };\n this.getVolume = (volumeId) => {\n if (volumeId === undefined) {\n throw new Error('getVolume: volumeId must not be undefined');\n }\n const cachedVolume = this._volumeCache.get(volumeId);\n if (cachedVolume === undefined) {\n return;\n }\n cachedVolume.timeStamp = Date.now();\n return cachedVolume.volume;\n };\n this.removeImageLoadObject = (imageId) => {\n if (imageId === undefined) {\n throw new Error('removeImageLoadObject: imageId must not be undefined');\n }\n const cachedImage = this._imageCache.get(imageId);\n if (cachedImage === undefined) {\n throw new Error('removeImageLoadObject: imageId was not present in imageCache');\n }\n this.incrementImageCacheSize(-cachedImage.sizeInBytes);\n const eventDetails = {\n imageId,\n };\n triggerEvent(eventTarget, Events.IMAGE_CACHE_IMAGE_REMOVED, eventDetails);\n this._decacheImage(imageId);\n };\n this.removeVolumeLoadObject = (volumeId) => {\n if (volumeId === undefined) {\n throw new Error('removeVolumeLoadObject: volumeId must not be undefined');\n }\n const cachedVolume = this._volumeCache.get(volumeId);\n if (cachedVolume === undefined) {\n throw new Error('removeVolumeLoadObject: volumeId was not present in volumeCache');\n }\n this.incrementVolumeCacheSize(-cachedVolume.sizeInBytes);\n const eventDetails = {\n volume: cachedVolume,\n volumeId,\n };\n triggerEvent(eventTarget, Events.VOLUME_CACHE_VOLUME_REMOVED, eventDetails);\n this._decacheVolume(volumeId);\n };\n this.putGeometryLoadObject = (geometryId, geometryLoadObject) => {\n if (geometryId == undefined) {\n throw new Error('putGeometryLoadObject: geometryId must not be undefined');\n }\n if (this._geometryCache.has(geometryId)) {\n throw new Error('putGeometryLoadObject: geometryId already present in geometryCache');\n }\n const cachedGeometry = {\n geometryId,\n geometryLoadObject,\n loaded: false,\n timeStamp: Date.now(),\n sizeInBytes: 0,\n };\n this._geometryCache.set(geometryId, cachedGeometry);\n return geometryLoadObject.promise\n .then((geometry) => {\n if (!this._geometryCache.has(geometryId)) {\n console.warn('putGeometryLoadObject: geometryId was removed from geometryCache');\n return;\n }\n if (Number.isNaN(geometry.sizeInBytes)) {\n throw new Error('putGeometryLoadObject: geometry.sizeInBytes is not a number');\n }\n cachedGeometry.loaded = true;\n cachedGeometry.geometry = geometry;\n cachedGeometry.sizeInBytes = geometry.sizeInBytes;\n const eventDetails = {\n geometry,\n geometryId,\n };\n triggerEvent(eventTarget, Events.GEOMETRY_CACHE_GEOMETRY_ADDED, eventDetails);\n return;\n })\n .catch((error) => {\n this._geometryCache.delete(geometryId);\n throw error;\n });\n };\n this.incrementImageCacheSize = (increment) => {\n this._imageCacheSize += increment;\n };\n this.incrementVolumeCacheSize = (increment) => {\n this._volumeCacheSize += increment;\n };\n this.decrementImageCacheSize = (decrement) => {\n this._imageCacheSize -= decrement;\n };\n this.decrementVolumeCacheSize = (decrement) => {\n this._volumeCacheSize -= decrement;\n };\n this._geometryCache = new Map();\n }\n getBytesAvailable() {\n return this.getMaxCacheSize() - this.getCacheSize();\n }\n decacheIfNecessaryUntilBytesAvailable(numBytes, volumeImageIds) {\n let bytesAvailable = this.getBytesAvailable();\n if (bytesAvailable >= numBytes) {\n return bytesAvailable;\n }\n let cachedImages = Array.from(this._imageCache.values());\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return 1;\n }\n if (a.timeStamp < b.timeStamp) {\n return -1;\n }\n return 0;\n }\n cachedImages.sort(compare);\n let cachedImageIds = cachedImages.map((im) => im.imageId);\n let imageIdsToPurge = cachedImageIds;\n if (volumeImageIds) {\n imageIdsToPurge = cachedImageIds.filter((id) => !volumeImageIds.includes(id));\n }\n for (const imageId of imageIdsToPurge) {\n this.removeImageLoadObject(imageId);\n triggerEvent(eventTarget, Events.IMAGE_CACHE_IMAGE_REMOVED, { imageId });\n bytesAvailable = this.getBytesAvailable();\n if (bytesAvailable >= numBytes) {\n return bytesAvailable;\n }\n }\n cachedImages = Array.from(this._imageCache.values());\n cachedImageIds = cachedImages.map((im) => im.imageId);\n for (const imageId of cachedImageIds) {\n this.removeImageLoadObject(imageId);\n triggerEvent(eventTarget, Events.IMAGE_CACHE_IMAGE_REMOVED, { imageId });\n bytesAvailable = this.getBytesAvailable();\n if (bytesAvailable >= numBytes) {\n return bytesAvailable;\n }\n }\n }\n putImageLoadObject(imageId, imageLoadObject) {\n if (imageId === undefined) {\n throw new Error('putImageLoadObject: imageId must not be undefined');\n }\n if (imageLoadObject.promise === undefined) {\n throw new Error('putImageLoadObject: imageLoadObject.promise must not be undefined');\n }\n if (this._imageCache.has(imageId)) {\n throw new Error('putImageLoadObject: imageId already in cache');\n }\n if (imageLoadObject.cancelFn &&\n typeof imageLoadObject.cancelFn !== 'function') {\n throw new Error('putImageLoadObject: imageLoadObject.cancel must be a function');\n }\n const cachedImage = {\n loaded: false,\n imageId,\n sharedCacheKey: undefined,\n imageLoadObject,\n timeStamp: Date.now(),\n sizeInBytes: 0,\n };\n this._imageCache.set(imageId, cachedImage);\n return imageLoadObject.promise\n .then((image) => {\n if (!this._imageCache.get(imageId)) {\n console.warn('The image was purged from the cache before it completed loading.');\n return;\n }\n if (image.sizeInBytes === undefined ||\n Number.isNaN(image.sizeInBytes)) {\n throw new Error('putImageLoadObject: image.sizeInBytes must not be undefined');\n }\n if (image.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes is not a number');\n }\n if (!this.isCacheable(image.sizeInBytes)) {\n throw new Error(Events.CACHE_SIZE_EXCEEDED);\n }\n this.decacheIfNecessaryUntilBytesAvailable(image.sizeInBytes);\n cachedImage.loaded = true;\n cachedImage.image = image;\n cachedImage.sizeInBytes = image.sizeInBytes;\n this.incrementImageCacheSize(cachedImage.sizeInBytes);\n const eventDetails = {\n image: cachedImage,\n };\n triggerEvent(eventTarget, Events.IMAGE_CACHE_IMAGE_ADDED, eventDetails);\n cachedImage.sharedCacheKey = image.sharedCacheKey;\n })\n .catch((error) => {\n this._imageCache.delete(imageId);\n throw error;\n });\n }\n getImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageLoadObject: imageId must not be undefined');\n }\n const cachedImage = this._imageCache.get(imageId);\n if (cachedImage === undefined) {\n return;\n }\n cachedImage.timeStamp = Date.now();\n return cachedImage.imageLoadObject;\n }\n isLoaded(imageId) {\n const cachedImage = this._imageCache.get(imageId);\n if (!cachedImage) {\n return false;\n }\n return cachedImage.loaded;\n }\n getVolumeContainingImageId(imageId) {\n const volumeIds = Array.from(this._volumeCache.keys());\n const imageIdToUse = imageIdToURI(imageId);\n for (const volumeId of volumeIds) {\n const cachedVolume = this._volumeCache.get(volumeId);\n const { volume } = cachedVolume;\n if (!volume?.imageIds?.length) {\n return;\n }\n const imageIdIndex = volume.getImageURIIndex(imageIdToUse);\n if (imageIdIndex > -1) {\n return { volume, imageIdIndex };\n }\n }\n }\n getCachedImageBasedOnImageURI(imageId) {\n const imageURIToUse = imageIdToURI(imageId);\n const cachedImageIds = Array.from(this._imageCache.keys());\n const foundImageId = cachedImageIds.find((imageId) => {\n return imageIdToURI(imageId) === imageURIToUse;\n });\n if (!foundImageId) {\n return;\n }\n return this._imageCache.get(foundImageId);\n }\n putVolumeLoadObject(volumeId, volumeLoadObject) {\n if (volumeId === undefined) {\n throw new Error('putVolumeLoadObject: volumeId must not be undefined');\n }\n if (volumeLoadObject.promise === undefined) {\n throw new Error('putVolumeLoadObject: volumeLoadObject.promise must not be undefined');\n }\n if (this._volumeCache.has(volumeId)) {\n throw new Error(`putVolumeLoadObject: volumeId:${volumeId} already in cache`);\n }\n if (volumeLoadObject.cancelFn &&\n typeof volumeLoadObject.cancelFn !== 'function') {\n throw new Error('putVolumeLoadObject: volumeLoadObject.cancel must be a function');\n }\n const cachedVolume = {\n loaded: false,\n volumeId,\n volumeLoadObject,\n timeStamp: Date.now(),\n sizeInBytes: 0,\n };\n this._volumeCache.set(volumeId, cachedVolume);\n return volumeLoadObject.promise\n .then((volume) => {\n if (!this._volumeCache.get(volumeId)) {\n console.warn('The image was purged from the cache before it completed loading.');\n return;\n }\n if (Number.isNaN(volume.sizeInBytes)) {\n throw new Error('putVolumeLoadObject: volume.sizeInBytes must not be undefined');\n }\n if (volume.sizeInBytes.toFixed === undefined) {\n throw new Error('putVolumeLoadObject: volume.sizeInBytes is not a number');\n }\n this.decacheIfNecessaryUntilBytesAvailable(volume.sizeInBytes, volume.imageIds);\n cachedVolume.volume = volume;\n cachedVolume.sizeInBytes = volume.sizeInBytes;\n this.incrementVolumeCacheSize(cachedVolume.sizeInBytes);\n const eventDetails = {\n volume: cachedVolume,\n };\n triggerEvent(eventTarget, Events.VOLUME_CACHE_VOLUME_ADDED, eventDetails);\n })\n .catch((error) => {\n this._volumeCache.delete(volumeId);\n throw error;\n });\n }\n _restoreImagesFromBuffer(volume) {\n if (!(volume instanceof ImageVolume)) {\n console.warn('Volume is not an ImageVolume. Cannot restore images from buffer.');\n return;\n }\n const scalarData = volume.getScalarData();\n const imageCacheOffsetMap = volume.imageCacheOffsetMap;\n if (imageCacheOffsetMap.size === 0) {\n console.warn('No cached images to restore for this volume.');\n return;\n }\n for (const [imageId, { offset }] of imageCacheOffsetMap) {\n const image = this.getImage(imageId);\n if (!image) {\n console.warn(`Image with id ${imageId} not found in cache.`);\n continue;\n }\n const viewPixelData = image.getPixelData();\n const length = viewPixelData.length;\n const pixelData = new viewPixelData.constructor(scalarData.buffer, offset, length);\n image.getPixelData = () => pixelData;\n if (image.imageFrame) {\n image.imageFrame.pixelData = pixelData;\n }\n delete image.bufferView;\n this.incrementImageCacheSize(image.sizeInBytes);\n }\n console.log(`Images restored from buffer for volume ${volume.volumeId}.`);\n }\n}\nconst cache = new Cache();\nexport default cache;\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { addProvider } from '../metaData';\nlet state = {};\nconst metadataProvider = {\n add: (imageId, payload) => {\n const type = payload.type;\n if (!state[imageId]) {\n state[imageId] = {};\n }\n state[imageId][type] = JSON.parse(JSON.stringify(payload.metadata));\n },\n get: (type, imageId) => {\n return state[imageId]?.[type];\n },\n clear: () => {\n state = {};\n },\n};\naddProvider(metadataProvider.get);\nexport default metadataProvider;\n//# sourceMappingURL=genericMetadataProvider.js.map","var SegmentationRepresentations;\n(function (SegmentationRepresentations) {\n SegmentationRepresentations[\"Labelmap\"] = \"LABELMAP\";\n SegmentationRepresentations[\"Contour\"] = \"CONTOUR\";\n SegmentationRepresentations[\"Surface\"] = \"SURFACE\";\n})(SegmentationRepresentations || (SegmentationRepresentations = {}));\nexport default SegmentationRepresentations;\n//# sourceMappingURL=SegmentationRepresentations.js.map","function findNextLink(line, lines, contourPoints) {\n let index = -1;\n lines.forEach((cell, i) => {\n if (index >= 0) {\n return;\n }\n if (cell.a == line.b) {\n index = i;\n }\n });\n if (index >= 0) {\n const nextLine = lines[index];\n lines.splice(index, 1);\n contourPoints.push(nextLine.b);\n if (contourPoints[0] == nextLine.b) {\n return {\n remainingLines: lines,\n contourPoints,\n type: 'CLOSED_PLANAR',\n };\n }\n return findNextLink(nextLine, lines, contourPoints);\n }\n return {\n remainingLines: lines,\n contourPoints,\n type: 'OPEN_PLANAR',\n };\n}\nexport function findContours(lines) {\n if (lines.length == 0) {\n return [];\n }\n const contourPoints = [];\n const firstCell = lines.shift();\n contourPoints.push(firstCell.a);\n contourPoints.push(firstCell.b);\n const result = findNextLink(firstCell, lines, contourPoints);\n if (result.remainingLines.length == 0) {\n return [\n {\n type: result.type,\n contourPoints: result.contourPoints,\n },\n ];\n }\n else {\n const extraContours = findContours(result.remainingLines);\n extraContours.push({\n type: result.type,\n contourPoints: result.contourPoints,\n });\n return extraContours;\n }\n}\nexport function findContoursFromReducedSet(lines) {\n return findContours(lines);\n}\nexport default {\n findContours,\n findContoursFromReducedSet,\n};\n//# sourceMappingURL=contourFinder.js.map","function ptInArray(array, pt) {\n let index = -1;\n for (let i = 0; i < array.length; i++) {\n if (isSamePoint(pt, array[i])) {\n index = i;\n }\n }\n return index;\n}\nfunction isSamePoint(ptA, ptB) {\n if (ptA[0] == ptB[0] && ptA[1] == ptB[1] && ptA[2] == ptB[2]) {\n return true;\n }\n else {\n return false;\n }\n}\nfunction replacePointIndexReferences(linesArray, oldIndex, newIndex) {\n for (let i = 0; i < linesArray.length; i++) {\n const line = linesArray[i];\n if (line.a == oldIndex) {\n line.a = newIndex;\n }\n else if (line.b == oldIndex) {\n line.b = newIndex;\n }\n }\n}\nexport function removeDuplicatePoints(polyData, bypass = false) {\n const points = polyData.getPoints();\n const lines = polyData.getLines();\n const pointsArray = [];\n for (let i = 0; i < points.getNumberOfPoints(); i++) {\n const pt = points.getPoint(i).slice();\n pointsArray.push(pt);\n }\n const linesArray = [];\n for (let i = 0; i < lines.getNumberOfCells(); i++) {\n const cell = lines.getCell(i * 3).slice();\n const a = cell[0];\n const b = cell[1];\n const line = {\n a,\n b,\n };\n linesArray.push(line);\n }\n if (bypass) {\n return { points: pointsArray, lines: linesArray };\n }\n const newPoints = [];\n for (let i = 0; i < pointsArray.length; i++) {\n const pt = pointsArray[i];\n let index = ptInArray(newPoints, pt);\n if (index >= 0) {\n replacePointIndexReferences(linesArray, i, index);\n }\n else {\n index = newPoints.length;\n newPoints.push(pt);\n replacePointIndexReferences(linesArray, i, index);\n }\n }\n const newLines = [];\n linesArray.forEach((line) => {\n if (line.a != line.b) {\n newLines.push(line);\n }\n });\n return { points: newPoints, lines: newLines };\n}\nexport default { removeDuplicatePoints };\n//# sourceMappingURL=mergePoints.js.map","const getIsPointInsidePolygon = (point, vertices) => {\n const x = point[0];\n const y = point[1];\n let inside = false;\n for (let i = 0, j = vertices.length - 1; i < vertices.length; j = i++) {\n const xi = vertices[i][0], yi = vertices[i][1];\n const xj = vertices[j][0], yj = vertices[j][1];\n const intersect = yi > y != yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n if (intersect) {\n inside = !inside;\n }\n }\n return inside;\n};\nfunction checkEnclosed(outerContour, innerContour, points) {\n const vertices = [];\n outerContour.contourPoints.forEach((point) => {\n vertices.push([points[point][0], points[point][1]]);\n });\n let pointsNotEnclosed = 0;\n innerContour.contourPoints.forEach((point) => {\n const result = getIsPointInsidePolygon([points[point][0], points[point][1]], vertices);\n if (!result) {\n pointsNotEnclosed++;\n }\n });\n return pointsNotEnclosed === 0;\n}\nexport function processContourHoles(contours, points, useXOR = true) {\n const retContours = contours.filter((contour) => contour.type !== 'CLOSED_PLANAR');\n const closedContours = contours.filter((contour) => contour.type === 'CLOSED_PLANAR');\n const contourWithHoles = [];\n let contourWithoutHoles = [];\n closedContours.forEach((contour, index) => {\n const holes = [];\n closedContours.forEach((hContour, hIndex) => {\n if (index != hIndex) {\n if (checkEnclosed(contour, hContour, points)) {\n holes.push(hIndex);\n }\n }\n });\n if (holes.length > 0) {\n contourWithHoles.push({\n contour,\n holes,\n });\n }\n else {\n contourWithoutHoles.push(index);\n }\n });\n if (useXOR) {\n contourWithHoles.forEach((contourHoleSet) => {\n contourHoleSet.contour.type = 'CLOSEDPLANAR_XOR';\n retContours.push(contourHoleSet.contour);\n contourHoleSet.holes.forEach((holeIndex) => {\n closedContours[holeIndex].type = 'CLOSEDPLANAR_XOR';\n retContours.push(closedContours[holeIndex]);\n contourWithoutHoles = contourWithoutHoles.filter((contourIndex) => {\n return contourIndex !== holeIndex;\n });\n });\n });\n contourWithoutHoles.forEach((contourIndex) => {\n retContours.push(closedContours[contourIndex]);\n });\n }\n else {\n }\n return retContours;\n}\nexport default { processContourHoles };\n//# sourceMappingURL=detectContourHoles.js.map","import _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\n\nvar EdgeLocator = /*#__PURE__*/function () {\n function EdgeLocator() {\n var oriented = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n _classCallCheck(this, EdgeLocator);\n\n this.oriented = oriented;\n this.edgeMap = new Map();\n }\n\n _createClass(EdgeLocator, [{\n key: \"initialize\",\n value: function initialize() {\n this.edgeMap.clear();\n }\n }, {\n key: \"computeEdgeKey\",\n value: function computeEdgeKey(pointId0, pointId1) {\n return this.oriented || pointId0 < pointId1 ? // Cantor pairing function:\n 0.5 * (pointId0 * pointId1) * (pointId0 * pointId1 + 1) + pointId1 : 0.5 * (pointId1 * pointId0) * (pointId1 * pointId0 + 1) + pointId0;\n }\n }, {\n key: \"insertUniqueEdge\",\n value: function insertUniqueEdge(pointId0, pointId1, newEdgeValue) {\n // Generate a unique key\n var key = this.computeEdgeKey(pointId0, pointId1);\n var node = this.edgeMap.get(key);\n\n if (!node) {\n // Didn't find key, so add a new edge entry\n node = {\n key: key,\n edgeId: this.edgeMap.size,\n value: newEdgeValue\n };\n this.edgeMap.set(key, node);\n }\n\n return node;\n }\n }, {\n key: \"insertEdge\",\n value: function insertEdge(pointId0, pointId1, newEdgeValue) {\n // Generate a unique key\n var key = this.computeEdgeKey(pointId0, pointId1);\n var node = {\n key: key,\n edgeId: this.edgeMap.size,\n value: newEdgeValue\n };\n this.edgeMap.set(key, node);\n return node;\n }\n }, {\n key: \"isInsertedEdge\",\n value: function isInsertedEdge(pointId0, pointId1) {\n var key = this.computeEdgeKey(pointId0, pointId1);\n return this.edgeMap.get(key);\n }\n }], [{\n key: \"getEdgePointIds\",\n value: function getEdgePointIds(node) {\n var n = 0.5 * (-1 + Math.sqrt(8 * node.key + 1));\n var pointId0 = node.key - 0.5 * (n + 1) * n;\n var pointId1 = n - pointId0;\n return [pointId0, pointId1];\n }\n }]);\n\n return EdgeLocator;\n}();\n\nfunction newInstance() {\n var initialValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new EdgeLocator(initialValues.oriented);\n}\n\nvar vtkEdgeLocator = {\n newInstance: newInstance\n};\n\nexport { vtkEdgeLocator as default };\n","// ----------------------------------------------------------------------------\n// Marching squares case functions (using lines to generate the 2D tessellation).\n// For each case, a list of edge ids that form the triangles. A -1 marks the\n// end of the list of edges. Edges are taken three at a time to generate\n// triangle points.\n// ----------------------------------------------------------------------------\nvar MARCHING_SQUARES_CASES = [[-1, -1, -1, -1, -1]\n/* 0 */\n, [0, 3, -1, -1, -1]\n/* 1 */\n, [1, 0, -1, -1, -1]\n/* 2 */\n, [1, 3, -1, -1, -1]\n/* 3 */\n, [2, 1, -1, -1, -1]\n/* 4 */\n, [0, 3, 2, 1, -1]\n/* 5 */\n, [2, 0, -1, -1, -1]\n/* 6 */\n, [2, 3, -1, -1, -1]\n/* 7 */\n, [3, 2, -1, -1, -1]\n/* 8 */\n, [0, 2, -1, -1, -1]\n/* 9 */\n, [1, 0, 3, 2, -1]\n/* 10 */\n, [1, 2, -1, -1, -1]\n/* 11 */\n, [3, 1, -1, -1, -1]\n/* 12 */\n, [0, 1, -1, -1, -1]\n/* 13 */\n, [3, 0, -1, -1, -1]\n/* 14 */\n, [-1, -1, -1, -1, -1]\n/* 15 */\n];\nvar EDGES = [[0, 1], [1, 3], [2, 3], [0, 2]];\n\nfunction getCase(index) {\n return MARCHING_SQUARES_CASES[index];\n} // Define the four edges of the pixel by the following pairs of vertices\n\n\nfunction getEdge(eid) {\n return EDGES[eid];\n} // ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\n\nvar vtkCaseTable = {\n getCase: getCase,\n getEdge: getEdge\n};\n\nexport { vtkCaseTable as default };\n","import macro from '../../macros.js';\nimport vtkPolyData from '../../Common/DataModel/PolyData.js';\nimport vtkEdgeLocator from '../../Common/DataModel/EdgeLocator.js';\nimport vtkCaseTable from './ImageMarchingSquares/caseTable.js';\n\nvar vtkErrorMacro = macro.vtkErrorMacro,\n vtkDebugMacro = macro.vtkDebugMacro; // ----------------------------------------------------------------------------\n// vtkImageMarchingSquares methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageMarchingSquares(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageMarchingSquares');\n\n publicAPI.getContourValues = function () {\n return model.contourValues;\n };\n\n publicAPI.setContourValues = function (cValues) {\n model.contourValues = cValues;\n publicAPI.modified();\n };\n\n var ids = [];\n var pixelScalars = [];\n var pixelPts = [];\n var edgeLocator = vtkEdgeLocator.newInstance(); // Retrieve scalars and pixel coordinates. i-j-k is origin of pixel.\n\n publicAPI.getPixelScalars = function (i, j, k, slice, dims, origin, spacing, s) {\n // First get the indices for the pixel\n ids[0] = k * slice + j * dims[0] + i; // i, j, k\n\n ids[1] = ids[0] + 1; // i+1, j, k\n\n ids[2] = ids[0] + dims[0]; // i, j+1, k\n\n ids[3] = ids[2] + 1; // i+1, j+1, k\n // Now retrieve the scalars\n\n for (var ii = 0; ii < 4; ++ii) {\n pixelScalars[ii] = s[ids[ii]];\n }\n }; // Retrieve pixel coordinates. i-j-k is origin of pixel.\n\n\n publicAPI.getPixelPoints = function (i, j, k, dims, origin, spacing) {\n // (i,i+1),(j,j+1),(k,k+1) - i varies fastest; then j; then k\n pixelPts[0] = origin[0] + i * spacing[0]; // 0\n\n pixelPts[1] = origin[1] + j * spacing[1];\n pixelPts[2] = pixelPts[0] + spacing[0]; // 1\n\n pixelPts[3] = pixelPts[1];\n pixelPts[4] = pixelPts[0]; // 2\n\n pixelPts[5] = pixelPts[1] + spacing[1];\n pixelPts[6] = pixelPts[2]; // 3\n\n pixelPts[7] = pixelPts[5];\n };\n\n publicAPI.produceLines = function (cVal, i, j, k, slice, dims, origin, spacing, scalars, points, lines) {\n var CASE_MASK = [1, 2, 8, 4]; // case table is actually for quad\n\n var xyz = [];\n var pId;\n publicAPI.getPixelScalars(i, j, k, slice, dims, origin, spacing, scalars);\n var index = 0;\n\n for (var idx = 0; idx < 4; idx++) {\n if (pixelScalars[idx] >= cVal) {\n index |= CASE_MASK[idx]; // eslint-disable-line no-bitwise\n }\n }\n\n var pixelLines = vtkCaseTable.getCase(index);\n\n if (pixelLines[0] < 0) {\n return; // don't get the pixel coordinates, nothing to do\n }\n\n publicAPI.getPixelPoints(i, j, k, dims, origin, spacing);\n var z = origin[2] + k * spacing[2];\n\n for (var _idx = 0; pixelLines[_idx] >= 0; _idx += 3) {\n lines.push(2);\n\n for (var eid = 0; eid < 2; eid++) {\n var edgeVerts = vtkCaseTable.getEdge(pixelLines[_idx + eid]);\n pId = undefined;\n\n if (model.mergePoints) {\n var _edgeLocator$isInsert;\n\n pId = (_edgeLocator$isInsert = edgeLocator.isInsertedEdge(ids[edgeVerts[0]], ids[edgeVerts[1]])) === null || _edgeLocator$isInsert === void 0 ? void 0 : _edgeLocator$isInsert.value;\n }\n\n if (pId === undefined) {\n var t = (cVal - pixelScalars[edgeVerts[0]]) / (pixelScalars[edgeVerts[1]] - pixelScalars[edgeVerts[0]]);\n var x0 = pixelPts.slice(edgeVerts[0] * 2, (edgeVerts[0] + 1) * 2);\n var x1 = pixelPts.slice(edgeVerts[1] * 2, (edgeVerts[1] + 1) * 2);\n xyz[0] = x0[0] + t * (x1[0] - x0[0]);\n xyz[1] = x0[1] + t * (x1[1] - x0[1]);\n pId = points.length / 3;\n points.push(xyz[0], xyz[1], z);\n\n if (model.mergePoints) {\n edgeLocator.insertEdge(ids[edgeVerts[0]], ids[edgeVerts[1]], pId);\n }\n }\n\n lines.push(pId);\n }\n }\n };\n\n publicAPI.requestData = function (inData, outData) {\n // implement requestData\n var input = inData[0];\n\n if (!input) {\n vtkErrorMacro('Invalid or missing input');\n return;\n }\n\n console.time('msquares'); // Retrieve output and volume data\n\n var origin = input.getOrigin();\n var spacing = input.getSpacing();\n var dims = input.getDimensions();\n var s = input.getPointData().getScalars().getData(); // Points - dynamic array\n\n var pBuffer = []; // Cells - dynamic array\n\n var lBuffer = []; // Ensure slice is valid\n\n var slice = dims[0] * dims[1];\n var k = Math.round(model.slice);\n\n if (k >= dims[2]) {\n k = 0;\n } // Loop over all contour values, and then pixels, determine case and process\n\n\n for (var cv = 0; cv < model.contourValues.length; ++cv) {\n for (var j = 0; j < dims[1] - 1; ++j) {\n for (var i = 0; i < dims[0] - 1; ++i) {\n publicAPI.produceLines(model.contourValues[cv], i, j, k, slice, dims, origin, spacing, s, pBuffer, lBuffer);\n }\n }\n\n edgeLocator.initialize();\n } // Update output\n\n\n var polydata = vtkPolyData.newInstance();\n polydata.getPoints().setData(new Float32Array(pBuffer), 3);\n polydata.getLines().setData(new Uint32Array(lBuffer));\n outData[0] = polydata;\n vtkDebugMacro('Produced output');\n console.timeEnd('msquares');\n };\n} // ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\n\nvar DEFAULT_VALUES = {\n contourValues: [],\n slice: 0,\n mergePoints: false\n}; // ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model) {\n var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.assign(model, DEFAULT_VALUES, initialValues); // Make this a VTK object\n\n macro.obj(publicAPI, model); // Also make it an algorithm with one input and one output\n\n macro.algo(publicAPI, model, 1, 1);\n macro.setGet(publicAPI, model, ['slice', 'mergePoints']); // Object specific methods\n\n macro.algo(publicAPI, model, 1, 1);\n vtkImageMarchingSquares(publicAPI, model);\n} // ----------------------------------------------------------------------------\n\nvar newInstance = macro.newInstance(extend, 'vtkImageMarchingSquares'); // ----------------------------------------------------------------------------\n\nvar vtkImageMarchingSquares$1 = {\n newInstance: newInstance,\n extend: extend\n};\n\nexport { vtkImageMarchingSquares$1 as default, extend, newInstance };\n","import { cache as cornerstoneCache } from '@cornerstonejs/core';\nimport vtkImageMarchingSquares from '@kitware/vtk.js/Filters/General/ImageMarchingSquares';\nimport vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';\nimport vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';\nimport { removeDuplicatePoints } from './mergePoints';\nimport { findContoursFromReducedSet } from './contourFinder';\nimport SegmentationRepresentations from '../../enums/SegmentationRepresentations';\nconst { Labelmap } = SegmentationRepresentations;\nfunction generateContourSetsFromLabelmap({ segmentations }) {\n const { representationData, segments = [0, 1] } = segmentations;\n const { volumeId: segVolumeId } = representationData[Labelmap];\n const vol = cornerstoneCache.getVolume(segVolumeId);\n if (!vol) {\n console.warn(`No volume found for ${segVolumeId}`);\n return;\n }\n const numSlices = vol.dimensions[2];\n const imageVol = cornerstoneCache.getVolume(vol.referencedVolumeId);\n if (!imageVol) {\n console.warn(`No volume found for ${vol.referencedVolumeId}`);\n return;\n }\n const segData = vol.imageData.getPointData().getScalars().getData();\n const pixelsPerSlice = vol.dimensions[0] * vol.dimensions[1];\n for (let z = 0; z < numSlices; z++) {\n for (let y = 0; y < vol.dimensions[1]; y++) {\n const index = y * vol.dimensions[0] + z * pixelsPerSlice;\n segData[index] = 0;\n segData[index + vol.dimensions[0] - 1] = 0;\n }\n }\n const ContourSets = [];\n const { FrameOfReferenceUID } = imageVol.metadata;\n const numSegments = segments.length;\n for (let segIndex = 0; segIndex < numSegments; segIndex++) {\n const segment = segments[segIndex];\n if (!segment) {\n continue;\n }\n const sliceContours = [];\n const scalars = vtkDataArray.newInstance({\n name: 'Scalars',\n numberOfComponents: 1,\n size: pixelsPerSlice * numSlices,\n dataType: 'Uint8Array',\n });\n const { containedSegmentIndices } = segment;\n for (let sliceIndex = 0; sliceIndex < numSlices; sliceIndex++) {\n if (isSliceEmptyForSegment(sliceIndex, segData, pixelsPerSlice, segIndex)) {\n continue;\n }\n const frameStart = sliceIndex * pixelsPerSlice;\n try {\n for (let i = 0; i < pixelsPerSlice; i++) {\n const value = segData[i + frameStart];\n if (value === segIndex || containedSegmentIndices?.has(value)) {\n scalars.setValue(i + frameStart, 1);\n }\n else {\n scalars.setValue(i, 0);\n }\n }\n const mSquares = vtkImageMarchingSquares.newInstance({\n slice: sliceIndex,\n });\n const imageDataCopy = vtkImageData.newInstance();\n imageDataCopy.shallowCopy(vol.imageData);\n imageDataCopy.getPointData().setScalars(scalars);\n mSquares.setInputData(imageDataCopy);\n const cValues = [1];\n mSquares.setContourValues(cValues);\n mSquares.setMergePoints(false);\n const msOutput = mSquares.getOutputData();\n const reducedSet = removeDuplicatePoints(msOutput);\n if (reducedSet.points?.length) {\n const contours = findContoursFromReducedSet(reducedSet.lines);\n sliceContours.push({\n referencedImageId: imageVol.imageIds[sliceIndex],\n contours,\n polyData: reducedSet,\n FrameNumber: sliceIndex + 1,\n sliceIndex,\n FrameOfReferenceUID,\n });\n }\n }\n catch (e) {\n console.warn(sliceIndex);\n console.warn(e);\n }\n }\n const metadata = {\n referencedImageId: imageVol.imageIds[0],\n FrameOfReferenceUID,\n };\n const ContourSet = {\n label: segment.label,\n color: segment.color,\n metadata,\n sliceContours,\n };\n ContourSets.push(ContourSet);\n }\n return ContourSets;\n}\nfunction isSliceEmptyForSegment(sliceIndex, segData, pixelsPerSlice, segIndex) {\n const startIdx = sliceIndex * pixelsPerSlice;\n const endIdx = startIdx + pixelsPerSlice;\n for (let i = startIdx; i < endIdx; i++) {\n if (segData[i] === segIndex) {\n return false;\n }\n }\n return true;\n}\nexport { generateContourSetsFromLabelmap };\n//# sourceMappingURL=generateContourSetsFromLabelmap.js.map","class RectangleROIStartEndThreshold {\n constructor() {\n }\n static getContourSequence(toolData, metadataProvider) {\n const { data } = toolData;\n const { projectionPoints, projectionPointsImageIds } = data.cachedStats;\n return projectionPoints.map((point, index) => {\n const ContourData = getPointData(point);\n const ContourImageSequence = getContourImageSequence(projectionPointsImageIds[index], metadataProvider);\n return {\n NumberOfContourPoints: ContourData.length / 3,\n ContourImageSequence,\n ContourGeometricType: 'CLOSED_PLANAR',\n ContourData,\n };\n });\n }\n}\nRectangleROIStartEndThreshold.toolName = 'RectangleROIStartEndThreshold';\nfunction getPointData(points) {\n const orderedPoints = [\n ...points[0],\n ...points[1],\n ...points[3],\n ...points[2],\n ];\n const pointsArray = orderedPoints.flat();\n const pointsArrayWithPrecision = pointsArray.map((point) => {\n return point.toFixed(2);\n });\n return pointsArrayWithPrecision;\n}\nfunction getContourImageSequence(imageId, metadataProvider) {\n const sopCommon = metadataProvider.get('sopCommonModule', imageId);\n return {\n ReferencedSOPClassUID: sopCommon.sopClassUID,\n ReferencedSOPInstanceUID: sopCommon.sopInstanceUID,\n };\n}\nexport default RectangleROIStartEndThreshold;\n//# sourceMappingURL=RectangleROIStartEndThreshold.js.map","import RectangleROIStartEndThreshold from './RectangleROIStartEndThreshold';\nfunction validateAnnotation(annotation) {\n if (!annotation?.data) {\n throw new Error('Tool data is empty');\n }\n if (!annotation.metadata || annotation.metadata.referenceImageId) {\n throw new Error('Tool data is not associated with any imageId');\n }\n}\nclass AnnotationToPointData {\n constructor() {\n }\n static { this.TOOL_NAMES = {}; }\n static convert(annotation, index, metadataProvider) {\n validateAnnotation(annotation);\n const { toolName } = annotation.metadata;\n const toolClass = AnnotationToPointData.TOOL_NAMES[toolName];\n if (!toolClass) {\n throw new Error(`Unknown tool type: ${toolName}, cannot convert to RTSSReport`);\n }\n const ContourSequence = toolClass.getContourSequence(annotation, metadataProvider);\n const color = [\n Math.floor(Math.random() * 255),\n Math.floor(Math.random() * 255),\n Math.floor(Math.random() * 255),\n ];\n return {\n ReferencedROINumber: index + 1,\n ROIDisplayColor: color,\n ContourSequence,\n };\n }\n static register(toolClass) {\n AnnotationToPointData.TOOL_NAMES[toolClass.toolName] = toolClass;\n }\n}\nAnnotationToPointData.register(RectangleROIStartEndThreshold);\nexport default AnnotationToPointData;\n//# sourceMappingURL=AnnotationToPointData.js.map","export default function getPatientModule(imageId, metadataProvider) {\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n imageId\n );\n const generalStudyModule = metadataProvider.get(\n \"generalStudyModule\",\n imageId\n );\n const patientStudyModule = metadataProvider.get(\n \"patientStudyModule\",\n imageId\n );\n const patientModule = metadataProvider.get(\"patientModule\", imageId);\n const patientDemographicModule = metadataProvider.get(\n \"patientDemographicModule\",\n imageId\n );\n\n return {\n Modality: generalSeriesModule.modality,\n PatientID: patientModule.patientId,\n PatientName: patientModule.patientName,\n PatientBirthDate: \"\",\n PatientAge: patientStudyModule.patientAge,\n PatientSex: patientDemographicModule.patientSex,\n PatientWeight: patientStudyModule.patientWeight,\n StudyDate: generalStudyModule.studyDate,\n StudyTime: generalStudyModule.studyTime,\n StudyID: \"ToDo\",\n AccessionNumber: generalStudyModule.accessionNumber\n };\n}\n","export default function getReferencedFrameOfReferenceSequence(\n metadata,\n metadataProvider,\n dataset\n) {\n const { referencedImageId: imageId, FrameOfReferenceUID } = metadata;\n const instance = metadataProvider.get(\"instance\", imageId);\n const { SeriesInstanceUID } = instance;\n\n const { ReferencedSeriesSequence } = dataset;\n\n return [\n {\n FrameOfReferenceUID,\n RTReferencedStudySequence: [\n {\n ReferencedSOPClassUID: dataset.SOPClassUID,\n ReferencedSOPInstanceUID: dataset.SOPInstanceUID,\n RTReferencedSeriesSequence: [\n {\n SeriesInstanceUID,\n ContourImageSequence: [\n ...ReferencedSeriesSequence[0]\n .ReferencedInstanceSequence\n ]\n }\n ]\n }\n ]\n }\n ];\n}\n","export default function getReferencedSeriesSequence(\n metadata,\n _index,\n metadataProvider,\n DicomMetadataStore\n) {\n // grab imageId from toolData\n const { referencedImageId: imageId } = metadata;\n const instance = metadataProvider.get(\"instance\", imageId);\n const { SeriesInstanceUID, StudyInstanceUID } = instance;\n\n const ReferencedSeriesSequence = [];\n if (SeriesInstanceUID) {\n const series = DicomMetadataStore.getSeries(\n StudyInstanceUID,\n SeriesInstanceUID\n );\n\n const ReferencedSeries = {\n SeriesInstanceUID,\n ReferencedInstanceSequence: []\n };\n\n series.instances.forEach(instance => {\n const { SOPInstanceUID, SOPClassUID } = instance;\n ReferencedSeries.ReferencedInstanceSequence.push({\n ReferencedSOPClassUID: SOPClassUID,\n ReferencedSOPInstanceUID: SOPInstanceUID\n });\n });\n\n ReferencedSeriesSequence.push(ReferencedSeries);\n }\n\n return ReferencedSeriesSequence;\n}\n","export default function getRTROIObservationsSequence(toolData, index) {\n return {\n ObservationNumber: index + 1,\n ReferencedROINumber: index + 1,\n RTROIInterpretedType: \"Todo: type\",\n ROIInterpreter: \"Todo: interpreter\"\n };\n}\n","export default function getRTSeriesModule(DicomMetaDictionary) {\n return {\n SeriesInstanceUID: DicomMetaDictionary.uid(), // generate a new series instance uid\n SeriesNumber: \"99\" // Todo:: what should be the series number?\n };\n}\n","export default function getStructureSetModule(contour, index) {\n const { FrameOfReferenceUID } = contour.metadata;\n\n return {\n ROINumber: index + 1,\n ROIName: contour.name || `Todo: name ${index + 1}`,\n ROIDescription: `Todo: description ${index + 1}`,\n ROIGenerationAlgorithm: \"Todo: algorithm\",\n ReferencedFrameOfReferenceUID: FrameOfReferenceUID\n };\n}\n","import { utilities } from \"@cornerstonejs/tools\";\nimport dcmjs from \"dcmjs\";\nimport getPatientModule from \"./utilities/getPatientModule\";\nimport getReferencedFrameOfReferenceSequence from \"./utilities/getReferencedFrameOfReferenceSequence\";\nimport getReferencedSeriesSequence from \"./utilities/getReferencedSeriesSequence\";\nimport getRTROIObservationsSequence from \"./utilities/getRTROIObservationsSequence\";\nimport getRTSeriesModule from \"./utilities/getRTSeriesModule\";\nimport getStructureSetModule from \"./utilities/getStructureSetModule\";\n\nconst { generateContourSetsFromLabelmap, AnnotationToPointData } =\n utilities.contours;\nconst { DicomMetaDictionary } = dcmjs.data;\n\n/**\n * Convert handles to RTSS report containing the dcmjs dicom dataset.\n *\n * Note: current WIP and using segmentation to contour conversion,\n * routine that is not fully tested\n *\n * @param segmentations - Cornerstone tool segmentations data\n * @param metadataProvider - Metadata provider\n * @param DicomMetadataStore - metadata store instance\n * @param cs - cornerstone instance\n * @param csTools - cornerstone tool instance\n * @returns Report object containing the dataset\n */\nfunction generateRTSSFromSegmentations(\n segmentations,\n metadataProvider,\n DicomMetadataStore\n) {\n // Convert segmentations to ROIContours\n const roiContours = [];\n\n const contourSets = generateContourSetsFromLabelmap({\n segmentations\n });\n\n contourSets.forEach((contourSet, segIndex) => {\n // Check contour set isn't undefined\n if (contourSet) {\n const contourSequence = [];\n contourSet.sliceContours.forEach(sliceContour => {\n /**\n * addContour - Adds a new ROI with related contours to ROIContourSequence\n *\n * @param newContour - cornerstoneTools `ROIContour` object\n *\n * newContour = {\n * name: string,\n * description: string,\n * contourSequence: array[contour]\n * color: array[number],\n * metadata: {\n * referencedImageId: string,\n * FrameOfReferenceUID: string\n * }\n * }\n *\n * contour = {\n * ContourImageSequence: array[\n * { ReferencedSOPClassUID: string, ReferencedSOPInstanceUID: string}\n * ]\n * ContourGeometricType: string,\n * NumberOfContourPoints: number,\n * ContourData: array[number]\n * }\n */\n // Note: change needed if support non-planar contour representation is needed\n const sopCommon = metadataProvider.get(\n \"sopCommonModule\",\n sliceContour.referencedImageId\n );\n const ReferencedSOPClassUID = sopCommon.sopClassUID;\n const ReferencedSOPInstanceUID = sopCommon.sopInstanceUID;\n const ContourImageSequence = [\n { ReferencedSOPClassUID, ReferencedSOPInstanceUID } // NOTE: replace in dcmjs?\n ];\n\n const sliceContourPolyData = sliceContour.polyData;\n\n sliceContour.contours.forEach((contour, index) => {\n const ContourGeometricType = contour.type;\n const NumberOfContourPoints = contour.contourPoints.length;\n const ContourData = [];\n\n contour.contourPoints.forEach(point => {\n const pointData = sliceContourPolyData.points[point];\n pointData[0] = +pointData[0].toFixed(2);\n pointData[1] = +pointData[1].toFixed(2);\n pointData[2] = +pointData[2].toFixed(2);\n ContourData.push(pointData[0]);\n ContourData.push(pointData[1]);\n ContourData.push(pointData[2]);\n });\n\n contourSequence.push({\n ContourImageSequence,\n ContourGeometricType,\n NumberOfContourPoints,\n ContourNumber: index + 1,\n ContourData\n });\n });\n });\n\n const segLabel = contourSet.label || `Segment ${segIndex + 1}`;\n\n const ROIContour = {\n name: segLabel,\n description: segLabel,\n contourSequence,\n color: contourSet.color,\n metadata: contourSet.metadata\n };\n\n roiContours.push(ROIContour);\n }\n });\n\n const rtMetadata = {\n name: segmentations.label,\n label: segmentations.label\n };\n\n const dataset = _initializeDataset(\n rtMetadata,\n roiContours[0].metadata,\n metadataProvider\n );\n\n roiContours.forEach((contour, index) => {\n const roiContour = {\n ROIDisplayColor: contour.color || [255, 0, 0],\n ContourSequence: contour.contourSequence,\n ReferencedROINumber: index + 1\n };\n\n dataset.StructureSetROISequence.push(\n getStructureSetModule(contour, index)\n );\n\n dataset.ROIContourSequence.push(roiContour);\n\n // ReferencedSeriesSequence\n dataset.ReferencedSeriesSequence = getReferencedSeriesSequence(\n contour.metadata,\n index,\n metadataProvider,\n DicomMetadataStore\n );\n\n // ReferencedFrameOfReferenceSequence\n dataset.ReferencedFrameOfReferenceSequence =\n getReferencedFrameOfReferenceSequence(\n contour.metadata,\n metadataProvider,\n dataset\n );\n });\n\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n dataset._meta = _meta;\n\n return dataset;\n}\n\n/**\n * Convert handles to RTSSReport report object containing the dcmjs dicom dataset.\n *\n * Note: The tool data needs to be formatted in a specific way, and currently\n * it is limited to the RectangleROIStartEndTool in the Cornerstone.\n *\n * @param annotations - Array of Cornerstone tool annotation data\n * @param metadataProvider - Metadata provider\n * @returns Report object containing the dataset\n */\nfunction generateRTSSFromAnnotations(\n annotations,\n metadataProvider,\n DicomMetadataStore\n) {\n const rtMetadata = {\n name: \"RTSS from Annotations\",\n label: \"RTSS from Annotations\"\n };\n const dataset = _initializeDataset(\n rtMetadata,\n annotations[0].metadata,\n metadataProvider\n );\n\n annotations.forEach((annotation, index) => {\n const ContourSequence = AnnotationToPointData.convert(\n annotation,\n index,\n metadataProvider\n );\n\n dataset.StructureSetROISequence.push(\n getStructureSetModule(annotation, index)\n );\n\n dataset.ROIContourSequence.push(ContourSequence);\n dataset.RTROIObservationsSequence.push(\n getRTROIObservationsSequence(annotation, index)\n );\n\n // ReferencedSeriesSequence\n // Todo: handle more than one series\n dataset.ReferencedSeriesSequence = getReferencedSeriesSequence(\n annotation.metadata,\n index,\n metadataProvider,\n DicomMetadataStore\n );\n\n // ReferencedFrameOfReferenceSequence\n dataset.ReferencedFrameOfReferenceSequence =\n getReferencedFrameOfReferenceSequence(\n annotation.metadata,\n metadataProvider,\n dataset\n );\n });\n\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n dataset._meta = _meta;\n\n return dataset;\n}\n\n// /**\n// * Generate Cornerstone tool state from dataset\n// * @param {object} dataset dataset\n// * @param {object} hooks\n// * @param {function} hooks.getToolClass Function to map dataset to a tool class\n// * @returns\n// */\n// //static generateToolState(_dataset, _hooks = {}) {\n// function generateToolState() {\n// // Todo\n// console.warn(\"RTSS.generateToolState not implemented\");\n// }\n\nfunction _initializeDataset(rtMetadata, imgMetadata, metadataProvider) {\n const rtSOPInstanceUID = DicomMetaDictionary.uid();\n\n // get the first annotation data\n const { referencedImageId: imageId, FrameOfReferenceUID } = imgMetadata;\n\n const { studyInstanceUID } = metadataProvider.get(\n \"generalSeriesModule\",\n imageId\n );\n\n const patientModule = getPatientModule(imageId, metadataProvider);\n const rtSeriesModule = getRTSeriesModule(DicomMetaDictionary);\n\n return {\n StructureSetROISequence: [],\n ROIContourSequence: [],\n RTROIObservationsSequence: [],\n ReferencedSeriesSequence: [],\n ReferencedFrameOfReferenceSequence: [],\n ...patientModule,\n ...rtSeriesModule,\n StudyInstanceUID: studyInstanceUID,\n SOPClassUID: \"1.2.840.10008.5.1.4.1.1.481.3\", // RT Structure Set Storage\n SOPInstanceUID: rtSOPInstanceUID,\n Manufacturer: \"dcmjs\",\n Modality: \"RTSTRUCT\",\n FrameOfReferenceUID,\n PositionReferenceIndicator: \"\",\n StructureSetLabel: rtMetadata.label || \"\",\n StructureSetName: rtMetadata.name || \"\",\n ReferringPhysicianName: \"\",\n OperatorsName: \"\",\n StructureSetDate: DicomMetaDictionary.date(),\n StructureSetTime: DicomMetaDictionary.time(),\n _meta: null\n };\n}\n\nexport { generateRTSSFromSegmentations, generateRTSSFromAnnotations };\n","import { utilities } from \"@cornerstonejs/tools\";\nimport {\n generateRTSSFromAnnotations,\n generateRTSSFromSegmentations\n} from \"./RTSS\";\n\nconst { generateContourSetsFromLabelmap } = utilities.contours;\n\nexport {\n generateContourSetsFromLabelmap,\n generateRTSSFromAnnotations,\n generateRTSSFromSegmentations\n};\n","import MeasurementReport from \"./MeasurementReport\";\nimport CodeScheme from \"./CodingScheme\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\n\nimport ArrowAnnotate from \"./ArrowAnnotate\";\nimport Bidirectional from \"./Bidirectional\";\nimport Angle from \"./Angle\";\nimport CobbAngle from \"./CobbAngle\";\nimport CircleROI from \"./CircleROI\";\nimport EllipticalROI from \"./EllipticalROI\";\nimport RectangleROI from \"./RectangleROI\";\nimport Length from \"./Length\";\nimport PlanarFreehandROI from \"./PlanarFreehandROI\";\nimport Probe from \"./Probe\";\n\nimport * as Segmentation from \"./Segmentation\";\nimport * as RTSS from \"./RTStruct\";\n\nconst Cornerstone3DSR = {\n Bidirectional,\n CobbAngle,\n Angle,\n Length,\n CircleROI,\n EllipticalROI,\n RectangleROI,\n ArrowAnnotate,\n Probe,\n PlanarFreehandROI,\n MeasurementReport,\n CodeScheme,\n CORNERSTONE_3D_TAG\n};\n\nconst Cornerstone3DSEG = {\n Segmentation\n};\n\nconst Cornerstone3DRT = {\n RTSS\n};\n\nexport { Cornerstone3DSR, Cornerstone3DSEG, Cornerstone3DRT };\n","import { data } from \"dcmjs\";\n\nconst { Colors, BitArray } = data;\n\n// TODO: Is there a better name for this? RGBAInt?\n// Should we move it to Colors.js\nfunction dicomlab2RGBA(cielab) {\n const rgba = Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));\n rgba.push(255);\n\n return rgba;\n}\n\n// TODO: Copied these functions in from VTK Math so we don't need a dependency.\n// I guess we should put them somewhere\n// https://github.com/Kitware/vtk-js/blob/master/Sources/Common/Core/Math/index.js\nfunction cross(x, y, out) {\n const Zx = x[1] * y[2] - x[2] * y[1];\n const Zy = x[2] * y[0] - x[0] * y[2];\n const Zz = x[0] * y[1] - x[1] * y[0];\n out[0] = Zx;\n out[1] = Zy;\n out[2] = Zz;\n}\n\nfunction norm(x, n = 3) {\n switch (n) {\n case 1:\n return Math.abs(x);\n case 2:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1]);\n case 3:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);\n default: {\n let sum = 0;\n for (let i = 0; i < n; i++) {\n sum += x[i] * x[i];\n }\n return Math.sqrt(sum);\n }\n }\n}\n\nfunction normalize(x) {\n const den = norm(x);\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n x[2] /= den;\n }\n return den;\n}\n\nfunction subtract(a, b, out) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n}\n\n// TODO: This is a useful utility on its own. We should move it somewhere?\n// dcmjs.adapters.vtk.Multiframe? dcmjs.utils?\nfunction geometryFromFunctionalGroups(dataset, PerFrameFunctionalGroups) {\n const geometry = {};\n const pixelMeasures =\n dataset.SharedFunctionalGroupsSequence.PixelMeasuresSequence;\n const planeOrientation =\n dataset.SharedFunctionalGroupsSequence.PlaneOrientationSequence;\n\n // Find the origin of the volume from the PerFrameFunctionalGroups' ImagePositionPatient values\n //\n // TODO: assumes sorted frames. This should read the ImagePositionPatient from each frame and\n // sort them to obtain the first and last position along the acquisition axis.\n const firstFunctionalGroup = PerFrameFunctionalGroups[0];\n const lastFunctionalGroup =\n PerFrameFunctionalGroups[PerFrameFunctionalGroups.length - 1];\n const firstPosition =\n firstFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(\n Number\n );\n const lastPosition =\n lastFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(\n Number\n );\n\n geometry.origin = firstPosition;\n\n // NB: DICOM PixelSpacing is defined as Row then Column,\n // unlike ImageOrientationPatient\n geometry.spacing = [\n pixelMeasures.PixelSpacing[1],\n pixelMeasures.PixelSpacing[0],\n pixelMeasures.SpacingBetweenSlices\n ].map(Number);\n\n geometry.dimensions = [\n dataset.Columns,\n dataset.Rows,\n PerFrameFunctionalGroups.length\n ].map(Number);\n\n const orientation = planeOrientation.ImageOrientationPatient.map(Number);\n const columnStepToPatient = orientation.slice(0, 3);\n const rowStepToPatient = orientation.slice(3, 6);\n\n geometry.planeNormal = [];\n\n cross(columnStepToPatient, rowStepToPatient, geometry.planeNormal);\n\n geometry.sliceStep = [];\n subtract(lastPosition, firstPosition, geometry.sliceStep);\n normalize(geometry.sliceStep);\n geometry.direction = columnStepToPatient\n .concat(rowStepToPatient)\n .concat(geometry.sliceStep);\n\n return geometry;\n}\n\nexport default class Segmentation {\n constructor() {}\n\n /**\n * Produces an array of Segments from an input DICOM Segmentation dataset\n *\n * Segments are returned with Geometry values that can be used to create\n * VTK Image Data objects.\n *\n * @example Example usage to create VTK Volume actors from each segment:\n *\n * const actors = [];\n * const segments = generateToolState(dataset);\n * segments.forEach(segment => {\n * // now make actors using the segment information\n * const scalarArray = vtk.Common.Core.vtkDataArray.newInstance({\n * name: \"Scalars\",\n * numberOfComponents: 1,\n * values: segment.pixelData,\n * });\n *\n * const imageData = vtk.Common.DataModel.vtkImageData.newInstance();\n * imageData.getPointData().setScalars(scalarArray);\n * imageData.setDimensions(geometry.dimensions);\n * imageData.setSpacing(geometry.spacing);\n * imageData.setOrigin(geometry.origin);\n * imageData.setDirection(geometry.direction);\n *\n * const mapper = vtk.Rendering.Core.vtkVolumeMapper.newInstance();\n * mapper.setInputData(imageData);\n * mapper.setSampleDistance(2.);\n *\n * const actor = vtk.Rendering.Core.vtkVolume.newInstance();\n * actor.setMapper(mapper);\n *\n * actors.push(actor);\n * });\n *\n * @param dataset\n * @return {{}}\n */\n static generateSegments(dataset) {\n if (dataset.SegmentSequence.constructor.name !== \"Array\") {\n dataset.SegmentSequence = [dataset.SegmentSequence];\n }\n\n dataset.SegmentSequence.forEach(segment => {\n // TODO: other interesting fields could be extracted from the segment\n // TODO: Read SegmentsOverlay field\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.8.20.2.html\n\n // TODO: Looks like vtkColor only wants RGB in 0-1 values.\n // Why was this example converting to RGBA with 0-255 values?\n const color = dicomlab2RGBA(segment.RecommendedDisplayCIELabValue);\n\n segments[segment.SegmentNumber] = {\n color,\n functionalGroups: [],\n offset: null,\n size: null,\n pixelData: null\n };\n });\n\n // make a list of functional groups per segment\n dataset.PerFrameFunctionalGroupsSequence.forEach(functionalGroup => {\n const segmentNumber =\n functionalGroup.SegmentIdentificationSequence\n .ReferencedSegmentNumber;\n\n segments[segmentNumber].functionalGroups.push(functionalGroup);\n });\n\n // determine per-segment index into the pixel data\n // TODO: only handles one-bit-per pixel\n const frameSize = Math.ceil((dataset.Rows * dataset.Columns) / 8);\n let nextOffset = 0;\n\n Object.keys(segments).forEach(segmentNumber => {\n const segment = segments[segmentNumber];\n\n segment.numberOfFrames = segment.functionalGroups.length;\n segment.size = segment.numberOfFrames * frameSize;\n segment.offset = nextOffset;\n\n nextOffset = segment.offset + segment.size;\n\n const packedSegment = dataset.PixelData.slice(\n segment.offset,\n nextOffset\n );\n\n segment.pixelData = BitArray.unpack(packedSegment);\n\n const geometry = geometryFromFunctionalGroups(\n dataset,\n segment.functionalGroups\n );\n\n segment.geometry = geometry;\n });\n\n return segments;\n }\n}\n","import Segmentation from \"./Segmentation\";\n\nconst VTKjsSEG = {\n Segmentation\n};\n\nexport { VTKjsSEG };\n","import { CornerstoneSR, CornerstoneSEG } from \"./Cornerstone\";\nimport {\n Cornerstone3DSR,\n Cornerstone3DSEG,\n Cornerstone3DRT\n} from \"./Cornerstone3D\";\nimport { VTKjsSEG } from \"./VTKjs\";\nimport * as Enums from \"./enums\";\nimport * as helpers from \"./helpers\";\n\nconst adaptersSR = {\n Cornerstone: CornerstoneSR,\n Cornerstone3D: Cornerstone3DSR\n};\n\nconst adaptersSEG = {\n Cornerstone: CornerstoneSEG,\n Cornerstone3D: Cornerstone3DSEG,\n VTKjs: VTKjsSEG\n};\n\nconst adaptersRT = {\n Cornerstone3D: Cornerstone3DRT\n};\n\nexport { adaptersSR, adaptersSEG, adaptersRT, Enums, helpers };\n"],"names":["TID1500","utilities","addAccessors","StructuredReport","derivations","Normalizer","normalizers","TID1500MeasurementReport","TID1501MeasurementGroup","DicomMetaDictionary","data","FINDING","CodingSchemeDesignator","CodeValue","FINDING_SITE","FINDING_SITE_OLD","codeValueMatch","group","code","oldCode","ConceptNameCodeSequence","getTID300ContentItem","tool","toolType","ReferencedSOPSequence","toolClass","args","getTID300RepresentationArguments","TID300Measurement","TID300Representation","getMeasurementGroup","toolData","toolTypeData","MeasurementReport","CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE","length","Measurements","map","_classCallCheck","_createClass","key","value","getSetupMeasurementData","MeasurementGroup","ContentSequence","contentSequenceArr","toArray","findingGroup","find","findingSiteGroups","filter","NUMGroup","ValueType","SCOORDGroup","ReferencedSOPInstanceUID","ReferencedFrameNumber","defaultState","sopInstanceUid","frameIndex","complete","finding","ConceptCodeSequence","undefined","findingSites","fsg","description","CodeMeaning","findingSite","location","generateReport","toolState","metadataProvider","options","allMeasurementGroups","firstImageId","Object","keys","Error","generalSeriesModule","get","studyInstanceUID","seriesInstanceUID","forEach","imageId","sopCommonModule","frameNumber","toolTypes","ReferencedSOPClassUID","sopClassUID","sopInstanceUID","isMultiframeSOPClassUID","measurementGroups","push","concat","TID1501MeasurementGroups","fileMetaInformationVersionArray","Uint8Array","derivationSourceDataset","StudyInstanceUID","SeriesInstanceUID","_meta","FileMetaInformationVersion","Value","buffer","vr","TransferSyntaxUID","ImplementationClassUID","uid","ImplementationVersionName","_vrMap","PixelData","report","contentItem","dataset","assign","generateToolState","hooks","arguments","ContentTemplateSequence","TemplateIdentifier","REPORT","GROUP","TRACKING_IDENTIFIER","imagingMeasurementContent","codeMeaningEquals","measurementData","cornerstoneToolClasses","CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE","registeredToolClasses","measurementGroup","measurementGroupContentSequence","TrackingIdentifierGroup","TrackingIdentifierValue","TextValue","getToolClass","tc","isValidCornerstoneTrackingIdentifier","measurement","getMeasurementData","console","log","registerTool","utilityToolType","MEASUREMENT_BY_TOOLTYPE","TID300Length","TID300","Length","LENGTH","_MeasurementReport$ge","state","_objectSpread","MeasuredValueSequence","NumericValue","handles","start","end","textBox","hasMoved","movesIndependently","drawnIndependently","allowedOutsideImage","hasBoundingBox","_SCOORDGroup$GraphicD","_slicedToArray","GraphicData","x","y","point1","point2","distance","trackingIdentifierTextValue","TrackingIdentifier","includes","_TrackingIdentifier$s","split","_TrackingIdentifier$s2","cornerstone4Tag","CORNERSTONE_4_TAG","TID300Polyline","Polyline","FreehandRoi","points","active","cachedStats","area","color","invalidated","i","_tool$cachedStats","_cachedStats$area","_cachedStats$perimete","perimeter","TID300Bidirectional","Bidirectional","BIDIRECTIONAL","LONG_AXIS","SHORT_AXIS","longAxisNUMGroup","longAxisSCOORDGroup","shortAxisNUMGroup","shortAxisSCOORDGroup","longestDiameter","String","shortestDiameter","bottomRight","Math","max","highlight","index","perpendicularStart","perpendicularEnd","isCreating","toolName","visible","_tool$handles","longAxis","shortAxis","longAxisLength","shortAxisLength","TID300Ellipse","Ellipse","ELLIPTICALROI","EllipticalRoi","majorAxis","minorAxis","minorAxisLength","sqrt","pow","minorAxisDirection","halfMinorAxisLength","corner1","corner2","initialRotation","halfXLength","abs","halfYLength","center","TID300Circle","Circle","CIRCLEROI","CircleRoi","radius","PI","TID300Point","Point","ARROW_ANNOTATE","CORNERSTONEFREETEXT","ArrowAnnotate","text","TID300RepresentationArguments","TID300CobbAngle","CobbAngle","COBB_ANGLE","rAngle","start2","end2","point3","point4","TID300Angle","Angle","ANGLE","middle","RectangleRoi","_utilities$orientatio","orientation","rotateDirectionCosinesInPlane","flipIOP","flipImageOrientationPatient","flipMatrix2D","rotateMatrix902D","datasetToBlob","BitArray","DicomMessage","SegmentationDerivation","Segmentation","generateSegmentation","images","brushData","includeSliceSpacing","segments","image0","dims","columns","rows","z","xy","numSegments","_getSegCount","seg","isMultiframe","_createSegFromImages","_getNumberOfFramesPer","_getNumberOfFramesPerSegment","referencedFramesPerSegment","segmentIndicies","NumberOfFrames","setNumberOfFrames","segmentIndex","referencedFrameIndicies","referencedFrameNumbers","element","segment","addSegment","_extractCornerstoneToolsPixelData","bitPackPixelData","segBlob","referencedFrames","pixelData","pixelDataIndex","frame","imageIdSpecificToolState","brushPixelData","brush","p","segIdx","datasets","image","arrayBuffer","byteArray","dicomData","readFile","naturalizeDataset","dict","namifyDataset","meta","multiframe","normalizeToDataset","imageIds","imagePlaneModule","warn","ImageOrientationPatient","Array","isArray","rowCosines","_toConsumableArray","columnCosines","validOrientations","getValidOrientations","SharedFunctionalGroupsSequence","sharedImageOrientationPatient","PlaneOrientationSequence","sliceLength","Columns","Rows","segMetadata","getSegmentMetadata","unpackPixelData","PerFrameFunctionalGroupsSequence","inPlane","PerFrameFunctionalGroups","ImageOrientationPatientI","pixelDataI2D","ndarray","alignedPixelDataI","alignPixelDataWithSourceData","SegmentIdentificationSequence","ReferencedSegmentNumber","SourceImageSequence","DerivationImageSequence","getImageIdOfSourceImage","addImageIdSpecificBrushToolState","segType","SegmentationType","unpack","MaximumFractionalValue","onlyMaxAndZero","pixelData2D","brushDataI","cToolsPixelData","getImageIdOfReferencedFrame","getImageIdOfReferencedSingleFramedSOPInstance","imageIdFrameNumber","Number","iop","orientations","h","v","iop90","compareIOP","dx","iop1","iop2","segmentSequence","SegmentSequence","seriesInstanceUid","ReferencedSeriesSequence","Events","nearlyEqual","dcmjsData","_utilities$compressio","compression","encode","decode","generateSegmentationDefaultOptions","rleEncode","inputLabelmaps3D","userOptions","segmentation","fillSegmentation","labelmaps3D","numberOfFrames","referencedFramesPerLabelmap","_loop","labelmap3D","labelmapIndex","labelmaps2D","metadata","_loop2","_i","labelmap2D","segmentsOnLabelmap","segmentMetadata","labelmaps","_getLabelmapsFromReferencedFrameIndicies","addSegmentFromLabelmap","rleEncodedFrames","assignToDataset","BitsAllocated","BitsStored","HighBit","SegmentationFractionalType","_x","_x2","_x3","_x4","_generateToolState","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_options$skipOverlapp","skipOverlapping","_options$tolerance","tolerance","_options$TypedArrayCo","TypedArrayConstructor","_options$maxBytesPerC","maxBytesPerChunk","eventTarget","triggerEvent","pixelDataChunks","sopUIDImageIdIndexMap","overlapping","insertFunction","segmentsOnFrameArray","segmentsOnFrame","arrayBufferLength","labelmapBufferArray","imageIdMaps","segmentsPixelIndices","centroidXYZ","wrap","_callee$","_context","prev","next","abrupt","checkOrientation","reduce","acc","_metadataProvider$get","checkSEGsOverlapping","t0","insertOverlappingPixelDataPlanar","insertPixelDataPlanar","BYTES_PER_ELEMENT","ArrayBuffer","curr","indices","Map","imageIdIndexBufferIndex","_calculateCentroid","calculateCentroid","xAcc","yAcc","zAcc","count","set","floor","centroids","stop","findReferenceSourceImageId","frameSegment","FrameOfReferenceUID","PerFrameFunctionalGroup","frameSourceImageSequence","getImageIdOfSourceImageBySourceImageSequence","referencedSeriesSequence","ReferencedSeriesInstanceUID","getImageIdOfSourceImagebyGeometry","numberOfSegs","groupsLen","frameSegmentsMapping","_loop3","getSegmentIndex","imageIdIndex","findIndex","has","segmentArray","_ret","_iterator","_createForOfIteratorHelper","entries","_step","s","n","done","_step$value","role","temp2DArray","fill","view","readFromUnpackedChunks","j","len","err","e","f","M","m","tempBuffer","slice","tempSegmentsOnFrame","cloneDeep","segmentIndexToProcess","_loop4","_i2","sourceImageMetadata","byteOffset","labelmap2DView","segmentOnFrame","_ret2","chunkSize","ceil","shouldTriggerEvent","Promise","resolve","processInChunks","min","indexCache","segmentIndexObject","percentComplete","round","SEGMENTATION_LOAD_PROGRESS","setTimeout","sourceDataDimensions","some","operation","compareArrays","checkIfPerpendicular","absDotColumnCosines","absDotRowCosines","error","getUnpackedChunks","bitArray","chunks","maxBitsPerChunk","numberOfChunks","startBit","endBit","startByte","endByte","chunk","unpackedChunk","PlanePositionSequence","ImagePositionPatient","imageIdsIndexc","array1","array2","offset","mapping","getUnpackedOffsetAndLength","chunkIndex","result","resultOffset","totalBytes","total","startChunkIndex","startOffsetInChunk","endChunkIndex","endOffsetInChunk","_i3","_Object$entries","_Object$entries$_i","bufferIndices","_iterator2","_step2","bufferIndex","labelmaps3DorBrushData","cornerstoneToolsVersion","Segmentation_4X","Segmentation_3X","__assign","t","prototype","hasOwnProperty","call","__spreadArray","to","from","pack","l","ar","SuppressedError","suppressed","message","name","CodingScheme","codeValues","Cornerstone3DCodingScheme","CORNERSTONE_3D_TAG","sopInstanceUIDToImageIdMap","imageToWorldCoords","referencedImageId","annotation","label","worldCoords","point","imagePixelModule","xOffset","yOffset","secondPoint","arrowFirst","activeHandleIndex","worldToImageCoords","_data$handles","pointImage","cornerstone3DTag","MEASUREMENT_TYPE","_defineProperty","_data$cachedStats","_ref","PROBE","Probe","pointsImage","SharedArrayBufferModes","CornerstoneEventTarget","constructor","listeners","reset","addEventListenerOnce","type","callback","onceWrapper","event","removeEventListener","addEventListener","indexOf","stack","stackLength","splice","dispatchEvent","defaultPrevented","obj","defineProperty","enumerable","configurable","writable","_arrayWithHoles","arr","_iterableToArrayLimit","Symbol","iterator","_arr","_n","_d","_s","_e","_arrayLikeToArray","arr2","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","toString","test","_nonIterableRest","TypeError","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_typeof","_arrayWithoutHoles","_iterableToArray","iter","_nonIterableSpread","arrayWithoutHoles","iterableToArray","nonIterableSpread","_setPrototypeOf","setPrototypeOf","__proto__","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_construct","Parent","Class","isNativeReflectConstruct","a","Constructor","Function","bind","instance","fastDeepEqual","equal","b","RegExp","source","flags","toStr","isArguments","str","isArgs","callee","keysShim","require$$0","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","window","k","equalsConstructorPrototypeIfNotBuggy","object","isObject","isFunction","isString","theKeys","skipProto","skipConstructor","implementation","origKeys","require$$1","originalKeys","shim","shimObjectKeys","keysWorksWithArguments","objectKeys","shams","hasSymbols","getOwnPropertySymbols","sym","symObj","symVal","getOwnPropertyNames","syms","getOwnPropertyDescriptor","descriptor","origSymbol","hasSymbolSham","hasNativeSymbols","foo","$Object","hasProto","ERROR_MESSAGE","funcType","concatty","slicy","arrLike","joiny","joiner","that","target","bound","binder","boundLength","boundArgs","Empty","functionBind","$hasOwn","hasown","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","getPrototypeOf","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","JSON","parseFloat","parseInt","RangeError","ReferenceError","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakRef","WeakSet","errorProto","doEval","fn","gen","LEGACY_ALIASES","require$$2","hasOwn","require$$3","$concat","$spliceApply","$replace","replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","string","first","last","match","number","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","getIntrinsic","GetIntrinsic","parts","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","$defineProperty","hasPropertyDescriptors","hasArrayLengthDefineBug","hasPropertyDescriptors_1","gopd","defineDataProperty","property","nonEnumerable","nonWritable","nonConfigurable","loose","supportsDescriptors","predicate","defineProperties","predicates","props","defineProperties_1","self","implementation_browserModule","exports","polyfill","getPolyfill","global","define","shimGlobal","globalThis","getGlobal","globalthis","ownKeys","enumerableOnly","symbols","getOwnPropertyDescriptors","vtkGlobal","globalThisShim","factoryMapping","vtkObject","vtk","isA","vtkClass","model","keyName","newInst","modified","register","vtkClassName","_defineProperties","protoProps","staticProps","_getPrototypeOf","_superPropBase","_get","receiver","base","superPropBase","_inherits","subClass","superClass","create","_assertThisInitialized","_possibleConstructorReturn","assertThisInitialized","_isNativeFunction","_wrapNativeSuper","_cache","isNativeFunction","Wrapper","_createSuper","Derived","hasNativeReflectConstruct","_createSuperInternal","Super","NewTarget","ClassHierarchy","_Array","_super","globalMTime","VOID","getCurrentGlobalMTime","fakeConsole","noOp","consoleMethods","methodName","loggerFunctions","debug","info","setLoggerFunction","vtkLogMacro","vtkInfoMacro","vtkDebugMacro","vtkErrorMacro","vtkWarningMacro","ERROR_ONCE_MAP","vtkOnceErrorMacro","TYPED_ARRAYS","_unused","newTypedArray","_len","_key","newTypedArrayFrom","_len2","_key2","capitalize","charAt","toUpperCase","_capitalize","uncapitalize","toLowerCase","formatBytesToProperUnit","size","precision","units","currentUnit","pop","toFixed","formatNumbersWithThousandSeparator","separator","sections","reverse","join","safeArrays","shallowEquals","enumToString","getStateArrayMapFunc","item","getState","setImmediateVTK","measurePromiseExecution","promise","performance","now","finally","delta","publicAPI","callbacks","isInteger","mtime","classHierarchy","hierarchy","off","on","unsubscribe","freeze","isDeleted","deleted","otherMTime","getMTime","onModified","className","getClassName","depth","noWarning","noFunction","ret","_len3","list","_key3","subset","getReferenceByName","val","delete","field","el","jsonArchive","sortedObj","sort","shallowCopy","other","otherModel","keyList","otherKeyList","keyIdx","toJSON","vtkObjToJSON","objectGetterMap","getter","fieldNames","objectSetterMap","enum","_enum","onChanged","_model$onChanged","previousValue","DeepEqual","_model$onChanged2","findSetter","getSetter","setter","_model$onChanged3","fields","setGet","getArray","setArray","defaultVal","_len4","_key4","array","changeDetected","needCopy","_model$onChanged4","otherArray","setGetArray","moveToProtected","fieldName","algo","numberOfInputs","numberOfOutputs","inputData","inputConnection","output","inputArrayToProcess","setInputData","port","getInputData","setInputConnection","outputPort","msg","getInputConnection","getPortToFill","portToFill","addInputConnection","addInputData","getOutputData","shouldUpdate","update","localMTime","minOutputMTime","Infinity","mt","_model$inputConnectio","_publicAPI$getInputDa","getOutputPort","outputPortAccess","ins","_count","requestData","getNumberOfInputPorts","getNumberOfOutputPorts","getInputArrayToProcess","inputPort","arrayDesc","ds","fieldAssociation","arrayName","setInputArrayToProcess","attributeType","EVENT_ABORT","eventName","previousDelete","curCallbackID","callbackID","_callbacks$i","cbID","invoke","_arguments","currentCallbacks","_currentCallbacks$ind","cb","priority","continueNext","cb1","cb2","_ref2","_ref3","newInstance","extend","initialValues","chain","_len5","_key5","_len6","_key6","isVtkObject","traverseInstanceTree","extractFunction","accumulator","visitedInstances","modelObj","subObj","debounce","func","wait","immediate","_this","timeout","debounced","_len7","_key7","context","later","callNow","clearTimeout","cancel","throttle","delay","isThrottled","argsToUse","wrapper","_len8","_key8","keystore","initialKeystore","setKey","getKey","getAllKeys","deleteKey","clearKeystore","nextProxyId","ROOT_GROUP_NAME","proxy","parentDelete","proxyId","ui","parse","stringify","propertyMap","groupChildrenNames","registerProperties","descriptionList","currentGroupName","childrenNames","children","updateUI","listProxyProperties","gName","updateProxyProperty","propertyName","propUI","prop","activate","proxyManager","setActiveMethod","getProxyGroup","propertyLinkSubscribers","registerPropertyLinkForGC","otherLink","gcPropertyLinks","subscribers","unbind","propertyLinkMap","getPropertyLink","id","persistent","links","updateInProgress","force","needUpdate","sourceLink","link","newValue","linkToUpdate","indexToDelete","subscription","updateMe","linkHandler","getProperties","groupName","values","propertyNames","method","listPropertyNames","getPropertyByName","getPropertyDomainByName","domain","getProxySection","proxyGroup","properties","registerLinks","_model$links$i","updateOnBind","sLink","proxyPropertyMapping","subscriptions","_map$propertyName","modelKey","_map$propertyName$mod","methodSrc","methodDst","proxyPropertyState","defaults","this","applyState","modelKeys","propValues","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","normalizeWheel","wheelEvent","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","macro","setImmediate","module","Alea","seed","me","mash","Mash","s0","c","s1","s2","copy","impl","opts","xg","prng","int32","double","quick","charCodeAt","amd","alea","XorGen","strseed","w","top","bot","xor128","d","xorwow","X","init","xorshift7","limit","xor4096","tychei","pool","math","width","digits","rngname","startdenom","significance","overflow","mask","nodecrypto","seedrandom","entropy","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","g","S","pass","is_math_call","keylen","r","typ","stringseed","smear","out","randomBytes","crypto","msCrypto","getRandomValues","browser","navigator","plugins","screen","fromCharCode","random","ex","require$$4","require$$5","sr","require$$6","VTK_SMALL_NUMBER","createArray","res","nearestPowerOfTwo","xi","isPowerOfTwo","add","subtract","multiplyAccumulate","scalar","dot","cross","Zx","Zy","Zz","norm","sum","normalize","den","distance2BetweenPoints","determinant2x2","NaN","roundNumber","num","sig","roundVector","vector","luFactorLinearSystem","A","largest","maxI","temp1","temp2","scale","luSolveLinearSystem","ii","idx","solveLinearSystem","det","uninitializeBounds","bounds","clampValue","minValue","maxValue","clampVector","minVector","maxVector","DataTypeByteSize","VtkDataTypes","CHAR","SIGNED_CHAR","UNSIGNED_CHAR","SHORT","UNSIGNED_SHORT","INT","UNSIGNED_INT","FLOAT","DOUBLE","DefaultDataType","Constants","vtkErrorMacro$1","fastComputeRange","numberOfComponents","MAX_VALUE","createRangeHelper","mean","getRange","computeRange","component","numberOfValues","nextJ","ensureRangeSize","rangeArray","ranges","getDataType","typedArray","getMaxNorm","normArray","numComps","getNumberOfComponents","maxNorm","tuple","getNumberOfTuples","getTuple","norm$1","STATIC","vtkDataArray","resize","requestedNumTuples","curNumTuples","oldValues","dataType","dataChange","newSize","initialize","getElementComponentSize","getComponent","tupleIdx","compIdx","setComponent","getValue","valueIdx","comp","setValue","getData","subarray","componentIndex","rangeIdx","range","rangeTuple","setRange","rangeValue","setTuple","setTuples","tuples","insertTuple","insertTuples","insertNextTuple","insertNextTuples","tupleToFill","getTuples","fromId","toId","getTupleLocation","getNumberOfValues","newClone","empty","getName","setData","deepCopy","interpolateTuple","source1","source1Idx","source2","source2Idx","tuple1","tuple2","DEFAULT_VALUES","_model$size","newInstance$1","vtkDataArray$1","CustomEvent","cancelable","getMinMax","storedPixelData","storedPixel","numPixels","imageIdToURI","colonIndex","substring","TRUE","config","gpuTier","detectGPUConfig","rendering","useCPURendering","preferSizeOverAccuracy","useNorm16Texture","strictZSpacingForVolumeViewport","enableCacheOptimization","getConfiguration","PLANE_TOLERANCE","COINCIDE","DISJOINT","evaluate","normal","origin","distanceToPlane","projectPoint","xproj","xo","projectVector","vproj","n2","generalizedProjectPoint","intersectWithLine","p1","p2","outObj","intersection","betweenPoints","p21","p1Origin","fabsden","fabstolerance","intersectWithPlane","plane1Origin","plane1Normal","plane2Origin","plane2Normal","l0","l1","cross$1","absCross","maxc","iP","d1","d2","vtkPlane","evaluateFunction","evaluateGradient","xyz","retVal","planeOrigin","planeNormal","vtkPlane$1","INIT_BOUNDS","_equals","_isValid","_setBounds","otherBounds","_reset","_addPoint","_bounds","xMin","xMax","yMin","yMax","zMin","zMax","_addPoints","_addBounds","_bounds2","_xMin","_xMax","_yMin","_yMax","_zMin","_zMax","_setMinPoint","_bounds3","_setMaxPoint","_bounds4","_inflate","_scale","sx","sy","sz","_getCenter","scaleAboutCenter","_getLength","_getLengths","_getXRange","_getYRange","_getZRange","_getMaxLength","_getDiagonalLength","_getMinPoint","_getMaxPoint","oppositeSign","_getCorners","corners","ix","iy","iz","_computeCornerPoints","_transformBounds","transform","vec3","transformMat4","_computeScale","scale3","_computeLocalBounds","u","pointsData","du","dv","dw","_intersectBox","dir","coord","inside","quadrant","whichPlane","maxT","candidatePlane","RIGHT","LEFT","MIDDLE","_i4","_intersectPlane","sign","firstOne","_intersect","bBounds","newBounds","_intersects","_containsPoint","contains","_cutWithPlane","ti","BoundingBox","refBounds","getBounds","equals","isValid","setBounds","addPoint","addPoints","addBounds","setMinPoint","setMaxPoint","inflate","getCenter","getLength","getLengths","getMaxLength","getDiagonalLength","getMinPoint","getMaxPoint","getXRange","getYRange","getZRange","getCorners","computeCornerPoints","computeLocalBounds","transformBounds","computeScale3","cutWithPlane","intersectBox","intersectPlane","intersect","intersects","containsPoint","vtkBoundingBox","vtkFieldData","superGetState","arrays","initializeFields","copyAllOn","clearFieldFlags","copyFieldFlags","copyStructure","getCopyFieldFlags","getNumberOfArrays","getNumberOfActiveArrays","addArray","_publicAPI$getArrayWi","getArrayWithIndex","removeAllArrays","removeArray","removeArrayByIndex","arrayIdx","getArrays","entry","arraySpec","getArrayByIndex","getArrayByName","hasArray","getArrayName","getFlag","passData","copyFlag","doCopyAllOff","destArr","getAttributes","attrType","setAttribute","ncomps","tId","_tId","interpolateData","fromId1","fromId2","_tId2","copyFieldOn","copyFieldOff","doCopyAllOn","copyAllOff","arrNew","copyFlags","vtkFieldData$1","AttributeTypes","SCALARS","VECTORS","NORMALS","TCOORDS","TENSORS","GLOBALIDS","PEDIGREEIDS","EDGEFLAG","NUM_ATTRIBUTES","AttributeLimitTypes","MAX","EXACT","NOLIMIT","CellGhostTypes","DUPLICATECELL","HIGHCONNECTIVITYCELL","LOWCONNECTIVITYCELL","REFINEDCELL","EXTERIORCELL","HIDDENCELL","PointGhostTypes","DUPLICATEPOINT","HIDDENPOINT","AttributeCopyOperations","COPYTUPLE","INTERPOLATE","PASSDATA","ALLCOPY","ghostArrayName","DesiredOutputPrecision","DEFAULT","SINGLE","vtkDataSetAttributes","attrTypes","cleanAttributeType","attType","cleanAttType","ee","checkNumberOfComponents","uncleanAttType","currentAttribute","setActiveAttributeByName","setActiveAttributeByIndex","getActiveAttribute","activeVal","da","copyAttributeFlags","initializeAttributeCopyFlags","op","attCopyOp","ty","dataArrays","ref","superShallowCopy","activeScalars","activeVectors","activeTensors","activeNormals","activeTCoords","activeGlobalIds","activePedigreeIds","vtkDataSetAttributes$1","FieldDataTypes","UNIFORM","DATA_OBJECT_FIELD","COORDINATE","POINT_DATA","POINT","POINT_FIELD_DATA","CELL","CELL_FIELD_DATA","VERTEX","VERTEX_FIELD_DATA","EDGE","EDGE_FIELD_DATA","ROW","ROW_DATA","FieldAssociations","FIELD_ASSOCIATION_POINTS","FIELD_ASSOCIATION_CELLS","FIELD_ASSOCIATION_NONE","FIELD_ASSOCIATION_POINTS_THEN_CELLS","FIELD_ASSOCIATION_VERTICES","FIELD_ASSOCIATION_EDGES","FIELD_ASSOCIATION_ROWS","NUMBER_OF_ASSOCIATIONS","DATASET_FIELDS","vtkDataSet","vtkDataSet$1","StructuredType","UNCHANGED","SINGLE_POINT","X_LINE","Y_LINE","Z_LINE","XY_PLANE","YZ_PLANE","XZ_PLANE","XYZ_GRID","EMPTY","getDataDescriptionFromExtent","inExt","dataDim","vtkStructuredData","vtkImageData","setExtent","inExtent","extentArray","extent","dataDescription","setDimensions","getDimensions","getNumberOfCells","nCells","getNumberOfPoints","getPoint","ijk","coords","indexToWorld","extentToBounds","getSpatialExtent","computeTransforms","mat4","fromTranslation","direction","spacing","invert","worldToIndex","ain","aout","indexToWorldVec3","worldToIndexVec3","indexToWorldBounds","bin","bout","worldToIndexBounds","computeHistogram","worldBounds","voxelFunc","dimensions","yStride","zStride","pixels","getPointData","getScalars","maximum","minimum","sumOfSquares","isum","inum","pixel","average","variance","sigma","computeIncrements","increments","incr","computeOffsetIndex","getExtent","getOffsetIndexFromWorld","getScalarValueFromWorld","offsetIndex","mat3","identity","vtkImageData$1","isTypedArray","Wrap","CLAMP_TO_EDGE","REPEAT","MIRRORED_REPEAT","Filter","NEAREST","LINEAR","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","floatView","int32View","toHalf","bits","fromHalf","HalfFloat","PASS_TYPES","vtkViewNode","build","prepass","render","traverse","renderPass","passTraversal","getTraverseOperation","customRenderPass","getOperation","getViewNodeFor","dataObject","renderable","child","vn","getFirstAncestorOfType","_parent","addMissingNode","dobj","_renderableChildMap","setVisited","newNode","createViewNode","setParent","addMissingNodes","dataObjs","addMissingChildren","cindex","prepareNodes","visited","removeUnusedNodes","getVisited","getRenderable","dataObj","myFactory","createNode","setRenderable","vtkViewNode$1","vtkViewNodeFactory","overrides","cpt","setMyFactory","registerOverride","vtkViewNodeFactory$1","CLASS_MAPPING","vtkOpenGLViewNodeFactory","vtkDebugMacro$1","vtkWarningMacro$1","vtkOpenGLTexture","renWin","_openGLRenderWindow","_openGLRenderer","getParent","getContext","getInterpolate","generateMipmap","setMinificationFilter","setMagnificationFilter","getRepeat","setWrapR","setWrapS","setWrapT","setImage","handle","textureBuildTime","getImage","getImageLoaded","create2DFromImage","sendParameters","getCanvas","canvas","create2DFromRaw","height","getJsImageData","jsid","input","ext","inScalars","indata","scalars","createCubeFromRaw","destroyTexture","deactivate","deleteTexture","numberOfDimensions","components","resetFormatAndType","createTexture","bindTexture","texParameteri","TEXTURE_MIN_FILTER","getOpenGLFilterMode","minificationFilter","TEXTURE_MAG_FILTER","magnificationFilter","TEXTURE_WRAP_S","getOpenGLWrapMode","wrapS","TEXTURE_WRAP_T","wrapT","getWebgl2","TEXTURE_WRAP_R","wrapR","getTextureUnit","getTextureUnitForTexture","activateTexture","deactivateTexture","releaseGraphicsResources","rwin","internalFormat","format","openGLDataType","shaderProgram","autoParameters","sendParametersTime","isBound","TEXTURE_2D","TEXTURE_BINDING_2D","oid","getIntegerv","TEXTURE_BASE_LEVEL","baseLevel","TEXTURE_MAX_LEVEL","maxLevel","getInternalFormat","vtktype","_forceInternalFormat","getDefaultInternalFormat","getDefaultTextureInternalFormat","oglNorm16Ext","useHalfFloat","setInternalFormat","iFormat","getFormat","getDefaultFormat","RED","RG","RGB","RGBA","LUMINANCE","LUMINANCE_ALPHA","getDefaultDataType","vtkScalarType","UNSIGNED_BYTE","HALF_FLOAT","getExtension","halfFloat","HALF_FLOAT_OES","getOpenGLDataType","forceUpdate","getShiftAndScale","shift","BYTE","emode","updateArrayDataType","pixData","pixCount","dataArrayToCopy","_idx","_dataArrayToCopy","halfFloatExt","_idx2","newArray","src","scaleTextureToHighestPowerOfTwo","newWidth","newHeight","jFactor","iFactor","usingHalf","joff","jidx","jlow","jhi","jmix","jmix1","ioff","iidx","ilow","ihi","imix","useTexStorage","_model$renderable","resizable","getResizable","webGLInfo","getGLInformations","RENDERER","platform","flip","dataArray","scaledData","pixelStorei","UNPACK_FLIP_Y_WEBGL","UNPACK_ALIGNMENT","texStorage2D","texSubImage2D","texImage2D","TEXTURE_CUBE_MAP","invertedData","widthLevel","heightLevel","row1","row2","tempData","TEXTURE_CUBE_MAP_POSITIVE_X","createDepthFromRaw","DEPTH_COMPONENT","DEPTH_COMPONENT32F","DEPTH_COMPONENT16","needNearestPowerOfTwo","document","createElement","ctx","translate","drawImage","safeImage","computeScaleOffsets","hasExactHalfFloat","setUseHalfFloat","isHalfFloat","processDataArray","minArray","maxArray","_dataArray$getRange","_dataArray$getRange2","scaleOffsets","create2DFilterableFromRaw","create2DFilterableFromDataArray","_processDataArray","create3DFromRaw","TEXTURE_3D","is3DArray","texStorage3D","texSubImage3D","texImage3D","create3DFilterableFromRaw","create3DFilterableFromDataArray","_processDataArray2","numPixelsIn","volumeInfo","dataComputedScale","dataComputedOffset","scaleOffsetsCopy","structuredClone","_c","_c2","_c3","_newArray","scaleInverse","nc","volCopyData","outArray","outIdx","inValue","smin","smax","dataTypeToUse","_c4","soffset","sscale","maxTexDim","getParameter","MAX_TEXTURE_SIZE","xstride","ystride","targetWidth","xreps","yreps","targetHeight","tileWidth","tileHeight","yRep","xrepsThisRow","outXContIncr","tileY","xRep","inOffset","tileX","_nc","setOpenGLRenderWindow","rw","getMaximumTextureSize","isCurrent","minLOD","maxLOD","vtkOpenGLTexture$1","INVALID_BOUNDS","vtkPoints","setNumberOfPoints","nbPoints","dimension","setNumberOfComponents","setPoint","insertNextPoint","_xRange","_yRange","zRange","xRange","yRange","computeBounds","vtkPoints$1","extractCellSizes","cellArray","currentIdx","cellId","cellArrayIndex","vtkCellArray","recompute","numberOfCells","cellSizes","getCellSizes","oldNumTuples","newNumTuples","getCell","loc","cellLoc","numberOfPoints","insertNextCell","cellPointIds","defaultValues","vtkCellArray$1","vtkCell","pointIdsList","pointsIds","triangleData","pointId","pointOffset","trianglePointOffset","getLength2","diff","getParametricDistance","pcoords","pDist","pDistMax","cell","getCellDimension","tol","subId","evaluatePosition","closestPoint","dist2","weights","vtkCell$1","ncells","cells","vtkCellLinks","buildLinks","numPts","getPoints","numCells","linkLoc","_data$getCellPoints","getCellPoints","cellPointId","incrementLinkCount","allocateLinks","maxId","_cellId","_data$getCellPoints2","insertCellReference","_cellId2","getPointsIds","_cellId3","allocate","numLinks","getLink","ptId","getNcells","getCells","insertNextCellReference","deletePoint","removeCellReference","addCellReference","resizeCellList","squeeze","pos","vtkCellLinks$1","CellType","VTK_EMPTY_CELL","VTK_VERTEX","VTK_POLY_VERTEX","VTK_LINE","VTK_POLY_LINE","VTK_TRIANGLE","VTK_TRIANGLE_STRIP","VTK_POLYGON","VTK_PIXEL","VTK_QUAD","VTK_TETRA","VTK_VOXEL","VTK_HEXAHEDRON","VTK_WEDGE","VTK_PYRAMID","VTK_PENTAGONAL_PRISM","VTK_HEXAGONAL_PRISM","VTK_QUADRATIC_EDGE","VTK_QUADRATIC_TRIANGLE","VTK_QUADRATIC_QUAD","VTK_QUADRATIC_POLYGON","VTK_QUADRATIC_TETRA","VTK_QUADRATIC_HEXAHEDRON","VTK_QUADRATIC_WEDGE","VTK_QUADRATIC_PYRAMID","VTK_BIQUADRATIC_QUAD","VTK_TRIQUADRATIC_HEXAHEDRON","VTK_QUADRATIC_LINEAR_QUAD","VTK_QUADRATIC_LINEAR_WEDGE","VTK_BIQUADRATIC_QUADRATIC_WEDGE","VTK_BIQUADRATIC_QUADRATIC_HEXAHEDRON","VTK_BIQUADRATIC_TRIANGLE","VTK_CUBIC_LINE","VTK_CONVEX_POINT_SET","VTK_POLYHEDRON","VTK_PARAMETRIC_CURVE","VTK_PARAMETRIC_SURFACE","VTK_PARAMETRIC_TRI_SURFACE","VTK_PARAMETRIC_QUAD_SURFACE","VTK_PARAMETRIC_TETRA_REGION","VTK_PARAMETRIC_HEX_REGION","VTK_HIGHER_ORDER_EDGE","VTK_HIGHER_ORDER_TRIANGLE","VTK_HIGHER_ORDER_QUAD","VTK_HIGHER_ORDER_POLYGON","VTK_HIGHER_ORDER_TETRAHEDRON","VTK_HIGHER_ORDER_WEDGE","VTK_HIGHER_ORDER_PYRAMID","VTK_HIGHER_ORDER_HEXAHEDRON","VTK_LAGRANGE_CURVE","VTK_LAGRANGE_TRIANGLE","VTK_LAGRANGE_QUADRILATERAL","VTK_LAGRANGE_TETRAHEDRON","VTK_LAGRANGE_HEXAHEDRON","VTK_LAGRANGE_WEDGE","VTK_LAGRANGE_PYRAMID","VTK_NUMBER_OF_CELL_TYPES","CellTypesStrings","getClassNameFromTypeId","typeId","getTypeIdFromClassName","cellTypeString","isLinear","hasSubCells","cellType","vtkCellTypes","typeArray","locationArray","insertCell","setCellTypes","cellTypes","cellLocations","getCellLocation","deleteCell","getNumberOfTypes","isType","numTypes","getCellType","insertNextType","getSize","getExtend","getTypeArray","getLocationArray","getMaxId","vtkCellTypes$1","IntersectionState","NO_INTERSECTION","YES_INTERSECTION","ON_LINE","distanceToLine","MIN_VALUE","closest","denom","a1","a2","b1","b2","a21","b21","b1a1","minDist","l2","uv1","uv2","vtkLine","isBetweenPoints","projXYZ","outDistance","evaluateLocation","vtkLine$1","vtkPointSet","vtkPointSet$1","computeNormalDirection","v1","v2","v3","ax","ay","az","bx","by","bz","computeNormal","intersectWithTriangle","q1","r1","q2","r2","coplanar","pt1","pt2","surfaceId","n1","dist1","pts1","pts2","n1n2","index1","index2","t1","t2","ts1","ts2","id1","id2","val1","val2","t12","t22","t11","t21","tt1","tt2","vtkTriangle","tol2","pt3","plane","evaluation","dist2Pt1Pt2","dist2Pt2Pt3","dist2Pt3Pt1","line","intersectLine","pt3Pt1","pt3Pt2","pt3X","fabsn","rhs","c1","c2","dist2Point","dist2Line1","dist2Line2","closestPoint1","closestPoint2","cp","maxComponent","lineDistance","_lineDistance","_lineDistance2","p0","u3","pc","vtkTriangle$1","POLYDATA_FIELDS","_CELL_FACTORY","CELL_FACTORY","vtkPolyData","camelize","letter","buildCells","nVerts","getNumberOfVerts","nLines","getNumberOfLines","nPolys","getNumberOfPolys","nStrips","getNumberOfStrips","types","pTypes","locs","pLocs","nextCellPts","verts","numCellPts","_nextCellPts","lines","_nextCellPts2","polys","_nextCellPts3","strips","initialSize","getPointCells","getCellEdgeNeighbors","link1","link2","cellHint","cellInfo","vtkPolyData$1","vtkStreamingOpenGLTexture","superCreate3DFilterableFromRaw","inputDataType","inputNumComps","update3DFromRaw","updatedFrames","bytesPerVoxel","fillSubImage3D","frameLength","frameLengthInBytes","zOffset","rowLength","gl","blockHeight","multiRowBlockLength","multiRowBlockLengthInBytes","normalBlocks","lastBlockHeight","multiRowLastBlockLength","block","dataView","getTextureParameters","setUpdatedFrame","providers","addProvider","provider","getMetaData","queries","ImageVolume","_imageIdsIndexMap","_imageURIsIndexMap","cornerstoneImageMetaData","imageCacheOffsetMap","isPreScaled","scalarData","scaling","volumeId","referencedVolumeId","sizeInBytes","imageData","referencedImageIds","additionalDetails","numVoxels","scalarArray","setSpacing","setDirection","setOrigin","setScalars","numFrames","_getNumFrames","_reprocessImageIds","_createCornerstoneImageMetaData","_imageIds","newImageIds","clear","imageURI","isDynamicVolume","getScalarData","getImageIdIndex","getImageURIIndex","destroy","getScalarDataArrays","decache","completelyRemove","removeFromCache","convertToImageSlicesAndCache","cache","removeVolumeLoadObject","getScalarDataLength","scalarDataCount","_getScalarDataLength","bytesPerImage","scalarDataLength","numComponents","pixelsPerImage","PhotometricInterpretation","voiLut","VOILUTFunction","windowCenter","windowWidth","voi","rgba","photometricInterpretation","voiLUTFunction","getScalarDataByImageIdIndex","scalarDataArrays","scalarDataIndex","getCornerstoneImage","imageIdIndexToFrameIndex","volumeBuffer","bytePerPixel","imageScalarData","volumeBufferView","volumeImageId","modalityLutModule","metaData","minMax","intercept","rescaleIntercept","byteLength","getPixelData","minPixelValue","maxPixelValue","slope","rescaleSlope","columnPixelSpacing","rowPixelSpacing","convertToCornerstoneImage","getCornerstoneImageLoadObject","imageLoadObject","getCornerstoneImages","referencedVolume","getVolume","numSlices","_","numImages","bytesRemaining","decacheIfNecessaryUntilBytesAvailable","getImageLoadObject","putImageLoadObject","catch","imageOrientationPatient","imagePositionPatient","bitsAllocated","pixelSpacing","genericMetadataProvider","ONE_GB","Cache","_imageCache","_volumeCache","_imageCacheSize","_volumeCacheSize","_maxCacheSize","_maxInstanceSize","setMaxCacheSize","newMaxCacheSize","errorMessage","isCacheable","unallocatedSpace","getBytesAvailable","imageCacheSize","availableSpace","getMaxCacheSize","getMaxInstanceSize","getCacheSize","_decacheImage","cancelFn","_decacheVolume","cachedVolume","volumeLoadObject","volume","cancelLoading","_restoreImagesFromBuffer","purgeCache","imageIterator","removeImageLoadObject","IMAGE_CACHE_IMAGE_REMOVED","purgeVolumeCache","volumeIterator","VOLUME_CACHE_VOLUME_REMOVED","getVolumeLoadObject","timeStamp","getGeometry","geometryId","cachedGeometry","_geometryCache","geometry","cachedImage","incrementImageCacheSize","eventDetails","incrementVolumeCacheSize","putGeometryLoadObject","geometryLoadObject","loaded","then","GEOMETRY_CACHE_GEOMETRY_ADDED","increment","decrementImageCacheSize","decrement","decrementVolumeCacheSize","numBytes","volumeImageIds","bytesAvailable","cachedImages","compare","cachedImageIds","im","imageIdsToPurge","sharedCacheKey","CACHE_SIZE_EXCEEDED","IMAGE_CACHE_IMAGE_ADDED","isLoaded","getVolumeContainingImageId","volumeIds","imageIdToUse","getCachedImageBasedOnImageURI","imageURIToUse","foundImageId","putVolumeLoadObject","VOLUME_CACHE_VOLUME_ADDED","viewPixelData","imageFrame","bufferView","payload","SegmentationRepresentations","findNextLink","contourPoints","nextLine","remainingLines","findContours","firstCell","extraContours","findContoursFromReducedSet","ptInArray","pt","isSamePoint","ptA","ptB","replacePointIndexReferences","linesArray","oldIndex","newIndex","removeDuplicatePoints","polyData","bypass","getLines","pointsArray","newPoints","newLines","getIsPointInsidePolygon","vertices","yi","xj","yj","checkEnclosed","outerContour","innerContour","pointsNotEnclosed","processContourHoles","contours","useXOR","retContours","contour","closedContours","contourWithHoles","contourWithoutHoles","holes","hContour","hIndex","contourHoleSet","holeIndex","contourIndex","EdgeLocator","oriented","edgeMap","computeEdgeKey","pointId0","pointId1","insertUniqueEdge","newEdgeValue","node","edgeId","insertEdge","isInsertedEdge","getEdgePointIds","vtkEdgeLocator","MARCHING_SQUARES_CASES","EDGES","getCase","getEdge","eid","vtkCaseTable","vtkImageMarchingSquares","getContourValues","contourValues","setContourValues","cValues","ids","pixelScalars","pixelPts","edgeLocator","getPixelScalars","getPixelPoints","produceLines","cVal","CASE_MASK","pId","pixelLines","edgeVerts","mergePoints","_edgeLocator$isInsert","x0","x1","inData","outData","time","getOrigin","getSpacing","pBuffer","lBuffer","cv","polydata","timeEnd","vtkImageMarchingSquares$1","Labelmap","generateContourSetsFromLabelmap","segmentations","representationData","segVolumeId","vol","cornerstoneCache","imageVol","segData","pixelsPerSlice","ContourSets","segIndex","sliceContours","containedSegmentIndices","sliceIndex","isSliceEmptyForSegment","frameStart","mSquares","imageDataCopy","setMergePoints","msOutput","reducedSet","FrameNumber","ContourSet","startIdx","endIdx","RectangleROIStartEndThreshold","getContourSequence","projectionPoints","projectionPointsImageIds","ContourData","ContourImageSequence","getContourImageSequence","NumberOfContourPoints","ContourGeometricType","orderedPoints","flat","pointsArrayWithPrecision","sopCommon","validateAnnotation","referenceImageId","AnnotationToPointData","TOOL_NAMES","convert","ContourSequence","ReferencedROINumber","ROIDisplayColor","getPatientModule","generalStudyModule","patientStudyModule","patientModule","patientDemographicModule","Modality","modality","PatientID","patientId","PatientName","patientName","PatientBirthDate","PatientAge","patientAge","PatientSex","patientSex","PatientWeight","patientWeight","StudyDate","studyDate","StudyTime","studyTime","StudyID","AccessionNumber","accessionNumber","getReferencedFrameOfReferenceSequence","RTReferencedStudySequence","SOPClassUID","SOPInstanceUID","RTReferencedSeriesSequence","ReferencedInstanceSequence","getReferencedSeriesSequence","_index","DicomMetadataStore","series","getSeries","ReferencedSeries","instances","getRTROIObservationsSequence","ObservationNumber","RTROIInterpretedType","ROIInterpreter","getRTSeriesModule","SeriesNumber","getStructureSetModule","ROINumber","ROIName","ROIDescription","ROIGenerationAlgorithm","ReferencedFrameOfReferenceUID","utilities.contours","utilities.contours.generateContourSetsFromLabelmap","CodeScheme","Colors","dicomlab2RGBA","cielab","dicomlab2RGB","geometryFromFunctionalGroups","pixelMeasures","PixelMeasuresSequence","planeOrientation","firstFunctionalGroup","lastFunctionalGroup","firstPosition","lastPosition","PixelSpacing","SpacingBetweenSlices","columnStepToPatient","rowStepToPatient","sliceStep","generateSegments","RecommendedDisplayCIELabValue","SegmentNumber","functionalGroups","functionalGroup","segmentNumber","frameSize","nextOffset","packedSegment"],"mappings":"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I,CAACqB,QAAO,CAAC,CAAA;AAC1B,KAAA;AACJ,GAAA;AAEA,EAAA,IAAMoN,UAAU,GAAGhU,YAAU,CAACiU,kBAAkB,CAACX,QAAQ,CAAC,CAAA;EAE1D,OAAO,IAAI1C,wBAAsB,CAAC,CAACoD,UAAU,CAAC,EAAE7P,OAAO,CAAC,CAAA;AAC5D,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAdA,SAee2C,mBAAiBA,CAAAkT,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,EAAA,OAAAC,kBAAA,CAAAC,KAAA,CAAA,IAAA,EAAArT,SAAA,CAAA,CAAA;AAAA,CAqNhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,SAAAoT,kBAAA,GAAA;AAAAA,EAAA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AA,IAAIA,KAAK,KAAK83B,KAAK,CAAC/3B,GAAG,CAAC,EAAE;AACxB+3B,QAAAA,KAAK,CAAC/3B,GAAG,CAAC,GAAGC,KAAK,CAAA;AAClB,QAAA,IAAIqtC,UAAU,GAAGnsB,OAAO,CAAClhB,KAAK,CAAC,CAAA;QAC/BmtC,UAAU,CAACE,UAAU,CAAC,CAAA;QACtB1P,SAAS,CAAC1F,QAAQ,EAAE,CAAA;AACtB,OAAA;KACD,CAAA;GACF,CAAA;EAED,OAAO7c,KAAK,EAAE,EAAE;AACdtE,IAAAA,MAAM,EAAE,CAAA;AACV,GAAC;;EAGD,IAAIs2B,SAAS,CAAC1tC,MAAM,EAAE;AACpB4C,IAAAA,GAAG,CAACq7B,SAAS,EAAE7F,KAAK,EAAEsV,SAAS,CAAC,CAAA;AAClC,GAAA;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIE,UAAU,GAAG,EAAE,CAAA;AACnB,IAAIC,WAAW,GAAG,EAAE,CAAA;AACpB,IAAIC,WAAW,GAAG,GAAG,CAAA;AACrB,SAASC,cAAcA,CAACC,UAAU,EAAE;AAClC,EAAA,IAAIC,EAAE,GAAG,CAAC,CAAC;;AAEX,EAAA,IAAIC,EAAE,GA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","x_google_ignoreList":[20,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,104,105,106,107,108,109,110,111,112,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,142,143,144]}