{"version":3,"file":"39.bundle.a60775504aa75b54cf0d.js","mappings":"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","sources":["webpack:///../../../node_modules/react-resize-detector/build/index.esm.js","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/ViewportImageScrollbar.tsx","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/utils.ts","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/CustomizableViewportOverlay.tsx","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/ViewportOrientationMarkers.tsx","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/ViewportImageSliceLoadingIndicator.tsx","webpack:///../../../node_modules/primereact/checkbox/checkbox.esm.js","webpack:///./service/ImagemService.js","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/CkbImagemChave.tsx","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx","webpack:///../../../extensions/cornerstone/src/utils/getMedidasSalvas.js","webpack:///../../../extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx"],"sourcesContent":["import*as React from'react';import {cloneElement,isValidElement,createRef,PureComponent,Component,forwardRef,useRef,useState,useEffect,useLayoutEffect}from'react';import {findDOMNode}from'react-dom';/*! *****************************************************************************\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 */\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\nfunction __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\nvar __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\nfunction __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}var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\nfunction isObject$3(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject$3;/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal$1;var freeGlobal = _freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root$2 = freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$2;var root$1 = _root;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now$1 = function() {\n return root$1.Date.now();\n};\n\nvar now_1 = now$1;/** Used to match a single whitespace character. */\n\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex$1(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nvar _trimmedEndIndex = trimmedEndIndex$1;var trimmedEndIndex = _trimmedEndIndex;\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim$1(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nvar _baseTrim = baseTrim$1;var root = _root;\n\n/** Built-in value references. */\nvar Symbol$2 = root.Symbol;\n\nvar _Symbol = Symbol$2;var Symbol$1 = _Symbol;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto$1.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/** Built-in value references. */\nvar symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag$1(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag$1),\n tag = value[symToStringTag$1];\n\n try {\n value[symToStringTag$1] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString$1.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag$1;/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString$1(value) {\n return nativeObjectToString.call(value);\n}\n\nvar _objectToString = objectToString$1;var Symbol = _Symbol,\n getRawTag = _getRawTag,\n objectToString = _objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag$1(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag$1;/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\nfunction isObjectLike$1(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike$1;var baseGetTag = _baseGetTag,\n isObjectLike = isObjectLike_1;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol$1(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol$1;var baseTrim = _baseTrim,\n isObject$2 = isObject_1,\n isSymbol = isSymbol_1;\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber$1(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject$2(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject$2(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar toNumber_1 = toNumber$1;var isObject$1 = isObject_1,\n now = now_1,\n toNumber = toNumber_1;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$1 = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce$1(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$1);\n }\n wait = toNumber(wait) || 0;\n if (isObject$1(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nvar debounce_1 = debounce$1;var debounce = debounce_1,\n isObject = isObject_1;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nvar throttle_1 = throttle;var patchResizeHandler = function (resizeCallback, refreshMode, refreshRate, refreshOptions) {\r\n switch (refreshMode) {\r\n case 'debounce':\r\n return debounce_1(resizeCallback, refreshRate, refreshOptions);\r\n case 'throttle':\r\n return throttle_1(resizeCallback, refreshRate, refreshOptions);\r\n default:\r\n return resizeCallback;\r\n }\r\n};\r\nvar isFunction = function (fn) { return typeof fn === 'function'; };\r\nvar isSSR = function () { return typeof window === 'undefined'; };\r\nvar isDOMElement = function (element) { return element instanceof Element || element instanceof HTMLDocument; };\r\nvar createNotifier = function (onResize, setSize, handleWidth, handleHeight) {\r\n return function (_a) {\r\n var width = _a.width, height = _a.height;\r\n setSize(function (prev) {\r\n if (prev.width === width && prev.height === height) {\r\n // skip if dimensions haven't changed\r\n return prev;\r\n }\r\n if ((prev.width === width && !handleHeight) || (prev.height === height && !handleWidth)) {\r\n // process `handleHeight/handleWidth` props\r\n return prev;\r\n }\r\n if (onResize && isFunction(onResize)) {\r\n onResize(width, height);\r\n }\r\n return { width: width, height: height };\r\n });\r\n };\r\n};var ResizeDetector = /** @class */ (function (_super) {\r\n __extends(ResizeDetector, _super);\r\n function ResizeDetector(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.cancelHandler = function () {\r\n if (_this.resizeHandler && _this.resizeHandler.cancel) {\r\n // cancel debounced handler\r\n _this.resizeHandler.cancel();\r\n _this.resizeHandler = null;\r\n }\r\n };\r\n _this.attachObserver = function () {\r\n var _a = _this.props, targetRef = _a.targetRef, observerOptions = _a.observerOptions;\r\n if (isSSR()) {\r\n return;\r\n }\r\n if (targetRef && targetRef.current) {\r\n _this.targetRef.current = targetRef.current;\r\n }\r\n var element = _this.getElement();\r\n if (!element) {\r\n // can't find element to observe\r\n return;\r\n }\r\n if (_this.observableElement && _this.observableElement === element) {\r\n // element is already observed\r\n return;\r\n }\r\n _this.observableElement = element;\r\n _this.resizeObserver.observe(element, observerOptions);\r\n };\r\n _this.getElement = function () {\r\n var _a = _this.props, querySelector = _a.querySelector, targetDomEl = _a.targetDomEl;\r\n if (isSSR())\r\n return null;\r\n // in case we pass a querySelector\r\n if (querySelector)\r\n return document.querySelector(querySelector);\r\n // in case we pass a DOM element\r\n if (targetDomEl && isDOMElement(targetDomEl))\r\n return targetDomEl;\r\n // in case we pass a React ref using React.createRef()\r\n if (_this.targetRef && isDOMElement(_this.targetRef.current))\r\n return _this.targetRef.current;\r\n // the worse case when we don't receive any information from the parent and the library doesn't add any wrappers\r\n // we have to use a deprecated `findDOMNode` method in order to find a DOM element to attach to\r\n var currentElement = findDOMNode(_this);\r\n if (!currentElement)\r\n return null;\r\n var renderType = _this.getRenderType();\r\n switch (renderType) {\r\n case 'renderProp':\r\n return currentElement;\r\n case 'childFunction':\r\n return currentElement;\r\n case 'child':\r\n return currentElement;\r\n case 'childArray':\r\n return currentElement;\r\n default:\r\n return currentElement.parentElement;\r\n }\r\n };\r\n _this.createResizeHandler = function (entries) {\r\n var _a = _this.props, _b = _a.handleWidth, handleWidth = _b === void 0 ? true : _b, _c = _a.handleHeight, handleHeight = _c === void 0 ? true : _c, onResize = _a.onResize;\r\n if (!handleWidth && !handleHeight)\r\n return;\r\n var notifyResize = createNotifier(onResize, _this.setState.bind(_this), handleWidth, handleHeight);\r\n entries.forEach(function (entry) {\r\n var _a = (entry && entry.contentRect) || {}, width = _a.width, height = _a.height;\r\n var shouldSetSize = !_this.skipOnMount && !isSSR();\r\n if (shouldSetSize) {\r\n notifyResize({ width: width, height: height });\r\n }\r\n _this.skipOnMount = false;\r\n });\r\n };\r\n _this.getRenderType = function () {\r\n var _a = _this.props, render = _a.render, children = _a.children;\r\n if (isFunction(render)) {\r\n // DEPRECATED. Use `Child Function Pattern` instead\r\n return 'renderProp';\r\n }\r\n if (isFunction(children)) {\r\n return 'childFunction';\r\n }\r\n if (isValidElement(children)) {\r\n return 'child';\r\n }\r\n if (Array.isArray(children)) {\r\n // DEPRECATED. Wrap children with a single parent\r\n return 'childArray';\r\n }\r\n // DEPRECATED. Use `Child Function Pattern` instead\r\n return 'parent';\r\n };\r\n var skipOnMount = props.skipOnMount, refreshMode = props.refreshMode, _a = props.refreshRate, refreshRate = _a === void 0 ? 1000 : _a, refreshOptions = props.refreshOptions;\r\n _this.state = {\r\n width: undefined,\r\n height: undefined\r\n };\r\n _this.skipOnMount = skipOnMount;\r\n _this.targetRef = createRef();\r\n _this.observableElement = null;\r\n if (isSSR()) {\r\n return _this;\r\n }\r\n _this.resizeHandler = patchResizeHandler(_this.createResizeHandler, refreshMode, refreshRate, refreshOptions);\r\n _this.resizeObserver = new window.ResizeObserver(_this.resizeHandler);\r\n return _this;\r\n }\r\n ResizeDetector.prototype.componentDidMount = function () {\r\n this.attachObserver();\r\n };\r\n ResizeDetector.prototype.componentDidUpdate = function () {\r\n this.attachObserver();\r\n };\r\n ResizeDetector.prototype.componentWillUnmount = function () {\r\n if (isSSR()) {\r\n return;\r\n }\r\n this.resizeObserver.disconnect();\r\n this.cancelHandler();\r\n };\r\n ResizeDetector.prototype.render = function () {\r\n var _a = this.props, render = _a.render, children = _a.children, _b = _a.nodeType, WrapperTag = _b === void 0 ? 'div' : _b;\r\n var _c = this.state, width = _c.width, height = _c.height;\r\n var childProps = { width: width, height: height, targetRef: this.targetRef };\r\n var renderType = this.getRenderType();\r\n var typedChildren;\r\n switch (renderType) {\r\n case 'renderProp':\r\n return render && render(childProps);\r\n case 'childFunction':\r\n typedChildren = children;\r\n return typedChildren(childProps);\r\n case 'child':\r\n // @TODO bug prone logic\r\n typedChildren = children;\r\n if (typedChildren.type && typeof typedChildren.type === 'string') {\r\n // child is a native DOM elements such as div, span etc\r\n childProps.targetRef; var nativeProps = __rest(childProps, [\"targetRef\"]);\r\n return cloneElement(typedChildren, nativeProps);\r\n }\r\n // class or functional component otherwise\r\n return cloneElement(typedChildren, childProps);\r\n case 'childArray':\r\n typedChildren = children;\r\n return typedChildren.map(function (el) { return !!el && cloneElement(el, childProps); });\r\n default:\r\n return React.createElement(WrapperTag, null);\r\n }\r\n };\r\n return ResizeDetector;\r\n}(PureComponent));function withResizeDetector(ComponentInner, options) {\r\n if (options === void 0) { options = {}; }\r\n var ResizeDetectorHOC = /** @class */ (function (_super) {\r\n __extends(ResizeDetectorHOC, _super);\r\n function ResizeDetectorHOC() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.ref = createRef();\r\n return _this;\r\n }\r\n ResizeDetectorHOC.prototype.render = function () {\r\n var _a = this.props, forwardedRef = _a.forwardedRef, rest = __rest(_a, [\"forwardedRef\"]);\r\n var targetRef = forwardedRef !== null && forwardedRef !== void 0 ? forwardedRef : this.ref;\r\n return (React.createElement(ResizeDetector, __assign({}, options, { targetRef: targetRef }),\r\n React.createElement(ComponentInner, __assign({ targetRef: targetRef }, rest))));\r\n };\r\n return ResizeDetectorHOC;\r\n }(Component));\r\n function forwardRefWrapper(props, ref) {\r\n return React.createElement(ResizeDetectorHOC, __assign({}, props, { forwardedRef: ref }));\r\n }\r\n var name = ComponentInner.displayName || ComponentInner.name;\r\n forwardRefWrapper.displayName = \"withResizeDetector(\".concat(name, \")\");\r\n return forwardRef(forwardRefWrapper);\r\n}var useEnhancedEffect = isSSR() ? useEffect : useLayoutEffect;\r\nfunction useResizeDetector(props) {\r\n if (props === void 0) { props = {}; }\r\n var _a = props.skipOnMount, skipOnMount = _a === void 0 ? false : _a, refreshMode = props.refreshMode, _b = props.refreshRate, refreshRate = _b === void 0 ? 1000 : _b, refreshOptions = props.refreshOptions, _c = props.handleWidth, handleWidth = _c === void 0 ? true : _c, _d = props.handleHeight, handleHeight = _d === void 0 ? true : _d, targetRef = props.targetRef, observerOptions = props.observerOptions, onResize = props.onResize;\r\n var skipResize = useRef(skipOnMount);\r\n var localRef = useRef(null);\r\n var ref = (targetRef !== null && targetRef !== void 0 ? targetRef : localRef);\r\n var resizeHandler = useRef();\r\n var _e = useState({\r\n width: undefined,\r\n height: undefined\r\n }), size = _e[0], setSize = _e[1];\r\n useEnhancedEffect(function () {\r\n if (isSSR()) {\r\n return;\r\n }\r\n var notifyResize = createNotifier(onResize, setSize, handleWidth, handleHeight);\r\n var resizeCallback = function (entries) {\r\n if (!handleWidth && !handleHeight)\r\n return;\r\n entries.forEach(function (entry) {\r\n var _a = (entry && entry.contentRect) || {}, width = _a.width, height = _a.height;\r\n var shouldSetSize = !skipResize.current && !isSSR();\r\n if (shouldSetSize) {\r\n notifyResize({ width: width, height: height });\r\n }\r\n skipResize.current = false;\r\n });\r\n };\r\n resizeHandler.current = patchResizeHandler(resizeCallback, refreshMode, refreshRate, refreshOptions);\r\n var resizeObserver = new window.ResizeObserver(resizeHandler.current);\r\n if (ref.current) {\r\n // Something wrong with typings here...\r\n resizeObserver.observe(ref.current, observerOptions);\r\n }\r\n return function () {\r\n resizeObserver.disconnect();\r\n var patchedResizeHandler = resizeHandler.current;\r\n if (patchedResizeHandler && patchedResizeHandler.cancel) {\r\n patchedResizeHandler.cancel();\r\n }\r\n };\r\n }, [refreshMode, refreshRate, refreshOptions, handleWidth, handleHeight, onResize, observerOptions, ref.current]);\r\n return __assign({ ref: ref }, size);\r\n}export{ResizeDetector as default,useResizeDetector,withResizeDetector};//# sourceMappingURL=index.esm.js.map\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Enums, Types, utilities } from '@cornerstonejs/core';\nimport { utilities as csToolsUtils } from '@cornerstonejs/tools';\nimport { ImageScrollbar } from '@ohif/ui';\nimport { ServicesManger } from '@ohif/core';\n\nfunction CornerstoneImageScrollbar({\n viewportData,\n viewportIndex,\n element,\n imageSliceData,\n setImageSliceData,\n scrollbarHeight,\n servicesManager,\n}) {\n const {\n cineService,\n cornerstoneViewportService,\n } = (servicesManager as ServicesManger).services;\n\n const onImageScrollbarChange = (imageIndex, viewportIndex) => {\n const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex(\n viewportIndex\n );\n\n const viewportId = viewportInfo.getViewportId();\n const viewport = cornerstoneViewportService.getCornerstoneViewport(\n viewportId\n );\n\n const { isCineEnabled } = cineService.getState();\n\n if (isCineEnabled) {\n // on image scrollbar change, stop the CINE if it is playing\n cineService.stopClip(element);\n cineService.setCine({ id: viewportIndex, isPlaying: false });\n }\n\n csToolsUtils.jumpToSlice(viewport.element, {\n imageIndex,\n debounceLoading: true,\n });\n };\n\n useEffect(() => {\n if (!viewportData) {\n return;\n }\n\n const viewport = cornerstoneViewportService.getCornerstoneViewportByIndex(\n viewportIndex\n );\n\n if (!viewport) {\n return;\n }\n\n if (viewportData.viewportType === Enums.ViewportType.STACK) {\n const imageIndex = viewport.getCurrentImageIdIndex();\n\n setImageSliceData({\n imageIndex: imageIndex,\n numberOfSlices: viewportData.data.imageIds.length,\n });\n\n return;\n }\n\n if (viewportData.viewportType === Enums.ViewportType.ORTHOGRAPHIC) {\n const sliceData = utilities.getImageSliceDataForVolumeViewport(\n viewport as Types.IVolumeViewport\n );\n\n if (!sliceData) {\n return;\n }\n\n const { imageIndex, numberOfSlices } = sliceData;\n setImageSliceData({ imageIndex, numberOfSlices });\n }\n }, [viewportIndex, viewportData]);\n\n useEffect(() => {\n if (viewportData?.viewportType !== Enums.ViewportType.STACK) {\n return;\n }\n\n const updateStackIndex = event => {\n const { newImageIdIndex } = event.detail;\n // find the index of imageId in the imageIds\n setImageSliceData({\n imageIndex: newImageIdIndex,\n numberOfSlices: viewportData.data.imageIds.length,\n });\n };\n\n element.addEventListener(\n Enums.Events.STACK_VIEWPORT_SCROLL,\n updateStackIndex\n );\n\n return () => {\n element.removeEventListener(\n Enums.Events.STACK_VIEWPORT_SCROLL,\n updateStackIndex\n );\n };\n }, [viewportData, element]);\n\n useEffect(() => {\n if (viewportData?.viewportType !== Enums.ViewportType.ORTHOGRAPHIC) {\n return;\n }\n\n const updateVolumeIndex = event => {\n const { imageIndex, numberOfSlices } = event.detail;\n // find the index of imageId in the imageIds\n setImageSliceData({ imageIndex, numberOfSlices });\n };\n\n element.addEventListener(Enums.Events.VOLUME_NEW_IMAGE, updateVolumeIndex);\n\n return () => {\n element.removeEventListener(\n Enums.Events.VOLUME_NEW_IMAGE,\n updateVolumeIndex\n );\n };\n }, [viewportData, element]);\n\n return (\n onImageScrollbarChange(evt, viewportIndex)}\n max={\n imageSliceData.numberOfSlices ? imageSliceData.numberOfSlices - 1 : 0\n }\n height={scrollbarHeight}\n value={imageSliceData.imageIndex}\n />\n );\n}\n\nCornerstoneImageScrollbar.propTypes = {\n viewportData: PropTypes.object,\n viewportIndex: PropTypes.number.isRequired,\n element: PropTypes.instanceOf(Element),\n scrollbarHeight: PropTypes.string,\n imageSliceData: PropTypes.object.isRequired,\n setImageSliceData: PropTypes.func.isRequired,\n servicesManager: PropTypes.object.isRequired,\n};\n\nexport default CornerstoneImageScrollbar;\n","import moment from 'moment';\nimport { metaData } from '@cornerstonejs/core';\n\n/**\n * Checks if value is valid.\n *\n * @param {number} value\n * @returns {boolean} is valid.\n */\nexport function isValidNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\n/**\n * Formats number precision.\n *\n * @param {number} number\n * @param {number} precision\n * @returns {number} formatted number.\n */\nexport function formatNumberPrecision(number, precision = 0) {\n if (number !== null) {\n return parseFloat(number).toFixed(precision);\n }\n}\n\n/**\n * Formats DICOM date.\n *\n * @param {string} date\n * @param {string} strFormat\n * @returns {string} formatted date.\n */\nexport function formatDICOMDate(date, strFormat = 'MMM D, YYYY') {\n return moment(date, 'YYYYMMDD').format(strFormat);\n}\n\n/**\n * DICOM Time is stored as HHmmss.SSS, where:\n * HH 24 hour time:\n * m mm 0..59 Minutes\n * s ss 0..59 Seconds\n * S SS SSS 0..999 Fractional seconds\n *\n * Goal: '24:12:12'\n *\n * @param {*} time\n * @param {string} strFormat\n * @returns {string} formatted name.\n */\nexport function formatDICOMTime(time, strFormat = 'HH:mm:ss') {\n return moment(time, 'HH:mm:ss').format(strFormat);\n}\n\n/**\n * Formats a patient name for display purposes\n *\n * @param {string} name\n * @returns {string} formatted name.\n */\nexport function formatPN(name) {\n if (!name) {\n return '';\n }\n\n const cleaned = name\n .split('^')\n .filter(s => !!s)\n .join(', ')\n .trim();\n return cleaned === ',' || cleaned === '' ? '' : cleaned;\n}\n\n/**\n * Gets compression type\n *\n * @param {number} imageId\n * @returns {string} comrpession type.\n */\nexport function getCompression(imageId) {\n const generalImageModule = metaData.get('generalImageModule', imageId) || {};\n const {\n lossyImageCompression,\n lossyImageCompressionRatio,\n lossyImageCompressionMethod,\n } = generalImageModule;\n\n if (lossyImageCompression === '01' && lossyImageCompressionRatio !== '') {\n const compressionMethod = lossyImageCompressionMethod || 'Lossy: ';\n const compressionRatio = formatNumberPrecision(\n lossyImageCompressionRatio,\n 2\n );\n return compressionMethod + compressionRatio + ' : 1';\n }\n\n return 'Lossless / Uncompressed';\n}\n","import React, { createElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { vec3 } from 'gl-matrix';\nimport PropTypes from 'prop-types';\nimport { metaData, Enums, utilities } from '@cornerstonejs/core';\nimport { ViewportOverlay } from '@ohif/ui';\nimport {\n formatPN,\n formatDICOMDate,\n formatDICOMTime,\n formatNumberPrecision,\n isValidNumber,\n} from './utils';\nimport { InstanceMetadata } from 'platform/core/src/types';\nimport { ServicesManager } from '@ohif/core';\nimport { ImageSliceData } from '@cornerstonejs/core/dist/esm/types';\nimport './CustomizableViewportOverlay.css';\n\nimport moment from 'moment';\n\nconst EPSILON = 1e-4;\n\ninterface OverlayItemProps {\n element: any;\n viewportData: any;\n imageSliceData: ImageSliceData;\n viewportIndex: number | null;\n servicesManager: ServicesManager;\n instance: InstanceMetadata;\n customization: any;\n formatters: {\n formatPN: (val) => string;\n formatDate: (val) => string;\n formatTime: (val) => string;\n formatNumberPrecision: (val, number) => string;\n };\n\n // calculated values\n voi: {\n windowWidth: number;\n windowCenter: number;\n };\n instanceNumber?: number;\n scale?: number;\n}\n\n/**\n * Window Level / Center Overlay item\n */\nfunction VOIOverlayItem({ voi, customization }: OverlayItemProps) {\n const { windowWidth, windowCenter } = voi;\n if (typeof windowCenter !== 'number' || typeof windowWidth !== 'number') {\n return null;\n }\n\n return (\n \n W:\n \n {windowWidth.toFixed(0)}\n \n L:\n \n {windowCenter.toFixed(0)}\n \n \n );\n}\n\n/**\n * Zoom Level Overlay item\n */\nfunction ZoomOverlayItem({ scale, customization }: OverlayItemProps) {\n return (\n \n Zoom:\n {scale.toFixed(2)}x\n \n );\n}\n\n/**\n * Instance Number Overlay Item\n */\nfunction InstanceNumberOverlayItem({\n instanceNumber,\n imageSliceData,\n customization,\n}: OverlayItemProps) {\n const { imageIndex, numberOfSlices } = imageSliceData;\n\n return (\n \n I:\n \n {instanceNumber !== undefined && instanceNumber !== null\n ? `${instanceNumber} (${imageIndex + 1}/${numberOfSlices})`\n : `${imageIndex + 1}/${numberOfSlices}`}\n \n \n );\n}\n\n/**\n * Customizable Viewport Overlay\n */\nfunction CustomizableViewportOverlay({\n element,\n viewportData,\n imageSliceData,\n viewportIndex,\n servicesManager,\n viewportId\n}) {\n const {\n toolbarService,\n cornerstoneViewportService,\n customizationService,\n } = servicesManager.services;\n\n const [voi, setVOI] = useState({ windowCenter: null, windowWidth: null });\n const [scale, setScale] = useState(1);\n const [activeTools, setActiveTools] = useState([]);\n const { imageIndex } = imageSliceData;\n\n const topLeftCustomization = customizationService.getModeCustomization(\n 'cornerstoneOverlayTopLeft'\n );\n const topRightCustomization = customizationService.getModeCustomization(\n 'cornerstoneOverlayTopRight'\n );\n const bottomLeftCustomization = customizationService.getModeCustomization(\n 'cornerstoneOverlayBottomLeft'\n );\n const bottomRightCustomization = customizationService.getModeCustomization(\n 'cornerstoneOverlayBottomRight'\n );\n\n const instance = useMemo(() => {\n if (viewportData != null) {\n return _getViewportInstance(viewportData, imageIndex);\n } else {\n return null;\n }\n }, [viewportData, imageIndex]);\n\n const instanceNumber = useMemo(() => {\n if (viewportData != null) {\n return _getInstanceNumber(\n viewportData,\n viewportIndex,\n imageIndex,\n cornerstoneViewportService\n );\n }\n return null;\n }, [viewportData, viewportIndex, imageIndex, cornerstoneViewportService]);\n\n\n // Implementado\n const [tagsDicom, setTagsDicom] = useState({\n NomePaciente: \"\",\n PatientID: \"\",\n Descricao: \"\",\n DataImagem: \"\",\n SerieNumero: \"\",\n ImageCompression: \"\",\n ImageDimensions: \"\"\n });\n const [imagePlaneModule, setImagePlaneModule] = useState({});\n const [frameRate, setFrameRate] = useState(0);\n\n const getInfoImage = () => {\n try {\n return servicesManager.services.DisplaySetService.getDisplaySetByUID(viewportData.data.displaySetInstanceUID).images[imageSliceData.imageIndex];\n } catch (ex) { console.log(ex) }\n }\n\n const retTagInfoPatientName = () => {\n try {\n return getInfoImage().PatientName[0].Alphabetic;\n } catch (ex) { console.log(ex) }\n }\n\n const retTagInfo = (tag) => {\n try {\n return getInfoImage()[tag];\n } catch (ex) { console.log(ex) }\n }\n\n const retTagInfoDataImagem = () => {\n try {\n const data = getInfoImage().StudyDate;\n const hora = getInfoImage().StudyTime;\n return `${moment(data).format(\"MMM D, YYYY\")} ${moment(hora, 'HH:mm:ss').format('HH:mm:ss')}`;\n } catch (ex) { console.log(ex) }\n }\n\n const formatNumberPrecision = (number, precision) => {\n if (number !== null) {\n return parseFloat(number).toFixed(precision);\n }\n }\n\n const retTagInfoCompression = () => {\n try {\n const imageId = getInfoImage().imageId;\n const generalImageModule =\n cornerstone.metaData.get('generalImageModule', imageId) || {};\n const {\n lossyImageCompression,\n lossyImageCompressionRatio,\n lossyImageCompressionMethod,\n } = generalImageModule;\n\n if (lossyImageCompression === '01' && lossyImageCompressionRatio !== '') {\n const compressionMethod = lossyImageCompressionMethod || 'Lossy: ';\n const compressionRatio = formatNumberPrecision(\n lossyImageCompressionRatio,\n 2\n );\n return compressionMethod + compressionRatio + ' : 1';\n }\n return 'Lossless / Uncompressed';\n } catch (ex) { }\n }\n\n useEffect(() => {\n try {\n if (viewportData === null) return;\n if (viewportData.data.displaySetInstanceUID) {\n\n const imageId = getInfoImage().imageId;\n const _imagePlaneModule = cornerstone.metaData.get('imagePlaneModule', imageId) || {};\n const { rows, columns, sliceThickness, sliceLocation } = _imagePlaneModule;\n setImagePlaneModule(_imagePlaneModule);\n\n const cineModule = cornerstone.metaData.get('cineModule', imageId) || {};\n const { frameTime } = cineModule;\n setFrameRate(formatNumberPrecision(1000 / frameTime, 1));\n\n //setImagePlaneModule\n setTagsDicom({\n NomePaciente: retTagInfoPatientName(),\n PatientID: retTagInfo('PatientID'),\n SerieNumero: retTagInfo('SeriesNumber'),\n Descricao: retTagInfo('SeriesDescription'),\n DataImagem: retTagInfoDataImagem(),\n ImageCompression: retTagInfoCompression(),\n ImageDimensions: `${retTagInfo('Columns')} x ${retTagInfo('Rows')}`\n });\n\n }\n } catch (ex) { console.log(ex) }\n }, [viewportData])\n\n /**\n * Initial toolbar state\n */\n useEffect(() => {\n setActiveTools(toolbarService.getActiveTools());\n }, []);\n\n /**\n * Updating the VOI when the viewport changes its voi\n */\n useEffect(() => {\n\n const updateVOI = eventDetail => {\n const { range } = eventDetail.detail;\n\n if (!range) {\n return;\n }\n\n const { lower, upper } = range;\n const { windowWidth, windowCenter } = utilities.windowLevel.toWindowLevel(\n lower,\n upper\n );\n\n setVOI({ windowCenter, windowWidth });\n };\n\n element.addEventListener(Enums.Events.VOI_MODIFIED, updateVOI);\n\n return () => {\n element.removeEventListener(Enums.Events.VOI_MODIFIED, updateVOI);\n };\n }, [viewportIndex, viewportData, voi, element]);\n\n\n /**\n * Updating the scale when the viewport changes its zoom\n */\n useEffect(() => {\n const updateScale = eventDetail => {\n const { previousCamera, camera } = eventDetail.detail;\n\n if (\n previousCamera.parallelScale !== camera.parallelScale ||\n previousCamera.scale !== camera.scale\n ) {\n const viewport = cornerstoneViewportService.getCornerstoneViewportByIndex(\n viewportIndex\n );\n\n if (!viewport) {\n return;\n }\n\n const imageData = viewport.getImageData();\n\n if (!imageData) {\n return;\n }\n\n if (camera.scale) {\n setScale(camera.scale);\n return;\n }\n\n const { spacing } = imageData;\n // convert parallel scale to scale\n const scale =\n (element.clientHeight * spacing[0] * 0.5) / camera.parallelScale;\n setScale(scale);\n }\n };\n\n element.addEventListener(Enums.Events.CAMERA_MODIFIED, updateScale);\n\n return () => {\n element.removeEventListener(Enums.Events.CAMERA_MODIFIED, updateScale);\n };\n }, [viewportIndex, viewportData, cornerstoneViewportService, element]);\n\n /**\n * Updating the active tools when the toolbar changes\n */\n // Todo: this should act on the toolGroups instead of the toolbar state\n useEffect(() => {\n const { unsubscribe } = toolbarService.subscribe(\n toolbarService.EVENTS.TOOL_BAR_STATE_MODIFIED,\n () => {\n setActiveTools(toolbarService.getActiveTools());\n }\n );\n\n return () => {\n unsubscribe();\n };\n }, [toolbarService]);\n\n const _renderOverlayItem = useCallback(\n item => {\n const overlayItemProps: OverlayItemProps = {\n element,\n viewportData,\n imageSliceData,\n viewportIndex,\n servicesManager,\n customization: item,\n formatters: {\n formatPN: formatPN,\n formatDate: formatDICOMDate,\n formatTime: formatDICOMTime,\n formatNumberPrecision: formatNumberPrecision,\n },\n instance,\n // calculated\n voi,\n scale,\n instanceNumber\n };\n\n if (item.customizationType === 'ohif.overlayItem.windowLevel') {\n return ;\n } else if (item.customizationType === 'ohif.overlayItem.zoomLevel') {\n return ;\n } else if (item.customizationType === 'ohif.overlayItem.instanceNumber') {\n return ;\n } else {\n const renderItem = customizationService.transform(item);\n\n if (typeof renderItem.content === 'function') {\n return renderItem.content(overlayItemProps);\n }\n }\n },\n [\n element,\n viewportData,\n imageSliceData,\n viewportIndex,\n servicesManager,\n customizationService,\n instance,\n voi,\n scale,\n instanceNumber,\n ]\n );\n\n const getTopLeftContent = useCallback(() => {\n return (
\n
{tagsDicom.NomePaciente}
\n
{tagsDicom.PatientID}
\n
);\n }, [imageSliceData]);\n\n const getBottomLeftContent = useCallback(() => {\n\n const { imageIndex, numberOfSlices } = imageSliceData;\n if (!viewportData) {\n return;\n }\n let instanceNumber;\n if (viewportData.viewportType === Enums.ViewportType.STACK) {\n instanceNumber = _getInstanceNumberFromStack(viewportData, imageIndex);\n } else if (viewportData.viewportType === Enums.ViewportType.ORTHOGRAPHIC) {\n instanceNumber = _getInstanceNumberFromVolume(\n viewportData,\n imageIndex,\n viewportIndex,\n cornerstoneViewportService\n );\n }\n return (
\n
\n Ser.\n {tagsDicom.SerieNumero}\n
\n
\n Img:\n \n {`${imageIndex + 1}/${numberOfSlices}`}\n \n
\n\n\n
\n {frameRate >= 0 ? `${formatNumberPrecision(frameRate, 2)} FPS` : ''}\n
{tagsDicom.ImageDimensions}
\n
\n {isValidNumber(imagePlaneModule.sliceLocation)\n ? `Loc: ${formatNumberPrecision(imagePlaneModule.sliceLocation, 2)} mm `\n : ''}\n {imagePlaneModule.sliceThickness\n ? `Thick: ${formatNumberPrecision(imagePlaneModule.sliceThickness, 2)} mm `\n : ''}\n
\n {/*
{seriesDescription}
*/}\n
\n
\n
);\n }, [imageSliceData, viewportData, viewportIndex]);\n\n const getBottomRightContent = useCallback(() => {\n const { windowWidth, windowCenter } = voi;\n\n if (activeTools.includes('WindowLevel')) {\n if (typeof windowCenter !== 'number' || typeof windowWidth !== 'number') {\n return null;\n }\n\n return (\n
\n
\n Zoom:\n {scale.toFixed(2)}x\n
\n
\n W:\n {windowWidth.toFixed(0)}\n L:\n {windowCenter.toFixed(0)}\n
\n
{tagsDicom.ImageCompression}
\n\n
\n );\n }\n\n return null;\n\n }, [voi, scale, activeTools]);\n\n const getTopRightContent = useCallback(() => {\n return (\n
\n
{tagsDicom.Descricao}
\n
{tagsDicom.DataImagem}
\n
\n );\n }, [imageSliceData, viewportData, viewportIndex]);\n\n if (!viewportData) {\n return null;\n }\n\n return (\n \n );\n}\n\n\nfunction _getViewportInstance(viewportData, imageIndex) {\n let imageId = null;\n if (viewportData.viewportType === Enums.ViewportType.STACK) {\n imageId = viewportData.data.imageIds[imageIndex];\n } else if (viewportData.viewportType === Enums.ViewportType.ORTHOGRAPHIC) {\n const volumes = viewportData.volumes;\n if (volumes && volumes.length == 1) {\n const volume = volumes[0];\n imageId = volume.imageIds[imageIndex];\n }\n }\n return imageId ? metaData.get('instance', imageId) || {} : {};\n}\n\nfunction _getInstanceNumber(\n viewportData,\n viewportIndex,\n imageIndex,\n cornerstoneViewportService\n) {\n let instanceNumber;\n\n if (viewportData.viewportType === Enums.ViewportType.STACK) {\n instanceNumber = _getInstanceNumberFromStack(viewportData, imageIndex);\n\n if (!instanceNumber && instanceNumber !== 0) {\n return null;\n }\n } else if (viewportData.viewportType === Enums.ViewportType.ORTHOGRAPHIC) {\n instanceNumber = _getInstanceNumberFromVolume(\n viewportData,\n imageIndex,\n viewportIndex,\n cornerstoneViewportService\n );\n }\n return instanceNumber;\n}\n\nfunction _getInstanceNumberFromStack(viewportData, imageIndex) {\n const imageIds = viewportData.data.imageIds;\n const imageId = imageIds[imageIndex];\n\n if (!imageId) {\n return;\n }\n\n const generalImageModule = metaData.get('generalImageModule', imageId) || {};\n const { instanceNumber } = generalImageModule;\n\n const stackSize = imageIds.length;\n\n if (stackSize <= 1) {\n return;\n }\n\n return parseInt(instanceNumber);\n}\n\n// Since volume viewports can be in any view direction, they can render\n// a reconstructed image which don't have imageIds; therefore, no instance and instanceNumber\n// Here we check if viewport is in the acquisition direction and if so, we get the instanceNumber\nfunction _getInstanceNumberFromVolume(\n viewportData,\n imageIndex,\n viewportIndex,\n cornerstoneViewportService\n) {\n const volumes = viewportData.volumes;\n\n // Todo: support fusion of acquisition plane which has instanceNumber\n if (!volumes || volumes.length > 1) {\n return;\n }\n\n const volume = volumes[0];\n const { direction, imageIds } = volume;\n\n const cornerstoneViewport = cornerstoneViewportService.getCornerstoneViewportByIndex(\n viewportIndex\n );\n\n if (!cornerstoneViewport) {\n return;\n }\n\n const camera = cornerstoneViewport.getCamera();\n const { viewPlaneNormal } = camera;\n // checking if camera is looking at the acquisition plane (defined by the direction on the volume)\n\n const scanAxisNormal = direction.slice(6, 9);\n\n // check if viewPlaneNormal is parallel to scanAxisNormal\n const cross = vec3.cross(vec3.create(), viewPlaneNormal, scanAxisNormal);\n const isAcquisitionPlane = vec3.length(cross) < EPSILON;\n\n if (isAcquisitionPlane) {\n const imageId = imageIds[imageIndex];\n\n if (!imageId) {\n return {};\n }\n\n const { instanceNumber } =\n metaData.get('generalImageModule', imageId) || {};\n return parseInt(instanceNumber);\n }\n}\n\nCustomizableViewportOverlay.propTypes = {\n viewportData: PropTypes.object,\n imageIndex: PropTypes.number,\n viewportIndex: PropTypes.number,\n};\n\nexport default CustomizableViewportOverlay;\n","import React, { useEffect, useState, useMemo } from 'react';\nimport classNames from 'classnames';\nimport {\n metaData,\n Enums,\n Types,\n getEnabledElement,\n utilities as csUtils,\n} from '@cornerstonejs/core';\nimport { utilities } from '@cornerstonejs/tools';\nimport PropTypes from 'prop-types';\nimport { vec3 } from 'gl-matrix';\n\nimport './ViewportOrientationMarkers.css';\n\nconst {\n getOrientationStringLPS,\n invertOrientationStringLPS,\n} = utilities.orientation;\n\nfunction ViewportOrientationMarkers({\n element,\n viewportData,\n imageSliceData,\n viewportIndex,\n servicesManager,\n orientationMarkers = ['top', 'left'],\n}) {\n // Rotation is in degrees\n const [rotation, setRotation] = useState(0);\n const [flipHorizontal, setFlipHorizontal] = useState(false);\n const [flipVertical, setFlipVertical] = useState(false);\n const { cornerstoneViewportService } = servicesManager.services;\n\n useEffect(() => {\n const cameraModifiedListener = (\n evt: Types.EventTypes.CameraModifiedEvent\n ) => {\n const { rotation, previousCamera, camera } = evt.detail;\n\n if (rotation !== undefined) {\n setRotation(rotation);\n }\n\n if (\n camera.flipHorizontal !== undefined &&\n previousCamera.flipHorizontal !== camera.flipHorizontal\n ) {\n setFlipHorizontal(camera.flipHorizontal);\n }\n\n if (\n camera.flipVertical !== undefined &&\n previousCamera.flipVertical !== camera.flipVertical\n ) {\n setFlipVertical(camera.flipVertical);\n }\n };\n\n element.addEventListener(\n Enums.Events.CAMERA_MODIFIED,\n cameraModifiedListener\n );\n\n return () => {\n element.removeEventListener(\n Enums.Events.CAMERA_MODIFIED,\n cameraModifiedListener\n );\n };\n }, []);\n\n const markers = useMemo(() => {\n if (!viewportData) {\n return '';\n }\n\n let rowCosines, columnCosines;\n if (viewportData.viewportType === 'stack') {\n const imageIndex = imageSliceData.imageIndex;\n const imageId = viewportData.data.imageIds?.[imageIndex];\n\n // Workaround for below TODO stub\n if (!imageId) {\n return false;\n }\n\n ({ rowCosines, columnCosines } =\n metaData.get('imagePlaneModule', imageId) || {});\n } else {\n if (!element || !getEnabledElement(element)) {\n return '';\n }\n\n const { viewport } = getEnabledElement(element);\n const { viewUp, viewPlaneNormal } = viewport.getCamera();\n\n const viewRight = vec3.create();\n vec3.cross(viewRight, viewUp, viewPlaneNormal);\n\n columnCosines = [-viewUp[0], -viewUp[1], -viewUp[2]];\n rowCosines = viewRight;\n }\n\n if (!rowCosines || !columnCosines || rotation === undefined) {\n return '';\n }\n\n const markers = _getOrientationMarkers(\n rowCosines,\n columnCosines,\n rotation,\n flipVertical,\n flipHorizontal\n );\n\n const ohifViewport = cornerstoneViewportService.getViewportInfoByIndex(\n viewportIndex\n );\n\n if (!ohifViewport) {\n console.log('ViewportOrientationMarkers::No viewport');\n return null;\n }\n const backgroundColor = ohifViewport.getViewportOptions().background;\n\n // Todo: probably this can be done in a better way in which we identify bright\n // background\n const isLight = backgroundColor\n ? csUtils.isEqual(backgroundColor, [1, 1, 1])\n : false;\n\n return orientationMarkers.map((m, index) => (\n \n
{markers[m]}
\n \n ));\n }, [\n viewportData,\n imageSliceData,\n rotation,\n flipVertical,\n flipHorizontal,\n orientationMarkers,\n element,\n ]);\n\n return
{markers}
;\n}\n\nViewportOrientationMarkers.propTypes = {\n percentComplete: PropTypes.number,\n error: PropTypes.object,\n};\n\nViewportOrientationMarkers.defaultProps = {\n percentComplete: 0,\n error: null,\n};\n\n/**\n *\n * Computes the orientation labels on a Cornerstone-enabled Viewport element\n * when the viewport settings change (e.g. when a horizontal flip or a rotation occurs)\n *\n * @param {*} rowCosines\n * @param {*} columnCosines\n * @param {*} rotation in degrees\n * @returns\n */\nfunction _getOrientationMarkers(\n rowCosines,\n columnCosines,\n rotation,\n flipVertical,\n flipHorizontal\n) {\n const rowString = getOrientationStringLPS(rowCosines);\n const columnString = getOrientationStringLPS(columnCosines);\n const oppositeRowString = invertOrientationStringLPS(rowString);\n const oppositeColumnString = invertOrientationStringLPS(columnString);\n\n const markers = {\n top: oppositeColumnString,\n left: oppositeRowString,\n right: rowString,\n bottom: columnString,\n };\n\n // If any vertical or horizontal flips are applied, change the orientation strings ahead of\n // the rotation applications\n if (flipVertical) {\n markers.top = invertOrientationStringLPS(markers.top);\n markers.bottom = invertOrientationStringLPS(markers.bottom);\n }\n\n if (flipHorizontal) {\n markers.left = invertOrientationStringLPS(markers.left);\n markers.right = invertOrientationStringLPS(markers.right);\n }\n\n // Swap the labels accordingly if the viewport has been rotated\n // This could be done in a more complex way for intermediate rotation values (e.g. 45 degrees)\n if (rotation === 90 || rotation === -270) {\n return {\n top: markers.left,\n left: invertOrientationStringLPS(markers.top),\n right: invertOrientationStringLPS(markers.bottom),\n bottom: markers.right, // left\n };\n } else if (rotation === -90 || rotation === 270) {\n return {\n top: invertOrientationStringLPS(markers.left),\n left: markers.top,\n bottom: markers.left,\n right: markers.bottom,\n };\n } else if (rotation === 180 || rotation === -180) {\n return {\n top: invertOrientationStringLPS(markers.top),\n left: invertOrientationStringLPS(markers.left),\n bottom: invertOrientationStringLPS(markers.bottom),\n right: invertOrientationStringLPS(markers.right),\n };\n }\n\n return markers;\n}\n\nexport default ViewportOrientationMarkers;\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { Enums } from '@cornerstonejs/core';\n\nfunction ViewportImageSliceLoadingIndicator({ viewportData, element }) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(false);\n\n const loadIndicatorRef = useRef(null);\n const imageIdToBeLoaded = useRef(null);\n\n const setLoadingState = evt => {\n clearTimeout(loadIndicatorRef.current);\n\n loadIndicatorRef.current = setTimeout(() => {\n setLoading(true);\n }, 50);\n };\n\n const setFinishLoadingState = evt => {\n clearTimeout(loadIndicatorRef.current);\n\n setLoading(false);\n };\n\n const setErrorState = evt => {\n clearTimeout(loadIndicatorRef.current);\n\n if (imageIdToBeLoaded.current === evt.detail.imageId) {\n setError(evt.detail.error);\n imageIdToBeLoaded.current = null;\n }\n };\n\n useEffect(() => {\n element.addEventListener(\n Enums.Events.STACK_VIEWPORT_SCROLL,\n setLoadingState\n );\n element.addEventListener(Enums.Events.IMAGE_LOAD_ERROR, setErrorState);\n element.addEventListener(\n Enums.Events.STACK_NEW_IMAGE,\n setFinishLoadingState\n );\n\n return () => {\n element.removeEventListener(\n Enums.Events.STACK_VIEWPORT_SCROLL,\n setLoadingState\n );\n\n element.removeEventListener(\n Enums.Events.STACK_NEW_IMAGE,\n setFinishLoadingState\n );\n\n element.removeEventListener(Enums.Events.IMAGE_LOAD_ERROR, setErrorState);\n };\n }, [element, viewportData]);\n\n if (error) {\n return (\n <>\n
\n
\n

\n

Error Loading Image

\n

An error has occurred.

\n

{error}

\n

\n
\n
\n \n );\n }\n\n if (loading) {\n return (\n // IMPORTANT: we need to use the pointer-events-none class to prevent the loading indicator from\n // interacting with the mouse, since scrolling should propagate to the viewport underneath\n
\n
\n

Loading...

\n
\n
\n );\n }\n\n return null;\n}\n\nViewportImageSliceLoadingIndicator.propTypes = {\n percentComplete: PropTypes.number,\n error: PropTypes.object,\n element: PropTypes.object,\n};\n\nViewportImageSliceLoadingIndicator.defaultProps = {\n percentComplete: 0,\n error: null,\n};\n\nexport default ViewportImageSliceLoadingIndicator;\n","import * as React from 'react';\nimport { useUpdateEffect } from 'primereact/hooks';\nimport { Tooltip } from 'primereact/tooltip';\nimport { ObjectUtils, DomHandler, classNames, IconUtils } from 'primereact/utils';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\n\nfunction _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}\n\nfunction _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}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nvar Checkbox = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n focusedState = _React$useState2[0],\n setFocusedState = _React$useState2[1];\n var elementRef = React.useRef(null);\n var inputRef = React.useRef(props.inputRef);\n var onClick = function onClick(event) {\n if (!props.disabled && !props.readOnly && props.onChange) {\n var _checked = isChecked();\n var checkboxClicked = event.target instanceof HTMLDivElement || event.target instanceof HTMLSpanElement;\n var isInputToggled = event.target === inputRef.current;\n var isCheckboxToggled = checkboxClicked && event.target.checked !== _checked;\n if (isInputToggled || isCheckboxToggled) {\n var value = _checked ? props.falseValue : props.trueValue;\n props.onChange({\n originalEvent: event,\n value: props.value,\n checked: value,\n stopPropagation: function stopPropagation() {},\n preventDefault: function preventDefault() {},\n target: {\n type: 'checkbox',\n name: props.name,\n id: props.id,\n value: props.value,\n checked: value\n }\n });\n }\n DomHandler.focus(inputRef.current);\n event.preventDefault();\n }\n };\n var onFocus = function onFocus() {\n setFocusedState(true);\n };\n var onBlur = function onBlur() {\n setFocusedState(false);\n };\n var onKeyDown = function onKeyDown(event) {\n if (event.code === 'Space') {\n onClick(event);\n }\n };\n var isChecked = function isChecked() {\n return props.checked === props.trueValue;\n };\n React.useImperativeHandle(ref, function () {\n return {\n props: props,\n getElement: function getElement() {\n return elementRef.current;\n },\n getInput: function getInput() {\n return inputRef.current;\n }\n };\n });\n React.useEffect(function () {\n ObjectUtils.combinedRefs(inputRef, props.inputRef);\n }, [inputRef, props.inputRef]);\n useUpdateEffect(function () {\n inputRef.current.checked = isChecked();\n }, [props.checked, props.trueValue]);\n var checked = isChecked();\n var hasTooltip = ObjectUtils.isNotEmpty(props.tooltip);\n var otherProps = ObjectUtils.findDiffKeys(props, Checkbox.defaultProps);\n var ariaProps = ObjectUtils.reduceKeys(otherProps, DomHandler.ARIA_PROPS);\n var className = classNames('p-checkbox p-component', {\n 'p-checkbox-checked': checked,\n 'p-checkbox-disabled': props.disabled,\n 'p-checkbox-focused': focusedState\n }, props.className);\n var boxClass = classNames('p-checkbox-box', {\n 'p-highlight': checked,\n 'p-disabled': props.disabled,\n 'p-focus': focusedState\n });\n var icon = IconUtils.getJSXIcon(checked ? props.icon : '', {\n className: 'p-checkbox-icon p-c'\n }, {\n props: props,\n checked: checked\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: elementRef,\n id: props.id,\n className: className,\n style: props.style\n }, otherProps, {\n onClick: onClick,\n onContextMenu: props.onContextMenu,\n onMouseDown: props.onMouseDown\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-hidden-accessible\"\n }, /*#__PURE__*/React.createElement(\"input\", _extends({\n ref: inputRef,\n type: \"checkbox\",\n id: props.inputId,\n name: props.name,\n tabIndex: props.tabIndex,\n defaultChecked: checked,\n onFocus: onFocus,\n onBlur: onBlur,\n onKeyDown: onKeyDown,\n disabled: props.disabled,\n readOnly: props.readOnly,\n required: props.required\n }, ariaProps))), /*#__PURE__*/React.createElement(\"div\", {\n className: boxClass\n }, icon)), hasTooltip && /*#__PURE__*/React.createElement(Tooltip, _extends({\n target: elementRef,\n content: props.tooltip\n }, props.tooltipOptions)));\n}));\nCheckbox.displayName = 'Checkbox';\nCheckbox.defaultProps = {\n __TYPE: 'Checkbox',\n id: null,\n inputRef: null,\n inputId: null,\n value: null,\n name: null,\n checked: false,\n trueValue: true,\n falseValue: false,\n style: null,\n className: null,\n disabled: false,\n required: false,\n readOnly: false,\n tabIndex: null,\n icon: 'pi pi-check',\n tooltip: null,\n tooltipOptions: null,\n onChange: null,\n onMouseDown: null,\n onContextMenu: null\n};\n\nexport { Checkbox };\n","import axios from \"axios\";\r\n\r\nconst wadoRoot = () => {\r\n return `${window.config.dataSources[0].configuration['wadoRoot']}/studies`;\r\n}\r\n\r\nexport class ImagemService {\r\n\r\n getImagensChave(STUDYUID_FKEY, SERIESUID_FKEY) {\r\n try {\r\n return axios.get(`${wadoRoot()}/${STUDYUID_FKEY}/${SERIESUID_FKEY}/getImagesKeyBySeriesLevel`);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n putImageKey(VALUE, STUDYUID_FKEY, SERIESUID_FKEY, INSTANCEUID) {\r\n try {\r\n return axios.put(`${wadoRoot()}/${VALUE}/${STUDYUID_FKEY}/${SERIESUID_FKEY}/${INSTANCEUID}/putimagemimpressao`);\r\n }\r\n catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n postImagemSecundaria(imagemSecundariaDTO) {\r\n try {\r\n var formdata = new FormData();\r\n formdata.append('InstanceUid', imagemSecundariaDTO.InstanceUid);\r\n formdata.append('Image', imagemSecundariaDTO.Image);\r\n return axios.post(`${wadoRoot()}/postGerarImagemSecundaria`, formdata);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n}\r\n","import React, { useEffect, useState } from 'react';\nimport { Checkbox } from 'primereact/checkbox';\nimport { ImagemService } from '../../../../../platform/viewer/src/service/ImagemService';\n\nfunction CheckImagemChave(props) {\n\n const {\n SeriesInstanceUID,\n StudyInstanceUID,\n SOPInstanceUID\n } = props.stateObjImageKey;\n\n useEffect(() => {\n if (SOPInstanceUID) {\n getImageKey();\n }\n }, [SOPInstanceUID])\n\n const [checked, setChecked] = useState(false);\n\n function onChangeChecked(e) {\n fncSetImageKey(e.checked);\n setChecked(e.checked);\n }\n\n function getImageKey() {\n try {\n const checked = window.memoImagesKey.filter(imagem => imagem === SOPInstanceUID).length > 0;\n setChecked(checked);\n } catch (error) {\n console.log(error);\n }\n }\n\n function fncSetImageKey(checked) {\n\n const putImageKey = value => {\n const imageService = new ImagemService();\n return imageService.putImageKey(value, StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID);\n }\n\n if (checked) {\n putImageKey('1')\n .then(resp => {\n if (resp.status === 200) {\n if (window.memoImagesKey)\n window.memoImagesKey.push(SOPInstanceUID);\n return;\n }\n alert('Falha ao definir imagem chave');\n })\n .catch(error => {\n console.log(error);\n });\n return;\n }\n\n if (checked === false) {\n putImageKey('0')\n .then(resp => {\n if (resp.status === 200) {\n const memoImagemChave = window.memoImagesKey.filter(imagem => imagem !== SOPInstanceUID);\n window.memoImagesKey = memoImagemChave;\n return;\n }\n alert('Falha ao definir imagem chave');\n })\n .catch(error => {\n console.log(error);\n })\n }\n }\n\n return (\n \n
\n \n onChangeChecked(e)}\n />\n
\n \n );\n}\n\nexport default CheckImagemChave;\n","import React, { useEffect, useState } from 'react';\n\nimport ViewportImageScrollbar from './ViewportImageScrollbar';\nimport CustomizableViewportOverlay from './CustomizableViewportOverlay';\nimport ViewportOrientationMarkers from './ViewportOrientationMarkers';\nimport ViewportImageSliceLoadingIndicator from './ViewportImageSliceLoadingIndicator';\nimport ReactDOM from 'react-dom';\nimport CkbImagemChave from './CkbImagemChave';\n\nfunction CornerstoneOverlays(props) {\n const { viewportIndex, element, scrollbarHeight, servicesManager, viewportData, displaySets, viewportId } = props;\n const { cornerstoneViewportService } = servicesManager.services;\n const [imageSliceData, setImageSliceData] = useState({\n imageIndex: 0,\n numberOfSlices: 0,\n });\n\n const [stateObjImageKey, setStateObjImageKey] = useState({ SeriesInstanceUID: \"\", StudyInstanceUID: \"\", SOPInstanceUID: \"\" });\n const [stateSerie, setStateSerie] = useState(\"\");\n\n function getActiveImage() {\n\n try {\n\n if (viewportData === null) return;\n\n const getEnabledElements = cornerstone.getEnabledElements();\n\n if (getEnabledElements.length === 0 || getEnabledElements === undefined || getEnabledElements === null)\n return;\n\n const viewport = getEnabledElements[viewportIndex].viewport;\n\n const imageIndex = viewport.getTargetImageIdIndex();\n\n const { data } = viewportData;\n const { StudyInstanceUID, imageIds } = data;\n\n const objImageKey = {\n SeriesInstanceUID: imageIds[imageIndex].split('series/')[1].split('/instances')[0],\n StudyInstanceUID: StudyInstanceUID,\n SOPInstanceUID: imageIds[imageIndex].split('instances/')[1].split('/frames')[0],\n }\n\n if (objImageKey.SOPInstanceUID !== stateObjImageKey.SOPInstanceUID)\n setStateObjImageKey(objImageKey);\n\n } catch (ex) {\n console.log(ex);\n }\n\n }\n\n useEffect(() => {\n if (viewportData) {\n setTimeout(() => {\n getActiveImage();\n }, 1000);\n }\n }, [viewportData]);\n\n useEffect(() => {\n const params = new URLSearchParams(window.location.href).getAll(\"isPacientePortal\");\n const shouldRenderComponent = params.length === 0 || params[0] === 'false';\n\n if (stateObjImageKey) {\n if (stateObjImageKey.SOPInstanceUID) {\n const el = document.getElementsByClassName('imagemChaveSerie')[0];\n if (el) {\n el.id = `${el.id}_${stateObjImageKey.SOPInstanceUID}`\n el.classList.remove(\"imagemChaveSerie\");\n el.classList.add(el.id);\n setStateSerie(el.id);\n ReactDOM.render(shouldRenderComponent && , el);\n return;\n }\n\n const newEl = document.getElementsByClassName(stateSerie)[0];\n if (newEl) {\n ReactDOM.unmountComponentAtNode(newEl);\n ReactDOM.render(shouldRenderComponent && , newEl);\n return;\n }\n\n }\n }\n }, [stateObjImageKey]);\n\n getActiveImage();\n\n useEffect(() => {\n const { unsubscribe } = cornerstoneViewportService.subscribe(\n cornerstoneViewportService.EVENTS.VIEWPORT_DATA_CHANGED,\n props => {\n if (props.viewportIndex !== viewportIndex) {\n return;\n }\n }\n );\n\n return () => {\n unsubscribe();\n };\n }, [viewportIndex]);\n\n if (!element) {\n return null;\n }\n\n if (viewportData) {\n const viewportInfo =\n cornerstoneViewportService.getViewportInfoByIndex(viewportIndex);\n\n if (viewportInfo?.viewportOptions?.customViewportProps?.hideOverlays) {\n return null;\n }\n }\n\n return (\n
\n \n\n \n\n \n\n \n
\n );\n}\n\nexport default CornerstoneOverlays;\n","import axios from \"axios\";\nlet medidas = null;\nlet referencedImageId = \"\";\nlet countMedida = 0;\nlet enabledElement = \"\";\nlet viewPortId = \"viewport-0\";\nlet startProgressBar = null;\n\nexport default function getMedidasSalvas(StartProgressBar) {\n startProgressBar = StartProgressBar;\n try {\n if (medidas === null) {\n medidas = [];\n const servico = `${window.config.dataSources[0].configuration['wadoRoot']}/studies`;\n let studyUid =\n location.search.replace('?StudyInstanceUIDs=', \"\")\n .replace('&acessoportal=1', \"\");\n axios.get(`${servico}/${studyUid}/medida`)\n .then(resp => {\n medidas = resp.data;\n if (medidas.length > 0) {\n startProgressBar(true);\n let cacheSize = 0;\n const interval = setInterval(() => { // AGUARDAR CARREGAMENTO DAS IMAGENS\n const getCacheSize = cornerstone.cache.getCacheSize();\n if (getCacheSize === cacheSize) {\n clearInterval(interval);\n medidas.length === 1 ? adicionarUmaMedidaSalva() : checarMedidasEmSeriesDiferentes();\n }\n cacheSize = getCacheSize;\n }, 500);\n }\n })\n .catch(error => {\n console.error(`Não foi possível obter medidas: ${error}`);\n startProgressBar(false);\n })\n }\n } catch (error) {\n console.error(`Não foi posssível obter medidas: ${error}`);\n startProgressBar(false);\n }\n}\n\nfunction addAnnotation(medida) {\n enabledElement = cornerstoneTools.state.enabledElements[0];\n cornerstoneTools.annotation.state.addAnnotation(medida, enabledElement);\n try {\n const btnOk = document.getElementById('boxNotification').getElementsByTagName('button')[2];\n if (btnOk)\n btnOk.click();\n } catch (ex) { }\n\n if (countMedida > 0)\n adicionarMedidasEmSeriesDiferentes();\n}\n\nfunction adicionarUmaMedidaSalva() {\n addAnnotation(medidas[0]);\n startProgressBar(false);\n}\n\nfunction checarMedidasEmSeriesDiferentes() {\n const arrReferencedImageId = [...new Map(medidas.map(item => [item.metadata.referencedImageId, item.metadata.referencedImageId])).values()];\n arrReferencedImageId.length === 1 ? adicionarMedidasSomenteEmUmaSerie() : adicionarMedidasEmSeriesDiferentes();\n}\n\nfunction adicionarMedidasSomenteEmUmaSerie() {\n medidas.forEach(medida => {\n addAnnotation(medida);\n startProgressBar(false);\n });\n}\n\nfunction adicionarMedidasEmSeriesDiferentes() {\n if (countMedida === medidas.length) {\n retornarFocoNaPrimeiraSerie();\n } else {\n const medida = medidas[countMedida];\n const dataReferencedImageId = medida.metadata.referencedImageId;\n checarImagemDaMesmaSerie(medida.metadata.referencedImageId);\n if (referencedImageId === \"\" || referencedImageId === dataReferencedImageId) {\n aguardarCarregamentoDaSerie(medida, dataReferencedImageId);\n } else {\n setTimeout(() => {\n viewPortId = viewPortId = \"viewport-0\" ? \"viewport-1\" : \"viewport-0\";\n focarNaSerie(dataReferencedImageId); // FOCO NA PRÓXIMA SÉRIE\n aguardarCarregamentoDaSerie(medida, dataReferencedImageId);\n }, 1000);\n }\n }\n}\n\nfunction checarImagemDaMesmaSerie(metadataReferencedImageId) {\n if (enabledElement) {\n const images = cornerstone.getEnabledElement(enabledElement).viewport.imageIds;\n const imagemDaMesmaSerie = images.filter(image => image === metadataReferencedImageId).length > 0;\n if (imagemDaMesmaSerie)\n referencedImageId = metadataReferencedImageId;\n }\n}\n\nfunction retornarFocoNaPrimeiraSerie() {\n //const dataReferencedImageId = medidas[0].metadata.referencedImageId;\n //focarNaSerie(dataReferencedImageId);\n const displaySetInstanceUID = services.displaySetService.activeDisplaySets[0].displaySetInstanceUID;\n services.viewportGridService.setDisplaySetsForViewports(services.hangingProtocolService.getViewportsRequireUpdate(0, displaySetInstanceUID));\n startProgressBar(false);\n}\n\nfunction focarNaSerie(referencedImageId) {\n try {\n const displaySets = services.displaySetService.activeDisplaySets;\n const activeDisplaySet = displaySets.filter(obj => obj.images[0].imageId === referencedImageId);\n if (activeDisplaySet.length > 0) {\n const activeViewportIndex = services.viewportGridService.getState().activeViewportIndex;\n const displaySetInstanceUID = activeDisplaySet[0].displaySetInstanceUID;\n services.viewportGridService.setDisplaySetsForViewports(services.hangingProtocolService.getViewportsRequireUpdate(activeViewportIndex, displaySetInstanceUID));\n }\n } catch (ex) {\n console.log(ex);\n }\n}\n\nfunction aguardarCarregamentoDaSerie(medida, dataReferencedImageId) {\n const currentTimeout = setInterval(() => {\n try {\n const viewportIdCompare = cornerstone.getEnabledElements()[0].viewportId;\n const viewPortIdEnabled = viewportIdCompare === viewPortId;\n if (viewPortIdEnabled) {\n clearInterval(currentTimeout);\n referencedImageId = dataReferencedImageId;\n countMedida++;\n addAnnotation(medida);\n } else {\n viewPortId = viewportIdCompare;\n }\n } catch (ex) { }\n }, 500);\n}\n","import React, { useEffect, useRef, useCallback, useState } from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport PropTypes from 'prop-types';\nimport * as cs3DTools from '@cornerstonejs/tools';\nimport {\n Enums,\n eventTarget,\n getEnabledElement,\n StackViewport,\n utilities as csUtils,\n CONSTANTS,\n} from '@cornerstonejs/core';\nimport { Services } from '@ohif/core';\n\nimport { setEnabledElement } from '../state';\n\nimport './OHIFCornerstoneViewport.css';\nimport CornerstoneOverlays from './Overlays/CornerstoneOverlays';\nimport {\n IStackViewport,\n IVolumeViewport,\n} from '@cornerstonejs/core/dist/esm/types';\nimport getSOPInstanceAttributes from '../utils/measurementServiceMappings/utils/getSOPInstanceAttributes';\nimport { CinePlayer, useCine, useViewportGrid } from '@ohif/ui';\n\nimport { CornerstoneViewportService } from '../services/ViewportService/CornerstoneViewportService';\nimport Presentation from '../types/Presentation';\n\nimport getMedidasSalvas from '../utils/getMedidasSalvas';\nimport { ProgressBar } from 'primereact/progressbar';\n\nconst STACK = 'stack';\n\nfunction areEqual(prevProps, nextProps) {\n if (nextProps.needsRerendering) {\n return false;\n }\n\n if (prevProps.displaySets.length !== nextProps.displaySets.length) {\n return false;\n }\n\n if (\n prevProps.viewportOptions.orientation !==\n nextProps.viewportOptions.orientation\n ) {\n return false;\n }\n\n if (\n prevProps.viewportOptions.toolGroupId !==\n nextProps.viewportOptions.toolGroupId\n ) {\n return false;\n }\n\n if (\n prevProps.viewportOptions.viewportType !==\n nextProps.viewportOptions.viewportType\n ) {\n return false;\n }\n\n const prevDisplaySets = prevProps.displaySets;\n const nextDisplaySets = nextProps.displaySets;\n\n if (prevDisplaySets.length !== nextDisplaySets.length) {\n return false;\n }\n\n for (let i = 0; i < prevDisplaySets.length; i++) {\n const prevDisplaySet = prevDisplaySets[i];\n\n const foundDisplaySet = nextDisplaySets.find(\n nextDisplaySet =>\n nextDisplaySet.displaySetInstanceUID ===\n prevDisplaySet.displaySetInstanceUID\n );\n\n if (!foundDisplaySet) {\n return false;\n }\n\n // check they contain the same image\n if (foundDisplaySet.images?.length !== prevDisplaySet.images?.length) {\n return false;\n }\n\n // check if their imageIds are the same\n if (foundDisplaySet.images?.length) {\n for (let j = 0; j < foundDisplaySet.images.length; j++) {\n if (\n foundDisplaySet.images[j].imageId !== prevDisplaySet.images[j].imageId\n ) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n\n// Todo: This should be done with expose of internal API similar to react-vtkjs-viewport\n// Then we don't need to worry about the re-renders if the props change.\nconst OHIFCornerstoneViewport = React.memo(props => {\n const {\n viewportIndex,\n displaySets,\n dataSource,\n viewportOptions,\n displaySetOptions,\n servicesManager,\n onElementEnabled,\n onElementDisabled,\n // Note: you SHOULD NOT use the initialImageIdOrIndex for manipulation\n // of the imageData in the OHIFCornerstoneViewport. This prop is used\n // to set the initial state of the viewport's first image to render\n initialImageIndex,\n } = props;\n\n const [scrollbarHeight, setScrollbarHeight] = useState('100px');\n const [{ isCineEnabled, cines }, cineService] = useCine();\n const [{ activeViewportIndex }] = useViewportGrid();\n const [enabledVPElement, setEnabledVPElement] = useState(null);\n const [stateViewportData, setStateViewportData] = useState(null);\n const [stateProgressBar, setStateProgressBar] = useState(\"\");\n\n setStatusActionBar();\n\n const startProgressBar = (start) => {\n window.progressBar = start;\n setStateProgressBar(start);\n }\n\n function setStatusActionBar() {\n const msgProgress = document.getElementById('msgProgress');\n if (!window.progressBar) {\n // msgProgress.innerText = '';\n // msgProgress.setAttribute('style', 'display: none');\n } else {\n msgProgress.innerText = 'Aguarde. Carregando medidas...';\n msgProgress.setAttribute('style', 'color:yellow; width: 100%; text-align: center; display: block');\n }\n }\n\n const compProgressBar = window.progressBar || stateProgressBar\n ?
\n : \"\";\n\n const elementRef = useRef();\n\n const {\n measurementService,\n displaySetService,\n toolbarService,\n toolGroupService,\n syncGroupService,\n cornerstoneViewportService,\n cornerstoneCacheService,\n viewportGridService,\n stateSyncService,\n } = servicesManager.services;\n\n const cineHandler = () => {\n if (!cines || !cines[viewportIndex] || !enabledVPElement) {\n return;\n }\n\n const cine = cines[viewportIndex];\n const isPlaying = cine.isPlaying || false;\n const frameRate = cine.frameRate || 24;\n\n const validFrameRate = Math.max(frameRate, 1);\n\n if (isPlaying) {\n cineService.playClip(enabledVPElement, {\n framesPerSecond: validFrameRate,\n });\n } else {\n cineService.stopClip(enabledVPElement);\n }\n };\n\n useEffect(() => {\n eventTarget.addEventListener(\n Enums.Events.STACK_VIEWPORT_NEW_STACK,\n cineHandler\n );\n\n return () => {\n cineService.setCine({ id: viewportIndex, isPlaying: false });\n eventTarget.removeEventListener(\n Enums.Events.STACK_VIEWPORT_NEW_STACK,\n cineHandler\n );\n };\n }, [enabledVPElement]);\n\n useEffect(() => {\n if (!cines || !cines[viewportIndex] || !enabledVPElement) {\n return;\n }\n\n cineHandler();\n\n return () => {\n if (enabledVPElement && cines?.[viewportIndex]?.isPlaying) {\n cineService.stopClip(enabledVPElement);\n }\n };\n }, [cines, viewportIndex, cineService, enabledVPElement, cineHandler]);\n\n const cine = cines[viewportIndex];\n const isPlaying = (cine && cine.isPlaying) || false;\n\n const handleCineClose = () => {\n toolbarService.recordInteraction({\n groupId: 'MoreTools',\n itemId: 'cine',\n interactionType: 'toggle',\n commands: [\n {\n commandName: 'toggleCine',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n });\n };\n\n // useCallback for scroll bar height calculation\n const setImageScrollBarHeight = useCallback(() => {\n const scrollbarHeight = `${elementRef.current.clientHeight - 20}px`;\n setScrollbarHeight(scrollbarHeight);\n }, [elementRef]);\n\n // useCallback for onResize\n const onResize = useCallback(() => {\n if (elementRef.current) {\n cornerstoneViewportService.resize();\n setImageScrollBarHeight();\n }\n }, [elementRef]);\n\n const storePresentation = () => {\n const currentPresentation = cornerstoneViewportService.getPresentation(\n viewportIndex\n );\n if (!currentPresentation || !currentPresentation.presentationIds) return;\n const {\n lutPresentationStore,\n positionPresentationStore,\n } = stateSyncService.getState();\n const { presentationIds } = currentPresentation;\n const { lutPresentationId, positionPresentationId } = presentationIds || {};\n const storeState = {};\n if (lutPresentationId) {\n storeState.lutPresentationStore = {\n ...lutPresentationStore,\n [lutPresentationId]: currentPresentation,\n };\n }\n if (positionPresentationId) {\n storeState.positionPresentationStore = {\n ...positionPresentationStore,\n [positionPresentationId]: currentPresentation,\n };\n }\n stateSyncService.store(storeState);\n };\n\n const cleanUpServices = useCallback(() => {\n const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex(\n viewportIndex\n );\n\n if (!viewportInfo) {\n return;\n }\n\n const viewportId = viewportInfo.getViewportId();\n const renderingEngineId = viewportInfo.getRenderingEngineId();\n const syncGroups = viewportInfo.getSyncGroups();\n\n toolGroupService.removeViewportFromToolGroup(viewportId, renderingEngineId);\n\n syncGroupService.removeViewportFromSyncGroup(\n viewportId,\n renderingEngineId,\n syncGroups\n );\n }, [viewportIndex, viewportOptions.viewportId]);\n\n const elementEnabledHandler = useCallback(\n evt => {\n // check this is this element reference and return early if doesn't match\n if (evt.detail.element !== elementRef.current) {\n return;\n }\n\n const { viewportId, element } = evt.detail;\n const viewportInfo = cornerstoneViewportService.getViewportInfo(\n viewportId\n );\n const viewportIndex = viewportInfo.getViewportIndex();\n\n setEnabledElement(viewportIndex, element);\n setEnabledVPElement(element);\n\n const renderingEngineId = viewportInfo.getRenderingEngineId();\n const toolGroupId = viewportInfo.getToolGroupId();\n const syncGroups = viewportInfo.getSyncGroups();\n\n toolGroupService.addViewportToToolGroup(\n viewportId,\n renderingEngineId,\n toolGroupId\n );\n\n syncGroupService.addViewportToSyncGroup(\n viewportId,\n renderingEngineId,\n syncGroups\n );\n\n if (onElementEnabled) {\n onElementEnabled(evt);\n }\n\n getMedidasSalvas((value) => startProgressBar(value));\n\n },\n [viewportIndex, onElementEnabled, toolGroupService]\n );\n\n // disable the element upon unmounting\n useEffect(() => {\n cornerstoneViewportService.enableViewport(\n viewportIndex,\n viewportOptions,\n elementRef.current\n );\n\n eventTarget.addEventListener(\n Enums.Events.ELEMENT_ENABLED,\n elementEnabledHandler\n );\n\n setImageScrollBarHeight();\n\n return () => {\n storePresentation();\n\n cleanUpServices();\n\n cornerstoneViewportService.disableElement(viewportIndex);\n\n if (onElementDisabled) {\n const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex(\n viewportIndex\n );\n\n onElementDisabled(viewportInfo);\n }\n\n eventTarget.removeEventListener(\n Enums.Events.ELEMENT_ENABLED,\n elementEnabledHandler\n );\n };\n }, []);\n\n // subscribe to displaySet metadata invalidation (updates)\n // Currently, if the metadata changes we need to re-render the display set\n // for it to take effect in the viewport. As we deal with scaling in the loading,\n // we need to remove the old volume from the cache, and let the\n // viewport to re-add it which will use the new metadata. Otherwise, the\n // viewport will use the cached volume and the new metadata will not be used.\n // Note: this approach does not actually end of sending network requests\n // and it uses the network cache\n useEffect(() => {\n const { unsubscribe } = displaySetService.subscribe(\n displaySetService.EVENTS.DISPLAY_SET_SERIES_METADATA_INVALIDATED,\n async invalidatedDisplaySetInstanceUID => {\n const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex(\n viewportIndex\n );\n\n if (viewportInfo.hasDisplaySet(invalidatedDisplaySetInstanceUID)) {\n const viewportData = viewportInfo.getViewportData();\n const newViewportData = await cornerstoneCacheService.invalidateViewportData(\n viewportData,\n invalidatedDisplaySetInstanceUID,\n dataSource,\n displaySetService\n );\n\n const keepCamera = true;\n cornerstoneViewportService.updateViewport(\n viewportIndex,\n newViewportData,\n keepCamera\n );\n }\n }\n );\n return () => {\n unsubscribe();\n };\n }, [viewportIndex]);\n\n useEffect(() => {\n // handle the default viewportType to be stack\n if (!viewportOptions.viewportType) {\n viewportOptions.viewportType = STACK;\n }\n\n const loadViewportData = async () => {\n const viewportData = await cornerstoneCacheService.createViewportData(\n displaySets,\n viewportOptions,\n dataSource,\n initialImageIndex\n );\n\n setStateViewportData(viewportData);\n\n storePresentation();\n\n const {\n lutPresentationStore,\n positionPresentationStore,\n } = stateSyncService.getState();\n const { presentationIds } = viewportOptions;\n const presentations = {\n positionPresentation:\n positionPresentationStore[presentationIds?.positionPresentationId],\n lutPresentation:\n lutPresentationStore[presentationIds?.lutPresentationId],\n };\n console.log('Using presentations', presentations);\n\n cornerstoneViewportService.setViewportData(\n viewportIndex,\n viewportData,\n viewportOptions,\n displaySetOptions,\n presentations\n );\n };\n\n loadViewportData();\n }, [viewportOptions, displaySets, dataSource]);\n\n /**\n * There are two scenarios for jump to click\n * 1. Current viewports contain the displaySet that the annotation was drawn on\n * 2. Current viewports don't contain the displaySet that the annotation was drawn on\n * and we need to change the viewports displaySet for jumping.\n * Since measurement_jump happens via events and listeners, the former case is handled\n * by the measurement_jump direct callback, but the latter case is handled first by\n * the viewportGrid to set the correct displaySet on the viewport, AND THEN we check\n * the cache for jumping to see if there is any jump queued, then we jump to the correct slice.\n */\n useEffect(() => {\n const unsubscribeFromJumpToMeasurementEvents = _subscribeToJumpToMeasurementEvents(\n measurementService,\n displaySetService,\n elementRef,\n viewportIndex,\n displaySets,\n viewportGridService,\n cornerstoneViewportService\n );\n\n _checkForCachedJumpToMeasurementEvents(\n measurementService,\n displaySetService,\n elementRef,\n viewportIndex,\n displaySets,\n viewportGridService,\n cornerstoneViewportService\n );\n\n return () => {\n unsubscribeFromJumpToMeasurementEvents();\n };\n }, [displaySets, elementRef, viewportIndex]);\n\n return (\n
\n {compProgressBar}\n \n e.preventDefault()}\n onMouseDown={e => e.preventDefault()}\n ref={elementRef}\n >
\n \n {isCineEnabled && (\n \n cineService.setCine({\n id: activeViewportIndex,\n isPlaying,\n })\n }\n onFrameRateChange={frameRate =>\n cineService.setCine({\n id: activeViewportIndex,\n frameRate,\n })\n }\n />\n )}\n \n );\n}, areEqual);\n\nfunction _subscribeToJumpToMeasurementEvents(\n measurementService,\n displaySetService,\n elementRef,\n viewportIndex,\n displaySets,\n viewportGridService,\n cornerstoneViewportService\n) {\n const displaysUIDs = displaySets.map(\n displaySet => displaySet.displaySetInstanceUID\n );\n const { unsubscribe } = measurementService.subscribe(\n measurementService.EVENTS.JUMP_TO_MEASUREMENT,\n ({ measurement }) => {\n if (!measurement) return;\n\n // Jump the the measurement if the viewport contains the displaySetUID (fusion)\n if (displaysUIDs.includes(measurement.displaySetInstanceUID)) {\n _jumpToMeasurement(\n measurement,\n elementRef,\n viewportIndex,\n measurementService,\n displaySetService,\n viewportGridService,\n cornerstoneViewportService\n );\n }\n }\n );\n\n return unsubscribe;\n}\n\n// Check if there is a queued jumpToMeasurement event\nfunction _checkForCachedJumpToMeasurementEvents(\n measurementService,\n displaySetService,\n elementRef,\n viewportIndex,\n displaySets,\n viewportGridService,\n cornerstoneViewportService\n) {\n const displaysUIDs = displaySets.map(\n displaySet => displaySet.displaySetInstanceUID\n );\n\n const measurementIdToJumpTo = measurementService.getJumpToMeasurement(\n viewportIndex\n );\n\n if (measurementIdToJumpTo && elementRef) {\n // Jump to measurement if the measurement exists\n const measurement = measurementService.getMeasurement(\n measurementIdToJumpTo\n );\n\n if (displaysUIDs.includes(measurement.displaySetInstanceUID)) {\n _jumpToMeasurement(\n measurement,\n elementRef,\n viewportIndex,\n measurementService,\n displaySetService,\n viewportGridService,\n cornerstoneViewportService\n );\n }\n }\n}\n\nfunction _jumpToMeasurement(\n measurement,\n targetElementRef,\n viewportIndex,\n measurementService,\n displaySetService,\n viewportGridService,\n cornerstoneViewportService\n) {\n const targetElement = targetElementRef.current;\n const { displaySetInstanceUID, SOPInstanceUID, frameNumber } = measurement;\n\n if (!SOPInstanceUID) {\n console.warn('cannot jump in a non-acquisition plane measurements yet');\n }\n\n const referencedDisplaySet = displaySetService.getDisplaySetByUID(\n displaySetInstanceUID\n );\n\n // Todo: setCornerstoneMeasurementActive should be handled by the toolGroupManager\n // to set it properly\n // setCornerstoneMeasurementActive(measurement);\n\n viewportGridService.setActiveViewportIndex(viewportIndex);\n\n const enableElement = getEnabledElement(targetElement);\n\n const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex(\n viewportIndex\n );\n\n if (enableElement) {\n // See how the jumpToSlice() of Cornerstone3D deals with imageIdx param.\n const viewport = enableElement.viewport as IStackViewport | IVolumeViewport;\n\n let imageIdIndex = 0;\n let viewportCameraDirectionMatch = true;\n\n if (viewport instanceof StackViewport) {\n const imageIds = viewport.getImageIds();\n imageIdIndex = imageIds.findIndex(imageId => {\n const {\n SOPInstanceUID: aSOPInstanceUID,\n frameNumber: aFrameNumber,\n } = getSOPInstanceAttributes(imageId);\n return (\n aSOPInstanceUID === SOPInstanceUID &&\n (!frameNumber || frameNumber === aFrameNumber)\n );\n });\n } else {\n // for volume viewport we can't rely on the imageIdIndex since it can be\n // a reconstructed view that doesn't match the original slice numbers etc.\n const { viewPlaneNormal } = measurement.metadata;\n imageIdIndex = referencedDisplaySet.images.findIndex(\n i => i.SOPInstanceUID === SOPInstanceUID\n );\n\n const { orientation } = viewportInfo.getViewportOptions();\n\n if (\n orientation &&\n viewPlaneNormal &&\n !csUtils.isEqual(\n CONSTANTS.MPR_CAMERA_VALUES[orientation]?.viewPlaneNormal,\n viewPlaneNormal\n )\n ) {\n viewportCameraDirectionMatch = false;\n }\n }\n\n if (!viewportCameraDirectionMatch || imageIdIndex === -1) {\n return;\n }\n\n cs3DTools.utilities.jumpToSlice(targetElement, {\n imageIndex: imageIdIndex,\n });\n\n cs3DTools.annotation.selection.setAnnotationSelected(measurement.uid);\n // Jump to measurement consumed, remove.\n measurementService.removeJumpToMeasurement(viewportIndex);\n }\n}\n\n// Component displayName\nOHIFCornerstoneViewport.displayName = 'OHIFCornerstoneViewport';\n\nOHIFCornerstoneViewport.propTypes = {\n viewportIndex: PropTypes.number.isRequired,\n displaySets: PropTypes.array.isRequired,\n dataSource: PropTypes.object.isRequired,\n viewportOptions: PropTypes.object,\n displaySetOptions: PropTypes.arrayOf(PropTypes.any),\n servicesManager: PropTypes.object.isRequired,\n onElementEnabled: PropTypes.func,\n // Note: you SHOULD NOT use the initialImageIdOrIndex for manipulation\n // of the imageData in the OHIFCornerstoneViewport. This prop is used\n // to set the initial state of the viewport's first image to render\n initialImageIdOrIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n};\n\nexport default OHIFCornerstoneViewport;\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","commonjsGlobal","globalThis","window","g","self","isObject_1","value","type","freeGlobal","freeSelf","root$2","Function","root$1","now_1","Date","now","reWhitespace","trimmedEndIndex","string","index","test","charAt","reTrimStart","_baseTrim","slice","replace","_Symbol","Symbol","Symbol$1","objectProto$1","nativeObjectToString$1","toString","symToStringTag$1","toStringTag","undefined","_getRawTag","isOwn","tag","unmasked","result","nativeObjectToString","getRawTag","objectToString","symToStringTag","baseGetTag","isObjectLike","baseTrim","isObject$2","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isObject$1","toNumber","other","valueOf","isBinary","nativeMax","Math","max","nativeMin","min","debounce_1","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","arguments","leadingEdge","clearTimeout","cancel","flush","debounce","isObject","throttle_1","patchResizeHandler","resizeCallback","refreshMode","refreshRate","refreshOptions","isFunction","fn","isSSR","isDOMElement","element","Element","HTMLDocument","createNotifier","onResize","setSize","handleWidth","handleHeight","_a","width","height","prev","ResizeDetector","_super","props","_this","cancelHandler","resizeHandler","attachObserver","targetRef","observerOptions","current","getElement","observableElement","resizeObserver","observe","querySelector","targetDomEl","document","currentElement","findDOMNode","getRenderType","parentElement","createResizeHandler","entries","_b","_c","notifyResize","setState","bind","forEach","entry","contentRect","skipOnMount","render","children","isValidElement","isArray","state","createRef","ResizeObserver","componentDidMount","componentDidUpdate","componentWillUnmount","disconnect","typedChildren","nodeType","WrapperTag","childProps","nativeProps","cloneElement","map","el","PureComponent","useEffect","useLayoutEffect","CornerstoneImageScrollbar","viewportData","viewportIndex","imageSliceData","setImageSliceData","scrollbarHeight","servicesManager","cineService","cornerstoneViewportService","services","viewport","getCornerstoneViewportByIndex","viewportType","Enums","STACK","ORTHOGRAPHIC","sliceData","utilities","imageIndex","numberOfSlices","getCurrentImageIdIndex","data","imageIds","updateStackIndex","event","newImageIdIndex","detail","addEventListener","STACK_VIEWPORT_SCROLL","removeEventListener","updateVolumeIndex","VOLUME_NEW_IMAGE","React","ImageScrollbar","onChange","evt","onImageScrollbarChange","viewportId","getViewportInfoByIndex","getViewportId","getCornerstoneViewport","isCineEnabled","getState","stopClip","setCine","id","isPlaying","csToolsUtils","debounceLoading","propTypes","PropTypes","isRequired","formatDICOMDate","date","strFormat","moment","format","formatDICOMTime","formatPN","name","cleaned","split","filter","join","trim","EPSILON","VOIOverlayItem","voi","customization","windowWidth","windowCenter","className","style","color","toFixed","ZoomOverlayItem","scale","InstanceNumberOverlayItem","instanceNumber","CustomizableViewportOverlay","toolbarService","customizationService","setVOI","useState","setScale","activeTools","setActiveTools","instance","getModeCustomization","useMemo","imageId","volumes","metaData","_getViewportInstance","_getInstanceNumberFromStack","_getInstanceNumberFromVolume","_getInstanceNumber","tagsDicom","setTagsDicom","NomePaciente","PatientID","Descricao","DataImagem","SerieNumero","ImageCompression","ImageDimensions","imagePlaneModule","setImagePlaneModule","frameRate","setFrameRate","getInfoImage","DisplaySetService","getDisplaySetByUID","displaySetInstanceUID","images","ex","console","log","retTagInfoPatientName","PatientName","Alphabetic","retTagInfo","retTagInfoDataImagem","StudyDate","hora","StudyTime","formatNumberPrecision","number","precision","parseFloat","retTagInfoCompression","generalImageModule","cornerstone","get","lossyImageCompression","lossyImageCompressionRatio","lossyImageCompressionMethod","_imagePlaneModule","rows","columns","sliceThickness","sliceLocation","cineModule","frameTime","getActiveTools","updateVOI","eventDetail","range","lower","upper","VOI_MODIFIED","updateScale","previousCamera","camera","parallelScale","imageData","getImageData","spacing","clientHeight","CAMERA_MODIFIED","unsubscribe","subscribe","EVENTS","TOOL_BAR_STATE_MODIFIED","useCallback","item","overlayItemProps","formatters","formatDate","formatTime","customizationType","renderItem","transform","content","getTopLeftContent","getBottomLeftContent","isNaN","getBottomRightContent","includes","getTopRightContent","ViewportOverlay","topLeft","topRight","bottomLeft","bottomRight","volume","direction","cornerstoneViewport","getCamera","viewPlaneNormal","scanAxisNormal","cross","vec3","getOrientationStringLPS","invertOrientationStringLPS","ViewportOrientationMarkers","orientationMarkers","rotation","setRotation","flipHorizontal","setFlipHorizontal","flipVertical","setFlipVertical","cameraModifiedListener","markers","rowCosines","columnCosines","getEnabledElement","viewUp","viewRight","rowString","columnString","oppositeRowString","top","left","right","bottom","_getOrientationMarkers","ohifViewport","backgroundColor","getViewportOptions","background","isLight","csUtils","m","classNames","key","percentComplete","error","defaultProps","ViewportImageSliceLoadingIndicator","loading","setLoading","setError","loadIndicatorRef","useRef","imageIdToBeLoaded","setLoadingState","setFinishLoadingState","setErrorState","IMAGE_LOAD_ERROR","STACK_NEW_IMAGE","_extends","assign","target","source","_arrayLikeToArray","arr","len","arr2","_slicedToArray","_arrayWithHoles","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","err","_iterableToArrayLimit","o","minLen","n","from","_unsupportedIterableToArray","_nonIterableRest","Checkbox","ref","_React$useState2","focusedState","setFocusedState","elementRef","inputRef","onClick","disabled","readOnly","_checked","isChecked","checkboxClicked","HTMLDivElement","HTMLSpanElement","isInputToggled","isCheckboxToggled","checked","falseValue","trueValue","originalEvent","stopPropagation","preventDefault","focus","getInput","combinedRefs","hasTooltip","isNotEmpty","tooltip","otherProps","findDiffKeys","ariaProps","reduceKeys","ARIA_PROPS","boxClass","icon","getJSXIcon","onContextMenu","onMouseDown","inputId","tabIndex","defaultChecked","onFocus","onBlur","onKeyDown","code","required","tooltipOptions","displayName","__TYPE","wadoRoot","config","dataSources","configuration","ImagemService","getImagensChave","STUDYUID_FKEY","SERIESUID_FKEY","axios","putImageKey","VALUE","INSTANCEUID","put","postImagemSecundaria","imagemSecundariaDTO","formdata","FormData","append","InstanceUid","Image","post","SeriesInstanceUID","StudyInstanceUID","SOPInstanceUID","stateObjImageKey","memoImagesKey","imagem","setChecked","getImageKey","onChangeChecked","then","resp","status","alert","catch","memoImagemChave","fncSetImageKey","textAlign","zIndex","borderBottomLeftRadius","marginLeft","display","gap","padding","fontSize","marginTop","displaySets","setStateObjImageKey","stateSerie","setStateSerie","getActiveImage","getEnabledElements","getTargetImageIdIndex","objImageKey","params","URLSearchParams","location","href","getAll","shouldRenderComponent","getElementsByClassName","classList","remove","add","ReactDOM","CkbImagemChave","newEl","VIEWPORT_DATA_CHANGED","viewportInfo","viewportOptions","customViewportProps","hideOverlays","ViewportImageScrollbar","medidas","referencedImageId","countMedida","enabledElement","viewPortId","startProgressBar","getMedidasSalvas","StartProgressBar","servico","studyUid","search","cacheSize","interval","setInterval","getCacheSize","cache","clearInterval","addAnnotation","Map","metadata","values","medida","adicionarMedidasEmSeriesDiferentes","cornerstoneTools","enabledElements","annotation","btnOk","getElementById","getElementsByTagName","click","displaySetService","activeDisplaySets","viewportGridService","setDisplaySetsForViewports","hangingProtocolService","getViewportsRequireUpdate","retornarFocoNaPrimeiraSerie","dataReferencedImageId","metadataReferencedImageId","image","checarImagemDaMesmaSerie","aguardarCarregamentoDaSerie","activeDisplaySet","obj","activeViewportIndex","focarNaSerie","currentTimeout","viewportIdCompare","areEqual","prevProps","nextProps","needsRerendering","orientation","toolGroupId","prevDisplaySets","nextDisplaySets","prevDisplaySet","foundDisplaySet","find","nextDisplaySet","j","OHIFCornerstoneViewport","dataSource","displaySetOptions","onElementEnabled","onElementDisabled","initialImageIndex","setScrollbarHeight","cines","useCine","useViewportGrid","enabledVPElement","setEnabledVPElement","stateViewportData","setStateViewportData","stateProgressBar","setStateProgressBar","msgProgress","progressBar","innerText","setAttribute","setStatusActionBar","compProgressBar","position","ProgressBar","mode","borderRadius","measurementService","toolGroupService","syncGroupService","cornerstoneCacheService","stateSyncService","cineHandler","cine","validFrameRate","playClip","framesPerSecond","eventTarget","STACK_VIEWPORT_NEW_STACK","setImageScrollBarHeight","resize","storePresentation","currentPresentation","getPresentation","presentationIds","lutPresentationStore","positionPresentationStore","lutPresentationId","positionPresentationId","storeState","store","cleanUpServices","renderingEngineId","getRenderingEngineId","syncGroups","getSyncGroups","removeViewportFromToolGroup","removeViewportFromSyncGroup","elementEnabledHandler","getViewportInfo","getViewportIndex","setEnabledElement","getToolGroupId","addViewportToToolGroup","addViewportToSyncGroup","start","enableViewport","ELEMENT_ENABLED","disableElement","DISPLAY_SET_SERIES_METADATA_INVALIDATED","async","hasDisplaySet","invalidatedDisplaySetInstanceUID","getViewportData","newViewportData","invalidateViewportData","keepCamera","updateViewport","createViewportData","presentations","positionPresentation","lutPresentation","setViewportData","loadViewportData","unsubscribeFromJumpToMeasurementEvents","displaysUIDs","displaySet","JUMP_TO_MEASUREMENT","measurement","_jumpToMeasurement","_subscribeToJumpToMeasurementEvents","measurementIdToJumpTo","getJumpToMeasurement","getMeasurement","_checkForCachedJumpToMeasurementEvents","ReactResizeDetector","CornerstoneOverlays","CinePlayer","onClose","handleCineClose","recordInteraction","groupId","itemId","interactionType","commands","commandName","commandOptions","context","onPlayPauseChange","onFrameRateChange","targetElementRef","targetElement","frameNumber","warn","referencedDisplaySet","setActiveViewportIndex","enableElement","imageIdIndex","viewportCameraDirectionMatch","StackViewport","getImageIds","findIndex","aSOPInstanceUID","aFrameNumber","getSOPInstanceAttributes","CONSTANTS","cs3DTools","uid","removeJumpToMeasurement","initialImageIdOrIndex"],"sourceRoot":""}