diff --git a/server/src/main/config/application.properties b/server/src/main/config/application.properties index e896ec0f..31f74bdb 100644 --- a/server/src/main/config/application.properties +++ b/server/src/main/config/application.properties @@ -66,7 +66,6 @@ trust.host = ${KK_TRUST_HOST:default} #是否启用缓存 cache.enabled = ${KK_CACHE_ENABLED:true} - #文本类型,默认如下,可自定义添加 simText = ${KK_SIMTEXT:txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd} #多媒体类型,默认如下,可自定义添加 @@ -81,6 +80,7 @@ office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image} #是否关闭office预览切换开关,默认为false,可配置为true关闭 office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false} +#PDF预览模块设置 #是否禁止演示模式 pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true} #是否禁止打开文件 @@ -91,8 +91,8 @@ pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true} pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true} #是否禁止bookmark pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true} -#是否禁用首页文件上传 -file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:false} +#是否禁止签名 +pdf.disable.editing = ${KK_PDF_DISABLE_EDITING:false} #预览源为FTP时 FTP用户名,可在ftp url后面加参数ftp.username=ftpuser指定,不指定默认用配置的 ftp.username = ${KK_FTP_USERNAME:ftpuser} @@ -124,6 +124,9 @@ watermark.height = ${WATERMARK_HEIGHT:80} #水印倾斜度数,要求设置在大于等于0,小于90 watermark.angle = ${WATERMARK_ANGLE:10} + +#是否禁用首页文件上传 +file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:false} #Tif类型图片浏览模式:tif(利用前端js插件浏览);jpg(转换为jpg后前端显示);pdf(转换为pdf后显示,便于打印) tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif} # 备案信息,默认为空 diff --git a/server/src/main/java/cn/keking/config/ConfigConstants.java b/server/src/main/java/cn/keking/config/ConfigConstants.java index 0c786fce..e9d2d0f2 100644 --- a/server/src/main/java/cn/keking/config/ConfigConstants.java +++ b/server/src/main/java/cn/keking/config/ConfigConstants.java @@ -36,6 +36,7 @@ public class ConfigConstants { private static String localPreviewDir; private static CopyOnWriteArraySet trustHostSet; private static String pdfPresentationModeDisable; + private static String pdfDisableEditing; private static String pdfOpenFileDisable; private static String pdfPrintDisable; private static String pdfDownloadDisable; @@ -78,6 +79,7 @@ public class ConfigConstants { public static final String DEFAULT_PDF_PRINT_DISABLE = "true"; public static final String DEFAULT_PDF_DOWNLOAD_DISABLE = "true"; public static final String DEFAULT_PDF_BOOKMARK_DISABLE = "true"; + public static final String DEFAULT_PDF_DISABLE_EDITING = "true"; public static final String DEFAULT_FILE_UPLOAD_DISABLE = "false"; public static final String DEFAULT_TIF_PREVIEW_TYPE = "tif"; public static final String DEFAULT_CAD_PREVIEW_TYPE = "pdf"; @@ -355,6 +357,18 @@ public class ConfigConstants { ConfigConstants.pdfBookmarkDisable = pdfBookmarkDisable; } + + public static String getPdfDisableEditing() { + return pdfDisableEditing; + } + @Value("${pdf.disable.editing:true}") + public void setpdfDisableEditing(String pdfDisableEditing) { + setPdfDisableEditingValue(pdfDisableEditing); + } + public static void setPdfDisableEditingValue(String pdfDisableEditing) { + ConfigConstants.pdfDisableEditing = pdfDisableEditing; + } + public static String getOfficePreviewSwitchDisabled() { return officePreviewSwitchDisabled; } diff --git a/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java b/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java index 3c70e1a2..7abb7c90 100644 --- a/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java +++ b/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java @@ -51,6 +51,7 @@ public class ConfigRefreshComponent { String pdfPrintDisable; String pdfDownloadDisable; String pdfBookmarkDisable; + String pdfDisableEditing; boolean fileUploadDisable; String tifPreviewType; String prohibit; @@ -94,6 +95,7 @@ public class ConfigRefreshComponent { pdfPrintDisable = properties.getProperty("pdf.print.disable", ConfigConstants.DEFAULT_PDF_PRINT_DISABLE); pdfDownloadDisable = properties.getProperty("pdf.download.disable", ConfigConstants.DEFAULT_PDF_DOWNLOAD_DISABLE); pdfBookmarkDisable = properties.getProperty("pdf.bookmark.disable", ConfigConstants.DEFAULT_PDF_BOOKMARK_DISABLE); + pdfDisableEditing = properties.getProperty("pdf.disable.editing", ConfigConstants.DEFAULT_PDF_DISABLE_EDITING); fileUploadDisable = Boolean.parseBoolean(properties.getProperty("file.upload.disable", ConfigConstants.DEFAULT_FILE_UPLOAD_DISABLE)); tifPreviewType = properties.getProperty("tif.preview.type", ConfigConstants.DEFAULT_TIF_PREVIEW_TYPE); cadPreviewType = properties.getProperty("cad.preview.type", ConfigConstants.DEFAULT_CAD_PREVIEW_TYPE); @@ -131,6 +133,7 @@ public class ConfigRefreshComponent { ConfigConstants.setPdfPrintDisableValue(pdfPrintDisable); ConfigConstants.setPdfDownloadDisableValue(pdfDownloadDisable); ConfigConstants.setPdfBookmarkDisableValue(pdfBookmarkDisable); + ConfigConstants.setPdfDisableEditingValue(pdfDisableEditing); ConfigConstants.setFileUploadDisableValue(fileUploadDisable); ConfigConstants.setTifPreviewTypeValue(tifPreviewType); ConfigConstants.setCadPreviewTypeValue(cadPreviewType); diff --git a/server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java b/server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java index 933e8cf5..d5ffb146 100644 --- a/server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java +++ b/server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java @@ -37,6 +37,7 @@ public class AttributeSetFilter implements Filter { request.setAttribute("pdfPrintDisable", ConfigConstants.getPdfPrintDisable()); request.setAttribute("pdfDownloadDisable", ConfigConstants.getPdfDownloadDisable()); request.setAttribute("pdfBookmarkDisable", ConfigConstants.getPdfBookmarkDisable()); + request.setAttribute("pdfDisableEditing", ConfigConstants.getPdfDisableEditing()); request.setAttribute("fileKey", httpRequest.getParameter("fileKey")); request.setAttribute("switchDisabled", ConfigConstants.getOfficePreviewSwitchDisabled()); request.setAttribute("fileUploadDisable", ConfigConstants.getFileUploadDisable()); diff --git a/server/src/main/resources/static/dcm/cornerstone.js b/server/src/main/resources/static/dcm/cornerstone.js index 04cf2a26..e8a1a975 100644 --- a/server/src/main/resources/static/dcm/cornerstone.js +++ b/server/src/main/resources/static/dcm/cornerstone.js @@ -1,4 +1,4 @@ -/*! cornerstone-core - 2.2.8 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */ +/*! cornerstone-core - 2.6.1 - 2021-11-19 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); @@ -75,7 +75,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ var hotApplyOnUpdate = true; /******/ // eslint-disable-next-line no-unused-vars -/******/ var hotCurrentHash = "72ed982d5a0046aad5fa"; +/******/ var hotCurrentHash = "4d8d88ba53621f59b9a9"; /******/ var hotRequestTimeout = 10000; /******/ var hotCurrentModuleData = {}; /******/ var hotCurrentChildModule; @@ -1475,9 +1475,7 @@ function linearIndexLookupMain(v, p) { */ -var LookupTable = -/*#__PURE__*/ -function () { +var LookupTable = /*#__PURE__*/function () { /** * Creates a default linear LookupTable object with 256 colors. */ @@ -2003,11 +2001,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (function (element) { var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__["getEnabledElement"])(element); - - if (enabledElement.image === undefined) { - throw new Error('draw: image has not been loaded yet'); - } - Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__["default"])(enabledElement); }); @@ -2130,7 +2123,7 @@ function hasImageOrLayers(enabledElement) { invalid: false, // True if image needs to be drawn, false if not needsRedraw: true, - options: options, + options: Object.assign({}, options), layers: [], data: {}, renderingTools: {}, @@ -2468,6 +2461,7 @@ var EVENTS = { WEBGL_TEXTURE_REMOVED: 'cornerstonewebgltextureremoved', WEBGL_TEXTURE_CACHE_FULL: 'cornerstonewebgltexturecachefull', IMAGE_LOADED: 'cornerstoneimageloaded', + IMAGE_LOAD_PROGRESS: 'cornerstoneimageloadprogress', IMAGE_LOAD_FAILED: 'cornerstoneimageloadfailed', ELEMENT_RESIZED: 'cornerstoneelementresized', IMAGE_RENDERED: 'cornerstoneimagerendered', @@ -2485,9 +2479,7 @@ var EVENTS = { * @memberof Polyfills */ -var EventTarget = -/*#__PURE__*/ -function () { +var EventTarget = /*#__PURE__*/function () { function EventTarget() { _classCallCheck(this, EventTarget); @@ -2559,7 +2551,7 @@ function () { return true; } - var stack = this.listeners[event.type]; + var stack = this.listeners[event.type].slice(); for (var i = 0, l = stack.length; i < l; i++) { stack[i].call(this, event); @@ -3461,193 +3453,208 @@ function registerUnknownImageLoader(imageLoader) { /*!******************!*\ !*** ./index.js ***! \******************/ -/*! exports provided: drawImage, generateLut, getDefaultViewport, requestAnimationFrame, storedPixelDataToCanvasImageData, storedColorPixelDataToCanvasImageData, storedPixelDataToCanvasImageDataColorLUT, storedPixelDataToCanvasImageDataPseudocolorLUT, internal, renderLabelMapImage, renderPseudoColorImage, renderColorImage, renderGrayscaleImage, renderWebImage, renderToCanvas, canvasToPixel, disable, displayImage, draw, drawInvalidated, enable, getElementData, removeElementData, getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, getActiveLayer, purgeLayers, setLayerImage, fitToWindow, getDefaultViewportForImage, getImage, getPixels, getStoredPixels, getViewport, loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader, invalidate, invalidateImageId, pageToPixel, pixelToCanvas, reset, resize, setToPixelCoordinateSystem, setViewport, updateImage, pixelDataToFalseColorData, rendering, imageCache, metaData, webGL, colors, convertImageToFalseColorImage, convertToFalseColorImage, restoreImage, EVENTS, events, triggerEvent, default */ +/*! exports provided: drawImage, generateLut, getDefaultViewport, setDefaultViewport, requestAnimationFrame, storedPixelDataToCanvasImageData, storedColorPixelDataToCanvasImageData, storedPixelDataToCanvasImageDataColorLUT, storedPixelDataToCanvasImageDataPseudocolorLUT, internal, renderLabelMapImage, renderPseudoColorImage, renderColorImage, renderGrayscaleImage, renderWebImage, renderToCanvas, canvasToPixel, disable, displayImage, draw, drawInvalidated, enable, getElementData, removeElementData, getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, getActiveLayer, purgeLayers, setLayerImage, fitToWindow, getDefaultViewportForImage, getDisplayedArea, getImage, getPixels, getStoredPixels, getViewport, loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader, invalidate, invalidateImageId, pageToPixel, pixelToCanvas, reset, resize, setToPixelCoordinateSystem, setViewport, updateImage, pixelDataToFalseColorData, rendering, imageCache, metaData, webGL, colors, convertImageToFalseColorImage, convertToFalseColorImage, restoreImage, EVENTS, events, triggerEvent, imageLoadPoolManager, imageRetrievalPoolManager, RequestPoolManager, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/drawImage.js */ "./internal/drawImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drawImage", function() { return _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); +/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events.js */ "./events.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EVENTS", function() { return _events_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); -/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/generateLut.js */ "./internal/generateLut.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generateLut", function() { return _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "events", function() { return _events_js__WEBPACK_IMPORTED_MODULE_0__["events"]; }); -/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ "./internal/getDefaultViewport.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getDefaultViewport", function() { return _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"]; }); +/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ "./enabledElements.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getEnabledElement", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["getEnabledElement"]; }); -/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ "./internal/requestAnimationFrame.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "requestAnimationFrame", function() { return _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addEnabledElement", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["addEnabledElement"]; }); -/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageData.js */ "./internal/storedPixelDataToCanvasImageData.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "storedPixelDataToCanvasImageData", function() { return _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getEnabledElementsByImageId", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["getEnabledElementsByImageId"]; }); -/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/storedColorPixelDataToCanvasImageData.js */ "./internal/storedColorPixelDataToCanvasImageData.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "storedColorPixelDataToCanvasImageData", function() { return _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getEnabledElements", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["getEnabledElements"]; }); -/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataColorLUT.js */ "./internal/storedPixelDataToCanvasImageDataColorLUT.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "storedPixelDataToCanvasImageDataColorLUT", function() { return _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }); +/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./layers.js */ "./layers.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["addLayer"]; }); -/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ "./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "storedPixelDataToCanvasImageDataPseudocolorLUT", function() { return _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["removeLayer"]; }); -/* harmony import */ var _internal_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/index.js */ "./internal/index.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "internal", function() { return _internal_index_js__WEBPACK_IMPORTED_MODULE_8__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["getLayer"]; }); -/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rendering/renderLabelMapImage.js */ "./rendering/renderLabelMapImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderLabelMapImage", function() { return _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__["renderLabelMapImage"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLayers", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["getLayers"]; }); -/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rendering/renderPseudoColorImage.js */ "./rendering/renderPseudoColorImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderPseudoColorImage", function() { return _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__["renderPseudoColorImage"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getVisibleLayers", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["getVisibleLayers"]; }); -/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rendering/renderColorImage.js */ "./rendering/renderColorImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderColorImage", function() { return _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__["renderColorImage"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setActiveLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["setActiveLayer"]; }); -/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rendering/renderGrayscaleImage.js */ "./rendering/renderGrayscaleImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderGrayscaleImage", function() { return _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__["renderGrayscaleImage"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getActiveLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["getActiveLayer"]; }); -/* harmony import */ var _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rendering/renderWebImage.js */ "./rendering/renderWebImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderWebImage", function() { return _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__["renderWebImage"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "purgeLayers", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["purgeLayers"]; }); -/* harmony import */ var _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rendering/renderToCanvas.js */ "./rendering/renderToCanvas.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderToCanvas", function() { return _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setLayerImage", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_2__["setLayerImage"]; }); -/* harmony import */ var _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./canvasToPixel.js */ "./canvasToPixel.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "canvasToPixel", function() { return _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); +/* harmony import */ var _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./falseColorMapping.js */ "./falseColorMapping.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "convertImageToFalseColorImage", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_3__["convertImageToFalseColorImage"]; }); -/* harmony import */ var _disable_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./disable.js */ "./disable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "disable", function() { return _disable_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "convertToFalseColorImage", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_3__["convertToFalseColorImage"]; }); -/* harmony import */ var _displayImage_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./displayImage.js */ "./displayImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "displayImage", function() { return _displayImage_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "restoreImage", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_3__["restoreImage"]; }); -/* harmony import */ var _draw_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./draw.js */ "./draw.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return _draw_js__WEBPACK_IMPORTED_MODULE_18__["default"]; }); +/* harmony import */ var _enabledElementData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./enabledElementData.js */ "./enabledElementData.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementData", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_4__["getElementData"]; }); -/* harmony import */ var _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./drawInvalidated.js */ "./drawInvalidated.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drawInvalidated", function() { return _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeElementData", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_4__["removeElementData"]; }); -/* harmony import */ var _enable_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./enable.js */ "./enable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "enable", function() { return _enable_js__WEBPACK_IMPORTED_MODULE_20__["default"]; }); +/* harmony import */ var _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./imageLoader.js */ "./imageLoader.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "loadImage", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__["loadImage"]; }); -/* harmony import */ var _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./enabledElementData.js */ "./enabledElementData.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementData", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__["getElementData"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "loadAndCacheImage", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__["loadAndCacheImage"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeElementData", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__["removeElementData"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "registerImageLoader", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__["registerImageLoader"]; }); -/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./enabledElements.js */ "./enabledElements.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getEnabledElement", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__["getEnabledElement"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "registerUnknownImageLoader", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__["registerUnknownImageLoader"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addEnabledElement", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__["addEnabledElement"]; }); +/* harmony import */ var _requestPool_imageLoadPoolManager_ts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./requestPool/imageLoadPoolManager.ts */ "./requestPool/imageLoadPoolManager.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "imageLoadPoolManager", function() { return _requestPool_imageLoadPoolManager_ts__WEBPACK_IMPORTED_MODULE_6__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getEnabledElementsByImageId", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__["getEnabledElementsByImageId"]; }); +/* harmony import */ var _requestPool_imageRetrievalPoolManager_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./requestPool/imageRetrievalPoolManager.ts */ "./requestPool/imageRetrievalPoolManager.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "imageRetrievalPoolManager", function() { return _requestPool_imageRetrievalPoolManager_ts__WEBPACK_IMPORTED_MODULE_7__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getEnabledElements", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__["getEnabledElements"]; }); +/* harmony import */ var _requestPool_RequestPoolManager_ts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./requestPool/RequestPoolManager.ts */ "./requestPool/RequestPoolManager.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RequestPoolManager", function() { return _requestPool_RequestPoolManager_ts__WEBPACK_IMPORTED_MODULE_8__["RequestPoolManager"]; }); -/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./layers.js */ "./layers.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["addLayer"]; }); +/* harmony import */ var _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./canvasToPixel.js */ "./canvasToPixel.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "canvasToPixel", function() { return _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_9__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["removeLayer"]; }); +/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./colors/index.js */ "./colors/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "colors", function() { return _colors_index_js__WEBPACK_IMPORTED_MODULE_10__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["getLayer"]; }); +/* harmony import */ var _disable_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./disable.js */ "./disable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "disable", function() { return _disable_js__WEBPACK_IMPORTED_MODULE_11__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLayers", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["getLayers"]; }); +/* harmony import */ var _displayImage_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./displayImage.js */ "./displayImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "displayImage", function() { return _displayImage_js__WEBPACK_IMPORTED_MODULE_12__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getVisibleLayers", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["getVisibleLayers"]; }); +/* harmony import */ var _draw_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./draw.js */ "./draw.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "draw", function() { return _draw_js__WEBPACK_IMPORTED_MODULE_13__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setActiveLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["setActiveLayer"]; }); +/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internal/drawImage.js */ "./internal/drawImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drawImage", function() { return _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_14__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getActiveLayer", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["getActiveLayer"]; }); +/* harmony import */ var _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./drawInvalidated.js */ "./drawInvalidated.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drawInvalidated", function() { return _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "purgeLayers", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["purgeLayers"]; }); +/* harmony import */ var _enable_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./enable.js */ "./enable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "enable", function() { return _enable_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setLayerImage", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__["setLayerImage"]; }); +/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./fitToWindow.js */ "./fitToWindow.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fitToWindow", function() { return _fitToWindow_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); -/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fitToWindow.js */ "./fitToWindow.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fitToWindow", function() { return _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__["default"]; }); +/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internal/generateLut.js */ "./internal/generateLut.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generateLut", function() { return _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_18__["default"]; }); -/* harmony import */ var _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./getDefaultViewportForImage.js */ "./getDefaultViewportForImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getDefaultViewportForImage", function() { return _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__["default"]; }); +/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ "./internal/getDefaultViewport.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getDefaultViewport", function() { return _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_19__["default"]; }); -/* harmony import */ var _getImage_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./getImage.js */ "./getImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getImage", function() { return _getImage_js__WEBPACK_IMPORTED_MODULE_26__["default"]; }); +/* harmony import */ var _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./getDefaultViewportForImage.js */ "./getDefaultViewportForImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getDefaultViewportForImage", function() { return _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_20__["default"]; }); -/* harmony import */ var _getPixels_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./getPixels.js */ "./getPixels.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getPixels", function() { return _getPixels_js__WEBPACK_IMPORTED_MODULE_27__["default"]; }); +/* harmony import */ var _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./internal/getDisplayedArea.js */ "./internal/getDisplayedArea.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getDisplayedArea", function() { return _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_21__["default"]; }); -/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./getStoredPixels.js */ "./getStoredPixels.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getStoredPixels", function() { return _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__["default"]; }); +/* harmony import */ var _getImage_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./getImage.js */ "./getImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getImage", function() { return _getImage_js__WEBPACK_IMPORTED_MODULE_22__["default"]; }); -/* harmony import */ var _getViewport_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./getViewport.js */ "./getViewport.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewport", function() { return _getViewport_js__WEBPACK_IMPORTED_MODULE_29__["default"]; }); +/* harmony import */ var _getPixels_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./getPixels.js */ "./getPixels.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getPixels", function() { return _getPixels_js__WEBPACK_IMPORTED_MODULE_23__["default"]; }); -/* harmony import */ var _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./imageLoader.js */ "./imageLoader.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "loadImage", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__["loadImage"]; }); +/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./getStoredPixels.js */ "./getStoredPixels.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getStoredPixels", function() { return _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_24__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "loadAndCacheImage", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__["loadAndCacheImage"]; }); +/* harmony import */ var _getViewport_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./getViewport.js */ "./getViewport.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewport", function() { return _getViewport_js__WEBPACK_IMPORTED_MODULE_25__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "registerImageLoader", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__["registerImageLoader"]; }); +/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./imageCache.js */ "./imageCache.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "imageCache", function() { return _imageCache_js__WEBPACK_IMPORTED_MODULE_26__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "registerUnknownImageLoader", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__["registerUnknownImageLoader"]; }); +/* harmony import */ var _internal_index_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./internal/index.js */ "./internal/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "internal", function() { return _internal_index_js__WEBPACK_IMPORTED_MODULE_27__["default"]; }); -/* harmony import */ var _invalidate_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./invalidate.js */ "./invalidate.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invalidate", function() { return _invalidate_js__WEBPACK_IMPORTED_MODULE_31__["default"]; }); +/* harmony import */ var _invalidate_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./invalidate.js */ "./invalidate.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invalidate", function() { return _invalidate_js__WEBPACK_IMPORTED_MODULE_28__["default"]; }); -/* harmony import */ var _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./invalidateImageId.js */ "./invalidateImageId.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invalidateImageId", function() { return _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__["default"]; }); +/* harmony import */ var _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./invalidateImageId.js */ "./invalidateImageId.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invalidateImageId", function() { return _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_29__["default"]; }); -/* harmony import */ var _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pageToPixel.js */ "./pageToPixel.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pageToPixel", function() { return _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__["default"]; }); +/* harmony import */ var _metaData_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./metaData.js */ "./metaData.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "metaData", function() { return _metaData_js__WEBPACK_IMPORTED_MODULE_30__["default"]; }); -/* harmony import */ var _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pixelToCanvas.js */ "./pixelToCanvas.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pixelToCanvas", function() { return _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__["default"]; }); +/* harmony import */ var _pageToPixel_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./pageToPixel.js */ "./pageToPixel.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pageToPixel", function() { return _pageToPixel_js__WEBPACK_IMPORTED_MODULE_31__["default"]; }); -/* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./reset.js */ "./reset.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reset", function() { return _reset_js__WEBPACK_IMPORTED_MODULE_35__["default"]; }); +/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ "./pixelDataToFalseColorData.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pixelDataToFalseColorData", function() { return _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_32__["default"]; }); -/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./resize.js */ "./resize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resize", function() { return _resize_js__WEBPACK_IMPORTED_MODULE_36__["default"]; }); +/* harmony import */ var _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pixelToCanvas.js */ "./pixelToCanvas.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pixelToCanvas", function() { return _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_33__["default"]; }); -/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setToPixelCoordinateSystem", function() { return _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__["default"]; }); +/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./rendering/renderColorImage.js */ "./rendering/renderColorImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderColorImage", function() { return _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_34__["renderColorImage"]; }); -/* harmony import */ var _setViewport_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./setViewport.js */ "./setViewport.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setViewport", function() { return _setViewport_js__WEBPACK_IMPORTED_MODULE_38__["default"]; }); +/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./rendering/renderGrayscaleImage.js */ "./rendering/renderGrayscaleImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderGrayscaleImage", function() { return _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_35__["renderGrayscaleImage"]; }); -/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./updateImage.js */ "./updateImage.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "updateImage", function() { return _updateImage_js__WEBPACK_IMPORTED_MODULE_39__["default"]; }); +/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./rendering/renderLabelMapImage.js */ "./rendering/renderLabelMapImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderLabelMapImage", function() { return _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_36__["renderLabelMapImage"]; }); -/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ "./pixelDataToFalseColorData.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pixelDataToFalseColorData", function() { return _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__["default"]; }); +/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./rendering/renderPseudoColorImage.js */ "./rendering/renderPseudoColorImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderPseudoColorImage", function() { return _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_37__["renderPseudoColorImage"]; }); -/* harmony import */ var _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./rendering/index.js */ "./rendering/index.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "rendering", function() { return _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__["default"]; }); +/* harmony import */ var _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./rendering/renderToCanvas.js */ "./rendering/renderToCanvas.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderToCanvas", function() { return _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_38__["default"]; }); -/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./imageCache.js */ "./imageCache.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "imageCache", function() { return _imageCache_js__WEBPACK_IMPORTED_MODULE_42__["default"]; }); +/* harmony import */ var _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./rendering/renderWebImage.js */ "./rendering/renderWebImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderWebImage", function() { return _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_39__["renderWebImage"]; }); -/* harmony import */ var _metaData_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./metaData.js */ "./metaData.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "metaData", function() { return _metaData_js__WEBPACK_IMPORTED_MODULE_43__["default"]; }); +/* harmony import */ var _rendering_index_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./rendering/index.js */ "./rendering/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "rendering", function() { return _rendering_index_js__WEBPACK_IMPORTED_MODULE_40__["default"]; }); -/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./webgl/index.js */ "./webgl/index.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "webGL", function() { return _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__["default"]; }); +/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ "./internal/requestAnimationFrame.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "requestAnimationFrame", function() { return _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_41__["default"]; }); -/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./colors/index.js */ "./colors/index.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "colors", function() { return _colors_index_js__WEBPACK_IMPORTED_MODULE_45__["default"]; }); +/* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./reset.js */ "./reset.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reset", function() { return _reset_js__WEBPACK_IMPORTED_MODULE_42__["default"]; }); -/* harmony import */ var _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./falseColorMapping.js */ "./falseColorMapping.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "convertImageToFalseColorImage", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__["convertImageToFalseColorImage"]; }); +/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./resize.js */ "./resize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resize", function() { return _resize_js__WEBPACK_IMPORTED_MODULE_43__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "convertToFalseColorImage", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__["convertToFalseColorImage"]; }); +/* harmony import */ var _internal_setDefaultViewport_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./internal/setDefaultViewport.js */ "./internal/setDefaultViewport.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setDefaultViewport", function() { return _internal_setDefaultViewport_js__WEBPACK_IMPORTED_MODULE_44__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "restoreImage", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__["restoreImage"]; }); +/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setToPixelCoordinateSystem", function() { return _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_45__["default"]; }); -/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./events.js */ "./events.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EVENTS", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__["default"]; }); +/* harmony import */ var _setViewport_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./setViewport.js */ "./setViewport.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setViewport", function() { return _setViewport_js__WEBPACK_IMPORTED_MODULE_46__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "events", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__["events"]; }); +/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./internal/storedColorPixelDataToCanvasImageData.js */ "./internal/storedColorPixelDataToCanvasImageData.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "storedColorPixelDataToCanvasImageData", function() { return _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_47__["default"]; }); -/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./triggerEvent.js */ "./triggerEvent.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "triggerEvent", function() { return _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__["default"]; }); +/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageData.js */ "./internal/storedPixelDataToCanvasImageData.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "storedPixelDataToCanvasImageData", function() { return _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_48__["default"]; }); + +/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataColorLUT.js */ "./internal/storedPixelDataToCanvasImageDataColorLUT.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "storedPixelDataToCanvasImageDataColorLUT", function() { return _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_49__["default"]; }); + +/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ "./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "storedPixelDataToCanvasImageDataPseudocolorLUT", function() { return _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_50__["default"]; }); + +/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./triggerEvent.js */ "./triggerEvent.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "triggerEvent", function() { return _triggerEvent_js__WEBPACK_IMPORTED_MODULE_51__["default"]; }); + +/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./updateImage.js */ "./updateImage.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "updateImage", function() { return _updateImage_js__WEBPACK_IMPORTED_MODULE_52__["default"]; }); + +/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./webgl/index.js */ "./webgl/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "webGL", function() { return _webgl_index_js__WEBPACK_IMPORTED_MODULE_53__["default"]; }); // Internal (some of these are from old internal/legacy expose) @@ -3658,14 +3665,53 @@ __webpack_require__.r(__webpack_exports__); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // Rendering - - - - - - /** * @module PixelCoordinateSystem */ @@ -3674,108 +3720,79 @@ __webpack_require__.r(__webpack_exports__); * @module ViewportSettings */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var cornerstone = { - drawImage: _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__["default"], - generateLut: _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__["default"], - getDefaultViewport: _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"], - requestAnimationFrame: _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__["default"], - storedPixelDataToCanvasImageData: _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__["default"], - storedColorPixelDataToCanvasImageData: _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__["default"], - storedPixelDataToCanvasImageDataColorLUT: _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__["default"], - storedPixelDataToCanvasImageDataPseudocolorLUT: _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__["default"], - internal: _internal_index_js__WEBPACK_IMPORTED_MODULE_8__["default"], - renderLabelMapImage: _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__["renderLabelMapImage"], - renderPseudoColorImage: _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__["renderPseudoColorImage"], - renderColorImage: _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__["renderColorImage"], - renderGrayscaleImage: _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__["renderGrayscaleImage"], - renderWebImage: _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__["renderWebImage"], - renderToCanvas: _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__["default"], - canvasToPixel: _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__["default"], - disable: _disable_js__WEBPACK_IMPORTED_MODULE_16__["default"], - displayImage: _displayImage_js__WEBPACK_IMPORTED_MODULE_17__["default"], - draw: _draw_js__WEBPACK_IMPORTED_MODULE_18__["default"], - drawInvalidated: _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__["default"], - enable: _enable_js__WEBPACK_IMPORTED_MODULE_20__["default"], - getElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__["getElementData"], - removeElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__["removeElementData"], - getEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__["getEnabledElement"], - addEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__["addEnabledElement"], - getEnabledElementsByImageId: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__["getEnabledElementsByImageId"], - getEnabledElements: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__["getEnabledElements"], - addLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__["addLayer"], - removeLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__["removeLayer"], - getLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__["getLayer"], - getLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__["getLayers"], - getVisibleLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__["getVisibleLayers"], - setActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__["setActiveLayer"], - getActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__["getActiveLayer"], - purgeLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__["purgeLayers"], - setLayerImage: _layers_js__WEBPACK_IMPORTED_MODULE_23__["setLayerImage"], - fitToWindow: _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__["default"], - getDefaultViewportForImage: _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__["default"], - getImage: _getImage_js__WEBPACK_IMPORTED_MODULE_26__["default"], - getPixels: _getPixels_js__WEBPACK_IMPORTED_MODULE_27__["default"], - getStoredPixels: _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__["default"], - getViewport: _getViewport_js__WEBPACK_IMPORTED_MODULE_29__["default"], - loadImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__["loadImage"], - loadAndCacheImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__["loadAndCacheImage"], - registerImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__["registerImageLoader"], - registerUnknownImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__["registerUnknownImageLoader"], - invalidate: _invalidate_js__WEBPACK_IMPORTED_MODULE_31__["default"], - invalidateImageId: _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__["default"], - pageToPixel: _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__["default"], - pixelToCanvas: _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__["default"], - reset: _reset_js__WEBPACK_IMPORTED_MODULE_35__["default"], - resize: _resize_js__WEBPACK_IMPORTED_MODULE_36__["default"], - setToPixelCoordinateSystem: _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__["default"], - setViewport: _setViewport_js__WEBPACK_IMPORTED_MODULE_38__["default"], - updateImage: _updateImage_js__WEBPACK_IMPORTED_MODULE_39__["default"], - pixelDataToFalseColorData: _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__["default"], - rendering: _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__["default"], - imageCache: _imageCache_js__WEBPACK_IMPORTED_MODULE_42__["default"], - metaData: _metaData_js__WEBPACK_IMPORTED_MODULE_43__["default"], - webGL: _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__["default"], - colors: _colors_index_js__WEBPACK_IMPORTED_MODULE_45__["default"], - convertImageToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__["convertImageToFalseColorImage"], - convertToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__["convertToFalseColorImage"], - restoreImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__["restoreImage"], - EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_47__["default"], - events: _events_js__WEBPACK_IMPORTED_MODULE_47__["events"], - triggerEvent: _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__["default"] + drawImage: _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_14__["default"], + generateLut: _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_18__["default"], + getDefaultViewport: _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_19__["default"], + requestAnimationFrame: _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_41__["default"], + storedPixelDataToCanvasImageData: _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_48__["default"], + storedColorPixelDataToCanvasImageData: _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_47__["default"], + storedPixelDataToCanvasImageDataColorLUT: _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_49__["default"], + storedPixelDataToCanvasImageDataPseudocolorLUT: _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_50__["default"], + internal: _internal_index_js__WEBPACK_IMPORTED_MODULE_27__["default"], + renderLabelMapImage: _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_36__["renderLabelMapImage"], + renderPseudoColorImage: _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_37__["renderPseudoColorImage"], + renderColorImage: _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_34__["renderColorImage"], + renderGrayscaleImage: _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_35__["renderGrayscaleImage"], + renderWebImage: _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_39__["renderWebImage"], + renderToCanvas: _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_38__["default"], + canvasToPixel: _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_9__["default"], + disable: _disable_js__WEBPACK_IMPORTED_MODULE_11__["default"], + displayImage: _displayImage_js__WEBPACK_IMPORTED_MODULE_12__["default"], + draw: _draw_js__WEBPACK_IMPORTED_MODULE_13__["default"], + drawInvalidated: _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_15__["default"], + enable: _enable_js__WEBPACK_IMPORTED_MODULE_16__["default"], + getElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_4__["getElementData"], + removeElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_4__["removeElementData"], + getEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["getEnabledElement"], + addEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["addEnabledElement"], + getEnabledElementsByImageId: _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["getEnabledElementsByImageId"], + getEnabledElements: _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["getEnabledElements"], + addLayer: _layers_js__WEBPACK_IMPORTED_MODULE_2__["addLayer"], + removeLayer: _layers_js__WEBPACK_IMPORTED_MODULE_2__["removeLayer"], + getLayer: _layers_js__WEBPACK_IMPORTED_MODULE_2__["getLayer"], + getLayers: _layers_js__WEBPACK_IMPORTED_MODULE_2__["getLayers"], + getVisibleLayers: _layers_js__WEBPACK_IMPORTED_MODULE_2__["getVisibleLayers"], + setActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_2__["setActiveLayer"], + getActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_2__["getActiveLayer"], + purgeLayers: _layers_js__WEBPACK_IMPORTED_MODULE_2__["purgeLayers"], + setLayerImage: _layers_js__WEBPACK_IMPORTED_MODULE_2__["setLayerImage"], + fitToWindow: _fitToWindow_js__WEBPACK_IMPORTED_MODULE_17__["default"], + getDefaultViewportForImage: _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_20__["default"], + getDisplayedArea: _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_21__["default"], + setDefaultViewport: _internal_setDefaultViewport_js__WEBPACK_IMPORTED_MODULE_44__["default"], + getImage: _getImage_js__WEBPACK_IMPORTED_MODULE_22__["default"], + getPixels: _getPixels_js__WEBPACK_IMPORTED_MODULE_23__["default"], + getStoredPixels: _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_24__["default"], + getViewport: _getViewport_js__WEBPACK_IMPORTED_MODULE_25__["default"], + loadImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__["loadImage"], + loadAndCacheImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__["loadAndCacheImage"], + registerImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__["registerImageLoader"], + registerUnknownImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_5__["registerUnknownImageLoader"], + invalidate: _invalidate_js__WEBPACK_IMPORTED_MODULE_28__["default"], + invalidateImageId: _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_29__["default"], + pageToPixel: _pageToPixel_js__WEBPACK_IMPORTED_MODULE_31__["default"], + pixelToCanvas: _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_33__["default"], + reset: _reset_js__WEBPACK_IMPORTED_MODULE_42__["default"], + resize: _resize_js__WEBPACK_IMPORTED_MODULE_43__["default"], + setToPixelCoordinateSystem: _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_45__["default"], + setViewport: _setViewport_js__WEBPACK_IMPORTED_MODULE_46__["default"], + updateImage: _updateImage_js__WEBPACK_IMPORTED_MODULE_52__["default"], + pixelDataToFalseColorData: _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_32__["default"], + rendering: _rendering_index_js__WEBPACK_IMPORTED_MODULE_40__["default"], + imageCache: _imageCache_js__WEBPACK_IMPORTED_MODULE_26__["default"], + metaData: _metaData_js__WEBPACK_IMPORTED_MODULE_30__["default"], + webGL: _webgl_index_js__WEBPACK_IMPORTED_MODULE_53__["default"], + colors: _colors_index_js__WEBPACK_IMPORTED_MODULE_10__["default"], + convertImageToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_3__["convertImageToFalseColorImage"], + convertToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_3__["convertToFalseColorImage"], + restoreImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_3__["restoreImage"], + EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_0__["default"], + events: _events_js__WEBPACK_IMPORTED_MODULE_0__["events"], + triggerEvent: _triggerEvent_js__WEBPACK_IMPORTED_MODULE_51__["default"], + imageLoadPoolManager: _requestPool_imageLoadPoolManager_ts__WEBPACK_IMPORTED_MODULE_6__["default"], + imageRetrievalPoolManager: _requestPool_imageRetrievalPoolManager_ts__WEBPACK_IMPORTED_MODULE_7__["default"], + RequestPoolManager: _requestPool_RequestPoolManager_ts__WEBPACK_IMPORTED_MODULE_8__["RequestPoolManager"] }; /* harmony default export */ __webpack_exports__["default"] = (cornerstone); @@ -3792,6 +3809,8 @@ var cornerstone = { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform.js */ "./internal/transform.js"); +/* harmony import */ var _getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDisplayedArea.js */ "./internal/getDisplayedArea.js"); + /** * Calculate the transform for a Cornerstone enabled element @@ -3816,10 +3835,13 @@ __webpack_require__.r(__webpack_exports__); var widthScale = enabledElement.viewport.scale; var heightScale = enabledElement.viewport.scale; - var width = enabledElement.viewport.displayedArea.brhc.x - (enabledElement.viewport.displayedArea.tlhc.x - 1); - var height = enabledElement.viewport.displayedArea.brhc.y - (enabledElement.viewport.displayedArea.tlhc.y - 1); + var imageDisplayedArea = Object(_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_1__["default"])(enabledElement.image, enabledElement.viewport); + var offsetX = imageDisplayedArea.tlhc.x - 1; + var offsetY = imageDisplayedArea.tlhc.y - 1; + var width = imageDisplayedArea.brhc.x - offsetX; + var height = imageDisplayedArea.brhc.y - offsetY; - if (enabledElement.viewport.displayedArea.presentationSizeMode === 'NONE') { + if (imageDisplayedArea.presentationSizeMode === 'NONE') { if (enabledElement.image.rowPixelSpacing < enabledElement.image.columnPixelSpacing) { widthScale *= enabledElement.image.columnPixelSpacing / enabledElement.image.rowPixelSpacing; } else if (enabledElement.image.columnPixelSpacing < enabledElement.image.rowPixelSpacing) { @@ -3827,20 +3849,20 @@ __webpack_require__.r(__webpack_exports__); } } else { // These should be good for "TRUE SIZE" and "MAGNIFY" - widthScale = enabledElement.viewport.displayedArea.columnPixelSpacing; - heightScale = enabledElement.viewport.displayedArea.rowPixelSpacing; + widthScale = imageDisplayedArea.columnPixelSpacing; + heightScale = imageDisplayedArea.rowPixelSpacing; - if (enabledElement.viewport.displayedArea.presentationSizeMode === 'SCALE TO FIT') { + if (imageDisplayedArea.presentationSizeMode === 'SCALE TO FIT') { // Fit TRUE IMAGE image (width/height) to window var verticalScale = enabledElement.canvas.height / (height * heightScale); var horizontalScale = enabledElement.canvas.width / (width * widthScale); // Apply new scale widthScale = heightScale = Math.min(horizontalScale, verticalScale); - if (enabledElement.viewport.displayedArea.rowPixelSpacing < enabledElement.viewport.displayedArea.columnPixelSpacing) { - widthScale *= enabledElement.viewport.displayedArea.columnPixelSpacing / enabledElement.viewport.displayedArea.rowPixelSpacing; - } else if (enabledElement.viewport.displayedArea.columnPixelSpacing < enabledElement.viewport.displayedArea.rowPixelSpacing) { - heightScale *= enabledElement.viewport.displayedArea.rowPixelSpacing / enabledElement.viewport.displayedArea.columnPixelSpacing; + if (imageDisplayedArea.rowPixelSpacing < imageDisplayedArea.columnPixelSpacing) { + widthScale *= imageDisplayedArea.columnPixelSpacing / imageDisplayedArea.rowPixelSpacing; + } else if (imageDisplayedArea.columnPixelSpacing < imageDisplayedArea.rowPixelSpacing) { + heightScale *= imageDisplayedArea.rowPixelSpacing / imageDisplayedArea.columnPixelSpacing; } } } @@ -3873,7 +3895,9 @@ __webpack_require__.r(__webpack_exports__); } // Move back from center of image - transform.translate(-width / 2, -height / 2); + transform.translate(-width / 2, -height / 2); // Move to displayedArea + + transform.translate(-offsetX, -offsetY); return transform; }); @@ -3931,6 +3955,51 @@ function hasVoi(viewport) { /***/ }), +/***/ "./internal/createViewport.js": +/*!************************************!*\ + !*** ./internal/createViewport.js ***! + \************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _setDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setDefaultViewport.js */ "./internal/setDefaultViewport.js"); + +/** + * Creates a new viewport object containing default values + * + * @returns {Viewport} viewport object + * @memberof Internal + */ + +/* harmony default export */ __webpack_exports__["default"] = (function () { + var initialDefaultViewport = { + scale: 1, + translation: { + x: 0, + y: 0 + }, + voi: { + windowWidth: undefined, + windowCenter: undefined + }, + invert: false, + pixelReplication: false, + rotation: 0, + hflip: false, + vflip: false, + modalityLUT: undefined, + voiLUT: undefined, + colormap: undefined, + labelmap: false, + displayedArea: undefined + }; + return Object.assign({}, initialDefaultViewport, _setDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__["state"].viewport); +}); + +/***/ }), + /***/ "./internal/drawCompositeImage.js": /*!****************************************!*\ !*** ./internal/drawCompositeImage.js ***! @@ -3946,6 +4015,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ "./rendering/renderPseudoColorImage.js"); /* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ "./rendering/renderLabelMapImage.js"); /* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); +/* harmony import */ var _getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDisplayedArea.js */ "./internal/getDisplayedArea.js"); + @@ -4055,11 +4126,12 @@ function renderLayers(context, layers, invalidated) { context.imageSmoothingEnabled = !layer.viewport.pixelReplication; context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Draw from the current layer's canvas onto the enabled element's canvas - var sx = layer.viewport.displayedArea.tlhc.x - 1; - var sy = layer.viewport.displayedArea.tlhc.y - 1; - var width = layer.viewport.displayedArea.brhc.x - sx; - var height = layer.viewport.displayedArea.brhc.y - sy; - context.drawImage(layer.canvas, sx, sy, width, height, 0, 0, width, height); + var layerDisplayedArea = Object(_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_6__["default"])(layer.image, layer.viewport); + var sx = layerDisplayedArea.tlhc.x - 1; + var sy = layerDisplayedArea.tlhc.y - 1; + var width = layerDisplayedArea.brhc.x - sx; + var height = layerDisplayedArea.brhc.y - sy; + context.drawImage(layer.canvas, sx, sy, width, height, sx, sy, width, height); context.restore(); layer.invalid = false; }); @@ -4098,7 +4170,9 @@ function renderLayers(context, layers, invalidated) { } // Get the enabled element's canvas so we can draw to it - var context = enabledElement.canvas.getContext('2d'); + var context = enabledElement.canvas.getContext('2d', { + desynchronized: true + }); context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas context.fillStyle = 'black'; @@ -4176,7 +4250,7 @@ __webpack_require__.r(__webpack_exports__); var element = enabledElement.element; var layers = enabledElement.layers || []; // Check if enabledElement can be redrawn - if (!enabledElement.canvas || !(enabledElement.image || layers.length)) { + if (!enabledElement.canvas || !enabledElement.image) { return; } // Start measuring the time needed to draw the image/layers @@ -4217,7 +4291,9 @@ __webpack_require__.r(__webpack_exports__); element: element, image: image, enabledElement: enabledElement, - canvasContext: enabledElement.canvas.getContext('2d'), + canvasContext: enabledElement.canvas.getContext('2d', { + desynchronized: true + }), renderTimeInMs: renderTimeInMs }; image.stats.lastRenderTime = renderTimeInMs; @@ -4322,8 +4398,9 @@ __webpack_require__.r(__webpack_exports__); } var lut = image.cachedLut.lutArray; + var slopeOrInterceptAreFloat = Boolean(image.slope % 1) || Boolean(image.intercept % 1); var mlutfn = Object(_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__["default"])(image.slope, image.intercept, modalityLUT); - var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_1__["default"])(windowWidth, windowCenter, voiLUT); + var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_1__["default"])(windowWidth, windowCenter, voiLUT, slopeOrInterceptAreFloat); if (invert === true) { for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) { @@ -4389,65 +4466,10 @@ function getCanvas(element) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getImageFitScale.js */ "./internal/getImageFitScale.js"); - -/** - * Creates a new viewport object containing default values - * - * @returns {Viewport} viewport object - * @memberof Internal - */ - -function createViewport() { - var displayedArea = createDefaultDisplayedArea(); - return { - scale: 1, - translation: { - x: 0, - y: 0 - }, - voi: { - windowWidth: undefined, - windowCenter: undefined - }, - invert: false, - pixelReplication: false, - rotation: 0, - hflip: false, - vflip: false, - modalityLUT: undefined, - voiLUT: undefined, - colormap: undefined, - labelmap: false, - displayedArea: displayedArea - }; -} -/** - * Creates the default displayed area. - * C.10.4 Displayed Area Module: This Module describes Attributes required to define a Specified Displayed Area space. - * - * @returns {tlhc: {x,y}, brhc: {x, y},rowPixelSpacing: Number, columnPixelSpacing: Number, presentationSizeMode: Number} displayedArea object - * @memberof Internal - */ +/* harmony import */ var _createViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createViewport.js */ "./internal/createViewport.js"); +/* harmony import */ var _getImageFitScale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getImageFitScale.js */ "./internal/getImageFitScale.js"); -function createDefaultDisplayedArea() { - return { - // Top Left Hand Corner - tlhc: { - x: 1, - y: 1 - }, - // Bottom Right Hand Corner - brhc: { - x: 1, - y: 1 - }, - rowPixelSpacing: 1, - columnPixelSpacing: 1, - presentationSizeMode: 'NONE' - }; -} /** * Creates a new viewport object containing default values for the image and canvas * @@ -4457,18 +4479,17 @@ function createDefaultDisplayedArea() { * @memberof Internal */ - /* harmony default export */ __webpack_exports__["default"] = (function (canvas, image) { if (canvas === undefined) { throw new Error('getDefaultViewport: parameter canvas must not be undefined'); } if (image === undefined) { - return createViewport(); + return Object(_createViewport_js__WEBPACK_IMPORTED_MODULE_0__["default"])(); } // Fit image to window - var scale = Object(_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__["default"])(canvas, image, 0).scaleFactor; + var scale = Object(_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_1__["default"])(canvas, image, 0).scaleFactor; return { scale: scale, translation: { @@ -4488,24 +4509,89 @@ function createDefaultDisplayedArea() { voiLUT: image.voiLUT, colormap: image.colormap, labelmap: Boolean(image.labelmap), - displayedArea: { - tlhc: { - x: 1, - y: 1 - }, - brhc: { - x: image.columns, - y: image.rows - }, - rowPixelSpacing: image.rowPixelSpacing === undefined ? 1 : image.rowPixelSpacing, - columnPixelSpacing: image.columnPixelSpacing === undefined ? 1 : image.columnPixelSpacing, - presentationSizeMode: 'NONE' - } + displayedArea: undefined }; }); /***/ }), +/***/ "./internal/getDisplayedArea.js": +/*!**************************************!*\ + !*** ./internal/getDisplayedArea.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/** + * Returns the displayedArea from the viewport if exists or + * creates a new displayedArea object containing default values for the image + * + * @param {Image} image A Cornerstone Image Object + * @param {Viewport} viewport An optional viewport Object + * @returns {DisplayedArea} displayedArea object + * @memberof Internal + */ +/* harmony default export */ __webpack_exports__["default"] = (function (image) { + var viewport = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + if (viewport && viewport.displayedArea) { + return viewport.displayedArea; + } + + if (image === undefined) { + throw new Error('getDisplayedArea: parameter image must not be undefined'); + } + + return { + tlhc: { + x: 1, + y: 1 + }, + brhc: { + x: image.columns, + y: image.rows + }, + rowPixelSpacing: image.rowPixelSpacing === undefined ? 1 : image.rowPixelSpacing, + columnPixelSpacing: image.columnPixelSpacing === undefined ? 1 : image.columnPixelSpacing, + presentationSizeMode: 'NONE' + }; +}); + +/***/ }), + +/***/ "./internal/getFillStyle.js": +/*!**********************************!*\ + !*** ./internal/getFillStyle.js ***! + \**********************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/** + * Get current fillStyle for enabled element + * + * @param {Object} enabledElement Enabled element + * @returns {String} Current fillStyle of enabled element + */ +/* harmony default export */ __webpack_exports__["default"] = (function (enabledElement) { + var _ref = enabledElement.viewport || {}, + invert = _ref.invert; + + var _ref2 = enabledElement.options || {}, + fillStyle = _ref2.fillStyle; + + if (['black', 'white'].indexOf(fillStyle) !== -1) { + return invert ? 'white' : 'black'; + } + + return 'black'; +}); + +/***/ }), + /***/ "./internal/getImageFitScale.js": /*!**************************************!*\ !*** ./internal/getImageFitScale.js ***! @@ -4702,13 +4788,17 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /* eslint no-bitwise: 0 */ @@ -4742,13 +4832,15 @@ function generateLinearVOILUT(windowWidth, windowCenter) { * Generate a non-linear volume of interest lookup table * * @param {LUT} voiLUT Volume of Interest Lookup Table Object + * @param {Boolean} roundModalityLUTValues Do a Math.round of modality lut to compute non linear voilut + * * @returns {VOILUTFunction} VOI LUT mapping function * @memberof VOILUT */ -function generateNonLinearVOILUT(voiLUT) { +function generateNonLinearVOILUT(voiLUT, roundModalityLUTValues) { // We don't trust the voiLUT.numBitsPerEntry, mainly thanks to Agfa! var bitsPerEntry = Math.max.apply(Math, _toConsumableArray(voiLUT.lut)).toString(2).length; var shift = bitsPerEntry - 8; @@ -4762,6 +4854,10 @@ function generateNonLinearVOILUT(voiLUT) { return maxValue; } + if (roundModalityLUTValues) { + return voiLUT.lut[Math.round(modalityLutValue) - voiLUT.firstValueMapped] >> shift; + } + return voiLUT.lut[modalityLutValue - voiLUT.firstValueMapped] >> shift; }; } @@ -4772,15 +4868,16 @@ function generateNonLinearVOILUT(voiLUT) { * @param {Number} windowWidth Window Width * @param {Number} windowCenter Window Center * @param {LUT} [voiLUT] Volume of Interest Lookup Table Object + * @param {Boolean} roundModalityLUTValues Do a Math.round of modality lut to compute non linear voilut * * @return {VOILUTFunction} VOI LUT mapping function * @memberof VOILUT */ -/* harmony default export */ __webpack_exports__["default"] = (function (windowWidth, windowCenter, voiLUT) { +/* harmony default export */ __webpack_exports__["default"] = (function (windowWidth, windowCenter, voiLUT, roundModalityLUTValues) { if (voiLUT) { - return generateNonLinearVOILUT(voiLUT); + return generateNonLinearVOILUT(voiLUT, roundModalityLUTValues); } return generateLinearVOILUT(windowWidth, windowCenter); @@ -4823,18 +4920,20 @@ function s4() { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drawImage.js */ "./internal/drawImage.js"); -/* harmony import */ var _generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generateLut.js */ "./internal/generateLut.js"); -/* harmony import */ var _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDefaultViewport.js */ "./internal/getDefaultViewport.js"); -/* harmony import */ var _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./requestAnimationFrame.js */ "./internal/requestAnimationFrame.js"); -/* harmony import */ var _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageData.js */ "./internal/storedPixelDataToCanvasImageData.js"); -/* harmony import */ var _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataRGBA.js */ "./internal/storedPixelDataToCanvasImageDataRGBA.js"); -/* harmony import */ var _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./storedColorPixelDataToCanvasImageData.js */ "./internal/storedColorPixelDataToCanvasImageData.js"); -/* harmony import */ var _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataColorLUT.js */ "./internal/storedPixelDataToCanvasImageDataColorLUT.js"); -/* harmony import */ var _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataPseudocolorLUT.js */ "./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js"); -/* harmony import */ var _getTransform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getTransform.js */ "./internal/getTransform.js"); -/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./calculateTransform.js */ "./internal/calculateTransform.js"); -/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transform.js */ "./internal/transform.js"); +/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform.js */ "./internal/transform.js"); +/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./calculateTransform.js */ "./internal/calculateTransform.js"); +/* harmony import */ var _drawImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./drawImage.js */ "./internal/drawImage.js"); +/* harmony import */ var _generateLut_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./generateLut.js */ "./internal/generateLut.js"); +/* harmony import */ var _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getDefaultViewport.js */ "./internal/getDefaultViewport.js"); +/* harmony import */ var _getTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getTransform.js */ "./internal/getTransform.js"); +/* harmony import */ var _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./requestAnimationFrame.js */ "./internal/requestAnimationFrame.js"); +/* harmony import */ var _setDefaultViewport_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./setDefaultViewport.js */ "./internal/setDefaultViewport.js"); +/* harmony import */ var _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./storedColorPixelDataToCanvasImageData.js */ "./internal/storedColorPixelDataToCanvasImageData.js"); +/* harmony import */ var _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageData.js */ "./internal/storedPixelDataToCanvasImageData.js"); +/* harmony import */ var _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataColorLUT.js */ "./internal/storedPixelDataToCanvasImageDataColorLUT.js"); +/* harmony import */ var _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataPseudocolorLUT.js */ "./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js"); +/* harmony import */ var _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataRGBA.js */ "./internal/storedPixelDataToCanvasImageDataRGBA.js"); + @@ -4852,18 +4951,19 @@ __webpack_require__.r(__webpack_exports__); */ /* harmony default export */ __webpack_exports__["default"] = ({ - drawImage: _drawImage_js__WEBPACK_IMPORTED_MODULE_0__["default"], - generateLut: _generateLut_js__WEBPACK_IMPORTED_MODULE_1__["default"], - getDefaultViewport: _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"], - requestAnimationFrame: _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__["default"], - storedPixelDataToCanvasImageData: _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__["default"], - storedPixelDataToCanvasImageDataRGBA: _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__["default"], - storedPixelDataToCanvasImageDataColorLUT: _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__["default"], - storedPixelDataToCanvasImageDataPseudocolorLUT: _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__["default"], - storedColorPixelDataToCanvasImageData: _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__["default"], - getTransform: _getTransform_js__WEBPACK_IMPORTED_MODULE_9__["default"], - calculateTransform: _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__["default"], - Transform: _transform_js__WEBPACK_IMPORTED_MODULE_11__["Transform"] + drawImage: _drawImage_js__WEBPACK_IMPORTED_MODULE_2__["default"], + generateLut: _generateLut_js__WEBPACK_IMPORTED_MODULE_3__["default"], + getDefaultViewport: _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_4__["default"], + requestAnimationFrame: _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_6__["default"], + setDefaultViewport: _setDefaultViewport_js__WEBPACK_IMPORTED_MODULE_7__["default"], + storedPixelDataToCanvasImageData: _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_9__["default"], + storedPixelDataToCanvasImageDataRGBA: _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_12__["default"], + storedPixelDataToCanvasImageDataColorLUT: _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_10__["default"], + storedPixelDataToCanvasImageDataPseudocolorLUT: _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_11__["default"], + storedColorPixelDataToCanvasImageData: _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_8__["default"], + getTransform: _getTransform_js__WEBPACK_IMPORTED_MODULE_5__["default"], + calculateTransform: _calculateTransform_js__WEBPACK_IMPORTED_MODULE_1__["default"], + Transform: _transform_js__WEBPACK_IMPORTED_MODULE_0__["Transform"] }); /***/ }), @@ -4923,6 +5023,33 @@ function requestFrame(callback) { return window.requestAnimationFrame(callback) || window.webkitRequestAnimationFrame(callback) || window.mozRequestAnimationFrame(callback) || window.oRequestAnimationFrame(callback) || window.msRequestAnimationFrame(callback) || requestFrame(callback); }); +/***/ }), + +/***/ "./internal/setDefaultViewport.js": +/*!****************************************!*\ + !*** ./internal/setDefaultViewport.js ***! + \****************************************/ +/*! exports provided: default, state */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "state", function() { return state; }); +var state = { + viewport: {} +}; +/** + * Sets new default values for `getDefaultViewport` + * + * @param {Object} viewport - Object that sets new default values for getDefaultViewport + * @returns {undefined} + */ + +/* harmony default export */ __webpack_exports__["default"] = (function (viewport) { + state.viewport = viewport || {}; +}); + + /***/ }), /***/ "./internal/storedColorPixelDataToCanvasImageData.js": @@ -5386,9 +5513,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d // Ctx.rotate(5); // But now you can retrieve it :) // Remember that this does not account for any CSS transforms applied to the canvas -var Transform = -/*#__PURE__*/ -function () { +var Transform = /*#__PURE__*/function () { function Transform() { _classCallCheck(this, Transform); @@ -5515,6 +5640,8 @@ __webpack_require__.r(__webpack_exports__); // And return the renderCanvas from the WebGL rendering path _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__["default"].renderer.initRenderer(); options.renderer = 'webgl'; + options.desynchronized = true; + options.preserveDrawingBuffer = true; return true; } // If WebGL is not available on this device, we will fall back // To using the Canvas renderer @@ -5522,6 +5649,7 @@ __webpack_require__.r(__webpack_exports__); console.error('WebGL not available, falling back to Canvas renderer'); delete options.renderer; + delete options.preserveDrawingBuffer; return false; }); @@ -5582,7 +5710,7 @@ __webpack_require__.r(__webpack_exports__); /** - * Sets the invalid flag on the enabled element and fire an event + * Sets the invalid flag on the enabled element and fires an event * @param {HTMLElement} element The DOM element enabled for Cornerstone * @returns {void} * @memberof Drawing @@ -5614,7 +5742,7 @@ __webpack_require__.r(__webpack_exports__); /** - * Forces the image to be updated/redrawn for the all enabled elements + * Forces the image to be updated/redrawn for all enabled elements * displaying the specified imageId * * @param {string} imageId The imageId of the Cornerstone Image Object to redraw @@ -5653,9 +5781,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _internal_guid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/guid.js */ "./internal/guid.js"); /* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ "./enabledElements.js"); /* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ "./internal/getDefaultViewport.js"); -/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateImage.js */ "./updateImage.js"); -/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triggerEvent.js */ "./triggerEvent.js"); -/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ "./events.js"); +/* harmony import */ var _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/getDisplayedArea.js */ "./internal/getDisplayedArea.js"); +/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./updateImage.js */ "./updateImage.js"); +/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ "./triggerEvent.js"); +/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./events.js */ "./events.js"); + @@ -5686,7 +5816,7 @@ function triggerEventForLayer(eventName, enabledElement, layerId) { enabledElement: enabledElement, layerId: layerId }; - Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element, eventName, eventData); + Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element, eventName, eventData); } /** * Rescale the target layer to the base layer based on the @@ -5716,7 +5846,9 @@ function rescaleImage(baseLayer, targetLayer) { // ratio between the layer added and base layer images - var colRelative = targetLayer.viewport.displayedArea.columnPixelSpacing * targetImage.width / (baseLayer.viewport.displayedArea.columnPixelSpacing * baseImage.width); + var targetDisplayedArea = Object(_internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_3__["default"])(targetImage, targetLayer.viewport); + var baseDisplayedArea = Object(_internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_3__["default"])(baseImage, baseLayer.viewport); + var colRelative = targetDisplayedArea.columnPixelSpacing * targetImage.width / (baseDisplayedArea.columnPixelSpacing * baseImage.width); var viewportRatio = targetLayer.viewport.scale / baseLayer.viewport.scale * colRelative; targetLayer.viewport.scale = baseLayer.viewport.scale * viewportRatio; } @@ -5765,7 +5897,7 @@ function addLayer(element, image, options) { } layers.push(newLayer); - triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__["default"].LAYER_ADDED, enabledElement, layerId); // Set the layer as active if it's the first layer added + triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].LAYER_ADDED, enabledElement, layerId); // Set the layer as active if it's the first layer added if (layers.length === 1 && image) { setActiveLayer(element, layerId); @@ -5797,7 +5929,7 @@ function removeLayer(element, layerId) { setActiveLayer(element, layers[0].layerId); } - triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__["default"].LAYER_REMOVED, enabledElement, layerId); + triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].LAYER_REMOVED, enabledElement, layerId); } } /** @@ -5876,8 +6008,8 @@ function setActiveLayer(element, layerId) { enabledElement.activeLayerId = layerId; enabledElement.image = layer.image; enabledElement.viewport = layer.viewport; - Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); - triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__["default"].ACTIVE_LAYER_CHANGED, enabledElement, layerId); + Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element); + triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].ACTIVE_LAYER_CHANGED, enabledElement, layerId); } /** * Set a new image for a specific layerId @@ -6347,7 +6479,9 @@ __webpack_require__.r(__webpack_exports__); renderCanvas.width = image.width; renderCanvas.height = image.height; - var canvasContext = renderCanvas.getContext('2d'); // NOTE - we need to fill the render canvas with white pixels since we + var canvasContext = renderCanvas.getContext('2d', { + desynchronized: true + }); // NOTE - we need to fill the render canvas with white pixels since we // control the luminance using the alpha channel to improve rendering performance. canvasContext.fillStyle = 'white'; @@ -6405,14 +6539,18 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderColorImage", function() { return renderColorImage; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addColorLayer", function() { return addColorLayer; }); /* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/now.js */ "./internal/now.js"); -/* harmony import */ var _internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/generateColorLut.js */ "./internal/generateColorLut.js"); -/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/storedColorPixelDataToCanvasImageData.js */ "./internal/storedColorPixelDataToCanvasImageData.js"); -/* harmony import */ var _internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/storedRGBAPixelDataToCanvasImageData.js */ "./internal/storedRGBAPixelDataToCanvasImageData.js"); -/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); -/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl/index.js */ "./webgl/index.js"); -/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ "./rendering/doesImageNeedToBeRendered.js"); -/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ "./rendering/initializeRenderCanvas.js"); -/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ "./rendering/saveLastRendered.js"); +/* harmony import */ var _internal_getFillStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/getFillStyle.js */ "./internal/getFillStyle.js"); +/* harmony import */ var _internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/generateColorLut.js */ "./internal/generateColorLut.js"); +/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/storedColorPixelDataToCanvasImageData.js */ "./internal/storedColorPixelDataToCanvasImageData.js"); +/* harmony import */ var _internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/storedRGBAPixelDataToCanvasImageData.js */ "./internal/storedRGBAPixelDataToCanvasImageData.js"); +/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); +/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../webgl/index.js */ "./webgl/index.js"); +/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ "./rendering/doesImageNeedToBeRendered.js"); +/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ "./rendering/initializeRenderCanvas.js"); +/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./saveLastRendered.js */ "./rendering/saveLastRendered.js"); +/* harmony import */ var _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../internal/getDisplayedArea.js */ "./internal/getDisplayedArea.js"); + + @@ -6439,7 +6577,7 @@ function getLut(image, viewport) { } // Lut is invalid or not present, regenerate it and cache it - Object(_internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__["default"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert); + Object(_internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_2__["default"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert); image.cachedLut.windowWidth = viewport.voi.windowWidth; image.cachedLut.windowCenter = viewport.voi.windowCenter; image.cachedLut.invert = viewport.invert; @@ -6472,7 +6610,7 @@ function getRenderCanvas(enabledElement, image, invalidated) { } // Apply the lut to the stored pixel data onto the render canvas - if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__["default"])(enabledElement, image) === false && invalidated !== true) { + if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_7__["default"])(enabledElement, image) === false && invalidated !== true) { return renderCanvas; } // If our render canvas does not match the size of this image reset it // NOTE: This might be inefficient if we are updating multiple images of different @@ -6480,7 +6618,7 @@ function getRenderCanvas(enabledElement, image, invalidated) { if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) { - Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__["default"])(enabledElement, image); + Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_8__["default"])(enabledElement, image); } // Get the lut to use @@ -6493,9 +6631,9 @@ function getRenderCanvas(enabledElement, image, invalidated) { // Pixel data and put it into the renderCanvas if (image.rgba) { - Object(_internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__["default"])(image, colorLut, renderCanvasData.data); + Object(_internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__["default"])(image, colorLut, renderCanvasData.data); } else { - Object(_internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__["default"])(image, colorLut, renderCanvasData.data); + Object(_internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__["default"])(image, colorLut, renderCanvasData.data); } start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__["default"])(); @@ -6525,34 +6663,37 @@ function renderColorImage(enabledElement, invalidated) { } // Get the canvas context and reset the transform - var context = enabledElement.canvas.getContext('2d'); + var context = enabledElement.canvas.getContext('2d', { + desynchronized: true + }); context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas - context.fillStyle = 'black'; + context.fillStyle = Object(_internal_getFillStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(enabledElement); context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication; context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties - Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__["default"])(enabledElement, context); + Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__["default"])(enabledElement, context); var renderCanvas; if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') { // If this enabled element has the option set for WebGL, we should // User it as our renderer. - renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__["default"].renderer.render(enabledElement); + renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_6__["default"].renderer.render(enabledElement); } else { // If no options are set we will retrieve the renderCanvas through the // Normal Canvas rendering path renderCanvas = getRenderCanvas(enabledElement, image, invalidated); } - var sx = enabledElement.viewport.displayedArea.tlhc.x - 1; - var sy = enabledElement.viewport.displayedArea.tlhc.y - 1; - var width = enabledElement.viewport.displayedArea.brhc.x - sx; - var height = enabledElement.viewport.displayedArea.brhc.y - sy; - context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height); - enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__["default"])(enabledElement); + var imageDisplayedArea = Object(_internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_10__["default"])(enabledElement.image, enabledElement.viewport); + var sx = imageDisplayedArea.tlhc.x - 1; + var sy = imageDisplayedArea.tlhc.y - 1; + var width = imageDisplayedArea.brhc.x - sx; + var height = imageDisplayedArea.brhc.y - sy; + context.drawImage(renderCanvas, sx, sy, width, height, sx, sy, width, height); + enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_9__["default"])(enabledElement); } function addColorLayer(layer, invalidated) { if (layer === undefined) { @@ -6568,11 +6709,13 @@ function addColorLayer(layer, invalidated) { image.rgba = true; layer.canvas = getRenderCanvas(layer, image, invalidated); - var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport + var context = layer.canvas.getContext('2d', { + desynchronized: true + }); // Turn off image smooth/interpolation if pixelReplication is set in the viewport context.imageSmoothingEnabled = !layer.viewport.pixelReplication; context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; - layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__["default"])(layer); + layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_9__["default"])(layer); } /***/ }), @@ -6588,15 +6731,19 @@ function addColorLayer(layer, invalidated) { __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderGrayscaleImage", function() { return renderGrayscaleImage; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addGrayscaleLayer", function() { return addGrayscaleLayer; }); -/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageData.js */ "./internal/storedPixelDataToCanvasImageData.js"); -/* harmony import */ var _internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataRGBA.js */ "./internal/storedPixelDataToCanvasImageDataRGBA.js"); -/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); -/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/now.js */ "./internal/now.js"); -/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../webgl/index.js */ "./webgl/index.js"); -/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getLut.js */ "./rendering/getLut.js"); -/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ "./rendering/doesImageNeedToBeRendered.js"); -/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ "./rendering/initializeRenderCanvas.js"); -/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ "./rendering/saveLastRendered.js"); +/* harmony import */ var _internal_getFillStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/getFillStyle.js */ "./internal/getFillStyle.js"); +/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageData.js */ "./internal/storedPixelDataToCanvasImageData.js"); +/* harmony import */ var _internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataRGBA.js */ "./internal/storedPixelDataToCanvasImageDataRGBA.js"); +/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); +/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/now.js */ "./internal/now.js"); +/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl/index.js */ "./webgl/index.js"); +/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getLut.js */ "./rendering/getLut.js"); +/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ "./rendering/doesImageNeedToBeRendered.js"); +/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ "./rendering/initializeRenderCanvas.js"); +/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./saveLastRendered.js */ "./rendering/saveLastRendered.js"); +/* harmony import */ var _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../internal/getDisplayedArea.js */ "./internal/getDisplayedArea.js"); + + @@ -6624,12 +6771,12 @@ function getRenderCanvas(enabledElement, image, invalidated) { if (!enabledElement.renderingTools.renderCanvas || canvasWasColor) { enabledElement.renderingTools.renderCanvas = document.createElement('canvas'); - Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__["default"])(enabledElement, image); + Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_8__["default"])(enabledElement, image); } var renderCanvas = enabledElement.renderingTools.renderCanvas; - if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__["default"])(enabledElement, image) === false && invalidated !== true) { + if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_7__["default"])(enabledElement, image) === false && invalidated !== true) { return renderCanvas; } // If our render canvas does not match the size of this image reset it // NOTE: This might be inefficient if we are updating multiple images of different @@ -6637,26 +6784,26 @@ function getRenderCanvas(enabledElement, image, invalidated) { if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) { - Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__["default"])(enabledElement, image); + Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_8__["default"])(enabledElement, image); } // Get the lut to use - var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__["default"])(); - var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_5__["default"])(image, enabledElement.viewport, invalidated); + var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_4__["default"])(); + var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_6__["default"])(image, enabledElement.viewport, invalidated); image.stats = image.stats || {}; - image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__["default"])() - start; + image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_4__["default"])() - start; var renderCanvasData = enabledElement.renderingTools.renderCanvasData; var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // Gray scale image - apply the lut and put the resulting image onto the render canvas if (useAlphaChannel) { - Object(_internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__["default"])(image, lut, renderCanvasData.data); + Object(_internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_1__["default"])(image, lut, renderCanvasData.data); } else { - Object(_internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__["default"])(image, lut, renderCanvasData.data); + Object(_internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_2__["default"])(image, lut, renderCanvasData.data); } - start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__["default"])(); + start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_4__["default"])(); renderCanvasContext.putImageData(renderCanvasData, 0, 0); - image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__["default"])() - start; + image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_4__["default"])() - start; return renderCanvas; } /** @@ -6681,34 +6828,37 @@ function renderGrayscaleImage(enabledElement, invalidated) { } // Get the canvas context and reset the transform - var context = enabledElement.canvas.getContext('2d'); + var context = enabledElement.canvas.getContext('2d', { + desynchronized: true + }); context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas - context.fillStyle = 'black'; + context.fillStyle = Object(_internal_getFillStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(enabledElement); context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication; context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties - Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__["default"])(enabledElement, context); + Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_3__["default"])(enabledElement, context); var renderCanvas; if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') { // If this enabled element has the option set for WebGL, we should // User it as our renderer. - renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__["default"].renderer.render(enabledElement); + renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__["default"].renderer.render(enabledElement); } else { // If no options are set we will retrieve the renderCanvas through the // Normal Canvas rendering path renderCanvas = getRenderCanvas(enabledElement, image, invalidated); } - var sx = enabledElement.viewport.displayedArea.tlhc.x - 1; - var sy = enabledElement.viewport.displayedArea.tlhc.y - 1; - var width = enabledElement.viewport.displayedArea.brhc.x - sx; - var height = enabledElement.viewport.displayedArea.brhc.y - sy; - context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height); - enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__["default"])(enabledElement); + var imageDisplayedArea = Object(_internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_10__["default"])(enabledElement.image, enabledElement.viewport); + var sx = imageDisplayedArea.tlhc.x - 1; + var sy = imageDisplayedArea.tlhc.y - 1; + var width = imageDisplayedArea.brhc.x - sx; + var height = imageDisplayedArea.brhc.y - sy; + context.drawImage(renderCanvas, sx, sy, width, height, sx, sy, width, height); + enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_9__["default"])(enabledElement); } /** * API function to draw a grayscale image to a given layer @@ -6734,11 +6884,13 @@ function addGrayscaleLayer(layer, invalidated) { } layer.canvas = getRenderCanvas(layer, image, invalidated, useAlphaChannel); - var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport + var context = layer.canvas.getContext('2d', { + desynchronized: true + }); // Turn off image smooth/interpolation if pixelReplication is set in the viewport context.imageSmoothingEnabled = !layer.viewport.pixelReplication; context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; - layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__["default"])(layer); + layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_9__["default"])(layer); } /***/ }), @@ -6756,172 +6908,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addLabelMapLayer", function() { return addLabelMapLayer; }); /* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); /* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ "./internal/now.js"); -/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ "./rendering/initializeRenderCanvas.js"); -/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./saveLastRendered.js */ "./rendering/saveLastRendered.js"); -/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ "./rendering/doesImageNeedToBeRendered.js"); -/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataColorLUT.js */ "./internal/storedPixelDataToCanvasImageDataColorLUT.js"); -/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../colors/index.js */ "./colors/index.js"); - - - - - - - -/** - * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate - * it is returned, otherwise adjustments are made. It also sets the color transfer functions. - * - * @param {Object} enabledElement The cornerstone enabled element - * @param {Object} image The image to be rendered - * @param {Boolean} invalidated Is pixel data valid - * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image - * @memberof rendering - */ - -function getRenderCanvas(enabledElement, image, invalidated) { - if (!enabledElement.renderingTools.renderCanvas) { - enabledElement.renderingTools.renderCanvas = document.createElement('canvas'); - } - - var renderCanvas = enabledElement.renderingTools.renderCanvas; - var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap; - - if (enabledElement.options.colormap) { - console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead'); - } - - if (colormap && typeof colormap === 'string') { - colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_6__["default"].getColormap(colormap); - } - - if (!colormap) { - throw new Error('renderLabelMapImage: colormap not found.'); - } - - var colormapId = colormap.getId(); - - if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__["default"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) { - return renderCanvas; - } // If our render canvas does not match the size of this image reset it - // NOTE: This might be inefficient if we are updating multiple images of different - // Sizes frequently. - - - if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) { - Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__["default"])(enabledElement, image); - } // Get the lut to use - - - var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])(); - - if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) { - enabledElement.renderingTools.colorLut = colormap.createLookupTable(); - enabledElement.renderingTools.colormapId = colormapId; - } - - image.stats = image.stats || {}; - image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])() - start; - var colorLut = enabledElement.renderingTools.colorLut; - var renderCanvasData = enabledElement.renderingTools.renderCanvasData; - var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; - Object(_internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__["default"])(image, colorLut, renderCanvasData.data); - start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])(); - renderCanvasContext.putImageData(renderCanvasData, 0, 0); - image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])() - start; - return renderCanvas; -} -/** - * API function to draw a label map image to a given enabledElement - * - * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw - * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used - * @returns {void} - * @memberof rendering - */ - - -function renderLabelMapImage(enabledElement, invalidated) { - if (enabledElement === undefined) { - throw new Error('renderLabelMapImage: enabledElement parameter must not be undefined'); - } - - var image = enabledElement.image; - - if (image === undefined) { - throw new Error('renderLabelMapImage: image must be loaded before it can be drawn'); - } // Get the canvas context and reset the transform - - - var context = enabledElement.canvas.getContext('2d'); - context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas - - context.fillStyle = 'black'; - context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport - - context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication; - context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties - - Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__["default"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the - // Normal Canvas rendering path - // TODO: Add WebGL support for label map pipeline - - var renderCanvas = getRenderCanvas(enabledElement, image, invalidated); - var sx = enabledElement.viewport.displayedArea.tlhc.x - 1; - var sy = enabledElement.viewport.displayedArea.tlhc.y - 1; - var width = enabledElement.viewport.displayedArea.brhc.x - sx; - var height = enabledElement.viewport.displayedArea.brhc.y - sy; - context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height); - enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__["default"])(enabledElement); -} -/** - * API function to draw a pseudo-color image to a given layer - * - * @param {EnabledElementLayer} layer The layer that the image will be added to - * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used - * @returns {void} - */ - -function addLabelMapLayer(layer, invalidated) { - if (layer === undefined) { - throw new Error('addLabelMapLayer: layer parameter must not be undefined'); - } - - var image = layer.image; - - if (image === undefined) { - throw new Error('addLabelMapLayer: image must be loaded before it can be drawn'); - } - - layer.canvas = getRenderCanvas(layer, image, invalidated); - var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport - - context.imageSmoothingEnabled = !layer.viewport.pixelReplication; - context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; - layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__["default"])(layer); -} - -/***/ }), - -/***/ "./rendering/renderPseudoColorImage.js": -/*!*********************************************!*\ - !*** ./rendering/renderPseudoColorImage.js ***! - \*********************************************/ -/*! exports provided: renderPseudoColorImage, addPseudoColorLayer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderPseudoColorImage", function() { return renderPseudoColorImage; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addPseudoColorLayer", function() { return addPseudoColorLayer; }); -/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); -/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ "./internal/now.js"); -/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ "./rendering/initializeRenderCanvas.js"); -/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getLut.js */ "./rendering/getLut.js"); +/* harmony import */ var _internal_getFillStyle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/getFillStyle.js */ "./internal/getFillStyle.js"); +/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ "./rendering/initializeRenderCanvas.js"); /* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveLastRendered.js */ "./rendering/saveLastRendered.js"); /* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ "./rendering/doesImageNeedToBeRendered.js"); -/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ "./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js"); +/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataColorLUT.js */ "./internal/storedPixelDataToCanvasImageDataColorLUT.js"); /* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../colors/index.js */ "./colors/index.js"); +/* harmony import */ var _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../internal/getDisplayedArea.js */ "./internal/getDisplayedArea.js"); + @@ -6958,7 +6952,7 @@ function getRenderCanvas(enabledElement, image, invalidated) { } if (!colormap) { - throw new Error('renderPseudoColorImage: colormap not found.'); + throw new Error('renderLabelMapImage: colormap not found.'); } var colormapId = colormap.getId(); @@ -6971,7 +6965,178 @@ function getRenderCanvas(enabledElement, image, invalidated) { if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) { - Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__["default"])(enabledElement, image); + Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_3__["default"])(enabledElement, image); + } // Get the lut to use + + + var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])(); + + if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) { + enabledElement.renderingTools.colorLut = colormap.createLookupTable(); + enabledElement.renderingTools.colormapId = colormapId; + } + + image.stats = image.stats || {}; + image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])() - start; + var colorLut = enabledElement.renderingTools.colorLut; + var renderCanvasData = enabledElement.renderingTools.renderCanvasData; + var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; + Object(_internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__["default"])(image, colorLut, renderCanvasData.data); + start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])(); + renderCanvasContext.putImageData(renderCanvasData, 0, 0); + image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])() - start; + return renderCanvas; +} +/** + * API function to draw a label map image to a given enabledElement + * + * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw + * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used + * @returns {void} + * @memberof rendering + */ + + +function renderLabelMapImage(enabledElement, invalidated) { + if (enabledElement === undefined) { + throw new Error('renderLabelMapImage: enabledElement parameter must not be undefined'); + } + + var image = enabledElement.image; + + if (image === undefined) { + throw new Error('renderLabelMapImage: image must be loaded before it can be drawn'); + } // Get the canvas context and reset the transform + + + var context = enabledElement.canvas.getContext('2d', { + desynchronized: true + }); + context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas + + context.fillStyle = Object(_internal_getFillStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(enabledElement); + context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport + + context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication; + context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties + + Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__["default"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the + // Normal Canvas rendering path + // TODO: Add WebGL support for label map pipeline + + var renderCanvas = getRenderCanvas(enabledElement, image, invalidated); + var imageDisplayedArea = Object(_internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_8__["default"])(enabledElement.image, enabledElement.viewport); + var sx = imageDisplayedArea.tlhc.x - 1; + var sy = imageDisplayedArea.tlhc.y - 1; + var width = imageDisplayedArea.brhc.x - sx; + var height = imageDisplayedArea.brhc.y - sy; + context.drawImage(renderCanvas, sx, sy, width, height, sx, sy, width, height); + enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__["default"])(enabledElement); +} +/** + * API function to draw a pseudo-color image to a given layer + * + * @param {EnabledElementLayer} layer The layer that the image will be added to + * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used + * @returns {void} + */ + +function addLabelMapLayer(layer, invalidated) { + if (layer === undefined) { + throw new Error('addLabelMapLayer: layer parameter must not be undefined'); + } + + var image = layer.image; + + if (image === undefined) { + throw new Error('addLabelMapLayer: image must be loaded before it can be drawn'); + } + + layer.canvas = getRenderCanvas(layer, image, invalidated); + var context = layer.canvas.getContext('2d', { + desynchronized: true + }); // Turn off image smooth/interpolation if pixelReplication is set in the viewport + + context.imageSmoothingEnabled = !layer.viewport.pixelReplication; + context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; + layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__["default"])(layer); +} + +/***/ }), + +/***/ "./rendering/renderPseudoColorImage.js": +/*!*********************************************!*\ + !*** ./rendering/renderPseudoColorImage.js ***! + \*********************************************/ +/*! exports provided: renderPseudoColorImage, addPseudoColorLayer */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderPseudoColorImage", function() { return renderPseudoColorImage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addPseudoColorLayer", function() { return addPseudoColorLayer; }); +/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); +/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ "./internal/now.js"); +/* harmony import */ var _internal_getFillStyle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/getFillStyle.js */ "./internal/getFillStyle.js"); +/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ "./rendering/initializeRenderCanvas.js"); +/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getLut.js */ "./rendering/getLut.js"); +/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./saveLastRendered.js */ "./rendering/saveLastRendered.js"); +/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ "./rendering/doesImageNeedToBeRendered.js"); +/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ "./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js"); +/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../colors/index.js */ "./colors/index.js"); +/* harmony import */ var _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../internal/getDisplayedArea.js */ "./internal/getDisplayedArea.js"); + + + + + + + + + + +/** + * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate + * it is returned, otherwise adjustments are made. It also sets the color transfer functions. + * + * @param {Object} enabledElement The cornerstone enabled element + * @param {Object} image The image to be rendered + * @param {Boolean} invalidated Is pixel data valid + * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image + * @memberof rendering + */ + +function getRenderCanvas(enabledElement, image, invalidated) { + if (!enabledElement.renderingTools.renderCanvas) { + enabledElement.renderingTools.renderCanvas = document.createElement('canvas'); + } + + var renderCanvas = enabledElement.renderingTools.renderCanvas; + var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap; + + if (enabledElement.options && enabledElement.options.colormap) { + console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead'); + } + + if (colormap && typeof colormap === 'string') { + colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_8__["default"].getColormap(colormap); + } + + if (!colormap) { + throw new Error('renderPseudoColorImage: colormap not found.'); + } + + var colormapId = colormap.getId(); + + if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__["default"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) { + return renderCanvas; + } // If our render canvas does not match the size of this image reset it + // NOTE: This might be inefficient if we are updating multiple images of different + // Sizes frequently. + + + if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) { + Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_3__["default"])(enabledElement, image); } // Get the lut to use @@ -6983,13 +7148,13 @@ function getRenderCanvas(enabledElement, image, invalidated) { enabledElement.renderingTools.colormapId = colormapId; } - var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_3__["default"])(image, enabledElement.viewport, invalidated); + var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_4__["default"])(image, enabledElement.viewport, invalidated); image.stats = image.stats || {}; image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])() - start; var colorLut = enabledElement.renderingTools.colorLut; var renderCanvasData = enabledElement.renderingTools.renderCanvasData; var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; - Object(_internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__["default"])(image, lut, colorLut, renderCanvasData.data); + Object(_internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__["default"])(image, lut, colorLut, renderCanvasData.data); start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])(); renderCanvasContext.putImageData(renderCanvasData, 0, 0); image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__["default"])() - start; @@ -7017,10 +7182,12 @@ function renderPseudoColorImage(enabledElement, invalidated) { } // Get the canvas context and reset the transform - var context = enabledElement.canvas.getContext('2d'); + var context = enabledElement.canvas.getContext('2d', { + desynchronized: true + }); context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas - context.fillStyle = 'black'; + context.fillStyle = Object(_internal_getFillStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(enabledElement); context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication; @@ -7031,12 +7198,13 @@ function renderPseudoColorImage(enabledElement, invalidated) { // TODO: Add WebGL support for pseudocolor pipeline var renderCanvas = getRenderCanvas(enabledElement, image, invalidated); - var sx = enabledElement.viewport.displayedArea.tlhc.x - 1; - var sy = enabledElement.viewport.displayedArea.tlhc.y - 1; - var width = enabledElement.viewport.displayedArea.brhc.x - sx; - var height = enabledElement.viewport.displayedArea.brhc.y - sy; - context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height); - enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__["default"])(enabledElement); + var imageDisplayedArea = Object(_internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_9__["default"])(enabledElement.image, enabledElement.viewport); + var sx = imageDisplayedArea.tlhc.x - 1; + var sy = imageDisplayedArea.tlhc.y - 1; + var width = imageDisplayedArea.brhc.x - sx; + var height = imageDisplayedArea.brhc.y - sy; + context.drawImage(renderCanvas, sx, sy, width, height, sx, sy, width, height); + enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_5__["default"])(enabledElement); } /** * API function to draw a pseudo-color image to a given layer @@ -7058,11 +7226,13 @@ function addPseudoColorLayer(layer, invalidated) { } layer.canvas = getRenderCanvas(layer, image, invalidated); - var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport + var context = layer.canvas.getContext('2d', { + desynchronized: true + }); // Turn off image smooth/interpolation if pixelReplication is set in the viewport context.imageSmoothingEnabled = !layer.viewport.pixelReplication; context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; - layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__["default"])(layer); + layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_5__["default"])(layer); } /***/ }), @@ -7181,6 +7351,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderWebImage", function() { return renderWebImage; }); /* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ "./setToPixelCoordinateSystem.js"); /* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderColorImage.js */ "./rendering/renderColorImage.js"); +/* harmony import */ var _internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/getDisplayedArea.js */ "./internal/getDisplayedArea.js"); + /** @@ -7207,7 +7379,9 @@ function renderWebImage(enabledElement, invalidated) { if (enabledElement.viewport.voi.windowWidth === enabledElement.image.windowWidth && enabledElement.viewport.voi.windowCenter === enabledElement.image.windowCenter && enabledElement.viewport.invert === false) { // Get the canvas context and reset the transform - var context = enabledElement.canvas.getContext('2d'); + var context = enabledElement.canvas.getContext('2d', { + desynchronized: true + }); context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas context.fillStyle = 'black'; @@ -7217,11 +7391,12 @@ function renderWebImage(enabledElement, invalidated) { context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__["default"])(enabledElement, context); - var sx = enabledElement.viewport.displayedArea.tlhc.x - 1; - var sy = enabledElement.viewport.displayedArea.tlhc.y - 1; - var width = enabledElement.viewport.displayedArea.brhc.x - sx; - var height = enabledElement.viewport.displayedArea.brhc.y - sy; - context.drawImage(image.getImage(), sx, sy, width, height, 0, 0, width, height); + var imageDisplayedArea = Object(_internal_getDisplayedArea_js__WEBPACK_IMPORTED_MODULE_2__["default"])(enabledElement.image, enabledElement.viewport); + var sx = imageDisplayedArea.tlhc.x - 1; + var sy = imageDisplayedArea.tlhc.y - 1; + var width = imageDisplayedArea.brhc.x - sx; + var height = imageDisplayedArea.brhc.y - sy; + context.drawImage(image.getImage(), sx, sy, width, height, sx, sy, width, height); } else { Object(_renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__["renderColorImage"])(enabledElement, invalidated); } @@ -7267,6 +7442,372 @@ __webpack_require__.r(__webpack_exports__); /***/ }), +/***/ "./requestPool/RequestPoolManager.ts": +/*!*******************************************!*\ + !*** ./requestPool/RequestPoolManager.ts ***! + \*******************************************/ +/*! exports provided: RequestPoolManager */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RequestPoolManager", function() { return RequestPoolManager; }); +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var RequestPoolManager = /*#__PURE__*/function () { + // priority is fixed for interaction and thumbnail to be 0, however, + // the priority of prefetch can be configured and it can have priorities other + // than 0 (highest priority) + // TODO: Some of this stuff shouldn't be public but it's easier right now + function RequestPoolManager() { + _classCallCheck(this, RequestPoolManager); + + _defineProperty(this, "requestPool", void 0); + + _defineProperty(this, "awake", void 0); + + _defineProperty(this, "numRequests", void 0); + + _defineProperty(this, "maxNumRequests", void 0); + + _defineProperty(this, "grabDelay", void 0); + + _defineProperty(this, "timeoutHandle", void 0); + + this.requestPool = { + interaction: { + 0: [] + }, + thumbnail: { + 0: [] + }, + prefetch: { + 0: [] + } + }; + this.awake = false; + this.grabDelay = 5; + this.numRequests = { + interaction: 0, + thumbnail: 0, + prefetch: 0 + }; + this.maxNumRequests = { + interaction: 6, + thumbnail: 6, + prefetch: 5 + }; + } + + _createClass(RequestPoolManager, [{ + key: "destroy", + value: function destroy() { + if (this.timeoutHandle) { + window.clearTimeout(this.timeoutHandle); + } + } + /** + * Adds the requests to the pool of requests. + * + * @param requestFn - A function that returns a promise which resolves in the image + * @param type - Priority category, it can be either of interaction, prefetch, + * or thumbnail. + * @param additionalDetails - Additional details that requests can contain. + * For instance the volumeUID for the volume requests + * @param priority - Priority number for each category of requests. Its default + * value is priority 0. The lower the priority number, the higher the priority number + * + * @returns void + * + */ + + }, { + key: "addRequest", + value: function addRequest(requestFn, type, additionalDetails) { + var priority = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + var addToBeginning = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + // Describe the request + var requestDetails = { + requestFn: requestFn, + type: type, + additionalDetails: additionalDetails + }; // Check if the priority group exists on the request type + + if (this.requestPool[type][priority] === undefined) { + this.requestPool[type][priority] = []; + } // Adding the request to the correct priority group of the request type + + + if (addToBeginning) { + // Add it to the beginning of the stack + this.requestPool[type][priority].unshift(requestDetails); + } else { + // Add it to the end of the stack + this.requestPool[type][priority].push(requestDetails); + } // Wake up + + + if (!this.awake) { + this.awake = true; + this.startGrabbing(); + } + } + /** + * Filter the requestPoolManager's pool of request based on the result of + * provided filter function. The provided filter function needs to return false or true + * + * @param filterFunction The filter function for filtering of the requests to keep + * @category requestPool + */ + + }, { + key: "filterRequests", + value: function filterRequests(filterFunction) { + var _this = this; + + Object.keys(this.requestPool).forEach(function (type) { + var requestType = _this.requestPool[type]; + Object.keys(requestType).forEach(function (priority) { + requestType[priority] = requestType[priority].filter(function (requestDetails) { + return filterFunction(requestDetails); + }); + }); + }); + } + /** + * Clears the requests specific to the provided type. For instance, the + * pool of requests of type 'interaction' can be cleared via this function. + * + * + * @param type category of the request (either interaction, prefetch or thumbnail) + * @category requestPool + */ + + }, { + key: "clearRequestStack", + value: function clearRequestStack(type) { + if (!this.requestPool[type]) { + throw new Error("No category for the type ".concat(type, " found")); + } + + this.requestPool[type] = { + 0: [] + }; + } + }, { + key: "sendRequest", + value: function sendRequest(_ref) { + var _this2 = this; + + var requestFn = _ref.requestFn, + type = _ref.type; + // Increment the number of current requests of this type + this.numRequests[type]++; + this.awake = true; + requestFn()["finally"](function () { + _this2.numRequests[type]--; + + _this2.startAgain(); + }); + } + }, { + key: "startGrabbing", + value: function startGrabbing() { + // Begin by grabbing X images + // TODO: This is the reason things aren't going as fast as expected + // const maxSimultaneousRequests = getMaxSimultaneousRequests() + // this.maxNumRequests = { + // interaction: Math.max(maxSimultaneousRequests, 1), + // thumbnail: Math.max(maxSimultaneousRequests - 2, 1), + // prefetch: Math.max(maxSimultaneousRequests - 1, 1), + // } + var maxRequests = this.maxNumRequests.interaction + this.maxNumRequests.thumbnail + this.maxNumRequests.prefetch; + var currentRequests = this.numRequests.interaction + this.numRequests.thumbnail + this.numRequests.prefetch; + var requestsToSend = maxRequests - currentRequests; + + for (var i = 0; i < requestsToSend; i++) { + var _requestDetails = this.getNextRequest(); + + if (_requestDetails === false) { + break; + } else if (_requestDetails) { + this.sendRequest(_requestDetails); + } + } + } + }, { + key: "startAgain", + value: function startAgain() { + var _this3 = this; + + if (!this.awake) { + return; + } + + if (this.grabDelay) { + this.timeoutHandle = window.setTimeout(function () { + _this3.startGrabbing(); + }, this.grabDelay); + } else { + this.startGrabbing(); + } + } + }, { + key: "getSortedPriorityGroups", + value: function getSortedPriorityGroups(type) { + var _this4 = this; + + var priorities = Object.keys(this.requestPool[type]).map(Number).filter(function (priority) { + return _this4.requestPool[type][priority].length; + }).sort(); + return priorities; + } + }, { + key: "getNextRequest", + value: function getNextRequest() { + var interactionPriorities = this.getSortedPriorityGroups('interaction'); + + var _iterator = _createForOfIteratorHelper(interactionPriorities), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var priority = _step.value; + + if (this.requestPool.interaction[priority].length && this.numRequests.interaction < this.maxNumRequests.interaction) { + return this.requestPool.interaction[priority].shift(); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + var thumbnailPriorities = this.getSortedPriorityGroups('thumbnail'); + + var _iterator2 = _createForOfIteratorHelper(thumbnailPriorities), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _priority = _step2.value; + + if (this.requestPool.thumbnail[_priority].length && this.numRequests.thumbnail < this.maxNumRequests.thumbnail) { + return this.requestPool.thumbnail[_priority].shift(); + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + + var prefetchPriorities = this.getSortedPriorityGroups('prefetch'); + + var _iterator3 = _createForOfIteratorHelper(prefetchPriorities), + _step3; + + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var _priority2 = _step3.value; + + if (this.requestPool.prefetch[_priority2].length && this.numRequests.prefetch < this.maxNumRequests.prefetch) { + return this.requestPool.prefetch[_priority2].shift(); + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + + if (!interactionPriorities.length && !thumbnailPriorities.length && !prefetchPriorities.length) { + this.awake = false; + } + + return false; + } + /** + * Returns the request pool containing different categories, their priority and + * the added request details. + * + * @returns + * @category requestPool + */ + + }, { + key: "getRequestPool", + value: function getRequestPool() { + return this.requestPool; + } + }]); + + return RequestPoolManager; +}(); + + + +/***/ }), + +/***/ "./requestPool/imageLoadPoolManager.ts": +/*!*********************************************!*\ + !*** ./requestPool/imageLoadPoolManager.ts ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _RequestPoolManager_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RequestPoolManager.ts */ "./requestPool/RequestPoolManager.ts"); + // Loading = Retrieval + Decoding + +var imageLoadPoolManager = new _RequestPoolManager_ts__WEBPACK_IMPORTED_MODULE_0__["RequestPoolManager"](); +imageLoadPoolManager.maxNumRequests = { + interaction: 1000, + thumbnail: 1000, + prefetch: 1000 +}; +imageLoadPoolManager.grabDelay = 0; +/* harmony default export */ __webpack_exports__["default"] = (imageLoadPoolManager); + +/***/ }), + +/***/ "./requestPool/imageRetrievalPoolManager.ts": +/*!**************************************************!*\ + !*** ./requestPool/imageRetrievalPoolManager.ts ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _RequestPoolManager_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RequestPoolManager.ts */ "./requestPool/RequestPoolManager.ts"); + // Retrieval (usually) === XHR requests + +var imageRetrievalPoolManager = new _RequestPoolManager_ts__WEBPACK_IMPORTED_MODULE_0__["RequestPoolManager"](); +imageRetrievalPoolManager.maxNumRequests = { + interaction: 20, + thumbnail: 20, + prefetch: 20 +}; +imageRetrievalPoolManager.grabDelay = 0; +/* harmony default export */ __webpack_exports__["default"] = (imageRetrievalPoolManager); + +/***/ }), + /***/ "./reset.js": /*!******************!*\ !*** ./reset.js ***! @@ -7276,8 +7817,8 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ "./enabledElements.js"); -/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ "./internal/getDefaultViewport.js"); +/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ "./internal/getDefaultViewport.js"); +/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ "./enabledElements.js"); /* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ "./updateImage.js"); @@ -7290,8 +7831,8 @@ __webpack_require__.r(__webpack_exports__); */ /* harmony default export */ __webpack_exports__["default"] = (function (element) { - var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__["getEnabledElement"])(element); - enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__["default"])(enabledElement.canvas, enabledElement.image); + var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__["getEnabledElement"])(element); + enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__["default"])(enabledElement.canvas, enabledElement.image); Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element); }); @@ -7513,12 +8054,12 @@ var MIN_VIEWPORT_SCALE = 0.0001; if (enabledElement.viewport.voi.windowWidth) { - enabledElement.viewport.voi.windowWidth = Math.max(viewport.voi.windowWidth, MIN_WINDOW_WIDTH); + enabledElement.viewport.voi.windowWidth = Math.max(enabledElement.viewport.voi.windowWidth, MIN_WINDOW_WIDTH); } // Prevent scale from getting too small if (enabledElement.viewport.scale) { - enabledElement.viewport.scale = Math.max(viewport.scale, MIN_VIEWPORT_SCALE); + enabledElement.viewport.scale = Math.max(enabledElement.viewport.scale, MIN_VIEWPORT_SCALE); } // Normalize the rotation value to a positive rotation in degrees @@ -7598,11 +8139,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (function (element) { var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__["getEnabledElement"])(element); - - if (enabledElement.image === undefined && !enabledElement.layers.length) { - throw new Error('updateImage: image has not been loaded yet'); - } - Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__["default"])(enabledElement, invalidated); }); @@ -7818,6 +8354,7 @@ function initWebGL(canvas) { try { // Try to grab the standard context. If it fails, fallback to experimental. var options = { + desynchronized: true, preserveDrawingBuffer: true // Preserve buffer so we can copy to display canvas element }; // ---------------- Testing purposes ------------- diff --git a/server/src/main/resources/static/dcm/cornerstoneMath.js b/server/src/main/resources/static/dcm/cornerstoneMath.js index e3bc7bb8..fce80467 100644 --- a/server/src/main/resources/static/dcm/cornerstoneMath.js +++ b/server/src/main/resources/static/dcm/cornerstoneMath.js @@ -1,2084 +1,3 @@ -/*! cornerstone-math - 0.1.6 - 2017-06-09 | (c) 2017 Chris Hafey | https://github.com/chafey/cornerstoneTools */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define("cornerstoneMath", [], factory); - else if(typeof exports === 'object') - exports["cornerstoneMath"] = factory(); - else - root["cornerstoneMath"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 9); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -// Based on THREE.JS -function clamp(x, a, b) { - return x < a ? a : x > b ? b : x; -} - -function degToRad(degrees) { - var degreeToRadiansFactor = Math.PI / 180; - - return degrees * degreeToRadiansFactor; -} - -function radToDeg(radians) { - var radianToDegreesFactor = 180 / Math.PI; - - return radians * radianToDegreesFactor; -} - -// Returns sign of number -function sign(x) { - return typeof x === 'number' ? x ? x < 0 ? -1 : 1 : x === x ? 0 : NaN : NaN; -} - -exports.clamp = clamp; -exports.degToRad = degToRad; -exports.radToDeg = radToDeg; -exports.sign = sign; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _quaternion = __webpack_require__(3); - -var _quaternion2 = _interopRequireDefault(_quaternion); - -var _math = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Based on THREE.JS -var Vector3 = function Vector3(x, y, z) { - - this.x = x || 0; - this.y = y || 0; - this.z = z || 0; -}; - -Vector3.prototype = { - - constructor: Vector3, - - set: function set(x, y, z) { - - this.x = x; - this.y = y; - this.z = z; - - return this; - }, - setX: function setX(x) { - - this.x = x; - - return this; - }, - setY: function setY(y) { - - this.y = y; - - return this; - }, - setZ: function setZ(z) { - - this.z = z; - - return this; - }, - setComponent: function setComponent(index, value) { - - switch (index) { - - case 0: - this.x = value;break; - case 1: - this.y = value;break; - case 2: - this.z = value;break; - default: - throw new Error('index is out of range: ' + index); - - } - }, - getComponent: function getComponent(index) { - - switch (index) { - - case 0: - return this.x; - case 1: - return this.y; - case 2: - return this.z; - default: - throw new Error('index is out of range: ' + index); - - } - }, - copy: function copy(v) { - - this.x = v.x; - this.y = v.y; - this.z = v.z; - - return this; - }, - add: function add(v, w) { - - if (w !== undefined) { - - console.warn('DEPRECATED: Vector3\'s .add() now only accepts one argument. Use .addVectors( a, b ) instead.'); - - return this.addVectors(v, w); - } - - this.x += v.x; - this.y += v.y; - this.z += v.z; - - return this; - }, - addScalar: function addScalar(s) { - - this.x += s; - this.y += s; - this.z += s; - - return this; - }, - addVectors: function addVectors(a, b) { - - this.x = a.x + b.x; - this.y = a.y + b.y; - this.z = a.z + b.z; - - return this; - }, - sub: function sub(v, w) { - - if (w !== undefined) { - - console.warn('DEPRECATED: Vector3\'s .sub() now only accepts one argument. Use .subVectors( a, b ) instead.'); - - return this.subVectors(v, w); - } - - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - - return this; - }, - subVectors: function subVectors(a, b) { - - this.x = a.x - b.x; - this.y = a.y - b.y; - this.z = a.z - b.z; - - return this; - }, - multiply: function multiply(v, w) { - - if (w !== undefined) { - - console.warn('DEPRECATED: Vector3\'s .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.'); - - return this.multiplyVectors(v, w); - } - - this.x *= v.x; - this.y *= v.y; - this.z *= v.z; - - return this; - }, - multiplyScalar: function multiplyScalar(scalar) { - - this.x *= scalar; - this.y *= scalar; - this.z *= scalar; - - return this; - }, - multiplyVectors: function multiplyVectors(a, b) { - - this.x = a.x * b.x; - this.y = a.y * b.y; - this.z = a.z * b.z; - - return this; - }, - - - applyAxisAngle: function () { - - var quaternion = void 0; - - return function (axis, angle) { - - if (quaternion === undefined) { - quaternion = new _quaternion2.default(); - } - - this.applyQuaternion(quaternion.setFromAxisAngle(axis, angle)); - - return this; - }; - }(), - - applyMatrix3: function applyMatrix3(m) { - - var x = this.x; - var y = this.y; - var z = this.z; - - var e = m.elements; - - this.x = e[0] * x + e[3] * y + e[6] * z; - this.y = e[1] * x + e[4] * y + e[7] * z; - this.z = e[2] * x + e[5] * y + e[8] * z; - - return this; - }, - applyMatrix4: function applyMatrix4(m) { - - // Input: THREE.Matrix4 affine matrix - - var x = this.x, - y = this.y, - z = this.z; - - var e = m.elements; - - this.x = e[0] * x + e[4] * y + e[8] * z + e[12]; - this.y = e[1] * x + e[5] * y + e[9] * z + e[13]; - this.z = e[2] * x + e[6] * y + e[10] * z + e[14]; - - return this; - }, - applyProjection: function applyProjection(m) { - - // Input: THREE.Matrix4 projection matrix - - var x = this.x, - y = this.y, - z = this.z; - - var e = m.elements; - var d = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]); // Perspective divide - - this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * d; - this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * d; - this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * d; - - return this; - }, - applyQuaternion: function applyQuaternion(q) { - - var x = this.x; - var y = this.y; - var z = this.z; - - var qx = q.x; - var qy = q.y; - var qz = q.z; - var qw = q.w; - - // Calculate quat * vector - - var ix = qw * x + qy * z - qz * y; - var iy = qw * y + qz * x - qx * z; - var iz = qw * z + qx * y - qy * x; - var iw = -qx * x - qy * y - qz * z; - - // Calculate result * inverse quat - - this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy; - this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz; - this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx; - - return this; - }, - transformDirection: function transformDirection(m) { - - // Input: THREE.Matrix4 affine matrix - // Vector interpreted as a direction - - var x = this.x, - y = this.y, - z = this.z; - - var e = m.elements; - - this.x = e[0] * x + e[4] * y + e[8] * z; - this.y = e[1] * x + e[5] * y + e[9] * z; - this.z = e[2] * x + e[6] * y + e[10] * z; - - this.normalize(); - - return this; - }, - divide: function divide(v) { - - this.x /= v.x; - this.y /= v.y; - this.z /= v.z; - - return this; - }, - divideScalar: function divideScalar(scalar) { - - if (scalar !== 0) { - - var invScalar = 1 / scalar; - - this.x *= invScalar; - this.y *= invScalar; - this.z *= invScalar; - } else { - - this.x = 0; - this.y = 0; - this.z = 0; - } - - return this; - }, - min: function min(v) { - - if (this.x > v.x) { - - this.x = v.x; - } - - if (this.y > v.y) { - - this.y = v.y; - } - - if (this.z > v.z) { - - this.z = v.z; - } - - return this; - }, - max: function max(v) { - - if (this.x < v.x) { - - this.x = v.x; - } - - if (this.y < v.y) { - - this.y = v.y; - } - - if (this.z < v.z) { - - this.z = v.z; - } - - return this; - }, - clamp: function clamp(min, max) { - - // This function assumes min < max, if this assumption isn't true it will not operate correctly - - if (this.x < min.x) { - - this.x = min.x; - } else if (this.x > max.x) { - - this.x = max.x; - } - - if (this.y < min.y) { - - this.y = min.y; - } else if (this.y > max.y) { - - this.y = max.y; - } - - if (this.z < min.z) { - - this.z = min.z; - } else if (this.z > max.z) { - - this.z = max.z; - } - - return this; - }, - - - clampScalar: function () { - - var min = void 0, - max = void 0; - - return function (minVal, maxVal) { - - if (min === undefined) { - - min = new Vector3(); - max = new Vector3(); - } - - min.set(minVal, minVal, minVal); - max.set(maxVal, maxVal, maxVal); - - return this.clamp(min, max); - }; - }(), - - floor: function floor() { - - this.x = Math.floor(this.x); - this.y = Math.floor(this.y); - this.z = Math.floor(this.z); - - return this; - }, - ceil: function ceil() { - - this.x = Math.ceil(this.x); - this.y = Math.ceil(this.y); - this.z = Math.ceil(this.z); - - return this; - }, - round: function round() { - - this.x = Math.round(this.x); - this.y = Math.round(this.y); - this.z = Math.round(this.z); - - return this; - }, - roundToZero: function roundToZero() { - - this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x); - this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y); - this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z); - - return this; - }, - negate: function negate() { - - return this.multiplyScalar(-1); - }, - dot: function dot(v) { - - return this.x * v.x + this.y * v.y + this.z * v.z; - }, - lengthSq: function lengthSq() { - - return this.x * this.x + this.y * this.y + this.z * this.z; - }, - length: function length() { - - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); - }, - lengthManhattan: function lengthManhattan() { - - return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z); - }, - normalize: function normalize() { - - return this.divideScalar(this.length()); - }, - setLength: function setLength(l) { - - var oldLength = this.length(); - - if (oldLength !== 0 && l !== oldLength) { - - this.multiplyScalar(l / oldLength); - } - - return this; - }, - lerp: function lerp(v, alpha) { - - this.x += (v.x - this.x) * alpha; - this.y += (v.y - this.y) * alpha; - this.z += (v.z - this.z) * alpha; - - return this; - }, - cross: function cross(v, w) { - - if (w !== undefined) { - - console.warn('DEPRECATED: Vector3\'s .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.'); - - return this.crossVectors(v, w); - } - - var x = this.x, - y = this.y, - z = this.z; - - this.x = y * v.z - z * v.y; - this.y = z * v.x - x * v.z; - this.z = x * v.y - y * v.x; - - return this; - }, - crossVectors: function crossVectors(a, b) { - - var ax = a.x, - ay = a.y, - az = a.z; - var bx = b.x, - by = b.y, - bz = b.z; - - this.x = ay * bz - az * by; - this.y = az * bx - ax * bz; - this.z = ax * by - ay * bx; - - return this; - }, - - - projectOnVector: function () { - - var v1 = void 0, - dot = void 0; - - return function (vector) { - - if (v1 === undefined) { - v1 = new Vector3(); - } - - v1.copy(vector).normalize(); - - dot = this.dot(v1); - - return this.copy(v1).multiplyScalar(dot); - }; - }(), - - projectOnPlane: function () { - - var v1 = void 0; - - return function (planeNormal) { - - if (v1 === undefined) { - v1 = new Vector3(); - } - - v1.copy(this).projectOnVector(planeNormal); - - return this.sub(v1); - }; - }(), - - reflect: function () { - - // Reflect incident vector off plane orthogonal to normal - // Normal is assumed to have unit length - - var v1 = void 0; - - return function (normal) { - - if (v1 === undefined) { - v1 = new Vector3(); - } - - return this.sub(v1.copy(normal).multiplyScalar(2 * this.dot(normal))); - }; - }(), - - angleTo: function angleTo(v) { - - var theta = this.dot(v) / (this.length() * v.length()); - - // Clamp, to handle numerical problems - - return Math.acos((0, _math.clamp)(theta, -1, 1)); - }, - distanceTo: function distanceTo(v) { - - return Math.sqrt(this.distanceToSquared(v)); - }, - distanceToSquared: function distanceToSquared(v) { - - var dx = this.x - v.x; - var dy = this.y - v.y; - var dz = this.z - v.z; - - return dx * dx + dy * dy + dz * dz; - }, - setFromMatrixPosition: function setFromMatrixPosition(m) { - - this.x = m.elements[12]; - this.y = m.elements[13]; - this.z = m.elements[14]; - - return this; - }, - setFromMatrixScale: function setFromMatrixScale(m) { - - var sx = this.set(m.elements[0], m.elements[1], m.elements[2]).length(); - var sy = this.set(m.elements[4], m.elements[5], m.elements[6]).length(); - var sz = this.set(m.elements[8], m.elements[9], m.elements[10]).length(); - - this.x = sx; - this.y = sy; - this.z = sz; - - return this; - }, - setFromMatrixColumn: function setFromMatrixColumn(index, matrix) { - - var offset = index * 4; - - var me = matrix.elements; - - this.x = me[offset]; - this.y = me[offset + 1]; - this.z = me[offset + 2]; - - return this; - }, - equals: function equals(v) { - - return v.x === this.x && v.y === this.y && v.z === this.z; - }, - fromArray: function fromArray(array) { - - this.x = array[0]; - this.y = array[1]; - this.z = array[2]; - - return this; - }, - toArray: function toArray() { - - return [this.x, this.y, this.z]; - }, - clone: function clone() { - - return new Vector3(this.x, this.y, this.z); - } -}; - -exports.default = Vector3; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _math = __webpack_require__(0); - -// Based on http://stackoverflow.com/questions/849211/shortest-distance-between-a-point-and-a-line-segment -function sqr(x) { - return x * x; -} - -function dist2(v, w) { - return sqr(v.x - w.x) + sqr(v.y - w.y); -} - -function distanceToPointSquared(lineSegment, point) { - var l2 = dist2(lineSegment.start, lineSegment.end); - - if (l2 === 0) { - return dist2(point, lineSegment.start); - } - var t = ((point.x - lineSegment.start.x) * (lineSegment.end.x - lineSegment.start.x) + (point.y - lineSegment.start.y) * (lineSegment.end.y - lineSegment.start.y)) / l2; - - if (t < 0) { - return dist2(point, lineSegment.start); - } - if (t > 1) { - return dist2(point, lineSegment.end); - } - - var pt = { - x: lineSegment.start.x + t * (lineSegment.end.x - lineSegment.start.x), - y: lineSegment.start.y + t * (lineSegment.end.y - lineSegment.start.y) - }; - - return dist2(point, pt); -} - -function distanceToPoint(lineSegment, point) { - return Math.sqrt(distanceToPointSquared(lineSegment, point)); -} - -// Returns intersection points of two lines -function intersectLine(lineSegment1, lineSegment2) { - var intersectionPoint = {}; - - var x1 = lineSegment1.start.x, - y1 = lineSegment1.start.y, - x2 = lineSegment1.end.x, - y2 = lineSegment1.end.y, - x3 = lineSegment2.start.x, - y3 = lineSegment2.start.y, - x4 = lineSegment2.end.x, - y4 = lineSegment2.end.y; - - var a1 = void 0, - a2 = void 0, - b1 = void 0, - b2 = void 0, - c1 = void 0, - c2 = void 0; // Coefficients of line equations - var r1 = void 0, - r2 = void 0, - r3 = void 0, - r4 = void 0; // Sign values - - var denom = void 0, - num = void 0; // Intermediate values - - // Compute a1, b1, c1, where line joining points 1 and 2 is "a1 x + b1 y + c1 = 0" - a1 = y2 - y1; - b1 = x1 - x2; - c1 = x2 * y1 - x1 * y2; - - // Compute r3 and r4 - r3 = a1 * x3 + b1 * y3 + c1; - r4 = a1 * x4 + b1 * y4 + c1; - - /* Check signs of r3 and r4. If both point 3 and point 4 lie on - * same side of line 1, the line segments do not intersect. - */ - - if (r3 !== 0 && r4 !== 0 && (0, _math.sign)(r3) === (0, _math.sign)(r4)) { - return; - } - - /* Compute a2, b2, c2 */ - - a2 = y4 - y3; - b2 = x3 - x4; - c2 = x4 * y3 - x3 * y4; - - /* Compute r1 and r2 */ - - r1 = a2 * x1 + b2 * y1 + c2; - r2 = a2 * x2 + b2 * y2 + c2; - - /* Check signs of r1 and r2. If both point 1 and point 2 lie - * on same side of second line segment, the line segments do - * not intersect. - */ - - if (r1 !== 0 && r2 !== 0 && (0, _math.sign)(r1) === (0, _math.sign)(r2)) { - return; - } - - /* Line segments intersect: compute intersection point. - */ - - denom = a1 * b2 - a2 * b1; - - /* The denom/2 is to get rounding instead of truncating. It - * is added or subtracted to the numerator, depending upon the - * sign of the numerator. - */ - - num = b1 * c2 - b2 * c1; - var x = parseFloat(num / denom); - - num = a2 * c1 - a1 * c2; - var y = parseFloat(num / denom); - - intersectionPoint.x = x; - intersectionPoint.y = y; - - return intersectionPoint; -} - -// Module exports -var lineSegment = { - distanceToPoint: distanceToPoint, - intersectLine: intersectLine -}; - -exports.default = lineSegment; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var Quaternion = function Quaternion(x, y, z, w) { - this.x = x || 0; - this.y = y || 0; - this.z = z || 0; - this.w = w !== undefined ? w : 1; -}; - -Quaternion.prototype.setFromAxisAngle = function (axis, angle) { - var halfAngle = angle / 2, - s = Math.sin(halfAngle); - - this.x = axis.x * s; - this.y = axis.y * s; - this.z = axis.z * s; - this.w = Math.cos(halfAngle); - - return this; -}; - -Quaternion.prototype.multiplyQuaternions = function (a, b) { - var qax = a.x, - qay = a.y, - qaz = a.z, - qaw = a.w; - var qbx = b.x, - qby = b.y, - qbz = b.z, - qbw = b.w; - - this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; - this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; - this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; - this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; - - return this; -}; - -Quaternion.prototype.setFromRotationMatrix = function (m) { - var te = m.elements, - m11 = te[0], - m12 = te[4], - m13 = te[8], - m21 = te[1], - m22 = te[5], - m23 = te[9], - m31 = te[2], - m32 = te[6], - m33 = te[10], - trace = m11 + m22 + m33, - s = void 0; - - if (trace > 0) { - - s = 0.5 / Math.sqrt(trace + 1.0); - - this.w = 0.25 / s; - this.x = (m32 - m23) * s; - this.y = (m13 - m31) * s; - this.z = (m21 - m12) * s; - } else if (m11 > m22 && m11 > m33) { - - s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33); - - this.w = (m32 - m23) / s; - this.x = 0.25 * s; - this.y = (m12 + m21) / s; - this.z = (m13 + m31) / s; - } else if (m22 > m33) { - - s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33); - - this.w = (m13 - m31) / s; - this.x = (m12 + m21) / s; - this.y = 0.25 * s; - this.z = (m23 + m32) / s; - } else { - - s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22); - - this.w = (m21 - m12) / s; - this.x = (m13 + m31) / s; - this.y = (m23 + m32) / s; - this.z = 0.25 * s; - } - - return this; -}; - -exports.default = Quaternion; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _vector = __webpack_require__(1); - -var _vector2 = _interopRequireDefault(_vector); - -var _math = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -// Copied from THREE.JS -/** - * @author bhouston / http://exocortex.com - */ - -var Line3 = function () { - function Line3(start, end) { - _classCallCheck(this, Line3); - - this.start = start !== undefined ? start : new _vector2.default(); - this.end = end !== undefined ? end : new _vector2.default(); - } - - _createClass(Line3, [{ - key: 'set', - value: function set(start, end) { - - this.start.copy(start); - this.end.copy(end); - - return this; - } - }, { - key: 'copy', - value: function copy(line) { - - this.start.copy(line.start); - this.end.copy(line.end); - - return this; - } - }, { - key: 'center', - value: function center(optionalTarget) { - - var result = optionalTarget || new _vector2.default(); - - return result.addVectors(this.start, this.end).multiplyScalar(0.5); - } - }, { - key: 'delta', - value: function delta(optionalTarget) { - - var result = optionalTarget || new _vector2.default(); - - return result.subVectors(this.end, this.start); - } - }, { - key: 'distanceSq', - value: function distanceSq() { - - return this.start.distanceToSquared(this.end); - } - }, { - key: 'distance', - value: function distance() { - - return this.start.distanceTo(this.end); - } - }, { - key: 'at', - value: function at(t, optionalTarget) { - - var result = optionalTarget || new _vector2.default(); - - return this.delta(result).multiplyScalar(t).add(this.start); - } - }, { - key: 'closestPointToPointParameter', - value: function closestPointToPointParameter() { - - var startP = new _vector2.default(); - var startEnd = new _vector2.default(); - - return function (point, clampToLine) { - - startP.subVectors(point, this.start); - startEnd.subVectors(this.end, this.start); - - var startEnd2 = startEnd.dot(startEnd); - var startEnd_startP = startEnd.dot(startP); - - var t = startEnd_startP / startEnd2; - - if (clampToLine) { - - t = (0, _math.clamp)(t, 0, 1); - } - - return t; - }; - } - }, { - key: 'closestPointToPoint', - value: function closestPointToPoint(point, clampToLine, optionalTarget) { - - var t = this.closestPointToPointParameter(point, clampToLine); - - var result = optionalTarget || new _vector2.default(); - - return this.delta(result).multiplyScalar(t).add(this.start); - } - }, { - key: 'applyMatrix4', - value: function applyMatrix4(matrix) { - - this.start.applyMatrix4(matrix); - this.end.applyMatrix4(matrix); - - return this; - } - }, { - key: 'equals', - value: function equals(line) { - - return line.start.equals(this.start) && line.end.equals(this.end); - } - }, { - key: 'clone', - value: function clone() { - - return new Line3().copy(this); - } - }, { - key: 'intersectLine', - value: function intersectLine(line) { - // http://stackoverflow.com/questions/2316490/the-algorithm-to-find-the-point-of-intersection-of-two-3d-line-segment/10288710#10288710 - var da = this.end.clone().sub(this.start); - var db = line.end.clone().sub(line.start); - var dc = line.start.clone().sub(this.start); - - var daCrossDb = da.clone().cross(db); - var dcCrossDb = dc.clone().cross(db); - - if (dc.dot(da) === 0) { - // Lines are not coplanar, stop here - return; - } - - var s = dcCrossDb.dot(daCrossDb) / daCrossDb.lengthSq(); - - // Make sure we have an intersection - if (s > 1.0 || isNaN(s)) { - return; - } - - var intersection = this.start.clone().add(da.clone().multiplyScalar(s)); - var distanceTest = intersection.clone().sub(line.start).lengthSq() + intersection.clone().sub(line.end).lengthSq(); - - if (distanceTest <= line.distanceSq()) { - return intersection; - } - - return; - } - }]); - - return Line3; -}(); - -exports.default = Line3; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _vector = __webpack_require__(1); - -var _vector2 = _interopRequireDefault(_vector); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Based on THREE.JS -var Matrix4 = function Matrix4(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) { - this.elements = new Float32Array(16); - - // TODO: if n11 is undefined, then just set to identity, otherwise copy all other values into matrix - // We should not support semi specification of Matrix4, it is just weird. - - var te = this.elements; - - te[0] = n11 !== undefined ? n11 : 1;te[4] = n12 || 0;te[8] = n13 || 0;te[12] = n14 || 0; - te[1] = n21 || 0;te[5] = n22 !== undefined ? n22 : 1;te[9] = n23 || 0;te[13] = n24 || 0; - te[2] = n31 || 0;te[6] = n32 || 0;te[10] = n33 !== undefined ? n33 : 1;te[14] = n34 || 0; - te[3] = n41 || 0;te[7] = n42 || 0;te[11] = n43 || 0;te[15] = n44 !== undefined ? n44 : 1; -}; - -Matrix4.prototype.makeRotationFromQuaternion = function (q) { - var te = this.elements; - - var x = q.x, - y = q.y, - z = q.z, - w = q.w; - var x2 = x + x, - y2 = y + y, - z2 = z + z; - var xx = x * x2, - xy = x * y2, - xz = x * z2; - var yy = y * y2, - yz = y * z2, - zz = z * z2; - var wx = w * x2, - wy = w * y2, - wz = w * z2; - - te[0] = 1 - (yy + zz); - te[4] = xy - wz; - te[8] = xz + wy; - - te[1] = xy + wz; - te[5] = 1 - (xx + zz); - te[9] = yz - wx; - - te[2] = xz - wy; - te[6] = yz + wx; - te[10] = 1 - (xx + yy); - - // Last column - te[3] = 0; - te[7] = 0; - te[11] = 0; - - // Bottom row - te[12] = 0; - te[13] = 0; - te[14] = 0; - te[15] = 1; - - return this; -}; - -Matrix4.prototype.multiplyMatrices = function (a, b) { - var ae = a.elements; - var be = b.elements; - var te = this.elements; - - var a11 = ae[0], - a12 = ae[4], - a13 = ae[8], - a14 = ae[12]; - var a21 = ae[1], - a22 = ae[5], - a23 = ae[9], - a24 = ae[13]; - var a31 = ae[2], - a32 = ae[6], - a33 = ae[10], - a34 = ae[14]; - var a41 = ae[3], - a42 = ae[7], - a43 = ae[11], - a44 = ae[15]; - - var b11 = be[0], - b12 = be[4], - b13 = be[8], - b14 = be[12]; - var b21 = be[1], - b22 = be[5], - b23 = be[9], - b24 = be[13]; - var b31 = be[2], - b32 = be[6], - b33 = be[10], - b34 = be[14]; - var b41 = be[3], - b42 = be[7], - b43 = be[11], - b44 = be[15]; - - te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; - te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; - te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; - te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; - - te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; - te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; - te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; - te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; - - te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; - te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; - te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; - te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; - - te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; - te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; - te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; - te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; - - return this; -}; - -Matrix4.prototype.multiply = function (m, n) { - - if (n !== undefined) { - - console.warn('DEPRECATED: Matrix4\'s .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.'); - - return this.multiplyMatrices(m, n); - } - - return this.multiplyMatrices(this, m); -}; - -Matrix4.prototype.getInverse = function (m, throwOnInvertible) { - - // Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm - var te = this.elements; - var me = m.elements; - - var n11 = me[0], - n12 = me[4], - n13 = me[8], - n14 = me[12]; - var n21 = me[1], - n22 = me[5], - n23 = me[9], - n24 = me[13]; - var n31 = me[2], - n32 = me[6], - n33 = me[10], - n34 = me[14]; - var n41 = me[3], - n42 = me[7], - n43 = me[11], - n44 = me[15]; - - te[0] = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44; - te[4] = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44; - te[8] = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44; - te[12] = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; - te[1] = n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44; - te[5] = n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44; - te[9] = n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44; - te[13] = n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34; - te[2] = n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44; - te[6] = n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44; - te[10] = n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44; - te[14] = n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34; - te[3] = n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43; - te[7] = n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43; - te[11] = n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43; - te[15] = n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33; - - var det = n11 * te[0] + n21 * te[4] + n31 * te[8] + n41 * te[12]; - - if (det === 0) { - - var msg = 'Matrix4.getInverse(): can\'t invert matrix, determinant is 0'; - - if (throwOnInvertible || false) { - - throw new Error(msg); - } else { - - console.warn(msg); - } - - this.identity(); - - return this; - } - - this.multiplyScalar(1 / det); - - return this; -}; - -Matrix4.prototype.applyToVector3Array = function () { - - var v1 = new _vector2.default(); - - return function (array, offset, length) { - - if (offset === undefined) { - offset = 0; - } - if (length === undefined) { - length = array.length; - } - - for (var i = 0, j = offset; i < length; i += 3, j += 3) { - - v1.x = array[j]; - v1.y = array[j + 1]; - v1.z = array[j + 2]; - - v1.applyMatrix4(this); - - array[j] = v1.x; - array[j + 1] = v1.y; - array[j + 2] = v1.z; - } - - return array; - }; -}; - -Matrix4.prototype.makeTranslation = function (x, y, z) { - - this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1); - - return this; -}; -Matrix4.prototype.multiplyScalar = function (s) { - - var te = this.elements; - - te[0] *= s;te[4] *= s;te[8] *= s;te[12] *= s; - te[1] *= s;te[5] *= s;te[9] *= s;te[13] *= s; - te[2] *= s;te[6] *= s;te[10] *= s;te[14] *= s; - te[3] *= s;te[7] *= s;te[11] *= s;te[15] *= s; - - return this; -}; -Matrix4.prototype.set = function (n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) { - - var te = this.elements; - - te[0] = n11;te[4] = n12;te[8] = n13;te[12] = n14; - te[1] = n21;te[5] = n22;te[9] = n23;te[13] = n24; - te[2] = n31;te[6] = n32;te[10] = n33;te[14] = n34; - te[3] = n41;te[7] = n42;te[11] = n43;te[15] = n44; - - return this; -}; - -Matrix4.prototype.makeScale = function (x, y, z) { - - this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1); - - return this; -}; - -exports.default = Matrix4; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _vector = __webpack_require__(1); - -var _vector2 = _interopRequireDefault(_vector); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Copied from Three.JS -/** - * @author bhouston / http://exocortex.com - */ - -var Plane = function Plane(normal, constant) { - - this.normal = normal !== undefined ? normal : new _vector2.default(1, 0, 0); - this.constant = constant !== undefined ? constant : 0; -}; - -Plane.prototype = { - - constructor: Plane, - - set: function set(normal, constant) { - - this.normal.copy(normal); - this.constant = constant; - - return this; - }, - setComponents: function setComponents(x, y, z, w) { - - this.normal.set(x, y, z); - this.constant = w; - - return this; - }, - setFromNormalAndCoplanarPoint: function setFromNormalAndCoplanarPoint(normal, point) { - - this.normal.copy(normal); - this.constant = -point.dot(this.normal); // Must be this.normal, not normal, as this.normal is normalized - - return this; - }, - - - setFromCoplanarPoints: function () { - - var v1 = new _vector2.default(); - var v2 = new _vector2.default(); - - return function (a, b, c) { - - var normal = v1.subVectors(c, b).cross(v2.subVectors(a, b)).normalize(); - - // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? - - this.setFromNormalAndCoplanarPoint(normal, a); - - return this; - }; - }(), - - copy: function copy(plane) { - - this.normal.copy(plane.normal); - this.constant = plane.constant; - - return this; - }, - normalize: function normalize() { - - // Note: will lead to a divide by zero if the plane is invalid. - - var inverseNormalLength = 1.0 / this.normal.length(); - - this.normal.multiplyScalar(inverseNormalLength); - this.constant *= inverseNormalLength; - - return this; - }, - negate: function negate() { - - this.constant *= -1; - this.normal.negate(); - - return this; - }, - distanceToPoint: function distanceToPoint(point) { - - return this.normal.dot(point) + this.constant; - }, - distanceToSphere: function distanceToSphere(sphere) { - - return this.distanceToPoint(sphere.center) - sphere.radius; - }, - projectPoint: function projectPoint(point, optionalTarget) { - - return this.orthoPoint(point, optionalTarget).sub(point).negate(); - }, - orthoPoint: function orthoPoint(point, optionalTarget) { - - var perpendicularMagnitude = this.distanceToPoint(point); - - var result = optionalTarget || new _vector2.default(); - - return result.copy(this.normal).multiplyScalar(perpendicularMagnitude); - }, - isIntersectionLine: function isIntersectionLine(line) { - - // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. - - var startSign = this.distanceToPoint(line.start); - var endSign = this.distanceToPoint(line.end); - - return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0; - }, - - - intersectLine: function () { - - var v1 = new _vector2.default(); - - return function (line, optionalTarget) { - - var result = optionalTarget || new _vector2.default(); - - var direction = line.delta(v1); - - var denominator = this.normal.dot(direction); - - if (denominator === 0) { - - // Line is coplanar, return origin - if (this.distanceToPoint(line.start) === 0) { - - return result.copy(line.start); - } - - // Unsure if this is the correct method to handle this case. - return undefined; - } - - var t = -(line.start.dot(this.normal) + this.constant) / denominator; - - if (t < 0 || t > 1) { - - return undefined; - } - - return result.copy(direction).multiplyScalar(t).add(line.start); - }; - }(), - - intersectPlane: function intersectPlane(targetPlane) { - // Returns the intersection line between two planes - var direction = this.normal.clone().cross(targetPlane.normal); - var origin = new _vector2.default(); - var intersectionData = { - origin: origin, - direction: direction - }; - - // If the planes are parallel, return an empty vector for the - // Intersection line - if (this.normal.clone().cross(targetPlane.normal).length < 1e-10) { - intersectionData.direction = new _vector2.default(); - - return intersectionData; - } - - var h1 = this.constant; - var h2 = targetPlane.constant; - var n1dotn2 = this.normal.clone().dot(targetPlane.normal); - - var c1 = -(h1 - h2 * n1dotn2) / (1 - n1dotn2 * n1dotn2); - var c2 = -(h2 - h1 * n1dotn2) / (1 - n1dotn2 * n1dotn2); - - intersectionData.origin = this.normal.clone().multiplyScalar(c1).add(targetPlane.normal.clone().multiplyScalar(c2)); - - return intersectionData; - }, - coplanarPoint: function coplanarPoint(optionalTarget) { - - var result = optionalTarget || new _vector2.default(); - - return result.copy(this.normal).multiplyScalar(-this.constant); - }, - translate: function translate(offset) { - - this.constant = this.constant - offset.dot(this.normal); - - return this; - }, - equals: function equals(plane) { - - return plane.normal.equals(this.normal) && plane.constant === this.constant; - }, - clone: function clone() { - - return new Plane().copy(this); - } -}; - -exports.default = Plane; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -function pageToPoint(e) { - return { - x: e.pageX, - y: e.pageY - }; -} - -function subtract(lhs, rhs) { - return { - x: lhs.x - rhs.x, - y: lhs.y - rhs.y - }; -} - -function copy(point) { - return { - x: point.x, - y: point.y - }; -} - -function distance(from, to) { - return Math.sqrt(distanceSquared(from, to)); -} - -function distanceSquared(from, to) { - var delta = subtract(from, to); - - return delta.x * delta.x + delta.y * delta.y; -} - -function insideRect(point, rect) { - if (point.x < rect.left || point.x > rect.left + rect.width || point.y < rect.top || point.y > rect.top + rect.height) { - return false; - } - - return true; -} - -/** - * Returns the closest source point to a target point - * given an array of source points. - * - * @param sources An Array of source Points - * @param target The target Point - * @returns Point The closest point from the points array - */ -function findClosestPoint(sources, target) { - var distances = []; - var minDistance = void 0; - - sources.forEach(function (source, index) { - var d = distance(source, target); - - distances.push(d); - - if (index === 0) { - minDistance = d; - } else { - minDistance = Math.min(d, minDistance); - } - }); - - var index = distances.indexOf(minDistance); - - return sources[index]; -} - -var point = { - subtract: subtract, - copy: copy, - pageToPoint: pageToPoint, - distance: distance, - distanceSquared: distanceSquared, - insideRect: insideRect, - findClosestPoint: findClosestPoint -}; - -exports.default = point; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _lineSegment = __webpack_require__(2); - -var _lineSegment2 = _interopRequireDefault(_lineSegment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function rectToLineSegments(rect) { - var top = { - start: { - x: rect.left, - y: rect.top - }, - end: { - x: rect.left + rect.width, - y: rect.top - - } - }; - var right = { - start: { - x: rect.left + rect.width, - y: rect.top - }, - end: { - x: rect.left + rect.width, - y: rect.top + rect.height - - } - }; - var bottom = { - start: { - x: rect.left + rect.width, - y: rect.top + rect.height - }, - end: { - x: rect.left, - y: rect.top + rect.height - - } - }; - var left = { - start: { - x: rect.left, - y: rect.top + rect.height - }, - end: { - x: rect.left, - y: rect.top - - } - }; - var lineSegments = [top, right, bottom, left]; - - return lineSegments; -} - -function distanceToPoint(rect, point) { - var minDistance = 655535; - var lineSegments = rectToLineSegments(rect); - - lineSegments.forEach(function (segment) { - var distance = _lineSegment2.default.distanceToPoint(segment, point); - - if (distance < minDistance) { - minDistance = distance; - } - }); - - return minDistance; -} - -// Returns top-left and bottom-right points of the rectangle -function rectToPoints(rect) { - var rectPoints = { - topLeft: { - x: rect.left, - y: rect.top - }, - bottomRight: { - x: rect.left + rect.width, - y: rect.top + rect.height - } - }; - - return rectPoints; -} - -// Returns whether two non-rotated rectangles are intersected -function doesIntersect(rect1, rect2) { - var intersectLeftRight = void 0; - var intersectTopBottom = void 0; - - var rect1Points = rectToPoints(rect1); - var rect2Points = rectToPoints(rect2); - - if (rect1.width >= 0) { - if (rect2.width >= 0) { - intersectLeftRight = !(rect1Points.bottomRight.x <= rect2Points.topLeft.x || rect2Points.bottomRight.x <= rect1Points.topLeft.x); - } else { - intersectLeftRight = !(rect1Points.bottomRight.x <= rect2Points.bottomRight.x || rect2Points.topLeft.x <= rect1Points.topLeft.x); - } - } else if (rect2.width >= 0) { - intersectLeftRight = !(rect1Points.topLeft.x <= rect2Points.topLeft.x || rect2Points.bottomRight.x <= rect1Points.bottomRight.x); - } else { - intersectLeftRight = !(rect1Points.topLeft.x <= rect2Points.bottomRight.x || rect2Points.topLeft.x <= rect1Points.bottomRight.x); - } - - if (rect1.height >= 0) { - if (rect2.height >= 0) { - intersectTopBottom = !(rect1Points.bottomRight.y <= rect2Points.topLeft.y || rect2Points.bottomRight.y <= rect1Points.topLeft.y); - } else { - intersectTopBottom = !(rect1Points.bottomRight.y <= rect2Points.bottomRight.y || rect2Points.topLeft.y <= rect1Points.topLeft.y); - } - } else if (rect2.height >= 0) { - intersectTopBottom = !(rect1Points.topLeft.y <= rect2Points.topLeft.y || rect2Points.bottomRight.y <= rect1Points.bottomRight.y); - } else { - intersectTopBottom = !(rect1Points.topLeft.y <= rect2Points.bottomRight.y || rect2Points.top <= rect1Points.bottomRight.y); - } - - return intersectLeftRight && intersectTopBottom; -} - -// Returns intersection points of two non-rotated rectangles -function getIntersectionRect(rect1, rect2) { - var intersectRect = { - topLeft: {}, - bottomRight: {} - }; - - if (!doesIntersect(rect1, rect2)) { - return; - } - - var rect1Points = rectToPoints(rect1); - var rect2Points = rectToPoints(rect2); - - if (rect1.width >= 0) { - if (rect2.width >= 0) { - intersectRect.topLeft.x = Math.max(rect1Points.topLeft.x, rect2Points.topLeft.x); - intersectRect.bottomRight.x = Math.min(rect1Points.bottomRight.x, rect2Points.bottomRight.x); - } else { - intersectRect.topLeft.x = Math.max(rect1Points.topLeft.x, rect2Points.bottomRight.x); - intersectRect.bottomRight.x = Math.min(rect1Points.bottomRight.x, rect2Points.topLeft.x); - } - } else if (rect2.width >= 0) { - intersectRect.topLeft.x = Math.min(rect1Points.topLeft.x, rect2Points.bottomRight.x); - intersectRect.bottomRight.x = Math.max(rect1Points.bottomRight.x, rect2Points.topLeft.x); - } else { - intersectRect.topLeft.x = Math.min(rect1Points.topLeft.x, rect2Points.topLeft.x); - intersectRect.bottomRight.x = Math.max(rect1Points.bottomRight.x, rect2Points.bottomRight.x); - } - - if (rect1.height >= 0) { - if (rect2.height >= 0) { - intersectRect.topLeft.y = Math.max(rect1Points.topLeft.y, rect2Points.topLeft.y); - intersectRect.bottomRight.y = Math.min(rect1Points.bottomRight.y, rect2Points.bottomRight.y); - } else { - intersectRect.topLeft.y = Math.max(rect1Points.topLeft.y, rect2Points.bottomRight.y); - intersectRect.bottomRight.y = Math.min(rect1Points.bottomRight.y, rect2Points.topLeft.y); - } - } else if (rect2.height >= 0) { - intersectRect.topLeft.y = Math.min(rect1Points.topLeft.y, rect2Points.bottomRight.y); - intersectRect.bottomRight.y = Math.max(rect1Points.bottomRight.y, rect2Points.topLeft.y); - } else { - intersectRect.topLeft.y = Math.min(rect1Points.topLeft.y, rect2Points.topLeft.y); - intersectRect.bottomRight.y = Math.max(rect1Points.bottomRight.y, rect2Points.bottomRight.y); - } - - // Returns top-left and bottom-right points of intersected rectangle - return intersectRect; -} - -var rect = { - distanceToPoint: distanceToPoint, - getIntersectionRect: getIntersectionRect -}; - -exports.default = rect; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _Line = __webpack_require__(4); - -Object.defineProperty(exports, 'Line3', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_Line).default; - } -}); - -var _lineSegment = __webpack_require__(2); - -Object.defineProperty(exports, 'lineSegment', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_lineSegment).default; - } -}); - -var _math = __webpack_require__(0); - -Object.defineProperty(exports, 'clamp', { - enumerable: true, - get: function get() { - return _math.clamp; - } -}); -Object.defineProperty(exports, 'degToRad', { - enumerable: true, - get: function get() { - return _math.degToRad; - } -}); -Object.defineProperty(exports, 'radToDeg', { - enumerable: true, - get: function get() { - return _math.radToDeg; - } -}); -Object.defineProperty(exports, 'sign', { - enumerable: true, - get: function get() { - return _math.sign; - } -}); - -var _matrix = __webpack_require__(5); - -Object.defineProperty(exports, 'Matrix4', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_matrix).default; - } -}); - -var _plane = __webpack_require__(6); - -Object.defineProperty(exports, 'Plane', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_plane).default; - } -}); - -var _point = __webpack_require__(7); - -Object.defineProperty(exports, 'point', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_point).default; - } -}); - -var _quaternion = __webpack_require__(3); - -Object.defineProperty(exports, 'quaternion', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_quaternion).default; - } -}); - -var _rect = __webpack_require__(8); - -Object.defineProperty(exports, 'rect', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_rect).default; - } -}); - -var _vector = __webpack_require__(1); - -Object.defineProperty(exports, 'Vector3', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_vector).default; - } -}); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/***/ }) -/******/ ]); -}); -//# sourceMappingURL=cornerstoneMath.js.map \ No newline at end of file +/*! cornerstone-math - 0.1.10 - 2022-06-09 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneMath */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("cornerstone-math",[],e):"object"==typeof exports?exports["cornerstone-math"]=e():t.cornerstoneMath=e()}(window,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;nt.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this}},{key:"max",value:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}},{key:"negate",value:function(){return this.multiplyScalar(-1)}},{key:"dot",value:function(t){return this.x*t.x+this.y*t.y+this.z*t.z}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y+this.z*this.z}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}},{key:"lengthManhattan",value:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}},{key:"normalize",value:function(){return this.divideScalar(this.length())}},{key:"setLength",value:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this}},{key:"lerp",value:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}},{key:"cross",value:function(t,e){if(void 0!==e)return console.warn("DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e);var n=this.x,i=this.y,r=this.z;return this.x=i*t.z-r*t.y,this.y=r*t.x-n*t.z,this.z=n*t.y-i*t.x,this}},{key:"crossVectors",value:function(t,e){var n=t.x,i=t.y,r=t.z,o=e.x,s=e.y,a=e.z;return this.x=i*a-r*s,this.y=r*o-n*a,this.z=n*s-i*o,this}},{key:"angleTo",value:function(t){var e=this.dot(t)/(this.length()*t.length());return Math.acos((0,o.clamp)(e,-1,1))}},{key:"distanceTo",value:function(t){return Math.sqrt(this.distanceToSquared(t))}},{key:"distanceToSquared",value:function(t){var e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}},{key:"setFromMatrixPosition",value:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this}},{key:"setFromMatrixScale",value:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),n=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),i=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=n,this.z=i,this}},{key:"setFromMatrixColumn",value:function(t,e){var n=4*t,i=e.elements;return this.x=i[n],this.y=i[n+1],this.z=i[n+2],this}},{key:"equals",value:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}},{key:"fromArray",value:function(t){return this.x=t[0],this.y=t[1],this.z=t[2],this}},{key:"toArray",value:function(){return[this.x,this.y,this.z]}},{key:"clone",value:function(){return new t(this.x,this.y,this.z)}}]),t}();s.prototype.projectOnVector=function(){var t=void 0,e=void 0;return function(n){return void 0===t&&(t=new s),t.copy(n).normalize(),e=this.dot(t),this.copy(t).multiplyScalar(e)}}(),s.prototype.projectOnPlane=function(){var t=void 0;return function(e){return void 0===t&&(t=new s),t.copy(this).projectOnVector(e),this.sub(t)}}(),s.prototype.reflect=function(){var t=void 0;return function(e){return void 0===t&&(t=new s),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),s.prototype.clampScalar=function(){var t=void 0,e=void 0;return function(n,i){return void 0===t&&(t=new s,e=new s),t.set(n,n,n),e.set(i,i,i),this.clamp(t,e)}}(),s.prototype.applyAxisAngle=function(){var t=void 0;return function(e,n){return void 0===t&&(t=new r.default),this.applyQuaternion(t.setFromAxisAngle(e.normalize(),n)),this}}(),e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=1e-4;e.clamp=function(t,e,n){return tn?n:t},e.degToRad=function(t){return t*(Math.PI/180)},e.approximatelyEquals=function(t,e,n){var r=n||i;return Math.abs(t-e)<=r*Math.max(1,Math.abs(t),Math.abs(e))},e.radToDeg=function(t){return t*(180/Math.PI)},e.sign=function(t){return"number"==typeof t?t?t<0?-1:1:t==t?0:NaN:NaN}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n0?(y=.5/Math.sqrt(c+1),this.w=.25/y,this.x=(h-a)*y,this.y=(r-u)*y,this.z=(o-i)*y):n>s&&n>l?(y=2*Math.sqrt(1+n-s-l),this.w=(h-a)/y,this.x=.25*y,this.y=(i+o)/y,this.z=(r+u)/y):s>l?(y=2*Math.sqrt(1+s-n-l),this.w=(r-u)/y,this.x=(i+o)/y,this.y=.25*y,this.z=(a+h)/y):(y=2*Math.sqrt(1+l-n-s),this.w=(o-i)/y,this.x=(r+u)/y,this.y=(a+h)/y,this.z=.25*y),this}}]),t}();e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(1);function r(t){return t*t}function o(t,e){return r(t.x-e.x)+r(t.y-e.y)}var s={distanceToPoint:function(t,e){return Math.sqrt(function(t,e){var n=o(t.start,t.end);if(0===n)return o(e,t.start);var i=((e.x-t.start.x)*(t.end.x-t.start.x)+(e.y-t.start.y)*(t.end.y-t.start.y))/n;return o(e,i<0?t.start:i>1?t.end:{x:t.start.x+i*(t.end.x-t.start.x),y:t.start.y+i*(t.end.y-t.start.y)})}(t,e))},intersectLine:function(t,e){var n,r,o,s,a,u,h,l,c,y,f,d={},v=t.start.x,p=t.start.y,x=t.end.x,m=t.end.y,g=e.start.x,b=e.start.y,z=e.end.x,k=e.end.y,M=void 0;if(y=(n=m-p)*z+(o=v-x)*k+(a=x*p-v*m),(0===(c=n*g+o*b+a)||0===y||(0,i.sign)(c)!==(0,i.sign)(y))&&(l=(r=k-b)*x+(s=g-z)*m+(u=z*b-g*k),0===(h=r*v+s*p+u)||0===l||(0,i.sign)(h)!==(0,i.sign)(l))){f=n*s-r*o,M=o*u-s*a;var w=parseFloat(M/f);M=r*a-n*u;var P=parseFloat(M/f);return d.x=w,d.y=P,d}}};e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Vector3=e.rect=e.quaternion=e.point=e.Plane=e.Matrix4=e.sign=e.radToDeg=e.degToRad=e.clamp=e.lineSegment=e.Line3=void 0;var i=y(n(5)),r=y(n(3)),o=n(1),s=y(n(6)),a=y(n(7)),u=y(n(8)),h=y(n(2)),l=y(n(9)),c=y(n(0));function y(t){return t&&t.__esModule?t:{default:t}}var f={Line3:i.default,lineSegment:r.default,clamp:o.clamp,degToRad:o.degToRad,radToDeg:o.radToDeg,sign:o.sign,Matrix4:s.default,Plane:a.default,point:u.default,quaternion:h.default,rect:l.default,Vector3:c.default};e.Line3=i.default,e.lineSegment=r.default,e.clamp=o.clamp,e.degToRad=o.degToRad,e.radToDeg=o.radToDeg,e.sign=o.sign,e.Matrix4=s.default,e.Plane=a.default,e.point=u.default,e.quaternion=h.default,e.rect=l.default,e.Vector3=c.default,e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n1||isNaN(u))){var h=this.start.clone().add(e.clone().multiplyScalar(u));return h.clone().sub(t.start).lengthSq()+h.clone().sub(t.end).lengthSq()<=t.distanceSq()?h:void 0}}}}]),t}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n0||n<0&&e>0}},{key:"intersectPlane",value:function(t){var e=this.normal.clone().cross(t.normal),n={origin:new r.default,direction:e};if(this.normal.clone().cross(t.normal).length<1e-10)return n.direction=new r.default,n;var i=this.constant,o=t.constant,s=this.normal.clone().dot(t.normal),a=-(i-o*s)/(1-s*s),u=-(o-i*s)/(1-s*s);return n.origin=this.normal.clone().multiplyScalar(a).add(t.normal.clone().multiplyScalar(u)),n}},{key:"coplanarPoint",value:function(t){return(t||new r.default).copy(this.normal).multiplyScalar(-this.constant)}},{key:"translate",value:function(t){return this.constant=this.constant-t.dot(this.normal),this}},{key:"equals",value:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant}},{key:"clone",value:function(){return(new t).copy(this)}}]),t}();o.prototype.setFromCoplanarPoints=function(){var t=new r.default,e=new r.default;return function(n,i,r){var o=t.subVectors(r,i).cross(e.subVectors(n,i)).normalize();return this.setFromNormalAndCoplanarPoint(o,n),this}}(),o.prototype.intersectLine=function(){var t=new r.default;return function(e,n){var i=n||new r.default,o=e.delta(t),s=this.normal.dot(o);if(0===s)return 0===this.distanceToPoint(e.start)?i.copy(e.start):void 0;var a=-(e.start.dot(this.normal)+this.constant)/s;return a<0||a>1?void 0:i.copy(o).multiplyScalar(a).add(e.start)}}(),e.default=o},function(t,e,n){"use strict";function i(t,e){return{x:t.x-e.x,y:t.y-e.y}}function r(t,e){return Math.sqrt(o(t,e))}function o(t,e){var n=i(t,e);return n.x*n.x+n.y*n.y}Object.defineProperty(e,"__esModule",{value:!0});var s={subtract:i,copy:function(t){return{x:t.x,y:t.y}},pageToPoint:function(t){return{x:t.pageX,y:t.pageY}},distance:r,distanceSquared:o,insideRect:function(t,e){return!(t.xe.left+e.width||t.ye.top+e.height)},findClosestPoint:function(t,e){var n=[],i=void 0;return t.forEach(function(t,o){var s=r(t,e);n.push(s),i=0===o?s:Math.min(s,i)}),t[n.indexOf(i)]}};e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(t){return t&&t.__esModule?t:{default:t}}(n(3));function r(t){return{topLeft:{x:t.left,y:t.top},bottomRight:{x:t.left+t.width,y:t.top+t.height}}}var o={distanceToPoint:function(t,e){var n=655535;return function(t){return[{start:{x:t.left,y:t.top},end:{x:t.left+t.width,y:t.top}},{start:{x:t.left+t.width,y:t.top},end:{x:t.left+t.width,y:t.top+t.height}},{start:{x:t.left+t.width,y:t.top+t.height},end:{x:t.left,y:t.top+t.height}},{start:{x:t.left,y:t.top+t.height},end:{x:t.left,y:t.top}}]}(t).forEach(function(t){var r=i.default.distanceToPoint(t,e);r=0?e.width>=0?!(o.bottomRight.x<=s.topLeft.x||s.bottomRight.x<=o.topLeft.x):!(o.bottomRight.x<=s.bottomRight.x||s.topLeft.x<=o.topLeft.x):e.width>=0?!(o.topLeft.x<=s.topLeft.x||s.bottomRight.x<=o.bottomRight.x):!(o.topLeft.x<=s.bottomRight.x||s.topLeft.x<=o.bottomRight.x),i=t.height>=0?e.height>=0?!(o.bottomRight.y<=s.topLeft.y||s.bottomRight.y<=o.topLeft.y):!(o.bottomRight.y<=s.bottomRight.y||s.topLeft.y<=o.topLeft.y):e.height>=0?!(o.topLeft.y<=s.topLeft.y||s.bottomRight.y<=o.bottomRight.y):!(o.topLeft.y<=s.bottomRight.y||s.top<=o.bottomRight.y),n&&i}(t,e)){var i=r(t),o=r(e);return t.width>=0?e.width>=0?(n.topLeft.x=Math.max(i.topLeft.x,o.topLeft.x),n.bottomRight.x=Math.min(i.bottomRight.x,o.bottomRight.x)):(n.topLeft.x=Math.max(i.topLeft.x,o.bottomRight.x),n.bottomRight.x=Math.min(i.bottomRight.x,o.topLeft.x)):e.width>=0?(n.topLeft.x=Math.min(i.topLeft.x,o.bottomRight.x),n.bottomRight.x=Math.max(i.bottomRight.x,o.topLeft.x)):(n.topLeft.x=Math.min(i.topLeft.x,o.topLeft.x),n.bottomRight.x=Math.max(i.bottomRight.x,o.bottomRight.x)),t.height>=0?e.height>=0?(n.topLeft.y=Math.max(i.topLeft.y,o.topLeft.y),n.bottomRight.y=Math.min(i.bottomRight.y,o.bottomRight.y)):(n.topLeft.y=Math.max(i.topLeft.y,o.bottomRight.y),n.bottomRight.y=Math.min(i.bottomRight.y,o.topLeft.y)):e.height>=0?(n.topLeft.y=Math.min(i.topLeft.y,o.bottomRight.y),n.bottomRight.y=Math.max(i.bottomRight.y,o.topLeft.y)):(n.topLeft.y=Math.min(i.topLeft.y,o.topLeft.y),n.bottomRight.y=Math.max(i.bottomRight.y,o.bottomRight.y)),n}}};e.default=o}])}); +//# sourceMappingURL=cornerstoneMath.min.js.map \ No newline at end of file diff --git a/server/src/main/resources/static/dcm/cornerstoneTools.js b/server/src/main/resources/static/dcm/cornerstoneTools.js index 1852f921..63661ff1 100644 --- a/server/src/main/resources/static/dcm/cornerstoneTools.js +++ b/server/src/main/resources/static/dcm/cornerstoneTools.js @@ -1,4 +1,4 @@ -/*! cornerstone-tools - 4.0.0-beta6 - 2019-09-06 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */ +/*! cornerstone-tools - 6.0.9 - 2023-03-27 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); @@ -22,20 +22,20 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ // eslint-disable-next-line no-unused-vars /******/ function hotDownloadUpdateChunk(chunkId) { -/******/ var head = document.getElementsByTagName("head")[0]; /******/ var script = document.createElement("script"); /******/ script.charset = "utf-8"; /******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; -/******/ ; -/******/ head.appendChild(script); +/******/ if (null) script.crossOrigin = null; +/******/ document.head.appendChild(script); /******/ } /******/ /******/ // eslint-disable-next-line no-unused-vars /******/ function hotDownloadManifest(requestTimeout) { /******/ requestTimeout = requestTimeout || 10000; /******/ return new Promise(function(resolve, reject) { -/******/ if (typeof XMLHttpRequest === "undefined") +/******/ if (typeof XMLHttpRequest === "undefined") { /******/ return reject(new Error("No browser support")); +/******/ } /******/ try { /******/ var request = new XMLHttpRequest(); /******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; @@ -73,12 +73,15 @@ return /******/ (function(modules) { // webpackBootstrap /******/ } /******/ /******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "30d63fc1ffe03077e2da"; // eslint-disable-line no-unused-vars +/******/ // eslint-disable-next-line no-unused-vars +/******/ var hotCurrentHash = "1df8937449c88a7d5c59"; /******/ var hotRequestTimeout = 10000; /******/ var hotCurrentModuleData = {}; -/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars -/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars +/******/ var hotCurrentChildModule; +/******/ // eslint-disable-next-line no-unused-vars +/******/ var hotCurrentParents = []; +/******/ // eslint-disable-next-line no-unused-vars +/******/ var hotCurrentParentsTemp = []; /******/ /******/ // eslint-disable-next-line no-unused-vars /******/ function hotCreateRequire(moduleId) { @@ -87,13 +90,16 @@ return /******/ (function(modules) { // webpackBootstrap /******/ var fn = function(request) { /******/ if (me.hot.active) { /******/ if (installedModules[request]) { -/******/ if (installedModules[request].parents.indexOf(moduleId) === -1) +/******/ if (installedModules[request].parents.indexOf(moduleId) === -1) { /******/ installedModules[request].parents.push(moduleId); +/******/ } /******/ } else { /******/ hotCurrentParents = [moduleId]; /******/ hotCurrentChildModule = request; /******/ } -/******/ if (me.children.indexOf(request) === -1) me.children.push(request); +/******/ if (me.children.indexOf(request) === -1) { +/******/ me.children.push(request); +/******/ } /******/ } else { /******/ console.warn( /******/ "[HMR] unexpected require(" + @@ -120,7 +126,8 @@ return /******/ (function(modules) { // webpackBootstrap /******/ for (var name in __webpack_require__) { /******/ if ( /******/ Object.prototype.hasOwnProperty.call(__webpack_require__, name) && -/******/ name !== "e" +/******/ name !== "e" && +/******/ name !== "t" /******/ ) { /******/ Object.defineProperty(fn, name, ObjectFactory(name)); /******/ } @@ -145,6 +152,10 @@ return /******/ (function(modules) { // webpackBootstrap /******/ } /******/ } /******/ }; +/******/ fn.t = function(value, mode) { +/******/ if (mode & 1) value = fn(value); +/******/ return __webpack_require__.t(value, mode & ~1); +/******/ }; /******/ return fn; /******/ } /******/ @@ -162,7 +173,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ // Module API /******/ active: true, /******/ accept: function(dep, callback) { -/******/ if (typeof dep === "undefined") hot._selfAccepted = true; +/******/ if (dep === undefined) hot._selfAccepted = true; /******/ else if (typeof dep === "function") hot._selfAccepted = dep; /******/ else if (typeof dep === "object") /******/ for (var i = 0; i < dep.length; i++) @@ -170,7 +181,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ else hot._acceptedDependencies[dep] = callback || function() {}; /******/ }, /******/ decline: function(dep) { -/******/ if (typeof dep === "undefined") hot._selfDeclined = true; +/******/ if (dep === undefined) hot._selfDeclined = true; /******/ else if (typeof dep === "object") /******/ for (var i = 0; i < dep.length; i++) /******/ hot._declinedDependencies[dep[i]] = true; @@ -235,8 +246,9 @@ return /******/ (function(modules) { // webpackBootstrap /******/ } /******/ /******/ function hotCheck(apply) { -/******/ if (hotStatus !== "idle") +/******/ if (hotStatus !== "idle") { /******/ throw new Error("check() is only allowed in idle status"); +/******/ } /******/ hotApplyOnUpdate = apply; /******/ hotSetStatus("check"); /******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) { @@ -258,8 +270,8 @@ return /******/ (function(modules) { // webpackBootstrap /******/ }); /******/ hotUpdate = {}; /******/ var chunkId = "cornerstoneTools"; +/******/ // eslint-disable-next-line no-lone-blocks /******/ { -/******/ // eslint-disable-line no-lone-blocks /******/ /*globals chunkId */ /******/ hotEnsureUpdateChunk(chunkId); /******/ } @@ -346,7 +358,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ var outdatedModules = [updateModuleId]; /******/ var outdatedDependencies = {}; /******/ -/******/ var queue = outdatedModules.slice().map(function(id) { +/******/ var queue = outdatedModules.map(function(id) { /******/ return { /******/ chain: [id], /******/ id: id @@ -523,12 +535,15 @@ return /******/ (function(modules) { // webpackBootstrap /******/ moduleId = outdatedModules[i]; /******/ if ( /******/ installedModules[moduleId] && -/******/ installedModules[moduleId].hot._selfAccepted -/******/ ) +/******/ installedModules[moduleId].hot._selfAccepted && +/******/ // removed self-accepted modules should not be required +/******/ appliedUpdate[moduleId] !== warnUnexpectedRequire +/******/ ) { /******/ outdatedSelfAcceptedModules.push({ /******/ module: moduleId, /******/ errorHandler: installedModules[moduleId].hot._selfAccepted /******/ }); +/******/ } /******/ } /******/ /******/ // Now in "dispose" phase @@ -595,7 +610,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ } /******/ } /******/ -/******/ // Not in "apply" phase +/******/ // Now in "apply" phase /******/ hotSetStatus("apply"); /******/ /******/ hotCurrentHash = hotUpdateNewHash; @@ -739,19 +754,34 @@ return /******/ (function(modules) { // webpackBootstrap /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? @@ -923,6 +953,32 @@ module.exports = _createClass; /***/ }), +/***/ "../node_modules/@babel/runtime/helpers/defineProperty.js": +/*!****************************************************************!*\ + !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +module.exports = _defineProperty; + +/***/ }), + /***/ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! @@ -1173,559 +1229,6 @@ module.exports = _typeof; module.exports = __webpack_require__(/*! regenerator-runtime */ "../node_modules/regenerator-runtime/runtime-module.js"); -/***/ }), - -/***/ "../node_modules/debug/src/browser.js": -/*!********************************************!*\ - !*** ../node_modules/debug/src/browser.js ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(process) {/* eslint-env browser */ - -/** - * This is the web browser implementation of `debug()`. - */ - -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); - - if (!this.useColors) { - return; - } - - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); - - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ -function log(...args) { - // This hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return typeof console === 'object' && - console.log && - console.log(...args); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug'); - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -module.exports = __webpack_require__(/*! ./common */ "../node_modules/debug/src/common.js")(exports); - -const {formatters} = module.exports; - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ "../node_modules/process/browser.js"))) - -/***/ }), - -/***/ "../node_modules/debug/src/common.js": -/*!*******************************************!*\ - !*** ../node_modules/debug/src/common.js ***! - \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ - -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = __webpack_require__(/*! ms */ "../node_modules/ms/index.js"); - - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); - - /** - * Active `debug` instances. - */ - createDebug.instances = []; - - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; - - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; - - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; - - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } - - const self = debug; - - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } - - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return match; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); - - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); - - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = createDebug.enabled(namespace); - debug.useColors = createDebug.useColors(); - debug.color = selectColor(namespace); - debug.destroy = destroy; - debug.extend = extend; - // Debug.formatArgs = formatArgs; - // debug.rawLog = rawLog; - - // env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - createDebug.instances.push(debug); - - return debug; - } - - function destroy() { - const index = createDebug.instances.indexOf(this); - if (index !== -1) { - createDebug.instances.splice(index, 1); - return true; - } - return false; - } - - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); - - createDebug.names = []; - createDebug.skips = []; - - let i; - const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - const len = split.length; - - for (i = 0; i < len; i++) { - if (!split[i]) { - // ignore empty strings - continue; - } - - namespaces = split[i].replace(/\*/g, '.*?'); - - if (namespaces[0] === '-') { - createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - createDebug.names.push(new RegExp('^' + namespaces + '$')); - } - } - - for (i = 0; i < createDebug.instances.length; i++) { - const instance = createDebug.instances[i]; - instance.enabled = createDebug.enabled(instance.namespace); - } - } - - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names.map(toNamespace), - ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } - - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } - - let i; - let len; - - for (i = 0, len = createDebug.skips.length; i < len; i++) { - if (createDebug.skips[i].test(name)) { - return false; - } - } - - for (i = 0, len = createDebug.names.length; i < len; i++) { - if (createDebug.names[i].test(name)) { - return true; - } - } - - return false; - } - - /** - * Convert regexp to namespace - * - * @param {RegExp} regxep - * @return {String} namespace - * @api private - */ - function toNamespace(regexp) { - return regexp.toString() - .substring(2, regexp.toString().length - 2) - .replace(/\.\*\?$/, '*'); - } - - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } - - createDebug.enable(createDebug.load()); - - return createDebug; -} - -module.exports = setup; - - /***/ }), /***/ "../node_modules/ms/index.js": @@ -1765,7 +1268,7 @@ module.exports = function(val, options) { var type = typeof val; if (type === 'string' && val.length > 0) { return parse(val); - } else if (type === 'number' && isNaN(val) === false) { + } else if (type === 'number' && isFinite(val)) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( @@ -1787,7 +1290,7 @@ function parse(str) { if (str.length > 100) { return; } - var match = /^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( str ); if (!match) { @@ -2929,10 +2432,11 @@ __webpack_require__.r(__webpack_exports__); * @param {Object} end The end position. * @param {string} color The color of the arrow. * @param {number} lineWidth The width of the arrow line. + * @param {number[] | undefined} [lineDash] The optional lineDash style. * @returns {undefined} */ -/* harmony default export */ __webpack_exports__["default"] = (function (context, start, end, color, lineWidth) { +/* harmony default export */ __webpack_exports__["default"] = (function (context, start, end, color, lineWidth, lineDash) { // Variables to be used when creating the arrow var headLength = 10; var angle = Math.atan2(end.y - start.y, end.x - start.x); // Starting path of the arrow from the start square to the end square and drawing the stroke @@ -2941,6 +2445,11 @@ __webpack_require__.r(__webpack_exports__); color: color, lineWidth: lineWidth }; + + if (lineDash) { + options.lineDash = lineDash; + } + Object(_drawLine_js__WEBPACK_IMPORTED_MODULE_0__["default"])(context, undefined, start, end, options, 'canvas'); options = { color: color, @@ -3139,12 +2648,22 @@ __webpack_require__.r(__webpack_exports__); return "continue"; } + if (options.hideHandlesIfMoving && handle.moving) { + return "continue"; + } + var lineWidth = handle.active ? _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"].getActiveWidth() : _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"].getToolWidth(); var fillStyle = options.fill; - Object(_path_js__WEBPACK_IMPORTED_MODULE_3__["default"])(context, { + var pathOptions = { lineWidth: lineWidth, fillStyle: fillStyle - }, function (context) { + }; + + if (options.lineDash) { + pathOptions.lineDash = options.lineDash; + } + + Object(_path_js__WEBPACK_IMPORTED_MODULE_3__["default"])(context, pathOptions, function (context) { var handleCanvasCoords = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.pixelToCanvas(element, handle); // Handle's radisu, then tool's radius, then default radius var handleRadius = handle.radius || options.handleRadius || _store_index_js__WEBPACK_IMPORTED_MODULE_4__["state"].handleRadius; @@ -3382,6 +2901,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); /* harmony import */ var _drawTextBox_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drawTextBox.js */ "./drawing/drawTextBox.js"); /* harmony import */ var _drawLink_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./drawLink.js */ "./drawing/drawLink.js"); +/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../store/index.js */ "./store/index.js"); +/* harmony import */ var _util_clip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/clip.js */ "./util/clip.js"); + + @@ -3405,9 +2928,9 @@ __webpack_require__.r(__webpack_exports__); */ /* harmony default export */ __webpack_exports__["default"] = (function (context, element, textBox, text, handles, textBoxAnchorPoints, color, lineWidth, xOffset, yCenter) { - var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone; // Convert the textbox Image coordinates into Canvas coordinates + var pixelToCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.pixelToCanvas; // Convert the textbox Image coordinates into Canvas coordinates - var textCoords = cornerstone.pixelToCanvas(element, textBox); + var textCoords = pixelToCanvas(element, textBox); if (xOffset) { textCoords.x += xOffset; @@ -3418,14 +2941,21 @@ __webpack_require__.r(__webpack_exports__); x: false, y: yCenter } - }; // Draw the text box + }; // Clip the bounding box to the displayed area of the image + + if (_store_index_js__WEBPACK_IMPORTED_MODULE_3__["state"].preventTextBoxOutsideDisplayedArea) { + options.displacer = function (box) { + return Object(_util_clip_js__WEBPACK_IMPORTED_MODULE_4__["clipBoxToDisplayedArea"])(element, box); + }; + } // Draw the text box + textBox.boundingBox = Object(_drawTextBox_js__WEBPACK_IMPORTED_MODULE_1__["default"])(context, text, textCoords.x, textCoords.y, color, options); if (textBox.hasMoved) { // Identify the possible anchor points for the tool -> text line var linkAnchorPoints = textBoxAnchorPoints(handles).map(function (h) { - return cornerstone.pixelToCanvas(element, h); + return pixelToCanvas(element, h); }); // Draw dashed link line between tool and text Object(_drawLink_js__WEBPACK_IMPORTED_MODULE_2__["default"])(linkAnchorPoints, textCoords, textBox.boundingBox, context, color, lineWidth); @@ -3523,11 +3053,8 @@ __webpack_require__.r(__webpack_exports__); Object(_path_js__WEBPACK_IMPORTED_MODULE_1__["default"])(context, options, function (context) { context.moveTo(corner1.x, corner1.y); context.lineTo(corner3.x, corner3.y); - context.moveTo(corner3.x, corner3.y); context.lineTo(corner2.x, corner2.y); - context.moveTo(corner2.x, corner2.y); context.lineTo(corner4.x, corner4.y); - context.moveTo(corner4.x, corner4.y); context.lineTo(corner1.x, corner1.y); }); }); @@ -3592,10 +3119,14 @@ function textBoxWidth(context, text, padding) { * @param {number} y The y position of the textBox. * @param {string} color The color of the textBox. * @param {Object} options Options for the textBox. + * @param {boolean} options.centering Option to center the textbox. + * @param {function} options.displacer displacer function. * @returns {Object} {top, left, width, height} - Bounding box; can be used for pointNearTool */ -/* harmony default export */ __webpack_exports__["default"] = (function (context, textLines, x, y, color, options) { +/* harmony default export */ __webpack_exports__["default"] = (function (context, textLines, x, y, color) { + var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {}; + if (Object.prototype.toString.call(textLines) !== '[object Array]') { textLines = [textLines]; } @@ -3619,18 +3150,24 @@ function textBoxWidth(context, text, padding) { Object(_draw_js__WEBPACK_IMPORTED_MODULE_1__["default"])(context, function (context) { context.strokeStyle = color; // Draw the background box with padding - if (options && options.centering && options.centering.x === true) { - x -= boundingBox.width / 2; - } + if (options.centering) { + if (options.centering.x === true) { + x -= boundingBox.width / 2; + } - if (options && options.centering && options.centering.y === true) { - y -= boundingBox.height / 2; + if (options.centering.y === true) { + y -= boundingBox.height / 2; + } } boundingBox.left = x; - boundingBox.top = y; - var fillStyle = options && options.debug === true ? '#FF0000' : backgroundColor; - Object(_fillBox_js__WEBPACK_IMPORTED_MODULE_3__["default"])(context, boundingBox, fillStyle); // Draw each of the text lines on top of the background box + boundingBox.top = y; // Check if a displacer function was provided + + if (typeof options.displacer === 'function') { + options.displacer(boundingBox); + } + + Object(_fillBox_js__WEBPACK_IMPORTED_MODULE_3__["default"])(context, boundingBox, backgroundColor); // Draw each of the text lines on top of the background box Object(_fillTextLines_js__WEBPACK_IMPORTED_MODULE_2__["default"])(context, boundingBox, textLines, color, padding); }); // Return the bounding box so it can be used for pointNearHandle @@ -4086,13 +3623,14 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../store/index.js */ "./store/index.js"); -/* harmony import */ var _eventListeners_onImageRenderedBrushEventHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventListeners/onImageRenderedBrushEventHandler.js */ "./eventListeners/onImageRenderedBrushEventHandler.js"); -/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _stateManagement_toolState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stateManagement/toolState */ "./stateManagement/toolState.js"); +/* harmony import */ var _eventListeners_onImageRenderedBrushEventHandler_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../eventListeners/onImageRenderedBrushEventHandler.js */ "./eventListeners/onImageRenderedBrushEventHandler.js"); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../externalModules.js */ "./externalModules.js"); + var segmentationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'); -var segmentationConfiguration = segmentationModule.configuration; var onImageRendered = function onImageRendered(evt) { var eventData = evt.detail; @@ -4100,25 +3638,31 @@ var onImageRendered = function onImageRendered(evt) { var toolsToRender = _store_index_js__WEBPACK_IMPORTED_MODULE_0__["state"].tools.filter(function (tool) { return tool.element === element && (tool.mode === 'active' || tool.mode === 'passive' || tool.mode === 'enabled'); - }); + }); // Must be using stacks in order to use segmentation tools. - if (segmentationConfiguration.renderFill || segmentationConfiguration.renderOutline) { - Object(_eventListeners_onImageRenderedBrushEventHandler_js__WEBPACK_IMPORTED_MODULE_1__["default"])(evt); + var stackToolState = Object(_stateManagement_toolState__WEBPACK_IMPORTED_MODULE_1__["getToolState"])(element, 'stack'); + var segmentationConfiguration = segmentationModule.configuration; + + if (stackToolState && (segmentationConfiguration.renderFill || segmentationConfiguration.renderOutline)) { + Object(_eventListeners_onImageRenderedBrushEventHandler_js__WEBPACK_IMPORTED_MODULE_2__["default"])(evt); } + var context = eventData.canvasContext.canvas.getContext('2d'); toolsToRender.forEach(function (tool) { if (tool.renderToolData) { + context.save(); tool.renderToolData(evt); + context.restore(); } }); }; var enable = function enable(element) { - element.addEventListener(_externalModules_js__WEBPACK_IMPORTED_MODULE_2__["default"].cornerstone.EVENTS.IMAGE_RENDERED, onImageRendered); + element.addEventListener(_externalModules_js__WEBPACK_IMPORTED_MODULE_3__["default"].cornerstone.EVENTS.IMAGE_RENDERED, onImageRendered); }; var disable = function disable(element) { - element.removeEventListener(_externalModules_js__WEBPACK_IMPORTED_MODULE_2__["default"].cornerstone.EVENTS.IMAGE_RENDERED, onImageRendered); + element.removeEventListener(_externalModules_js__WEBPACK_IMPORTED_MODULE_3__["default"].cornerstone.EVENTS.IMAGE_RENDERED, onImageRendered); }; /* harmony default export */ __webpack_exports__["default"] = ({ @@ -4189,20 +3733,33 @@ var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_4__["getLogger"])(' if (!measurementData) { return; - } // Associate this data with this imageId so we can render it and manipulate it - + } Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["addToolState"])(element, tool.name, measurementData); _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.updateImage(element); var handleMover = Object.keys(measurementData.handles).length === 1 ? _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["moveHandle"] : _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["moveNewHandle"]; - handleMover(eventData, tool.name, measurementData, measurementData.handles.end, tool.options, 'mouse', function () { - var eventType = _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MEASUREMENT_COMPLETED; - var eventData = { - toolName: tool.name, - element: element, - measurementData: measurementData - }; - Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element, eventType, eventData); + var timestamp = new Date().getTime(); + handleMover(eventData, tool.name, measurementData, measurementData.handles.end, tool.options, 'mouse', function (success) { + if (measurementData.cancelled) { + return; + } + + var hasThreshold = tool.configuration && Object(tool.configuration).hasOwnProperty('measurementCreationThreshold'); + var isTooFast = hasThreshold ? new Date().getTime() - timestamp < tool.configuration.measurementCreationThreshold : false; + + if (success && isTooFast === false) { + var eventType = _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MEASUREMENT_COMPLETED; + var _eventData = { + toolName: tool.name, + toolType: tool.name, + // Deprecation notice: toolType will be replaced by toolName + element: element, + measurementData: measurementData + }; + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element, eventType, _eventData); + } else { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["removeToolState"])(element, tool.name, measurementData); + } }); }); @@ -4777,6 +4334,8 @@ var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_7__["getLogger"])(' var eventType = _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MEASUREMENT_COMPLETED; var eventData = { toolName: tool.name, + toolType: tool.name, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: measurementData }; @@ -5402,9 +4961,7 @@ __webpack_require__.r(__webpack_exports__); - -var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'), - configuration = _getModule.configuration; +var segmentationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'); /** * Renders the segmentation based on the brush configuration and * the active status of the labelmap. @@ -5416,7 +4973,6 @@ var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule" * @returns {null} */ - function renderSegmentation(evt, labelmap3D, labelmapIndex, labelmap2D, isActiveLabelMap) { if (shouldRenderFill(isActiveLabelMap)) { Object(_renderSegmentationFill__WEBPACK_IMPORTED_MODULE_1__["default"])(evt, labelmap3D, labelmap2D, labelmapIndex, isActiveLabelMap); @@ -5435,6 +4991,7 @@ function renderSegmentation(evt, labelmap3D, labelmapIndex, labelmap2D, isActive */ function shouldRenderFill(isActiveLabelMap) { + var configuration = segmentationModule.configuration; return configuration.renderFill && (isActiveLabelMap && configuration.fillAlpha !== 0 || !isActiveLabelMap && configuration.fillAlphaInactive !== 0); } /** @@ -5447,6 +5004,7 @@ function shouldRenderFill(isActiveLabelMap) { function shouldRenderOutline(isActiveLabelMap) { + var configuration = segmentationModule.configuration; return configuration.renderOutline && (isActiveLabelMap && configuration.outlineAlpha !== 0 || !isActiveLabelMap && configuration.outlineAlphaInactive !== 0); } @@ -5470,11 +5028,7 @@ __webpack_require__.r(__webpack_exports__); - -var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'), - state = _getModule.state, - configuration = _getModule.configuration; - +var segmentationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'); function renderSegmentationFill(evt, labelmap3D, labelmap2D, labelmapIndex, isActiveLabelMap) { var labelmapCanvas = getLabelmapCanvas(evt, labelmap3D, labelmap2D); renderFill(evt, labelmapCanvas, isActiveLabelMap); @@ -5491,6 +5045,7 @@ function renderSegmentationFill(evt, labelmap3D, labelmap2D, labelmapIndex, isAc */ function getLabelmapCanvas(evt, labelmap3D, labelmap2D) { + var state = segmentationModule.state; var eventData = evt.detail; var image = eventData.image; var cols = image.width; @@ -5535,6 +5090,7 @@ function getLabelmapCanvas(evt, labelmap3D, labelmap2D) { */ function renderFill(evt, labelmapCanvas, isActiveLabelMap) { + var configuration = segmentationModule.configuration; var eventData = evt.detail; var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_1__["getNewContext"])(eventData.canvasContext.canvas); var canvasTopLeft = _externalModules__WEBPACK_IMPORTED_MODULE_2__["default"].cornerstone.pixelToCanvas(eventData.element, { @@ -5558,15 +5114,37 @@ function renderFill(evt, labelmapCanvas, isActiveLabelMap) { context.imageSmoothingEnabled = false; context.globalAlpha = isActiveLabelMap ? configuration.fillAlpha : configuration.fillAlphaInactive; Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_1__["transformCanvasContext"])(context, canvas, viewport); - var canvasViewportTranslation = { - x: viewport.translation.x * viewport.scale, - y: viewport.translation.y * viewport.scale - }; + var canvasViewportTranslation = getCanvasViewportTranslation(eventData); context.drawImage(labelmapCanvas, canvas.width / 2 - cornerstoneCanvasWidth / 2 + canvasViewportTranslation.x, canvas.height / 2 - cornerstoneCanvasHeight / 2 + canvasViewportTranslation.y, cornerstoneCanvasWidth, cornerstoneCanvasHeight); context.globalAlpha = previousGlobalAlpha; context.imageSmoothingEnabled = previousImageSmoothingEnabled; Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_1__["resetCanvasContextTransform"])(context); } +/** + * GetCanvasViewportTranslation - Returns translation coordinations for + * canvas viewport with calculation of image row/column pixel spacing. + * + * @param {Object} eventData The data associated with the event. + * @returns {Object} The coordinates of the translation. + */ + +function getCanvasViewportTranslation(eventData) { + var viewport = eventData.viewport, + image = eventData.image; + var widthScale = viewport.scale; + var heightScale = viewport.scale; + + if (image.rowPixelSpacing < image.columnPixelSpacing) { + widthScale *= image.columnPixelSpacing / image.rowPixelSpacing; + } else if (image.columnPixelSpacing < image.rowPixelSpacing) { + heightScale *= image.rowPixelSpacing / image.columnPixelSpacing; + } + + return { + x: viewport.translation.x * widthScale, + y: viewport.translation.y * heightScale + }; +} /***/ }), @@ -5591,12 +5169,9 @@ __webpack_require__.r(__webpack_exports__); - -var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'), - state = _getModule.state, - configuration = _getModule.configuration; - +var segmentationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'); function renderSegmentationOutline(evt, labelmap3D, labelmap2D, labelmapIndex, isActiveLabelMap) { + var configuration = segmentationModule.configuration; var outline = getOutline(evt, labelmap3D, labelmap2D, configuration.outlineWidth); renderOutline(evt, outline, labelmap3D.colorLUTIndex, isActiveLabelMap); } @@ -5612,6 +5187,8 @@ function renderSegmentationOutline(evt, labelmap3D, labelmap2D, labelmapIndex, i function renderOutline(evt, outline, colorLUTIndex) { var isActiveLabelMap = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var configuration = segmentationModule.configuration, + state = segmentationModule.state; var eventData = evt.detail; var element = eventData.element, canvasContext = eventData.canvasContext; @@ -6103,6 +5680,7 @@ var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_4__["getLogger"])(' var isClickEvent = true; var preventClickTimeout; var clickDelay = 200; +var addedListeners = new Map(); function getEventButtons(event) { if (typeof event.buttons === 'number') { @@ -6299,12 +5877,16 @@ function mouseDown(e) { Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__["default"])(eventData.element, eventType, eventData); document.removeEventListener('mousemove', onMouseMove); document.removeEventListener('mouseup', onMouseUp); + addedListeners.delete(onMouseMove); + addedListeners.delete(onMouseUp); element.addEventListener('mousemove', mouseMove); isClickEvent = true; } document.addEventListener('mousemove', onMouseMove); document.addEventListener('mouseup', onMouseUp); + addedListeners.set(onMouseMove, 'mousemove'); + addedListeners.set(onMouseUp, 'mouseup'); } function mouseMove(e) { @@ -6361,7 +5943,12 @@ function mouseMove(e) { function disable(element) { element.removeEventListener('mousedown', mouseDown); element.removeEventListener('mousemove', mouseMove); - element.removeEventListener('dblclick', mouseDoubleClick); + element.removeEventListener('dblclick', mouseDoubleClick); // Make sure we have removed any listeners that were added within the above listeners (#1337) + + addedListeners.forEach(function (event, listener) { + document.removeEventListener(event, listener); + }); + addedListeners.clear(); } function enable(element) { @@ -6392,10 +5979,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _internals_renderSegmentation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internals/renderSegmentation.js */ "./eventListeners/internals/renderSegmentation.js"); - -var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'), - configuration = _getModule.configuration, - getters = _getModule.getters; +var segmentationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'); /** * Finds which segmentations need to be rendered based on the configuration and * presence of `Labelmap2D` data on these frames. @@ -6404,10 +5988,11 @@ var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_0__["getModule" * @returns {null} */ - /* harmony default export */ __webpack_exports__["default"] = (function (evt) { var eventData = evt.detail; var element = eventData.element; + var configuration = segmentationModule.configuration, + getters = segmentationModule.getters; var _getters$labelmaps3D = getters.labelmaps3D(element), activeLabelmapIndex = _getters$labelmaps3D.activeLabelmapIndex, @@ -6585,7 +6170,7 @@ var lastScale = 1.0, lastDelta; var pressDelay = 700, pressMaxDistance = 5; -var toolType = 'touchInput'; +var inputName = 'touchInput'; function onTouch(e) { var element = e.currentTarget || e.srcEvent.currentTarget; @@ -6991,10 +6576,12 @@ function enable(element) { element.addEventListener(eventType, onTouch, { passive: false }); - }); - var options = Object(_toolOptions_js__WEBPACK_IMPORTED_MODULE_5__["getToolOptions"])(toolType, element); - options.hammer = mc; - Object(_toolOptions_js__WEBPACK_IMPORTED_MODULE_5__["setToolOptions"])(toolType, element, options); + }); // TODO: Check why we are using tool options if it's not a tool + + var options = Object(_toolOptions_js__WEBPACK_IMPORTED_MODULE_5__["getToolOptions"])(inputName, element); + options.hammer = mc; // TODO: Check why we are using tool options if it's not a tool + + Object(_toolOptions_js__WEBPACK_IMPORTED_MODULE_5__["setToolOptions"])(inputName, element, options); } function disable(element) { @@ -7002,13 +6589,18 @@ function disable(element) { var touchEvents = ['touchstart', 'touchend']; touchEvents.forEach(function (eventType) { element.removeEventListener(eventType, onTouch); - }); - var options = Object(_toolOptions_js__WEBPACK_IMPORTED_MODULE_5__["getToolOptions"])(toolType, element); + }); // TODO: Check why we are using tool options if it's not a tool + + var options = Object(_toolOptions_js__WEBPACK_IMPORTED_MODULE_5__["getToolOptions"])(inputName, element); var mc = options.hammer; if (mc) { mc.off('tap doubletap panstart panmove panend pinchstart pinchmove rotatemove', onTouch); + mc.input.destroy(); } + + options.hammer = null; + Object(_toolOptions_js__WEBPACK_IMPORTED_MODULE_5__["clearToolOptions"])(inputName, element); } // Module exports @@ -7474,7 +7066,7 @@ __webpack_require__.r(__webpack_exports__); /*!******************!*\ !*** ./index.js ***! \******************/ -/*! exports provided: AngleTool, ArrowAnnotateTool, BidirectionalTool, CircleRoiTool, CobbAngleTool, EllipticalRoiTool, FreehandRoiTool, LengthTool, ProbeTool, RectangleRoiTool, TextMarkerTool, BrushTool, SphericalBrushTool, RectangleScissorsTool, FreehandScissorsTool, CircleScissorsTool, CorrectionScissorsTool, CrosshairsTool, DoubleTapFitToWindowTool, DragProbeTool, EraserTool, FreehandRoiSculptorTool, MagnifyTool, PanMultiTouchTool, PanTool, ReferenceLinesTool, RotateTool, RotateTouchTool, ScaleOverlayTool, StackScrollMouseWheelTool, StackScrollMultiTouchTool, StackScrollTool, WwwcRegionTool, WwwcTool, ZoomMouseWheelTool, ZoomTool, ZoomTouchPinchTool, init, stackPrefetch, stackRenderers, playClip, stopClip, store, getModule, getToolForElement, addTool, addToolForElement, removeTool, removeToolForElement, setToolOptions, setToolOptionsForElement, setToolActive, setToolActiveForElement, setToolEnabled, setToolEnabledForElement, setToolDisabled, setToolDisabledForElement, setToolPassive, setToolPassiveForElement, addToolState, getToolState, removeToolState, clearToolState, setElementToolStateManager, getElementToolStateManager, textStyle, toolStyle, toolColors, toolCoordinates, stackSpecificStateManager, newStackSpecificToolStateManager, addStackStateManager, loadHandlerManager, newImageIdSpecificToolStateManager, globalImageIdSpecificToolStateManager, newFrameOfReferenceSpecificToolStateManager, globalFrameOfReferenceSpecificToolStateManager, forceEnabledElementResize, orientation, SaveAs, enableLogger, disableLogger, register, registerSome, wwwcSynchronizer, updateImageSynchronizer, Synchronizer, stackScrollSynchronizer, stackImagePositionSynchronizer, stackImagePositionOffsetSynchronizer, stackImageIndexSynchronizer, panZoomSynchronizer, requestPoolManager, importInternal, external, EVENTS, version, import, default */ +/*! exports provided: AngleTool, ArrowAnnotateTool, BidirectionalTool, CircleRoiTool, CobbAngleTool, EllipticalRoiTool, FreehandRoiTool, LengthTool, ProbeTool, RectangleRoiTool, TextMarkerTool, BrushTool, SphericalBrushTool, RectangleScissorsTool, FreehandScissorsTool, CircleScissorsTool, CorrectionScissorsTool, CrosshairsTool, DoubleTapFitToWindowTool, DragProbeTool, EraserTool, FreehandRoiSculptorTool, MagnifyTool, OverlayTool, OrientationMarkersTool, PanMultiTouchTool, PanTool, ReferenceLinesTool, RotateTool, RotateTouchTool, ScaleOverlayTool, StackScrollMouseWheelTool, StackScrollMultiTouchTool, StackScrollTool, WwwcRegionTool, WwwcTool, ZoomMouseWheelTool, ZoomTool, ZoomTouchPinchTool, init, stackPrefetch, stackRenderers, playClip, stopClip, store, getModule, getToolForElement, addTool, addToolForElement, removeTool, removeToolForElement, setToolOptions, setToolOptionsForElement, isToolActiveForElement, setToolActive, setToolActiveForElement, setToolEnabled, setToolEnabledForElement, setToolDisabled, setToolDisabledForElement, setToolPassive, setToolPassiveForElement, addToolState, getToolState, removeToolState, clearToolState, setElementToolStateManager, getElementToolStateManager, textStyle, toolStyle, toolColors, toolCoordinates, stackSpecificStateManager, newStackSpecificToolStateManager, addStackStateManager, loadHandlerManager, newImageIdSpecificToolStateManager, globalImageIdSpecificToolStateManager, newFrameOfReferenceSpecificToolStateManager, globalFrameOfReferenceSpecificToolStateManager, forceEnabledElementResize, orientation, SaveAs, enableLogger, disableLogger, register, registerSome, wwwcSynchronizer, updateImageSynchronizer, Synchronizer, stackScrollSynchronizer, stackImagePositionSynchronizer, stackImagePositionOffsetSynchronizer, stackImageIndexSynchronizer, panZoomSynchronizer, importInternal, external, EVENTS, version, import, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -7528,6 +7120,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MagnifyTool", function() { return _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["MagnifyTool"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OverlayTool", function() { return _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["OverlayTool"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OrientationMarkersTool", function() { return _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["OrientationMarkersTool"]; }); + /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanMultiTouchTool", function() { return _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["PanMultiTouchTool"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanTool", function() { return _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["PanTool"]; }); @@ -7610,97 +7206,97 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setToolPassiveForElement", function() { return _store_setToolMode_js__WEBPACK_IMPORTED_MODULE_12__["setToolPassiveForElement"]; }); -/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addToolState", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["addToolState"]; }); +/* harmony import */ var _store_isToolActiveForElement__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./store/isToolActiveForElement */ "./store/isToolActiveForElement.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isToolActiveForElement", function() { return _store_isToolActiveForElement__WEBPACK_IMPORTED_MODULE_13__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getToolState", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["getToolState"]; }); +/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./stateManagement/toolState.js */ "./stateManagement/toolState.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addToolState", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["addToolState"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeToolState", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["removeToolState"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getToolState", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["getToolState"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clearToolState", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["clearToolState"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeToolState", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["removeToolState"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementToolStateManager", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["setElementToolStateManager"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clearToolState", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["clearToolState"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementToolStateManager", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["getElementToolStateManager"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementToolStateManager", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["setElementToolStateManager"]; }); -/* harmony import */ var _stateManagement_textStyle_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./stateManagement/textStyle.js */ "./stateManagement/textStyle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "textStyle", function() { return _stateManagement_textStyle_js__WEBPACK_IMPORTED_MODULE_14__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementToolStateManager", function() { return _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["getElementToolStateManager"]; }); -/* harmony import */ var _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./stateManagement/toolStyle.js */ "./stateManagement/toolStyle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toolStyle", function() { return _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); +/* harmony import */ var _stateManagement_textStyle_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./stateManagement/textStyle.js */ "./stateManagement/textStyle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "textStyle", function() { return _stateManagement_textStyle_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); -/* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toolColors", function() { return _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); +/* harmony import */ var _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./stateManagement/toolStyle.js */ "./stateManagement/toolStyle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toolStyle", function() { return _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); -/* harmony import */ var _stateManagement_toolCoordinates_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./stateManagement/toolCoordinates.js */ "./stateManagement/toolCoordinates.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toolCoordinates", function() { return _stateManagement_toolCoordinates_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); +/* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toolColors", function() { return _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); -/* harmony import */ var _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./stateManagement/stackSpecificStateManager.js */ "./stateManagement/stackSpecificStateManager.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackSpecificStateManager", function() { return _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_18__["stackSpecificStateManager"]; }); +/* harmony import */ var _stateManagement_toolCoordinates_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./stateManagement/toolCoordinates.js */ "./stateManagement/toolCoordinates.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toolCoordinates", function() { return _stateManagement_toolCoordinates_js__WEBPACK_IMPORTED_MODULE_18__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "newStackSpecificToolStateManager", function() { return _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_18__["newStackSpecificToolStateManager"]; }); +/* harmony import */ var _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./stateManagement/stackSpecificStateManager.js */ "./stateManagement/stackSpecificStateManager.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackSpecificStateManager", function() { return _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_19__["stackSpecificStateManager"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addStackStateManager", function() { return _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_18__["addStackStateManager"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "newStackSpecificToolStateManager", function() { return _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_19__["newStackSpecificToolStateManager"]; }); -/* harmony import */ var _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./stateManagement/loadHandlerManager.js */ "./stateManagement/loadHandlerManager.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "loadHandlerManager", function() { return _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_19__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addStackStateManager", function() { return _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_19__["addStackStateManager"]; }); -/* harmony import */ var _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./stateManagement/imageIdSpecificStateManager.js */ "./stateManagement/imageIdSpecificStateManager.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "newImageIdSpecificToolStateManager", function() { return _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_20__["newImageIdSpecificToolStateManager"]; }); +/* harmony import */ var _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./stateManagement/loadHandlerManager.js */ "./stateManagement/loadHandlerManager.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "loadHandlerManager", function() { return _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_20__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "globalImageIdSpecificToolStateManager", function() { return _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_20__["globalImageIdSpecificToolStateManager"]; }); +/* harmony import */ var _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./stateManagement/imageIdSpecificStateManager.js */ "./stateManagement/imageIdSpecificStateManager.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "newImageIdSpecificToolStateManager", function() { return _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_21__["newImageIdSpecificToolStateManager"]; }); -/* harmony import */ var _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./stateManagement/frameOfReferenceStateManager.js */ "./stateManagement/frameOfReferenceStateManager.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "newFrameOfReferenceSpecificToolStateManager", function() { return _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_21__["newFrameOfReferenceSpecificToolStateManager"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "globalImageIdSpecificToolStateManager", function() { return _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_21__["globalImageIdSpecificToolStateManager"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "globalFrameOfReferenceSpecificToolStateManager", function() { return _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_21__["globalFrameOfReferenceSpecificToolStateManager"]; }); +/* harmony import */ var _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./stateManagement/frameOfReferenceStateManager.js */ "./stateManagement/frameOfReferenceStateManager.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "newFrameOfReferenceSpecificToolStateManager", function() { return _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_22__["newFrameOfReferenceSpecificToolStateManager"]; }); -/* harmony import */ var _eventListeners_windowResizeHandler_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./eventListeners/windowResizeHandler.js */ "./eventListeners/windowResizeHandler.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceEnabledElementResize", function() { return _eventListeners_windowResizeHandler_js__WEBPACK_IMPORTED_MODULE_22__["forceEnabledElementResize"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "globalFrameOfReferenceSpecificToolStateManager", function() { return _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_22__["globalFrameOfReferenceSpecificToolStateManager"]; }); -/* harmony import */ var _orientation_index_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./orientation/index.js */ "./orientation/index.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "orientation", function() { return _orientation_index_js__WEBPACK_IMPORTED_MODULE_23__["default"]; }); +/* harmony import */ var _eventListeners_windowResizeHandler_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./eventListeners/windowResizeHandler.js */ "./eventListeners/windowResizeHandler.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceEnabledElementResize", function() { return _eventListeners_windowResizeHandler_js__WEBPACK_IMPORTED_MODULE_23__["forceEnabledElementResize"]; }); -/* harmony import */ var _util_SaveAs_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./util/SaveAs.js */ "./util/SaveAs.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SaveAs", function() { return _util_SaveAs_js__WEBPACK_IMPORTED_MODULE_24__["default"]; }); +/* harmony import */ var _orientation_index_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./orientation/index.js */ "./orientation/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "orientation", function() { return _orientation_index_js__WEBPACK_IMPORTED_MODULE_24__["default"]; }); -/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./util/logger.js */ "./util/logger.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "enableLogger", function() { return _util_logger_js__WEBPACK_IMPORTED_MODULE_25__["enable"]; }); +/* harmony import */ var _util_SaveAs_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./util/SaveAs.js */ "./util/SaveAs.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SaveAs", function() { return _util_SaveAs_js__WEBPACK_IMPORTED_MODULE_25__["default"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "disableLogger", function() { return _util_logger_js__WEBPACK_IMPORTED_MODULE_25__["disable"]; }); +/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./util/logger.js */ "./util/logger.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "enableLogger", function() { return _util_logger_js__WEBPACK_IMPORTED_MODULE_26__["enable"]; }); -/* harmony import */ var _thirdParty_register_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./thirdParty/register.js */ "./thirdParty/register.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "register", function() { return _thirdParty_register_js__WEBPACK_IMPORTED_MODULE_26__["default"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "disableLogger", function() { return _util_logger_js__WEBPACK_IMPORTED_MODULE_26__["disable"]; }); -/* harmony import */ var _thirdParty_registerSome_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./thirdParty/registerSome.js */ "./thirdParty/registerSome.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "registerSome", function() { return _thirdParty_registerSome_js__WEBPACK_IMPORTED_MODULE_27__["default"]; }); +/* harmony import */ var _thirdParty_register_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./thirdParty/register.js */ "./thirdParty/register.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "register", function() { return _thirdParty_register_js__WEBPACK_IMPORTED_MODULE_27__["default"]; }); -/* harmony import */ var _synchronization_wwwcSynchronizer_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./synchronization/wwwcSynchronizer.js */ "./synchronization/wwwcSynchronizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "wwwcSynchronizer", function() { return _synchronization_wwwcSynchronizer_js__WEBPACK_IMPORTED_MODULE_28__["default"]; }); +/* harmony import */ var _thirdParty_registerSome_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./thirdParty/registerSome.js */ "./thirdParty/registerSome.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "registerSome", function() { return _thirdParty_registerSome_js__WEBPACK_IMPORTED_MODULE_28__["default"]; }); -/* harmony import */ var _synchronization_updateImageSynchronizer_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./synchronization/updateImageSynchronizer.js */ "./synchronization/updateImageSynchronizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "updateImageSynchronizer", function() { return _synchronization_updateImageSynchronizer_js__WEBPACK_IMPORTED_MODULE_29__["default"]; }); +/* harmony import */ var _synchronization_wwwcSynchronizer_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./synchronization/wwwcSynchronizer.js */ "./synchronization/wwwcSynchronizer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "wwwcSynchronizer", function() { return _synchronization_wwwcSynchronizer_js__WEBPACK_IMPORTED_MODULE_29__["default"]; }); -/* harmony import */ var _synchronization_Synchronizer_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./synchronization/Synchronizer.js */ "./synchronization/Synchronizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Synchronizer", function() { return _synchronization_Synchronizer_js__WEBPACK_IMPORTED_MODULE_30__["default"]; }); +/* harmony import */ var _synchronization_updateImageSynchronizer_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./synchronization/updateImageSynchronizer.js */ "./synchronization/updateImageSynchronizer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "updateImageSynchronizer", function() { return _synchronization_updateImageSynchronizer_js__WEBPACK_IMPORTED_MODULE_30__["default"]; }); -/* harmony import */ var _synchronization_stackScrollSynchronizer_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./synchronization/stackScrollSynchronizer.js */ "./synchronization/stackScrollSynchronizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackScrollSynchronizer", function() { return _synchronization_stackScrollSynchronizer_js__WEBPACK_IMPORTED_MODULE_31__["default"]; }); +/* harmony import */ var _synchronization_Synchronizer_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./synchronization/Synchronizer.js */ "./synchronization/Synchronizer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Synchronizer", function() { return _synchronization_Synchronizer_js__WEBPACK_IMPORTED_MODULE_31__["default"]; }); -/* harmony import */ var _synchronization_stackImagePositionSynchronizer_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./synchronization/stackImagePositionSynchronizer.js */ "./synchronization/stackImagePositionSynchronizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackImagePositionSynchronizer", function() { return _synchronization_stackImagePositionSynchronizer_js__WEBPACK_IMPORTED_MODULE_32__["default"]; }); +/* harmony import */ var _synchronization_stackScrollSynchronizer_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./synchronization/stackScrollSynchronizer.js */ "./synchronization/stackScrollSynchronizer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackScrollSynchronizer", function() { return _synchronization_stackScrollSynchronizer_js__WEBPACK_IMPORTED_MODULE_32__["default"]; }); -/* harmony import */ var _synchronization_stackImagePositionOffsetSynchronizer_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./synchronization/stackImagePositionOffsetSynchronizer.js */ "./synchronization/stackImagePositionOffsetSynchronizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackImagePositionOffsetSynchronizer", function() { return _synchronization_stackImagePositionOffsetSynchronizer_js__WEBPACK_IMPORTED_MODULE_33__["default"]; }); +/* harmony import */ var _synchronization_stackImagePositionSynchronizer_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./synchronization/stackImagePositionSynchronizer.js */ "./synchronization/stackImagePositionSynchronizer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackImagePositionSynchronizer", function() { return _synchronization_stackImagePositionSynchronizer_js__WEBPACK_IMPORTED_MODULE_33__["default"]; }); -/* harmony import */ var _synchronization_stackImageIndexSynchronizer_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./synchronization/stackImageIndexSynchronizer.js */ "./synchronization/stackImageIndexSynchronizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackImageIndexSynchronizer", function() { return _synchronization_stackImageIndexSynchronizer_js__WEBPACK_IMPORTED_MODULE_34__["default"]; }); +/* harmony import */ var _synchronization_stackImagePositionOffsetSynchronizer_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./synchronization/stackImagePositionOffsetSynchronizer.js */ "./synchronization/stackImagePositionOffsetSynchronizer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackImagePositionOffsetSynchronizer", function() { return _synchronization_stackImagePositionOffsetSynchronizer_js__WEBPACK_IMPORTED_MODULE_34__["default"]; }); -/* harmony import */ var _synchronization_panZoomSynchronizer_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./synchronization/panZoomSynchronizer.js */ "./synchronization/panZoomSynchronizer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "panZoomSynchronizer", function() { return _synchronization_panZoomSynchronizer_js__WEBPACK_IMPORTED_MODULE_35__["default"]; }); +/* harmony import */ var _synchronization_stackImageIndexSynchronizer_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./synchronization/stackImageIndexSynchronizer.js */ "./synchronization/stackImageIndexSynchronizer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stackImageIndexSynchronizer", function() { return _synchronization_stackImageIndexSynchronizer_js__WEBPACK_IMPORTED_MODULE_35__["default"]; }); -/* harmony import */ var _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./requestPool/requestPoolManager.js */ "./requestPool/requestPoolManager.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "requestPoolManager", function() { return _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_36__["default"]; }); +/* harmony import */ var _synchronization_panZoomSynchronizer_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./synchronization/panZoomSynchronizer.js */ "./synchronization/panZoomSynchronizer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "panZoomSynchronizer", function() { return _synchronization_panZoomSynchronizer_js__WEBPACK_IMPORTED_MODULE_36__["default"]; }); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./externalModules.js */ "./externalModules.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "external", function() { return _externalModules_js__WEBPACK_IMPORTED_MODULE_37__["default"]; }); @@ -7817,6 +7413,7 @@ __webpack_require__.r(__webpack_exports__); + // ~~~~~~ ORIENTATION ~~~~~ // // ~~~~~~ CANVAS EXPORT ~~~~~ // @@ -7840,7 +7437,6 @@ __webpack_require__.r(__webpack_exports__); - var cornerstoneTools = { // ~~~ TOOLS // ~ Annotation Tools @@ -7869,6 +7465,8 @@ var cornerstoneTools = { EraserTool: _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["EraserTool"], FreehandRoiSculptorTool: _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["FreehandRoiSculptorTool"], MagnifyTool: _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["MagnifyTool"], + OverlayTool: _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["OverlayTool"], + OrientationMarkersTool: _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["OrientationMarkersTool"], PanMultiTouchTool: _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["PanMultiTouchTool"], PanTool: _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["PanTool"], ReferenceLinesTool: _tools_index_js__WEBPACK_IMPORTED_MODULE_2__["ReferenceLinesTool"], @@ -7897,6 +7495,7 @@ var cornerstoneTools = { removeToolForElement: _store_removeTool_js__WEBPACK_IMPORTED_MODULE_10__["removeToolForElement"], setToolOptions: _store_setToolOptions_js__WEBPACK_IMPORTED_MODULE_11__["setToolOptions"], setToolOptionsForElement: _store_setToolOptions_js__WEBPACK_IMPORTED_MODULE_11__["setToolOptionsForElement"], + isToolActiveForElement: _store_isToolActiveForElement__WEBPACK_IMPORTED_MODULE_13__["default"], setToolActive: _store_setToolMode_js__WEBPACK_IMPORTED_MODULE_12__["setToolActive"], setToolActiveForElement: _store_setToolMode_js__WEBPACK_IMPORTED_MODULE_12__["setToolActiveForElement"], setToolEnabled: _store_setToolMode_js__WEBPACK_IMPORTED_MODULE_12__["setToolEnabled"], @@ -7905,42 +7504,41 @@ var cornerstoneTools = { setToolDisabledForElement: _store_setToolMode_js__WEBPACK_IMPORTED_MODULE_12__["setToolDisabledForElement"], setToolPassive: _store_setToolMode_js__WEBPACK_IMPORTED_MODULE_12__["setToolPassive"], setToolPassiveForElement: _store_setToolMode_js__WEBPACK_IMPORTED_MODULE_12__["setToolPassiveForElement"], - addToolState: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["addToolState"], - getToolState: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["getToolState"], - removeToolState: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["removeToolState"], - clearToolState: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["clearToolState"], - setElementToolStateManager: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["setElementToolStateManager"], - getElementToolStateManager: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_13__["getElementToolStateManager"], - textStyle: _stateManagement_textStyle_js__WEBPACK_IMPORTED_MODULE_14__["default"], - toolStyle: _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_15__["default"], - toolColors: _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_16__["default"], - toolCoordinates: _stateManagement_toolCoordinates_js__WEBPACK_IMPORTED_MODULE_17__["default"], - stackSpecificStateManager: _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_18__["stackSpecificStateManager"], - newStackSpecificToolStateManager: _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_18__["newStackSpecificToolStateManager"], - addStackStateManager: _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_18__["addStackStateManager"], - loadHandlerManager: _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_19__["default"], - newImageIdSpecificToolStateManager: _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_20__["newImageIdSpecificToolStateManager"], - globalImageIdSpecificToolStateManager: _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_20__["globalImageIdSpecificToolStateManager"], - newFrameOfReferenceSpecificToolStateManager: _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_21__["newFrameOfReferenceSpecificToolStateManager"], - globalFrameOfReferenceSpecificToolStateManager: _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_21__["globalFrameOfReferenceSpecificToolStateManager"], - forceEnabledElementResize: _eventListeners_windowResizeHandler_js__WEBPACK_IMPORTED_MODULE_22__["forceEnabledElementResize"], - orientation: _orientation_index_js__WEBPACK_IMPORTED_MODULE_23__["default"], - SaveAs: _util_SaveAs_js__WEBPACK_IMPORTED_MODULE_24__["default"], - enableLogger: _util_logger_js__WEBPACK_IMPORTED_MODULE_25__["enable"], - disableLogger: _util_logger_js__WEBPACK_IMPORTED_MODULE_25__["disable"], + addToolState: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["addToolState"], + getToolState: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["getToolState"], + removeToolState: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["removeToolState"], + clearToolState: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["clearToolState"], + setElementToolStateManager: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["setElementToolStateManager"], + getElementToolStateManager: _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_14__["getElementToolStateManager"], + textStyle: _stateManagement_textStyle_js__WEBPACK_IMPORTED_MODULE_15__["default"], + toolStyle: _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_16__["default"], + toolColors: _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_17__["default"], + toolCoordinates: _stateManagement_toolCoordinates_js__WEBPACK_IMPORTED_MODULE_18__["default"], + stackSpecificStateManager: _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_19__["stackSpecificStateManager"], + newStackSpecificToolStateManager: _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_19__["newStackSpecificToolStateManager"], + addStackStateManager: _stateManagement_stackSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_19__["addStackStateManager"], + loadHandlerManager: _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_20__["default"], + newImageIdSpecificToolStateManager: _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_21__["newImageIdSpecificToolStateManager"], + globalImageIdSpecificToolStateManager: _stateManagement_imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_21__["globalImageIdSpecificToolStateManager"], + newFrameOfReferenceSpecificToolStateManager: _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_22__["newFrameOfReferenceSpecificToolStateManager"], + globalFrameOfReferenceSpecificToolStateManager: _stateManagement_frameOfReferenceStateManager_js__WEBPACK_IMPORTED_MODULE_22__["globalFrameOfReferenceSpecificToolStateManager"], + forceEnabledElementResize: _eventListeners_windowResizeHandler_js__WEBPACK_IMPORTED_MODULE_23__["forceEnabledElementResize"], + orientation: _orientation_index_js__WEBPACK_IMPORTED_MODULE_24__["default"], + SaveAs: _util_SaveAs_js__WEBPACK_IMPORTED_MODULE_25__["default"], + enableLogger: _util_logger_js__WEBPACK_IMPORTED_MODULE_26__["enable"], + disableLogger: _util_logger_js__WEBPACK_IMPORTED_MODULE_26__["disable"], importInternal: _importInternal_js__WEBPACK_IMPORTED_MODULE_40__["default"], import: _importInternal_js__WEBPACK_IMPORTED_MODULE_40__["default"], - register: _thirdParty_register_js__WEBPACK_IMPORTED_MODULE_26__["default"], - registerSome: _thirdParty_registerSome_js__WEBPACK_IMPORTED_MODULE_27__["default"], - wwwcSynchronizer: _synchronization_wwwcSynchronizer_js__WEBPACK_IMPORTED_MODULE_28__["default"], - updateImageSynchronizer: _synchronization_updateImageSynchronizer_js__WEBPACK_IMPORTED_MODULE_29__["default"], - Synchronizer: _synchronization_Synchronizer_js__WEBPACK_IMPORTED_MODULE_30__["default"], - stackScrollSynchronizer: _synchronization_stackScrollSynchronizer_js__WEBPACK_IMPORTED_MODULE_31__["default"], - stackImagePositionSynchronizer: _synchronization_stackImagePositionSynchronizer_js__WEBPACK_IMPORTED_MODULE_32__["default"], - stackImagePositionOffsetSynchronizer: _synchronization_stackImagePositionOffsetSynchronizer_js__WEBPACK_IMPORTED_MODULE_33__["default"], - stackImageIndexSynchronizer: _synchronization_stackImageIndexSynchronizer_js__WEBPACK_IMPORTED_MODULE_34__["default"], - panZoomSynchronizer: _synchronization_panZoomSynchronizer_js__WEBPACK_IMPORTED_MODULE_35__["default"], - requestPoolManager: _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_36__["default"], + register: _thirdParty_register_js__WEBPACK_IMPORTED_MODULE_27__["default"], + registerSome: _thirdParty_registerSome_js__WEBPACK_IMPORTED_MODULE_28__["default"], + wwwcSynchronizer: _synchronization_wwwcSynchronizer_js__WEBPACK_IMPORTED_MODULE_29__["default"], + updateImageSynchronizer: _synchronization_updateImageSynchronizer_js__WEBPACK_IMPORTED_MODULE_30__["default"], + Synchronizer: _synchronization_Synchronizer_js__WEBPACK_IMPORTED_MODULE_31__["default"], + stackScrollSynchronizer: _synchronization_stackScrollSynchronizer_js__WEBPACK_IMPORTED_MODULE_32__["default"], + stackImagePositionSynchronizer: _synchronization_stackImagePositionSynchronizer_js__WEBPACK_IMPORTED_MODULE_33__["default"], + stackImagePositionOffsetSynchronizer: _synchronization_stackImagePositionOffsetSynchronizer_js__WEBPACK_IMPORTED_MODULE_34__["default"], + stackImageIndexSynchronizer: _synchronization_stackImageIndexSynchronizer_js__WEBPACK_IMPORTED_MODULE_35__["default"], + panZoomSynchronizer: _synchronization_panZoomSynchronizer_js__WEBPACK_IMPORTED_MODULE_36__["default"], external: _externalModules_js__WEBPACK_IMPORTED_MODULE_37__["default"], EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_38__["default"], version: _version_js__WEBPACK_IMPORTED_MODULE_39__["default"] @@ -7979,21 +7577,38 @@ __webpack_require__.r(__webpack_exports__); * @method * @name init * - * @param {Object} [configuration = {}] The global configuration to apply. + * @param {Object|Object[]} [defaultConfiguration = {}] The configuration to apply. Assumed globalConfiguration + * only one value, otherwise moduleName, configuration entires in an array. * @returns {Object} A configured CornerstoneTools instance with top level API members. */ /* harmony default export */ __webpack_exports__["default"] = (function () { - var configuration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var defaultConfiguration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _addCornerstoneEventListeners(); _initModules(); - _eventListeners_windowResizeHandler_js__WEBPACK_IMPORTED_MODULE_4__["default"].enable(); // Apply global configuration - var globalConfigurationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_1__["getModule"])('globalConfiguration'); - globalConfigurationModule.configuration = Object.assign({}, globalConfigurationModule.configuration, configuration); + + if (Array.isArray(defaultConfiguration)) { + defaultConfiguration.forEach(function (configurationEntry) { + var moduleName = configurationEntry.moduleName, + configuration = configurationEntry.configuration; + var module = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_1__["getModule"])(moduleName); + + if (module) { + module.configuration = Object.assign({}, module.configuration, configuration); + } + }); + } else { + // DefaultConfiguration is an object, default to assigning it to globalConfiguration. + globalConfigurationModule.configuration = Object.assign({}, globalConfigurationModule.configuration, defaultConfiguration); + } + + if (globalConfigurationModule.configuration.autoResizeViewports) { + _eventListeners_windowResizeHandler_js__WEBPACK_IMPORTED_MODULE_4__["default"].enable(); + } }); /** * Wires up event listeners for the Cornerstone#ElementDisabled and @@ -8075,34 +7690,64 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _mixins_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mixins/index.js */ "./mixins/index.js"); /* harmony import */ var _tools_cursors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tools/cursors/index.js */ "./tools/cursors/index.js"); /* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./drawing/index.js */ "./drawing/index.js"); -/* harmony import */ var _drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./drawing/drawTextBox.js */ "./drawing/drawTextBox.js"); -/* harmony import */ var _drawing_drawArrow_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./drawing/drawArrow.js */ "./drawing/drawArrow.js"); -/* harmony import */ var _drawing_drawLink_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./drawing/drawLink.js */ "./drawing/drawLink.js"); -/* harmony import */ var _drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./drawing/drawLinkedTextBox.js */ "./drawing/drawLinkedTextBox.js"); -/* harmony import */ var _drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./drawing/drawHandles.js */ "./drawing/drawHandles.js"); -/* harmony import */ var _util_getLuminance_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./util/getLuminance.js */ "./util/getLuminance.js"); -/* harmony import */ var _util_copyPoints_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./util/copyPoints.js */ "./util/copyPoints.js"); -/* harmony import */ var _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util/calculateSUV.js */ "./util/calculateSUV.js"); -/* harmony import */ var _util_setContextToDisplayFontSize_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./util/setContextToDisplayFontSize.js */ "./util/setContextToDisplayFontSize.js"); -/* harmony import */ var _util_scrollToIndex_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./util/scrollToIndex.js */ "./util/scrollToIndex.js"); -/* harmony import */ var _util_scroll_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./util/scroll.js */ "./util/scroll.js"); -/* harmony import */ var _util_roundToDecimal_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./util/roundToDecimal.js */ "./util/roundToDecimal.js"); -/* harmony import */ var _util_pointProjector_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./util/pointProjector.js */ "./util/pointProjector.js"); -/* harmony import */ var _util_lineSegDistance_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./util/lineSegDistance.js */ "./util/lineSegDistance.js"); -/* harmony import */ var _util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./util/pointInsideBoundingBox.js */ "./util/pointInsideBoundingBox.js"); -/* harmony import */ var _util_makeUnselectable_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./util/makeUnselectable.js */ "./util/makeUnselectable.js"); -/* harmony import */ var _util_getRGBPixels_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./util/getRGBPixels.js */ "./util/getRGBPixels.js"); -/* harmony import */ var _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./util/getMaxSimultaneousRequests.js */ "./util/getMaxSimultaneousRequests.js"); -/* harmony import */ var _util_angleBetweenPoints_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./util/angleBetweenPoints.js */ "./util/angleBetweenPoints.js"); -/* harmony import */ var _util_getKeyFromKeyCode_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./util/getKeyFromKeyCode.js */ "./util/getKeyFromKeyCode.js"); -/* harmony import */ var _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./util/numbersWithCommas.js */ "./util/numbersWithCommas.js"); -/* harmony import */ var _tools_cursors_MouseCursor_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./tools/cursors/MouseCursor.js */ "./tools/cursors/MouseCursor.js"); -/* harmony import */ var _util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./util/ellipse/index.js */ "./util/ellipse/index.js"); -/* harmony import */ var _util_freehand_index_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./util/freehand/index.js */ "./util/freehand/index.js"); -/* harmony import */ var _util_segmentation__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./util/segmentation */ "./util/segmentation/index.js"); -/* harmony import */ var _util_zoom_index_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./util/zoom/index.js */ "./util/zoom/index.js"); -/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./util/triggerEvent.js */ "./util/triggerEvent.js"); -/* harmony import */ var _util_convertToVector3_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./util/convertToVector3.js */ "./util/convertToVector3.js"); +/* harmony import */ var _util_clip_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./util/clip.js */ "./util/clip.js"); +/* harmony import */ var _util_debounce__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./util/debounce */ "./util/debounce.js"); +/* harmony import */ var _util_deepmerge__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./util/deepmerge */ "./util/deepmerge.js"); +/* harmony import */ var _util_getDefault__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./util/getDefault */ "./util/getDefault.js"); +/* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./util/getPixelSpacing */ "./util/getPixelSpacing.js"); +/* harmony import */ var _util_isEmptyObject__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./util/isEmptyObject */ "./util/isEmptyObject.js"); +/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./util/isObject */ "./util/isObject.js"); +/* harmony import */ var _util_isPointInImage__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util/isPointInImage */ "./util/isPointInImage.js"); +/* harmony import */ var _util_isPointInPolygon__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./util/isPointInPolygon */ "./util/isPointInPolygon.js"); +/* harmony import */ var _util_throttle__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./util/throttle */ "./util/throttle.js"); +/* harmony import */ var _util_wait__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./util/wait */ "./util/wait.js"); +/* harmony import */ var _util_getKeyPressData__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./util/getKeyPressData */ "./util/getKeyPressData.js"); +/* harmony import */ var _util_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./util/getProximityThreshold.js */ "./util/getProximityThreshold.js"); +/* harmony import */ var _drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./drawing/drawTextBox.js */ "./drawing/drawTextBox.js"); +/* harmony import */ var _drawing_drawArrow_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./drawing/drawArrow.js */ "./drawing/drawArrow.js"); +/* harmony import */ var _drawing_drawLink_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./drawing/drawLink.js */ "./drawing/drawLink.js"); +/* harmony import */ var _drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./drawing/drawLinkedTextBox.js */ "./drawing/drawLinkedTextBox.js"); +/* harmony import */ var _drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./drawing/drawHandles.js */ "./drawing/drawHandles.js"); +/* harmony import */ var _util_getActiveTool__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./util/getActiveTool */ "./util/getActiveTool.js"); +/* harmony import */ var _util_getLuminance_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./util/getLuminance.js */ "./util/getLuminance.js"); +/* harmony import */ var _util_getROITextBoxCoords__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./util/getROITextBoxCoords */ "./util/getROITextBoxCoords.js"); +/* harmony import */ var _util_copyPoints_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./util/copyPoints.js */ "./util/copyPoints.js"); +/* harmony import */ var _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./util/calculateSUV.js */ "./util/calculateSUV.js"); +/* harmony import */ var _util_setContextToDisplayFontSize_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./util/setContextToDisplayFontSize.js */ "./util/setContextToDisplayFontSize.js"); +/* harmony import */ var _util_scrollToIndex_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./util/scrollToIndex.js */ "./util/scrollToIndex.js"); +/* harmony import */ var _util_scroll_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./util/scroll.js */ "./util/scroll.js"); +/* harmony import */ var _util_roundToDecimal_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./util/roundToDecimal.js */ "./util/roundToDecimal.js"); +/* harmony import */ var _util_pointProjector_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./util/pointProjector.js */ "./util/pointProjector.js"); +/* harmony import */ var _util_lineSegDistance_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./util/lineSegDistance.js */ "./util/lineSegDistance.js"); +/* harmony import */ var _util_logger__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./util/logger */ "./util/logger.js"); +/* harmony import */ var _util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./util/pointInsideBoundingBox.js */ "./util/pointInsideBoundingBox.js"); +/* harmony import */ var _util_makeUnselectable_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./util/makeUnselectable.js */ "./util/makeUnselectable.js"); +/* harmony import */ var _util_getRGBPixels_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./util/getRGBPixels.js */ "./util/getRGBPixels.js"); +/* harmony import */ var _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./util/getMaxSimultaneousRequests.js */ "./util/getMaxSimultaneousRequests.js"); +/* harmony import */ var _util_angleBetweenPoints_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./util/angleBetweenPoints.js */ "./util/angleBetweenPoints.js"); +/* harmony import */ var _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./util/numbersWithCommas.js */ "./util/numbersWithCommas.js"); +/* harmony import */ var _tools_cursors_MouseCursor_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./tools/cursors/MouseCursor.js */ "./tools/cursors/MouseCursor.js"); +/* harmony import */ var _util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./util/ellipse/index.js */ "./util/ellipse/index.js"); +/* harmony import */ var _util_freehand_index_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./util/freehand/index.js */ "./util/freehand/index.js"); +/* harmony import */ var _util_segmentation__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./util/segmentation */ "./util/segmentation/index.js"); +/* harmony import */ var _util_zoom_index_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./util/zoom/index.js */ "./util/zoom/index.js"); +/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./util/triggerEvent.js */ "./util/triggerEvent.js"); +/* harmony import */ var _util_convertToVector3_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./util/convertToVector3.js */ "./util/convertToVector3.js"); + + + + + + + + + + + + + + + @@ -8143,10 +7788,11 @@ var lib = { 'base/BaseTool': _tools_base_BaseTool_js__WEBPACK_IMPORTED_MODULE_0__["default"], 'base/BaseAnnotationTool': _tools_base_BaseAnnotationTool_js__WEBPACK_IMPORTED_MODULE_1__["default"], 'base/BaseBrushTool': _tools_base_BaseBrushTool_js__WEBPACK_IMPORTED_MODULE_2__["default"], - 'tools/cursors/MouseCursor': _tools_cursors_MouseCursor_js__WEBPACK_IMPORTED_MODULE_29__["default"], + 'tools/cursors/MouseCursor': _tools_cursors_MouseCursor_js__WEBPACK_IMPORTED_MODULE_44__["default"], 'tools/cursors': _tools_cursors_index_js__WEBPACK_IMPORTED_MODULE_6__, 'manipulators/anyHandlesOutsideImage': _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["anyHandlesOutsideImage"], 'manipulators/getHandleNearImagePoint': _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["getHandleNearImagePoint"], + 'manipulators/getHandlePixelPosition': _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["getHandlePixelPosition"], 'manipulators/handleActivator': _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["handleActivator"], 'manipulators/moveAllHandles': _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["moveAllHandles"], 'manipulators/moveHandle': _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["moveHandle"], @@ -8167,42 +7813,58 @@ var lib = { 'drawing/drawEllipse': _drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["drawEllipse"], 'drawing/drawRect': _drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["drawRect"], 'drawing/fillOutsideRect': _drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["fillOutsideRect"], - 'drawing/drawTextBox': _drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_8__["default"], - 'drawing/drawArrow': _drawing_drawArrow_js__WEBPACK_IMPORTED_MODULE_9__["default"], + 'drawing/drawTextBox': _drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_21__["default"], + 'drawing/drawArrow': _drawing_drawArrow_js__WEBPACK_IMPORTED_MODULE_22__["default"], 'drawing/fillBox': _drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["fillBox"], 'drawing/fillTextLines': _drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["fillTextLines"], - 'drawing/drawLink': _drawing_drawLink_js__WEBPACK_IMPORTED_MODULE_10__["default"], - 'drawing/drawLinkedTextBox': _drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_11__["default"], - 'drawing/drawHandles': _drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_12__["default"], - 'drawing/textBoxWidth': _drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_8__["textBoxWidth"], - 'util/getLuminance': _util_getLuminance_js__WEBPACK_IMPORTED_MODULE_13__["default"], - 'util/copyPoints': _util_copyPoints_js__WEBPACK_IMPORTED_MODULE_14__["default"], - 'util/calculateSUV': _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_15__["default"], - 'util/setContextToDisplayFontSize': _util_setContextToDisplayFontSize_js__WEBPACK_IMPORTED_MODULE_16__["default"], - 'util/scrollToIndex': _util_scrollToIndex_js__WEBPACK_IMPORTED_MODULE_17__["default"], - 'util/scroll': _util_scroll_js__WEBPACK_IMPORTED_MODULE_18__["default"], - 'util/roundToDecimal': _util_roundToDecimal_js__WEBPACK_IMPORTED_MODULE_19__["default"], - 'util/projectPatientPointToImagePlane': _util_pointProjector_js__WEBPACK_IMPORTED_MODULE_20__["projectPatientPointToImagePlane"], - 'util/imagePointToPatientPoint': _util_pointProjector_js__WEBPACK_IMPORTED_MODULE_20__["imagePointToPatientPoint"], - 'util/planePlaneIntersection': _util_pointProjector_js__WEBPACK_IMPORTED_MODULE_20__["planePlaneIntersection"], - 'util/pointInsideBoundingBox': _util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_22__["default"], - 'util/makeUnselectable': _util_makeUnselectable_js__WEBPACK_IMPORTED_MODULE_23__["default"], - 'util/getRGBPixels': _util_getRGBPixels_js__WEBPACK_IMPORTED_MODULE_24__["default"], - 'util/getDefaultSimultaneousRequests': _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_25__["getDefaultSimultaneousRequests"], - 'util/getMaxSimultaneousRequests': _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_25__["getMaxSimultaneousRequests"], - 'util/getBrowserInfo': _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_25__["getBrowserInfo"], - 'util/isMobileDevice': _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_25__["isMobileDevice"], - 'util/angleBetweenPoints': _util_angleBetweenPoints_js__WEBPACK_IMPORTED_MODULE_26__["default"], - 'util/getKeyFromKeyCode': _util_getKeyFromKeyCode_js__WEBPACK_IMPORTED_MODULE_27__["default"], - 'util/numbersWithCommas': _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_28__["default"], - 'util/lineSegDistance': _util_lineSegDistance_js__WEBPACK_IMPORTED_MODULE_21__["default"], - 'util/triggerEvent': _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_34__["default"], - 'util/convertToVector3': _util_convertToVector3_js__WEBPACK_IMPORTED_MODULE_35__["default"], + 'drawing/drawLink': _drawing_drawLink_js__WEBPACK_IMPORTED_MODULE_23__["default"], + 'drawing/drawLinkedTextBox': _drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_24__["default"], + 'drawing/drawHandles': _drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_25__["default"], + 'drawing/textBoxWidth': _drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_21__["textBoxWidth"], + 'util/getActiveTool': _util_getActiveTool__WEBPACK_IMPORTED_MODULE_26__["default"], + 'util/getLuminance': _util_getLuminance_js__WEBPACK_IMPORTED_MODULE_27__["default"], + 'util/getROITextBoxCoords': _util_getROITextBoxCoords__WEBPACK_IMPORTED_MODULE_28__["default"], + 'util/copyPoints': _util_copyPoints_js__WEBPACK_IMPORTED_MODULE_29__["default"], + 'util/calculateSUV': _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_30__["default"], + 'util/setContextToDisplayFontSize': _util_setContextToDisplayFontSize_js__WEBPACK_IMPORTED_MODULE_31__["default"], + 'util/scrollToIndex': _util_scrollToIndex_js__WEBPACK_IMPORTED_MODULE_32__["default"], + 'util/scroll': _util_scroll_js__WEBPACK_IMPORTED_MODULE_33__["default"], + 'util/roundToDecimal': _util_roundToDecimal_js__WEBPACK_IMPORTED_MODULE_34__["default"], + 'util/projectPatientPointToImagePlane': _util_pointProjector_js__WEBPACK_IMPORTED_MODULE_35__["projectPatientPointToImagePlane"], + 'util/imagePointToPatientPoint': _util_pointProjector_js__WEBPACK_IMPORTED_MODULE_35__["imagePointToPatientPoint"], + 'util/planePlaneIntersection': _util_pointProjector_js__WEBPACK_IMPORTED_MODULE_35__["planePlaneIntersection"], + 'util/pointInsideBoundingBox': _util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_38__["default"], + 'util/makeUnselectable': _util_makeUnselectable_js__WEBPACK_IMPORTED_MODULE_39__["default"], + 'util/getRGBPixels': _util_getRGBPixels_js__WEBPACK_IMPORTED_MODULE_40__["default"], + 'util/getBrowserInfo': _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_41__["getBrowserInfo"], + 'util/isMobileDevice': _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_41__["isMobileDevice"], + 'util/angleBetweenPoints': _util_angleBetweenPoints_js__WEBPACK_IMPORTED_MODULE_42__["default"], + 'util/numbersWithCommas': _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_43__["default"], + 'util/lineSegDistance': _util_lineSegDistance_js__WEBPACK_IMPORTED_MODULE_36__["default"], + 'util/triggerEvent': _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_49__["default"], + 'util/convertToVector3': _util_convertToVector3_js__WEBPACK_IMPORTED_MODULE_50__["default"], + 'util/clip': _util_clip_js__WEBPACK_IMPORTED_MODULE_8__["clip"], + 'util/clipToBox': _util_clip_js__WEBPACK_IMPORTED_MODULE_8__["clipToBox"], + 'util/clipBoxToDisplayedArea': _util_clip_js__WEBPACK_IMPORTED_MODULE_8__["clipBoxToDisplayedArea"], + 'util/debounce': _util_debounce__WEBPACK_IMPORTED_MODULE_9__["default"], + 'util/deepmerge': _util_deepmerge__WEBPACK_IMPORTED_MODULE_10__["default"], + 'util/getDefault': _util_getDefault__WEBPACK_IMPORTED_MODULE_11__["default"], + 'util/getProximityThreshold': _util_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_20__["default"], + 'util/getPixelSpacing': _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_12__["default"], + 'util/isEmptyObject': _util_isEmptyObject__WEBPACK_IMPORTED_MODULE_13__["default"], + 'util/isObject': _util_isObject__WEBPACK_IMPORTED_MODULE_14__["default"], + 'util/isPointInImage': _util_isPointInImage__WEBPACK_IMPORTED_MODULE_15__["default"], + 'util/isPointInPolygon': _util_isPointInPolygon__WEBPACK_IMPORTED_MODULE_16__["default"], + 'util/getLogger': _util_logger__WEBPACK_IMPORTED_MODULE_37__["getLogger"], + 'util/throttle': _util_throttle__WEBPACK_IMPORTED_MODULE_17__["default"], + 'util/wait': _util_wait__WEBPACK_IMPORTED_MODULE_18__["wait"], + 'util/waitForEnabledElementImageToLoad': _util_wait__WEBPACK_IMPORTED_MODULE_18__["waitForEnabledElementImageToLoad"], + 'util/getKeyPressData': _util_getKeyPressData__WEBPACK_IMPORTED_MODULE_19__["default"], // Whole tool specific util packages - 'util/ellipseUtils': _util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_30__["default"], - 'util/freehandUtils': _util_freehand_index_js__WEBPACK_IMPORTED_MODULE_31__["default"], - 'util/segmentationUtils': _util_segmentation__WEBPACK_IMPORTED_MODULE_32__, - 'util/zoomUtils': _util_zoom_index_js__WEBPACK_IMPORTED_MODULE_33__["default"] + 'util/ellipseUtils': _util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_45__["default"], + 'util/freehandUtils': _util_freehand_index_js__WEBPACK_IMPORTED_MODULE_46__["default"], + 'util/segmentationUtils': _util_segmentation__WEBPACK_IMPORTED_MODULE_47__, + 'util/zoomUtils': _util_zoom_index_js__WEBPACK_IMPORTED_MODULE_48__["default"] }; /***/ }), @@ -8372,6 +8034,48 @@ var _isHandleNearImagePoint = function _isHandleNearImagePoint(handle, element, /***/ }), +/***/ "./manipulators/getHandlePixelPosition.js": +/*!************************************************!*\ + !*** ./manipulators/getHandlePixelPosition.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../store/index.js */ "./store/index.js"); + + +/** + * Return the handle position considering offset for touch interaction. + * @public + * @function getHandlePixelPosition + * @memberof Manipulators + * + * @param {Object} eventData - Data object associated with the event + * @param {string} interactionType - Type of user's input + * @returns {Object} - The translated point object + */ + +/* harmony default export */ __webpack_exports__["default"] = (function (eventData, interactionType) { + var currentPoints = eventData.currentPoints, + element = eventData.element; + var page = currentPoints.page; + var handleTouchOffset = _store_index_js__WEBPACK_IMPORTED_MODULE_1__["state"].handleTouchOffset; + var offsetX = 0; + var offsetY = 0; + + if (interactionType === 'touch') { + offsetX = handleTouchOffset.x; + offsetY = handleTouchOffset.y; + } + + return _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.pageToPixel(element, page.x + offsetX, page.y + offsetY); +}); + +/***/ }), + /***/ "./manipulators/handleActivator.js": /*!*****************************************!*\ !*** ./manipulators/handleActivator.js ***! @@ -8446,7 +8150,7 @@ function _getActiveHandle(handles) { /*!*******************************!*\ !*** ./manipulators/index.js ***! \*******************************/ -/*! exports provided: anyHandlesOutsideImage, getHandleNearImagePoint, handleActivator, moveAllHandles, moveHandle, moveNewHandle */ +/*! exports provided: anyHandlesOutsideImage, getHandleNearImagePoint, getHandlePixelPosition, handleActivator, moveAllHandles, moveHandle, moveNewHandle */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -8457,17 +8161,21 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getHandleNearImagePoint.js */ "./manipulators/getHandleNearImagePoint.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getHandleNearImagePoint", function() { return _getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_1__["default"]; }); -/* harmony import */ var _handleActivator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./handleActivator.js */ "./manipulators/handleActivator.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "handleActivator", function() { return _handleActivator_js__WEBPACK_IMPORTED_MODULE_2__["default"]; }); +/* harmony import */ var _getHandlePixelPosition_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getHandlePixelPosition.js */ "./manipulators/getHandlePixelPosition.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getHandlePixelPosition", function() { return _getHandlePixelPosition_js__WEBPACK_IMPORTED_MODULE_2__["default"]; }); -/* harmony import */ var _moveAllHandles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./moveAllHandles.js */ "./manipulators/moveAllHandles.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "moveAllHandles", function() { return _moveAllHandles_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }); +/* harmony import */ var _handleActivator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./handleActivator.js */ "./manipulators/handleActivator.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "handleActivator", function() { return _handleActivator_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }); -/* harmony import */ var _moveHandle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./moveHandle.js */ "./manipulators/moveHandle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "moveHandle", function() { return _moveHandle_js__WEBPACK_IMPORTED_MODULE_4__["default"]; }); +/* harmony import */ var _moveAllHandles_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./moveAllHandles.js */ "./manipulators/moveAllHandles.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "moveAllHandles", function() { return _moveAllHandles_js__WEBPACK_IMPORTED_MODULE_4__["default"]; }); + +/* harmony import */ var _moveHandle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./moveHandle.js */ "./manipulators/moveHandle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "moveHandle", function() { return _moveHandle_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }); + +/* harmony import */ var _moveNewHandle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./moveNewHandle.js */ "./manipulators/moveNewHandle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "moveNewHandle", function() { return _moveNewHandle_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }); -/* harmony import */ var _moveNewHandle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./moveNewHandle.js */ "./manipulators/moveNewHandle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "moveNewHandle", function() { return _moveNewHandle_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }); @@ -8508,7 +8216,9 @@ __webpack_require__.r(__webpack_exports__); + var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_9__["getLogger"])('manipulators:moveAllHandles'); +var manipulatorStateModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_6__["getModule"])('manipulatorState'); var _dragEvents = { mouse: [_events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MOUSE_DRAG], touch: [_events_js__WEBPACK_IMPORTED_MODULE_0__["default"].TOUCH_DRAG] @@ -8557,6 +8267,10 @@ var _upOrEndEvents = { }, evt, doneMovingCallback); }; + manipulatorStateModule.setters.addActiveManipulatorForElement(element, _cancelEventHandler.bind(null, annotation, options, interactionType, { + dragHandler: dragHandler, + upOrEndHandler: upOrEndHandler + }, element, doneMovingCallback)); annotation.active = true; _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].isToolLocked = true; // Add Event Listeners @@ -8612,6 +8326,8 @@ function _dragHandler(toolName, annotation) { var eventType = _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MEASUREMENT_MODIFIED; var modifiedEventData = { toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: annotation }; @@ -8620,18 +8336,58 @@ function _dragHandler(toolName, annotation) { evt.stopPropagation(); } +function _cancelEventHandler(annotation) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var interactionType = arguments.length > 2 ? arguments[2] : undefined; + + var _ref2 = arguments.length > 3 ? arguments[3] : undefined, + dragHandler = _ref2.dragHandler, + upOrEndHandler = _ref2.upOrEndHandler; + + var element = arguments.length > 4 ? arguments[4] : undefined; + var doneMovingCallback = arguments.length > 5 ? arguments[5] : undefined; + + _endHandler(annotation, options, interactionType, { + dragHandler: dragHandler, + upOrEndHandler: upOrEndHandler + }, element, doneMovingCallback, false); +} + function _upOrEndHandler(toolName, annotation) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var interactionType = arguments.length > 3 ? arguments[3] : undefined; - var _ref2 = arguments.length > 4 ? arguments[4] : undefined, - dragHandler = _ref2.dragHandler, - upOrEndHandler = _ref2.upOrEndHandler; + var _ref3 = arguments.length > 4 ? arguments[4] : undefined, + dragHandler = _ref3.dragHandler, + upOrEndHandler = _ref3.upOrEndHandler; var evt = arguments.length > 5 ? arguments[5] : undefined; var doneMovingCallback = arguments.length > 6 ? arguments[6] : undefined; var eventData = evt.detail; - var element = evt.detail.element; + var element = eventData.element; + manipulatorStateModule.setters.removeActiveManipulatorForElement(element); // If any handle is outside the image, delete the tool data + + if (options.deleteIfHandleOutsideImage && Object(_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_2__["default"])(eventData, annotation.handles)) { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["removeToolState"])(element, toolName, annotation); + } + + _endHandler(annotation, options, interactionType, { + dragHandler: dragHandler, + upOrEndHandler: upOrEndHandler + }, element, doneMovingCallback, true); +} + +function _endHandler(annotation) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var interactionType = arguments.length > 2 ? arguments[2] : undefined; + + var _ref4 = arguments.length > 3 ? arguments[3] : undefined, + dragHandler = _ref4.dragHandler, + upOrEndHandler = _ref4.upOrEndHandler; + + var element = arguments.length > 4 ? arguments[4] : undefined; + var doneMovingCallback = arguments.length > 5 ? arguments[5] : undefined; + var success = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true; annotation.active = false; annotation.invalidated = true; _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].isToolLocked = false; // Remove Event Listeners @@ -8642,20 +8398,15 @@ function _upOrEndHandler(toolName, annotation) { _upOrEndEvents[interactionType].forEach(function (eventType) { element.removeEventListener(eventType, upOrEndHandler); - }); // If any handle is outside the image, delete the tool data - - - if (options.deleteIfHandleOutsideImage && Object(_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_2__["default"])(eventData, annotation.handles)) { - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["removeToolState"])(element, toolName, annotation); - } + }); if (typeof options.doneMovingCallback === 'function') { logger.warn('`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details.'); - options.doneMovingCallback(); + options.doneMovingCallback(success); } if (typeof doneMovingCallback === 'function') { - doneMovingCallback(); + doneMovingCallback(success); } _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.updateImage(element); @@ -8675,13 +8426,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ "./events.js"); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); /* harmony import */ var _anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./anyHandlesOutsideImage.js */ "./manipulators/anyHandlesOutsideImage.js"); -/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/triggerEvent.js */ "./util/triggerEvent.js"); -/* harmony import */ var _util_clip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/clip.js */ "./util/clip.js"); -/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../store/index.js */ "./store/index.js"); -/* harmony import */ var _util_getActiveTool__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/getActiveTool */ "./util/getActiveTool.js"); -/* harmony import */ var _tools_base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../tools/base/BaseAnnotationTool */ "./tools/base/BaseAnnotationTool.js"); -/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/logger.js */ "./util/logger.js"); +/* harmony import */ var _getHandlePixelPosition_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHandlePixelPosition.js */ "./manipulators/getHandlePixelPosition.js"); +/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); +/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/triggerEvent.js */ "./util/triggerEvent.js"); +/* harmony import */ var _util_clip_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/clip.js */ "./util/clip.js"); +/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../store/index.js */ "./store/index.js"); +/* harmony import */ var _util_getActiveTool__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/getActiveTool */ "./util/getActiveTool.js"); +/* harmony import */ var _tools_base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../tools/base/BaseAnnotationTool */ "./tools/base/BaseAnnotationTool.js"); +/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/logger.js */ "./util/logger.js"); @@ -8692,7 +8444,10 @@ __webpack_require__.r(__webpack_exports__); -var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_9__["getLogger"])('manipulators:moveHandle'); + + +var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_10__["getLogger"])('manipulators:moveHandle'); +var manipulatorStateModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_7__["getModule"])('manipulatorState'); var runAnimation = { value: false }; @@ -8729,24 +8484,29 @@ var _upOrEndEvents = { var doneMovingCallback = arguments.length > 6 ? arguments[6] : undefined; // Use global defaults, unless overidden by provided options options = Object.assign({ - deleteIfHandleOutsideImage: _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].deleteIfHandleOutsideImage, - preventHandleOutsideImage: _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].preventHandleOutsideImage + deleteIfHandleOutsideImage: _store_index_js__WEBPACK_IMPORTED_MODULE_7__["state"].deleteIfHandleOutsideImage, + preventHandleOutsideImage: _store_index_js__WEBPACK_IMPORTED_MODULE_7__["state"].preventHandleOutsideImage }, options); var element = evtDetail.element; var dragHandler = _dragHandler.bind(this, toolName, annotation, handle, options, interactionType); // So we don't need to inline the entire `upOrEndHandler` function - var upOrEndHandler = function upOrEndHandler(evt) { + var upOrEndHandler = function upOrEndHandler() { _upOrEndHandler(toolName, evtDetail, annotation, handle, options, interactionType, { dragHandler: dragHandler, upOrEndHandler: upOrEndHandler - }, evt, doneMovingCallback); + }, doneMovingCallback); }; + manipulatorStateModule.setters.addActiveManipulatorForElement(element, _cancelEventHandler.bind(null, toolName, evtDetail, annotation, handle, options, interactionType, { + dragHandler: dragHandler, + upOrEndHandler: upOrEndHandler + }, doneMovingCallback)); handle.active = true; + handle.moving = true; annotation.active = true; - _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].isToolLocked = true; // Add Event Listeners + _store_index_js__WEBPACK_IMPORTED_MODULE_7__["state"].isToolLocked = true; // Add Event Listeners _dragEvents[interactionType].forEach(function (eventType) { element.addEventListener(eventType, dragHandler); @@ -8761,15 +8521,8 @@ var _upOrEndEvents = { if (interactionType === 'touch') { runAnimation.value = true; - var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.getEnabledElement(element); // Average pixel width of index finger is 45-57 pixels - // https://www.smashingmagazine.com/2012/02/finger-friendly-design-ideal-mobile-touchscreen-target-sizes/ - - var fingerDistance = -57; - var aboveFinger = { - x: evtDetail.currentPoints.page.x, - y: evtDetail.currentPoints.page.y + fingerDistance - }; - var targetLocation = _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.pageToPixel(element, aboveFinger.x, aboveFinger.y); + var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.getEnabledElement(element); + var targetLocation = Object(_getHandlePixelPosition_js__WEBPACK_IMPORTED_MODULE_3__["default"])(evtDetail, interactionType); _animate(handle, runAnimation, enabledElement, targetLocation); } @@ -8778,12 +8531,9 @@ var _upOrEndEvents = { function _dragHandler(toolName, annotation, handle, options, interactionType, evt) { var _evt$detail = evt.detail, image = _evt$detail.image, - currentPoints = _evt$detail.currentPoints, element = _evt$detail.element, buttons = _evt$detail.buttons; - var page = currentPoints.page; - var fingerOffset = -57; - var targetLocation = _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.pageToPixel(element, page.x, interactionType === 'touch' ? page.y + fingerOffset : page.y); + var targetLocation = Object(_getHandlePixelPosition_js__WEBPACK_IMPORTED_MODULE_3__["default"])(evt.detail, interactionType); runAnimation.value = false; handle.active = true; handle.hasMoved = true; @@ -8793,26 +8543,28 @@ function _dragHandler(toolName, annotation, handle, options, interactionType, ev annotation.invalidated = true; if (options.preventHandleOutsideImage) { - Object(_util_clip_js__WEBPACK_IMPORTED_MODULE_5__["clipToBox"])(handle, image); + Object(_util_clip_js__WEBPACK_IMPORTED_MODULE_6__["clipToBox"])(handle, image); } _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.updateImage(element); - var activeTool = Object(_util_getActiveTool__WEBPACK_IMPORTED_MODULE_7__["default"])(element, buttons, interactionType); + var activeTool = Object(_util_getActiveTool__WEBPACK_IMPORTED_MODULE_8__["default"])(element, buttons, interactionType); - if (activeTool instanceof _tools_base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_8__["default"]) { + if (activeTool instanceof _tools_base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_9__["default"]) { activeTool.updateCachedStats(image, element, annotation); } var eventType = _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MEASUREMENT_MODIFIED; var modifiedEventData = { toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: annotation }; - Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element, eventType, modifiedEventData); + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element, eventType, modifiedEventData); } -function _upOrEndHandler(toolName, evtDetail, annotation, handle) { +function _cancelEventHandler(toolName, evtDetail, annotation, handle) { var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; var interactionType = arguments.length > 5 ? arguments[5] : undefined; @@ -8820,16 +8572,49 @@ function _upOrEndHandler(toolName, evtDetail, annotation, handle) { dragHandler = _ref.dragHandler, upOrEndHandler = _ref.upOrEndHandler; - var evt = arguments.length > 7 ? arguments[7] : undefined; - var doneMovingCallback = arguments.length > 8 ? arguments[8] : undefined; - var image = evtDetail.currentPoints.image; - var element = evt.detail.element; - handle.active = false; - annotation.active = false; // TODO: A way to not flip this for textboxes on annotations + var doneMovingCallback = arguments.length > 7 ? arguments[7] : undefined; + _endHandler(toolName, evtDetail, annotation, handle, options, interactionType, { + dragHandler: dragHandler, + upOrEndHandler: upOrEndHandler + }, doneMovingCallback, false); +} + +function _upOrEndHandler(toolName, evtDetail, annotation, handle) { + var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var interactionType = arguments.length > 5 ? arguments[5] : undefined; + + var _ref2 = arguments.length > 6 ? arguments[6] : undefined, + dragHandler = _ref2.dragHandler, + upOrEndHandler = _ref2.upOrEndHandler; + + var doneMovingCallback = arguments.length > 7 ? arguments[7] : undefined; + var element = evtDetail.element; + manipulatorStateModule.setters.removeActiveManipulatorForElement(element); + + _endHandler(toolName, evtDetail, annotation, handle, options, interactionType, { + dragHandler: dragHandler, + upOrEndHandler: upOrEndHandler + }, doneMovingCallback, true); +} + +function _endHandler(toolName, evtDetail, annotation, handle) { + var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var interactionType = arguments.length > 5 ? arguments[5] : undefined; + + var _ref3 = arguments.length > 6 ? arguments[6] : undefined, + dragHandler = _ref3.dragHandler, + upOrEndHandler = _ref3.upOrEndHandler; + + var doneMovingCallback = arguments.length > 7 ? arguments[7] : undefined; + var success = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : true; + var element = evtDetail.element; + handle.active = false; + handle.moving = false; + annotation.active = false; annotation.invalidated = true; - _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].isToolLocked = false; - runAnimation.value = false; // Remove Event Listeners + runAnimation.value = false; + _store_index_js__WEBPACK_IMPORTED_MODULE_7__["state"].isToolLocked = false; // Remove Event Listeners _dragEvents[interactionType].forEach(function (eventType) { element.removeEventListener(eventType, dragHandler); @@ -8841,24 +8626,22 @@ function _upOrEndHandler(toolName, evtDetail, annotation, handle) { if (options.deleteIfHandleOutsideImage && Object(_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_2__["default"])(evtDetail, annotation.handles)) { - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["removeToolState"])(element, toolName, annotation); - } // TODO: What dark magic makes us want to handle TOUCH_PRESS differently? + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__["removeToolState"])(element, toolName, annotation); + } // // TODO: What dark magic makes us want to handle TOUCH_PRESS differently? + // if (evt.type === EVENTS.TOUCH_PRESS) { + // evt.detail.handlePressed = annotation; + // handle.x = image.x; // Original Event + // handle.y = image.y; + // } - if (evt.type === _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].TOUCH_PRESS) { - evt.detail.handlePressed = annotation; - handle.x = image.x; // Original Event - - handle.y = image.y; - } - if (typeof options.doneMovingCallback === 'function') { logger.warn('`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details.'); - options.doneMovingCallback(); + options.doneMovingCallback(success); } if (typeof doneMovingCallback === 'function') { - doneMovingCallback(); + doneMovingCallback(success); } _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.updateImage(element); @@ -8919,13 +8702,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ "./events.js"); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); /* harmony import */ var _anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./anyHandlesOutsideImage.js */ "./manipulators/anyHandlesOutsideImage.js"); -/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/triggerEvent.js */ "./util/triggerEvent.js"); -/* harmony import */ var _util_clip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/clip.js */ "./util/clip.js"); -/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../store/index.js */ "./store/index.js"); -/* harmony import */ var _util_getActiveTool__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/getActiveTool */ "./util/getActiveTool.js"); -/* harmony import */ var _tools_base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../tools/base/BaseAnnotationTool */ "./tools/base/BaseAnnotationTool.js"); -/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/logger.js */ "./util/logger.js"); +/* harmony import */ var _getHandlePixelPosition_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHandlePixelPosition.js */ "./manipulators/getHandlePixelPosition.js"); +/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); +/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/triggerEvent.js */ "./util/triggerEvent.js"); +/* harmony import */ var _util_clip_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/clip.js */ "./util/clip.js"); +/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../store/index.js */ "./store/index.js"); +/* harmony import */ var _util_getActiveTool__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/getActiveTool */ "./util/getActiveTool.js"); +/* harmony import */ var _tools_base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../tools/base/BaseAnnotationTool */ "./tools/base/BaseAnnotationTool.js"); +/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/logger.js */ "./util/logger.js"); @@ -8936,7 +8720,10 @@ __webpack_require__.r(__webpack_exports__); -var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_9__["getLogger"])('manipulators:moveNewHandle'); + + +var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_10__["getLogger"])('manipulators:moveNewHandle'); +var manipulatorStateModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_7__["getModule"])('manipulatorState'); var _moveEvents = { mouse: [_events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MOUSE_MOVE, _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MOUSE_DRAG], touch: [_events_js__WEBPACK_IMPORTED_MODULE_0__["default"].TOUCH_DRAG] @@ -8947,11 +8734,12 @@ var _moveEndEvents = { }; /** * Move a new handle + * * @public * @method moveNewHandle * @memberof Manipulators * - * @param {*} evtDetail + * @param {*} eventData * @param {*} toolName * @param {*} annotation * @param {*} handle @@ -8963,24 +8751,23 @@ var _moveEndEvents = { * @returns {void} */ -/* harmony default export */ __webpack_exports__["default"] = (function (evtDetail, toolName, annotation, handle, options) { +/* harmony default export */ __webpack_exports__["default"] = (function (eventData, toolName, annotation, handle, options) { var interactionType = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'mouse'; var doneMovingCallback = arguments.length > 6 ? arguments[6] : undefined; // Use global defaults, unless overidden by provided options options = Object.assign({ - deleteIfHandleOutsideImage: _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].deleteIfHandleOutsideImage, - preventHandleOutsideImage: _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].preventHandleOutsideImage + deleteIfHandleOutsideImage: _store_index_js__WEBPACK_IMPORTED_MODULE_7__["state"].deleteIfHandleOutsideImage, + preventHandleOutsideImage: _store_index_js__WEBPACK_IMPORTED_MODULE_7__["state"].preventHandleOutsideImage }, options); - var element = evtDetail.element; + options.hasMoved = false; + var element = eventData.element; annotation.active = true; + handle.moving = true; handle.active = true; - _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].isToolLocked = true; + _store_index_js__WEBPACK_IMPORTED_MODULE_7__["state"].isToolLocked = true; function moveHandler(evt) { - _moveHandler(toolName, annotation, handle, options, interactionType, { - moveHandler: moveHandler, - moveEndHandler: moveEndHandler - }, evt); + _moveHandler(toolName, annotation, handle, options, interactionType, evt); } // So we don't need to inline the entire `moveEndEventHandler` function @@ -8989,7 +8776,11 @@ var _moveEndEvents = { moveHandler: moveHandler, moveEndHandler: moveEndHandler }, evt, doneMovingCallback); - } // Add event listeners + } // Factory function + // begin, end, cancel + // Or... Handle "CANCEL" + // TODO: SETUP IN all other manipulators + // Add event listeners _moveEvents[interactionType].forEach(function (eventType) { @@ -8997,65 +8788,75 @@ var _moveEndEvents = { }); element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_0__["default"].TOUCH_START, _stopImmediatePropagation); -}); - -function _moveHandler(toolName, annotation, handle, options, interactionType, _ref, evt) { - var moveEndHandler = _ref.moveEndHandler; - var _evt$detail = evt.detail, - currentPoints = _evt$detail.currentPoints, - image = _evt$detail.image, - element = _evt$detail.element, - buttons = _evt$detail.buttons; // Add moveEndEvent Handler when move trigger _moveEndEvents[interactionType].forEach(function (eventType) { element.addEventListener(eventType, moveEndHandler); - }); + }); // When cancelling... What is our active tool? + // `isToolLocked` ... Track which (annotation) tool is being manipulated + // If not "completed", removeToolState (maybe an `isComplete` flag) + // 5 locations: MEASUREMENT_COMPLETED + // Firing event... Sets `isCompleted` flag for annotation uuid - var page = currentPoints.page; - var fingerOffset = -57; - var targetLocation = _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.pageToPixel(element, interactionType === 'touch' ? page.x + fingerOffset : page.x, interactionType === 'touch' ? page.y + fingerOffset : page.y); + + manipulatorStateModule.setters.addActiveManipulatorForElement(element, _cancelEventHandler.bind(null, annotation, handle, options, interactionType, { + moveHandler: moveHandler, + moveEndHandler: moveEndHandler + }, element, doneMovingCallback)); +}); +/** + * Updates annotation as the "pointer" is moved/dragged + * Emits `cornerstonetoolsmeasurementmodified` events + * + * @param {string} toolName + * @param {*} annotation + * @param {*} handle + * @param {*} options + * @param {string} interactionType + * @param {*} evt + * + * @returns {void} + */ + +function _moveHandler(toolName, annotation, handle, options, interactionType, evt) { + var _evt$detail = evt.detail, + image = _evt$detail.image, + element = _evt$detail.element, + buttons = _evt$detail.buttons; + var targetLocation = Object(_getHandlePixelPosition_js__WEBPACK_IMPORTED_MODULE_3__["default"])(evt.detail, interactionType); + options.hasMoved = true; annotation.invalidated = true; handle.active = true; handle.x = targetLocation.x; handle.y = targetLocation.y; if (options && options.preventHandleOutsideImage) { - Object(_util_clip_js__WEBPACK_IMPORTED_MODULE_5__["clipToBox"])(handle, image); + Object(_util_clip_js__WEBPACK_IMPORTED_MODULE_6__["clipToBox"])(handle, image); } _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.updateImage(element); - var activeTool = Object(_util_getActiveTool__WEBPACK_IMPORTED_MODULE_7__["default"])(element, buttons, interactionType); + var activeTool = Object(_util_getActiveTool__WEBPACK_IMPORTED_MODULE_8__["default"])(element, buttons, interactionType); - if (activeTool instanceof _tools_base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_8__["default"]) { + if (activeTool instanceof _tools_base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_9__["default"]) { activeTool.updateCachedStats(image, element, annotation); } var eventType = _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MEASUREMENT_MODIFIED; var modifiedEventData = { toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: annotation }; - Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element, eventType, modifiedEventData); + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element, eventType, modifiedEventData); } -function _moveEndHandler(toolName, annotation, handle, options, interactionType, _ref2, evt, doneMovingCallback) { - var moveHandler = _ref2.moveHandler, - moveEndHandler = _ref2.moveEndHandler; - var _evt$detail2 = evt.detail, - element = _evt$detail2.element, - currentPoints = _evt$detail2.currentPoints; - var page = currentPoints.page; - var fingerOffset = -57; - var targetLocation = _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.pageToPixel(element, interactionType === 'touch' ? page.x + fingerOffset : page.x, interactionType === 'touch' ? page.y + fingerOffset : page.y); // "Release" the handle - - annotation.active = false; - annotation.invalidated = true; - handle.active = false; - handle.x = targetLocation.x; - handle.y = targetLocation.y; - _store_index_js__WEBPACK_IMPORTED_MODULE_6__["state"].isToolLocked = false; // Remove event listeners +function _endHandler(interactionType, options, element, _ref, doneMovingCallback) { + var moveHandler = _ref.moveHandler, + moveEndHandler = _ref.moveEndHandler; + var success = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + // Remove event listeners _moveEvents[interactionType].forEach(function (eventType) { element.removeEventListener(eventType, moveHandler); }); @@ -9064,46 +8865,88 @@ function _moveEndHandler(toolName, annotation, handle, options, interactionType, element.removeEventListener(eventType, moveEndHandler); }); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_0__["default"].TOUCH_START, _stopImmediatePropagation); // TODO: WHY? - // Why would a Touch_Pinch or Touch_Press be associated with a new handle? + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_0__["default"].TOUCH_START, _stopImmediatePropagation); + _store_index_js__WEBPACK_IMPORTED_MODULE_7__["state"].isToolLocked = false; - if (evt.type === _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].TOUCH_PINCH || evt.type === _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].TOUCH_PRESS) { - handle.active = false; - _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.updateImage(element); - - if (typeof options.doneMovingCallback === 'function') { - logger.warn('`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details.'); - options.doneMovingCallback(); - } - - if (typeof doneMovingCallback === 'function') { - doneMovingCallback(); - } - - return; - } - - if (options.preventHandleOutsideImage) { - Object(_util_clip_js__WEBPACK_IMPORTED_MODULE_5__["clipToBox"])(handle, evt.detail.image); - } // If any handle is outside the image, delete the tool data - - - if (options.deleteIfHandleOutsideImage && Object(_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_2__["default"])(evt.detail, annotation.handles)) { - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["removeToolState"])(element, toolName, annotation); + if (typeof doneMovingCallback === 'function') { + doneMovingCallback(success); } if (typeof options.doneMovingCallback === 'function') { logger.warn('`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details.'); - options.doneMovingCallback(); - } - - if (typeof doneMovingCallback === 'function') { - doneMovingCallback(); + options.doneMovingCallback(success); } // Update Image _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.updateImage(element); } + +function _moveEndHandler(toolName, annotation, handle, options, interactionType, _ref2, evt, doneMovingCallback) { + var moveHandler = _ref2.moveHandler, + moveEndHandler = _ref2.moveEndHandler; + var eventData = evt.detail; + var element = eventData.element; + var moveNewHandleSuccessful = true; + + if (options.hasMoved === false) { + return; + } + + var targetLocation = Object(_getHandlePixelPosition_js__WEBPACK_IMPORTED_MODULE_3__["default"])(eventData, interactionType); // "Release" the handle + + annotation.active = false; + annotation.invalidated = true; + handle.active = false; + handle.moving = false; + handle.x = targetLocation.x; + handle.y = targetLocation.y; + manipulatorStateModule.setters.removeActiveManipulatorForElement(element); // TODO: WHY? + // Why would a Touch_Pinch or Touch_Press be associated with a new handle? + // if (evt.type === EVENTS.TOUCH_PINCH || evt.type === EVENTS.TOUCH_PRESS) { + // handle.active = false; + // external.cornerstone.updateImage(element); + // if (typeof options.doneMovingCallback === 'function') { + // logger.warn( + // '`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details.' + // ); + // options.doneMovingCallback(success); + // } + // if (typeof doneMovingCallback === 'function') { + // doneMovingCallback(success); + // } + // return; + // } + + if (options.preventHandleOutsideImage) { + Object(_util_clip_js__WEBPACK_IMPORTED_MODULE_6__["clipToBox"])(handle, evt.detail.image); + } // If any handle is outside the image, delete the tool data + + + if (options.deleteIfHandleOutsideImage && Object(_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_2__["default"])(evt.detail, annotation.handles)) { + annotation.cancelled = true; + moveNewHandleSuccessful = false; + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__["removeToolState"])(element, toolName, annotation); + } + + _endHandler(interactionType, options, element, { + moveHandler: moveHandler, + moveEndHandler: moveEndHandler + }, doneMovingCallback, moveNewHandleSuccessful); +} + +function _cancelEventHandler(annotation, handle, options, interactionType, _ref3, element, doneMovingCallback) { + var moveHandler = _ref3.moveHandler, + moveEndHandler = _ref3.moveEndHandler; + // "Release" the handle + annotation.active = false; + annotation.invalidated = true; + handle.active = false; + + _endHandler(interactionType, options, element, { + moveHandler: moveHandler, + moveEndHandler: moveEndHandler + }, doneMovingCallback, false); +} /** * Stop the CornerstoneToolsTouchStart event from * Becoming a CornerstoneToolsTouchStartActive event when @@ -9230,6 +9073,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _segmentation_polylineSegmentationMixin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./segmentation/polylineSegmentationMixin.js */ "./mixins/segmentation/polylineSegmentationMixin.js"); /* harmony import */ var _segmentation_freehandSegmentationMixin_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./segmentation/freehandSegmentationMixin.js */ "./mixins/segmentation/freehandSegmentationMixin.js"); /* harmony import */ var _segmentation_rectangleSegmentationMixin_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./segmentation/rectangleSegmentationMixin.js */ "./mixins/segmentation/rectangleSegmentationMixin.js"); +/* harmony import */ var _segmentation_renderBrushMixin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./segmentation/renderBrushMixin.js */ "./mixins/segmentation/renderBrushMixin.js"); + @@ -9242,7 +9087,8 @@ __webpack_require__.r(__webpack_exports__); circleSegmentationMixin: _segmentation_circleSegmentationMixin_js__WEBPACK_IMPORTED_MODULE_2__["default"], polylineSegmentationMixin: _segmentation_polylineSegmentationMixin_js__WEBPACK_IMPORTED_MODULE_3__["default"], freehandSegmentationMixin: _segmentation_freehandSegmentationMixin_js__WEBPACK_IMPORTED_MODULE_4__["default"], - rectangleSegmentationMixin: _segmentation_rectangleSegmentationMixin_js__WEBPACK_IMPORTED_MODULE_5__["default"] + rectangleSegmentationMixin: _segmentation_rectangleSegmentationMixin_js__WEBPACK_IMPORTED_MODULE_5__["default"], + renderBrushMixin: _segmentation_renderBrushMixin_js__WEBPACK_IMPORTED_MODULE_6__["default"] }); /***/ }), @@ -9887,6 +9733,81 @@ function _resetHandles() { /***/ }), +/***/ "./mixins/segmentation/renderBrushMixin.js": +/*!*************************************************!*\ + !*** ./mixins/segmentation/renderBrushMixin.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../../store/index.js */ "./store/index.js"); + + +/** + * Called by the event dispatcher to render the image. + * + * @param {Object} evt - The event. + * @returns {void} + */ + +function renderBrush(evt) { + var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone; + + var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_1__["getModule"])('segmentation'), + getters = _getModule.getters, + configuration = _getModule.configuration; + + var eventData = evt.detail; + var viewport = eventData.viewport; + var mousePosition; + + if (this._drawing) { + mousePosition = this._lastImageCoords; + } else if (this._mouseUpRender) { + mousePosition = this._lastImageCoords; + this._mouseUpRender = false; + } else { + mousePosition = _store_index_js__WEBPACK_IMPORTED_MODULE_1__["default"].state.mousePositionImage; + } + + if (!mousePosition) { + return; + } + + var _eventData$image = eventData.image, + rows = _eventData$image.rows, + columns = _eventData$image.columns; + var _mousePosition = mousePosition, + x = _mousePosition.x, + y = _mousePosition.y; + + if (x < 0 || x > columns || y < 0 || y > rows) { + return; + } // Draw the hover overlay on top of the pixel data + + + var radius = configuration.radius; + var context = eventData.canvasContext; + var element = eventData.element; + var color = getters.brushColor(element, this._drawing); + context.setTransform(1, 0, 0, 1, 0, 0); + var circleRadius = radius * viewport.scale; + var mouseCoordsCanvas = cornerstone.pixelToCanvas(element, mousePosition); + context.beginPath(); + context.strokeStyle = color; + context.ellipse(mouseCoordsCanvas.x, mouseCoordsCanvas.y, circleRadius, circleRadius, 0, 0, 2 * Math.PI); + context.stroke(); +} + +/* harmony default export */ __webpack_exports__["default"] = ({ + renderBrush: renderBrush +}); + +/***/ }), + /***/ "./orientation/getOrientationString.js": /*!*********************************************!*\ !*** ./orientation/getOrientationString.js ***! @@ -9919,17 +9840,30 @@ __webpack_require__.r(__webpack_exports__); var orientationZ = vec3.z < 0 ? 'F' : 'H'; // Should probably make this a function vector3.abs var abs = new _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.Vector3(Math.abs(vec3.x), Math.abs(vec3.y), Math.abs(vec3.z)); + var MIN = 0.0001; for (var i = 0; i < 3; i++) { - if (abs.x > 0.0001 && abs.x > abs.y && abs.x > abs.z) { + if (abs.x > MIN && abs.x > abs.y && abs.x > abs.z) { orientation += orientationX; abs.x = 0; - } else if (abs.y > 0.0001 && abs.y > abs.x && abs.y > abs.z) { + } else if (abs.y > MIN && abs.y > abs.x && abs.y > abs.z) { orientation += orientationY; abs.y = 0; - } else if (abs.z > 0.0001 && abs.z > abs.x && abs.z > abs.y) { + } else if (abs.z > MIN && abs.z > abs.x && abs.z > abs.y) { orientation += orientationZ; abs.z = 0; + } else if (abs.x > MIN && abs.y > MIN && abs.x === abs.y) { + orientation += orientationX + orientationY; + abs.x = 0; + abs.y = 0; + } else if (abs.x > MIN && abs.z > MIN && abs.x === abs.z) { + orientation += orientationX + orientationZ; + abs.x = 0; + abs.z = 0; + } else if (abs.y > MIN && abs.z > MIN && abs.y === abs.z) { + orientation += orientationY + orientationZ; + abs.y = 0; + abs.z = 0; } else { break; } @@ -9991,218 +9925,6 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./requestPool/requestPoolManager.js": -/*!*******************************************!*\ - !*** ./requestPool/requestPoolManager.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); -/* harmony import */ var _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/getMaxSimultaneousRequests.js */ "./util/getMaxSimultaneousRequests.js"); - - -var requestPool = { - interaction: [], - thumbnail: [], - prefetch: [] -}; -var numRequests = { - interaction: 0, - thumbnail: 0, - prefetch: 0 -}; -var maxNumRequests = { - interaction: 6, - thumbnail: 6, - prefetch: 5 -}; -var awake = false; -var grabDelay = 20; - -function addRequest(element, imageId, type, preventCache, doneCallback, failCallback, addToBeginning) { - if (!requestPool.hasOwnProperty(type)) { - throw new Error('Request type must be one of interaction, thumbnail, or prefetch'); - } - - if (!element || !imageId) { - return; - } // Describe the request - - - var requestDetails = { - type: type, - imageId: imageId, - preventCache: preventCache, - doneCallback: doneCallback, - failCallback: failCallback - }; // If this imageId is in the cache, resolve it immediately - - var imageLoadObject = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.imageCache.getImageLoadObject(imageId); - - if (imageLoadObject) { - imageLoadObject.promise.then(function (image) { - doneCallback(image); - }, function (error) { - failCallback(error); - }); - return; - } - - if (addToBeginning) { - // Add it to the beginning of the stack - requestPool[type].unshift(requestDetails); - } else { - // Add it to the end of the stack - requestPool[type].push(requestDetails); - } // Wake up - - - awake = true; -} - -function clearRequestStack(type) { - // Console.log('clearRequestStack'); - if (!requestPool.hasOwnProperty(type)) { - throw new Error('Request type must be one of interaction, thumbnail, or prefetch'); - } - - requestPool[type] = []; -} - -function startAgain() { - if (!awake) { - return; - } - - setTimeout(function () { - startGrabbing(); - }, grabDelay); -} - -function sendRequest(requestDetails) { - var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone; // Increment the number of current requests of this type - - var type = requestDetails.type; - numRequests[type]++; - awake = true; - var imageId = requestDetails.imageId; - var doneCallback = requestDetails.doneCallback; - var failCallback = requestDetails.failCallback; // Check if we already have this image promise in the cache - - var imageLoadObject = cornerstone.imageCache.getImageLoadObject(imageId); - - if (imageLoadObject) { - // If we do, remove from list (when resolved, as we could have - // Pending prefetch requests) and stop processing this iteration - imageLoadObject.promise.then(function (image) { - numRequests[type]--; // Console.log(numRequests); - - doneCallback(image); - startAgain(); - }, function (error) { - numRequests[type]--; // Console.log(numRequests); - - failCallback(error); - startAgain(); - }); - return; - } - - function requestTypeToLoadPriority(requestDetails) { - if (requestDetails.type === 'prefetch') { - return -5; - } else if (requestDetails.type === 'interactive') { - return 0; - } else if (requestDetails.type === 'thumbnail') { - return 5; - } - } - - var priority = requestTypeToLoadPriority(requestDetails); - var loader; - - if (requestDetails.preventCache === true) { - loader = cornerstone.loadImage(imageId, { - priority: priority, - type: requestDetails.type - }); - } else { - loader = cornerstone.loadAndCacheImage(imageId, { - priority: priority, - type: requestDetails.type - }); - } // Load and cache the image - - - loader.then(function (image) { - numRequests[type]--; // Console.log(numRequests); - - doneCallback(image); - startAgain(); - }, function (error) { - numRequests[type]--; // Console.log(numRequests); - - failCallback(error); - startAgain(); - }); -} - -function startGrabbing() { - // Begin by grabbing X images - var maxSimultaneousRequests = Object(_util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_1__["getMaxSimultaneousRequests"])(); - maxNumRequests = { - interaction: Math.max(maxSimultaneousRequests, 1), - thumbnail: Math.max(maxSimultaneousRequests - 2, 1), - prefetch: Math.max(maxSimultaneousRequests - 1, 1) - }; - var currentRequests = numRequests.interaction + numRequests.thumbnail + numRequests.prefetch; - var requestsToSend = maxSimultaneousRequests - currentRequests; - - for (var i = 0; i < requestsToSend; i++) { - var requestDetails = getNextRequest(); - - if (requestDetails) { - sendRequest(requestDetails); - } - } -} - -function getNextRequest() { - if (requestPool.interaction.length && numRequests.interaction < maxNumRequests.interaction) { - return requestPool.interaction.shift(); - } - - if (requestPool.thumbnail.length && numRequests.thumbnail < maxNumRequests.thumbnail) { - return requestPool.thumbnail.shift(); - } - - if (requestPool.prefetch.length && numRequests.prefetch < maxNumRequests.prefetch) { - return requestPool.prefetch.shift(); - } - - if (!requestPool.interaction.length && !requestPool.thumbnail.length && !requestPool.prefetch.length) { - awake = false; - } - - return false; -} - -function getRequestPool() { - return requestPool; -} - -/* harmony default export */ __webpack_exports__["default"] = ({ - addRequest: addRequest, - clearRequestStack: clearRequestStack, - startGrabbing: startGrabbing, - getRequestPool: getRequestPool -}); - -/***/ }), - /***/ "./stackTools/fusionRenderer.js": /*!**************************************!*\ !*** ./stackTools/fusionRenderer.js ***! @@ -10337,7 +10059,7 @@ __webpack_require__.r(__webpack_exports__); -var toolType = 'playClip'; +var toolName = 'playClip'; /** * [private] Turns a Frame Time Vector (0018,1065) array into a normalized array of timeouts. Each element * ... of the resulting array represents the amount of time each frame will remain on the screen. @@ -10461,7 +10183,7 @@ function playClip(element, framesPerSecond) { } var stackData = stackToolData.data[0]; - var playClipToolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, toolType); + var playClipToolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, toolName); if (!playClipToolData || !playClipToolData.data || !playClipToolData.data.length) { playClipData = { @@ -10476,7 +10198,7 @@ function playClip(element, framesPerSecond) { reverse: false, loop: true }; - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["addToolState"])(element, toolType, playClipData); + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["addToolState"])(element, toolName, playClipData); } else { playClipData = playClipToolData.data[0]; // Make sure the specified clip is not running before any property update @@ -10591,7 +10313,7 @@ function playClip(element, framesPerSecond) { function stopClip(element) { - var playClipToolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, toolType); + var playClipToolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, toolName); if (!playClipToolData || !playClipToolData.data || !playClipToolData.data.length) { return; @@ -10614,26 +10336,25 @@ function stopClip(element) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../externalModules.js */ "./externalModules.js"); -/* harmony import */ var _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../requestPool/requestPoolManager.js */ "./requestPool/requestPoolManager.js"); -/* harmony import */ var _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../stateManagement/loadHandlerManager.js */ "./stateManagement/loadHandlerManager.js"); -/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/getMaxSimultaneousRequests.js */ "./util/getMaxSimultaneousRequests.js"); -/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/logger.js */ "./util/logger.js"); -/* harmony import */ var _util_triggerEvent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/triggerEvent */ "./util/triggerEvent.js"); -/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../events.js */ "./events.js"); +/* harmony import */ var _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stateManagement/loadHandlerManager.js */ "./stateManagement/loadHandlerManager.js"); +/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); +/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/logger.js */ "./util/logger.js"); +/* harmony import */ var _util_triggerEvent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/triggerEvent */ "./util/triggerEvent.js"); +/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../events.js */ "./events.js"); - - -var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_5__["getLogger"])('stackTools:stackPrefetch'); -var toolType = 'stackPrefetch'; +var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_3__["getLogger"])('stackTools:stackPrefetch'); +var toolName = 'stackPrefetch'; var requestType = 'prefetch'; +var priority = 0; +var addToBeginning = true; var configuration = { - maxImagesToPrefetch: Infinity + maxImagesToPrefetch: Infinity, + preserveExistingPool: false }; var resetPrefetchTimeout; var resetPrefetchDelay = 10; @@ -10657,35 +10378,27 @@ function range(lowEnd, highEnd) { return arr; } -var max = function max(arr) { - return Math.max.apply(null, arr); -}; - -var min = function min(arr) { - return Math.min.apply(null, arr); -}; - function nearestIndex(arr, x) { // Return index of nearest values in array // http://stackoverflow.com/questions/25854212/return-index-of-nearest-values-in-an-array - var l = []; - var h = []; - arr.forEach(function (v) { + var low = 0; + var high = arr.length - 1; + arr.forEach(function (v, idx) { if (v < x) { - l.push(v); + low = Math.max(idx, low); } else if (v > x) { - h.push(v); + high = Math.min(idx, high); } }); return { - low: arr.indexOf(max(l)), - high: arr.indexOf(min(h)) + low: low, + high: high }; } function prefetch(element) { // Check to make sure stack data exists - var stackData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, 'stack'); + var stackData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["getToolState"])(element, 'stack'); if (!stackData || !stackData.data || !stackData.data.length) { return; @@ -10693,7 +10406,7 @@ function prefetch(element) { var stack = stackData.data[0]; // Get the stackPrefetch tool data - var stackPrefetchData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, toolType); + var stackPrefetchData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["getToolState"])(element, toolName); if (!stackPrefetchData) { return; @@ -10744,10 +10457,13 @@ function prefetch(element) { if (!stackPrefetch.indicesToRequest.length) { return; - } // Clear the requestPool of prefetch requests + } // Clear the requestPool of prefetch requests, if needed. - _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].clearRequestStack(requestType); // Identify the nearest imageIdIndex to the currentImageIdIndex + if (!configuration.preserveExistingPool) { + _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.imageLoadPoolManager.clearRequestStack(requestType); + } // Identify the nearest imageIdIndex to the currentImageIdIndex + var nearest = nearestIndex(stackPrefetch.indicesToRequest, stack.currentImageIdIndex); var imageId; @@ -10758,7 +10474,7 @@ function prefetch(element) { logger.log('prefetch done: %s', image.imageId); var imageIdIndex = stack.imageIds.indexOf(image.imageId); removeFromList(imageIdIndex); - Object(_util_triggerEvent__WEBPACK_IMPORTED_MODULE_6__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__["default"].STACK_PREFETCH_IMAGE_LOADED, { + Object(_util_triggerEvent__WEBPACK_IMPORTED_MODULE_4__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_5__["default"].STACK_PREFETCH_IMAGE_LOADED, { element: element, imageId: image.imageId, imageIndex: imageIdIndex, @@ -10767,7 +10483,7 @@ function prefetch(element) { }); // If there are no more images to fetch if (!(stackPrefetch.indicesToRequest && stackPrefetch.indicesToRequest.length > 0)) { - Object(_util_triggerEvent__WEBPACK_IMPORTED_MODULE_6__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__["default"].STACK_PREFETCH_DONE, { + Object(_util_triggerEvent__WEBPACK_IMPORTED_MODULE_4__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_5__["default"].STACK_PREFETCH_DONE, { element: element, stackPrefetch: stackPrefetch, stack: stack @@ -10776,7 +10492,7 @@ function prefetch(element) { } // Retrieve the errorLoadingHandler if one exists - var errorLoadingHandler = _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_2__["default"].getErrorLoadingHandler(element); + var errorLoadingHandler = _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].getErrorLoadingHandler(element); function failCallback(error) { logger.log('prefetch errored: %o', error); @@ -10789,6 +10505,7 @@ function prefetch(element) { var lowerIndex = nearest.low; var higherIndex = nearest.high; + var imageIdsToPrefetch = []; while (lowerIndex >= 0 || higherIndex < stackPrefetch.indicesToRequest.length) { var currentIndex = stack.currentImageIdIndex; @@ -10804,19 +10521,39 @@ function prefetch(element) { if (shouldLoadLower) { nextImageIdIndex = stackPrefetch.indicesToRequest[lowerIndex--]; imageId = stack.imageIds[nextImageIdIndex]; - _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].addRequest(element, imageId, requestType, preventCache, doneCallback, failCallback); + imageIdsToPrefetch.push(imageId); } if (shouldLoadHigher) { nextImageIdIndex = stackPrefetch.indicesToRequest[higherIndex++]; imageId = stack.imageIds[nextImageIdIndex]; - _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].addRequest(element, imageId, requestType, preventCache, doneCallback, failCallback); + imageIdsToPrefetch.push(imageId); } - } // Try to start the requestPool's grabbing procedure - // In case it isn't already running + } + var requestFn; + var options = { + addToBeginning: addToBeginning, + priority: priority, + requestType: requestType + }; - _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].startGrabbing(); + if (preventCache) { + requestFn = function requestFn(id) { + return _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.loadImage(id, options); + }; + } else { + requestFn = function requestFn(id) { + return _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.loadAndCacheImage(id, options); + }; + } + + imageIdsToPrefetch.reverse().forEach(function (imageId) { + _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.imageLoadPoolManager.addRequest(requestFn.bind(null, imageId), requestType, // Additional details + { + imageId: imageId + }, priority, addToBeginning); + }); } function getPromiseRemovedHandler(element) { @@ -10829,7 +10566,7 @@ function getPromiseRemovedHandler(element) { try { // It will throw an exception in some cases (eg: thumbnails) - stackData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, 'stack'); + stackData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["getToolState"])(element, 'stack'); } catch (error) { return; } @@ -10846,7 +10583,7 @@ function getPromiseRemovedHandler(element) { return; } - var stackPrefetchData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, toolType); + var stackPrefetchData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["getToolState"])(element, toolName); if (!stackPrefetchData || !stackPrefetchData.data || !stackPrefetchData.data.length) { return; @@ -10874,10 +10611,10 @@ function onImageUpdated(e) { function enable(element) { // Clear old prefetch data. Skipping this can cause problems when changing the series inside an element - var stackPrefetchDataArray = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, toolType); + var stackPrefetchDataArray = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["getToolState"])(element, toolName); stackPrefetchDataArray.data = []; // First check that there is stack data available - var stackData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, 'stack'); + var stackData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["getToolState"])(element, 'stack'); if (!stackData || !stackData.data || !stackData.data.length) { return; @@ -10899,7 +10636,7 @@ function enable(element) { var indexOfCurrentImage = stackPrefetchData.indicesToRequest.indexOf(stack.currentImageIdIndex); stackPrefetchData.indicesToRequest.splice(indexOfCurrentImage, 1); - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["addToolState"])(element, toolType, stackPrefetchData); + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["addToolState"])(element, toolName, stackPrefetchData); prefetch(element); element.removeEventListener(_externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.EVENTS.NEW_IMAGE, onImageUpdated); element.addEventListener(_externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.EVENTS.NEW_IMAGE, onImageUpdated); @@ -10913,12 +10650,12 @@ function disable(element) { element.removeEventListener(_externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.EVENTS.NEW_IMAGE, onImageUpdated); var promiseRemovedHandler = getPromiseRemovedHandler(element); _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.events.removeEventListener(_externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED, promiseRemovedHandler); - var stackPrefetchData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(element, toolType); // If there is actually something to disable, disable it + var stackPrefetchData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__["getToolState"])(element, toolName); // If there is actually something to disable, disable it if (stackPrefetchData && stackPrefetchData.data.length) { stackPrefetchData.data[0].enabled = false; // Clear current prefetch requests from the requestPool - _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].clearRequestStack(requestType); + _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.imageLoadPoolManager.clearRequestStack(requestType); } } @@ -10928,10 +10665,6 @@ function getConfiguration() { function setConfiguration(config) { configuration = config; - - if (config.maxSimultaneousRequests) { - Object(_util_getMaxSimultaneousRequests_js__WEBPACK_IMPORTED_MODULE_4__["setMaxSimultaneousRequests"])(config.maxSimultaneousRequests); - } } // Module/private exports @@ -10987,7 +10720,7 @@ function newFrameOfReferenceSpecificToolStateManager() { var toolState = {}; // Here we add tool state, this is done by tools as well // As modules that restore saved state - function addFrameOfReferenceSpecificToolState(frameOfReference, toolType, data) { + function addFrameOfReferenceSpecificToolState(frameOfReference, toolName, data) { // If we don't have any tool state for this frameOfReference, add an empty object if (toolState.hasOwnProperty(frameOfReference) === false) { toolState[frameOfReference] = {}; @@ -10995,20 +10728,20 @@ function newFrameOfReferenceSpecificToolStateManager() { var frameOfReferenceToolState = toolState[frameOfReference]; // If we don't have tool state for this type of tool, add an empty object - if (frameOfReferenceToolState.hasOwnProperty(toolType) === false) { - frameOfReferenceToolState[toolType] = { + if (frameOfReferenceToolState.hasOwnProperty(toolName) === false) { + frameOfReferenceToolState[toolName] = { data: [] }; } - var toolData = frameOfReferenceToolState[toolType]; // Finally, add this new tool to the state + var toolData = frameOfReferenceToolState[toolName]; // Finally, add this new tool to the state toolData.data.push(data); } // Here you can get state - used by tools as well as modules // That save state persistently - function getFrameOfReferenceSpecificToolState(frameOfReference, toolType) { + function getFrameOfReferenceSpecificToolState(frameOfReference, toolName) { // If we don't have any tool state for this frame of reference, return undefined if (toolState.hasOwnProperty(frameOfReference) === false) { return; @@ -11016,15 +10749,15 @@ function newFrameOfReferenceSpecificToolStateManager() { var frameOfReferenceToolState = toolState[frameOfReference]; // If we don't have tool state for this type of tool, return undefined - if (frameOfReferenceToolState.hasOwnProperty(toolType) === false) { + if (frameOfReferenceToolState.hasOwnProperty(toolName) === false) { return; } - var toolData = frameOfReferenceToolState[toolType]; + var toolData = frameOfReferenceToolState[toolName]; return toolData; } - function removeFrameOfReferenceSpecificToolState(frameOfReference, toolType, data) { + function removeFrameOfReferenceSpecificToolState(frameOfReference, toolName, data) { // If we don't have any tool state for this frame of reference, return undefined if (toolState.hasOwnProperty(frameOfReference) === false) { return; @@ -11032,11 +10765,11 @@ function newFrameOfReferenceSpecificToolStateManager() { var frameOfReferenceToolState = toolState[frameOfReference]; // If we don't have tool state for this type of tool, return undefined - if (frameOfReferenceToolState.hasOwnProperty(toolType) === false) { + if (frameOfReferenceToolState.hasOwnProperty(toolName) === false) { return; } - var toolData = frameOfReferenceToolState[toolType]; // Find this tool data + var toolData = frameOfReferenceToolState[toolName]; // Find this tool data var indexOfData = -1; @@ -11111,65 +10844,108 @@ function newImageIdSpecificToolStateManager() { // As modules that restore saved state - function addImageIdSpecificToolState(element, toolType, data) { + function addElementToolState(element, toolName, data) { var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.getEnabledElement(element); // If we don't have an image for this element exit early if (!enabledElement.image) { return; - } // If we don't have any tool state for this imageId, add an empty object - - - if (toolState.hasOwnProperty(enabledElement.image.imageId) === false) { - toolState[enabledElement.image.imageId] = {}; } - var imageIdToolState = toolState[enabledElement.image.imageId]; // If we don't have tool state for this type of tool, add an empty object + addImageIdToolState(enabledElement.image.imageId, toolName, data); + } - if (imageIdToolState.hasOwnProperty(toolType) === false) { - imageIdToolState[toolType] = { + function addImageIdToolState(imageId, toolName, data) { + // If we don't have any tool state for this imageId, add an empty object + if (toolState.hasOwnProperty(imageId) === false) { + toolState[imageId] = {}; + } + + var imageIdToolState = toolState[imageId]; // If we don't have tool state for this tool name, add an empty object + + if (imageIdToolState.hasOwnProperty(toolName) === false) { + imageIdToolState[toolName] = { data: [] }; } - var toolData = imageIdToolState[toolType]; // Finally, add this new tool to the state + var toolData = imageIdToolState[toolName]; // Finally, add this new tool to the state toolData.data.push(data); + } + + function getElementToolState(element, toolName) { + var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.getEnabledElement(element); // If the element does not have an image return undefined. + + if (!enabledElement.image) { + return; + } + + return getImageIdToolState(enabledElement.image.imageId, toolName); } // Here you can get state - used by tools as well as modules // That save state persistently - function getImageIdSpecificToolState(element, toolType) { - var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.getEnabledElement(element); // If we don't have any tool state for this imageId, return undefined - - if (!enabledElement.image || toolState.hasOwnProperty(enabledElement.image.imageId) === false) { + function getImageIdToolState(imageId, toolName) { + // If we don't have any tool state for this imageId, return undefined + if (toolState.hasOwnProperty(imageId) === false) { return; } - var imageIdToolState = toolState[enabledElement.image.imageId]; // If we don't have tool state for this type of tool, return undefined + var imageIdToolState = toolState[imageId]; // If we don't have tool state for this tool name, return undefined - if (imageIdToolState.hasOwnProperty(toolType) === false) { + if (imageIdToolState.hasOwnProperty(toolName) === false) { return; } - var toolData = imageIdToolState[toolType]; - return toolData; + return imageIdToolState[toolName]; + } // Replaces the given tool's state using the provided element's imageId + + + function setElementToolState(element, toolName, data) { + var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.getEnabledElement(element); + + if (!enabledElement.image) { + return; + } + + setImageIdToolState(enabledElement.image.imageId, toolName, data); + } // Replaces the imageId's tool state for a given tool + + + function setImageIdToolState(imageId, toolName, data) { + var imageIdToolState = toolState[imageId]; // Set the toolState + + imageIdToolState[toolName] = data; } // Clears all tool data from this toolStateManager. - function clearImageIdSpecificToolStateManager(element) { + function clearElementToolState(element) { var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.getEnabledElement(element); - if (!enabledElement.image || toolState.hasOwnProperty(enabledElement.image.imageId) === false) { + if (!enabledElement.image) { return; } - delete toolState[enabledElement.image.imageId]; + clearImageIdToolState(enabledElement.image.imageId); + } + + function clearImageIdToolState(imageId) { + if (toolState.hasOwnProperty(imageId) === false) { + return; + } + + delete toolState[imageId]; } return { - get: getImageIdSpecificToolState, - add: addImageIdSpecificToolState, - clear: clearImageIdSpecificToolStateManager, + get: getElementToolState, + add: addElementToolState, + set: setElementToolState, + clear: clearElementToolState, + getImageIdToolState: getImageIdToolState, + addImageIdToolState: addImageIdToolState, + setImageIdToolState: setImageIdToolState, + clearImageIdToolState: clearImageIdToolState, saveImageIdToolState: saveImageIdToolState, restoreImageIdToolState: restoreImageIdToolState, saveToolState: saveToolState, @@ -11313,12 +11089,12 @@ __webpack_require__.r(__webpack_exports__); * @constructor newStackSpecificToolStateManager * @memberof StateManagement * - * @param {string[]} toolTypes The tool types to apply to the stack. - * @param {Object} oldStateManager The imageIdSpecificStateManager. + * @param {string[]} toolNames List of tools that should have state shared across a stack (a display set) of images + * @param {Object} oldStateManager The imageIdSpecificStateManager. * @returns {Object} A stackSpecificToolStateManager instance. */ -function newStackSpecificToolStateManager(toolTypes, oldStateManager) { +function newStackSpecificToolStateManager(toolNames, oldStateManager) { var toolState = {}; function saveToolState() { @@ -11331,42 +11107,42 @@ function newStackSpecificToolStateManager(toolTypes, oldStateManager) { // As modules that restore saved state - function addStackSpecificToolState(element, toolType, data) { + function addStackSpecificToolState(element, toolName, data) { // If this is a tool type to apply to the stack, do so - if (toolTypes.indexOf(toolType) >= 0) { - // If we don't have tool state for this type of tool, add an empty object - if (toolState.hasOwnProperty(toolType) === false) { - toolState[toolType] = { + if (toolNames.indexOf(toolName) >= 0) { + // If we don't have tool state for this tool name, add an empty object + if (toolState.hasOwnProperty(toolName) === false) { + toolState[toolName] = { data: [] }; } - var toolData = toolState[toolType]; // Finally, add this new tool to the state + var toolData = toolState[toolName]; // Finally, add this new tool to the state toolData.data.push(data); } else { // Call the imageId specific tool state manager - return oldStateManager.add(element, toolType, data); + return oldStateManager.add(element, toolName, data); } } // Here you can get state - used by tools as well as modules // That save state persistently - function getStackSpecificToolState(element, toolType) { + function getStackSpecificToolState(element, toolName) { // If this is a tool type to apply to the stack, do so - if (toolTypes.indexOf(toolType) >= 0) { - // If we don't have tool state for this type of tool, add an empty object - if (toolState.hasOwnProperty(toolType) === false) { - toolState[toolType] = { + if (toolNames.indexOf(toolName) >= 0) { + // If we don't have tool state for this tool name, add an empty object + if (toolState.hasOwnProperty(toolName) === false) { + toolState[toolName] = { data: [] }; } - return toolState[toolType]; + return toolState[toolName]; } // Call the imageId specific tool state manager - return oldStateManager.get(element, toolType); + return oldStateManager.get(element, toolName); } var stackSpecificToolStateManager = { @@ -11416,43 +11192,126 @@ var stackSpecificStateManager = { "use strict"; __webpack_require__.r(__webpack_exports__); -var defaultFontSize = 15, - defaultFont = "".concat(defaultFontSize, "px Arial"), - defaultBackgroundColor = 'transparent'; +var textStyle = { + fontSize: 15, + fontFamily: 'Arial', + backgroundColor: 'transparent' +}; +/** + * @deprecated + * This function will be deprecated and users must use `setFontSize` and + * `setFontFamily` to set the font configuration independently. + * + * @param {string} font Font string with font size and font family + * @returns {void} + */ function setFont(font) { - defaultFont = font; + var split = font.split('px '); + + if (split.length === 2) { + setFontSize(parseFloat(split[0])); + setFontFamily(split[1]); + } } +/** + * Returns all the font styling properties combined into a single string + * following the CSS font property pattern. + * @see {@link https://www.w3.org/TR/css-fonts-3/#font-prop|3.7. Shorthand font property: the font property} + * + * @returns {string} CSS font property + */ + function getFont() { - return defaultFont; + return "".concat(textStyle.fontSize, "px ").concat(textStyle.fontFamily); } +/** + * Sets the font family that will be used for general font rendering. + * @see {@link https://www.w3.org/TR/css-fonts-3/#font-family-prop|3.1. Font family: the font-family property} + * + * @param {string} fontFamily Name of the font to be used + * @returns {void} + */ + + +function setFontFamily(fontFamily) { + if (typeof fontFamily !== 'string') { + throw new Error('Font family must be a valid string'); + } + + textStyle.fontFamily = fontFamily; +} +/** + * Returns the defined font family for rendering text boxes. + * + * @returns {string} The font family used for rendering text boxes + */ + + +function getFontFamily() { + return textStyle.fontFamily; +} +/** + * Sets the font size in pixels that will be used for general font rendering. + * + * @param {number} fontSize Font size in pixels + * @returns {void} + */ + function setFontSize(fontSize) { - defaultFontSize = fontSize; + if (typeof fontSize !== 'number' || isNaN(fontSize) || !isFinite(fontSize)) { + throw new Error('Font size must be a valid number'); + } + + textStyle.fontSize = parseFloat(fontSize); } +/** + * Returns the font size in pixels that will be used for general font rendering. + * + * @returns {number} Font size in pixels + */ + function getFontSize() { - return defaultFontSize; + return textStyle.fontSize; } +/** + * Changes the background color of the text's bounding box. + * The default background color is transparent, that's why it doesn't display + * any background for the text box. + * + * @param {string} backgroundColor Background color for the text + * @returns {void} + */ + function setBackgroundColor(backgroundColor) { - defaultBackgroundColor = backgroundColor; + textStyle.backgroundColor = backgroundColor; } +/** + * Returns the background color that is being used for rendering text boxes. + * + * @returns {string} The background color for the text's bounding box + */ + function getBackgroundColor() { - return defaultBackgroundColor; + return textStyle.backgroundColor; } -var textStyle = { +var textStyleApi = { setFont: setFont, getFont: getFont, setFontSize: setFontSize, getFontSize: getFontSize, + setFontFamily: setFontFamily, + getFontFamily: getFontFamily, setBackgroundColor: setBackgroundColor, getBackgroundColor: getBackgroundColor }; -/* harmony default export */ __webpack_exports__["default"] = (textStyle); +/* harmony default export */ __webpack_exports__["default"] = (textStyleApi); /***/ }), @@ -11560,6 +11419,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); /* harmony import */ var _imageIdSpecificStateManager_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./imageIdSpecificStateManager.js */ "./stateManagement/imageIdSpecificStateManager.js"); /* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/triggerEvent.js */ "./util/triggerEvent.js"); +/* harmony import */ var _util_uuidv4_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/uuidv4.js */ "./util/uuidv4.js"); + @@ -11590,18 +11451,21 @@ function getElementToolStateManager(element) { * @method addToolState * * @param {HTMLElement} element The element. - * @param {string} toolType The toolType of the state. + * @param {string} toolName The name of the tool the state belongs to. * @param {Object} measurementData The data to store in the state. * @returns {undefined} */ -function addToolState(element, toolType, measurementData) { +function addToolState(element, toolName, measurementData) { var toolStateManager = getElementToolStateManager(element); - toolStateManager.add(element, toolType, measurementData); + measurementData.uuid = measurementData.uuid || Object(_util_uuidv4_js__WEBPACK_IMPORTED_MODULE_4__["default"])(); + toolStateManager.add(element, toolName, measurementData); var eventType = _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MEASUREMENT_ADDED; var eventData = { - toolType: toolType, + toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: measurementData }; @@ -11616,14 +11480,14 @@ function addToolState(element, toolType, measurementData) { * @name getToolState * * @param {HTMLElement} element The element. - * @param {string} toolType The toolType of the state. - * @returns {Object} The element's state for the given toolType. + * @param {string} toolName The name of the tool the state belongs to. + * @returns {Object} The element's state for the given toolName. */ -function getToolState(element, toolType) { +function getToolState(element, toolName) { var toolStateManager = getElementToolStateManager(element); - return toolStateManager.get(element, toolType); + return toolStateManager.get(element, toolName); } /** * Removes specific tool state from the toolStateManager. @@ -11631,15 +11495,20 @@ function getToolState(element, toolType) { * @method removeToolState * * @param {HTMLElement} element The element. - * @param {string} toolType The toolType of the state. + * @param {string} toolName The name of the tool the state belongs to. * @param {Object} data The data to remove from the toolStateManager. * @returns {undefined} */ -function removeToolState(element, toolType, data) { +function removeToolState(element, toolName, data) { var toolStateManager = getElementToolStateManager(element); - var toolData = toolStateManager.get(element, toolType); // Find this tool data + var toolData = toolStateManager.get(element, toolName); + + if (!toolData || !toolData.data || !toolData.data.length) { + return; + } // Find this tool data + var indexOfData = -1; @@ -11653,7 +11522,9 @@ function removeToolState(element, toolType, data) { toolData.data.splice(indexOfData, 1); var eventType = _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].MEASUREMENT_REMOVED; var eventData = { - toolType: toolType, + toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: data }; @@ -11662,19 +11533,19 @@ function removeToolState(element, toolType, data) { } /** * Removes all toolState from the toolStateManager corresponding to - * the toolType and element. + * the toolName and element. * @public * @method clearToolState * * @param {HTMLElement} element The element. - * @param {string} toolType The toolType of the state. + * @param {string} toolName The name of the tool the state belongs to. * @returns {undefined} */ -function clearToolState(element, toolType) { +function clearToolState(element, toolName) { var toolStateManager = getElementToolStateManager(element); - var toolData = toolStateManager.get(element, toolType); // If any toolData actually exists, clear it + var toolData = toolStateManager.get(element, toolName); // If any toolData actually exists, clear it if (toolData !== undefined) { toolData.data = []; @@ -12005,9 +11876,9 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./store/index.js"); -/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../manipulators/getHandleNearImagePoint.js */ "./manipulators/getHandleNearImagePoint.js"); +/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); +/* harmony import */ var _manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../manipulators/getHandleNearImagePoint.js */ "./manipulators/getHandleNearImagePoint.js"); +/* harmony import */ var _util_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/getProximityThreshold.js */ "./util/getProximityThreshold.js"); @@ -12027,12 +11898,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (function (element, tools, coords) { var interactionType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'mouse'; - var proximity = interactionType === 'mouse' ? _index_js__WEBPACK_IMPORTED_MODULE_0__["state"].clickProximity : _index_js__WEBPACK_IMPORTED_MODULE_0__["state"].touchProximity; return tools.filter(function (tool) { - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__["getToolState"])(element, tool.name); + var distanceThreshold = Object(_util_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_2__["default"])(interactionType, tool.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_0__["getToolState"])(element, tool.name); for (var i = 0; i < toolState.data.length; i++) { - if (Object(_manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element, toolState.data[i].handles, coords, proximity) !== undefined) { + if (Object(_manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element, toolState.data[i].handles, coords, distanceThreshold) !== undefined) { return true; } } @@ -12047,28 +11918,29 @@ __webpack_require__.r(__webpack_exports__); /*!************************!*\ !*** ./store/index.js ***! \************************/ -/*! exports provided: state, getters, setters, modules, getModule, default */ +/*! exports provided: state, getters, modules, getModule, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "state", function() { return state; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getters", function() { return getters; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setters", function() { return setters; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "modules", function() { return modules; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getModule", function() { return getModule; }); /* harmony import */ var _modules_segmentationModule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/segmentationModule */ "./store/modules/segmentationModule/index.js"); -/* harmony import */ var _modules_cursorModule_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/cursorModule.js */ "./store/modules/cursorModule.js"); -/* harmony import */ var _modules_globalConfigurationModule_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/globalConfigurationModule.js */ "./store/modules/globalConfigurationModule.js"); -/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); -/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/logger.js */ "./util/logger.js"); +/* harmony import */ var _modules_manipulatorStateModule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/manipulatorStateModule */ "./store/modules/manipulatorStateModule.js"); +/* harmony import */ var _modules_cursorModule_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/cursorModule.js */ "./store/modules/cursorModule.js"); +/* harmony import */ var _modules_globalConfigurationModule_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/globalConfigurationModule.js */ "./store/modules/globalConfigurationModule.js"); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/logger.js */ "./util/logger.js"); // Modules -var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_4__["getLogger"])('store:modules:storeLogger'); + +var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_5__["getLogger"])('store:modules:storeLogger'); var state = { // Global globalTools: {}, @@ -12085,6 +11957,13 @@ var state = { handleRadius: 6, deleteIfHandleOutsideImage: true, preventHandleOutsideImage: false, + preventTextBoxOutsideDisplayedArea: false, + // Average pixel width of index finger is 45-57 pixels + // https://www.smashingmagazine.com/2012/02/finger-friendly-design-ideal-mobile-touchscreen-target-sizes/ + handleTouchOffset: { + x: 0, + y: -57 + }, // Cursor svgCursorUrl: null }; @@ -12101,15 +11980,15 @@ var getters = { }, enabledElementByUID: function enabledElementByUID(enabledElementUID) { return state.enabledElements.find(function (element) { - return _externalModules_js__WEBPACK_IMPORTED_MODULE_3__["default"].cornerstone.getEnabledElement(element).uuid === enabledElementUID; + return _externalModules_js__WEBPACK_IMPORTED_MODULE_4__["default"].cornerstone.getEnabledElement(element).uuid === enabledElementUID; }); } }; -var setters = {}; var modules = { segmentation: _modules_segmentationModule__WEBPACK_IMPORTED_MODULE_0__["default"], - cursor: _modules_cursorModule_js__WEBPACK_IMPORTED_MODULE_1__["default"], - globalConfiguration: _modules_globalConfigurationModule_js__WEBPACK_IMPORTED_MODULE_2__["default"] + cursor: _modules_cursorModule_js__WEBPACK_IMPORTED_MODULE_2__["default"], + globalConfiguration: _modules_globalConfigurationModule_js__WEBPACK_IMPORTED_MODULE_3__["default"], + manipulatorState: _modules_manipulatorStateModule__WEBPACK_IMPORTED_MODULE_1__["default"] }; function getModule(moduleName) { return modules[moduleName]; @@ -12307,6 +12186,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../index.js */ "./store/index.js"); /* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/logger.js */ "./util/logger.js"); /* harmony import */ var _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../stateManagement/loadHandlerManager.js */ "./stateManagement/loadHandlerManager.js"); +/* harmony import */ var _setToolMode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToolMode */ "./store/setToolMode.js"); + @@ -12373,8 +12254,11 @@ var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_3__["getLogger"])(' */ var _removeAllToolsForElement = function _removeAllToolsForElement(enabledElement) { - // Note: We may want to `setToolDisabled` before removing from store - // Or take other action to remove any lingering eventListeners/state + _index_js__WEBPACK_IMPORTED_MODULE_2__["default"].state.tools.forEach(function (tool) { + if (tool.element === enabledElement) { + Object(_setToolMode__WEBPACK_IMPORTED_MODULE_5__["setToolDisabledForElement"])(tool.element, tool.name); + } + }); _index_js__WEBPACK_IMPORTED_MODULE_2__["default"].state.tools = _index_js__WEBPACK_IMPORTED_MODULE_2__["default"].state.tools.filter(function (tool) { return tool.element !== enabledElement; }); @@ -12436,10 +12320,10 @@ function _cleanModulesOnElement(enabledElement) { /***/ }), -/***/ "./store/isToolActive.js": -/*!*******************************!*\ - !*** ./store/isToolActive.js ***! - \*******************************/ +/***/ "./store/isToolActiveForElement.js": +/*!*****************************************!*\ + !*** ./store/isToolActiveForElement.js ***! + \*****************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -12452,7 +12336,7 @@ __webpack_require__.r(__webpack_exports__); * @export * @public * @method - * @name isToolActive + * @name isToolActiveForElement * * @param {HTMLElement} element The element being queried. * @param {string} name The name of the tool. @@ -12475,6 +12359,8 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); +/* harmony import */ var _externalModules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../externalModules */ "./externalModules.js"); + var configuration = { iconSize: 16, viewBox: { @@ -12498,6 +12384,7 @@ var getters = { } }; /* harmony default export */ __webpack_exports__["default"] = ({ + configuration: configuration, getters: getters, setters: setters }); @@ -12517,7 +12404,9 @@ var configuration = { mouseEnabled: true, touchEnabled: true, globalToolSyncEnabled: false, - showSVGCursors: false + showSVGCursors: false, + autoResizeViewports: true, + lineDash: [4, 4] }; /* harmony default export */ __webpack_exports__["default"] = ({ configuration: configuration @@ -12525,6 +12414,93 @@ var configuration = { /***/ }), +/***/ "./store/modules/manipulatorStateModule.js": +/*!*************************************************!*\ + !*** ./store/modules/manipulatorStateModule.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _externalModules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../externalModules */ "./externalModules.js"); + +var state = { + activeManipulators: {} +}; + +function addActiveManipulatorForElement(element, cancelFn) { + var enabledElement = _externalModules__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.getEnabledElement(element); + var enabledElementUUID = enabledElement.uuid; + state.activeManipulators[enabledElementUUID] = cancelFn; +} + +function removeActiveManipulatorForElement(element) { + var enabledElement = _externalModules__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.getEnabledElement(element); + var enabledElementUUID = enabledElement.uuid; + var activeManipulators = state.activeManipulators; + delete activeManipulators[enabledElementUUID]; +} + +function cancelActiveManipulatorsForElement(element) { + var enabledElement = _externalModules__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.getEnabledElement(element); + var enabledElementUUID = enabledElement.uuid; + + _cancelActiveManipulatorsForElementUUID(enabledElementUUID); +} + +function _cancelActiveManipulatorsForElementUUID(enabledElementUUID) { + var activeManipulators = state.activeManipulators; + var cancelFn = activeManipulators[enabledElementUUID]; + + if (typeof cancelFn === 'function') { + cancelFn(); + } + + delete activeManipulators[enabledElementUUID]; +} + +function cancelActiveManipulators() { + var activeManipulators = state.activeManipulators; + Object.keys(activeManipulators).forEach(function (enabledElementUUID) { + return _cancelActiveManipulatorsForElementUUID(enabledElementUUID); + }); +} + +function _cornerstoneNewImageHandler(evt) { + var eventData = evt.detail; + var element = eventData.element; + removeActiveManipulatorForElement(element); +} + +function removeEnabledElementCallback(element) { + var NEW_IMAGE = _externalModules__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.EVENTS.NEW_IMAGE; + element.removeEventListener(NEW_IMAGE, _cornerstoneNewImageHandler); + removeActiveManipulatorForElement(element); +} + +function enabledElementCallback(element) { + var NEW_IMAGE = _externalModules__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.EVENTS.NEW_IMAGE; + element.removeEventListener(NEW_IMAGE, _cornerstoneNewImageHandler); + element.addEventListener(NEW_IMAGE, _cornerstoneNewImageHandler); +} + +/* harmony default export */ __webpack_exports__["default"] = ({ + setters: { + // Add/remove + addActiveManipulatorForElement: addActiveManipulatorForElement, + removeActiveManipulatorForElement: removeActiveManipulatorForElement, + // Cancel + cancelActiveManipulatorsForElement: cancelActiveManipulatorsForElement, + cancelActiveManipulators: cancelActiveManipulators + }, + state: state, + enabledElementCallback: enabledElementCallback, + removeEnabledElementCallback: removeEnabledElementCallback +}); + +/***/ }), + /***/ "./store/modules/segmentationModule/activeLabelmapIndex.js": /*!*****************************************************************!*\ !*** ./store/modules/segmentationModule/activeLabelmapIndex.js ***! @@ -12641,7 +12617,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _getElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getElement */ "./store/modules/segmentationModule/getElement.js"); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); -/* harmony import */ var _configuration__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./configuration */ "./store/modules/segmentationModule/configuration.js"); +/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../index.js */ "./store/index.js"); @@ -12707,10 +12683,13 @@ function setActiveSegmentIndex(elementOrEnabledElementUID, segmentIndex) { var activeLabelmapIndex = brushStackState.activeLabelmapIndex; var labelmap3D = brushStackState.labelmaps3D[activeLabelmapIndex]; + var _getModule = Object(_index_js__WEBPACK_IMPORTED_MODULE_3__["getModule"])('segmentation'), + configuration = _getModule.configuration; + if (segmentIndex <= 0) { segmentIndex = 1; - } else if (segmentIndex > _configuration__WEBPACK_IMPORTED_MODULE_3__["default"].segmentsPerLabelmap) { - segmentIndex = _configuration__WEBPACK_IMPORTED_MODULE_3__["default"].segmentsPerLabelmap; + } else if (segmentIndex > configuration.segmentsPerLabelmap) { + segmentIndex = configuration.segmentsPerLabelmap; } labelmap3D.activeSegmentIndex = segmentIndex; @@ -12762,6 +12741,10 @@ function decrementActiveSegmentIndex(elementOrEnabledElementUID) { function _changeActiveSegmentIndex(element) { var increaseOrDecrease = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'increase'; + + var _getModule2 = Object(_index_js__WEBPACK_IMPORTED_MODULE_3__["getModule"])('segmentation'), + configuration = _getModule2.configuration; + var stackState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__["getToolState"])(element, 'stack'); var stackData = stackState.data[0]; var firstImageId = stackData.imageIds[0]; @@ -12778,7 +12761,7 @@ function _changeActiveSegmentIndex(element) { case 'increase': labelmap3D.activeSegmentIndex++; - if (labelmap3D.activeSegmentIndex > _configuration__WEBPACK_IMPORTED_MODULE_3__["default"].segmentsPerLabelmap) { + if (labelmap3D.activeSegmentIndex > configuration.segmentsPerLabelmap) { labelmap3D.activeSegmentIndex = 1; } @@ -12788,7 +12771,7 @@ function _changeActiveSegmentIndex(element) { labelmap3D.activeSegmentIndex--; if (labelmap3D.activeSegmentIndex <= 0) { - labelmap3D.activeSegmentIndex = _configuration__WEBPACK_IMPORTED_MODULE_3__["default"].segmentsPerLabelmap; + labelmap3D.activeSegmentIndex = configuration.segmentsPerLabelmap; } break; @@ -12809,6 +12792,12 @@ function _changeActiveSegmentIndex(element) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addLabelmap2D; }); +/* harmony import */ var _arrayTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arrayTypes */ "./store/modules/segmentationModule/arrayTypes.js"); +/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../index.js */ "./store/index.js"); + + +var UINT_16_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_0__["default"].UINT_16_ARRAY, + FLOAT_32_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_0__["default"].FLOAT_32_ARRAY; /** * Adds a `Labelmap2D` view of one frame of a `Labelmap3D`. * @@ -12819,11 +12808,30 @@ __webpack_require__.r(__webpack_exports__); * @param {number} columns The number of columns in the image. * @returns {null} */ -function addLabelmap2D(brushStackState, labelmapIndex, imageIdIndex, rows, columns) { - var sliceLength = rows * columns; - var byteOffset = sliceLength * 2 * imageIdIndex; // 2 bytes/pixel - var pixelData = new Uint16Array(brushStackState.labelmaps3D[labelmapIndex].buffer, byteOffset, sliceLength); +function addLabelmap2D(brushStackState, labelmapIndex, imageIdIndex, rows, columns) { + var _getModule = Object(_index_js__WEBPACK_IMPORTED_MODULE_1__["getModule"])('segmentation'), + configuration = _getModule.configuration; + + var sliceLength = rows * columns; + var elementOffset = sliceLength * imageIdIndex; + var pixelData; + + switch (configuration.arrayType) { + case UINT_16_ARRAY: + pixelData = new Uint16Array(brushStackState.labelmaps3D[labelmapIndex].buffer, elementOffset * 2, // 2 bytes/voxel + sliceLength); + break; + + case FLOAT_32_ARRAY: + pixelData = new Float32Array(brushStackState.labelmaps3D[labelmapIndex].buffer, elementOffset * 4, // 4 bytes/voxel + sliceLength); + break; + + default: + throw new Error("Unsupported Array Type ".concat(configuration.arrayType)); + } + brushStackState.labelmaps3D[labelmapIndex].labelmaps2D[imageIdIndex] = { pixelData: pixelData, segmentsOnLabelmap: [] @@ -12842,6 +12850,12 @@ function addLabelmap2D(brushStackState, labelmapIndex, imageIdIndex, rows, colum "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addLabelmap3D; }); +/* harmony import */ var _arrayTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arrayTypes */ "./store/modules/segmentationModule/arrayTypes.js"); +/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../index.js */ "./store/index.js"); + + +var UINT_16_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_0__["default"].UINT_16_ARRAY, + FLOAT_32_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_0__["default"].FLOAT_32_ARRAY; /** * AddLabelmap3D - Adds a `Labelmap3D` object to the `BrushStackState` object. * @@ -12850,10 +12864,29 @@ __webpack_require__.r(__webpack_exports__); * @param {number} size The size of the ArrayBuffer in bytes/ 2. * @returns {null} */ + function addLabelmap3D(brushStackState, labelmapIndex, size) { - // Buffer size is multiplied by 2 as we are using 2 bytes/voxel for 65536 segments. + var _getModule = Object(_index_js__WEBPACK_IMPORTED_MODULE_1__["getModule"])('segmentation'), + configuration = _getModule.configuration; + + var bytesPerVoxel; + + switch (configuration.arrayType) { + case UINT_16_ARRAY: + bytesPerVoxel = 2; + break; + + case FLOAT_32_ARRAY: + bytesPerVoxel = 4; + break; + + default: + throw new Error("Unsupported Array Type ".concat(configuration.arrayType)); + } // Buffer size is multiplied by bytesPerVoxel to allocate enough space. + + brushStackState.labelmaps3D[labelmapIndex] = { - buffer: new ArrayBuffer(size * 2), + buffer: new ArrayBuffer(size * bytesPerVoxel), labelmaps2D: [], metadata: [], activeSegmentIndex: 1, @@ -12866,6 +12899,23 @@ function addLabelmap3D(brushStackState, labelmapIndex, size) { /***/ }), +/***/ "./store/modules/segmentationModule/arrayTypes.js": +/*!********************************************************!*\ + !*** ./store/modules/segmentationModule/arrayTypes.js ***! + \********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +var ARRAY_TYPES = { + UINT_16_ARRAY: 0, + FLOAT_32_ARRAY: 1 +}; +/* harmony default export */ __webpack_exports__["default"] = (ARRAY_TYPES); + +/***/ }), + /***/ "./store/modules/segmentationModule/colorLUT.js": /*!******************************************************!*\ !*** ./store/modules/segmentationModule/colorLUT.js ***! @@ -12882,16 +12932,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getColorLUT", function() { return getColorLUT; }); /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"); /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _externalModules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../externalModules */ "./externalModules.js"); -/* harmony import */ var _util_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../util/logger */ "./util/logger.js"); -/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); -/* harmony import */ var _configuration__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./configuration */ "./store/modules/segmentationModule/configuration.js"); +/* harmony import */ var _util_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../util/logger */ "./util/logger.js"); +/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); +/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../index.js */ "./store/index.js"); - -var logger = Object(_util_logger__WEBPACK_IMPORTED_MODULE_2__["getLogger"])('store:modules:segmentationModule:setColorLUT'); +var logger = Object(_util_logger__WEBPACK_IMPORTED_MODULE_1__["getLogger"])('store:modules:segmentationModule:setColorLUT'); /** * SetColorLUT - Sets the labelmap to a specfic LUT, or generates a new LUT. * @@ -12902,7 +12950,11 @@ var logger = Object(_util_logger__WEBPACK_IMPORTED_MODULE_2__["getLogger"])('sto function setColorLUT(colorLUTIndex) { var colorLUT = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var segmentsPerLabelmap = _configuration__WEBPACK_IMPORTED_MODULE_4__["default"].segmentsPerLabelmap; + + var _getModule = Object(_index_js__WEBPACK_IMPORTED_MODULE_3__["getModule"])('segmentation'), + configuration = _getModule.configuration; + + var segmentsPerLabelmap = configuration.segmentsPerLabelmap; if (colorLUT) { _checkColorLUTLength(colorLUT, segmentsPerLabelmap); @@ -12917,7 +12969,7 @@ function setColorLUT(colorLUTIndex) { colorLUT.unshift([0, 0, 0, 0]); - _state__WEBPACK_IMPORTED_MODULE_3__["default"].colorLutTables[colorLUTIndex] = colorLUT; + _state__WEBPACK_IMPORTED_MODULE_2__["default"].colorLutTables[colorLUTIndex] = colorLUT; } function setColorLUTIndexForLabelmap3D(labelmap3D, colorLUTIndex) { labelmap3D.colorLUTIndex = colorLUTIndex; @@ -12931,7 +12983,7 @@ function getColorForSegmentIndexColorLUT(labelmap3DOrColorLUTIndex, segmentIndex * * @param {Object|number} labelmap3DOrColorLUTIndex Either a `Labelmap3D` object (who's referenced colorLUT will be changed), or a colorLUTIndex. * @param {number} segmentIndex The segmentIndex color to change. - * @param {[number,number,number,number]} colorArray The color values in RGBA array format. + * @param {number[]} colorArray The color values in RGBA array format (required length 4). */ function setColorForSegmentIndexOfColorLUT(labelmap3DOrColorLUTIndex, segmentIndex, colorArray) { @@ -12940,10 +12992,10 @@ function setColorForSegmentIndexOfColorLUT(labelmap3DOrColorLUTIndex, segmentInd } function getColorLUT(labelmap3DOrColorLUTIndex) { if (typeof labelmap3DOrColorLUTIndex === 'number') { - return _state__WEBPACK_IMPORTED_MODULE_3__["default"].colorLutTables[labelmap3DOrColorLUTIndex]; + return _state__WEBPACK_IMPORTED_MODULE_2__["default"].colorLutTables[labelmap3DOrColorLUTIndex]; } - return _state__WEBPACK_IMPORTED_MODULE_3__["default"].colorLutTables[labelmap3DOrColorLUTIndex.colorLUTIndex]; + return _state__WEBPACK_IMPORTED_MODULE_2__["default"].colorLutTables[labelmap3DOrColorLUTIndex.colorLUTIndex]; } /** * Checks the length of `colorLUT` compared to `segmnetsPerLabelmap` and flags up any warnings. @@ -13058,33 +13110,37 @@ function getRGBAfromHSLA(hue) { /***/ }), -/***/ "./store/modules/segmentationModule/configuration.js": -/*!***********************************************************!*\ - !*** ./store/modules/segmentationModule/configuration.js ***! - \***********************************************************/ +/***/ "./store/modules/segmentationModule/defaultConfiguration.js": +/*!******************************************************************!*\ + !*** ./store/modules/segmentationModule/defaultConfiguration.js ***! + \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// Segmentation module configuration. -var configuration = { +/* harmony import */ var _arrayTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arrayTypes */ "./store/modules/segmentationModule/arrayTypes.js"); + +var UINT_16_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_0__["default"].UINT_16_ARRAY; // Segmentation module configuration. + +var defaultConfiguration = { renderOutline: true, renderFill: true, shouldRenderInactiveLabelmaps: true, radius: 10, minRadius: 1, maxRadius: 50, - segmentsPerLabelmap: 65535, - // Max is 65535 due to using 16-bit Unsigned ints. fillAlpha: 0.2, fillAlphaInactive: 0.1, outlineAlpha: 0.7, outlineAlphaInactive: 0.35, outlineWidth: 3, - storeHistory: true + storeHistory: true, + segmentsPerLabelmap: 65535, + // Max is 65535 due to using 16-bit Unsigned ints. + arrayType: UINT_16_ARRAY }; -/* harmony default export */ __webpack_exports__["default"] = (configuration); +/* harmony default export */ __webpack_exports__["default"] = (defaultConfiguration); /***/ }), @@ -13182,9 +13238,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); /* harmony import */ var _getElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getElement */ "./store/modules/segmentationModule/getElement.js"); +/* harmony import */ var _util_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../util/logger */ "./util/logger.js"); + +var logger = Object(_util_logger__WEBPACK_IMPORTED_MODULE_3__["getLogger"])('store:modules:segmentationModule:getBrushColor'); /** * Returns the brush color as a rgba CSS color for the active segment of the active * `Labelmap3D` for the `BrushStackState` displayed on the element. @@ -13204,6 +13263,12 @@ function getBrushColor(elementOrEnabledElementUID) { } var stackState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_0__["getToolState"])(element, 'stack'); + + if (!stackState) { + logger.error('Consumers must define stacks in their application if using segmentations in cornerstoneTools.'); + return; + } + var stackData = stackState.data[0]; var firstImageId = stackData.imageIds[0]; var brushStackState = _state__WEBPACK_IMPORTED_MODULE_1__["default"].series[firstImageId]; @@ -13267,16 +13332,27 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLabelmap2DByImageIdIndex", function() { return getLabelmap2DByImageIdIndex; }); /* harmony import */ var _getElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getElement */ "./store/modules/segmentationModule/getElement.js"); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _addLabelmap3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addLabelmap3D */ "./store/modules/segmentationModule/addLabelmap3D.js"); -/* harmony import */ var _addLabelmap2D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./addLabelmap2D */ "./store/modules/segmentationModule/addLabelmap2D.js"); -/* harmony import */ var _externalModules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../externalModules */ "./externalModules.js"); -/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); +/* harmony import */ var _getSegmentsOnPixeldata__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getSegmentsOnPixeldata */ "./store/modules/segmentationModule/getSegmentsOnPixeldata.js"); +/* harmony import */ var _addLabelmap3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./addLabelmap3D */ "./store/modules/segmentationModule/addLabelmap3D.js"); +/* harmony import */ var _addLabelmap2D__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addLabelmap2D */ "./store/modules/segmentationModule/addLabelmap2D.js"); +/* harmony import */ var _externalModules__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../externalModules */ "./externalModules.js"); +/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); +/* harmony import */ var _arrayTypes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./arrayTypes */ "./store/modules/segmentationModule/arrayTypes.js"); +/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../index.js */ "./store/index.js"); +/* harmony import */ var _util_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../util/logger */ "./util/logger.js"); + + + + +var UINT_16_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_7__["default"].UINT_16_ARRAY, + FLOAT_32_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_7__["default"].FLOAT_32_ARRAY; +var logger = Object(_util_logger__WEBPACK_IMPORTED_MODULE_9__["getLogger"])('store:modules:segmentationModule:getLabelmap2D'); /** * Returns the active `labelmap3D` and the `currentImageIdIndex`. If a labelmap does * not get exist, creates a new one. Generates a `labelmap2D` for the `currentImageIndex` @@ -13294,8 +13370,14 @@ function getLabelmap2D(elementOrEnabledElementUID) { return; } - var cornerstone = _externalModules__WEBPACK_IMPORTED_MODULE_4__["default"].cornerstone; + var cornerstone = _externalModules__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone; var stackState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__["getToolState"])(element, 'stack'); + + if (!stackState) { + logger.error('Consumers must define stacks in their application if using segmentations in cornerstoneTools.'); + return; + } + var stackData = stackState.data[0]; var enabledElement = cornerstone.getEnabledElement(element); var currentImageIdIndex = stackData.currentImageIdIndex; @@ -13304,7 +13386,7 @@ function getLabelmap2D(elementOrEnabledElementUID) { columns = _enabledElement$image.columns; var numberOfFrames = stackData.imageIds.length; var firstImageId = stackData.imageIds[0]; - var brushStackState = _state__WEBPACK_IMPORTED_MODULE_5__["default"].series[firstImageId]; + var brushStackState = _state__WEBPACK_IMPORTED_MODULE_6__["default"].series[firstImageId]; var activeLabelmapIndex; if (brushStackState) { @@ -13312,24 +13394,24 @@ function getLabelmap2D(elementOrEnabledElementUID) { if (!brushStackState.labelmaps3D[activeLabelmapIndex]) { var size = rows * columns * numberOfFrames; - Object(_addLabelmap3D__WEBPACK_IMPORTED_MODULE_2__["default"])(brushStackState, activeLabelmapIndex, size); + Object(_addLabelmap3D__WEBPACK_IMPORTED_MODULE_3__["default"])(brushStackState, activeLabelmapIndex, size); } if (!brushStackState.labelmaps3D[activeLabelmapIndex].labelmaps2D[currentImageIdIndex]) { - Object(_addLabelmap2D__WEBPACK_IMPORTED_MODULE_3__["default"])(brushStackState, activeLabelmapIndex, currentImageIdIndex, rows, columns); + Object(_addLabelmap2D__WEBPACK_IMPORTED_MODULE_4__["default"])(brushStackState, activeLabelmapIndex, currentImageIdIndex, rows, columns); } } else { activeLabelmapIndex = 0; - _state__WEBPACK_IMPORTED_MODULE_5__["default"].series[firstImageId] = { + _state__WEBPACK_IMPORTED_MODULE_6__["default"].series[firstImageId] = { activeLabelmapIndex: activeLabelmapIndex, labelmaps3D: [] }; - brushStackState = _state__WEBPACK_IMPORTED_MODULE_5__["default"].series[firstImageId]; + brushStackState = _state__WEBPACK_IMPORTED_MODULE_6__["default"].series[firstImageId]; var _size = rows * columns * numberOfFrames; - Object(_addLabelmap3D__WEBPACK_IMPORTED_MODULE_2__["default"])(brushStackState, activeLabelmapIndex, _size); - Object(_addLabelmap2D__WEBPACK_IMPORTED_MODULE_3__["default"])(brushStackState, activeLabelmapIndex, currentImageIdIndex, rows, columns); + Object(_addLabelmap3D__WEBPACK_IMPORTED_MODULE_3__["default"])(brushStackState, activeLabelmapIndex, _size); + Object(_addLabelmap2D__WEBPACK_IMPORTED_MODULE_4__["default"])(brushStackState, activeLabelmapIndex, currentImageIdIndex, rows, columns); } var labelmap3D = brushStackState.labelmaps3D[activeLabelmapIndex]; @@ -13353,15 +13435,31 @@ function getLabelmap2D(elementOrEnabledElementUID) { function getLabelmap2DByImageIdIndex(labelmap3D, imageIdIndex, rows, columns) { if (!labelmap3D.labelmaps2D[imageIdIndex]) { - var sliceLength = rows * columns; - var byteOffset = sliceLength * 2 * imageIdIndex; // 2 bytes/pixel + var _getModule = Object(_index_js__WEBPACK_IMPORTED_MODULE_8__["getModule"])('segmentation'), + configuration = _getModule.configuration; + + var sliceLength = rows * columns; + var elementOffset = sliceLength * imageIdIndex; + var pixelData; + + switch (configuration.arrayType) { + case UINT_16_ARRAY: + pixelData = new Uint16Array(labelmap3D.buffer, elementOffset * 2, // 2 bytes/voxel + sliceLength); + break; + + case FLOAT_32_ARRAY: + pixelData = new Float32Array(labelmap3D.buffer, elementOffset * 4, // 4 bytes/voxel + sliceLength); + break; + + default: + throw new Error("Unsupported Array Type ".concat(configuration.arrayType)); + } - var pixelData = new Uint16Array(labelmap3D.buffer, byteOffset, sliceLength); labelmap3D.labelmaps2D[imageIdIndex] = { pixelData: pixelData, - getSegmentIndexes: function getSegmentIndexes() { - return new Set(pixelData); - } + segmentsOnLabelmap: Object(_getSegmentsOnPixeldata__WEBPACK_IMPORTED_MODULE_2__["default"])(pixelData) }; } @@ -13385,10 +13483,16 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _getLabelmaps3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getLabelmaps3D */ "./store/modules/segmentationModule/getLabelmaps3D.js"); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); +/* harmony import */ var _arrayTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./arrayTypes */ "./store/modules/segmentationModule/arrayTypes.js"); +/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../index.js */ "./store/index.js"); + + +var UINT_16_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_4__["default"].UINT_16_ARRAY, + FLOAT_32_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_4__["default"].FLOAT_32_ARRAY; /** * GetLabelmapBuffers - Returns the `buffer` of each `Labelmap3D` associated * with the `BrushStackState` displayed on the element, or a specific @@ -13416,6 +13520,27 @@ function getLabelmapBuffers(elementOrEnabledElementUID, labelmapIndex) { return []; } + var _getModule = Object(_index_js__WEBPACK_IMPORTED_MODULE_5__["getModule"])('segmentation'), + configuration = _getModule.configuration; + + var type; + var bytesPerVoxel; + + switch (configuration.arrayType) { + case UINT_16_ARRAY: + type = 'Uint16Array'; + bytesPerVoxel = '2'; + break; + + case FLOAT_32_ARRAY: + type = 'Float32Array'; + bytesPerVoxel = '4'; + break; + + default: + throw new Error("Unsupported Array Type ".concat(configuration.arrayType)); + } + var colorLutTables = _state__WEBPACK_IMPORTED_MODULE_3__["default"].colorLutTables; if (labelmapIndex !== undefined) { @@ -13424,7 +13549,8 @@ function getLabelmapBuffers(elementOrEnabledElementUID, labelmapIndex) { if (labelmap3D) { return { labelmapIndex: labelmapIndex, - bytesPerVoxel: 2, + bytesPerVoxel: bytesPerVoxel, + type: type, buffer: labelmap3D.buffer, colorLUT: colorLutTables[labelmap3D.colorLUTIndex] }; @@ -13489,52 +13615,67 @@ function getActiveLabelmapBuffer(elementOrEnabledElementUID) { /*!**************************************************************!*\ !*** ./store/modules/segmentationModule/getLabelmapStats.js ***! \**************************************************************/ -/*! exports provided: default */ +/*! exports provided: default, _calculateLabelmapStats */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getLabelmapStats; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_calculateLabelmapStats", function() { return _calculateLabelmapStats; }); /* harmony import */ var _getElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getElement */ "./store/modules/segmentationModule/getElement.js"); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); /* harmony import */ var _externalModules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../externalModules */ "./externalModules.js"); +/* harmony import */ var _util_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../util/logger */ "./util/logger.js"); + +var logger = Object(_util_logger__WEBPACK_IMPORTED_MODULE_4__["getLogger"])('store:modules:segmentationModule:getLabelmapStats'); /** * Returns the maximum pixel value, mean and standard deviation of the segment - * given by the `segmentIndex` of the scan on the element. + * given by the `segmentIndex` and `labelmapIndex`. * * @param {HTMLElement|string} elementOrEnabledElementUID The cornerstone enabled * element or its UUID. * @param {number} segmentIndex The segment index to query. - * @returns {Promise} A promise that resolves to an object containing + * @param {number} labelmapIndex The `labelmapIndex` of the `Labelmap3D` to query. + * Defaults to the activeLabelmapIndex if not given. + * @returns {Promise|null} A promise that resolves to an object containing * the maximum pixel value, the mean and the standard deviation. + * Returns null if no cornerstone element is found. */ -function getLabelmapStats(elementOrEnabledElementUID, segmentIndex) { +function getLabelmapStats(elementOrEnabledElementUID, segmentIndex, labelmapIndex) { + var cornerstone = _externalModules__WEBPACK_IMPORTED_MODULE_3__["default"].cornerstone; var element = Object(_getElement__WEBPACK_IMPORTED_MODULE_0__["default"])(elementOrEnabledElementUID); if (!element) { - return; + return null; } + var stackState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__["getToolState"])(element, 'stack'); + var imageIds = stackState.data[0].imageIds; + var firstImageId = imageIds[0]; return new Promise(function (resolve) { - var cornerstone = _externalModules__WEBPACK_IMPORTED_MODULE_3__["default"].cornerstone; - var stackState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__["getToolState"])(element, 'stack'); - var imageIds = stackState.data[0].imageIds; - var firstImageId = imageIds[0]; var brushStackState = _state__WEBPACK_IMPORTED_MODULE_2__["default"].series[firstImageId]; if (!brushStackState) { - resolve(); + resolve(null); } - var activeLabelmapIndex = brushStackState.activeLabelmapIndex; - var labelmap3D = brushStackState.labelmaps3D[activeLabelmapIndex]; - var labelmap3Dbuffer = labelmap3D.buffer; + var _getImagePlanes2 = _getImagePlanes(imageIds), + sufficientMetadata = _getImagePlanes2.sufficientMetadata, + imagePlanes = _getImagePlanes2.imagePlanes; + + if (!sufficientMetadata) { + logger.warn('Insufficient imagePlaneModule information to calculate volume statistics.'); + resolve(null); + } + + labelmapIndex = labelmapIndex === undefined ? brushStackState.activeLabelmapIndex : labelmapIndex; + var labelmap3D = brushStackState.labelmaps3D[labelmapIndex]; var imagePromises = []; for (var i = 0; i < imageIds.length; i++) { @@ -13542,65 +13683,191 @@ function getLabelmapStats(elementOrEnabledElementUID, segmentIndex) { } Promise.all(imagePromises).then(function (images) { - var imagePixelData = []; - var _images$ = images[0], - rows = _images$.rows, - columns = _images$.columns; - - for (var _i = 0; _i < images.length; _i++) { - imagePixelData.push(images[_i].getPixelData()); - } - - var stats = _calculateLabelmapStats(labelmap3Dbuffer, imagePixelData, rows * columns, segmentIndex); + var stats = _calculateLabelmapStats(labelmap3D, images, imagePlanes, segmentIndex); resolve(stats); }); }); } /** - * Returns the statistics of the requested labelmap. * - * @param {type} labelmapBuffer The buffer for the labelmap. - * @param {Number[][]} imagePixelData The pixeldata of each image slice. - * @param {Number} sliceLength The number of pixels in one slice. - * @param {Number} segmentIndex The index of the segment. - * @returns {Promise} A promise that resolves to the stats. + * @param {string[]} imageIds An array of cornerstone imageIds. + * @returns {Object} An object containing an array of per-frame imagePlane metadata, + * and a flag indicating if the metadata was present. */ -function _calculateLabelmapStats(labelmapBuffer, imagePixelData, sliceLength, segmentIndex) { - var segmentPixelValues = []; +function _getImagePlanes(imageIds) { + var imagePlanes = []; + var cornerstone = _externalModules__WEBPACK_IMPORTED_MODULE_3__["default"].cornerstone; + var metadataProvider = cornerstone.metaData; + var sufficientMetadata = true; - for (var img = 0; img < imagePixelData.length; img++) { - var Uint8SliceView = new Uint8Array(labelmapBuffer, img * sliceLength, sliceLength); - var image = imagePixelData[img]; + for (var i = 0; i < imageIds.length; i++) { + var imagePlaneModule = metadataProvider.get('imagePlaneModule', imageIds[i]); - for (var ind = 0; ind < image.length; ind++) { - if (Uint8SliceView[ind] === segmentIndex) { - segmentPixelValues.push(image[ind]); + if (!imagePlaneModule) { + sufficientMetadata = false; + break; + } + + imagePlanes.push(imagePlaneModule); + } + + return { + sufficientMetadata: sufficientMetadata, + imagePlanes: imagePlanes + }; +} +/** + * + * @param {Labelmap3D} labelmap3D The labelmap3D object. + * @param {Object[]} images An array of cornerstone images. + * @param {Object[]} imagePlanes An array of the per-frame imagePlane metadata. + * @param {number} segmentIndex + * + * @returns {Object} Statistics object containing the volume in mm^3; and the + * min, max, mean and stdev of the segmented voxels. + */ + + +function _calculateLabelmapStats(labelmap3D, images, imagePlanes, segmentIndex) { + var voxelsPerFrame = _getVoxelsPerFrameForSegment(labelmap3D, images, imagePlanes, segmentIndex); + + var volumeWeightedMean = 0; + var max = voxelsPerFrame[0].values[0]; + var min = max; + var volume = 0; // Calculate Min, Max, volume and mean. + + for (var i = 0; i < voxelsPerFrame.length; i++) { + var _voxelsPerFrame$i = voxelsPerFrame[i], + values = _voxelsPerFrame$i.values, + voxelInMM3 = _voxelsPerFrame$i.voxelInMM3; + volume += voxelInMM3 * values.length; + var sum = 0; + values.forEach(function (value) { + if (value > max) { + max = value; + } else if (value < min) { + min = value; } + + sum += value; + }); + volumeWeightedMean += sum * voxelInMM3; + } + + volumeWeightedMean /= volume; + var volumeWeightedStDev = 0; // Calculate the volume weigthed standard deviation. + + for (var _i = 0; _i < voxelsPerFrame.length; _i++) { + var _voxelsPerFrame$_i = voxelsPerFrame[_i], + values = _voxelsPerFrame$_i.values, + voxelInMM3 = _voxelsPerFrame$_i.voxelInMM3; + var stdDevSum = 0; + values.forEach(function (value) { + stdDevSum += Math.pow(value - volumeWeightedMean, 2); + }); + volumeWeightedStDev += stdDevSum * voxelInMM3; + } + + volumeWeightedStDev /= volume; + volumeWeightedStDev = Math.sqrt(volumeWeightedStDev); + return { + volume: volume, + mean: volumeWeightedMean, + stdDev: volumeWeightedStDev, + max: max, + min: min + }; +} +/** + * Returns an array of voxel values masked by the segment for each frame, + * as well as the real world volume of a voxel on that frame. + * + * @param {Labelmap3D} labelmap3D The `Labelmap3D` object. + * @param {Object[]} images An array of cornerstone images. + * @param {Object[]} imagePlanes An array of the per-frame imagePlane metadata. + * @param {number} segmentIndex The index of the segment to check. + * + * @returns {Object[]} An array of voxel values and voxel volumes per frame. + */ + +function _getVoxelsPerFrameForSegment(labelmap3D, images, imagePlanes, segmentIndex) { + var _images$ = images[0], + rowPixelSpacing = _images$.rowPixelSpacing, + columnPixelSpacing = _images$.columnPixelSpacing; + var labelmaps2D = labelmap3D.labelmaps2D; + var voxelsPerFrame = []; + + for (var i = 0; i < labelmaps2D.length; i++) { + var labelmap2D = labelmaps2D[i]; + + if (labelmap2D && labelmap2D.segmentsOnLabelmap.includes(segmentIndex)) { + var sliceThickness = _getSliceThickness(images, imagePlanes, i); + + var voxelInMM3 = sliceThickness * rowPixelSpacing * columnPixelSpacing; + var segmentationPixelData = labelmap2D.pixelData; + var imagePixelData = images[i].getPixelData(); + var values = []; // Iterate over segmentationPixelData and count voxels. + + for (var p = 0; p < segmentationPixelData.length; p++) { + if (segmentationPixelData[p] === segmentIndex) { + values.push(imagePixelData[p]); + } + } + + voxelsPerFrame.push({ + voxelInMM3: voxelInMM3, + values: values + }); } } - var maximum = Math.max.apply(Math, segmentPixelValues); - var mean = 0; + return voxelsPerFrame; +} +/** + * Estimates the slice thickness given the image position patient of adjacent frames. + * For the edges the slice thickness is assumed to be the perpendicular distance to the closest frame. + * For all other frames the slice thickness is taken to be the sum of half of the distance to the frame above and below. + * + * Voxels on the first or last frame are assumed to be full occupied. + * + * @param {Object[]} images An array of cornerstone images. + * @param {Object[]} imagePlanes An array of the per-frame imagePlane metadata. + * @param {number} frameIndex The index of the frame to get the slice thickness for. + * + * @returns {number} + */ - for (var i = 0; i < segmentPixelValues.length; i++) { - mean += segmentPixelValues[i]; - } - mean /= segmentPixelValues.length; - var stdDev = 0; +function _getSliceThickness(images, imagePlanes, frameIndex) { + var numberOfSlices = images.length; + var ipp = imagePlanes[frameIndex].imagePositionPatient; // Special cases: Edge of volume - Assume thickness is the distance + // between the current slice and the closest slice as this is all the information we have. - for (var _i2 = 0; _i2 < segmentPixelValues.length; _i2++) { - stdDev += Math.pow(segmentPixelValues[_i2] - mean, 2); - } + if (frameIndex === 0) { + var _ippAbove = imagePlanes[frameIndex + 1].imagePositionPatient; + return distanceBetweenSlices(ipp, _ippAbove); + } else if (frameIndex === numberOfSlices - 1) { + var _ippBelow = imagePlanes[frameIndex - 1].imagePositionPatient; + return distanceBetweenSlices(ipp, _ippBelow); + } // Estimate slice thickness from the two adjacent slices. - stdDev = Math.pow(stdDev, 0.5); - return { - maximum: maximum, - mean: mean, - stdDev: stdDev - }; + + var ippBelow = imagePlanes[frameIndex - 1].imagePositionPatient; + var ippAbove = imagePlanes[frameIndex + 1].imagePositionPatient; + return (distanceBetweenSlices(ipp, ippBelow) + distanceBetweenSlices(ipp, ippAbove)) / 2; +} +/** + * Returns the ditance between two imagePostionPatient coordinates. + * + * @param {number[]} ipp1 The first image position patient array. + * @param {number[]} ipp2 The second image position patient array. + */ + + +function distanceBetweenSlices(ipp1, ipp2) { + return Math.sqrt(Math.pow(ipp1[0] - ipp2[0], 2) + Math.pow(ipp1[1] - ipp2[1], 2) + Math.pow(ipp1[2] - ipp2[2], 2)); } /***/ }), @@ -13619,9 +13886,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _getElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getElement */ "./store/modules/segmentationModule/getElement.js"); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); +/* harmony import */ var _util_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../util/logger */ "./util/logger.js"); + +var logger = Object(_util_logger__WEBPACK_IMPORTED_MODULE_3__["getLogger"])('store:modules:segmentationModule:getLabelmaps3D'); /** * Returns the `Labelmap3D` objects associated with the series displayed * in the element, the `activeLabelmapIndex` and the `currentImageIdIndex`. @@ -13640,6 +13910,12 @@ function getLabelmaps3D(elementOrEnabledElementUID) { } var stackState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_0__["getToolState"])(element, 'stack'); + + if (!stackState) { + logger.error('Consumers must define stacks in their application if using segmentations in cornerstoneTools.'); + return; + } + var stackData = stackState.data[0]; var firstImageId = stackData.imageIds[0]; var brushStackState = _state__WEBPACK_IMPORTED_MODULE_2__["default"].series[firstImageId]; @@ -13782,26 +14058,16 @@ function getSegmentOfActiveLabelmapAtEvent(evt) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getSegmentsOnPixelData; }); +/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"); +/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__); + + /** * Returns an array of the segment indicies present on the `pixelData`. - * @param {UInt16Array} pixelData The pixel data array. + * @param {UInt16Array|Float32Array} pixelData The pixel data array. */ function getSegmentsOnPixelData(pixelData) { - var segmentSet = new Set(pixelData); - var iterator = segmentSet.values(); - var segmentsOnLabelmap = []; - var done = false; - - while (!done) { - var next = iterator.next(); - done = next.done; - - if (!done) { - segmentsOnLabelmap.push(next.value); - } - } - - return segmentsOnLabelmap; + return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(new Set(pixelData)); } /***/ }), @@ -13913,8 +14179,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _getSegmentsOnPixeldata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getSegmentsOnPixeldata */ "./store/modules/segmentationModule/getSegmentsOnPixeldata.js"); /* harmony import */ var _deleteSegment__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./deleteSegment */ "./store/modules/segmentationModule/deleteSegment.js"); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); -/* harmony import */ var _configuration__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./configuration */ "./store/modules/segmentationModule/configuration.js"); +/* harmony import */ var _defaultConfiguration__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./defaultConfiguration */ "./store/modules/segmentationModule/defaultConfiguration.js"); /* harmony import */ var _history__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./history */ "./store/modules/segmentationModule/history.js"); +/* harmony import */ var _setRadius__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./setRadius */ "./store/modules/segmentationModule/setRadius.js"); + @@ -13950,7 +14218,7 @@ __webpack_require__.r(__webpack_exports__); * A 3D labelmap object which stores the labelmap data for an entire stack of cornerstone images. * * @typedef {Object} Labelmap3D An object defining a 3D labelmap. - * @property {ArrayBuffer} buffer An array buffer to store the pixel data of the `Labelmap3D` (2 bytes/voxel). + * @property {ArrayBuffer} buffer An array buffer to store the pixel data of the `Labelmap3D` (2 bytes/voxel for Uint16 and 4 bytes/voxel for Float32). * @property {Labelmap2D[]} labelmaps2D array of `labelmap2D` views on the `buffer`, indexed by in-stack * image positions. * @property {Object[]} metadata An array of metadata per segment. Metadata is optional and its form is @@ -13968,7 +14236,7 @@ __webpack_require__.r(__webpack_exports__); * A 2D labelmap object which accesses only one frame's worth of data from its parent `Labelmap3D`. * * @typedef {Object} Labelmap2D An object defining a 2D view on a section of a `Labelmap3D`'s `buffer`. - * @property {Uint16Array} pixelData A 2D view on a section of the parent `Labelmap3D`'s `buffer`. + * @property {Uint16Array|Float32Array} pixelData A 2D view on a section of the parent `Labelmap3D`'s `buffer`. * @property {number[]} segmentsOnLabelmap An array of segments present in the `pixelData`. */ @@ -13984,7 +14252,7 @@ function onRegisterCallback() { /* harmony default export */ __webpack_exports__["default"] = ({ state: _state__WEBPACK_IMPORTED_MODULE_14__["default"], - configuration: _configuration__WEBPACK_IMPORTED_MODULE_15__["default"], + configuration: _defaultConfiguration__WEBPACK_IMPORTED_MODULE_15__["default"], onRegisterCallback: onRegisterCallback, getters: { metadata: _metadata__WEBPACK_IMPORTED_MODULE_0__["getMetadata"], @@ -14019,9 +14287,7 @@ function onRegisterCallback() { colorLUTIndexForLabelmap3D: _colorLUT__WEBPACK_IMPORTED_MODULE_10__["setColorLUTIndexForLabelmap3D"], colorForSegmentIndexOfColorLUT: _colorLUT__WEBPACK_IMPORTED_MODULE_10__["setColorForSegmentIndexOfColorLUT"], activeLabelmapIndex: _activeLabelmapIndex__WEBPACK_IMPORTED_MODULE_1__["setActiveLabelmapIndex"], - radius: function radius(newRadius) { - _configuration__WEBPACK_IMPORTED_MODULE_15__["default"].radius = Math.min(Math.max(newRadius, _configuration__WEBPACK_IMPORTED_MODULE_15__["default"].minRadius), _configuration__WEBPACK_IMPORTED_MODULE_15__["default"].maxRadius); - }, + radius: _setRadius__WEBPACK_IMPORTED_MODULE_17__["default"], pushState: _history__WEBPACK_IMPORTED_MODULE_16__["pushState"], undo: _history__WEBPACK_IMPORTED_MODULE_16__["undo"], redo: _history__WEBPACK_IMPORTED_MODULE_16__["redo"] @@ -14283,14 +14549,18 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state */ "./store/modules/segmentationModule/state.js"); /* harmony import */ var _getSegmentsOnPixeldata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getSegmentsOnPixeldata */ "./store/modules/segmentationModule/getSegmentsOnPixeldata.js"); -/* harmony import */ var _externalModules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../externalModules */ "./externalModules.js"); -/* harmony import */ var _util_segmentation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../util/segmentation */ "./util/segmentation/index.js"); +/* harmony import */ var _util_segmentation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../util/segmentation */ "./util/segmentation/index.js"); +/* harmony import */ var _arrayTypes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./arrayTypes */ "./store/modules/segmentationModule/arrayTypes.js"); +/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../index.js */ "./store/index.js"); + +var UINT_16_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_5__["default"].UINT_16_ARRAY, + FLOAT_32_ARRAY = _arrayTypes__WEBPACK_IMPORTED_MODULE_5__["default"].FLOAT_32_ARRAY; /** * Takes a 16-bit encoded `ArrayBuffer` and stores it as a `Labelmap3D` for the * `BrushStackState` associated with the element. @@ -14320,7 +14590,7 @@ function setLabelmap3DForElement(elementOrEnabledElementUID, buffer, labelmapInd var numberOfFrames = stackState.data[0].imageIds.length; var firstImageId = stackState.data[0].imageIds[0]; setLabelmap3DByFirstImageId(firstImageId, buffer, labelmapIndex, metadata, numberOfFrames, segmentsOnLabelmapArray, colorLUTIndex); - Object(_util_segmentation__WEBPACK_IMPORTED_MODULE_5__["triggerLabelmapModifiedEvent"])(element, labelmapIndex); + Object(_util_segmentation__WEBPACK_IMPORTED_MODULE_4__["triggerLabelmapModifiedEvent"])(element, labelmapIndex); } /** * Takes an 16-bit encoded `ArrayBuffer` and stores it as a `Labelmap3D` for @@ -14345,6 +14615,10 @@ function setLabelmap3DByFirstImageId(firstImageId, buffer, labelmapIndex) { var numberOfFrames = arguments.length > 4 ? arguments[4] : undefined; var segmentsOnLabelmapArray = arguments.length > 5 ? arguments[5] : undefined; var colorLUTIndex = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0; + + var _getModule = Object(_index_js__WEBPACK_IMPORTED_MODULE_6__["getModule"])('segmentation'), + configuration = _getModule.configuration; + var brushStackState = _state__WEBPACK_IMPORTED_MODULE_2__["default"].series[firstImageId]; if (!brushStackState) { @@ -14360,17 +14634,31 @@ function setLabelmap3DByFirstImageId(firstImageId, buffer, labelmapIndex) { labelmaps2D: [], metadata: metadata, activeSegmentIndex: 1, - colorLUTIndex: 0, + colorLUTIndex: colorLUTIndex, segmentsHidden: [], undo: [], redo: [] }; var labelmaps2D = brushStackState.labelmaps3D[labelmapIndex].labelmaps2D; var slicelengthInBytes = buffer.byteLength / numberOfFrames; - var sliceLengthInUint16 = slicelengthInBytes / 2; // SliceLength in Uint16. for (var i = 0; i < numberOfFrames; i++) { - var pixelData = new Uint16Array(buffer, slicelengthInBytes * i, sliceLengthInUint16); + var pixelData = void 0; + + switch (configuration.arrayType) { + case UINT_16_ARRAY: + pixelData = new Uint16Array(buffer, slicelengthInBytes * i, // 2 bytes/voxel + slicelengthInBytes / 2); + break; + + case FLOAT_32_ARRAY: + pixelData = new Float32Array(buffer, slicelengthInBytes * i, slicelengthInBytes / 4); + break; + + default: + throw new Error("Unsupported Array Type ".concat(configuration.arrayType)); + } + var segmentsOnLabelmap = segmentsOnLabelmapArray ? segmentsOnLabelmapArray[i] : Object(_getSegmentsOnPixeldata__WEBPACK_IMPORTED_MODULE_3__["default"])(pixelData); if (segmentsOnLabelmap && segmentsOnLabelmap.some(function (segment) { @@ -14386,6 +14674,27 @@ function setLabelmap3DByFirstImageId(firstImageId, buffer, labelmapIndex) { +/***/ }), + +/***/ "./store/modules/segmentationModule/setRadius.js": +/*!*******************************************************!*\ + !*** ./store/modules/segmentationModule/setRadius.js ***! + \*******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setRadius; }); +/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../index */ "./store/index.js"); + +function setRadius(newRadius) { + var _getModule = Object(_index__WEBPACK_IMPORTED_MODULE_0__["getModule"])('segmentation'), + configuration = _getModule.configuration; + + configuration.radius = Math.min(Math.max(newRadius, configuration.minRadius), configuration.maxRadius); +} + /***/ }), /***/ "./store/modules/segmentationModule/state.js": @@ -14806,6 +15115,8 @@ function setToolModeForElement(mode, changeEvent, element, toolName, options) { var statusChangeEventData = { options: options, toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName type: changeEvent }; Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element, changeEvent, statusChangeEventData); @@ -15297,6 +15608,7 @@ function Synchronizer(event, handler) { return; } + var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone; initialData.distances = {}; initialData.imageIds = { sourceElements: [], @@ -15371,7 +15683,7 @@ function Synchronizer(event, handler) { */ - function fireEvent(sourceElement, eventData) { + this.fireEvent = function (sourceElement, eventData) { var isDisabled = !that.enabled; var noElements = !sourceElements.length || !targetElements.length; @@ -15406,7 +15718,7 @@ function Synchronizer(event, handler) { eventHandler(that, sourceElement, targetElement, eventData, positionDifference); }); ignoreFiredEvents = false; - } + }; /** * Call fireEvent if not ignoring events, and pass along event data * @@ -15416,15 +15728,15 @@ function Synchronizer(event, handler) { */ - function onEvent(e) { + this.onEvent = function (e) { var eventData = e.detail; if (ignoreFiredEvents === true) { return; } - fireEvent(e.currentTarget, eventData); - } + that.fireEvent(e.currentTarget, eventData); + }; /** * Add a source element to this synchronizer * @@ -15445,7 +15757,7 @@ function Synchronizer(event, handler) { sourceElements.push(element); // Subscribe to the event event.split(' ').forEach(function (oneEvent) { - element.addEventListener(oneEvent, onEvent); + element.addEventListener(oneEvent, that.onEvent); }); // Update the initial distances between elements that.getDistances(); @@ -15507,12 +15819,12 @@ function Synchronizer(event, handler) { sourceElements.splice(index, 1); // Stop listening for the event event.split(' ').forEach(function (oneEvent) { - element.removeEventListener(oneEvent, onEvent); + element.removeEventListener(oneEvent, that.onEvent); }); // Update the initial distances between elements that.getDistances(); // Update everyone listening for events - fireEvent(element); + that.fireEvent(element); that.updateDisableHandlers(); }; /** @@ -15583,7 +15895,7 @@ function Synchronizer(event, handler) { this.displayImage = function (element, image, viewport) { ignoreFiredEvents = true; - cornerstone.displayImage(element, image, viewport); + _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.displayImage(element, image, viewport); ignoreFiredEvents = false; }; /** @@ -15597,7 +15909,7 @@ function Synchronizer(event, handler) { this.setViewport = function (element, viewport) { ignoreFiredEvents = true; - cornerstone.setViewport(element, viewport); + _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.setViewport(element, viewport); ignoreFiredEvents = false; }; /** @@ -16491,7 +16803,7 @@ __webpack_require__.r(__webpack_exports__); /*!************************!*\ !*** ./toolOptions.js ***! \************************/ -/*! exports provided: getToolOptions, setToolOptions, clearToolOptions, clearToolOptionsByToolType, clearToolOptionsByElement */ +/*! exports provided: getToolOptions, setToolOptions, clearToolOptions, clearToolOptionsByToolType, clearToolOptionsByToolName, clearToolOptionsByElement */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -16500,27 +16812,28 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setToolOptions", function() { return setToolOptions; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearToolOptions", function() { return clearToolOptions; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearToolOptionsByToolType", function() { return clearToolOptionsByToolType; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearToolOptionsByToolName", function() { return clearToolOptionsByToolName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearToolOptionsByElement", function() { return clearToolOptionsByElement; }); var elementToolOptions = {}; /** - * Retrieve the options object associated with a particular toolType and element + * Retrieve the options object associated with a particular toolName and element * @export * @public * @method * @name getToolOptions * - * @param {string} toolType Tool type identifier of the target options object + * @param {string} toolName Tool name identifier of the target options object * @param {HTMLElement} element Element of the target options object * * @returns {Object} Target options object (empty if not yet set) */ -function getToolOptions(toolType, element) { - if (!elementToolOptions[toolType]) { +function getToolOptions(toolName, element) { + if (!elementToolOptions[toolName]) { return {}; } - var toolOptions = elementToolOptions[toolType]; + var toolOptions = elementToolOptions[toolName]; var optionsObject = toolOptions.find(function (toolOptionObject) { return toolOptionObject.element === element; }); @@ -16532,67 +16845,71 @@ function getToolOptions(toolType, element) { return optionsObject.options; } /** - * Set the options object associated with a particular toolType and element. + * Set the options object associated with a particular toolName and element. * @export * @public * @method * @name setToolOptions * - * @param {string} toolType Tool type identifier of the target options object. + * @param {string} toolName Tool name identifier of the target options object. * @param {HTMLElement} element Element of the target options object. * @param {Object} options Options object to store at target. * @returns {void} */ -function setToolOptions(toolType, element, options) { - if (!elementToolOptions[toolType]) { - elementToolOptions[toolType] = [{ +function setToolOptions(toolName, element, options) { + if (!elementToolOptions[toolName]) { + elementToolOptions[toolName] = [{ element: element, options: options }]; return; } - var toolOptions = elementToolOptions[toolType]; + var toolOptions = elementToolOptions[toolName]; var index = toolOptions.findIndex(function (toolOptionObject) { return toolOptionObject.element === element; }); if (index === -1) { - elementToolOptions[toolType].push({ + elementToolOptions[toolName].push({ element: element, options: options }); } else { - var elementOptions = elementToolOptions[toolType][index].options || {}; - elementToolOptions[toolType][index].options = Object.assign(elementOptions, options); + var elementOptions = elementToolOptions[toolName][index].options || {}; + elementToolOptions[toolName][index].options = Object.assign(elementOptions, options); } } /** - * Clear the options object associated with a particular toolType and element. + * Clear the options object associated with a particular toolName and element. * @export * @public * @method * @name clearToolOptions * - * @param {string} toolType Tool type identifier of the target options object. + * @param {string} toolName Tool name identifier of the target options object. * @param {HTMLElement} element Element of the target options object. * @returns {void} */ -function clearToolOptions(toolType, element) { - var toolOptions = elementToolOptions[toolType]; +function clearToolOptions(toolName, element) { + var toolOptions = elementToolOptions[toolName]; if (toolOptions) { - elementToolOptions[toolType] = toolOptions.filter(function (toolOptionObject) { + elementToolOptions[toolName] = toolOptions.filter(function (toolOptionObject) { return toolOptionObject.element !== element; }); } } /** * Clear the options objects associated with a particular toolType. + * + * Deprecation notice: use clearToolOptionsByToolName instead + * @deprecated + * * @export * @public * @method @@ -16604,7 +16921,22 @@ function clearToolOptions(toolType, element) { function clearToolOptionsByToolType(toolType) { - delete elementToolOptions[toolType]; + return clearToolOptionsByToolName(toolType); +} +/** + * Clear the options objects associated with a particular toolName. + * @export + * @public + * @method + * @name clearToolOptionsByToolName + * + * @param {string} toolName Tool name identifier of the target options objects. + * @returns {void} + */ + + +function clearToolOptionsByToolName(toolName) { + delete elementToolOptions[toolName]; } /** * Clear the options objects associated with a particular element. @@ -16619,8 +16951,8 @@ function clearToolOptionsByToolType(toolType) { function clearToolOptionsByElement(element) { - for (var toolType in elementToolOptions) { - elementToolOptions[toolType] = elementToolOptions[toolType].filter(function (toolOptionObject) { + for (var toolName in elementToolOptions) { + elementToolOptions[toolName] = elementToolOptions[toolName].filter(function (toolOptionObject) { return toolOptionObject.element !== element; }); } @@ -16702,7 +17034,7 @@ function (_BaseTool) { svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_13__["crosshairsCursor"] }; _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(CrosshairsTool).call(this, props, defaultProps)); - _this.mouseDownCallback = _this._chooseLocation.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this.preMouseDownCallback = _this._chooseLocation.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); _this.mouseDragCallback = _this._chooseLocation.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); _this.touchDragCallback = _this._chooseLocation.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); return _this; @@ -16947,9 +17279,6 @@ __webpack_require__.r(__webpack_exports__); -var _this2 = undefined; - - @@ -17041,8 +17370,8 @@ function (_BaseTool) { -var defaultStrategy = function defaultStrategy(evt) { - var config = _this2.configuration; +function defaultStrategy(evt) { + var config = this.configuration; var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone; var eventData = evt.detail; var element = eventData.element, @@ -17089,7 +17418,7 @@ var defaultStrategy = function defaultStrategy(evt) { Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_13__["default"])(context, str, textCoords.x, textCoords.y + fontHeight + 5, color); Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_13__["default"])(context, text, textCoords.x, textCoords.y, color); }); -}; +} /** * Minimal strategy will position a circle and use the center of the circle to calculate and display probe data. * @@ -17098,8 +17427,8 @@ var defaultStrategy = function defaultStrategy(evt) { */ -var minimalStrategy = function minimalStrategy(evt) { - var config = _this2.configuration; +function minimalStrategy(evt) { + var config = this.configuration; var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone; var eventData = evt.detail; var element = eventData.element, @@ -17174,7 +17503,7 @@ var minimalStrategy = function minimalStrategy(evt) { }, 'canvas'); Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_13__["default"])(context, text, textCoords.x + translation.x, textCoords.y + translation.y, color); }); -}; +} /***/ }), @@ -17364,7 +17693,7 @@ function (_BaseTool) { _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(FreehandRoiSculptorTool).call(this, props, defaultProps)); _this.updateOnMouseMove = true; _this.isMultiPartTool = true; - _this.referencedToolName = defaultProps.referencedToolName; + _this.referencedToolName = _this.initialConfiguration.referencedToolName; _this._active = false; // Create bound functions for private event loop. _this.activeMouseUpCallback = _this.activeMouseUpCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); @@ -18788,7 +19117,7 @@ function (_BaseTool) { key: "_removeZoomElement", value: function _removeZoomElement() { if (this.zoomElement !== undefined) { - _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.disable(this.zoomCanvas); + _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.disable(this.zoomElement); this.zoomElement = undefined; this.zoomCanvas = undefined; } @@ -18843,6 +19172,364 @@ function (_BaseTool) { +/***/ }), + +/***/ "./tools/OrientationMarkersTool.js": +/*!*****************************************!*\ + !*** ./tools/OrientationMarkersTool.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OrientationMarkersTool; }); +/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"); +/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"); +/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"); +/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _base_BaseTool_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./base/BaseTool.js */ "./tools/base/BaseTool.js"); +/* harmony import */ var _orientation_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../orientation/index.js */ "./orientation/index.js"); +/* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../drawing/index.js */ "./drawing/index.js"); +/* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); +/* harmony import */ var _drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../drawing/drawTextBox.js */ "./drawing/drawTextBox.js"); + + + + + + + + // Drawing + + + + +/** + * @public + * @class OrientationMarkersTool + * @memberof Tools + * + * @classdesc Tool for displaying orientation markers on the image. + * @extends Tools.Base.BaseTool + */ + +var OrientationMarkersTool = +/*#__PURE__*/ +function (_BaseTool) { + _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(OrientationMarkersTool, _BaseTool); + + function OrientationMarkersTool() { + var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, OrientationMarkersTool); + + var defaultProps = { + name: 'OrientationMarkers', + configuration: { + drawAllMarkers: true + }, + mixins: ['enabledOrDisabledBinaryTool'] + }; + return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(OrientationMarkersTool).call(this, props, defaultProps)); + } + + _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(OrientationMarkersTool, [{ + key: "enabledCallback", + value: function enabledCallback(element) { + this.forceImageUpdate(element); + } + }, { + key: "disabledCallback", + value: function disabledCallback(element) { + this.forceImageUpdate(element); + } + }, { + key: "forceImageUpdate", + value: function forceImageUpdate(element) { + var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone; + var enabledElement = cornerstone.getEnabledElement(element); + + if (enabledElement.image) { + cornerstone.updateImage(element); + } + } + }, { + key: "renderToolData", + value: function renderToolData(evt) { + var eventData = evt.detail; + var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_8__["getNewContext"])(eventData.canvasContext.canvas); + var element = eventData.element; + var markers = getOrientationMarkers(element); + + if (!markers) { + return; + } + + var coords = getOrientationMarkerPositions(element, markers); + var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_9__["default"].getToolColor(); + var textWidths = { + top: Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["textBoxWidth"])(context, markers.top, 0), + left: Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["textBoxWidth"])(context, markers.left, 0), + right: Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["textBoxWidth"])(context, markers.right, 0), + bottom: Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["textBoxWidth"])(context, markers.bottom, 0), + height: Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["textBoxWidth"])(context, 'M', 0) // Trick to get an approximation of the height of the text + + }; + drawTopLeftText(context, markers, coords, textWidths, color); + + if (this.configuration.drawAllMarkers) { + drawBottomRightText(context, markers, coords, textWidths, color); + } + } + }]); + + return OrientationMarkersTool; +}(_base_BaseTool_js__WEBPACK_IMPORTED_MODULE_6__["default"]); + + + +var drawTopLeftText = function drawTopLeftText(context, markers, coords, textWidths, color) { + Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["default"])(context, markers.top, coords.top.x - textWidths.top / 2, coords.top.y, color); + Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["default"])(context, markers.left, coords.left.x - textWidths.left / 2, coords.left.y, color); +}; + +var drawBottomRightText = function drawBottomRightText(context, markers, coords, textWidths, color) { + Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["default"])(context, markers.right, coords.right.x - textWidths.right, coords.right.y, color); + Object(_drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_10__["default"])(context, markers.bottom, coords.bottom.x - textWidths.bottom / 2, coords.bottom.y - textWidths.height, color); +}; + +var getOrientationMarkers = function getOrientationMarkers(element) { + var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone; + var enabledElement = cornerstone.getEnabledElement(element); + var imagePlane = cornerstone.metaData.get('imagePlaneModule', enabledElement.image.imageId); + + if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) { + return; + } + + var row = _orientation_index_js__WEBPACK_IMPORTED_MODULE_7__["default"].getOrientationString(imagePlane.rowCosines); + var column = _orientation_index_js__WEBPACK_IMPORTED_MODULE_7__["default"].getOrientationString(imagePlane.columnCosines); + var oppositeRow = _orientation_index_js__WEBPACK_IMPORTED_MODULE_7__["default"].invertOrientationString(row); + var oppositeColumn = _orientation_index_js__WEBPACK_IMPORTED_MODULE_7__["default"].invertOrientationString(column); + return { + top: oppositeColumn, + bottom: column, + left: oppositeRow, + right: row + }; +}; + +var getOrientationMarkerPositions = function getOrientationMarkerPositions(element) { + var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.getEnabledElement(element); + var top = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, { + x: enabledElement.image.width / 2, + y: 5 + }); + var bottom = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, { + x: enabledElement.image.width / 2, + y: enabledElement.image.height - 15 + }); + var left = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, { + x: 5, + y: enabledElement.image.height / 2 + }); + var right = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, { + x: enabledElement.image.width - 10, + y: enabledElement.image.height / 2 + }); + return { + top: top, + bottom: bottom, + left: left, + right: right + }; +}; + +/***/ }), + +/***/ "./tools/OverlayTool.js": +/*!******************************!*\ + !*** ./tools/OverlayTool.js ***! + \******************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OverlayTool; }); +/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"); +/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"); +/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"); +/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../store/index */ "./store/index.js"); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _base_BaseTool_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./base/BaseTool.js */ "./tools/base/BaseTool.js"); + + + + + + + + +var globalConfiguration = _store_index__WEBPACK_IMPORTED_MODULE_5__["modules"].globalConfiguration; +/** + * + * http://dicom.nema.org/dicom/2013/output/chtml/part03/sect_C.9.html + * + * @public + * @class Overlay + * @memberof Tools + * + * @classdesc Tool for displaying a scale overlay on the image. Uses viewport.overlayColor to set the default colour. + * @extends Tools.Base.BaseTool + */ + +var OverlayTool = +/*#__PURE__*/ +function (_BaseTool) { + _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(OverlayTool, _BaseTool); + + function OverlayTool() { + var _this; + + var configuration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, OverlayTool); + + var defaultConfig = { + name: 'Overlay', + configuration: {}, + mixins: ['enabledOrDisabledBinaryTool'] + }; + var initialConfiguration = Object.assign(defaultConfig, configuration); + _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(OverlayTool).call(this, initialConfiguration)); + _this.initialConfiguration = initialConfiguration; + return _this; + } + + _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(OverlayTool, [{ + key: "enabledCallback", + value: function enabledCallback(element) { + this.forceImageUpdate(element); + } + }, { + key: "disabledCallback", + value: function disabledCallback(element) { + this.forceImageUpdate(element); + } + }, { + key: "forceImageUpdate", + value: function forceImageUpdate(element) { + var enabledElement = _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.getEnabledElement(element); + + if (enabledElement.image) { + _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.updateImage(element); + } + } + }, { + key: "setupRender", + value: function setupRender(image) { + if (!image) { + return; + } + + var overlayPlaneMetadata = _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.metaData.get('overlayPlaneModule', image.imageId); + + if (!overlayPlaneMetadata || !overlayPlaneMetadata.overlays || !overlayPlaneMetadata.overlays.length) { + return; + } + + return overlayPlaneMetadata; + } + }, { + key: "setupViewport", + value: function setupViewport(viewport) { + if (viewport.overlayColor === undefined) { + viewport.overlayColor = globalConfiguration.configuration.overlayColor || 'white'; + } // Allow turning off overlays by setting overlayColor to false + + + if (viewport.overlayColor === false) { + return; + } + + return true; + } + }, { + key: "renderToolData", + value: function renderToolData(evt) { + var eventData = evt.detail; + var enabledElement = eventData.enabledElement, + image = eventData.image, + viewport = eventData.viewport, + canvasContext = eventData.canvasContext; + var overlayPlaneMetadata = this.setupRender(image); + + if (!eventData || !enabledElement || !overlayPlaneMetadata) { + return; + } + + if (!this.setupViewport(viewport)) { + return; + } + + var imageWidth = image.columns; + var imageHeight = image.rows; + overlayPlaneMetadata.overlays.forEach(function (overlay) { + if (overlay.visible === false) { + return; + } + + var layerCanvas = document.createElement('canvas'); + layerCanvas.width = imageWidth; + layerCanvas.height = imageHeight; + var layerContext = layerCanvas.getContext('2d'); + layerContext.fillStyle = overlay.fillStyle || viewport.overlayColor; + + if (overlay.type === 'R') { + layerContext.fillRect(0, 0, layerCanvas.width, layerCanvas.height); + layerContext.globalCompositeOperation = 'xor'; + } + + var i = 0; + + for (var y = 0; y < overlay.rows; y++) { + for (var x = 0; x < overlay.columns; x++) { + if (overlay.pixelData[i++] > 0) { + layerContext.fillRect(x, y, 1, 1); + } + } + } // Guard against non-number values + + + var overlayX = !isNaN(parseFloat(overlay.x)) && isFinite(overlay.x) ? overlay.x : 0; + var overlayY = !isNaN(parseFloat(overlay.y)) && isFinite(overlay.y) ? overlay.y : 0; // Draw the overlay layer onto the canvas + + canvasContext.drawImage(layerCanvas, overlayX, overlayY); + }); + } + }]); + + return OverlayTool; +}(_base_BaseTool_js__WEBPACK_IMPORTED_MODULE_7__["default"]); + + + /***/ }), /***/ "./tools/PanMultiTouchTool.js": @@ -19322,6 +20009,12 @@ function (_BaseTool) { }, defaultStrategy: 'default', supportedInteractionTypes: ['Mouse', 'Touch'], + configuration: { + roundAngles: false, + flipHorizontal: false, + flipVertical: false, + rotateScale: 1 + }, svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_8__["rotateCursor"] }; return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(RotateTool).call(this, props, defaultProps)); @@ -19346,7 +20039,7 @@ function (_BaseTool) { key: "dragCallback", value: function dragCallback(evt) { evt.detail.viewport.initialRotation = this.initialRotation; - this.applyActiveStrategy(evt, this.configuration); + this.applyActiveStrategy(evt); _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.setViewport(evt.detail.element, evt.detail.viewport); } }]); @@ -19356,51 +20049,89 @@ function (_BaseTool) { -var defaultStrategy = function defaultStrategy(evt) { - var eventData = evt.detail; - var element = eventData.element, - viewport = eventData.viewport; - var initialRotation = viewport.initialRotation; // Calculate the center of the image +function defaultStrategy(evt) { + var _this$configuration = this.configuration, + roundAngles = _this$configuration.roundAngles, + rotateScale = _this$configuration.rotateScale; + var _evt$detail = evt.detail, + element = _evt$detail.element, + viewport = _evt$detail.viewport, + startPoints = _evt$detail.startPoints, + currentPoints = _evt$detail.currentPoints; + var initialRotation = viewport.initialRotation ? viewport.initialRotation : viewport.rotation; // Calculate the center of the image var rect = element.getBoundingClientRect(element); var width = element.clientWidth, height = element.clientHeight; - var initialPoints = { - x: eventData.startPoints.client.x, - y: eventData.startPoints.client.y - }; var scale = viewport.scale, translation = viewport.translation; var centerPoints = { x: rect.left + width / 2 + translation.x * scale, y: rect.top + height / 2 + translation.y * scale }; - var currentPoints = { - x: eventData.currentPoints.client.x, - y: eventData.currentPoints.client.y - }; - var angleInfo = Object(_util_angleBetweenPoints_js__WEBPACK_IMPORTED_MODULE_7__["default"])(centerPoints, initialPoints, currentPoints); + var angleInfo = Object(_util_angleBetweenPoints_js__WEBPACK_IMPORTED_MODULE_7__["default"])(centerPoints, startPoints.client, currentPoints.client); + angleInfo.angle *= rotateScale; + + if (roundAngles) { + angleInfo.angle = Math.ceil(angleInfo.angle); + } if (angleInfo.direction < 0) { angleInfo.angle = -angleInfo.angle; } viewport.rotation = initialRotation + angleInfo.angle; -}; +} -var horizontalStrategy = function horizontalStrategy(evt) { - var eventData = evt.detail; - var viewport = eventData.viewport, - deltaPoints = eventData.deltaPoints; - viewport.rotation += deltaPoints.page.x / viewport.scale; -}; +function horizontalStrategy(evt) { + var _this$configuration2 = this.configuration, + roundAngles = _this$configuration2.roundAngles, + flipHorizontal = _this$configuration2.flipHorizontal, + rotateScale = _this$configuration2.rotateScale; + var _evt$detail2 = evt.detail, + viewport = _evt$detail2.viewport, + startPoints = _evt$detail2.startPoints, + currentPoints = _evt$detail2.currentPoints; + var initialRotation = viewport.initialRotation; + var initialPointX = startPoints.client.x; + var currentPointX = currentPoints.client.x; + var angle = (currentPointX - initialPointX) * rotateScale; -var verticalStrategy = function verticalStrategy(evt) { - var eventData = evt.detail; - var viewport = eventData.viewport, - deltaPoints = eventData.deltaPoints; - viewport.rotation += deltaPoints.page.y / viewport.scale; -}; + if (roundAngles) { + angle = Math.round(Math.abs(angle)) * (angle > 0 ? 1 : -1); + } + + if (flipHorizontal) { + angle = -angle; + } + + viewport.rotation = initialRotation + angle; +} + +function verticalStrategy(evt) { + var _this$configuration3 = this.configuration, + roundAngles = _this$configuration3.roundAngles, + flipVertical = _this$configuration3.flipVertical, + rotateScale = _this$configuration3.rotateScale; + var _evt$detail3 = evt.detail, + viewport = _evt$detail3.viewport, + startPoints = _evt$detail3.startPoints, + currentPoints = _evt$detail3.currentPoints; + var initialRotation = viewport.initialRotation; + var initialPointY = startPoints.client.y; + var currentPointY = currentPoints.client.y; + var angle = (currentPointY - initialPointY) * rotateScale; + + if (roundAngles) { + angle = Math.round(Math.abs(angle)) * (angle > 0 ? 1 : -1); + } + + if (flipVertical) { + angle = -angle; + } + + viewport.rotation = initialRotation + angle; +} /***/ }), @@ -19638,14 +20369,14 @@ function (_BaseTool) { Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["setShadow"])(context, imageAttributes); // Draw vertical line Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["drawLine"])(context, element, imageAttributes.verticalLine.start, imageAttributes.verticalLine.end, { - color: color, - lineWidth: lineWidth + color: imageAttributes.color, + lineWidth: imageAttributes.lineWidth }, 'canvas'); drawVerticalScalebarIntervals(context, element, imageAttributes); // Draw horizontal line Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["drawLine"])(context, element, imageAttributes.horizontalLine.start, imageAttributes.horizontalLine.end, { - color: color, - lineWidth: lineWidth + color: imageAttributes.color, + lineWidth: imageAttributes.lineWidth }, 'canvas'); drawHorizontalScalebarIntervals(context, element, imageAttributes); }); @@ -20385,7 +21116,9 @@ var _applyWWWCRegion = function _applyWWWCRegion(evt, config) { } viewport.voi.windowWidth = Math.max(Math.abs(minMaxMean.max - minMaxMean.min), config.minWindowWidth); - viewport.voi.windowCenter = minMaxMean.mean; + viewport.voi.windowCenter = minMaxMean.mean; // Unset any existing VOI LUT + + viewport.voiLUT = undefined; _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.setViewport(element, viewport); _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.updateImage(element); }; @@ -20543,7 +21276,10 @@ function basicLevelingStrategy(evt) { } else { eventData.viewport.voi.windowWidth += deltaY; eventData.viewport.voi.windowCenter += deltaX; - } + } // Unset any existing VOI LUT + + + eventData.viewport.voiLUT = undefined; } /***/ }), @@ -21049,6 +21785,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../events.js */ "./events.js"); /* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); /* harmony import */ var _util_throttle__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../util/throttle */ "./util/throttle.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../store/index */ "./store/index.js"); @@ -21074,6 +21811,7 @@ __webpack_require__.r(__webpack_exports__); + /** * @public * @class AngleTool @@ -21100,7 +21838,13 @@ function (_BaseAnnotationTool) { var defaultProps = { name: 'Angle', supportedInteractionTypes: ['Mouse', 'Touch'], - svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_17__["angleCursor"] + svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_17__["angleCursor"], + configuration: { + drawHandles: true, + drawHandlesOnHover: false, + hideHandlesIfMoving: false, + renderDashed: false + } }; _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(AngleTool).call(this, props, defaultProps)); _this.preventNewMeasurement = false; @@ -21159,22 +21903,9 @@ function (_BaseAnnotationTool) { }, { key: "updateCachedStats", value: function updateCachedStats(image, element, data) { - var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_20__["default"])(image), - rowPixelSpacing = _getPixelSpacing.rowPixelSpacing, - colPixelSpacing = _getPixelSpacing.colPixelSpacing; - - var sideA = { - x: (data.handles.middle.x - data.handles.start.x) * colPixelSpacing, - y: (data.handles.middle.y - data.handles.start.y) * rowPixelSpacing - }; - var sideB = { - x: (data.handles.end.x - data.handles.middle.x) * colPixelSpacing, - y: (data.handles.end.y - data.handles.middle.y) * rowPixelSpacing - }; - var sideC = { - x: (data.handles.end.x - data.handles.start.x) * colPixelSpacing, - y: (data.handles.end.y - data.handles.start.y) * rowPixelSpacing - }; + var sideA = getSide(image, data.handles.middle, data.handles.start); + var sideB = getSide(image, data.handles.end, data.handles.middle); + var sideC = getSide(image, data.handles.end, data.handles.start); var sideALength = length(sideA); var sideBLength = length(sideB); var sideCLength = length(sideC); // Cosine law @@ -21193,9 +21924,12 @@ function (_BaseAnnotationTool) { var enabledElement = eventData.enabledElement; var _this$configuration = this.configuration, handleRadius = _this$configuration.handleRadius, - drawHandlesOnHover = _this$configuration.drawHandlesOnHover; // If we have no toolData for this element, return immediately as there is nothing to do + drawHandlesOnHover = _this$configuration.drawHandlesOnHover, + hideHandlesIfMoving = _this$configuration.hideHandlesIfMoving, + renderDashed = _this$configuration.renderDashed; // If we have no toolData for this element, return immediately as there is nothing to do var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_7__["getToolState"])(evt.currentTarget, this.name); + var lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_22__["getModule"])('globalConfiguration').configuration.lineDash; if (!toolData) { return; @@ -21206,9 +21940,9 @@ function (_BaseAnnotationTool) { var image = eventData.image, element = eventData.element; - var _getPixelSpacing2 = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_20__["default"])(image), - rowPixelSpacing = _getPixelSpacing2.rowPixelSpacing, - colPixelSpacing = _getPixelSpacing2.colPixelSpacing; + var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_20__["default"])(image), + rowPixelSpacing = _getPixelSpacing.rowPixelSpacing, + colPixelSpacing = _getPixelSpacing.colPixelSpacing; var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_8__["default"].getToolWidth(); @@ -21225,16 +21959,27 @@ function (_BaseAnnotationTool) { var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_9__["default"].getColorIfActive(data); var handleStartCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(eventData.element, data.handles.start); var handleMiddleCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(eventData.element, data.handles.middle); - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawJoinedLines"])(context, eventData.element, data.handles.start, [data.handles.middle, data.handles.end], { + var lineOptions = { color: color - }); // Draw the handles + }; + + if (renderDashed) { + lineOptions.lineDash = lineDash; + } + + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawJoinedLines"])(context, eventData.element, data.handles.start, [data.handles.middle, data.handles.end], lineOptions); // Draw the handles var handleOptions = { color: color, handleRadius: handleRadius, - drawHandlesIfActive: drawHandlesOnHover + drawHandlesIfActive: drawHandlesOnHover, + hideHandlesIfMoving: hideHandlesIfMoving }; - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_14__["default"])(context, eventData, data.handles, handleOptions); // Update textbox stats + + if (_this2.configuration.drawHandles) { + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_14__["default"])(context, eventData, data.handles, handleOptions); + } // Update textbox stats + if (data.invalidated === true) { if (data.rAngle) { @@ -21311,15 +22056,36 @@ function (_BaseAnnotationTool) { Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_7__["addToolState"])(element, this.name, measurementData); _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); // Step 1, create start and second middle. - Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_10__["moveNewHandle"])(eventData, this.name, measurementData, measurementData.handles.middle, this.options, interactionType, function () { + Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_10__["moveNewHandle"])(eventData, this.name, measurementData, measurementData.handles.middle, this.options, interactionType, function (success) { measurementData.active = false; + + if (!success) { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_7__["removeToolState"])(element, _this3.name, measurementData); + _this3.preventNewMeasurement = false; + return; + } + measurementData.handles.end.active = true; _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); // Step 2, create end. - Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_10__["moveNewHandle"])(eventData, _this3.name, measurementData, measurementData.handles.end, _this3.options, interactionType, function () { - measurementData.active = false; + Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_10__["moveNewHandle"])(eventData, _this3.name, measurementData, measurementData.handles.end, _this3.options, interactionType, function (success) { + if (success) { + measurementData.active = false; + _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); + } else { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_7__["removeToolState"])(element, _this3.name, measurementData); + } + _this3.preventNewMeasurement = false; _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); + var modifiedEventData = { + toolName: _this3.name, + toolType: _this3.name, + // Deprecation notice: toolType will be replaced by toolName + element: element, + measurementData: measurementData + }; + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_18__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_19__["default"].MEASUREMENT_COMPLETED, modifiedEventData); }); }); } @@ -21334,6 +22100,17 @@ function length(vector) { return Math.sqrt(Math.pow(vector.x, 2) + Math.pow(vector.y, 2)); } +function getSide(image, handleEnd, handleStart) { + var _getPixelSpacing2 = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_20__["default"])(image), + rowPixelSpacing = _getPixelSpacing2.rowPixelSpacing, + colPixelSpacing = _getPixelSpacing2.colPixelSpacing; + + return { + x: (handleEnd.x - handleStart.x) * (colPixelSpacing || 1), + y: (handleEnd.y - handleStart.y) * (rowPixelSpacing || 1) + }; +} + /***/ }), /***/ "./tools/annotation/ArrowAnnotateTool.js": @@ -21373,6 +22150,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./../../drawing/drawHandles.js */ "./drawing/drawHandles.js"); /* harmony import */ var _drawing_drawTextBox_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./../../drawing/drawTextBox.js */ "./drawing/drawTextBox.js"); /* harmony import */ var _cursors_index_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../cursors/index.js */ "./tools/cursors/index.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../store/index */ "./store/index.js"); @@ -21397,6 +22175,7 @@ __webpack_require__.r(__webpack_exports__); + /** * @public * @class ArrowAnnotateTool @@ -21423,9 +22202,12 @@ function (_BaseAnnotationTool) { configuration: { getTextCallback: getTextCallback, changeTextCallback: changeTextCallback, - drawHandles: false, - drawHandlesOnHover: true, - arrowFirst: true + drawHandles: true, + drawHandlesOnHover: false, + hideHandlesIfMoving: false, + arrowFirst: true, + renderDashed: false, + allowEmptyLabel: false }, svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_21__["arrowAnnotateCursor"] }; @@ -21489,7 +22271,9 @@ function (_BaseAnnotationTool) { enabledElement = _evt$detail.enabledElement; var _this$configuration = this.configuration, handleRadius = _this$configuration.handleRadius, - drawHandlesOnHover = _this$configuration.drawHandlesOnHover; // If we have no toolData for this element, return immediately as there is nothing to do + drawHandlesOnHover = _this$configuration.drawHandlesOnHover, + hideHandlesIfMoving = _this$configuration.hideHandlesIfMoving, + renderDashed = _this$configuration.renderDashed; // If we have no toolData for this element, return immediately as there is nothing to do var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_15__["getToolState"])(element, this.name); @@ -21501,6 +22285,11 @@ function (_BaseAnnotationTool) { var canvas = evt.detail.canvasContext.canvas; var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_17__["getNewContext"])(canvas); var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_8__["default"].getToolWidth(); + var lineDash; + + if (renderDashed) { + lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_22__["getModule"])('globalConfiguration').configuration.lineDash; + } var _loop = function _loop(i) { var data = toolData.data[i]; @@ -21517,15 +22306,16 @@ function (_BaseAnnotationTool) { var handleEndCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, data.handles.end); // Config.arrowFirst = false; if (_this2.configuration.arrowFirst) { - Object(_drawing_drawArrow_js__WEBPACK_IMPORTED_MODULE_18__["default"])(context, handleEndCanvas, handleStartCanvas, color, lineWidth); + Object(_drawing_drawArrow_js__WEBPACK_IMPORTED_MODULE_18__["default"])(context, handleEndCanvas, handleStartCanvas, color, lineWidth, lineDash); } else { - Object(_drawing_drawArrow_js__WEBPACK_IMPORTED_MODULE_18__["default"])(context, handleStartCanvas, handleEndCanvas, color, lineWidth); + Object(_drawing_drawArrow_js__WEBPACK_IMPORTED_MODULE_18__["default"])(context, handleStartCanvas, handleEndCanvas, color, lineWidth, lineDash); } var handleOptions = { color: color, handleRadius: handleRadius, - drawHandlesIfActive: drawHandlesOnHover + drawHandlesIfActive: drawHandlesOnHover, + hideHandlesIfMoving: hideHandlesIfMoving }; if (_this2.configuration.drawHandles) { @@ -21598,22 +22388,34 @@ function (_BaseAnnotationTool) { var _this3 = this; var element = evt.detail.element; - var measurementData = this.createNewMeasurement(evt); // Associate this data with this imageId so we can render it and manipulate it + var measurementData = this.createNewMeasurement(evt); + var allowEmptyLabel = this.configuration.allowEmptyLabel; // Associate this data with this imageId so we can render it and manipulate it Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_15__["addToolState"])(element, this.name, measurementData); _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); - Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_11__["moveNewHandle"])(evt.detail, this.name, measurementData, measurementData.handles.end, this.options, interactionType, function () { - if (measurementData.text === undefined) { - _this3.configuration.getTextCallback(function (text) { - if (text) { - measurementData.text = text; - } else { - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_15__["removeToolState"])(element, _this3.name, measurementData); - } - - measurementData.active = false; - _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); - }); + Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_11__["moveNewHandle"])(evt.detail, this.name, measurementData, measurementData.handles.end, this.options, interactionType, function (success) { + if (success) { + if (measurementData.text === undefined) { + _this3.configuration.getTextCallback(function (text) { + if (text || allowEmptyLabel) { + measurementData.text = text; + measurementData.active = false; + var modifiedEventData = { + toolName: _this3.name, + toolType: _this3.name, + // Deprecation notice: toolType will be replaced by toolName + element: element, + measurementData: measurementData + }; + _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_14__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MEASUREMENT_COMPLETED, modifiedEventData); + } else { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_15__["removeToolState"])(element, _this3.name, measurementData); + } + }, evt.detail); + } + } else { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_15__["removeToolState"])(element, _this3.name, measurementData); } _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); @@ -21657,15 +22459,22 @@ function (_BaseAnnotationTool) { } }, { key: "_doneChangingTextCallback", - value: function _doneChangingTextCallback(element, data, updatedText, deleteTool) { + value: function _doneChangingTextCallback(element, measurementData, updatedText, deleteTool) { if (deleteTool === true) { - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_15__["removeToolState"])(element, this.name, data); + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_15__["removeToolState"])(element, this.name, measurementData); } else { - data.text = updatedText; + measurementData.text = updatedText; } - data.active = false; + measurementData.active = false; _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.updateImage(element); + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_14__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MEASUREMENT_MODIFIED, { + toolName: this.name, + toolType: this.name, + // Deprecation notice: toolType will be replaced by toolName + element: element, + measurementData: measurementData + }); } }]); @@ -21770,7 +22579,10 @@ function (_BaseAnnotationTool) { getMeasurementLocationCallback: emptyLocationCallback, textBox: '', shadow: '', + drawHandles: true, drawHandlesOnHover: true, + hideHandlesIfMoving: false, + renderDashed: false, additionalData: [] }, svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_15__["bidirectionalCursor"] @@ -21791,6 +22603,11 @@ function (_BaseAnnotationTool) { _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(BidirectionalTool, [{ key: "updateCachedStats", value: function updateCachedStats(image, element, data) { + // Prevent updating other tools' data + if (data.toolName !== this.name) { + return; + } + var pixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_17__["default"])(image); var _calculateLongestAndS = Object(_bidirectionalTool_utils_calculateLongestAndShortestDiameters__WEBPACK_IMPORTED_MODULE_18__["default"])(data, pixelSpacing), @@ -21836,16 +22653,17 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../../stateManagement/toolStyle.js */ "./stateManagement/toolStyle.js"); /* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../../stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); -/* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./../../drawing/index.js */ "./drawing/index.js"); -/* harmony import */ var _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./../../util/calculateSUV.js */ "./util/calculateSUV.js"); -/* harmony import */ var _util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./../../util/ellipse/index.js */ "./util/ellipse/index.js"); -/* harmony import */ var _util_getROITextBoxCoords_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../util/getROITextBoxCoords.js */ "./util/getROITextBoxCoords.js"); -/* harmony import */ var _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./../../util/numbersWithCommas.js */ "./util/numbersWithCommas.js"); -/* harmony import */ var _util_throttle_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./../../util/throttle.js */ "./util/throttle.js"); -/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../util/logger.js */ "./util/logger.js"); -/* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); -/* harmony import */ var _cursors_index_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../cursors/index.js */ "./tools/cursors/index.js"); -/* harmony import */ var _util_getCircleCoords__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../util/getCircleCoords */ "./util/getCircleCoords.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../store/index */ "./store/index.js"); +/* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./../../drawing/index.js */ "./drawing/index.js"); +/* harmony import */ var _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./../../util/calculateSUV.js */ "./util/calculateSUV.js"); +/* harmony import */ var _util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./../../util/ellipse/index.js */ "./util/ellipse/index.js"); +/* harmony import */ var _util_getROITextBoxCoords_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../util/getROITextBoxCoords.js */ "./util/getROITextBoxCoords.js"); +/* harmony import */ var _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./../../util/numbersWithCommas.js */ "./util/numbersWithCommas.js"); +/* harmony import */ var _util_throttle_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./../../util/throttle.js */ "./util/throttle.js"); +/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/logger.js */ "./util/logger.js"); +/* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); +/* harmony import */ var _cursors_index_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../cursors/index.js */ "./tools/cursors/index.js"); +/* harmony import */ var _util_getCircleCoords__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../util/getCircleCoords */ "./util/getCircleCoords.js"); @@ -21856,6 +22674,7 @@ __webpack_require__.r(__webpack_exports__); + // Drawing // Util @@ -21869,7 +22688,7 @@ __webpack_require__.r(__webpack_exports__); -var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_16__["getLogger"])('tools:annotation:CircleRoiTool'); +var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_17__["getLogger"])('tools:annotation:CircleRoiTool'); /** * @public * @class CircleRoiTool @@ -21894,10 +22713,15 @@ function (_BaseAnnotationTool) { var defaultProps = { name: 'CircleRoi', supportedInteractionTypes: ['Mouse', 'Touch'], - svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_18__["circleRoiCursor"] + svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_19__["circleRoiCursor"], + configuration: { + centerPointRadius: 0, + renderDashed: false, + hideHandlesIfMoving: false + } }; _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(CircleRoiTool).call(this, props, defaultProps)); - _this.throttledUpdateCachedStats = Object(_util_throttle_js__WEBPACK_IMPORTED_MODULE_15__["default"])(_this.updateCachedStats, 110); + _this.throttledUpdateCachedStats = Object(_util_throttle_js__WEBPACK_IMPORTED_MODULE_16__["default"])(_this.updateCachedStats, 110); return _this; } @@ -21970,7 +22794,7 @@ function (_BaseAnnotationTool) { value: function updateCachedStats(image, element, data) { var seriesModule = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.metaData.get('generalSeriesModule', image.imageId) || {}; var modality = seriesModule.modality; - var pixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_17__["default"])(image); + var pixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__["default"])(image); var stats = _calculateStats(image, element, data.handles, modality, pixelSpacing); @@ -21996,19 +22820,23 @@ function (_BaseAnnotationTool) { var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_8__["default"].getToolWidth(); var _this$configuration = this.configuration, handleRadius = _this$configuration.handleRadius, - drawHandlesOnHover = _this$configuration.drawHandlesOnHover; - var newContext = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["getNewContext"])(canvasContext.canvas); + drawHandlesOnHover = _this$configuration.drawHandlesOnHover, + hideHandlesIfMoving = _this$configuration.hideHandlesIfMoving, + renderDashed = _this$configuration.renderDashed, + centerPointRadius = _this$configuration.centerPointRadius; + var newContext = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["getNewContext"])(canvasContext.canvas); - var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_17__["default"])(image), + var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__["default"])(image), rowPixelSpacing = _getPixelSpacing.rowPixelSpacing, - colPixelSpacing = _getPixelSpacing.colPixelSpacing; // Meta + colPixelSpacing = _getPixelSpacing.colPixelSpacing; + var lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_10__["getModule"])('globalConfiguration').configuration.lineDash; // Meta var seriesModule = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.metaData.get('generalSeriesModule', image.imageId) || {}; // Pixel Spacing var modality = seriesModule.modality; var hasPixelSpacing = rowPixelSpacing && colPixelSpacing; - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["draw"])(newContext, function (context) { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["draw"])(newContext, function (context) { // If we have tool data for this element, iterate over each set and draw it for (var i = 0; i < toolData.data.length; i++) { var data = toolData.data[i]; @@ -22022,18 +22850,35 @@ function (_BaseAnnotationTool) { var handleOptions = { color: color, handleRadius: handleRadius, - drawHandlesIfActive: drawHandlesOnHover + drawHandlesIfActive: drawHandlesOnHover, + hideHandlesIfMoving: hideHandlesIfMoving }; - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["setShadow"])(context, _this2.configuration); + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["setShadow"])(context, _this2.configuration); var startCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, data.handles.start); var endCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, data.handles.end); // Calculating the radius where startCanvas is the center of the circle to be drawn - var radius = getDistance(startCanvas, endCanvas); // Draw Circle - - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawCircle"])(context, element, data.handles.start, radius, { + var radius = getDistance(startCanvas, endCanvas); + var circleOptions = { color: color - }, 'pixel'); - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawHandles"])(context, eventData, data.handles, handleOptions); // Update textbox stats + }; + + if (renderDashed) { + circleOptions.lineDash = lineDash; + } // Draw Circle + + + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawCircle"])(context, element, data.handles.start, radius, circleOptions, 'pixel'); + + if (centerPointRadius && radius > 3 * centerPointRadius) { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawCircle"])(context, element, data.handles.start, centerPointRadius, circleOptions, 'pixel'); + } + + if (data.handles) { + data.handles.start.drawnIndependently = true; + data.handles.end.drawnIndependently = true; + } + + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawHandles"])(context, eventData, data.handles, handleOptions); // Update textbox stats if (data.invalidated === true) { if (data.cachedStats) { @@ -22045,7 +22890,7 @@ function (_BaseAnnotationTool) { if (!data.handles.textBox.hasMoved) { - var defaultCoords = Object(_util_getROITextBoxCoords_js__WEBPACK_IMPORTED_MODULE_13__["default"])(eventData.viewport, data.handles); + var defaultCoords = Object(_util_getROITextBoxCoords_js__WEBPACK_IMPORTED_MODULE_14__["default"])(eventData.viewport, data.handles); Object.assign(data.handles.textBox, defaultCoords); } @@ -22056,7 +22901,7 @@ function (_BaseAnnotationTool) { var textBoxContent = _createTextBoxContent(context, image.color, data.cachedStats, modality, hasPixelSpacing, _this2.configuration); data.unit = _getUnit(modality, _this2.configuration.showHounsfieldUnits); - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawLinkedTextBox"])(context, element, data.handles.textBox, textBoxContent, data.handles, textBoxAnchorPoints, color, lineWidth, 10, true); + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawLinkedTextBox"])(context, element, data.handles.textBox, textBoxContent, data.handles, textBoxAnchorPoints, color, lineWidth, 10, true); } }); } @@ -22076,7 +22921,7 @@ function (_BaseAnnotationTool) { function _findTextBoxAnchorPoints(startHandle, endHandle) { - var _getCircleCoords = Object(_util_getCircleCoords__WEBPACK_IMPORTED_MODULE_19__["default"])(startHandle, endHandle), + var _getCircleCoords = Object(_util_getCircleCoords__WEBPACK_IMPORTED_MODULE_20__["default"])(startHandle, endHandle), left = _getCircleCoords.left, top = _getCircleCoords.top, width = _getCircleCoords.width, @@ -22119,12 +22964,22 @@ function _getUnit(modality, showHounsfieldUnits) { function _createTextBoxContent(context, isColorImage) { var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - area = _ref.area, - mean = _ref.mean, - stdDev = _ref.stdDev, - min = _ref.min, - max = _ref.max, - meanStdDevSUV = _ref.meanStdDevSUV; + _ref$area = _ref.area, + area = _ref$area === void 0 ? 0 : _ref$area, + _ref$radius = _ref.radius, + radius = _ref$radius === void 0 ? 0 : _ref$radius, + _ref$perimeter = _ref.perimeter, + perimeter = _ref$perimeter === void 0 ? 0 : _ref$perimeter, + _ref$mean = _ref.mean, + mean = _ref$mean === void 0 ? 0 : _ref$mean, + _ref$stdDev = _ref.stdDev, + stdDev = _ref$stdDev === void 0 ? 0 : _ref$stdDev, + _ref$min = _ref.min, + min = _ref$min === void 0 ? 0 : _ref$min, + _ref$max = _ref.max, + max = _ref$max === void 0 ? 0 : _ref$max, + _ref$meanStdDevSUV = _ref.meanStdDevSUV, + meanStdDevSUV = _ref$meanStdDevSUV === void 0 ? 0 : _ref$meanStdDevSUV; var modality = arguments.length > 3 ? arguments[3] : undefined; var hasPixelSpacing = arguments.length > 4 ? arguments[4] : undefined; @@ -22139,13 +22994,13 @@ function _createTextBoxContent(context, isColorImage) { var unit = _getUnit(modality, options.showHounsfieldUnits); - var meanString = "Mean: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(mean.toFixed(2)), " ").concat(unit); - var stdDevString = "Std Dev: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(stdDev.toFixed(2)), " ").concat(unit); // If this image has SUV values to display, concatenate them to the text line + var meanString = "Mean: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(mean.toFixed(2)), " ").concat(unit); + var stdDevString = "Std Dev: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(stdDev.toFixed(2)), " ").concat(unit); // If this image has SUV values to display, concatenate them to the text line if (hasStandardUptakeValues) { var SUVtext = ' SUV: '; - var meanSuvString = "".concat(SUVtext).concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(meanStdDevSUV.mean.toFixed(2))); - var stdDevSuvString = "".concat(SUVtext).concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(meanStdDevSUV.stdDev.toFixed(2))); + var meanSuvString = "".concat(SUVtext).concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(meanStdDevSUV.mean.toFixed(2))); + var stdDevSuvString = "".concat(SUVtext).concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(meanStdDevSUV.stdDev.toFixed(2))); var targetStringLength = Math.floor(context.measureText("".concat(stdDevString, " ")).width); while (context.measureText(meanString).width < targetStringLength) { @@ -22173,6 +23028,15 @@ function _createTextBoxContent(context, isColorImage) { } textLines.push(_formatArea(area, hasPixelSpacing)); + + if (radius) { + textLines.push(_formatLength(radius, 'Radius', hasPixelSpacing)); + } + + if (perimeter) { + textLines.push(_formatLength(perimeter, 'Perimeter', hasPixelSpacing)); + } + otherLines.forEach(function (x) { return textLines.push(x); }); @@ -22190,7 +23054,16 @@ function _createTextBoxContent(context, isColorImage) { function _formatArea(area, hasPixelSpacing) { // This uses Char code 178 for a superscript 2 var suffix = hasPixelSpacing ? " mm".concat(String.fromCharCode(178)) : " px".concat(String.fromCharCode(178)); - return "Area: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(area.toFixed(2))).concat(suffix); + return "Area: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(area.toFixed(2))).concat(suffix); +} + +function _formatLength(value, name, hasPixelSpacing) { + if (!value) { + return ''; + } + + var suffix = hasPixelSpacing ? ' mm' : ' px'; + return "".concat(name, ": ").concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(value.toFixed(1))).concat(suffix); } /** * @@ -22206,23 +23079,27 @@ function _formatArea(area, hasPixelSpacing) { function _calculateStats(image, element, handles, modality, pixelSpacing) { // Retrieve the bounds of the ellipse in image coordinates - var circleCoordinates = Object(_util_getCircleCoords__WEBPACK_IMPORTED_MODULE_19__["default"])(handles.start, handles.end); // Retrieve the array of pixels that the ellipse bounds cover + var circleCoordinates = Object(_util_getCircleCoords__WEBPACK_IMPORTED_MODULE_20__["default"])(handles.start, handles.end); // Retrieve the array of pixels that the ellipse bounds cover var pixels = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.getPixels(element, circleCoordinates.left, circleCoordinates.top, circleCoordinates.width, circleCoordinates.height); // Calculate the mean & standard deviation from the pixels and the ellipse details. - var ellipseMeanStdDev = Object(_util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_12__["calculateEllipseStatistics"])(pixels, circleCoordinates); + var ellipseMeanStdDev = Object(_util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_13__["calculateEllipseStatistics"])(pixels, circleCoordinates); var meanStdDevSUV; if (modality === 'PT') { meanStdDevSUV = { - mean: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_11__["default"])(image, ellipseMeanStdDev.mean, true) || 0, - stdDev: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_11__["default"])(image, ellipseMeanStdDev.stdDev, true) || 0 + mean: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_12__["default"])(image, ellipseMeanStdDev.mean, true) || 0, + stdDev: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_12__["default"])(image, ellipseMeanStdDev.stdDev, true) || 0 }; } - var area = Math.PI * (circleCoordinates.width * (pixelSpacing.colPixelSpacing || 1) / 2) * (circleCoordinates.height * (pixelSpacing.rowPixelSpacing || 1) / 2); + var radius = circleCoordinates.width * (pixelSpacing && pixelSpacing.colPixelSpacing || 1) / 2; + var perimeter = 2 * Math.PI * radius; + var area = Math.PI * (circleCoordinates.width * (pixelSpacing && pixelSpacing.colPixelSpacing || 1) / 2) * (circleCoordinates.height * (pixelSpacing && pixelSpacing.rowPixelSpacing || 1) / 2); return { area: area || 0, + radius: radius || 0, + perimeter: perimeter || 0, count: ellipseMeanStdDev.count || 0, mean: ellipseMeanStdDev.mean || 0, variance: ellipseMeanStdDev.variance || 0, @@ -22272,6 +23149,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../util/triggerEvent.js */ "./util/triggerEvent.js"); /* harmony import */ var _util_throttle__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../util/throttle */ "./util/throttle.js"); /* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../store/index */ "./store/index.js"); @@ -22297,6 +23175,7 @@ __webpack_require__.r(__webpack_exports__); + /** * @public * @class CobbAngleTool @@ -22320,7 +23199,13 @@ function (_BaseAnnotationTool) { var defaultProps = { name: 'CobbAngle', supportedInteractionTypes: ['Mouse', 'Touch'], - svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_18__["cobbAngleCursor"] + svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_18__["cobbAngleCursor"], + configuration: { + drawHandles: true, + drawHandlesOnHover: false, + hideHandlesIfMoving: false, + renderDashed: false + } }; _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(CobbAngleTool).call(this, props, defaultProps)); _this.hasIncomplete = false; @@ -22398,7 +23283,9 @@ function (_BaseAnnotationTool) { return false; } - return Object(_util_lineSegDistance_js__WEBPACK_IMPORTED_MODULE_15__["default"])(element, data.handles.start, data.handles.end, coords) < 25 || Object(_util_lineSegDistance_js__WEBPACK_IMPORTED_MODULE_15__["default"])(element, data.handles.start2, data.handles.end2, coords) < 25; + var seg1Near = Object(_util_lineSegDistance_js__WEBPACK_IMPORTED_MODULE_15__["default"])(element, data.handles.start, data.handles.end, coords) < 25; + var seg2Near = Object(_util_lineSegDistance_js__WEBPACK_IMPORTED_MODULE_15__["default"])(element, data.handles.start2, data.handles.end2, coords) < 25; + return seg1Near || seg2Near; } }, { key: "updateCachedStats", @@ -22407,10 +23294,10 @@ function (_BaseAnnotationTool) { rowPixelSpacing = _getPixelSpacing.rowPixelSpacing, colPixelSpacing = _getPixelSpacing.colPixelSpacing; - var dx1 = (Math.ceil(data.handles.start.x) - Math.ceil(data.handles.end.x)) * colPixelSpacing; - var dy1 = (Math.ceil(data.handles.start.y) - Math.ceil(data.handles.end.y)) * rowPixelSpacing; - var dx2 = (Math.ceil(data.handles.start2.x) - Math.ceil(data.handles.end2.x)) * colPixelSpacing; - var dy2 = (Math.ceil(data.handles.start2.y) - Math.ceil(data.handles.end2.y)) * rowPixelSpacing; + var dx1 = (Math.ceil(data.handles.start.x) - Math.ceil(data.handles.end.x)) * (colPixelSpacing || 1); + var dy1 = (Math.ceil(data.handles.start.y) - Math.ceil(data.handles.end.y)) * (rowPixelSpacing || 1); + var dx2 = (Math.ceil(data.handles.start2.x) - Math.ceil(data.handles.end2.x)) * (colPixelSpacing || 1); + var dy2 = (Math.ceil(data.handles.start2.y) - Math.ceil(data.handles.end2.y)) * (rowPixelSpacing || 1); var angle = Math.acos(Math.abs((dx1 * dx2 + dy1 * dy2) / (Math.sqrt(dx1 * dx1 + dy1 * dy1) * Math.sqrt(dx2 * dx2 + dy2 * dy2)))); angle *= 180 / Math.PI; data.rAngle = Object(_util_roundToDecimal_js__WEBPACK_IMPORTED_MODULE_16__["default"])(angle, 2); @@ -22424,7 +23311,9 @@ function (_BaseAnnotationTool) { var eventData = evt.detail; var _this$configuration = this.configuration, handleRadius = _this$configuration.handleRadius, - drawHandlesOnHover = _this$configuration.drawHandlesOnHover; // If we have no toolData for this element, return immediately as there is nothing to do + drawHandlesOnHover = _this$configuration.drawHandlesOnHover, + hideHandlesIfMoving = _this$configuration.hideHandlesIfMoving, + renderDashed = _this$configuration.renderDashed; // If we have no toolData for this element, return immediately as there is nothing to do var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_8__["getToolState"])(evt.currentTarget, this.name); @@ -22435,7 +23324,14 @@ function (_BaseAnnotationTool) { var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_12__["getNewContext"])(eventData.canvasContext.canvas); var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_9__["default"].getToolWidth(); + var lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_22__["getModule"])('globalConfiguration').configuration.lineDash; var font = _stateManagement_textStyle_js__WEBPACK_IMPORTED_MODULE_7__["default"].getFont(); + var element = evt.detail.element; + var image = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.getEnabledElement(element).image; + + var _getPixelSpacing2 = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_21__["default"])(image), + rowPixelSpacing = _getPixelSpacing2.rowPixelSpacing, + colPixelSpacing = _getPixelSpacing2.colPixelSpacing; var _loop = function _loop(i) { var data = toolData.data[i]; @@ -22444,27 +23340,40 @@ function (_BaseAnnotationTool) { return "continue"; } + if (!data.value) { + data.value = _this2.textBoxText(data, rowPixelSpacing, colPixelSpacing); + } + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_12__["draw"])(context, function (context) { Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_12__["setShadow"])(context, _this2.configuration); // Differentiate the color of activation tool var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_10__["default"].getColorIfActive(data); - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_12__["drawLine"])(context, eventData.element, data.handles.start, data.handles.end, { + var lineOptions = { color: color - }); + }; + + if (renderDashed) { + lineOptions.lineDash = lineDash; + } + + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_12__["drawLine"])(context, eventData.element, data.handles.start, data.handles.end, lineOptions); if (data.complete) { - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_12__["drawLine"])(context, eventData.element, data.handles.start2, data.handles.end2, { - color: color - }); + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_12__["drawLine"])(context, eventData.element, data.handles.start2, data.handles.end2, lineOptions); } // Draw the handles var handleOptions = { color: color, handleRadius: handleRadius, - drawHandlesIfActive: drawHandlesOnHover + drawHandlesIfActive: drawHandlesOnHover, + hideHandlesIfMoving: hideHandlesIfMoving }; - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_13__["default"])(context, eventData, data.handles, handleOptions); // Draw the text + + if (_this2.configuration.drawHandles) { + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_13__["default"])(context, eventData, data.handles, handleOptions); + } // Draw the text + context.fillStyle = color; var text = data.value; @@ -22515,7 +23424,25 @@ function (_BaseAnnotationTool) { var eventData = evt.detail; var measurementData; var toMoveHandle; - var doneMovingCallback; // Search for incomplete measurements + + var doneMovingCallback = function doneMovingCallback(success) { + // DoneMovingCallback for first measurement. + if (!success) { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_8__["removeToolState"])(element, _this3.name, measurementData); + return; + } + + var eventType = _events_js__WEBPACK_IMPORTED_MODULE_17__["default"].MEASUREMENT_COMPLETED; + var eventData = { + toolName: _this3.name, + toolType: _this3.name, + // Deprecation notice: toolType will be replaced by toolName + element: element, + measurementData: measurementData + }; + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_19__["default"])(element, eventType, eventData); + }; // Search for incomplete measurements + var element = evt.detail.element; var pendingMeasurement = this.getIncomplete(element); @@ -22540,10 +23467,18 @@ function (_BaseAnnotationTool) { toMoveHandle = measurementData.handles.end2; this.hasIncomplete = false; - doneMovingCallback = function doneMovingCallback() { + doneMovingCallback = function doneMovingCallback(success) { + // DoneMovingCallback for second measurement + if (!success) { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_8__["removeToolState"])(element, _this3.name, measurementData); + return; + } + var eventType = _events_js__WEBPACK_IMPORTED_MODULE_17__["default"].MEASUREMENT_COMPLETED; var eventData = { + toolName: _this3.name, toolType: _this3.name, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: measurementData }; @@ -22565,9 +23500,9 @@ function (_BaseAnnotationTool) { var element = ev.detail.element; var image = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.getEnabledElement(element).image; - var _getPixelSpacing2 = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_21__["default"])(image), - rowPixelSpacing = _getPixelSpacing2.rowPixelSpacing, - colPixelSpacing = _getPixelSpacing2.colPixelSpacing; + var _getPixelSpacing3 = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_21__["default"])(image), + rowPixelSpacing = _getPixelSpacing3.rowPixelSpacing, + colPixelSpacing = _getPixelSpacing3.colPixelSpacing; if (ev.detail.toolName !== this.name) { return; @@ -22583,19 +23518,23 @@ function (_BaseAnnotationTool) { } } - var rAngle = data.rAngle; - data.value = ''; + data.value = this.textBoxText(data, rowPixelSpacing, colPixelSpacing); + } + }, { + key: "textBoxText", + value: function textBoxText(_ref2, rowPixelSpacing, colPixelSpacing) { + var rAngle = _ref2.rAngle; - if (!Number.isNaN(rAngle)) { - data.value = textBoxText(rAngle, rowPixelSpacing, colPixelSpacing); + if (rAngle === undefined) { + return ''; } - function textBoxText(rAngle, rowPixelSpacing, colPixelSpacing) { - var suffix = !rowPixelSpacing || !colPixelSpacing ? ' (isotropic)' : ''; - var str = '00B0'; // Degrees symbol - - return rAngle.toString() + String.fromCharCode(parseInt(str, 16)) + suffix; + if (Number.isNaN(rAngle)) { + return ''; } + + var suffix = !rowPixelSpacing || !colPixelSpacing ? ' (isotropic)' : ''; + return "".concat(rAngle, "\xB0").concat(suffix); } }, { key: "activeCallback", @@ -22653,15 +23592,17 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../../stateManagement/toolStyle.js */ "./stateManagement/toolStyle.js"); /* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../../stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); -/* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./../../drawing/index.js */ "./drawing/index.js"); -/* harmony import */ var _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./../../util/calculateSUV.js */ "./util/calculateSUV.js"); -/* harmony import */ var _util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./../../util/ellipse/index.js */ "./util/ellipse/index.js"); -/* harmony import */ var _util_getROITextBoxCoords_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../util/getROITextBoxCoords.js */ "./util/getROITextBoxCoords.js"); -/* harmony import */ var _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./../../util/numbersWithCommas.js */ "./util/numbersWithCommas.js"); -/* harmony import */ var _util_throttle_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./../../util/throttle.js */ "./util/throttle.js"); -/* harmony import */ var _cursors_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../cursors/index.js */ "./tools/cursors/index.js"); -/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/logger.js */ "./util/logger.js"); -/* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); +/* harmony import */ var _manipulators_getHandleNearImagePoint__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../manipulators/getHandleNearImagePoint */ "./manipulators/getHandleNearImagePoint.js"); +/* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./../../drawing/index.js */ "./drawing/index.js"); +/* harmony import */ var _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./../../util/calculateSUV.js */ "./util/calculateSUV.js"); +/* harmony import */ var _util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./../../util/ellipse/index.js */ "./util/ellipse/index.js"); +/* harmony import */ var _util_getROITextBoxCoords_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../util/getROITextBoxCoords.js */ "./util/getROITextBoxCoords.js"); +/* harmony import */ var _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./../../util/numbersWithCommas.js */ "./util/numbersWithCommas.js"); +/* harmony import */ var _util_throttle_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./../../util/throttle.js */ "./util/throttle.js"); +/* harmony import */ var _cursors_index_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../cursors/index.js */ "./tools/cursors/index.js"); +/* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../util/logger.js */ "./util/logger.js"); +/* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../store/index */ "./store/index.js"); @@ -22672,6 +23613,7 @@ __webpack_require__.r(__webpack_exports__); + // Drawing // Util @@ -22684,7 +23626,8 @@ __webpack_require__.r(__webpack_exports__); -var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_17__["getLogger"])('tools:annotation:EllipticalRoiTool'); + +var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_18__["getLogger"])('tools:annotation:EllipticalRoiTool'); /** * @public * @class EllipticalRoiTool @@ -22709,13 +23652,17 @@ function (_BaseAnnotationTool) { var defaultProps = { name: 'EllipticalRoi', supportedInteractionTypes: ['Mouse', 'Touch'], - configuration: {// showMinMax: false, + configuration: { + // showMinMax: false, // showHounsfieldUnits: true, + drawHandlesOnHover: false, + hideHandlesIfMoving: false, + renderDashed: false }, - svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_16__["ellipticalRoiCursor"] + svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_17__["ellipticalRoiCursor"] }; _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(EllipticalRoiTool).call(this, props, defaultProps)); - _this.throttledUpdateCachedStats = Object(_util_throttle_js__WEBPACK_IMPORTED_MODULE_15__["default"])(_this.updateCachedStats, 110); + _this.throttledUpdateCachedStats = Object(_util_throttle_js__WEBPACK_IMPORTED_MODULE_16__["default"])(_this.updateCachedStats, 110); return _this; } @@ -22773,6 +23720,12 @@ function (_BaseAnnotationTool) { return false; } + var handleNearImagePoint = Object(_manipulators_getHandleNearImagePoint__WEBPACK_IMPORTED_MODULE_10__["default"])(element, data.handles, coords, 6); + + if (handleNearImagePoint) { + return true; + } + var distance = interactionType === 'mouse' ? 15 : 25; var startCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, data.handles.start); var endCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.pixelToCanvas(element, data.handles.end); @@ -22788,8 +23741,8 @@ function (_BaseAnnotationTool) { width: Math.abs(startCanvas.x - endCanvas.x) + distance, height: Math.abs(startCanvas.y - endCanvas.y) + distance }; - var pointInMinorEllipse = Object(_util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_12__["pointInEllipse"])(minorEllipse, coords); - var pointInMajorEllipse = Object(_util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_12__["pointInEllipse"])(majorEllipse, coords); + var pointInMinorEllipse = Object(_util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_13__["pointInEllipse"])(minorEllipse, coords); + var pointInMajorEllipse = Object(_util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_13__["pointInEllipse"])(majorEllipse, coords); if (pointInMajorEllipse && !pointInMinorEllipse) { return true; @@ -22802,7 +23755,7 @@ function (_BaseAnnotationTool) { value: function updateCachedStats(image, element, data) { var seriesModule = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.metaData.get('generalSeriesModule', image.imageId) || {}; var modality = seriesModule.modality; - var pixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__["default"])(image); + var pixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_19__["default"])(image); var stats = _calculateStats(image, element, data.handles, modality, pixelSpacing); @@ -22824,12 +23777,15 @@ function (_BaseAnnotationTool) { var image = eventData.image, element = eventData.element; var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_8__["default"].getToolWidth(); + var lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_20__["getModule"])('globalConfiguration').configuration.lineDash; var _this$configuration = this.configuration, handleRadius = _this$configuration.handleRadius, - drawHandlesOnHover = _this$configuration.drawHandlesOnHover; - var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["getNewContext"])(eventData.canvasContext.canvas); + drawHandlesOnHover = _this$configuration.drawHandlesOnHover, + hideHandlesIfMoving = _this$configuration.hideHandlesIfMoving, + renderDashed = _this$configuration.renderDashed; + var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["getNewContext"])(eventData.canvasContext.canvas); - var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__["default"])(image), + var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_19__["default"])(image), rowPixelSpacing = _getPixelSpacing.rowPixelSpacing, colPixelSpacing = _getPixelSpacing.colPixelSpacing; // Meta @@ -22838,7 +23794,7 @@ function (_BaseAnnotationTool) { var modality = seriesModule.modality; var hasPixelSpacing = rowPixelSpacing && colPixelSpacing; - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["draw"])(context, function (context) { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["draw"])(context, function (context) { // If we have tool data for this element - iterate over each set and draw it for (var i = 0; i < toolData.data.length; i++) { var data = toolData.data[i]; @@ -22852,14 +23808,21 @@ function (_BaseAnnotationTool) { var handleOptions = { color: color, handleRadius: handleRadius, - drawHandlesIfActive: drawHandlesOnHover + drawHandlesIfActive: drawHandlesOnHover, + hideHandlesIfMoving: hideHandlesIfMoving }; - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["setShadow"])(context, _this2.configuration); // Draw - - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawEllipse"])(context, element, data.handles.start, data.handles.end, { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["setShadow"])(context, _this2.configuration); + var ellipseOptions = { color: color - }, 'pixel', data.handles.initialRotation); - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawHandles"])(context, eventData, data.handles, handleOptions); // Update textbox stats + }; + + if (renderDashed) { + ellipseOptions.lineDash = lineDash; + } // Draw + + + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawEllipse"])(context, element, data.handles.start, data.handles.end, ellipseOptions, 'pixel', data.handles.initialRotation); + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawHandles"])(context, eventData, data.handles, handleOptions); // Update textbox stats if (data.invalidated === true) { if (data.cachedStats) { @@ -22871,7 +23834,7 @@ function (_BaseAnnotationTool) { if (!data.handles.textBox.hasMoved) { - var defaultCoords = Object(_util_getROITextBoxCoords_js__WEBPACK_IMPORTED_MODULE_13__["default"])(eventData.viewport, data.handles); + var defaultCoords = Object(_util_getROITextBoxCoords_js__WEBPACK_IMPORTED_MODULE_14__["default"])(eventData.viewport, data.handles); Object.assign(data.handles.textBox, defaultCoords); } @@ -22882,7 +23845,7 @@ function (_BaseAnnotationTool) { var textBoxContent = _createTextBoxContent(context, image.color, data.cachedStats, modality, hasPixelSpacing, _this2.configuration); data.unit = _getUnit(modality, _this2.configuration.showHounsfieldUnits); - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawLinkedTextBox"])(context, element, data.handles.textBox, textBoxContent, data.handles, textBoxAnchorPoints, color, lineWidth, 10, true); + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_11__["drawLinkedTextBox"])(context, element, data.handles.textBox, textBoxContent, data.handles, textBoxAnchorPoints, color, lineWidth, 10, true); } }); } @@ -22945,12 +23908,18 @@ function _getUnit(modality, showHounsfieldUnits) { function _createTextBoxContent(context, isColorImage) { var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - area = _ref.area, - mean = _ref.mean, - stdDev = _ref.stdDev, - min = _ref.min, - max = _ref.max, - meanStdDevSUV = _ref.meanStdDevSUV; + _ref$area = _ref.area, + area = _ref$area === void 0 ? 0 : _ref$area, + _ref$mean = _ref.mean, + mean = _ref$mean === void 0 ? 0 : _ref$mean, + _ref$stdDev = _ref.stdDev, + stdDev = _ref$stdDev === void 0 ? 0 : _ref$stdDev, + _ref$min = _ref.min, + min = _ref$min === void 0 ? 0 : _ref$min, + _ref$max = _ref.max, + max = _ref$max === void 0 ? 0 : _ref$max, + _ref$meanStdDevSUV = _ref.meanStdDevSUV, + meanStdDevSUV = _ref$meanStdDevSUV === void 0 ? 0 : _ref$meanStdDevSUV; var modality = arguments.length > 3 ? arguments[3] : undefined; var hasPixelSpacing = arguments.length > 4 ? arguments[4] : undefined; @@ -22965,13 +23934,13 @@ function _createTextBoxContent(context, isColorImage) { var unit = _getUnit(modality, options.showHounsfieldUnits); - var meanString = "Mean: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(mean.toFixed(2)), " ").concat(unit); - var stdDevString = "Std Dev: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(stdDev.toFixed(2)), " ").concat(unit); // If this image has SUV values to display, concatenate them to the text line + var meanString = "Mean: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(mean.toFixed(2)), " ").concat(unit); + var stdDevString = "Std Dev: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(stdDev.toFixed(2)), " ").concat(unit); // If this image has SUV values to display, concatenate them to the text line if (hasStandardUptakeValues) { var SUVtext = ' SUV: '; - var meanSuvString = "".concat(SUVtext).concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(meanStdDevSUV.mean.toFixed(2))); - var stdDevSuvString = "".concat(SUVtext).concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(meanStdDevSUV.stdDev.toFixed(2))); + var meanSuvString = "".concat(SUVtext).concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(meanStdDevSUV.mean.toFixed(2))); + var stdDevSuvString = "".concat(SUVtext).concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(meanStdDevSUV.stdDev.toFixed(2))); var targetStringLength = Math.floor(context.measureText("".concat(stdDevString, " ")).width); while (context.measureText(meanString).width < targetStringLength) { @@ -22981,7 +23950,8 @@ function _createTextBoxContent(context, isColorImage) { otherLines.push("".concat(meanString).concat(meanSuvString)); otherLines.push("".concat(stdDevString, " ").concat(stdDevSuvString)); } else { - otherLines.push("".concat(meanString, " ").concat(stdDevString)); + otherLines.push("".concat(meanString)); + otherLines.push("".concat(stdDevString)); } if (showMinMax) { @@ -23016,7 +23986,7 @@ function _createTextBoxContent(context, isColorImage) { function _formatArea(area, hasPixelSpacing) { // This uses Char code 178 for a superscript 2 var suffix = hasPixelSpacing ? " mm".concat(String.fromCharCode(178)) : " px".concat(String.fromCharCode(178)); - return "Area: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_14__["default"])(area.toFixed(2))).concat(suffix); + return "Area: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_15__["default"])(area.toFixed(2))).concat(suffix); } /** * @@ -23037,13 +24007,13 @@ function _calculateStats(image, element, handles, modality, pixelSpacing) { var pixels = _externalModules_js__WEBPACK_IMPORTED_MODULE_5__["default"].cornerstone.getPixels(element, ellipseCoordinates.left, ellipseCoordinates.top, ellipseCoordinates.width, ellipseCoordinates.height); // Calculate the mean & standard deviation from the pixels and the ellipse details. - var ellipseMeanStdDev = Object(_util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_12__["calculateEllipseStatistics"])(pixels, ellipseCoordinates); + var ellipseMeanStdDev = Object(_util_ellipse_index_js__WEBPACK_IMPORTED_MODULE_13__["calculateEllipseStatistics"])(pixels, ellipseCoordinates); var meanStdDevSUV; if (modality === 'PT') { meanStdDevSUV = { - mean: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_11__["default"])(image, ellipseMeanStdDev.mean, true) || 0, - stdDev: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_11__["default"])(image, ellipseMeanStdDev.stdDev, true) || 0 + mean: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_12__["default"])(image, ellipseMeanStdDev.mean, true) || 0, + stdDev: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_12__["default"])(image, ellipseMeanStdDev.stdDev, true) || 0 }; } // Calculate the image area from the ellipse dimensions and pixel spacing @@ -23090,32 +24060,31 @@ function _getEllipseImageCoordinates(startHandle, endHandle) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return FreehandRoiTool; }); -/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"); -/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"); -/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"); -/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); -/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); -/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js"); -/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"); -/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../events.js */ "./events.js"); -/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../../externalModules.js */ "./externalModules.js"); -/* harmony import */ var _base_BaseAnnotationTool_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../base/BaseAnnotationTool.js */ "./tools/base/BaseAnnotationTool.js"); -/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./../../stateManagement/toolStyle.js */ "./stateManagement/toolStyle.js"); -/* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./../../stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); -/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../store/index.js */ "./store/index.js"); -/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../util/triggerEvent.js */ "./util/triggerEvent.js"); -/* harmony import */ var _util_findAndMoveHelpers_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../util/findAndMoveHelpers.js */ "./util/findAndMoveHelpers.js"); -/* harmony import */ var _util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../util/pointInsideBoundingBox.js */ "./util/pointInsideBoundingBox.js"); -/* harmony import */ var _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/calculateSUV.js */ "./util/calculateSUV.js"); -/* harmony import */ var _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../util/numbersWithCommas.js */ "./util/numbersWithCommas.js"); +/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"); +/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"); +/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js"); +/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"); +/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../../events.js */ "./events.js"); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _base_BaseAnnotationTool_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../base/BaseAnnotationTool.js */ "./tools/base/BaseAnnotationTool.js"); +/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); +/* harmony import */ var _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./../../stateManagement/toolStyle.js */ "./stateManagement/toolStyle.js"); +/* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./../../stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); +/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../store/index.js */ "./store/index.js"); +/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../util/triggerEvent.js */ "./util/triggerEvent.js"); +/* harmony import */ var _util_findAndMoveHelpers_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../util/findAndMoveHelpers.js */ "./util/findAndMoveHelpers.js"); +/* harmony import */ var _util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../util/pointInsideBoundingBox.js */ "./util/pointInsideBoundingBox.js"); +/* harmony import */ var _util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../util/calculateSUV.js */ "./util/calculateSUV.js"); +/* harmony import */ var _util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/numbersWithCommas.js */ "./util/numbersWithCommas.js"); +/* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); /* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../drawing/index.js */ "./drawing/index.js"); /* harmony import */ var _drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../drawing/drawLinkedTextBox.js */ "./drawing/drawLinkedTextBox.js"); /* harmony import */ var _drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../drawing/drawHandles.js */ "./drawing/drawHandles.js"); @@ -23133,7 +24102,6 @@ __webpack_require__.r(__webpack_exports__); - // State @@ -23146,6 +24114,7 @@ __webpack_require__.r(__webpack_exports__); + // Drawing @@ -23157,6 +24126,7 @@ __webpack_require__.r(__webpack_exports__); + var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_26__["getLogger"])('tools:annotation:FreehandRoiTool'); var insertOrDelete = _util_freehand_index_js__WEBPACK_IMPORTED_MODULE_25__["default"].insertOrDelete, freehandArea = _util_freehand_index_js__WEBPACK_IMPORTED_MODULE_25__["default"].freehandArea, @@ -23175,14 +24145,14 @@ var insertOrDelete = _util_freehand_index_js__WEBPACK_IMPORTED_MODULE_25__["defa var FreehandRoiTool = /*#__PURE__*/ function (_BaseAnnotationTool) { - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(FreehandRoiTool, _BaseAnnotationTool); + _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(FreehandRoiTool, _BaseAnnotationTool); function FreehandRoiTool() { var _this; var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, FreehandRoiTool); + _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FreehandRoiTool); var defaultProps = { name: 'FreehandRoi', @@ -23190,28 +24160,28 @@ function (_BaseAnnotationTool) { configuration: defaultFreehandConfiguration(), svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_24__["freehandRoiCursor"] }; - _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(FreehandRoiTool).call(this, props, defaultProps)); + _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(FreehandRoiTool).call(this, props, defaultProps)); _this.isMultiPartTool = true; _this._drawing = false; _this._dragging = false; _this._modifying = false; // Create bound callback functions for private event loops - _this._drawingMouseDownCallback = _this._drawingMouseDownCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._drawingMouseMoveCallback = _this._drawingMouseMoveCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._drawingMouseDragCallback = _this._drawingMouseDragCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._drawingMouseUpCallback = _this._drawingMouseUpCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._drawingMouseDoubleClickCallback = _this._drawingMouseDoubleClickCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._editMouseUpCallback = _this._editMouseUpCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._editMouseDragCallback = _this._editMouseDragCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._drawingTouchStartCallback = _this._drawingTouchStartCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._drawingTouchDragCallback = _this._drawingTouchDragCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._drawingDoubleTapClickCallback = _this._drawingDoubleTapClickCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); - _this._editTouchDragCallback = _this._editTouchDragCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this)); + _this._drawingMouseDownCallback = _this._drawingMouseDownCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._drawingMouseMoveCallback = _this._drawingMouseMoveCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._drawingMouseDragCallback = _this._drawingMouseDragCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._drawingMouseUpCallback = _this._drawingMouseUpCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._drawingMouseDoubleClickCallback = _this._drawingMouseDoubleClickCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._editMouseUpCallback = _this._editMouseUpCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._editMouseDragCallback = _this._editMouseDragCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._drawingTouchStartCallback = _this._drawingTouchStartCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._drawingTouchDragCallback = _this._drawingTouchDragCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._drawingDoubleTapClickCallback = _this._drawingDoubleTapClickCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); + _this._editTouchDragCallback = _this._editTouchDragCallback.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); _this.throttledUpdateCachedStats = Object(_util_throttle__WEBPACK_IMPORTED_MODULE_27__["default"])(_this.updateCachedStats, 110); return _this; } - _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(FreehandRoiTool, [{ + _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(FreehandRoiTool, [{ key: "createNewMeasurement", value: function createNewMeasurement(eventData) { var goodEventData = eventData && eventData.currentPoints && eventData.currentPoints.image; @@ -23285,7 +24255,7 @@ function (_BaseAnnotationTool) { var distance = Infinity; for (var i = 0; i < data.handles.points.length; i++) { - var distanceI = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstoneMath.point.distance(data.handles.points[i], coords); + var distanceI = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstoneMath.point.distance(data.handles.points[i], coords); distance = Math.min(distance, distanceI); } // If an error caused distance not to be calculated, return -1. @@ -23314,12 +24284,12 @@ function (_BaseAnnotationTool) { return -1; } - var canvasCoords = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.pixelToCanvas(element, coords); + var canvasCoords = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.pixelToCanvas(element, coords); var points = data.handles.points; for (var i = 0; i < points.length; i++) { - var handleCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.pixelToCanvas(element, points[i]); - var distanceI = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstoneMath.point.distance(handleCanvas, canvasCoords); + var handleCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.pixelToCanvas(element, points[i]); + var distanceI = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstoneMath.point.distance(handleCanvas, canvasCoords); distance = Math.min(distance, distanceI); } // If an error caused distance not to be calculated, return -1. @@ -23346,7 +24316,7 @@ function (_BaseAnnotationTool) { value: function updateCachedStats(image, element, data) { // Define variables for the area and mean/standard deviation var meanStdDev, meanStdDevSUV; - var seriesModule = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.metaData.get('generalSeriesModule', image.imageId); + var seriesModule = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.metaData.get('generalSeriesModule', image.imageId); var modality = seriesModule ? seriesModule.modality : null; var points = data.handles.points; // If the data has been invalidated, and the tool is not currently active, // We need to calculate it again. @@ -23378,7 +24348,7 @@ function (_BaseAnnotationTool) { if (!image.color) { // Retrieve the array of pixels that the ROI bounds cover - var pixels = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.getPixels(element, polyBoundingBox.left, polyBoundingBox.top, polyBoundingBox.width, polyBoundingBox.height); // Calculate the mean & standard deviation from the pixels and the object shape + var pixels = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.getPixels(element, polyBoundingBox.left, polyBoundingBox.top, polyBoundingBox.width, polyBoundingBox.height); // Calculate the mean & standard deviation from the pixels and the object shape meanStdDev = calculateFreehandStatistics.call(this, pixels, polyBoundingBox, data.handles.points); @@ -23390,8 +24360,8 @@ function (_BaseAnnotationTool) { // Returning the values to storedPixel values before calcuating SUV with them. // TODO: Clean this up? Should we add an option to not scale in calculateSUV? meanStdDevSUV = { - mean: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_17__["default"])(image, (meanStdDev.mean - image.intercept) / image.slope), - stdDev: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_17__["default"])(image, (meanStdDev.stdDev - image.intercept) / image.slope) + mean: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_16__["default"])(image, (meanStdDev.mean - image.intercept) / image.slope), + stdDev: Object(_util_calculateSUV_js__WEBPACK_IMPORTED_MODULE_16__["default"])(image, (meanStdDev.stdDev - image.intercept) / image.slope) }; } // If the mean and standard deviation values are sane, store them for later retrieval @@ -23404,9 +24374,11 @@ function (_BaseAnnotationTool) { // Real non-zero values, set them to 1 - var columnPixelSpacing = image.columnPixelSpacing || 1; - var rowPixelSpacing = image.rowPixelSpacing || 1; - var scaling = columnPixelSpacing * rowPixelSpacing; + var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__["default"])(image), + colPixelSpacing = _getPixelSpacing.colPixelSpacing, + rowPixelSpacing = _getPixelSpacing.rowPixelSpacing; + + var scaling = (colPixelSpacing || 1) * (rowPixelSpacing || 1); var area = freehandArea(data.handles.points, scaling); // If the area value is sane, store it for later retrieval if (!isNaN(area)) { @@ -23430,7 +24402,7 @@ function (_BaseAnnotationTool) { var eventData = evt.detail; // If we have no toolState for this element, return immediately as there is nothing to do - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(evt.currentTarget, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(evt.currentTarget, this.name); if (!toolState) { return; @@ -23439,11 +24411,13 @@ function (_BaseAnnotationTool) { var image = eventData.image, element = eventData.element; var config = this.configuration; - var seriesModule = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.metaData.get('generalSeriesModule', image.imageId); + var seriesModule = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.metaData.get('generalSeriesModule', image.imageId); var modality = seriesModule ? seriesModule.modality : null; // We have tool data for this element - iterate over each one and draw it var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_19__["getNewContext"])(eventData.canvasContext.canvas); - var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_11__["default"].getToolWidth(); + var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_10__["default"].getToolWidth(); + var renderDashed = config.renderDashed; + var lineDash = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_12__["getModule"])('globalConfiguration').configuration.lineDash; var _loop = function _loop(i) { var data = toolState.data[i]; @@ -23453,7 +24427,7 @@ function (_BaseAnnotationTool) { } Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_19__["draw"])(context, function (context) { - var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_12__["default"].getColorIfActive(data); + var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_11__["default"].getColorIfActive(data); var fillColor; if (data.active) { @@ -23461,33 +24435,34 @@ function (_BaseAnnotationTool) { color = config.invalidColor; fillColor = config.invalidColor; } else { - color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_12__["default"].getColorIfActive(data); - fillColor = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_12__["default"].getFillColor(); + color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_11__["default"].getColorIfActive(data); + fillColor = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_11__["default"].getFillColor(); } } else { - fillColor = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_12__["default"].getToolColor(); + fillColor = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_11__["default"].getToolColor(); + } + + var options = { + color: color + }; + + if (renderDashed) { + options.lineDash = lineDash; } if (data.handles.points.length) { - for (var j = 0; j < data.handles.points.length; j++) { - var lines = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(data.handles.points[j].lines); + var points = data.handles.points; + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_19__["drawJoinedLines"])(context, element, points[0], points, options); - var points = data.handles.points; - - if (j === points.length - 1 && !data.polyBoundingBox) { - // If it's still being actively drawn, keep the last line to - // The mouse location - lines.push(config.mouseLocation.handles.start); - } - - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_19__["drawJoinedLines"])(context, element, data.handles.points[j], lines, { - color: color - }); + if (data.polyBoundingBox) { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_19__["drawJoinedLines"])(context, element, points[points.length - 1], [points[0]], options); + } else { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_19__["drawJoinedLines"])(context, element, points[points.length - 1], [config.mouseLocation.handles.start], options); } } // Draw handles - var options = { + options = { color: color, fill: fillColor }; @@ -23495,22 +24470,35 @@ function (_BaseAnnotationTool) { if (config.alwaysShowHandles || data.active && data.polyBoundingBox) { // Render all handles options.handleRadius = config.activeHandleRadius; - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__["default"])(context, eventData, data.handles.points, options); + + if (_this2.configuration.drawHandles) { + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__["default"])(context, eventData, data.handles.points, options); + } } if (data.canComplete) { // Draw large handle at the origin if can complete drawing options.handleRadius = config.completeHandleRadius; var handle = data.handles.points[0]; - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__["default"])(context, eventData, [handle], options); + + if (_this2.configuration.drawHandles) { + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__["default"])(context, eventData, [handle], options); + } } if (data.active && !data.polyBoundingBox) { // Draw handle at origin and at mouse if actively drawing options.handleRadius = config.activeHandleRadius; - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__["default"])(context, eventData, config.mouseLocation.handles, options); + + if (_this2.configuration.drawHandles) { + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__["default"])(context, eventData, config.mouseLocation.handles, options); + } + var firstHandle = data.handles.points[0]; - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__["default"])(context, eventData, [firstHandle], options); + + if (_this2.configuration.drawHandles) { + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_21__["default"])(context, eventData, [firstHandle], options); + } } // Update textbox stats @@ -23562,14 +24550,14 @@ function (_BaseAnnotationTool) { data.unit = moSuffix; // Create a line of text to display the mean and any units that were specified (i.e. HU) - var meanText = "Mean: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_18__["default"])(meanStdDev.mean.toFixed(2)), " ").concat(moSuffix); // Create a line of text to display the standard deviation and any units that were specified (i.e. HU) + var meanText = "Mean: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_17__["default"])(meanStdDev.mean.toFixed(2)), " ").concat(moSuffix); // Create a line of text to display the standard deviation and any units that were specified (i.e. HU) - var stdDevText = "StdDev: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_18__["default"])(meanStdDev.stdDev.toFixed(2)), " ").concat(moSuffix); // If this image has SUV values to display, concatenate them to the text line + var stdDevText = "StdDev: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_17__["default"])(meanStdDev.stdDev.toFixed(2)), " ").concat(moSuffix); // If this image has SUV values to display, concatenate them to the text line if (meanStdDevSUV && meanStdDevSUV.mean !== undefined) { var SUVtext = ' SUV: '; - meanText += SUVtext + Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_18__["default"])(meanStdDevSUV.mean.toFixed(2)); - stdDevText += SUVtext + Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_18__["default"])(meanStdDevSUV.stdDev.toFixed(2)); + meanText += SUVtext + Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_17__["default"])(meanStdDevSUV.mean.toFixed(2)); + stdDevText += SUVtext + Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_17__["default"])(meanStdDevSUV.stdDev.toFixed(2)); } // Add these text lines to the array to be displayed in the textbox @@ -23584,12 +24572,16 @@ function (_BaseAnnotationTool) { // This uses Char code 178 for a superscript 2 var suffix = " mm".concat(String.fromCharCode(178)); - if (!image.rowPixelSpacing || !image.columnPixelSpacing) { + var _getPixelSpacing2 = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_18__["default"])(image), + rowPixelSpacing = _getPixelSpacing2.rowPixelSpacing, + colPixelSpacing = _getPixelSpacing2.colPixelSpacing; + + if (!rowPixelSpacing || !colPixelSpacing) { suffix = " pixels".concat(String.fromCharCode(178)); } // Create a line of text to display the area and its units - var areaText = "Area: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_18__["default"])(area.toFixed(2))).concat(suffix); // Add this text line to the array to be displayed in the textbox + var areaText = "Area: ".concat(Object(_util_numbersWithCommas_js__WEBPACK_IMPORTED_MODULE_17__["default"])(area.toFixed(2))).concat(suffix); // Add this text line to the array to be displayed in the textbox textLines.push(areaText); } @@ -23636,11 +24628,11 @@ function (_BaseAnnotationTool) { value: function handleSelectedCallback(evt, toolData, handle) { var interactionType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'mouse'; var element = evt.detail.element; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); if (handle.hasBoundingBox) { // Use default move handler. - Object(_util_findAndMoveHelpers_js__WEBPACK_IMPORTED_MODULE_15__["moveHandleNearImagePoint"])(evt, this, toolData, handle, interactionType); + Object(_util_findAndMoveHelpers_js__WEBPACK_IMPORTED_MODULE_14__["moveHandleNearImagePoint"])(evt, this, toolData, handle, interactionType); return; } @@ -23682,7 +24674,7 @@ function (_BaseAnnotationTool) { var eventData = evt.detail; var currentPoints = eventData.currentPoints, element = eventData.element; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var config = this.configuration; var currentTool = config.currentTool; var data = toolState.data[currentTool]; @@ -23704,7 +24696,7 @@ function (_BaseAnnotationTool) { } // Force onImageRendered - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * Event handler for MOUSE_DRAG during drawing event loop. @@ -23741,7 +24733,7 @@ function (_BaseAnnotationTool) { value: function _drawingDrag(evt) { var eventData = evt.detail; var element = eventData.element; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var config = this.configuration; var currentTool = config.currentTool; var data = toolState.data[currentTool]; // Set the mouseLocation handle @@ -23754,7 +24746,7 @@ function (_BaseAnnotationTool) { this._dragging = true; // Force onImageRendered - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * Event handler for MOUSE_UP during drawing event loop. @@ -23776,7 +24768,7 @@ function (_BaseAnnotationTool) { this._dragging = false; var config = this.configuration; var currentTool = config.currentTool; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var data = toolState.data[currentTool]; if (!freehandIntersect.end(data.handles.points) && data.canComplete) { @@ -23811,7 +24803,7 @@ function (_BaseAnnotationTool) { var coords = currentPoints.canvas; var config = this.configuration; var currentTool = config.currentTool; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var data = toolState.data[currentTool]; var handleNearby = this._pointNearHandle(element, data, coords); @@ -23844,7 +24836,7 @@ function (_BaseAnnotationTool) { var coords = currentPoints.canvas; var config = this.configuration; var currentTool = config.currentTool; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var data = toolState.data[currentTool]; var handleNearby = this._pointNearHandle(element, data, coords); @@ -23874,7 +24866,7 @@ function (_BaseAnnotationTool) { return; } - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var config = this.configuration; var data = toolState.data[config.currentTool]; @@ -23934,7 +24926,7 @@ function (_BaseAnnotationTool) { return; } - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var config = this.configuration; var data = toolState.data[config.currentTool]; var currentHandle = config.currentHandle; @@ -23958,7 +24950,7 @@ function (_BaseAnnotationTool) { } // Update the image - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * Event handler for TOUCH_DRAG during handle drag event loop. @@ -23973,7 +24965,7 @@ function (_BaseAnnotationTool) { value: function _editTouchDragCallback(evt) { var eventData = evt.detail; var element = eventData.element; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var config = this.configuration; var data = toolState.data[config.currentTool]; var currentHandle = config.currentHandle; @@ -23997,7 +24989,7 @@ function (_BaseAnnotationTool) { } // Update the image - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * Returns the previous handle to the current one. @@ -24028,7 +25020,7 @@ function (_BaseAnnotationTool) { value: function _editMouseUpCallback(evt) { var eventData = evt.detail; var element = eventData.element; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); this._deactivateModify(element); @@ -24036,7 +25028,7 @@ function (_BaseAnnotationTool) { this._endDrawing(element); - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * Places a handle of the freehand tool if the new location is valid. @@ -24094,9 +25086,9 @@ function (_BaseAnnotationTool) { var config = this.configuration; var interactionType; - if (evt.type === _events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DOWN_ACTIVATE) { + if (evt.type === _events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DOWN_ACTIVATE) { interactionType = 'Mouse'; - } else if (evt.type === _events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_START_ACTIVE) { + } else if (evt.type === _events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_START_ACTIVE) { interactionType = 'Touch'; } @@ -24104,8 +25096,8 @@ function (_BaseAnnotationTool) { this._getMouseLocation(eventData); - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["addToolState"])(element, this.name, measurementData); - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["addToolState"])(element, this.name, measurementData); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); config.currentTool = toolState.data.length - 1; this._activeDrawingToolReference = toolState.data[config.currentTool]; } @@ -24122,7 +25114,7 @@ function (_BaseAnnotationTool) { value: function _addPoint(eventData) { var currentPoints = eventData.currentPoints, element = eventData.element; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); // Get the toolState from the last-drawn polygon + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); // Get the toolState from the last-drawn polygon var config = this.configuration; var data = toolState.data[config.currentTool]; @@ -24143,7 +25135,7 @@ function (_BaseAnnotationTool) { config.currentHandle += 1; // Force onImageRendered to fire - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); this.fireModifiedEvent(element, data); } /** @@ -24185,7 +25177,7 @@ function (_BaseAnnotationTool) { }, { key: "_endDrawing", value: function _endDrawing(element, handleNearby) { - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var config = this.configuration; var data = toolState.data[config.currentTool]; data.active = false; @@ -24211,7 +25203,7 @@ function (_BaseAnnotationTool) { this._deactivateDraw(element); } - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); this.fireModifiedEvent(element, data); this.fireCompletedEvent(element, data); } @@ -24237,16 +25229,16 @@ function (_BaseAnnotationTool) { } for (var i = 0; i < data.handles.points.length; i++) { - var handleCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.pixelToCanvas(element, data.handles.points[i]); + var handleCanvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.pixelToCanvas(element, data.handles.points[i]); - if (_externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstoneMath.point.distance(handleCanvas, coords) < 6) { + if (_externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstoneMath.point.distance(handleCanvas, coords) < 6) { return i; } } // Check to see if mouse in bounding box of textbox if (data.handles.textBox) { - if (Object(_util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_16__["default"])(data.handles.textBox, coords)) { + if (Object(_util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_15__["default"])(data.handles.textBox, coords)) { return data.handles.textBox; } } @@ -24265,7 +25257,7 @@ function (_BaseAnnotationTool) { var currentPoints = eventData.currentPoints, element = eventData.element; var coords = currentPoints.canvas; - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); if (!toolState) { return; @@ -24431,8 +25423,8 @@ function (_BaseAnnotationTool) { }, { key: "_isDistanceSmallerThanCompleteSpacingCanvas", value: function _isDistanceSmallerThanCompleteSpacingCanvas(element, p1, p2) { - var p1Canvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.pixelToCanvas(element, p1); - var p2Canvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.pixelToCanvas(element, p2); + var p1Canvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.pixelToCanvas(element, p1); + var p2Canvas = _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.pixelToCanvas(element, p2); var completeHandleRadius; if (this._drawingInteractionType === 'Mouse') { @@ -24495,10 +25487,10 @@ function (_BaseAnnotationTool) { var spacing = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.configuration.spacing; if (comparison === '>') { - return _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstoneMath.point.distance(p1, p2) > spacing; + return _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstoneMath.point.distance(p1, p2) > spacing; } - return _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstoneMath.point.distance(p1, p2) < spacing; + return _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstoneMath.point.distance(p1, p2) < spacing; } /** * Adds drawing loop event listeners. @@ -24516,22 +25508,22 @@ function (_BaseAnnotationTool) { var interactionType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Mouse'; this._drawing = true; this._drawingInteractionType = interactionType; - _store_index_js__WEBPACK_IMPORTED_MODULE_13__["state"].isMultiPartToolActive = true; + _store_index_js__WEBPACK_IMPORTED_MODULE_12__["state"].isMultiPartToolActive = true; Object(_store_setToolCursor_js__WEBPACK_IMPORTED_MODULE_23__["hideToolCursor"])(this.element); // Polygonal Mode - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DOWN, this._drawingMouseDownCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_MOVE, this._drawingMouseMoveCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DOUBLE_CLICK, this._drawingMouseDoubleClickCallback); // Drag/Pencil Mode + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DOWN, this._drawingMouseDownCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_MOVE, this._drawingMouseMoveCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DOUBLE_CLICK, this._drawingMouseDoubleClickCallback); // Drag/Pencil Mode - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DRAG, this._drawingMouseDragCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_UP, this._drawingMouseUpCallback); // Touch + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DRAG, this._drawingMouseDragCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_UP, this._drawingMouseUpCallback); // Touch - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_START, this._drawingMouseMoveCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_START, this._drawingTouchStartCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_DRAG, this._drawingTouchDragCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_END, this._drawingMouseUpCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].DOUBLE_TAP, this._drawingDoubleTapClickCallback); - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_START, this._drawingMouseMoveCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_START, this._drawingTouchStartCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_DRAG, this._drawingTouchDragCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_END, this._drawingMouseUpCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].DOUBLE_TAP, this._drawingDoubleTapClickCallback); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * Removes drawing loop event listeners. @@ -24546,21 +25538,21 @@ function (_BaseAnnotationTool) { key: "_deactivateDraw", value: function _deactivateDraw(element) { this._drawing = false; - _store_index_js__WEBPACK_IMPORTED_MODULE_13__["state"].isMultiPartToolActive = false; + _store_index_js__WEBPACK_IMPORTED_MODULE_12__["state"].isMultiPartToolActive = false; this._activeDrawingToolReference = null; this._drawingInteractionType = null; Object(_store_setToolCursor_js__WEBPACK_IMPORTED_MODULE_23__["setToolCursor"])(this.element, this.svgCursor); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DOWN, this._drawingMouseDownCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_MOVE, this._drawingMouseMoveCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DOUBLE_CLICK, this._drawingMouseDoubleClickCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DRAG, this._drawingMouseDragCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_UP, this._drawingMouseUpCallback); // Touch + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DOWN, this._drawingMouseDownCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_MOVE, this._drawingMouseMoveCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DOUBLE_CLICK, this._drawingMouseDoubleClickCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DRAG, this._drawingMouseDragCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_UP, this._drawingMouseUpCallback); // Touch - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_START, this._drawingTouchStartCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_DRAG, this._drawingTouchDragCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_START, this._drawingMouseMoveCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_END, this._drawingMouseUpCallback); - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_START, this._drawingTouchStartCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_DRAG, this._drawingTouchDragCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_START, this._drawingMouseMoveCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_END, this._drawingMouseUpCallback); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * Adds modify loop event listeners. @@ -24574,13 +25566,13 @@ function (_BaseAnnotationTool) { }, { key: "_activateModify", value: function _activateModify(element) { - _store_index_js__WEBPACK_IMPORTED_MODULE_13__["state"].isToolLocked = true; - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_UP, this._editMouseUpCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DRAG, this._editMouseDragCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_CLICK, this._editMouseUpCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_END, this._editMouseUpCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_DRAG, this._editTouchDragCallback); - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _store_index_js__WEBPACK_IMPORTED_MODULE_12__["state"].isToolLocked = true; + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_UP, this._editMouseUpCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DRAG, this._editMouseDragCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_CLICK, this._editMouseUpCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_END, this._editMouseUpCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_DRAG, this._editTouchDragCallback); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * Removes modify loop event listeners. @@ -24594,13 +25586,13 @@ function (_BaseAnnotationTool) { }, { key: "_deactivateModify", value: function _deactivateModify(element) { - _store_index_js__WEBPACK_IMPORTED_MODULE_13__["state"].isToolLocked = false; - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_UP, this._editMouseUpCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_DRAG, this._editMouseDragCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MOUSE_CLICK, this._editMouseUpCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_END, this._editMouseUpCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_7__["default"].TOUCH_DRAG, this._editTouchDragCallback); - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _store_index_js__WEBPACK_IMPORTED_MODULE_12__["state"].isToolLocked = false; + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_UP, this._editMouseUpCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_DRAG, this._editMouseDragCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MOUSE_CLICK, this._editMouseUpCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_END, this._editMouseUpCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_6__["default"].TOUCH_DRAG, this._editTouchDragCallback); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } }, { key: "passiveCallback", @@ -24627,7 +25619,7 @@ function (_BaseAnnotationTool) { this._endDrawing(element, lastHandlePlaced); - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } } /** @@ -24640,24 +25632,28 @@ function (_BaseAnnotationTool) { }, { key: "fireModifiedEvent", value: function fireModifiedEvent(element, measurementData) { - var eventType = _events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MEASUREMENT_MODIFIED; + var eventType = _events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MEASUREMENT_MODIFIED; var eventData = { toolName: this.name, + toolType: this.name, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: measurementData }; - Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_14__["default"])(element, eventType, eventData); + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_13__["default"])(element, eventType, eventData); } }, { key: "fireCompletedEvent", value: function fireCompletedEvent(element, measurementData) { - var eventType = _events_js__WEBPACK_IMPORTED_MODULE_7__["default"].MEASUREMENT_COMPLETED; + var eventType = _events_js__WEBPACK_IMPORTED_MODULE_6__["default"].MEASUREMENT_COMPLETED; var eventData = { toolName: this.name, + toolType: this.name, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: measurementData }; - Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_14__["default"])(element, eventType, eventData); + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_13__["default"])(element, eventType, eventData); } // =================================================================== // Public Configuration API. . // =================================================================== @@ -24677,7 +25673,7 @@ function (_BaseAnnotationTool) { return; } - var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["getToolState"])(element, this.name); + var toolState = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["getToolState"])(element, this.name); var config = this.configuration; var data = toolState.data[config.currentTool]; data.active = false; @@ -24687,11 +25683,11 @@ function (_BaseAnnotationTool) { config.currentHandle = 0; config.currentTool = -1; data.canComplete = false; - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__["removeToolState"])(element, this.name, data); + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_9__["removeToolState"])(element, this.name, data); this._deactivateDraw(element); - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } /** * New image event handler. @@ -24726,7 +25722,7 @@ function (_BaseAnnotationTool) { this._deactivateDraw(element); - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(element); } }, { key: "spacing", @@ -24739,7 +25735,7 @@ function (_BaseAnnotationTool) { } this.configuration.spacing = value; - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(this.element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(this.element); } }, { key: "activeHandleRadius", @@ -24752,7 +25748,7 @@ function (_BaseAnnotationTool) { } this.configuration.activeHandleRadius = value; - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(this.element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(this.element); } }, { key: "completeHandleRadius", @@ -24765,7 +25761,7 @@ function (_BaseAnnotationTool) { } this.configuration.completeHandleRadius = value; - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(this.element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(this.element); } }, { key: "alwaysShowHandles", @@ -24778,7 +25774,7 @@ function (_BaseAnnotationTool) { } this.configuration.alwaysShowHandles = value; - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(this.element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(this.element); } }, { key: "invalidColor", @@ -24793,12 +25789,12 @@ function (_BaseAnnotationTool) { it'll show up grey. */ this.configuration.invalidColor = value; - _externalModules_js__WEBPACK_IMPORTED_MODULE_8__["default"].cornerstone.updateImage(this.element); + _externalModules_js__WEBPACK_IMPORTED_MODULE_7__["default"].cornerstone.updateImage(this.element); } }]); return FreehandRoiTool; -}(_base_BaseAnnotationTool_js__WEBPACK_IMPORTED_MODULE_9__["default"]); +}(_base_BaseAnnotationTool_js__WEBPACK_IMPORTED_MODULE_8__["default"]); @@ -24819,7 +25815,9 @@ function defaultFreehandConfiguration() { alwaysShowHandles: false, invalidColor: 'crimson', currentHandle: 0, - currentTool: -1 + currentTool: -1, + drawHandles: true, + renderDashed: false }; } @@ -24863,6 +25861,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../util/logger.js */ "./util/logger.js"); /* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); /* harmony import */ var _util_throttle__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../util/throttle */ "./util/throttle.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../store/index */ "./store/index.js"); @@ -24882,6 +25881,7 @@ __webpack_require__.r(__webpack_exports__); + var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_14__["getLogger"])('tools:annotation:LengthTool'); /** * @public @@ -24906,7 +25906,14 @@ function (_BaseAnnotationTool) { var defaultProps = { name: 'Length', supportedInteractionTypes: ['Mouse', 'Touch'], - svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_13__["lengthCursor"] + svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_13__["lengthCursor"], + configuration: { + drawHandles: true, + drawHandlesOnHover: false, + hideHandlesIfMoving: false, + renderDashed: false, + digits: 2 + } }; _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(LengthTool).call(this, props, defaultProps)); _this.throttledUpdateCachedStats = Object(_util_throttle__WEBPACK_IMPORTED_MODULE_16__["default"])(_this.updateCachedStats, 110); @@ -25005,7 +26012,10 @@ function (_BaseAnnotationTool) { var eventData = evt.detail; var _this$configuration = this.configuration, handleRadius = _this$configuration.handleRadius, - drawHandlesOnHover = _this$configuration.drawHandlesOnHover; + drawHandlesOnHover = _this$configuration.drawHandlesOnHover, + hideHandlesIfMoving = _this$configuration.hideHandlesIfMoving, + renderDashed = _this$configuration.renderDashed, + digits = _this$configuration.digits; var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_6__["getToolState"])(evt.currentTarget, this.name); if (!toolData) { @@ -25022,6 +26032,7 @@ function (_BaseAnnotationTool) { colPixelSpacing = _getPixelSpacing2.colPixelSpacing; var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_7__["default"].getToolWidth(); + var lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_17__["getModule"])('globalConfiguration').configuration.lineDash; var _loop = function _loop(i) { var data = toolData.data[i]; @@ -25033,18 +26044,28 @@ function (_BaseAnnotationTool) { Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_9__["draw"])(context, function (context) { // Configurable shadow Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_9__["setShadow"])(context, _this2.configuration); - var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_8__["default"].getColorIfActive(data); // Draw the measurement line - - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_9__["drawLine"])(context, element, data.handles.start, data.handles.end, { + var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_8__["default"].getColorIfActive(data); + var lineOptions = { color: color - }); // Draw the handles + }; + + if (renderDashed) { + lineOptions.lineDash = lineDash; + } // Draw the measurement line + + + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_9__["drawLine"])(context, element, data.handles.start, data.handles.end, lineOptions); // Draw the handles var handleOptions = { color: color, handleRadius: handleRadius, - drawHandlesIfActive: drawHandlesOnHover + drawHandlesIfActive: drawHandlesOnHover, + hideHandlesIfMoving: hideHandlesIfMoving }; - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_11__["default"])(context, eventData, data.handles, handleOptions); + + if (_this2.configuration.drawHandles) { + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_11__["default"])(context, eventData, data.handles, handleOptions); + } if (!data.handles.textBox.hasMoved) { var coords = { @@ -25083,18 +26104,26 @@ function (_BaseAnnotationTool) { var _ret = _loop(i); if (_ret === "continue") continue; - } + } // - SideEffect: Updates annotation 'suffix' + + + function textBoxText(annotation, rowPixelSpacing, colPixelSpacing) { + var measuredValue = _sanitizeMeasuredValue(annotation.length); // Measured value is not defined, return empty string + + + if (!measuredValue) { + return ''; + } // Set the length text suffix depending on whether or not pixelSpacing is available + - function textBoxText(data, rowPixelSpacing, colPixelSpacing) { - // Set the length text suffix depending on whether or not pixelSpacing is available var suffix = 'mm'; if (!rowPixelSpacing || !colPixelSpacing) { suffix = 'pixels'; } - data.unit = suffix; - return "".concat(data.length.toFixed(2), " ").concat(suffix); + annotation.unit = suffix; + return "".concat(measuredValue.toFixed(digits), " ").concat(suffix); } function textBoxAnchorPoints(handles) { @@ -25109,9 +26138,23 @@ function (_BaseAnnotationTool) { return LengthTool; }(_base_BaseAnnotationTool_js__WEBPACK_IMPORTED_MODULE_5__["default"]); +/** + * Attempts to sanitize a value by casting as a number; if unable to cast, + * we return `undefined` + * + * @param {*} value + * @returns a number or undefined + */ + +function _sanitizeMeasuredValue(value) { + var parsedValue = Number(value); + var isNumber = !isNaN(parsedValue); + return isNumber ? parsedValue : undefined; +} + /***/ }), /***/ "./tools/annotation/ProbeTool.js": @@ -25147,6 +26190,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _cursors_index_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../cursors/index.js */ "./tools/cursors/index.js"); /* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../util/logger.js */ "./util/logger.js"); /* harmony import */ var _util_throttle__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/throttle */ "./util/throttle.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../store/index */ "./store/index.js"); @@ -25168,6 +26212,7 @@ __webpack_require__.r(__webpack_exports__); + var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_16__["getLogger"])('tools:annotation:ProbeTool'); /** * @public @@ -25193,7 +26238,11 @@ function (_BaseAnnotationTool) { var defaultProps = { name: 'Probe', supportedInteractionTypes: ['Mouse', 'Touch'], - svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_15__["probeCursor"] + svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_15__["probeCursor"], + configuration: { + drawHandles: true, + renderDashed: false + } }; _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(ProbeTool).call(this, props, defaultProps)); _this.throttledUpdateCachedStats = Object(_util_throttle__WEBPACK_IMPORTED_MODULE_17__["default"])(_this.updateCachedStats, 110); @@ -25281,7 +26330,9 @@ function (_BaseAnnotationTool) { var _this2 = this; var eventData = evt.detail; - var handleRadius = this.configuration.handleRadius; + var _this$configuration = this.configuration, + handleRadius = _this$configuration.handleRadius, + renderDashed = _this$configuration.renderDashed; var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_7__["getToolState"])(evt.currentTarget, this.name); if (!toolData) { @@ -25293,6 +26344,7 @@ function (_BaseAnnotationTool) { var image = eventData.image, element = eventData.element; var fontHeight = _stateManagement_textStyle_js__WEBPACK_IMPORTED_MODULE_8__["default"].getFontSize(); + var lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_18__["getModule"])('globalConfiguration').configuration.lineDash; var _loop = function _loop(i) { var data = toolData.data[i]; @@ -25302,12 +26354,22 @@ function (_BaseAnnotationTool) { } Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["draw"])(context, function (context) { - var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_9__["default"].getColorIfActive(data); // Draw the handles + var color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_9__["default"].getColorIfActive(data); + + if (_this2.configuration.drawHandles) { + // Draw the handles + var handleOptions = { + handleRadius: handleRadius, + color: color + }; + + if (renderDashed) { + handleOptions.lineDash = lineDash; + } + + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_12__["default"])(context, eventData, data.handles, handleOptions); + } // Update textbox stats - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_12__["default"])(context, eventData, data.handles, { - handleRadius: handleRadius, - color: color - }); // Update textbox stats if (data.invalidated === true) { if (data.cachedStats) { @@ -25401,6 +26463,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _cursors_index_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../cursors/index.js */ "./tools/cursors/index.js"); /* harmony import */ var _util_logger_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../util/logger.js */ "./util/logger.js"); /* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../store/index */ "./store/index.js"); @@ -25422,6 +26485,7 @@ __webpack_require__.r(__webpack_exports__); + var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_16__["getLogger"])('tools:annotation:RectangleRoiTool'); /** * @public @@ -25447,8 +26511,13 @@ function (_BaseAnnotationTool) { var defaultProps = { name: 'RectangleRoi', supportedInteractionTypes: ['Mouse', 'Touch'], - configuration: {// showMinMax: false, + configuration: { + drawHandles: true, + drawHandlesOnHover: false, + hideHandlesIfMoving: false, + renderDashed: false // showMinMax: false, // showHounsfieldUnits: true + }, svgCursor: _cursors_index_js__WEBPACK_IMPORTED_MODULE_15__["rectangleRoiCursor"] }; @@ -25550,9 +26619,12 @@ function (_BaseAnnotationTool) { var image = eventData.image, element = eventData.element; var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_8__["default"].getToolWidth(); + var lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_18__["getModule"])('globalConfiguration').configuration.lineDash; var _this$configuration = this.configuration, handleRadius = _this$configuration.handleRadius, - drawHandlesOnHover = _this$configuration.drawHandlesOnHover; + drawHandlesOnHover = _this$configuration.drawHandlesOnHover, + hideHandlesIfMoving = _this$configuration.hideHandlesIfMoving, + renderDashed = _this$configuration.renderDashed; var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["getNewContext"])(eventData.canvasContext.canvas); var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_17__["default"])(image), @@ -25578,14 +26650,25 @@ function (_BaseAnnotationTool) { var handleOptions = { color: color, handleRadius: handleRadius, - drawHandlesIfActive: drawHandlesOnHover + drawHandlesIfActive: drawHandlesOnHover, + hideHandlesIfMoving: hideHandlesIfMoving }; - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["setShadow"])(context, _this2.configuration); // Draw - - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawRect"])(context, element, data.handles.start, data.handles.end, { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["setShadow"])(context, _this2.configuration); + var rectOptions = { color: color - }, 'pixel', data.handles.initialRotation); - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawHandles"])(context, eventData, data.handles, handleOptions); // Update textbox stats + }; + + if (renderDashed) { + rectOptions.lineDash = lineDash; + } // Draw + + + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawRect"])(context, element, data.handles.start, data.handles.end, rectOptions, 'pixel', data.handles.initialRotation); + + if (_this2.configuration.drawHandles) { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_10__["drawHandles"])(context, eventData, data.handles, handleOptions); + } // Update textbox stats + if (data.invalidated === true) { if (data.cachedStats) { @@ -25668,8 +26751,10 @@ function _calculateStats(image, element, handles, modality, pixelSpacing) { var area = roiCoordinates.width * (pixelSpacing.colPixelSpacing || 1) * (roiCoordinates.height * (pixelSpacing.rowPixelSpacing || 1)); + var perimeter = roiCoordinates.width * 2 * (pixelSpacing.colPixelSpacing || 1) + roiCoordinates.height * 2 * (pixelSpacing.rowPixelSpacing || 1); return { area: area || 0, + perimeter: perimeter, count: roiMeanStdDev.count || 0, mean: roiMeanStdDev.mean || 0, variance: roiMeanStdDev.variance || 0, @@ -25796,13 +26881,23 @@ function _getUnit(modality, showHounsfieldUnits) { */ -function _createTextBoxContent(context, isColorImage, _ref, modality, hasPixelSpacing) { - var area = _ref.area, - mean = _ref.mean, - stdDev = _ref.stdDev, - min = _ref.min, - max = _ref.max, - meanStdDevSUV = _ref.meanStdDevSUV; +function _createTextBoxContent(context, isColorImage) { + var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, + _ref$area = _ref.area, + area = _ref$area === void 0 ? 0 : _ref$area, + _ref$mean = _ref.mean, + mean = _ref$mean === void 0 ? 0 : _ref$mean, + _ref$stdDev = _ref.stdDev, + stdDev = _ref$stdDev === void 0 ? 0 : _ref$stdDev, + _ref$min = _ref.min, + min = _ref$min === void 0 ? 0 : _ref$min, + _ref$max = _ref.max, + max = _ref$max === void 0 ? 0 : _ref$max, + _ref$meanStdDevSUV = _ref.meanStdDevSUV, + meanStdDevSUV = _ref$meanStdDevSUV === void 0 ? 0 : _ref$meanStdDevSUV; + + var modality = arguments.length > 3 ? arguments[3] : undefined; + var hasPixelSpacing = arguments.length > 4 ? arguments[4] : undefined; var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {}; var showMinMax = options.showMinMax || false; var textLines = []; @@ -25829,7 +26924,8 @@ function _createTextBoxContent(context, isColorImage, _ref, modality, hasPixelSp otherLines.push("".concat(meanString).concat(meanSuvString)); otherLines.push("".concat(stdDevString, " ").concat(stdDevSuvString)); } else { - otherLines.push("".concat(meanString, " ").concat(stdDevString)); + otherLines.push("".concat(meanString)); + otherLines.push("".concat(stdDevString)); } if (showMinMax) { @@ -26139,7 +27235,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); /* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../util/triggerEvent.js */ "./util/triggerEvent.js"); /* harmony import */ var _util_getActiveTool__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../util/getActiveTool */ "./util/getActiveTool.js"); -/* harmony import */ var _base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../base/BaseAnnotationTool */ "./tools/base/BaseAnnotationTool.js"); +/* harmony import */ var _BidirectionalTool__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../BidirectionalTool */ "./tools/annotation/BidirectionalTool.js"); +/* harmony import */ var _utils_updatePerpendicularLineHandles_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/updatePerpendicularLineHandles.js */ "./tools/annotation/bidirectionalTool/utils/updatePerpendicularLineHandles.js"); + @@ -26175,7 +27273,12 @@ __webpack_require__.r(__webpack_exports__); var _measurementData$hand = measurementData.handles, end = _measurementData$hand.end, perpendicularStart = _measurementData$hand.perpendicularStart; - Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_2__["moveNewHandle"])(eventData, this.name, measurementData, end, {}, interactionType, function () { + Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_2__["moveNewHandle"])(eventData, this.name, measurementData, end, {}, interactionType, function (success) { + if (!success) { + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__["removeToolState"])(element, _this.name, measurementData); + return; + } + var handles = measurementData.handles, longestDiameter = measurementData.longestDiameter, shortestDiameter = measurementData.shortestDiameter; @@ -26192,20 +27295,23 @@ __webpack_require__.r(__webpack_exports__); } else { // Set lesionMeasurementData Session config.getMeasurementLocationCallback(measurementData, eventData, doneCallback); - } // Perpendicular line is not connected to long-line + } // Update perpendicular line and disconnect it from the long-line + Object(_utils_updatePerpendicularLineHandles_js__WEBPACK_IMPORTED_MODULE_8__["default"])(eventData, measurementData); perpendicularStart.locked = false; measurementData.invalidated = true; _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstone.updateImage(element); var activeTool = Object(_util_getActiveTool__WEBPACK_IMPORTED_MODULE_6__["default"])(element, buttons, interactionType); - if (activeTool instanceof _base_BaseAnnotationTool__WEBPACK_IMPORTED_MODULE_7__["default"]) { + if (activeTool instanceof _BidirectionalTool__WEBPACK_IMPORTED_MODULE_7__["default"]) { activeTool.updateCachedStats(image, element, measurementData); } var modifiedEventData = { + toolName: _this.name, toolType: _this.name, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: measurementData }; @@ -26258,7 +27364,9 @@ var getHandle = function getHandle(x, y, index) { y = _mouseEventData$curre.y; // Create the measurement data for this tool with the end handle activated var measurementData = { + toolName: this.name, toolType: this.name, + // Deprecation notice: toolType will be replaced by toolName isCreating: true, visible: true, active: true, @@ -26323,15 +27431,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); /* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../../../externalModules.js */ "./externalModules.js"); -/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../store/index.js */ "./store/index.js"); -/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../../../events.js */ "./events.js"); -/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _manipulators_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../../../manipulators/anyHandlesOutsideImage.js */ "./manipulators/anyHandlesOutsideImage.js"); -/* harmony import */ var _manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../../../manipulators/getHandleNearImagePoint.js */ "./manipulators/getHandleNearImagePoint.js"); -/* harmony import */ var _manipulators_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../../manipulators/index.js */ "./manipulators/index.js"); -/* harmony import */ var _moveHandle_moveHandle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./moveHandle/moveHandle.js */ "./tools/annotation/bidirectionalTool/moveHandle/moveHandle.js"); -/* harmony import */ var _invertHandles_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./invertHandles.js */ "./tools/annotation/bidirectionalTool/invertHandles.js"); -/* harmony import */ var _store_setToolCursor_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../store/setToolCursor.js */ "./store/setToolCursor.js"); +/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../../events.js */ "./events.js"); +/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); +/* harmony import */ var _manipulators_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../../../manipulators/anyHandlesOutsideImage.js */ "./manipulators/anyHandlesOutsideImage.js"); +/* harmony import */ var _manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../../../manipulators/getHandleNearImagePoint.js */ "./manipulators/getHandleNearImagePoint.js"); +/* harmony import */ var _manipulators_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../../../manipulators/index.js */ "./manipulators/index.js"); +/* harmony import */ var _moveHandle_moveHandle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./moveHandle/moveHandle.js */ "./tools/annotation/bidirectionalTool/moveHandle/moveHandle.js"); +/* harmony import */ var _invertHandles_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./invertHandles.js */ "./tools/annotation/bidirectionalTool/invertHandles.js"); +/* harmony import */ var _store_setToolCursor_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../store/setToolCursor.js */ "./store/setToolCursor.js"); +/* harmony import */ var _util_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../util/getProximityThreshold.js */ "./util/getProximityThreshold.js"); /* jshint -W083 */ @@ -26351,14 +27459,14 @@ __webpack_require__.r(__webpack_exports__); var eventData = evt.detail; var element = eventData.element; var data; - var distanceThreshold = _store_index_js__WEBPACK_IMPORTED_MODULE_2__["state"].clickProximity; + var distanceThreshold = Object(_util_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_10__["default"])('mouse', this.name); var handleDoneMove = function handleDoneMove(handle) { data.invalidated = true; - if (Object(_manipulators_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_5__["default"])(eventData, data.handles)) { + if (Object(_manipulators_anyHandlesOutsideImage_js__WEBPACK_IMPORTED_MODULE_4__["default"])(eventData, data.handles)) { // Delete the measurement - Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__["removeToolState"])(element, _this.name, data); + Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["removeToolState"])(element, _this.name, data); } // Update the handles to keep selected state @@ -26367,14 +27475,14 @@ __webpack_require__.r(__webpack_exports__); handle.selected = true; } - Object(_store_setToolCursor_js__WEBPACK_IMPORTED_MODULE_10__["setToolCursor"])(_this.element, _this.svgCursor); + Object(_store_setToolCursor_js__WEBPACK_IMPORTED_MODULE_9__["setToolCursor"])(_this.element, _this.svgCursor); _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.updateImage(element); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_3__["default"].MOUSE_MOVE, _this._moveCallback); - element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_3__["default"].TOUCH_START, _this._moveCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].MOUSE_MOVE, _this._moveCallback); + element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_START, _this._moveCallback); }; var coords = eventData.startPoints.canvas; - var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_4__["getToolState"])(evt.currentTarget, this.name); + var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_3__["getToolState"])(evt.currentTarget, this.name); if (!toolData) { return; @@ -26384,25 +27492,25 @@ __webpack_require__.r(__webpack_exports__); var _loop = function _loop(i) { data = toolData.data[i]; var handleParams = [element, data.handles, coords, distanceThreshold]; - var handle = _manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_6__["default"].apply(void 0, handleParams); + var handle = _manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_5__["default"].apply(void 0, handleParams); if (handle) { - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_3__["default"].MOUSE_MOVE, _this._moveCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_3__["default"].TOUCH_START, _this._moveCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].MOUSE_MOVE, _this._moveCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_START, _this._moveCallback); data.active = true; unselectAllHandles(data.handles); handle.moving = true; // Invert handles if needed - handle = Object(_invertHandles_js__WEBPACK_IMPORTED_MODULE_9__["default"])(eventData, data, handle); + handle = Object(_invertHandles_js__WEBPACK_IMPORTED_MODULE_8__["default"])(eventData, data, handle); /* Hide the cursor to improve precision while resizing the line or set to move if dragging text box */ if (!handle.hasBoundingBox) { - Object(_store_setToolCursor_js__WEBPACK_IMPORTED_MODULE_10__["hideToolCursor"])(_this.element); + Object(_store_setToolCursor_js__WEBPACK_IMPORTED_MODULE_9__["hideToolCursor"])(_this.element); } - Object(_moveHandle_moveHandle_js__WEBPACK_IMPORTED_MODULE_8__["default"])(eventData, _this.name, data, handle, function () { + Object(_moveHandle_moveHandle_js__WEBPACK_IMPORTED_MODULE_7__["default"])(eventData, _this.name, data, handle, function () { return handleDoneMove(handle); }); preventPropagation(evt); @@ -26429,13 +27537,13 @@ __webpack_require__.r(__webpack_exports__); data = toolData.data[i]; if (this.pointNearTool(element, data, coords, 'mouse')) { - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_3__["default"].MOUSE_MOVE, this._moveCallback); - element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_3__["default"].TOUCH_START, this._moveCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].MOUSE_MOVE, this._moveCallback); + element.removeEventListener(_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_START, this._moveCallback); data.active = true; unselectAllHandles(data.handles); setHandlesMovingState(data.handles, true); var doneMovingCallback = getDoneMovingCallback(data.handles); - Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_7__["moveAllHandles"])(eventData, this.name, data, null, { + Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_6__["moveAllHandles"])(eventData, this.name, data, null, { deleteIfHandleOutsideImage: true, preventHandleOutsideImage: false }, 'mouse', doneMovingCallback); @@ -26780,6 +27888,81 @@ var handleActivator = function handleActivator(element, handles, canvasPoint) { /***/ }), +/***/ "./tools/annotation/bidirectionalTool/moveHandle/getBaseData.js": +/*!**********************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/getBaseData.js ***! + \**********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getBaseData; }); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _utils_getDistanceWithPixelSpacing_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getDistanceWithPixelSpacing.js */ "./tools/annotation/bidirectionalTool/utils/getDistanceWithPixelSpacing.js"); + + + +function createLine(startPoint, endPoint) { + return { + start: startPoint, + end: endPoint + }; +} +/** + * Extract and group the base data to be used on bidirectional tool lines + * moving. + * + * @param {*} measurementData Data from current bidirectional tool measurement + * @param {*} eventData Data object associated with the event + * @param {*} fixedPoint Point that is not being moved in line + * + * @returns {*} Grouped that needed for lines moving + */ + + +function getBaseData(measurementData, eventData, fixedPoint) { + var lineSegment = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment; + var _measurementData$hand = measurementData.handles, + start = _measurementData$hand.start, + end = _measurementData$hand.end, + perpendicularStart = _measurementData$hand.perpendicularStart, + perpendicularEnd = _measurementData$hand.perpendicularEnd; + var _eventData$image = eventData.image, + _eventData$image$colu = _eventData$image.columnPixelSpacing, + columnPixelSpacing = _eventData$image$colu === void 0 ? 1 : _eventData$image$colu, + _eventData$image$rowP = _eventData$image.rowPixelSpacing, + rowPixelSpacing = _eventData$image$rowP === void 0 ? 1 : _eventData$image$rowP; + var longLine = createLine(start, end); + var perpendicularLine = createLine(perpendicularStart, perpendicularEnd); + var intersection = lineSegment.intersectLine(longLine, perpendicularLine); + var distanceToFixed = Object(_utils_getDistanceWithPixelSpacing_js__WEBPACK_IMPORTED_MODULE_1__["default"])(columnPixelSpacing, rowPixelSpacing, fixedPoint, intersection); + return { + columnPixelSpacing: columnPixelSpacing, + // Width that a pixel represents in mm + rowPixelSpacing: rowPixelSpacing, + // Height that a pixel represents in mm + start: start, + // Start point of the long line + end: end, + // End point of the long line + perpendicularStart: perpendicularStart, + // Start point of the perpendicular line + perpendicularEnd: perpendicularEnd, + // End point of the perpendicular line + longLine: longLine, + // Long line object containing the start and end points + intersection: intersection, + // Intersection point between long and perpendicular lines + distanceToFixed: distanceToFixed, + // Distance from intersection to the fixed point + fixedPoint: fixedPoint // Opposite point from the handle that is being moved + + }; +} + +/***/ }), + /***/ "./tools/annotation/bidirectionalTool/moveHandle/moveHandle.js": /*!*********************************************************************!*\ !*** ./tools/annotation/bidirectionalTool/moveHandle/moveHandle.js ***! @@ -26801,7 +27984,7 @@ __webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = (function (mouseEventData, toolType, data, handle, doneMovingCallback, preventHandleOutsideImage) { +/* harmony default export */ __webpack_exports__["default"] = (function (mouseEventData, toolName, data, handle, doneMovingCallback, preventHandleOutsideImage) { var element = mouseEventData.element, image = mouseEventData.image, buttons = mouseEventData.buttons; @@ -26837,7 +28020,9 @@ __webpack_require__.r(__webpack_exports__); } var modifiedEventData = { - toolType: toolType, + toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: data }; @@ -26845,6 +28030,7 @@ __webpack_require__.r(__webpack_exports__); }; handle.active = true; + handle.moving = true; _store_index_js__WEBPACK_IMPORTED_MODULE_1__["state"].isToolLocked = true; element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].MOUSE_DRAG, _dragCallback); element.addEventListener(_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_DRAG, _dragCallback); @@ -26886,312 +28072,407 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./tools/annotation/bidirectionalTool/moveHandle/perpendicularBothFixedLeft.js": -/*!*************************************************************************************!*\ - !*** ./tools/annotation/bidirectionalTool/moveHandle/perpendicularBothFixedLeft.js ***! - \*************************************************************************************/ +/***/ "./tools/annotation/bidirectionalTool/moveHandle/moveLongLine/moveLongLine.js": +/*!************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/moveLongLine/moveLongLine.js ***! + \************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../../externalModules.js */ "./externalModules.js"); - // Move long-axis start point +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return moveLongLine; }); +/* harmony import */ var _utils_getDistanceWithPixelSpacing_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/getDistanceWithPixelSpacing.js */ "./tools/annotation/bidirectionalTool/utils/getDistanceWithPixelSpacing.js"); +/* harmony import */ var _getBaseData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../getBaseData.js */ "./tools/annotation/bidirectionalTool/moveHandle/getBaseData.js"); +/* harmony import */ var _updatePerpendicularLine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updatePerpendicularLine.js */ "./tools/annotation/bidirectionalTool/moveHandle/moveLongLine/updatePerpendicularLine.js"); -/* harmony default export */ __webpack_exports__["default"] = (function (proposedPoint, data) { - var distance = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.point.distance; - var _data$handles = data.handles, - start = _data$handles.start, - end = _data$handles.end, - perpendicularStart = _data$handles.perpendicularStart, - perpendicularEnd = _data$handles.perpendicularEnd; - var longLine = { - start: { - x: start.x, - y: start.y - }, - end: { - x: end.x, - y: end.y - } - }; - var perpendicularLine = { - start: { - x: perpendicularStart.x, - y: perpendicularStart.y - }, - end: { - x: perpendicularEnd.x, - y: perpendicularEnd.y - } - }; - var intersection = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment.intersectLine(longLine, perpendicularLine); - var distanceFromPerpendicularP1 = distance(perpendicularStart, intersection); - var distanceFromPerpendicularP2 = distance(perpendicularEnd, intersection); - var distanceToLineP2 = distance(end, intersection); - var newLineLength = distance(end, proposedPoint); - if (newLineLength <= distanceToLineP2) { + +/** + * Move the long line updating the perpendicular line handles position. + * + * @param {*} proposedPoint Point that was moved in bidirectional tool + * @param {*} measurementData Data from current bidirectional tool measurement + * @param {*} eventData Data object associated with the event + * @param {*} fixedPoint Point that is not being moved in long line + * + * @returns {boolean} True if perpendicular handles were updated, false if not + */ + +function moveLongLine(proposedPoint, measurementData, eventData, fixedPoint) { + var baseData = Object(_getBaseData_js__WEBPACK_IMPORTED_MODULE_1__["default"])(measurementData, eventData, fixedPoint); + var columnPixelSpacing = baseData.columnPixelSpacing, + rowPixelSpacing = baseData.rowPixelSpacing, + distanceToFixed = baseData.distanceToFixed; // Calculate the length of the new line, considering the proposed point + + var newLineLength = Object(_utils_getDistanceWithPixelSpacing_js__WEBPACK_IMPORTED_MODULE_0__["default"])(columnPixelSpacing, rowPixelSpacing, fixedPoint, proposedPoint); // Stop here if the handle tries to move before the intersection point + + if (newLineLength <= distanceToFixed) { return false; - } + } // Calculate the new intersection point - var dx = (end.x - proposedPoint.x) / newLineLength; - var dy = (end.y - proposedPoint.y) / newLineLength; - var k = distanceToLineP2 / newLineLength; + + var distanceRatio = distanceToFixed / newLineLength; var newIntersection = { - x: end.x + (proposedPoint.x - end.x) * k, - y: end.y + (proposedPoint.y - end.y) * k - }; - perpendicularStart.x = newIntersection.x - distanceFromPerpendicularP1 * dy; - perpendicularStart.y = newIntersection.y + distanceFromPerpendicularP1 * dx; - perpendicularEnd.x = newIntersection.x + distanceFromPerpendicularP2 * dy; - perpendicularEnd.y = newIntersection.y - distanceFromPerpendicularP2 * dx; + x: fixedPoint.x + (proposedPoint.x - fixedPoint.x) * distanceRatio, + y: fixedPoint.y + (proposedPoint.y - fixedPoint.y) * distanceRatio + }; // Calculate and the new position of the perpendicular handles + + var newLine = Object(_updatePerpendicularLine_js__WEBPACK_IMPORTED_MODULE_2__["default"])(baseData, newIntersection); // Update the perpendicular line handles + + measurementData.handles.perpendicularStart.x = newLine.start.x; + measurementData.handles.perpendicularStart.y = newLine.start.y; + measurementData.handles.perpendicularEnd.x = newLine.end.x; + measurementData.handles.perpendicularEnd.y = newLine.end.y; return true; -}); +} /***/ }), -/***/ "./tools/annotation/bidirectionalTool/moveHandle/perpendicularBothFixedRight.js": -/*!**************************************************************************************!*\ - !*** ./tools/annotation/bidirectionalTool/moveHandle/perpendicularBothFixedRight.js ***! - \**************************************************************************************/ +/***/ "./tools/annotation/bidirectionalTool/moveHandle/moveLongLine/updatePerpendicularLine.js": +/*!***********************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/moveLongLine/updatePerpendicularLine.js ***! + \***********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../../externalModules.js */ "./externalModules.js"); - // Move long-axis end point +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updatePerpendicularLine; }); +/* harmony import */ var _utils_getLineVector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/getLineVector */ "./tools/annotation/bidirectionalTool/utils/getLineVector.js"); +/* harmony import */ var _utils_getDistanceWithPixelSpacing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/getDistanceWithPixelSpacing */ "./tools/annotation/bidirectionalTool/utils/getDistanceWithPixelSpacing.js"); -/* harmony default export */ __webpack_exports__["default"] = (function (proposedPoint, data) { - var distance = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.point.distance; - var _data$handles = data.handles, - start = _data$handles.start, - end = _data$handles.end, - perpendicularStart = _data$handles.perpendicularStart, - perpendicularEnd = _data$handles.perpendicularEnd; - var longLine = { + +/** + * Returns the updated line object that will be used to change the position of + * the perpendicular line handles. + * + * @param {*} baseData Base data for bidirectional line moving + * @param {*} mid Middle point considering the proposed point + * + * @returns {*} Returns a line object with the updated handles position + */ + +function updatePerpendicularLine(baseData, mid) { + var columnPixelSpacing = baseData.columnPixelSpacing, + rowPixelSpacing = baseData.rowPixelSpacing, + start = baseData.start, + perpendicularStart = baseData.perpendicularStart, + perpendicularEnd = baseData.perpendicularEnd, + intersection = baseData.intersection, + fixedPoint = baseData.fixedPoint; // Get the original distance from perpendicular start handle to intersection + + var distancePS = Object(_utils_getDistanceWithPixelSpacing__WEBPACK_IMPORTED_MODULE_1__["default"])(columnPixelSpacing, rowPixelSpacing, perpendicularStart, intersection); // Get the original distance from perpendicular end handle to intersection + + var distancePE = Object(_utils_getDistanceWithPixelSpacing__WEBPACK_IMPORTED_MODULE_1__["default"])(columnPixelSpacing, rowPixelSpacing, perpendicularEnd, intersection); // Inclination of the perpendicular line + + var vector = Object(_utils_getLineVector__WEBPACK_IMPORTED_MODULE_0__["default"])(columnPixelSpacing, rowPixelSpacing, fixedPoint, mid); // Define the multiplier + + var multiplier = fixedPoint === start ? 1 : -1; + var rowMultiplier = multiplier * rowPixelSpacing; + var columnMultiplier = multiplier * columnPixelSpacing; // Calculate and return the new position of the perpendicular handles + + return { start: { - x: start.x, - y: start.y + x: mid.x + vector.y * distancePS * rowMultiplier, + y: mid.y + vector.x * distancePS * columnMultiplier * -1 }, end: { - x: end.x, - y: end.y + x: mid.x + vector.y * distancePE * rowMultiplier * -1, + y: mid.y + vector.x * distancePE * columnMultiplier } }; - var perpendicularLine = { - start: { - x: perpendicularStart.x, - y: perpendicularStart.y - }, - end: { - x: perpendicularEnd.x, - y: perpendicularEnd.y - } - }; - var intersection = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment.intersectLine(longLine, perpendicularLine); - var distanceFromPerpendicularP1 = distance(perpendicularStart, intersection); - var distanceFromPerpendicularP2 = distance(perpendicularEnd, intersection); - var distanceToLineP2 = distance(start, intersection); - var newLineLength = distance(start, proposedPoint); - - if (newLineLength <= distanceToLineP2) { - return false; - } - - var dx = (start.x - proposedPoint.x) / newLineLength; - var dy = (start.y - proposedPoint.y) / newLineLength; - var k = distanceToLineP2 / newLineLength; - var newIntersection = { - x: start.x + (proposedPoint.x - start.x) * k, - y: start.y + (proposedPoint.y - start.y) * k - }; - perpendicularStart.x = newIntersection.x + distanceFromPerpendicularP1 * dy; - perpendicularStart.y = newIntersection.y - distanceFromPerpendicularP1 * dx; - perpendicularEnd.x = newIntersection.x - distanceFromPerpendicularP2 * dy; - perpendicularEnd.y = newIntersection.y + distanceFromPerpendicularP2 * dx; - return true; -}); +} /***/ }), -/***/ "./tools/annotation/bidirectionalTool/moveHandle/perpendicularLeftFixedPoint.js": -/*!**************************************************************************************!*\ - !*** ./tools/annotation/bidirectionalTool/moveHandle/perpendicularLeftFixedPoint.js ***! - \**************************************************************************************/ +/***/ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getDirectionMultiplier.js": +/*!*******************************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getDirectionMultiplier.js ***! + \*******************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../../externalModules.js */ "./externalModules.js"); - // Move perpendicular line start point +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getDirectionMultiplier; }); +/* harmony import */ var _isPerpendicularEndFixed_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPerpendicularEndFixed.js */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/isPerpendicularEndFixed.js"); -/* harmony default export */ __webpack_exports__["default"] = (function (movedPoint, data) { - var distance = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.point.distance; - var _data$handles = data.handles, - start = _data$handles.start, - end = _data$handles.end, - perpendicularStart = _data$handles.perpendicularStart, - perpendicularEnd = _data$handles.perpendicularEnd; - var fudgeFactor = 1; - var fixedPoint = perpendicularEnd; - var distanceFromFixed = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment.distanceToPoint(data.handles, fixedPoint); - var distanceFromMoved = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment.distanceToPoint(data.handles, movedPoint); - var distanceBetweenPoints = distance(fixedPoint, movedPoint); - var total = distanceFromFixed + distanceFromMoved; +/** + * Return the direction multiplier based on the perpendicular fixed point and + * the end point. + * + * @param {*} fixedPoint Point that is not being moved in perpendicular line + * @param {*} perpendicularEnd The end point of the perpencular line + * + * @returns {number} Returns -1 if end point is not being moved or 1 if it is + */ - if (distanceBetweenPoints <= distanceFromFixed) { - return false; - } - - var length = distance(start, end); - - if (length === 0) { - return false; - } - - var dx = (start.x - end.x) / length; - var dy = (start.y - end.y) / length; - var adjustedLineP1 = { - x: start.x - fudgeFactor * dx, - y: start.y - fudgeFactor * dy - }; - var adjustedLineP2 = { - x: end.x + fudgeFactor * dx, - y: end.y + fudgeFactor * dy - }; - perpendicularStart.x = movedPoint.x; - perpendicularStart.y = movedPoint.y; - perpendicularEnd.x = movedPoint.x - total * dy; - perpendicularEnd.y = movedPoint.y + total * dx; - var longLine = { - start: { - x: start.x, - y: start.y - }, - end: { - x: end.x, - y: end.y - } - }; - var perpendicularLine = { - start: { - x: perpendicularStart.x, - y: perpendicularStart.y - }, - end: { - x: perpendicularEnd.x, - y: perpendicularEnd.y - } - }; - var intersection = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment.intersectLine(longLine, perpendicularLine); - - if (!intersection) { - if (distance(movedPoint, start) > distance(movedPoint, end)) { - perpendicularStart.x = adjustedLineP2.x + distanceFromMoved * dy; - perpendicularStart.y = adjustedLineP2.y - distanceFromMoved * dx; - perpendicularEnd.x = perpendicularStart.x - total * dy; - perpendicularEnd.y = perpendicularStart.y + total * dx; - } else { - perpendicularStart.x = adjustedLineP1.x + distanceFromMoved * dy; - perpendicularStart.y = adjustedLineP1.y - distanceFromMoved * dx; - perpendicularEnd.x = perpendicularStart.x - total * dy; - perpendicularEnd.y = perpendicularStart.y + total * dx; - } - } - - return true; -}); +function getDirectionMultiplier(fixedPoint, perpendicularEnd) { + return Object(_isPerpendicularEndFixed_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fixedPoint, perpendicularEnd) ? -1 : 1; +} /***/ }), -/***/ "./tools/annotation/bidirectionalTool/moveHandle/perpendicularRightFixedPoint.js": -/*!***************************************************************************************!*\ - !*** ./tools/annotation/bidirectionalTool/moveHandle/perpendicularRightFixedPoint.js ***! - \***************************************************************************************/ +/***/ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getHelperLine.js": +/*!**********************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getHelperLine.js ***! + \**********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../../externalModules.js */ "./externalModules.js"); - // Move perpendicular line end point +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getHelperLine; }); +/* harmony import */ var _getDirectionMultiplier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDirectionMultiplier */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getDirectionMultiplier.js"); -/* harmony default export */ __webpack_exports__["default"] = (function (movedPoint, data) { - var distance = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.point.distance; - var _data$handles = data.handles, - start = _data$handles.start, - end = _data$handles.end, - perpendicularStart = _data$handles.perpendicularStart, - perpendicularEnd = _data$handles.perpendicularEnd; - var fudgeFactor = 1; - var fixedPoint = perpendicularStart; - var distanceFromFixed = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment.distanceToPoint(data.handles, fixedPoint); - var distanceFromMoved = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment.distanceToPoint(data.handles, movedPoint); - var distanceBetweenPoints = distance(fixedPoint, movedPoint); - var total = distanceFromFixed + distanceFromMoved; +/** + * Creates a helper line with the same inclination as the perpendicular line + * but having the start point as the proposed point. + * This line will start in the proposed point and will grow in the long line + * direction trying to cross it to enable finding the intersection point + * between the long line and this new perpendicular line. + * + * @param {*} baseData Base data for bidirectional line moving + * @param {*} proposedPoint Point that was moved in bidirectional tool + * @param {*} vector Vector with the perpendicular line inclination + * + * @returns {*} Returns the helper line containing the start and end points + */ - if (distanceBetweenPoints <= distanceFromFixed) { +function getHelperLine(baseData, proposedPoint, vector) { + var columnPixelSpacing = baseData.columnPixelSpacing, + rowPixelSpacing = baseData.rowPixelSpacing, + perpendicularEnd = baseData.perpendicularEnd, + fixedPoint = baseData.fixedPoint; // Create a helper line to find the intesection point in the long line + + var highNumber = Number.MAX_SAFE_INTEGER; // Get the multiplier + + var multiplier = Object(_getDirectionMultiplier__WEBPACK_IMPORTED_MODULE_0__["default"])(fixedPoint, perpendicularEnd) * highNumber; + return { + start: proposedPoint, + end: { + x: proposedPoint.x + vector.y * rowPixelSpacing * multiplier, + y: proposedPoint.y + vector.x * columnPixelSpacing * multiplier * -1 + } + }; +} + +/***/ }), + +/***/ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getMovingPoint.js": +/*!***********************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getMovingPoint.js ***! + \***********************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getMovingPoint; }); +/* harmony import */ var _isPerpendicularEndFixed_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPerpendicularEndFixed.js */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/isPerpendicularEndFixed.js"); + +/** + * Utility function to return the point that is the opposite of the fixed + * point (the point not being moved in the bidirectional tool's perpendicular + * line). + * + * @param {*} fixedPoint Point that is not being moved in perpendicular line + * @param {*} perpendicularStart The start point of the perpencular line + * @param {*} perpendicularEnd The end point of the perpencular line + * + * @returns {*} Point that is being moved in perpendicular line + */ + +function getMovingPoint(fixedPoint, perpendicularStart, perpendicularEnd) { + if (Object(_isPerpendicularEndFixed_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fixedPoint, perpendicularEnd)) { + return perpendicularStart; + } + + return perpendicularEnd; +} + +/***/ }), + +/***/ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/isPerpendicularEndFixed.js": +/*!********************************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/isPerpendicularEndFixed.js ***! + \********************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isPerpendicularEndFixed; }); +/** + * Returns true if the end point is the point that is not being moved in the + * perpendicular line. + * + * @param {*} fixedPoint Point that is not being moved in perpendicular line + * @param {*} perpendicularEnd The end point of the perpencular line + * + * @returns {boolean} Returns true if the fixed point is the end point + */ +function isPerpendicularEndFixed(fixedPoint, perpendicularEnd) { + return fixedPoint === perpendicularEnd; +} + +/***/ }), + +/***/ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/lineHasLength.js": +/*!**********************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/lineHasLength.js ***! + \**********************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return lineHasLength; }); +/* harmony import */ var _utils_getDistanceWithPixelSpacing__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/getDistanceWithPixelSpacing */ "./tools/annotation/bidirectionalTool/utils/getDistanceWithPixelSpacing.js"); + +/** + * Returns true if the given line object has its length different from zero, + * considering the column and row pixel spacings. + * + * @param {number} columnPixelSpacing Width that a pixel represents in mm + * @param {number} rowPixelSpacing Height that a pixel represents in mm + * @param {*} line Line object that will have its length calculated + * + * @returns {boolean} Returns true if line has any length + */ + +function lineHasLength(columnPixelSpacing, rowPixelSpacing, line) { + var lineLength = Object(_utils_getDistanceWithPixelSpacing__WEBPACK_IMPORTED_MODULE_0__["default"])(columnPixelSpacing, rowPixelSpacing, line.start, line.end); + return lineLength !== 0; +} + +/***/ }), + +/***/ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/movePerpendicularLine.js": +/*!******************************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/movePerpendicularLine.js ***! + \******************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return movePerpendicularLine; }); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../../../externalModules.js */ "./externalModules.js"); +/* harmony import */ var _utils_getLineVector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/getLineVector.js */ "./tools/annotation/bidirectionalTool/utils/getLineVector.js"); +/* harmony import */ var _getBaseData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../getBaseData.js */ "./tools/annotation/bidirectionalTool/moveHandle/getBaseData.js"); +/* harmony import */ var _lineHasLength_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lineHasLength.js */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/lineHasLength.js"); +/* harmony import */ var _getHelperLine_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getHelperLine.js */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getHelperLine.js"); +/* harmony import */ var _updatePerpendicularLine_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./updatePerpendicularLine.js */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/updatePerpendicularLine.js"); + + + + + + +/** + * Move the perpendicular line updating the opposite handle position. + * + * @param {*} proposedPoint Point that was moved in bidirectional tool + * @param {*} measurementData Data from current bidirectional tool measurement + * @param {*} eventData Data object associated with the event + * @param {*} fixedPoint Point that is not being moved in long line + * + * @returns {boolean} True if perpendicular handles were updated, false if not + */ + +function movePerpendicularLine(proposedPoint, measurementData, eventData, fixedPoint) { + var lineSegment = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment; + var baseData = Object(_getBaseData_js__WEBPACK_IMPORTED_MODULE_2__["default"])(measurementData, eventData, fixedPoint); + var columnPixelSpacing = baseData.columnPixelSpacing, + rowPixelSpacing = baseData.rowPixelSpacing, + start = baseData.start, + longLine = baseData.longLine, + intersection = baseData.intersection; // Stop here if the long line has no length + + if (!Object(_lineHasLength_js__WEBPACK_IMPORTED_MODULE_3__["default"])(columnPixelSpacing, rowPixelSpacing, longLine)) { return false; - } + } // Inclination of the perpendicular line - var length = distance(start, end); - var dx = (start.x - end.x) / length; - var dy = (start.y - end.y) / length; - var adjustedLineP1 = { - x: start.x - fudgeFactor * dx, - y: start.y - fudgeFactor * dy - }; - var adjustedLineP2 = { - x: end.x + fudgeFactor * dx, - y: end.y + fudgeFactor * dy - }; - perpendicularStart.x = movedPoint.x + total * dy; - perpendicularStart.y = movedPoint.y - total * dx; - perpendicularEnd.x = movedPoint.x; - perpendicularEnd.y = movedPoint.y; - perpendicularEnd.locked = false; - perpendicularStart.locked = false; - var longLine = { - start: { - x: start.x, - y: start.y - }, - end: { - x: end.x, - y: end.y - } - }; - var perpendicularLine = { - start: { - x: perpendicularStart.x, - y: perpendicularStart.y - }, - end: { - x: perpendicularEnd.x, - y: perpendicularEnd.y - } - }; - var intersection = _externalModules_js__WEBPACK_IMPORTED_MODULE_0__["default"].cornerstoneMath.lineSegment.intersectLine(longLine, perpendicularLine); - if (!intersection) { - if (distance(movedPoint, start) > distance(movedPoint, end)) { - perpendicularEnd.x = adjustedLineP2.x - distanceFromMoved * dy; - perpendicularEnd.y = adjustedLineP2.y + distanceFromMoved * dx; - perpendicularStart.x = perpendicularEnd.x + total * dy; - perpendicularStart.y = perpendicularEnd.y - total * dx; - } else { - perpendicularEnd.x = adjustedLineP1.x - distanceFromMoved * dy; - perpendicularEnd.y = adjustedLineP1.y + distanceFromMoved * dx; - perpendicularStart.x = perpendicularEnd.x + total * dy; - perpendicularStart.y = perpendicularEnd.y - total * dx; - } - } + var vector = Object(_utils_getLineVector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(columnPixelSpacing, rowPixelSpacing, start, intersection); // Get a helper line to calculate the intersection + var helperLine = Object(_getHelperLine_js__WEBPACK_IMPORTED_MODULE_4__["default"])(baseData, proposedPoint, vector); // Find the new intersection in the long line + + var newIntersection = lineSegment.intersectLine(longLine, helperLine); // Stop the flow here if there's no intersection point between lines + + if (!newIntersection) { + return false; + } // Calculate and the new position of the perpendicular handles + + + var newLine = Object(_updatePerpendicularLine_js__WEBPACK_IMPORTED_MODULE_5__["default"])(baseData, newIntersection, helperLine, vector); // Change the position of the perpendicular line handles + + measurementData.handles.perpendicularStart.x = newLine.start.x; + measurementData.handles.perpendicularStart.y = newLine.start.y; + measurementData.handles.perpendicularEnd.x = newLine.end.x; + measurementData.handles.perpendicularEnd.y = newLine.end.y; return true; -}); +} + +/***/ }), + +/***/ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/updatePerpendicularLine.js": +/*!********************************************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/updatePerpendicularLine.js ***! + \********************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updatePerpendicularLine; }); +/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"); +/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _getDirectionMultiplier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDirectionMultiplier */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getDirectionMultiplier.js"); +/* harmony import */ var _getMovingPoint__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getMovingPoint */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/getMovingPoint.js"); + + + +/** + * Returns the updated line object that will be used to change the position of + * the perpendicular line handles. + * + * @param {*} baseData Base data for bidirectional line moving + * @param {*} mid Middle point considering the proposed point + * @param {*} helperLine Line based on proposed point that crosses long line + * @param {*} vector Vector with the perpendicular line inclination + * + * @returns {*} Returns a line object with the updated handles position + */ + +function updatePerpendicularLine(baseData, mid, helperLine, vector) { + var _ref; + + var columnPixelSpacing = baseData.columnPixelSpacing, + rowPixelSpacing = baseData.rowPixelSpacing, + fixedPoint = baseData.fixedPoint, + perpendicularStart = baseData.perpendicularStart, + perpendicularEnd = baseData.perpendicularEnd, + distanceToFixed = baseData.distanceToFixed; // Get the multiplier + + var multiplier = Object(_getDirectionMultiplier__WEBPACK_IMPORTED_MODULE_1__["default"])(fixedPoint, perpendicularEnd) * distanceToFixed; // Define the moving point + + var movingPoint = Object(_getMovingPoint__WEBPACK_IMPORTED_MODULE_2__["default"])(fixedPoint, perpendicularStart, perpendicularEnd); // Get the object keys for moving and fixed points + + var isMovingStart = movingPoint === perpendicularStart; + var movingKey = isMovingStart ? 'start' : 'end'; + var fixedKey = isMovingStart ? 'end' : 'start'; // Calculate and return the new position of the perpendicular handles + + return _ref = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_ref, movingKey, { + x: helperLine.start.x, + y: helperLine.start.y + }), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_ref, fixedKey, { + x: mid.x + vector.y * rowPixelSpacing * multiplier, + y: mid.y + vector.x * columnPixelSpacing * multiplier * -1 + }), _ref; +} /***/ }), @@ -27205,12 +28486,8 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../../../externalModules.js */ "./externalModules.js"); -/* harmony import */ var _perpendicularBothFixedLeft_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./perpendicularBothFixedLeft.js */ "./tools/annotation/bidirectionalTool/moveHandle/perpendicularBothFixedLeft.js"); -/* harmony import */ var _perpendicularBothFixedRight_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./perpendicularBothFixedRight.js */ "./tools/annotation/bidirectionalTool/moveHandle/perpendicularBothFixedRight.js"); -/* harmony import */ var _perpendicularLeftFixedPoint_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./perpendicularLeftFixedPoint.js */ "./tools/annotation/bidirectionalTool/moveHandle/perpendicularLeftFixedPoint.js"); -/* harmony import */ var _perpendicularRightFixedPoint_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./perpendicularRightFixedPoint.js */ "./tools/annotation/bidirectionalTool/moveHandle/perpendicularRightFixedPoint.js"); - - +/* harmony import */ var _moveLongLine_moveLongLine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./moveLongLine/moveLongLine.js */ "./tools/annotation/bidirectionalTool/moveHandle/moveLongLine/moveLongLine.js"); +/* harmony import */ var _movePerpendicularLine_movePerpendicularLine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./movePerpendicularLine/movePerpendicularLine.js */ "./tools/annotation/bidirectionalTool/moveHandle/movePerpendicularLine/movePerpendicularLine.js"); // Sets position of handles(start, end, perpendicularStart, perpendicularEnd) @@ -27231,7 +28508,7 @@ __webpack_require__.r(__webpack_exports__); if (handle.index === 0) { // If long-axis start point is moved - result = Object(_perpendicularBothFixedLeft_js__WEBPACK_IMPORTED_MODULE_1__["default"])(proposedPoint, data); + result = Object(_moveLongLine_moveLongLine_js__WEBPACK_IMPORTED_MODULE_1__["default"])(proposedPoint, data, eventData, data.handles.end); if (result) { handle.x = proposedPoint.x; @@ -27242,7 +28519,7 @@ __webpack_require__.r(__webpack_exports__); } } else if (handle.index === 1) { // If long-axis end point is moved - result = Object(_perpendicularBothFixedRight_js__WEBPACK_IMPORTED_MODULE_2__["default"])(proposedPoint, data); + result = Object(_moveLongLine_moveLongLine_js__WEBPACK_IMPORTED_MODULE_1__["default"])(proposedPoint, data, eventData, data.handles.start); if (result) { handle.x = proposedPoint.x; @@ -27289,7 +28566,7 @@ __webpack_require__.r(__webpack_exports__); movedPoint = false; if (!outOfBounds) { - movedPoint = Object(_perpendicularLeftFixedPoint_js__WEBPACK_IMPORTED_MODULE_3__["default"])(proposedPoint, data); + movedPoint = Object(_movePerpendicularLine_movePerpendicularLine_js__WEBPACK_IMPORTED_MODULE_2__["default"])(proposedPoint, data, eventData, data.handles.perpendicularEnd); if (!movedPoint) { eventData.currentPoints.image.x = data.handles.perpendicularStart.x; @@ -27334,7 +28611,7 @@ __webpack_require__.r(__webpack_exports__); movedPoint = false; if (!outOfBounds) { - movedPoint = Object(_perpendicularRightFixedPoint_js__WEBPACK_IMPORTED_MODULE_4__["default"])(proposedPoint, data); + movedPoint = Object(_movePerpendicularLine_movePerpendicularLine_js__WEBPACK_IMPORTED_MODULE_2__["default"])(proposedPoint, data, eventData, data.handles.perpendicularStart); if (!movedPoint) { eventData.currentPoints.image.x = data.handles.perpendicularEnd.x; @@ -27368,7 +28645,7 @@ __webpack_require__.r(__webpack_exports__); var touchEndEvents = [_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_END, _events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_DRAG_END, _events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_PINCH, _events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_PRESS, _events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TAP]; -/* harmony default export */ __webpack_exports__["default"] = (function (mouseEventData, toolType, data, handle, doneMovingCallback, preventHandleOutsideImage) { +/* harmony default export */ __webpack_exports__["default"] = (function (mouseEventData, toolName, data, handle, doneMovingCallback, preventHandleOutsideImage) { var element = mouseEventData.element, image = mouseEventData.image, buttons = mouseEventData.buttons; @@ -27404,7 +28681,9 @@ var touchEndEvents = [_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_E } var modifiedEventData = { - toolType: toolType, + toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName element: element, measurementData: data }; @@ -27445,7 +28724,7 @@ var touchEndEvents = [_events_js__WEBPACK_IMPORTED_MODULE_2__["default"].TOUCH_E "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../store/index.js */ "./store/index.js"); +/* harmony import */ var _util_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util/getProximityThreshold.js */ "./util/getProximityThreshold.js"); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../../../externalModules.js */ "./externalModules.js"); /* harmony import */ var _util_pointInsideBoundingBox_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../../util/pointInsideBoundingBox.js */ "./util/pointInsideBoundingBox.js"); @@ -27478,7 +28757,7 @@ var pointNearPerpendicular = function pointNearPerpendicular(element, handles, c return true; } - var distanceThreshold = interactionType === 'mouse' ? _store_index_js__WEBPACK_IMPORTED_MODULE_0__["state"].clickProximity : _store_index_js__WEBPACK_IMPORTED_MODULE_0__["state"].touchProximity; + var distanceThreshold = Object(_util_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_0__["default"])(interactionType, 'Bidirectional'); if (pointNearPerpendicular(element, handles, coords, distanceThreshold)) { return true; @@ -27502,12 +28781,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../../../drawing/drawHandles.js */ "./drawing/drawHandles.js"); /* harmony import */ var _utils_updatePerpendicularLineHandles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/updatePerpendicularLineHandles.js */ "./tools/annotation/bidirectionalTool/utils/updatePerpendicularLineHandles.js"); -/* harmony import */ var _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../../../stateManagement/toolStyle.js */ "./stateManagement/toolStyle.js"); -/* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../../../stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); -/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../../../drawing/index.js */ "./drawing/index.js"); -/* harmony import */ var _drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../../drawing/drawLinkedTextBox.js */ "./drawing/drawLinkedTextBox.js"); -/* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); +/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../store/index */ "./store/index.js"); +/* harmony import */ var _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../../../stateManagement/toolStyle.js */ "./stateManagement/toolStyle.js"); +/* harmony import */ var _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../../../stateManagement/toolColors.js */ "./stateManagement/toolColors.js"); +/* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); +/* harmony import */ var _drawing_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../../drawing/index.js */ "./drawing/index.js"); +/* harmony import */ var _drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../../../drawing/drawLinkedTextBox.js */ "./drawing/drawLinkedTextBox.js"); +/* harmony import */ var _util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../util/getPixelSpacing */ "./util/getPixelSpacing.js"); /* eslint no-loop-func: 0 */ @@ -27520,6 +28800,7 @@ __webpack_require__.r(__webpack_exports__); + /* harmony default export */ __webpack_exports__["default"] = (function (evt) { var _this = this; @@ -27529,15 +28810,18 @@ __webpack_require__.r(__webpack_exports__); image = eventData.image; var _this$configuration = this.configuration, handleRadius = _this$configuration.handleRadius, - drawHandlesOnHover = _this$configuration.drawHandlesOnHover; // If we have no toolData for this element, return immediately as there is nothing to do + drawHandlesOnHover = _this$configuration.drawHandlesOnHover, + hideHandlesIfMoving = _this$configuration.hideHandlesIfMoving, + renderDashed = _this$configuration.renderDashed; + var lineDash = Object(_store_index__WEBPACK_IMPORTED_MODULE_3__["getModule"])('globalConfiguration').configuration.lineDash; // If we have no toolData for this element, return immediately as there is nothing to do - var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_5__["getToolState"])(element, this.name); + var toolData = Object(_stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_6__["getToolState"])(element, this.name); if (!toolData) { return; } - var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_8__["default"])(image), + var _getPixelSpacing = Object(_util_getPixelSpacing__WEBPACK_IMPORTED_MODULE_9__["default"])(image), rowPixelSpacing = _getPixelSpacing.rowPixelSpacing, colPixelSpacing = _getPixelSpacing.colPixelSpacing; // LT-29 Disable Target Measurements when pixel spacing is not available @@ -27547,10 +28831,9 @@ __webpack_require__.r(__webpack_exports__); } // We have tool data for this element - iterate over each one and draw it - var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_6__["getNewContext"])(canvasContext.canvas); + var context = Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["getNewContext"])(canvasContext.canvas); var color; - var activeColor = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_4__["default"].getActiveColor(); - var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_3__["default"].getToolWidth(); + var lineWidth = _stateManagement_toolStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"].getToolWidth(); var _loop = function _loop(i) { var data = toolData.data[i]; @@ -27559,7 +28842,7 @@ __webpack_require__.r(__webpack_exports__); return "continue"; } - color = data.active ? activeColor : _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_4__["default"].getToolColor(); // Calculate the data measurements + color = _stateManagement_toolColors_js__WEBPACK_IMPORTED_MODULE_5__["default"].getColorIfActive(data); // Calculate the data measurements if (data.invalidated === true) { if (data.longestDiameter && data.shortestDiameter) { @@ -27569,37 +28852,49 @@ __webpack_require__.r(__webpack_exports__); } } - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_6__["draw"])(context, function (context) { + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["draw"])(context, function (context) { // Configurable shadow - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_6__["setShadow"])(context, _this.configuration); + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["setShadow"])(context, _this.configuration); var _data$handles = data.handles, start = _data$handles.start, end = _data$handles.end, perpendicularStart = _data$handles.perpendicularStart, perpendicularEnd = _data$handles.perpendicularEnd, - textBox = _data$handles.textBox; // Draw the measurement line - - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_6__["drawLine"])(context, element, start, end, { + textBox = _data$handles.textBox; + var lineOptions = { color: color - }); // Draw perpendicular line + }; + var perpendicularLineOptions = { + color: color, + strokeWidth: strokeWidth + }; + + if (renderDashed) { + lineOptions.lineDash = lineDash; + perpendicularLineOptions.lineDash = lineDash; + } // Draw the measurement line + + + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["drawLine"])(context, element, start, end, lineOptions); // Draw perpendicular line var strokeWidth = lineWidth; Object(_utils_updatePerpendicularLineHandles_js__WEBPACK_IMPORTED_MODULE_2__["default"])(eventData, data); - Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_6__["drawLine"])(context, element, perpendicularStart, perpendicularEnd, { - color: color, - strokeWidth: strokeWidth - }); // Draw the handles + Object(_drawing_index_js__WEBPACK_IMPORTED_MODULE_7__["drawLine"])(context, element, perpendicularStart, perpendicularEnd, perpendicularLineOptions); // Draw the handles var handleOptions = { color: color, handleRadius: handleRadius, - drawHandlesIfActive: drawHandlesOnHover + drawHandlesIfActive: drawHandlesOnHover, + hideHandlesIfMoving: hideHandlesIfMoving }; // Draw the handles - Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_1__["default"])(context, eventData, data.handles, handleOptions); // Draw the textbox + if (_this.configuration.drawHandles) { + Object(_drawing_drawHandles_js__WEBPACK_IMPORTED_MODULE_1__["default"])(context, eventData, data.handles, handleOptions); + } // Draw the textbox // Move the textbox slightly to the right and upwards // So that it sits beside the length tool handle + var xOffset = 10; var textBoxAnchorPoints = function textBoxAnchorPoints(handles) { @@ -27607,7 +28902,7 @@ __webpack_require__.r(__webpack_exports__); }; var textLines = getTextBoxText(data, rowPixelSpacing, colPixelSpacing); - Object(_drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_7__["default"])(context, element, textBox, textLines, data.handles, textBoxAnchorPoints, color, lineWidth, xOffset, true); + Object(_drawing_drawLinkedTextBox_js__WEBPACK_IMPORTED_MODULE_8__["default"])(context, element, textBox, textLines, data.handles, textBoxAnchorPoints, color, lineWidth, xOffset, true); }); }; @@ -27692,6 +28987,69 @@ function calculateLongestAndShortestDiameters(measurementData, pixelSpacing) { /***/ }), +/***/ "./tools/annotation/bidirectionalTool/utils/getDistanceWithPixelSpacing.js": +/*!*********************************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/utils/getDistanceWithPixelSpacing.js ***! + \*********************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getDistanceWithPixelSpacing; }); +/** + * Return the distance between 2 points considering the pixel spacing + * + * @param {number} columnPixelSpacing Width that a pixel represents in mm + * @param {number} rowPixelSpacing Height that a pixel represents in mm + * @param {*} startPoint Start point of the line + * @param {*} endPoint End point of the line + * + * @returns {number} Distance between the 2 given points considering the pixel spacing + */ +function getDistanceWithPixelSpacing(columnPixelSpacing, rowPixelSpacing, startPoint, endPoint) { + var calcX = (startPoint.x - endPoint.x) / rowPixelSpacing; + var calcY = (startPoint.y - endPoint.y) / columnPixelSpacing; + return Math.sqrt(calcX * calcX + calcY * calcY); +} + +/***/ }), + +/***/ "./tools/annotation/bidirectionalTool/utils/getLineVector.js": +/*!*******************************************************************!*\ + !*** ./tools/annotation/bidirectionalTool/utils/getLineVector.js ***! + \*******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getLineVector; }); +/** + * Return the Vector of a line which determines its inclination and length + * + * @param {number} columnPixelSpacing Width that a pixel represents in mm + * @param {number} rowPixelSpacing Height that a pixel represents in mm + * @param {*} startPoint Start point of the line + * @param {*} endPoint End point of the line + * + * @returns {*} Resulting line inclination vector + */ +function getLineVector(columnPixelSpacing, rowPixelSpacing, startPoint, endPoint) { + var dx = (startPoint.x - endPoint.x) * columnPixelSpacing; + var dy = (startPoint.y - endPoint.y) * rowPixelSpacing; + var length = Math.sqrt(dx * dx + dy * dy); + var vectorX = dx / length; + var vectorY = dy / length; + return { + x: vectorX, + y: vectorY, + length: length + }; +} + +/***/ }), + /***/ "./tools/annotation/bidirectionalTool/utils/updatePerpendicularLineHandles.js": /*!************************************************************************************!*\ !*** ./tools/annotation/bidirectionalTool/utils/updatePerpendicularLineHandles.js ***! @@ -27701,16 +29059,34 @@ function calculateLongestAndShortestDiameters(measurementData, pixelSpacing) { "use strict"; __webpack_require__.r(__webpack_exports__); -// Update the perpendicular line handles -/* harmony default export */ __webpack_exports__["default"] = (function (eventData, data) { - if (!data.handles.perpendicularStart.locked) { - return; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updatePerpendicularLineHandles; }); +/* harmony import */ var _getLineVector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getLineVector */ "./tools/annotation/bidirectionalTool/utils/getLineVector.js"); + +/** + * Update the perpendicular line handles when the measurement is being created. + * This method will make the perpendicular line intersect in the middle of the + * long line and assume half the size of the long line. + * + * @param {*} eventData Data object associated with the event + * @param {*} measurementData Data from current bidirectional tool measurement + * + * @returns {boolean} False in case the handle is not locked or true when moved + */ + +function updatePerpendicularLineHandles(eventData, measurementData) { + if (!measurementData.handles.perpendicularStart.locked) { + return false; } var startX, startY, endX, endY; - var _data$handles = data.handles, - start = _data$handles.start, - end = _data$handles.end; + var _measurementData$hand = measurementData.handles, + start = _measurementData$hand.start, + end = _measurementData$hand.end; + var _eventData$image = eventData.image, + _eventData$image$colu = _eventData$image.columnPixelSpacing, + columnPixelSpacing = _eventData$image$colu === void 0 ? 1 : _eventData$image$colu, + _eventData$image$rowP = _eventData$image.rowPixelSpacing, + rowPixelSpacing = _eventData$image$rowP === void 0 ? 1 : _eventData$image$rowP; if (start.x === end.x && start.y === end.y) { startX = start.x; @@ -27722,25 +29098,24 @@ __webpack_require__.r(__webpack_exports__); var mid = { x: (start.x + end.x) / 2, y: (start.y + end.y) / 2 - }; // Length of long-axis + }; // Inclination of the perpendicular line - var dx = (start.x - end.x) * (eventData.image.columnPixelSpacing || 1); - var dy = (start.y - end.y) * (eventData.image.rowPixelSpacing || 1); - var length = Math.sqrt(dx * dx + dy * dy); - var vectorX = (start.x - end.x) / length; - var vectorY = (start.y - end.y) / length; - var perpendicularLineLength = length / 2; - startX = mid.x + perpendicularLineLength / 2 * vectorY; - startY = mid.y - perpendicularLineLength / 2 * vectorX; - endX = mid.x - perpendicularLineLength / 2 * vectorY; - endY = mid.y + perpendicularLineLength / 2 * vectorX; + var vector = Object(_getLineVector__WEBPACK_IMPORTED_MODULE_0__["default"])(columnPixelSpacing, rowPixelSpacing, start, end); + var perpendicularLineLength = vector.length / 2; + var rowMultiplier = perpendicularLineLength / (2 * rowPixelSpacing); + var columnMultiplier = perpendicularLineLength / (2 * columnPixelSpacing); + startX = mid.x + columnMultiplier * vector.y; + startY = mid.y - rowMultiplier * vector.x; + endX = mid.x - columnMultiplier * vector.y; + endY = mid.y + rowMultiplier * vector.x; } - data.handles.perpendicularStart.x = startX; - data.handles.perpendicularStart.y = startY; - data.handles.perpendicularEnd.x = endX; - data.handles.perpendicularEnd.y = endY; -}); + measurementData.handles.perpendicularStart.x = startX; + measurementData.handles.perpendicularStart.y = startY; + measurementData.handles.perpendicularEnd.x = endX; + measurementData.handles.perpendicularEnd.y = endY; + return true; +} /***/ }), @@ -28079,7 +29454,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _BaseTool_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./BaseTool.js */ "./tools/base/BaseTool.js"); /* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../../events.js */ "./events.js"); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../../externalModules.js */ "./externalModules.js"); -/* harmony import */ var _store_isToolActive_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../../store/isToolActive.js */ "./store/isToolActive.js"); +/* harmony import */ var _store_isToolActiveForElement_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../../store/isToolActiveForElement.js */ "./store/isToolActiveForElement.js"); /* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./../../store/index.js */ "./store/index.js"); /* harmony import */ var _util_segmentation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../util/segmentation */ "./util/segmentation/index.js"); @@ -28094,11 +29469,7 @@ __webpack_require__.r(__webpack_exports__); - -var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_10__["getModule"])('segmentation'), - configuration = _getModule.configuration, - getters = _getModule.getters, - setters = _getModule.setters; +var segmentationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_10__["getModule"])('segmentation'); /** * @abstract * @memberof Tools.Base @@ -28107,7 +29478,6 @@ var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_10__["getModule * @extends Tools.Base.BaseTool */ - var BaseBrushTool = /*#__PURE__*/ function (_BaseTool) { @@ -28219,7 +29589,7 @@ function (_BaseTool) { /** * Initialise painting with BaseBrushTool. * - * @virtual + * @abstract * @event * @param {Object} evt - The event. * @returns {void} @@ -28230,6 +29600,8 @@ function (_BaseTool) { value: function _startPainting(evt) { var eventData = evt.detail; var element = eventData.element; + var configuration = segmentationModule.configuration, + getters = segmentationModule.getters; var _getters$labelmap2D = getters.labelmap2D(element), labelmap2D = _getters$labelmap2D.labelmap2D, @@ -28254,7 +29626,7 @@ function (_BaseTool) { /** * End painting with BaseBrushTool. * - * @virtual + * @abstract * @event * @param {Object} evt - The event. * @returns {void} @@ -28263,6 +29635,8 @@ function (_BaseTool) { }, { key: "_endPainting", value: function _endPainting(evt) { + var configuration = segmentationModule.configuration, + setters = segmentationModule.setters; var _this$paintEventData = this.paintEventData, labelmap2D = _this$paintEventData.labelmap2D, currentImageIdIndex = _this$paintEventData.currentImageIdIndex; // Grab the labels on the slice. @@ -28292,6 +29666,8 @@ function (_BaseTool) { }; setters.pushState(this.element, [operation]); } + + Object(_util_segmentation__WEBPACK_IMPORTED_MODULE_11__["triggerLabelmapModifiedEvent"])(this.element); } // =================================================================== // Implementation interface // =================================================================== @@ -28324,7 +29700,7 @@ function (_BaseTool) { var eventData = evt.detail; var element = eventData.element; // Only brush needs to render. - if (Object(_store_isToolActive_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element, this.name)) { + if (Object(_store_isToolActiveForElement_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element, this.name)) { // Call the hover event for the brush this.renderBrush(evt); } @@ -28429,6 +29805,8 @@ function (_BaseTool) { }, { key: "increaseBrushSize", value: function increaseBrushSize() { + var configuration = segmentationModule.configuration, + setters = segmentationModule.setters; var oldRadius = configuration.radius; var newRadius = Math.floor(oldRadius * 1.2); // If e.g. only 2 pixels big. Math.floor(2*1.2) = 2. // Hence, have minimum increment of 1 pixel. @@ -28450,6 +29828,8 @@ function (_BaseTool) { }, { key: "decreaseBrushSize", value: function decreaseBrushSize() { + var configuration = segmentationModule.configuration, + setters = segmentationModule.setters; var oldRadius = configuration.radius; var newRadius = Math.floor(oldRadius * 0.8); setters.radius(newRadius); @@ -28961,7 +30341,7 @@ function () { return this._generateIconWithPointerSVGString(options); } /** - * Returns the mousePoint as a space seperated string. + * Returns the mousePoint as a space separated string. * * @returns {string} The mousePoint. */ @@ -29277,7 +30657,7 @@ var segCircleFillOutsideCursor = new _MouseCursor_js__WEBPACK_IMPORTED_MODULE_0_ /*!************************!*\ !*** ./tools/index.js ***! \************************/ -/*! exports provided: CrosshairsTool, DoubleTapFitToWindowTool, DragProbeTool, EraserTool, FreehandRoiSculptorTool, MagnifyTool, PanMultiTouchTool, PanTool, ReferenceLinesTool, RotateTool, RotateTouchTool, ScaleOverlayTool, StackScrollMouseWheelTool, StackScrollMultiTouchTool, StackScrollTool, WwwcRegionTool, WwwcTool, ZoomMouseWheelTool, ZoomTool, ZoomTouchPinchTool, default */ +/*! exports provided: CrosshairsTool, DoubleTapFitToWindowTool, DragProbeTool, EraserTool, FreehandRoiSculptorTool, MagnifyTool, OverlayTool, OrientationMarkersTool, PanMultiTouchTool, PanTool, ReferenceLinesTool, RotateTool, RotateTouchTool, ScaleOverlayTool, StackScrollMouseWheelTool, StackScrollMultiTouchTool, StackScrollTool, WwwcRegionTool, WwwcTool, ZoomMouseWheelTool, ZoomTool, ZoomTouchPinchTool, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -29300,47 +30680,55 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _MagnifyTool_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./MagnifyTool.js */ "./tools/MagnifyTool.js"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MagnifyTool", function() { return _MagnifyTool_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }); -/* harmony import */ var _PanMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./PanMultiTouchTool.js */ "./tools/PanMultiTouchTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanMultiTouchTool", function() { return _PanMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }); +/* harmony import */ var _OverlayTool_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OverlayTool.js */ "./tools/OverlayTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OverlayTool", function() { return _OverlayTool_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }); -/* harmony import */ var _PanTool_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PanTool.js */ "./tools/PanTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanTool", function() { return _PanTool_js__WEBPACK_IMPORTED_MODULE_7__["default"]; }); +/* harmony import */ var _OrientationMarkersTool_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./OrientationMarkersTool.js */ "./tools/OrientationMarkersTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OrientationMarkersTool", function() { return _OrientationMarkersTool_js__WEBPACK_IMPORTED_MODULE_7__["default"]; }); -/* harmony import */ var _ReferenceLinesTool_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ReferenceLinesTool.js */ "./tools/ReferenceLinesTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReferenceLinesTool", function() { return _ReferenceLinesTool_js__WEBPACK_IMPORTED_MODULE_8__["default"]; }); +/* harmony import */ var _PanMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./PanMultiTouchTool.js */ "./tools/PanMultiTouchTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanMultiTouchTool", function() { return _PanMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_8__["default"]; }); -/* harmony import */ var _RotateTool_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RotateTool.js */ "./tools/RotateTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RotateTool", function() { return _RotateTool_js__WEBPACK_IMPORTED_MODULE_9__["default"]; }); +/* harmony import */ var _PanTool_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PanTool.js */ "./tools/PanTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PanTool", function() { return _PanTool_js__WEBPACK_IMPORTED_MODULE_9__["default"]; }); -/* harmony import */ var _RotateTouchTool_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RotateTouchTool.js */ "./tools/RotateTouchTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RotateTouchTool", function() { return _RotateTouchTool_js__WEBPACK_IMPORTED_MODULE_10__["default"]; }); +/* harmony import */ var _ReferenceLinesTool_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ReferenceLinesTool.js */ "./tools/ReferenceLinesTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReferenceLinesTool", function() { return _ReferenceLinesTool_js__WEBPACK_IMPORTED_MODULE_10__["default"]; }); -/* harmony import */ var _ScaleOverlayTool_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ScaleOverlayTool.js */ "./tools/ScaleOverlayTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScaleOverlayTool", function() { return _ScaleOverlayTool_js__WEBPACK_IMPORTED_MODULE_11__["default"]; }); +/* harmony import */ var _RotateTool_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./RotateTool.js */ "./tools/RotateTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RotateTool", function() { return _RotateTool_js__WEBPACK_IMPORTED_MODULE_11__["default"]; }); -/* harmony import */ var _StackScrollMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./StackScrollMouseWheelTool.js */ "./tools/StackScrollMouseWheelTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StackScrollMouseWheelTool", function() { return _StackScrollMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_12__["default"]; }); +/* harmony import */ var _RotateTouchTool_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./RotateTouchTool.js */ "./tools/RotateTouchTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RotateTouchTool", function() { return _RotateTouchTool_js__WEBPACK_IMPORTED_MODULE_12__["default"]; }); -/* harmony import */ var _StackScrollMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./StackScrollMultiTouchTool.js */ "./tools/StackScrollMultiTouchTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StackScrollMultiTouchTool", function() { return _StackScrollMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_13__["default"]; }); +/* harmony import */ var _ScaleOverlayTool_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ScaleOverlayTool.js */ "./tools/ScaleOverlayTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScaleOverlayTool", function() { return _ScaleOverlayTool_js__WEBPACK_IMPORTED_MODULE_13__["default"]; }); -/* harmony import */ var _StackScrollTool_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./StackScrollTool.js */ "./tools/StackScrollTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StackScrollTool", function() { return _StackScrollTool_js__WEBPACK_IMPORTED_MODULE_14__["default"]; }); +/* harmony import */ var _StackScrollMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./StackScrollMouseWheelTool.js */ "./tools/StackScrollMouseWheelTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StackScrollMouseWheelTool", function() { return _StackScrollMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_14__["default"]; }); -/* harmony import */ var _WwwcRegionTool_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./WwwcRegionTool.js */ "./tools/WwwcRegionTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WwwcRegionTool", function() { return _WwwcRegionTool_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); +/* harmony import */ var _StackScrollMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./StackScrollMultiTouchTool.js */ "./tools/StackScrollMultiTouchTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StackScrollMultiTouchTool", function() { return _StackScrollMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); -/* harmony import */ var _WwwcTool_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./WwwcTool.js */ "./tools/WwwcTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WwwcTool", function() { return _WwwcTool_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); +/* harmony import */ var _StackScrollTool_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./StackScrollTool.js */ "./tools/StackScrollTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StackScrollTool", function() { return _StackScrollTool_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); -/* harmony import */ var _ZoomMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ZoomMouseWheelTool.js */ "./tools/ZoomMouseWheelTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZoomMouseWheelTool", function() { return _ZoomMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); +/* harmony import */ var _WwwcRegionTool_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./WwwcRegionTool.js */ "./tools/WwwcRegionTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WwwcRegionTool", function() { return _WwwcRegionTool_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); + +/* harmony import */ var _WwwcTool_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./WwwcTool.js */ "./tools/WwwcTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WwwcTool", function() { return _WwwcTool_js__WEBPACK_IMPORTED_MODULE_18__["default"]; }); + +/* harmony import */ var _ZoomMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ZoomMouseWheelTool.js */ "./tools/ZoomMouseWheelTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZoomMouseWheelTool", function() { return _ZoomMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_19__["default"]; }); + +/* harmony import */ var _ZoomTool_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ZoomTool.js */ "./tools/ZoomTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZoomTool", function() { return _ZoomTool_js__WEBPACK_IMPORTED_MODULE_20__["default"]; }); + +/* harmony import */ var _ZoomTouchPinchTool_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./ZoomTouchPinchTool.js */ "./tools/ZoomTouchPinchTool.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZoomTouchPinchTool", function() { return _ZoomTouchPinchTool_js__WEBPACK_IMPORTED_MODULE_21__["default"]; }); -/* harmony import */ var _ZoomTool_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ZoomTool.js */ "./tools/ZoomTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZoomTool", function() { return _ZoomTool_js__WEBPACK_IMPORTED_MODULE_18__["default"]; }); -/* harmony import */ var _ZoomTouchPinchTool_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ZoomTouchPinchTool.js */ "./tools/ZoomTouchPinchTool.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZoomTouchPinchTool", function() { return _ZoomTouchPinchTool_js__WEBPACK_IMPORTED_MODULE_19__["default"]; }); @@ -29372,20 +30760,22 @@ __webpack_require__.r(__webpack_exports__); EraserTool: _EraserTool_js__WEBPACK_IMPORTED_MODULE_3__["default"], FreehandRoiSculptorTool: _FreehandRoiSculptorTool_js__WEBPACK_IMPORTED_MODULE_4__["default"], MagnifyTool: _MagnifyTool_js__WEBPACK_IMPORTED_MODULE_5__["default"], - PanMultiTouchTool: _PanMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_6__["default"], - PanTool: _PanTool_js__WEBPACK_IMPORTED_MODULE_7__["default"], - ReferenceLinesTool: _ReferenceLinesTool_js__WEBPACK_IMPORTED_MODULE_8__["default"], - RotateTool: _RotateTool_js__WEBPACK_IMPORTED_MODULE_9__["default"], - RotateTouchTool: _RotateTouchTool_js__WEBPACK_IMPORTED_MODULE_10__["default"], - ScaleOverlayTool: _ScaleOverlayTool_js__WEBPACK_IMPORTED_MODULE_11__["default"], - StackScrollMouseWheelTool: _StackScrollMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_12__["default"], - StackScrollMultiTouchTool: _StackScrollMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_13__["default"], - StackScrollTool: _StackScrollTool_js__WEBPACK_IMPORTED_MODULE_14__["default"], - WwwcRegionTool: _WwwcRegionTool_js__WEBPACK_IMPORTED_MODULE_15__["default"], - WwwcTool: _WwwcTool_js__WEBPACK_IMPORTED_MODULE_16__["default"], - ZoomMouseWheelTool: _ZoomMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_17__["default"], - ZoomTool: _ZoomTool_js__WEBPACK_IMPORTED_MODULE_18__["default"], - ZoomTouchPinchTool: _ZoomTouchPinchTool_js__WEBPACK_IMPORTED_MODULE_19__["default"] + OverlayTool: _OverlayTool_js__WEBPACK_IMPORTED_MODULE_6__["default"], + OrientationMarkersTool: _OrientationMarkersTool_js__WEBPACK_IMPORTED_MODULE_7__["default"], + PanMultiTouchTool: _PanMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_8__["default"], + PanTool: _PanTool_js__WEBPACK_IMPORTED_MODULE_9__["default"], + ReferenceLinesTool: _ReferenceLinesTool_js__WEBPACK_IMPORTED_MODULE_10__["default"], + RotateTool: _RotateTool_js__WEBPACK_IMPORTED_MODULE_11__["default"], + RotateTouchTool: _RotateTouchTool_js__WEBPACK_IMPORTED_MODULE_12__["default"], + ScaleOverlayTool: _ScaleOverlayTool_js__WEBPACK_IMPORTED_MODULE_13__["default"], + StackScrollMouseWheelTool: _StackScrollMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_14__["default"], + StackScrollMultiTouchTool: _StackScrollMultiTouchTool_js__WEBPACK_IMPORTED_MODULE_15__["default"], + StackScrollTool: _StackScrollTool_js__WEBPACK_IMPORTED_MODULE_16__["default"], + WwwcRegionTool: _WwwcRegionTool_js__WEBPACK_IMPORTED_MODULE_17__["default"], + WwwcTool: _WwwcTool_js__WEBPACK_IMPORTED_MODULE_18__["default"], + ZoomMouseWheelTool: _ZoomMouseWheelTool_js__WEBPACK_IMPORTED_MODULE_19__["default"], + ZoomTool: _ZoomTool_js__WEBPACK_IMPORTED_MODULE_20__["default"], + ZoomTouchPinchTool: _ZoomTouchPinchTool_js__WEBPACK_IMPORTED_MODULE_21__["default"] }); /***/ }), @@ -29556,11 +30946,7 @@ __webpack_require__.r(__webpack_exports__); var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_10__["getLogger"])('tools:BrushTool'); - -var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_8__["getModule"])('segmentation'), - getters = _getModule.getters, - configuration = _getModule.configuration, - state = _getModule.state; +var segmentationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_8__["getModule"])('segmentation'); /** * @public * @class BrushTool @@ -29569,7 +30955,6 @@ var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_8__["getModule" * @extends Tools.Base.BaseBrushTool */ - var BrushTool = /*#__PURE__*/ function (_BaseBrushTool) { @@ -29585,81 +30970,31 @@ function (_BaseBrushTool) { var defaultProps = { name: 'Brush', supportedInteractionTypes: ['Mouse', 'Touch'], - configuration: {} + configuration: {}, + mixins: ['renderBrushMixin'] }; _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(BrushTool).call(this, props, defaultProps)); _this.touchDragCallback = _this._paint.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); return _this; } /** - * Called by the event dispatcher to render the image. + * Paints the data to the labelmap. * - * @param {Object} evt - The event. + * @protected + * @param {Object} evt The data object associated with the event. * @returns {void} */ _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(BrushTool, [{ - key: "renderBrush", - value: function renderBrush(evt) { + key: "_paint", + value: function _paint(evt) { + var configuration = segmentationModule.configuration; var eventData = evt.detail; - var viewport = eventData.viewport; - var mousePosition; - - if (this._drawing) { - mousePosition = this._lastImageCoords; - } else if (this._mouseUpRender) { - mousePosition = this._lastImageCoords; - this._mouseUpRender = false; - } else { - mousePosition = _store_index_js__WEBPACK_IMPORTED_MODULE_8__["default"].state.mousePositionImage; - } - - if (!mousePosition) { - return; - } - + var element = eventData.element; var _eventData$image = eventData.image, rows = _eventData$image.rows, columns = _eventData$image.columns; - var _mousePosition = mousePosition, - x = _mousePosition.x, - y = _mousePosition.y; - - if (x < 0 || x > columns || y < 0 || y > rows) { - return; - } // Draw the hover overlay on top of the pixel data - - - var radius = configuration.radius; - var context = eventData.canvasContext; - var element = eventData.element; - var color = getters.brushColor(element, this._drawing); - context.setTransform(1, 0, 0, 1, 0, 0); - var cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone; - var circleRadius = radius * viewport.scale; - var mouseCoordsCanvas = cornerstone.pixelToCanvas(element, mousePosition); - context.beginPath(); - context.strokeStyle = color; - context.ellipse(mouseCoordsCanvas.x, mouseCoordsCanvas.y, circleRadius, circleRadius, 0, 0, 2 * Math.PI); - context.stroke(); - } - /** - * Paints the data to the labelmap. - * - * @protected - * @param {Object} evt The data object associated with the event. - * @returns {void} - */ - - }, { - key: "_paint", - value: function _paint(evt) { - var eventData = evt.detail; - var element = eventData.element; - var _eventData$image2 = eventData.image, - rows = _eventData$image2.rows, - columns = _eventData$image2.columns; var _eventData$currentPoi = eventData.currentPoints.image, x = _eventData$currentPoi.x, y = _eventData$currentPoi.y; @@ -29676,7 +31011,6 @@ function (_BaseBrushTool) { shouldErase = _this$paintEventData.shouldErase; // Draw / Erase the active color. Object(_util_segmentation_index_js__WEBPACK_IMPORTED_MODULE_9__["drawBrushPixels"])(pointerArray, labelmap2D.pixelData, labelmap3D.activeSegmentIndex, columns, shouldErase); - Object(_util_segmentation_index_js__WEBPACK_IMPORTED_MODULE_9__["triggerLabelmapModifiedEvent"])(element); _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.updateImage(evt.detail.element); } }]); @@ -30008,7 +31342,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"); /* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../../externalModules.js */ "./externalModules.js"); -/* harmony import */ var _BrushTool_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./BrushTool.js */ "./tools/segmentation/BrushTool.js"); +/* harmony import */ var _base_BaseBrushTool_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../base/BaseBrushTool.js */ "./tools/base/BaseBrushTool.js"); /* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../../store/index.js */ "./store/index.js"); /* harmony import */ var _util_segmentation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../../util/segmentation */ "./util/segmentation/index.js"); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../stateManagement/toolState.js */ "./stateManagement/toolState.js"); @@ -30027,11 +31361,7 @@ __webpack_require__.r(__webpack_exports__); var logger = Object(_util_logger_js__WEBPACK_IMPORTED_MODULE_11__["getLogger"])('tools:SphericalBrushTool'); - -var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_8__["getModule"])('segmentation'), - getters = _getModule.getters, - setters = _getModule.setters, - configuration = _getModule.configuration; +var segmentationModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_8__["getModule"])('segmentation'); /** * @public * @class BrushTool @@ -30040,11 +31370,10 @@ var _getModule = Object(_store_index_js__WEBPACK_IMPORTED_MODULE_8__["getModule" * @extends Tools.Base.BaseBrushTool */ - var SphericalBrushTool = /*#__PURE__*/ -function (_BrushTool) { - _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(SphericalBrushTool, _BrushTool); +function (_BaseBrushTool) { + _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(SphericalBrushTool, _BaseBrushTool); function SphericalBrushTool() { var _this; @@ -30058,9 +31387,10 @@ function (_BrushTool) { supportedInteractionTypes: ['Mouse', 'Touch'], configuration: { alwaysEraseOnClick: false - } + }, + mixins: ['renderBrushMixin'] }; - _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(SphericalBrushTool).call(this, defaultProps)); + _this = _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(SphericalBrushTool).call(this, props, defaultProps)); _this.touchDragCallback = _this._paint.bind(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this)); return _this; } @@ -30077,6 +31407,8 @@ function (_BrushTool) { _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(SphericalBrushTool, [{ key: "_startPainting", value: function _startPainting(evt) { + var configuration = segmentationModule.configuration, + getters = segmentationModule.getters; var eventData = evt.detail; var element = eventData.element, image = eventData.image; @@ -30144,6 +31476,7 @@ function (_BrushTool) { }, { key: "_paint", value: function _paint(evt) { + var getters = segmentationModule.getters; var eventData = evt.detail; var element = eventData.element; var image = eventData.image; @@ -30173,7 +31506,6 @@ function (_BrushTool) { Object(_util_segmentation__WEBPACK_IMPORTED_MODULE_9__["drawBrushPixels"])(pointerArray, labelmap2DForImageIdIndex.pixelData, labelmap3D.activeSegmentIndex, columns, shouldErase); } - Object(_util_segmentation__WEBPACK_IMPORTED_MODULE_9__["triggerLabelmapModifiedEvent"])(element); _externalModules_js__WEBPACK_IMPORTED_MODULE_6__["default"].cornerstone.updateImage(evt.detail.element); } /** @@ -30268,6 +31600,8 @@ function (_BrushTool) { labelmap3D = _this$paintEventData2.labelmap3D, imagesInRange = _this$paintEventData2.imagesInRange; var operations = []; + var configuration = segmentationModule.configuration, + setters = segmentationModule.setters; for (var i = 0; i < imagesInRange.length; i++) { var imageIdIndex = imagesInRange[i].imageIdIndex; @@ -30301,12 +31635,16 @@ function (_BrushTool) { } } - setters.pushState(this.element, operations); + if (configuration.storeHistory) { + setters.pushState(this.element, operations); + } + + Object(_util_segmentation__WEBPACK_IMPORTED_MODULE_9__["triggerLabelmapModifiedEvent"])(this.element); } }]); return SphericalBrushTool; -}(_BrushTool_js__WEBPACK_IMPORTED_MODULE_7__["default"]); +}(_base_BaseBrushTool_js__WEBPACK_IMPORTED_MODULE_7__["default"]); @@ -30396,7 +31734,7 @@ var logger = Object(_util_logger__WEBPACK_IMPORTED_MODULE_5__["getLogger"])('uti * - Stroke in-out-in: Section is added. * * @param {Object} evt The cornerstone event. - * @param {} operationData An object containing the `pixelData` to + * @param {Object} operationData An object containing the `pixelData` to * modify, the `segmentIndex` and the `points` array. * * @returns {null} @@ -30438,7 +31776,7 @@ function correction(evt, operationData) { * Snap the freehand points to the labelmap grid and attach a label for each node. * * @param {Object[]} points An array of points drawn by the user. - * @param {UInt16Array} pixelData The 2D labelmap. + * @param {UInt16Array|Float32Array} pixelData The 2D labelmap. * @param {Object} evt The cornerstone event. * @returns {Object[]} */ @@ -30522,8 +31860,8 @@ function checkIfSimpleScissorOperation(nodes, segmentIndex) { * The algorithm is described in full length in Tobias Heimann's diploma thesis (MBI Technical Report 145, p. 37 - 40). * * @param {Object} operation The operation. - * @param {UInt16Array} pixelData The 2D labelmap. - * @param {UInt16Array} workingLabelMap A copy of the labelmap for processing purposes. + * @param {UInt16Array|Float32Array} pixelData The 2D labelmap. + * @param {UInt16Array|Float32Array} workingLabelMap A copy of the labelmap for processing purposes. * @param {number} segmentIndex The label of the tool being used. * @param {Object} evt The cornerstone event. */ @@ -30885,13 +32223,26 @@ function getNodesPerpendicularToPathPixel(pathPixel, nextPathPixel) { logger.error("Unable to find left and right paths for flood fill ", pathPixel, nextPathPixel, direction); } /** - * Splits the path of nodes into seperate add/remove operations. + * @typedef {Object} Node + * @property {number} x - the X position + * @property {number} y - the Y position + * @property {number} segment - The segment index + */ + +/** + * @typedef {Object} SegmentationOperations + * @property {boolean} additive - Whether the operation is additive or not + * @property {Node[]} nodes - The array of nodes + */ + +/** + * Splits the path of nodes into separate add/remove operations. * * @param {Object[]} nodes The array of nodes. * @param {number} segmentIndex The label value to replace. - * @returns {{additive: boolean, nodes: []}[]} An array of operations to perform, - * whether they are `additive` and the - * corresponding `nodes` of the operation. + * @returns {SegmentationOperations[]} An array of operations to perform, + * whether they are `additive` and the + * corresponding `nodes` of the operation. */ @@ -31632,7 +32983,7 @@ __webpack_require__.r(__webpack_exports__); } var acquisitionTimeInSeconds = fracToDec(seriesAcquisitionTime.fractionalSeconds || 0) + seriesAcquisitionTime.seconds + seriesAcquisitionTime.minutes * 60 + seriesAcquisitionTime.hours * 60 * 60; - var injectionStartTimeInSeconds = fracToDec(startTime.fractionalSeconds) + startTime.seconds + startTime.minutes * 60 + startTime.hours * 60 * 60; + var injectionStartTimeInSeconds = fracToDec(startTime.fractionalSeconds || 0) + startTime.seconds + startTime.minutes * 60 + startTime.hours * 60 * 60; var durationInSeconds = acquisitionTimeInSeconds - injectionStartTimeInSeconds; var correctedDose = totalDose * Math.exp(-durationInSeconds * Math.log(2) / halfLife); var suv = modalityPixelValue * patientWeight / correctedDose * 1000; @@ -31658,13 +33009,19 @@ function fracToDec(fractionalValue) { /*!**********************!*\ !*** ./util/clip.js ***! \**********************/ -/*! exports provided: default, clipToBox */ +/*! exports provided: clip, clipToBox, clipBoxToDisplayedArea, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return clip; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clip", function() { return clip; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clipToBox", function() { return clipToBox; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clipBoxToDisplayedArea", function() { return clipBoxToDisplayedArea; }); +/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"); +/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); + + /** * Clips a value to an upper and lower bound. * @export @public @method @@ -31675,6 +33032,7 @@ __webpack_require__.r(__webpack_exports__); * @param {number} high The upper bound. * @returns {number} The clipped value. */ + function clip(val, low, high) { return Math.min(Math.max(low, val), high); } @@ -31685,14 +33043,149 @@ function clip(val, low, high) { * * @param {Object} point The point to clip * @param {Object} box The bounding box to clip to. - * @returns {Object} The clipped point. + * @returns {void} */ function clipToBox(point, box) { - // Clip an {x, y} point to a box of size {width, height} - point.x = clip(point.x, 0, box.width); - point.y = clip(point.y, 0, box.height); + // Clip an {x, y} point to a box {top, left, width, height} + var left = box.left || 0; + var top = box.top || 0; + point.x = clip(point.x, left, left + box.width); + point.y = clip(point.y, top, top + box.height); } +/** + * Returns a new bounding box of rotated text box, relative to the pixel + * coordinate system. It will get the coordinate of the 4 points of the rotated + * text box and calculate the AABB (axis-aligned bounding box - lower and upper + * boundaries for `x` and `y` axes). + * + * @param {HTMLElement} element The element to manipulate pixel positioning + * @param {Object} box - `{ left, top, width, height }` in canvas coordinates + * @returns {Object} - `{ minX, minY, maxX, maxY }` boundaries of the box + */ + +var getBoxPixelBoundaries = function getBoxPixelBoundaries(element, box) { + var toPixel = function toPixel(point) { + return _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone.canvasToPixel(element, point); + }; + + var top = box.top, + left = box.left, + width = box.width, + height = box.height; + var topLeft = toPixel({ + x: left, + y: top + }); + var topRight = toPixel({ + x: left + width, + y: top + }); + var bottomLeft = toPixel({ + x: left, + y: top + height + }); + var bottomRight = toPixel({ + x: left + width, + y: top + height + }); + var points = [topLeft, topRight, bottomLeft, bottomRight]; + var xArray = points.map(function (p) { + return p.x; + }); + var yArray = points.map(function (p) { + return p.y; + }); + return { + minX: Math.min.apply(Math, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(xArray)), + minY: Math.min.apply(Math, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(yArray)), + maxX: Math.max.apply(Math, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(xArray)), + maxY: Math.max.apply(Math, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(yArray)) + }; +}; +/** + * Reposition a box point coordinates in the given axis' upper/lower limits + * + * @param {Object} point `{ x, y }` The coordinate point of the box + * @param {string} axis The axis to be manipulated: `x` or `y` + * @param {number} boxMin The box position's lower value on axis + * @param {number} boxMax The box position's upper value on axis + * @param {number} lowerLimit The lower limit of allowed box position on axis + * @param {number} upperLimit The upper limit of allowed box position on axis + * @returns {void} + */ + + +var clipBoxOnAxis = function clipBoxOnAxis(point, axis, boxMin, boxMax, lowerLimit, upperLimit) { + if (upperLimit - lowerLimit < boxMax - boxMin) { + // Box is bigger than allowed range, leaking both lower/upper boundaries + point[axis] += lowerLimit - boxMin; // Stick to the lower boundary + + point[axis] += (upperLimit - lowerLimit) / 2; // Centralize in range + + point[axis] -= (boxMax - boxMin) / 2; // Translate -1/2 of box's size + } else if (boxMin < lowerLimit) { + // Box leaked lower boundary + point[axis] += lowerLimit - boxMin; // Stick to the lower boundary + } else if (boxMax > upperLimit) { + // Box leaked upper boundary + point[axis] -= boxMax - upperLimit; // Stick to the upper boundary + } +}; +/** + * Clips a box to the viewport's displayed area + * @export @public @method + * @name clipBoxToDisplayedArea + * + * @param {HTMLElement} element The element to manipulate pixel positioning + * @param {Object} box - `{ left, top, width, height }` in canvas coordinates + * @returns {void} + */ + + +function clipBoxToDisplayedArea(element, box) { + var _external$cornerstone = _externalModules_js__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone, + pixelToCanvas = _external$cornerstone.pixelToCanvas, + canvasToPixel = _external$cornerstone.canvasToPixel, + getViewport = _external$cornerstone.getViewport, + getEnabledElement = _external$cornerstone.getEnabledElement, + getDisplayedArea = _external$cornerstone.getDisplayedArea; // Transform the position of given box from canvas to pixel coordinates + + var pixelPosition = canvasToPixel(element, { + x: box.left, + y: box.top + }); // Get the rotated corners' position for the box in pixel coordinate system + + var _getBoxPixelBoundarie = getBoxPixelBoundaries(element, box), + minX = _getBoxPixelBoundarie.minX, + minY = _getBoxPixelBoundarie.minY, + maxX = _getBoxPixelBoundarie.maxX, + maxY = _getBoxPixelBoundarie.maxY; // Get the displayed area's top, left, bottom and right boundaries + + + var viewport = getViewport(element); + var enabledElement = getEnabledElement(element); + var defaultDisplayedArea = getDisplayedArea(enabledElement.image, viewport); + + var _ref = viewport.displayedArea ? viewport.displayedArea : defaultDisplayedArea, + tlhc = _ref.tlhc, + brhc = _ref.brhc; + + var top = tlhc.y - 1; + var left = tlhc.x - 1; + var bottom = brhc.y; + var right = brhc.x; // Clip the box on vertical axis + + clipBoxOnAxis(pixelPosition, 'y', minY, maxY, top, bottom); // Clip the box on horizontal axis + + clipBoxOnAxis(pixelPosition, 'x', minX, maxX, left, right); // Transform the box coordinate system back to canvas + + var newCanvasPosition = pixelToCanvas(element, pixelPosition); // Update the box with the new coordinates + + box.top = newCanvasPosition.y; + box.left = newCanvasPosition.x; +} +/* harmony default export */ __webpack_exports__["default"] = (clip); /***/ }), @@ -31724,6 +33217,12 @@ function convertToVector3(arrayOrVector3) { return arrayOrVector3; } + var keys = Object.keys(arrayOrVector3); + + if (keys.includes('x') && keys.includes('y') && keys.includes('z')) { + return new cornerstoneMath.Vector3(arrayOrVector3.x, arrayOrVector3.y, arrayOrVector3.z); + } + return new cornerstoneMath.Vector3(arrayOrVector3[0], arrayOrVector3[1], arrayOrVector3[2]); } @@ -32011,6 +33510,479 @@ function debounce(func, wait, options) { /***/ }), +/***/ "./util/debugLib/common.js": +/*!*********************************!*\ + !*** ./util/debugLib/common.js ***! + \*********************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"); +/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__); + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(/*! ms */ "../node_modules/ms/index.js"); + Object.keys(env).forEach(function (key) { + createDebug[key] = env[key]; + }); + /** + * Active `debug` instances. + */ + + createDebug.instances = []; + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + + createDebug.formatters = {}; + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the for the debug instance to be colored + * @returns {Number|String} An ANSI color code for the given namespace + * @api private + */ + + function selectColor(namespace) { + var hash = 0; + + for (var i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + + createDebug.selectColor = selectColor; + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @returns {Function} + * @api public + */ + + function createDebug(namespace) { + var prevTime; + + function debug() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + // Disabled? + if (!debug.enabled) { + return; + } + + var self = debug; // Set `diff` timestamp + + var curr = Number(new Date()); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } // Apply any `formatters` transformations + + + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return match; + } + + index++; + var formatter = createDebug.formatters[format]; + + if (typeof formatter === 'function') { + var val = args[index]; + match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` + + args.splice(index, 1); + index--; + } + + return match; + }); // Apply env-specific formatting (colors, etc.) + + createDebug.formatArgs.call(self, args); + var logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = createDebug.enabled(namespace); + debug.useColors = createDebug.useColors(); + debug.color = selectColor(namespace); + debug.destroy = destroy; + debug.extend = extend; // Debug.formatArgs = formatArgs; + // debug.rawLog = rawLog; + // env-specific initialization logic for debug instances + + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + createDebug.instances.push(debug); + return debug; + } + + function destroy() { + var index = createDebug.instances.indexOf(this); + + if (index !== -1) { + createDebug.instances.splice(index, 1); + return true; + } + + return false; + } + + function extend(namespace, delimiter) { + var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + + + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.names = []; + createDebug.skips = []; + var i; + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // Ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp("^".concat(namespaces.substr(1), "$"))); + } else { + createDebug.names.push(new RegExp("^".concat(namespaces, "$"))); + } + } + + for (i = 0; i < createDebug.instances.length; i++) { + var instance = createDebug.instances[i]; + instance.enabled = createDebug.enabled(instance.namespace); + } + } + /** + * Disable debug output. + * + * @returns {String} namespaces + * @api public + */ + + + function disable() { + var namespaces = [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(createDebug.names.map(toNamespace)), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(createDebug.skips.map(toNamespace).map(function (namespace) { + return "-".concat(namespace); + }))).join(','); + createDebug.enable(''); + return namespaces; + } + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @returns {Boolean} + * @api public + */ + + + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + var i; + var len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @returns {String} namespace + * @api private + */ + + + function toNamespace(regexp) { + return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*'); + } + /** + * Coerce `val`. + * + * @param {Mixed} val + * @returns {Mixed} + * @api private + */ + + + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + + return val; + } + + createDebug.enable(createDebug.load()); + return createDebug; +} + +/* harmony default export */ __webpack_exports__["default"] = (setup); + +/***/ }), + +/***/ "./util/debugLib/index.js": +/*!********************************!*\ + !*** ./util/debugLib/index.js ***! + \********************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* WEBPACK VAR INJECTION */(function(process) {/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ "./util/debugLib/common.js"); +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +var storage = localstorage(); +var debugLib = { + formatArgs: formatArgs, + save: save, + load: load, + useColors: useColors, + storage: storage +}; +/** + * Colors. + */ + +debugLib.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33']; +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ +// eslint-disable-next-line complexity + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } // Internet Explorer and Edge do not support colors. + + + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + + + return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); +} +/** + * Colorize log arguments if enabled. + * + * @api public + */ + + +function formatArgs(args) { + args[0] = "".concat((this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' '), "+").concat(setupDebug.humanize(this.diff)); + + if (!this.useColors) { + return; + } + + var c = "color: ".concat(this.color); + args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function (match) { + if (match === '%%') { + return; + } + + index++; + + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + args.splice(lastC, 0, c); +} +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ + + +debugLib.log = console.debug || console.log || function () {}; +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + +function save(namespaces) { + try { + if (namespaces) { + debugLib.storage.setItem('debug', namespaces); + } else { + debugLib.storage.removeItem('debug'); + } + } catch (error) {// Swallow + // XXX (@Qix-) should we be logging these? + } +} +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + + +function load() { + var r; + + try { + r = debugLib.storage.getItem('debug'); + } catch (error) { + console.warn(error); + } // Swallow + // XXX (@Qix-) should we be logging these? + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + + + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) {// Swallow + // XXX (@Qix-) should we be logging these? + } +} + +var setupDebug = Object(_common_js__WEBPACK_IMPORTED_MODULE_0__["default"])(debugLib); +var formatters = setupDebug.formatters; +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return "[UnexpectedJSONParseError]: ".concat(error.message); + } +}; + +/* harmony default export */ __webpack_exports__["default"] = (setupDebug); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/process/browser.js */ "../node_modules/process/browser.js"))) + +/***/ }), + /***/ "./util/deepmerge.js": /*!***************************!*\ !*** ./util/deepmerge.js ***! @@ -32086,7 +34058,13 @@ var deepmerge = function deepmerge() { return Array.isArray(target) ? arrayMerge(target, source, optionsArgument) : cloneIfNecessary(source, optionsArgument); } - return mergeObject(target, source, optionsArgument); + var mergedObject = mergeObject(target, source, optionsArgument); + + if (Object.getPrototypeOf(target) !== Object.prototype) { + Object.setPrototypeOf(mergedObject, Object.getPrototypeOf(target)); + } + + return mergedObject; }; /* harmony default export */ __webpack_exports__["default"] = (deepmerge); @@ -32256,9 +34234,23 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "moveHandleNearImagePoint", function() { return moveHandleNearImagePoint; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findHandleDataNearImagePoint", function() { return findHandleDataNearImagePoint; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "moveAnnotation", function() { return moveAnnotation; }); -/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../store/index.js */ "./store/index.js"); -/* harmony import */ var _manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../manipulators/getHandleNearImagePoint.js */ "./manipulators/getHandleNearImagePoint.js"); -/* harmony import */ var _manipulators_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../manipulators/index.js */ "./manipulators/index.js"); +/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"); +/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _store_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../store/index.js */ "./store/index.js"); +/* harmony import */ var _manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../manipulators/getHandleNearImagePoint.js */ "./manipulators/getHandleNearImagePoint.js"); +/* harmony import */ var _manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../manipulators/index.js */ "./manipulators/index.js"); +/* harmony import */ var _getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getProximityThreshold.js */ "./util/getProximityThreshold.js"); +/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../events */ "./events.js"); +/* harmony import */ var _triggerEvent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./triggerEvent */ "./util/triggerEvent.js"); + + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + + + + // TODO this should just be in manipulators? They are just manipulator wrappers anyway. @@ -32279,8 +34271,24 @@ __webpack_require__.r(__webpack_exports__); var moveHandleNearImagePoint = function moveHandleNearImagePoint(evt, tool, toolData, handle, interactionType) { toolData.active = true; - _store_index_js__WEBPACK_IMPORTED_MODULE_0__["state"].isToolLocked = true; - Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_2__["moveHandle"])(evt.detail, tool.name, toolData, handle, tool.options, interactionType); + _store_index_js__WEBPACK_IMPORTED_MODULE_1__["state"].isToolLocked = true; + + var doneHandler = function doneHandler(success) { + var element = evt.detail.element; + var toolName = toolData.toolType || toolData.toolName; + var modifiedEventData = { + toolName: toolName, + toolType: toolName, + // Deprecation notice: toolType will be replaced by toolName + element: element, + measurementData: _objectSpread({}, toolData, { + active: false + }) + }; + Object(_triggerEvent__WEBPACK_IMPORTED_MODULE_6__["default"])(element, _events__WEBPACK_IMPORTED_MODULE_5__["default"].MEASUREMENT_COMPLETED, modifiedEventData); + }; + + Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["moveHandle"])(evt.detail, tool.name, toolData, handle, tool.options, interactionType, doneHandler); evt.stopImmediatePropagation(); evt.stopPropagation(); evt.preventDefault(); @@ -32307,7 +34315,7 @@ var findHandleDataNearImagePoint = function findHandleDataNearImagePoint(element for (var i = 0; i < toolState.data.length; i++) { var data = toolState.data[i]; - var handle = Object(_manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element, data.handles, coords, interactionType === 'mouse' ? _store_index_js__WEBPACK_IMPORTED_MODULE_0__["state"].clickProximity : _store_index_js__WEBPACK_IMPORTED_MODULE_0__["state"].touchProximity); + var handle = Object(_manipulators_getHandleNearImagePoint_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element, data.handles, coords, Object(_getProximityThreshold_js__WEBPACK_IMPORTED_MODULE_4__["default"])(interactionType, toolName)); if (handle) { return { @@ -32339,10 +34347,10 @@ var findHandleDataNearImagePoint = function findHandleDataNearImagePoint(element var moveAnnotation = function moveAnnotation(evt, tool, annotation) { var interactionType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'mouse'; annotation.active = true; - _store_index_js__WEBPACK_IMPORTED_MODULE_0__["state"].isToolLocked = true; - Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_2__["moveAllHandles"])(evt.detail, tool.name, annotation, null, tool.options, interactionType, function () { + _store_index_js__WEBPACK_IMPORTED_MODULE_1__["state"].isToolLocked = true; + Object(_manipulators_index_js__WEBPACK_IMPORTED_MODULE_3__["moveAllHandles"])(evt.detail, tool.name, annotation, null, tool.options, interactionType, function () { annotation.active = false; - _store_index_js__WEBPACK_IMPORTED_MODULE_0__["state"].isToolLocked = false; + _store_index_js__WEBPACK_IMPORTED_MODULE_1__["state"].isToolLocked = false; }); evt.stopImmediatePropagation(); evt.stopPropagation(); @@ -33504,7 +35512,7 @@ function isLineRightOfPoint(point, lp1, lp2) { var lPointY = lineSegmentAtPoint(point, lp1, lp2); // If the lp1.x and lp2.x enclose point.x check gradient of line and see if // Point is above or below the line to calculate if it inside. - if (Math.sign(lPointY.gradient) * point.y > lPointY.value) { + if (Math.sign(lPointY.gradient) * point.y > Math.sign(lPointY.gradient) * lPointY.value) { return true; } @@ -33526,7 +35534,7 @@ function isLineRightOfPoint(point, lp1, lp2) { function lineSegmentAtPoint(point, lp1, lp2) { var dydx = (lp2.y - lp1.y) / (lp2.x - lp1.x); var fx = { - value: lp1.x + dydx * (point.x - lp1.x), + value: lp1.y + dydx * (point.x - lp1.x), gradient: dydx }; return fx; @@ -33658,106 +35666,44 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./util/getKeyFromKeyCode.js": -/*!***********************************!*\ - !*** ./util/getKeyFromKeyCode.js ***! - \***********************************/ +/***/ "./util/getKeyPressData.js": +/*!*********************************!*\ + !*** ./util/getKeyPressData.js ***! + \*********************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/** - * Returns a string representation of the a key, given a keycode. Useful for - * hooking up api calls to buttons using external libraries. - * @export @public @method - * @name getKeyFromKeyCode - * - * @param {number} keyCode The keycode to look up. - * @returns {string} The corresponding character. - */ -/* harmony default export */ __webpack_exports__["default"] = (function (keyCode) { - return KEY_CODES[keyCode]; -}); -var KEY_CODES = { - // Numbers - above letter keys - 48: '0', - 49: '1', - 50: '2', - 51: '3', - 52: '4', - 53: '5', - 54: '6', - 55: '7', - 56: '8', - 57: '9', - // Numbers - numpad - 96: '0', - 97: '1', - 98: '2', - 99: '3', - 100: '4', - 101: '5', - 102: '6', - 103: '7', - 104: '8', - 105: '9', - // Letters - 65: 'a', - 66: 'b', - 67: 'c', - 68: 'd', - 69: 'e', - 70: 'f', - 71: 'g', - 72: 'h', - 73: 'i', - 74: 'j', - 75: 'k', - 76: 'l', - 77: 'm', - 78: 'n', - 79: 'o', - 80: 'p', - 81: 'q', - 82: 'r', - 83: 's', - 84: 't', - 85: 'u', - 86: 'v', - 87: 'w', - 88: 'x', - 89: 'y', - 90: 'z', - // Function keys - 112: 'F1', - 113: 'F2', - 114: 'F3', - 115: 'F4', - 116: 'F5', - // Command keys - 13: 'RETURN', - 8: 'BACKSPACE', - 9: 'TAB', - 46: 'DELETE', - 12: 'DELETE', - 27: 'ESCAPE', - 20: 'CAPSLOCK', - // Misc - NOTE: There are multiple keycodes for certain characters due to browsers having different mappings. - 173: '-', - 189: '-', - 109: '-', - 61: '+', - 187: '+', - 107: '+', - 219: '[', - 221: ']', - 59: ';', - 186: ';', - 188: ',', - 190: '.', - 199: '/' -}; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getKeyPressData; }); +/* harmony import */ var _store___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../store/ */ "./store/index.js"); +/* harmony import */ var _externalModules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../externalModules */ "./externalModules.js"); + + +function getKeyPressData(e) { + var cornerstone = _externalModules__WEBPACK_IMPORTED_MODULE_1__["default"].cornerstone; + var element = e.currentTarget; + var enabledElement = cornerstone.getEnabledElement(element); + + if (!enabledElement || !enabledElement.image) { + return; + } + + var currentPointsImage = _store___WEBPACK_IMPORTED_MODULE_0__["default"].state.mousePositionImage; + return { + event: window.event || e, + // Old IE support + element: element, + viewport: cornerstone.getViewport(element), + image: enabledElement.image, + currentPoints: { + image: currentPointsImage, + canvas: cornerstone.pixelToCanvas(element, currentPointsImage) + }, + keyCode: e.keyCode, + which: e.which + }; +} /***/ }), @@ -34004,6 +35950,48 @@ function getPixelSpacing(image) { /***/ }), +/***/ "./util/getProximityThreshold.js": +/*!***************************************!*\ + !*** ./util/getProximityThreshold.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getProximityThreshold; }); +/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../store */ "./store/index.js"); + +/** + * Returns the proximity threshold for the given interaction type, looking first + * at the tool configuration and then at global configuration. + * + * @public + * @function getProximityThreshold + * + * @param {string} interactionType The interaction type (mouse or touch) + * @param {string} toolName The name of the tool + * @returns {Number} The proximity threshold based on the tool + */ + +function getProximityThreshold(interactionType, toolName) { + var clickProximity = _store__WEBPACK_IMPORTED_MODULE_0__["state"].clickProximity, + touchProximity = _store__WEBPACK_IMPORTED_MODULE_0__["state"].touchProximity; + var tool = _store__WEBPACK_IMPORTED_MODULE_0__["state"].tools.find(function (_ref) { + var name = _ref.name; + return name === toolName; + }); + + if (tool && tool.configuration) { + clickProximity = tool.configuration.clickProximity || clickProximity; + touchProximity = tool.configuration.touchProximity || touchProximity; + } + + return interactionType === 'mouse' ? clickProximity : touchProximity; +} + +/***/ }), + /***/ "./util/getRGBPixels.js": /*!******************************!*\ !*** ./util/getRGBPixels.js ***! @@ -34326,11 +36314,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLogger", function() { return getLogger; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "enable", function() { return enable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "disable", function() { return disable; }); -/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "../node_modules/debug/src/browser.js"); -/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _debugLib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./debugLib/index.js */ "./util/debugLib/index.js"); var BASE_SCOPE = 'cornerstoneTools'; -var baseLogger = debug__WEBPACK_IMPORTED_MODULE_0___default()(BASE_SCOPE); // eslint-disable-next-line no-process-env +var baseLogger = Object(_debugLib_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(BASE_SCOPE); // eslint-disable-next-line no-process-env var devMode = "development" === 'development'; // If we're in dev-mode, tell the user how to get logs @@ -34364,7 +36351,7 @@ var getLogger = function getLogger(scope) { var enable = function enable() { var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "".concat(BASE_SCOPE, ":*"); - return debug__WEBPACK_IMPORTED_MODULE_0___default.a.enable(scope); + return _debugLib_index_js__WEBPACK_IMPORTED_MODULE_0__["default"].enable(scope); }; /** * @method disable @@ -34373,7 +36360,7 @@ var enable = function enable() { */ var disable = function disable() { - return debug__WEBPACK_IMPORTED_MODULE_0___default.a.disable(); + return _debugLib_index_js__WEBPACK_IMPORTED_MODULE_0__["default"].disable(); }; /***/ }), @@ -34817,10 +36804,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ "./events.js"); /* harmony import */ var _externalModules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../externalModules.js */ "./externalModules.js"); /* harmony import */ var _stateManagement_toolState_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../stateManagement/toolState.js */ "./stateManagement/toolState.js"); -/* harmony import */ var _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../requestPool/requestPoolManager.js */ "./requestPool/requestPoolManager.js"); -/* harmony import */ var _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../stateManagement/loadHandlerManager.js */ "./stateManagement/loadHandlerManager.js"); -/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/triggerEvent.js */ "./util/triggerEvent.js"); - +/* harmony import */ var _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stateManagement/loadHandlerManager.js */ "./stateManagement/loadHandlerManager.js"); +/* harmony import */ var _util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/triggerEvent.js */ "./util/triggerEvent.js"); @@ -34861,9 +36846,9 @@ __webpack_require__.r(__webpack_exports__); newImageIdIndex += stackData.imageIds.length; } - var startLoadingHandler = _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_4__["default"].getStartLoadHandler(element); - var endLoadingHandler = _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_4__["default"].getEndLoadHandler(element); - var errorLoadingHandler = _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_4__["default"].getErrorLoadingHandler(element); + var startLoadingHandler = _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_3__["default"].getStartLoadHandler(element); + var endLoadingHandler = _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_3__["default"].getEndLoadHandler(element); + var errorLoadingHandler = _stateManagement_loadHandlerManager_js__WEBPACK_IMPORTED_MODULE_3__["default"].getErrorLoadingHandler(element); function doneCallback(image) { if (stackData.currentImageIdIndex !== newImageIdIndex) { @@ -34934,10 +36919,8 @@ __webpack_require__.r(__webpack_exports__); imagePromise = cornerstone.loadAndCacheImage(newImageId); } - imagePromise.then(doneCallback, failCallback); // Make sure we kick off any changed download request pools - - _requestPool_requestPoolManager_js__WEBPACK_IMPORTED_MODULE_3__["default"].startGrabbing(); - Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].STACK_SCROLL, eventData); + imagePromise.then(doneCallback, failCallback); + Object(_util_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element, _events_js__WEBPACK_IMPORTED_MODULE_0__["default"].STACK_SCROLL, eventData); }); /***/ }), @@ -36244,6 +38227,28 @@ function triggerEvent(el, type) { /***/ }), +/***/ "./util/uuidv4.js": +/*!************************!*\ + !*** ./util/uuidv4.js ***! + \************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return uuidv4; }); +function uuidv4() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0; // eslint-disable-line no-bitwise + + var v = c === 'x' ? r : r & 0x3 | 0x8; // eslint-disable-line no-bitwise + + return v.toString(16); + }); +} + +/***/ }), + /***/ "./util/wait.js": /*!**********************!*\ !*** ./util/wait.js ***! @@ -36421,7 +38426,7 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ('4.0.0-beta6'); +/* harmony default export */ __webpack_exports__["default"] = ('6.0.9'); /***/ }) diff --git a/server/src/main/resources/static/dcm/cornerstoneWADOImageLoader.bundle.min.js b/server/src/main/resources/static/dcm/cornerstoneWADOImageLoader.bundle.min.js index e4f75363..c7c9dbf2 100644 --- a/server/src/main/resources/static/dcm/cornerstoneWADOImageLoader.bundle.min.js +++ b/server/src/main/resources/static/dcm/cornerstoneWADOImageLoader.bundle.min.js @@ -1,2 +1,2 @@ -!function(A,I){"object"==typeof exports&&"object"==typeof module?module.exports=I():"function"==typeof define&&define.amd?define("cornerstoneWADOImageLoader",[],I):"object"==typeof exports?exports.cornerstoneWADOImageLoader=I():A.cornerstoneWADOImageLoader=I()}(this,(function(){return(()=>{var A={6089:(A,I,g)=>{A.exports=g(7945)},4559:(A,I,g)=>{A.exports=g(9842)},6059:(A,I,g)=>{A.exports=g(3798)},9387:(A,I,g)=>{A.exports=g(2149)},7423:(A,I,g)=>{A.exports=g(6970)},2633:(A,I,g)=>{A.exports=g(2343)},6028:(A,I,g)=>{A.exports=g(671)},187:(A,I,g)=>{A.exports=g(7283)},1655:(A,I,g)=>{A.exports=g(2882)},1246:(A,I,g)=>{A.exports=g(8730)},2165:(A,I,g)=>{A.exports=g(569)},337:(A,I,g)=>{A.exports=g(3751)},2770:(A,I,g)=>{A.exports=g(1380)},1882:(A,I,g)=>{A.exports=g(6601)},7878:(A,I,g)=>{A.exports=g(8783)},1929:(A,I,g)=>{A.exports=g(3498)},2250:(A,I,g)=>{A.exports=g(4731)},1407:(A,I,g)=>{A.exports=g(3355)},6051:(A,I,g)=>{A.exports=g(4640)},6275:(A,I,g)=>{A.exports=g(846)},7830:(A,I,g)=>{A.exports=g(7686)},3091:(A,I,g)=>{A.exports=g(5681)},8355:(A,I,g)=>{A.exports=g(9863)},1082:(A,I,g)=>{A.exports=g(5723)},2475:(A,I,g)=>{A.exports=g(8887)},9719:(A,I,g)=>{A.exports=g(9009)},5534:(A,I,g)=>{A.exports=g(5213)},4215:(A,I,g)=>{A.exports=g(156)},6496:(A,I,g)=>{A.exports=g(7754)},7458:A=>{var I=function(A){"use strict";var I,g=Object.prototype,B=g.hasOwnProperty,Q="function"==typeof Symbol?Symbol:{},C=Q.iterator||"@@iterator",E=Q.asyncIterator||"@@asyncIterator",i=Q.toStringTag||"@@toStringTag";function o(A,I,g){return Object.defineProperty(A,I,{value:g,enumerable:!0,configurable:!0,writable:!0}),A[I]}try{o({},"")}catch(A){o=function(A,I,g){return A[I]=g}}function t(A,I,g,B){var Q=I&&I.prototype instanceof n?I:n,C=Object.create(Q.prototype),E=new M(B||[]);return C._invoke=function(A,I,g){var B=D;return function(Q,C){if(B===r)throw new Error("Generator is already running");if(B===e){if("throw"===Q)throw C;return L()}for(g.method=Q,g.arg=C;;){var E=g.delegate;if(E){var i=k(E,g);if(i){if(i===w)continue;return i}}if("next"===g.method)g.sent=g._sent=g.arg;else if("throw"===g.method){if(B===D)throw B=e,g.arg;g.dispatchException(g.arg)}else"return"===g.method&&g.abrupt("return",g.arg);B=r;var o=a(A,I,g);if("normal"===o.type){if(B=g.done?e:s,o.arg===w)continue;return{value:o.arg,done:g.done}}"throw"===o.type&&(B=e,g.method="throw",g.arg=o.arg)}}}(A,g,E),C}function a(A,I,g){try{return{type:"normal",arg:A.call(I,g)}}catch(A){return{type:"throw",arg:A}}}A.wrap=t;var D="suspendedStart",s="suspendedYield",r="executing",e="completed",w={};function n(){}function c(){}function h(){}var y={};o(y,C,(function(){return this}));var G=Object.getPrototypeOf,F=G&&G(G(H([])));F&&F!==g&&B.call(F,C)&&(y=F);var N=h.prototype=n.prototype=Object.create(y);function R(A){["next","throw","return"].forEach((function(I){o(A,I,(function(A){return this._invoke(I,A)}))}))}function S(A,I){function g(Q,C,E,i){var o=a(A[Q],A,C);if("throw"!==o.type){var t=o.arg,D=t.value;return D&&"object"==typeof D&&B.call(D,"__await")?I.resolve(D.__await).then((function(A){g("next",A,E,i)}),(function(A){g("throw",A,E,i)})):I.resolve(D).then((function(A){t.value=A,E(t)}),(function(A){return g("throw",A,E,i)}))}i(o.arg)}var Q;this._invoke=function(A,B){function C(){return new I((function(I,Q){g(A,B,I,Q)}))}return Q=Q?Q.then(C,C):C()}}function k(A,g){var B=A.iterator[g.method];if(B===I){if(g.delegate=null,"throw"===g.method){if(A.iterator.return&&(g.method="return",g.arg=I,k(A,g),"throw"===g.method))return w;g.method="throw",g.arg=new TypeError("The iterator does not provide a 'throw' method")}return w}var Q=a(B,A.iterator,g.arg);if("throw"===Q.type)return g.method="throw",g.arg=Q.arg,g.delegate=null,w;var C=Q.arg;return C?C.done?(g[A.resultName]=C.value,g.next=A.nextLoc,"return"!==g.method&&(g.method="next",g.arg=I),g.delegate=null,w):C:(g.method="throw",g.arg=new TypeError("iterator result is not an object"),g.delegate=null,w)}function U(A){var I={tryLoc:A[0]};1 in A&&(I.catchLoc=A[1]),2 in A&&(I.finallyLoc=A[2],I.afterLoc=A[3]),this.tryEntries.push(I)}function J(A){var I=A.completion||{};I.type="normal",delete I.arg,A.completion=I}function M(A){this.tryEntries=[{tryLoc:"root"}],A.forEach(U,this),this.reset(!0)}function H(A){if(A){var g=A[C];if(g)return g.call(A);if("function"==typeof A.next)return A;if(!isNaN(A.length)){var Q=-1,E=function g(){for(;++Q=0;--C){var E=this.tryEntries[C],i=E.completion;if("root"===E.tryLoc)return Q("end");if(E.tryLoc<=this.prev){var o=B.call(E,"catchLoc"),t=B.call(E,"finallyLoc");if(o&&t){if(this.prev=0;--g){var Q=this.tryEntries[g];if(Q.tryLoc<=this.prev&&B.call(Q,"finallyLoc")&&this.prev=0;--I){var g=this.tryEntries[I];if(g.finallyLoc===A)return this.complete(g.completion,g.afterLoc),J(g),w}},catch:function(A){for(var I=this.tryEntries.length-1;I>=0;--I){var g=this.tryEntries[I];if(g.tryLoc===A){var B=g.completion;if("throw"===B.type){var Q=B.arg;J(g)}return Q}}throw new Error("illegal catch attempt")},delegateYield:function(A,g,B){return this.delegate={iterator:H(A),resultName:g,nextLoc:B},"next"===this.method&&(this.arg=I),w}},A}(A.exports);try{regeneratorRuntime=I}catch(A){"object"==typeof globalThis?globalThis.regeneratorRuntime=I:Function("r","regeneratorRuntime = r")(I)}},2043:(A,I,g)=>{A.exports=g(7458)},5109:(A,I,g)=>{g(8109),g(2166);var B=g(9081);A.exports=B.Array.from},1316:(A,I,g)=>{g(9506);var B=g(9081);A.exports=B.Array.isArray},3641:(A,I,g)=>{g(3075);var B=g(2018);A.exports=B("Array").concat},646:(A,I,g)=>{g(8345);var B=g(2018);A.exports=B("Array").filter},3147:(A,I,g)=>{g(7670);var B=g(2018);A.exports=B("Array").includes},5197:(A,I,g)=>{g(194);var B=g(2018);A.exports=B("Array").indexOf},474:(A,I,g)=>{g(2478);var B=g(2018);A.exports=B("Array").map},1001:(A,I,g)=>{g(5313);var B=g(2018);A.exports=B("Array").slice},5587:(A,I,g)=>{g(4596);var B=g(2018);A.exports=B("Array").splice},3386:(A,I,g)=>{g(2228),g(8109);var B=g(5018);A.exports=B},7543:(A,I,g)=>{var B=g(3641),Q=Array.prototype;A.exports=function(A){var I=A.concat;return A===Q||A instanceof Array&&I===Q.concat?B:I}},3918:(A,I,g)=>{var B=g(646),Q=Array.prototype;A.exports=function(A){var I=A.filter;return A===Q||A instanceof Array&&I===Q.filter?B:I}},790:(A,I,g)=>{var B=g(6270),Q=RegExp.prototype;A.exports=function(A){return(A===Q||A instanceof RegExp)&&!("flags"in A)?B(A):A.flags}},9109:(A,I,g)=>{var B=g(3147),Q=g(5520),C=Array.prototype,E=String.prototype;A.exports=function(A){var I=A.includes;return A===C||A instanceof Array&&I===C.includes?B:"string"==typeof A||A===E||A instanceof String&&I===E.includes?Q:I}},4825:(A,I,g)=>{var B=g(5197),Q=Array.prototype;A.exports=function(A){var I=A.indexOf;return A===Q||A instanceof Array&&I===Q.indexOf?B:I}},238:(A,I,g)=>{var B=g(474),Q=Array.prototype;A.exports=function(A){var I=A.map;return A===Q||A instanceof Array&&I===Q.map?B:I}},1285:(A,I,g)=>{var B=g(1001),Q=Array.prototype;A.exports=function(A){var I=A.slice;return A===Q||A instanceof Array&&I===Q.slice?B:I}},7681:(A,I,g)=>{var B=g(5587),Q=Array.prototype;A.exports=function(A){var I=A.splice;return A===Q||A instanceof Array&&I===Q.splice?B:I}},8949:(A,I,g)=>{var B=g(9119),Q=String.prototype;A.exports=function(A){var I=A.trim;return"string"==typeof A||A===Q||A instanceof String&&I===Q.trim?B:I}},2529:(A,I,g)=>{g(8524);var B=g(9081);A.exports=B.Object.assign},6854:(A,I,g)=>{g(6764);var B=g(9081).Object,Q=A.exports=function(A,I,g){return B.defineProperty(A,I,g)};B.defineProperty.sham&&(Q.sham=!0)},1553:(A,I,g)=>{g(9398);var B=g(9081);A.exports=B.Object.entries},2744:(A,I,g)=>{g(554);var B=g(9081).Object,Q=A.exports=function(A,I){return B.getOwnPropertyDescriptor(A,I)};B.getOwnPropertyDescriptor.sham&&(Q.sham=!0)},6018:(A,I,g)=>{g(4267);var B=g(9081);A.exports=B.Object.getOwnPropertyDescriptors},5350:(A,I,g)=>{g(8318);var B=g(9081);A.exports=B.Object.getOwnPropertySymbols},8116:(A,I,g)=>{g(8390);var B=g(9081);A.exports=B.Object.keys},3140:(A,I,g)=>{g(1171);var B=g(9081);A.exports=B.Object.values},7281:(A,I,g)=>{g(6454),g(2228),g(2575),g(3658),g(4465),g(8359),g(5203),g(8109);var B=g(9081);A.exports=B.Promise},6270:(A,I,g)=>{g(8714);var B=g(4980);A.exports=function(A){return B.call(A)}},5520:(A,I,g)=>{g(688);var B=g(2018);A.exports=B("String").includes},9119:(A,I,g)=>{g(8217);var B=g(2018);A.exports=B("String").trim},1442:(A,I,g)=>{g(3075),g(2575),g(8318),g(5762),g(2181),g(8848),g(3719),g(2362),g(346),g(888),g(909),g(1992),g(8512),g(6165),g(6044),g(4676),g(263),g(3596),g(1227),g(6268);var B=g(9081);A.exports=B.Symbol},1190:(A,I,g)=>{g(2228),g(2575),g(8109),g(2362);var B=g(3379);A.exports=B.f("iterator")},4640:(A,I,g)=>{var B=g(7945);A.exports=B},846:(A,I,g)=>{var B=g(8010);A.exports=B},7686:(A,I,g)=>{var B=g(7922);A.exports=B},5681:(A,I,g)=>{var B=g(5838);A.exports=B},9863:(A,I,g)=>{var B=g(671);A.exports=B},5723:(A,I,g)=>{var B=g(8531);A.exports=B},8887:(A,I,g)=>{var B=g(6601);A.exports=B},9009:(A,I,g)=>{var B=g(8783);A.exports=B},5213:(A,I,g)=>{var B=g(4731);g(1152),g(8561),g(5543),g(8302),A.exports=B},156:(A,I,g)=>{var B=g(3355);g(8812),g(9085),g(7384),g(4719),g(2994),g(9431),g(4803),A.exports=B},7754:(A,I,g)=>{var B=g(6888);A.exports=B},9077:A=>{A.exports=function(A){if("function"!=typeof A)throw TypeError(String(A)+" is not a function");return A}},9154:(A,I,g)=>{var B=g(3359);A.exports=function(A){if(!B(A)&&null!==A)throw TypeError("Can't set "+String(A)+" as a prototype");return A}},7710:A=>{A.exports=function(){}},8792:A=>{A.exports=function(A,I,g){if(!(A instanceof I))throw TypeError("Incorrect "+(g?g+" ":"")+"invocation");return A}},1912:(A,I,g)=>{var B=g(3359);A.exports=function(A){if(!B(A))throw TypeError(String(A)+" is not an object");return A}},4746:(A,I,g)=>{"use strict";var B=g(7673),Q=g(2058),C=g(7647),E=g(6475),i=g(3746),o=g(409),t=g(5945),a=g(5018);A.exports=function(A){var I,g,D,s,r,e,w=Q(A),n="function"==typeof this?this:Array,c=arguments.length,h=c>1?arguments[1]:void 0,y=void 0!==h,G=a(w),F=0;if(y&&(h=B(h,c>2?arguments[2]:void 0,2)),null==G||n==Array&&E(G))for(g=new n(I=i(w.length));I>F;F++)e=y?h(w[F],F):w[F],o(g,F,e);else for(r=(s=t(w,G)).next,g=new n;!(D=r.call(s)).done;F++)e=y?C(s,h,[D.value,F],!0):D.value,o(g,F,e);return g.length=F,g}},7075:(A,I,g)=>{var B=g(3861),Q=g(3746),C=g(3055),E=function(A){return function(I,g,E){var i,o=B(I),t=Q(o.length),a=C(E,t);if(A&&g!=g){for(;t>a;)if((i=o[a++])!=i)return!0}else for(;t>a;a++)if((A||a in o)&&o[a]===g)return A||a||0;return!A&&-1}};A.exports={includes:E(!0),indexOf:E(!1)}},4206:(A,I,g)=>{var B=g(7673),Q=g(1251),C=g(2058),E=g(3746),i=g(8136),o=[].push,t=function(A){var I=1==A,g=2==A,t=3==A,a=4==A,D=6==A,s=7==A,r=5==A||D;return function(e,w,n,c){for(var h,y,G=C(e),F=Q(G),N=B(w,n,3),R=E(F.length),S=0,k=c||i,U=I?k(e,R):g||s?k(e,0):void 0;R>S;S++)if((r||S in F)&&(y=N(h=F[S],S,G),A))if(I)U[S]=y;else if(y)switch(A){case 3:return!0;case 5:return h;case 6:return S;case 2:o.call(U,h)}else switch(A){case 4:return!1;case 7:o.call(U,h)}return D?-1:t||a?a:U}};A.exports={forEach:t(0),map:t(1),filter:t(2),some:t(3),every:t(4),find:t(5),findIndex:t(6),filterReject:t(7)}},2143:(A,I,g)=>{var B=g(6530),Q=g(5712),C=g(8233),E=Q("species");A.exports=function(A){return C>=51||!B((function(){var I=[];return(I.constructor={})[E]=function(){return{foo:1}},1!==I[A](Boolean).foo}))}},6628:(A,I,g)=>{"use strict";var B=g(6530);A.exports=function(A,I){var g=[][A];return!!g&&B((function(){g.call(null,I||function(){throw 1},1)}))}},3400:(A,I,g)=>{var B=g(3359),Q=g(1054),C=g(5712)("species");A.exports=function(A){var I;return Q(A)&&("function"!=typeof(I=A.constructor)||I!==Array&&!Q(I.prototype)?B(I)&&null===(I=I[C])&&(I=void 0):I=void 0),void 0===I?Array:I}},8136:(A,I,g)=>{var B=g(3400);A.exports=function(A,I){return new(B(A))(0===I?0:I)}},7647:(A,I,g)=>{var B=g(1912),Q=g(309);A.exports=function(A,I,g,C){try{return C?I(B(g)[0],g[1]):I(g)}catch(I){Q(A,"throw",I)}}},8908:(A,I,g)=>{var B=g(5712)("iterator"),Q=!1;try{var C=0,E={next:function(){return{done:!!C++}},return:function(){Q=!0}};E[B]=function(){return this},Array.from(E,(function(){throw 2}))}catch(A){}A.exports=function(A,I){if(!I&&!Q)return!1;var g=!1;try{var C={};C[B]=function(){return{next:function(){return{done:g=!0}}}},A(C)}catch(A){}return g}},1570:A=>{var I={}.toString;A.exports=function(A){return I.call(A).slice(8,-1)}},7499:(A,I,g)=>{var B=g(8889),Q=g(1570),C=g(5712)("toStringTag"),E="Arguments"==Q(function(){return arguments}());A.exports=B?Q:function(A){var I,g,B;return void 0===A?"Undefined":null===A?"Null":"string"==typeof(g=function(A,I){try{return A[I]}catch(A){}}(I=Object(A),C))?g:E?Q(I):"Object"==(B=Q(I))&&"function"==typeof I.callee?"Arguments":B}},1722:(A,I,g)=>{var B=g(5712)("match");A.exports=function(A){var I=/./;try{"/./"[A](I)}catch(g){try{return I[B]=!1,"/./"[A](I)}catch(A){}}return!1}},872:(A,I,g)=>{var B=g(6530);A.exports=!B((function(){function A(){}return A.prototype.constructor=null,Object.getPrototypeOf(new A)!==A.prototype}))},8611:(A,I,g)=>{"use strict";var B=g(7300).IteratorPrototype,Q=g(2491),C=g(5595),E=g(6738),i=g(9418),o=function(){return this};A.exports=function(A,I,g){var t=I+" Iterator";return A.prototype=Q(B,{next:C(1,g)}),E(A,t,!1,!0),i[t]=o,A}},8518:(A,I,g)=>{var B=g(7001),Q=g(7550),C=g(5595);A.exports=B?function(A,I,g){return Q.f(A,I,C(1,g))}:function(A,I,g){return A[I]=g,A}},5595:A=>{A.exports=function(A,I){return{enumerable:!(1&A),configurable:!(2&A),writable:!(4&A),value:I}}},409:(A,I,g)=>{"use strict";var B=g(5623),Q=g(7550),C=g(5595);A.exports=function(A,I,g){var E=B(I);E in A?Q.f(A,E,C(0,g)):A[E]=g}},8277:(A,I,g)=>{"use strict";var B=g(390),Q=g(8611),C=g(2629),E=g(5255),i=g(6738),o=g(8518),t=g(9791),a=g(5712),D=g(8367),s=g(9418),r=g(7300),e=r.IteratorPrototype,w=r.BUGGY_SAFARI_ITERATORS,n=a("iterator"),c="keys",h="values",y="entries",G=function(){return this};A.exports=function(A,I,g,a,r,F,N){Q(g,I,a);var R,S,k,U=function(A){if(A===r&&Y)return Y;if(!w&&A in H)return H[A];switch(A){case c:case h:case y:return function(){return new g(this,A)}}return function(){return new g(this)}},J=I+" Iterator",M=!1,H=A.prototype,L=H[n]||H["@@iterator"]||r&&H[r],Y=!w&&L||U(r),l="Array"==I&&H.entries||L;if(l&&(R=C(l.call(new A)),e!==Object.prototype&&R.next&&(D||C(R)===e||(E?E(R,e):"function"!=typeof R[n]&&o(R,n,G)),i(R,J,!0,!0),D&&(s[J]=G))),r==h&&L&&L.name!==h&&(M=!0,Y=function(){return L.call(this)}),D&&!N||H[n]===Y||o(H,n,Y),s[I]=Y,r)if(S={values:U(h),keys:F?Y:U(c),entries:U(y)},N)for(k in S)(w||M||!(k in H))&&t(H,k,S[k]);else B({target:I,proto:!0,forced:w||M},S);return S}},1412:(A,I,g)=>{var B=g(9081),Q=g(6690),C=g(3379),E=g(7550).f;A.exports=function(A){var I=B.Symbol||(B.Symbol={});Q(I,A)||E(I,A,{value:C.f(A)})}},7001:(A,I,g)=>{var B=g(6530);A.exports=!B((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},231:(A,I,g)=>{var B=g(2868),Q=g(3359),C=B.document,E=Q(C)&&Q(C.createElement);A.exports=function(A){return E?C.createElement(A):{}}},315:A=>{A.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},6610:A=>{A.exports="object"==typeof window},6405:(A,I,g)=>{var B=g(6900),Q=g(2868);A.exports=/ipad|iphone|ipod/i.test(B)&&void 0!==Q.Pebble},6540:(A,I,g)=>{var B=g(6900);A.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(B)},6521:(A,I,g)=>{var B=g(1570),Q=g(2868);A.exports="process"==B(Q.process)},4010:(A,I,g)=>{var B=g(6900);A.exports=/web0s(?!.*chrome)/i.test(B)},6900:(A,I,g)=>{var B=g(8104);A.exports=B("navigator","userAgent")||""},8233:(A,I,g)=>{var B,Q,C=g(2868),E=g(6900),i=C.process,o=C.Deno,t=i&&i.versions||o&&o.version,a=t&&t.v8;a?Q=(B=a.split("."))[0]<4?1:B[0]+B[1]:E&&(!(B=E.match(/Edge\/(\d+)/))||B[1]>=74)&&(B=E.match(/Chrome\/(\d+)/))&&(Q=B[1]),A.exports=Q&&+Q},2018:(A,I,g)=>{var B=g(9081);A.exports=function(A){return B[A+"Prototype"]}},2712:A=>{A.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},390:(A,I,g)=>{"use strict";var B=g(2868),Q=g(5904).f,C=g(1011),E=g(9081),i=g(7673),o=g(8518),t=g(6690),a=function(A){var I=function(I,g,B){if(this instanceof A){switch(arguments.length){case 0:return new A;case 1:return new A(I);case 2:return new A(I,g)}return new A(I,g,B)}return A.apply(this,arguments)};return I.prototype=A.prototype,I};A.exports=function(A,I){var g,D,s,r,e,w,n,c,h=A.target,y=A.global,G=A.stat,F=A.proto,N=y?B:G?B[h]:(B[h]||{}).prototype,R=y?E:E[h]||o(E,h,{})[h],S=R.prototype;for(s in I)g=!C(y?s:h+(G?".":"#")+s,A.forced)&&N&&t(N,s),e=R[s],g&&(w=A.noTargetGet?(c=Q(N,s))&&c.value:N[s]),r=g&&w?w:I[s],g&&typeof e==typeof r||(n=A.bind&&g?i(r,B):A.wrap&&g?a(r):F&&"function"==typeof r?i(Function.call,r):r,(A.sham||r&&r.sham||e&&e.sham)&&o(n,"sham",!0),o(R,s,n),F&&(t(E,D=h+"Prototype")||o(E,D,{}),o(E[D],s,r),A.real&&S&&!S[s]&&o(S,s,r)))}},6530:A=>{A.exports=function(A){try{return!!A()}catch(A){return!0}}},7673:(A,I,g)=>{var B=g(9077);A.exports=function(A,I,g){if(B(A),void 0===I)return A;switch(g){case 0:return function(){return A.call(I)};case 1:return function(g){return A.call(I,g)};case 2:return function(g,B){return A.call(I,g,B)};case 3:return function(g,B,Q){return A.call(I,g,B,Q)}}return function(){return A.apply(I,arguments)}}},8104:(A,I,g)=>{var B=g(9081),Q=g(2868),C=function(A){return"function"==typeof A?A:void 0};A.exports=function(A,I){return arguments.length<2?C(B[A])||C(Q[A]):B[A]&&B[A][I]||Q[A]&&Q[A][I]}},5018:(A,I,g)=>{var B=g(7499),Q=g(9418),C=g(5712)("iterator");A.exports=function(A){if(null!=A)return A[C]||A["@@iterator"]||Q[B(A)]}},5945:(A,I,g)=>{var B=g(1912),Q=g(5018);A.exports=function(A,I){var g=arguments.length<2?Q(A):I;if("function"!=typeof g)throw TypeError(String(A)+" is not iterable");return B(g.call(A))}},2868:(A,I,g)=>{var B=function(A){return A&&A.Math==Math&&A};A.exports=B("object"==typeof globalThis&&globalThis)||B("object"==typeof window&&window)||B("object"==typeof self&&self)||B("object"==typeof g.g&&g.g)||function(){return this}()||Function("return this")()},6690:(A,I,g)=>{var B=g(2058),Q={}.hasOwnProperty;A.exports=Object.hasOwn||function(A,I){return Q.call(B(A),I)}},7048:A=>{A.exports={}},8471:(A,I,g)=>{var B=g(2868);A.exports=function(A,I){var g=B.console;g&&g.error&&(1===arguments.length?g.error(A):g.error(A,I))}},5644:(A,I,g)=>{var B=g(8104);A.exports=B("document","documentElement")},640:(A,I,g)=>{var B=g(7001),Q=g(6530),C=g(231);A.exports=!B&&!Q((function(){return 7!=Object.defineProperty(C("div"),"a",{get:function(){return 7}}).a}))},1251:(A,I,g)=>{var B=g(6530),Q=g(1570),C="".split;A.exports=B((function(){return!Object("z").propertyIsEnumerable(0)}))?function(A){return"String"==Q(A)?C.call(A,""):Object(A)}:Object},1494:(A,I,g)=>{var B=g(2656),Q=Function.toString;"function"!=typeof B.inspectSource&&(B.inspectSource=function(A){return Q.call(A)}),A.exports=B.inspectSource},5875:(A,I,g)=>{var B,Q,C,E=g(2297),i=g(2868),o=g(3359),t=g(8518),a=g(6690),D=g(2656),s=g(5039),r=g(7048),e="Object already initialized",w=i.WeakMap;if(E||D.state){var n=D.state||(D.state=new w),c=n.get,h=n.has,y=n.set;B=function(A,I){if(h.call(n,A))throw new TypeError(e);return I.facade=A,y.call(n,A,I),I},Q=function(A){return c.call(n,A)||{}},C=function(A){return h.call(n,A)}}else{var G=s("state");r[G]=!0,B=function(A,I){if(a(A,G))throw new TypeError(e);return I.facade=A,t(A,G,I),I},Q=function(A){return a(A,G)?A[G]:{}},C=function(A){return a(A,G)}}A.exports={set:B,get:Q,has:C,enforce:function(A){return C(A)?Q(A):B(A,{})},getterFor:function(A){return function(I){var g;if(!o(I)||(g=Q(I)).type!==A)throw TypeError("Incompatible receiver, "+A+" required");return g}}}},6475:(A,I,g)=>{var B=g(5712),Q=g(9418),C=B("iterator"),E=Array.prototype;A.exports=function(A){return void 0!==A&&(Q.Array===A||E[C]===A)}},1054:(A,I,g)=>{var B=g(1570);A.exports=Array.isArray||function(A){return"Array"==B(A)}},1011:(A,I,g)=>{var B=g(6530),Q=/#|\.prototype\./,C=function(A,I){var g=i[E(A)];return g==t||g!=o&&("function"==typeof I?B(I):!!I)},E=C.normalize=function(A){return String(A).replace(Q,".").toLowerCase()},i=C.data={},o=C.NATIVE="N",t=C.POLYFILL="P";A.exports=C},3359:A=>{A.exports=function(A){return"object"==typeof A?null!==A:"function"==typeof A}},8367:A=>{A.exports=!0},6858:(A,I,g)=>{var B=g(3359),Q=g(1570),C=g(5712)("match");A.exports=function(A){var I;return B(A)&&(void 0!==(I=A[C])?!!I:"RegExp"==Q(A))}},1149:(A,I,g)=>{var B=g(8104),Q=g(6046);A.exports=Q?function(A){return"symbol"==typeof A}:function(A){var I=B("Symbol");return"function"==typeof I&&Object(A)instanceof I}},3906:(A,I,g)=>{var B=g(1912),Q=g(6475),C=g(3746),E=g(7673),i=g(5945),o=g(5018),t=g(309),a=function(A,I){this.stopped=A,this.result=I};A.exports=function(A,I,g){var D,s,r,e,w,n,c,h=g&&g.that,y=!(!g||!g.AS_ENTRIES),G=!(!g||!g.IS_ITERATOR),F=!(!g||!g.INTERRUPTED),N=E(I,h,1+y+F),R=function(A){return D&&t(D,"normal",A),new a(!0,A)},S=function(A){return y?(B(A),F?N(A[0],A[1],R):N(A[0],A[1])):F?N(A,R):N(A)};if(G)D=A;else{if("function"!=typeof(s=o(A)))throw TypeError("Target is not iterable");if(Q(s)){for(r=0,e=C(A.length);e>r;r++)if((w=S(A[r]))&&w instanceof a)return w;return new a(!1)}D=i(A,s)}for(n=D.next;!(c=n.call(D)).done;){try{w=S(c.value)}catch(A){t(D,"throw",A)}if("object"==typeof w&&w&&w instanceof a)return w}return new a(!1)}},309:(A,I,g)=>{var B=g(1912);A.exports=function(A,I,g){var Q,C;B(A);try{if(void 0===(Q=A.return)){if("throw"===I)throw g;return g}Q=Q.call(A)}catch(A){C=!0,Q=A}if("throw"===I)throw g;if(C)throw Q;return B(Q),g}},7300:(A,I,g)=>{"use strict";var B,Q,C,E=g(6530),i=g(2629),o=g(8518),t=g(6690),a=g(5712),D=g(8367),s=a("iterator"),r=!1;[].keys&&("next"in(C=[].keys())?(Q=i(i(C)))!==Object.prototype&&(B=Q):r=!0);var e=null==B||E((function(){var A={};return B[s].call(A)!==A}));e&&(B={}),D&&!e||t(B,s)||o(B,s,(function(){return this})),A.exports={IteratorPrototype:B,BUGGY_SAFARI_ITERATORS:r}},9418:A=>{A.exports={}},8054:(A,I,g)=>{var B,Q,C,E,i,o,t,a,D=g(2868),s=g(5904).f,r=g(6569).set,e=g(6540),w=g(6405),n=g(4010),c=g(6521),h=D.MutationObserver||D.WebKitMutationObserver,y=D.document,G=D.process,F=D.Promise,N=s(D,"queueMicrotask"),R=N&&N.value;R||(B=function(){var A,I;for(c&&(A=G.domain)&&A.exit();Q;){I=Q.fn,Q=Q.next;try{I()}catch(A){throw Q?E():C=void 0,A}}C=void 0,A&&A.enter()},e||c||n||!h||!y?!w&&F&&F.resolve?((t=F.resolve(void 0)).constructor=F,a=t.then,E=function(){a.call(t,B)}):E=c?function(){G.nextTick(B)}:function(){r.call(D,B)}:(i=!0,o=y.createTextNode(""),new h(B).observe(o,{characterData:!0}),E=function(){o.data=i=!i})),A.exports=R||function(A){var I={fn:A,next:void 0};C&&(C.next=I),Q||(Q=I,E()),C=I}},3104:(A,I,g)=>{var B=g(2868);A.exports=B.Promise},3216:(A,I,g)=>{var B=g(8233),Q=g(6530);A.exports=!!Object.getOwnPropertySymbols&&!Q((function(){var A=Symbol();return!String(A)||!(Object(A)instanceof Symbol)||!Symbol.sham&&B&&B<41}))},2297:(A,I,g)=>{var B=g(2868),Q=g(1494),C=B.WeakMap;A.exports="function"==typeof C&&/native code/.test(Q(C))},4130:(A,I,g)=>{"use strict";var B=g(9077),Q=function(A){var I,g;this.promise=new A((function(A,B){if(void 0!==I||void 0!==g)throw TypeError("Bad Promise constructor");I=A,g=B})),this.resolve=B(I),this.reject=B(g)};A.exports.f=function(A){return new Q(A)}},9611:(A,I,g)=>{var B=g(6858);A.exports=function(A){if(B(A))throw TypeError("The method doesn't accept regular expressions");return A}},3210:(A,I,g)=>{"use strict";var B=g(7001),Q=g(6530),C=g(461),E=g(3764),i=g(1156),o=g(2058),t=g(1251),a=Object.assign,D=Object.defineProperty;A.exports=!a||Q((function(){if(B&&1!==a({b:1},a(D({},"a",{enumerable:!0,get:function(){D(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var A={},I={},g=Symbol(),Q="abcdefghijklmnopqrst";return A[g]=7,Q.split("").forEach((function(A){I[A]=A})),7!=a({},A)[g]||C(a({},I)).join("")!=Q}))?function(A,I){for(var g=o(A),Q=arguments.length,a=1,D=E.f,s=i.f;Q>a;)for(var r,e=t(arguments[a++]),w=D?C(e).concat(D(e)):C(e),n=w.length,c=0;n>c;)r=w[c++],B&&!s.call(e,r)||(g[r]=e[r]);return g}:a},2491:(A,I,g)=>{var B,Q=g(1912),C=g(4686),E=g(2712),i=g(7048),o=g(5644),t=g(231),a=g(5039),D=a("IE_PROTO"),s=function(){},r=function(A){return" + diff --git a/server/src/main/resources/static/ofd/js/cnofd-view.js b/server/src/main/resources/static/ofd/js/cnofd-view.js index a94653a6..bf7eee00 100644 --- a/server/src/main/resources/static/ofd/js/cnofd-view.js +++ b/server/src/main/resources/static/ofd/js/cnofd-view.js @@ -53,6 +53,36 @@ window.onresize = function() { } (); }; + //监听整个页面的 copy 事件 +document.addEventListener('copy',function(event){ + let clipboardData = event.clipboardData || window.clipboardData; + if(!clipboardData) return; + + let text = window.getSelection().toString(); + + if(text){ + var copytext = text.replace(/\n|\r/g, ""); //去除换行符 + + if (window.clipboardData) { // Internet Explorer + window.clipboardData.setData ("Text", copytext); + } else { + var newdiv = document.createElement('div'); + newdiv.style.position='absolute'; + newdiv.style.left='-99999px'; + + var body_element = document.getElementsByTagName('body')[0]; + body_element.appendChild(newdiv); + newdiv.innerHTML = copytext; + + window.getSelection().selectAllChildren(newdiv); + + window.setTimeout(function() { + body_element.removeChild(newdiv); + },0); + } + } +}); + // 手机端,隐藏缩放比例选择框,打开文件和打印按钮 if (this.isMobile()) { if (document.getElementById("zoomSelect")) document.getElementById("zoomSelect").style.display = "none"; diff --git a/server/src/main/resources/static/ofd/js/cnofd.umd.min.js b/server/src/main/resources/static/ofd/js/cnofd.umd.min.js index 6331e8c6..9da19357 100644 --- a/server/src/main/resources/static/ofd/js/cnofd.umd.min.js +++ b/server/src/main/resources/static/ofd/js/cnofd.umd.min.js @@ -18,31 +18,32 @@ * */ (function(t, e) { - "object" === typeof exports && "object" === typeof module ? module.exports = e() : "function" === typeof define && define.amd ? define([], e) : "object" === typeof exports ? exports["cnofd"] = e() : t["cnofd"] = e() + "object" === typeof exports && "object" === typeof module ? module.exports = e() : "function" === typeof define && define.amd ? define([], e) : "object" === typeof exports ? exports["cnofd"] = e() : t["cnofd"] = e() } )("undefined" !== typeof self ? self : this, (function() { - return function(t) { + return function(t) { var e = {}; - function r(n) { + function r(n) { if (e[n]) return e[n].exports; var i = e[n] = { i: n, - l: !1, + l: !1, exports: {} }; return t[n].call(i.exports, i, i.exports, r), i.l = !0, i.exports - } - return r.m = t, - r.c = e, + } + return r.m = t, + r.c = e, r.d = function(t, e, n) { - r.o(t, e) || Object.defineProperty(t, e, { + r.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n }) - }, + } + , r.r = function(t) { "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: "Module" @@ -168,7 +169,7 @@ }, "0094": function(t, e, r) { "use strict"; - var n, i = r("da84"), o = r("e330"), a = r("6964"), s = r("f183"), c = r("6d61"), u = r("acac"), d = r("861d"), l = r("4fad"), f = r("69f3").enforce, h = r("7f9a"), p = !i.ActiveXObject && "ActiveXObject"in i, m = function(t) { + var n, i = r("da84"), o = r("e330"), a = r("6964"), s = r("f183"), c = r("6d61"), u = r("acac"), l = r("861d"), d = r("4fad"), f = r("69f3").enforce, h = r("7f9a"), p = !i.ActiveXObject && "ActiveXObject"in i, m = function(t) { return function() { return t(this, arguments.length ? arguments[0] : void 0) } @@ -177,40 +178,40 @@ n = u.getConstructor(m, "WeakMap", !0), s.enable(); var g = b.prototype - , y = o(g["delete"]) - , v = o(g.has) + , v = o(g["delete"]) + , y = o(g.has) , S = o(g.get) , w = o(g.set); a(g, { delete: function(t) { - if (d(t) && !l(t)) { + if (l(t) && !d(t)) { var e = f(this); return e.frozen || (e.frozen = new n), - y(this, t) || e.frozen["delete"](t) - } - return y(this, t) - }, - has: function(t) { - if (d(t) && !l(t)) { - var e = f(this); - return e.frozen || (e.frozen = new n), - v(this, t) || e.frozen.has(t) + v(this, t) || e.frozen["delete"](t) } return v(this, t) }, - get: function(t) { - if (d(t) && !l(t)) { + has: function(t) { + if (l(t) && !d(t)) { var e = f(this); return e.frozen || (e.frozen = new n), - v(this, t) ? S(this, t) : e.frozen.get(t) + y(this, t) || e.frozen.has(t) + } + return y(this, t) + }, + get: function(t) { + if (l(t) && !d(t)) { + var e = f(this); + return e.frozen || (e.frozen = new n), + y(this, t) ? S(this, t) : e.frozen.get(t) } return S(this, t) }, set: function(t, e) { - if (d(t) && !l(t)) { + if (l(t) && !d(t)) { var r = f(this); r.frozen || (r.frozen = new n), - v(this, t) ? w(this, t, e) : r.frozen.set(t, e) + y(this, t) ? w(this, t, e) : r.frozen.set(t, e) } else w(this, t, e); return this @@ -286,14 +287,14 @@ , s = r("fc6a") , c = r("a04b") , u = r("1a2d") - , d = r("0cfb") - , l = Object.getOwnPropertyDescriptor; - e.f = n ? l : function(t, e) { + , l = r("0cfb") + , d = Object.getOwnPropertyDescriptor; + e.f = n ? d : function(t, e) { if (t = s(t), e = c(e), - d) + l) try { - return l(t, e) + return d(t, e) } catch (r) {} if (u(t, e)) return a(!i(o.f, t, e), t[e]) @@ -406,19 +407,19 @@ , s = r("1d80") , c = n(a) , u = n("".slice) - , d = Math.ceil - , l = function(t) { + , l = Math.ceil + , d = function(t) { return function(e, r, n) { - var a, l, f = o(s(e)), h = i(r), p = f.length, m = void 0 === n ? " " : o(n); + var a, d, f = o(s(e)), h = i(r), p = f.length, m = void 0 === n ? " " : o(n); return h <= p || "" == m ? f : (a = h - p, - l = c(m, d(a / m.length)), - l.length > a && (l = u(l, 0, a)), - t ? f + l : l + f) + d = c(m, l(a / m.length)), + d.length > a && (d = u(d, 0, a)), + t ? f + d : d + f) } }; t.exports = { - start: l(!1), - end: l(!0) + start: d(!1), + end: d(!0) } }, "0cfb": function(t, e, r) { @@ -501,8 +502,8 @@ , s = r("5e77").CONFIGURABLE , c = r("8925") , u = r("69f3") - , d = u.enforce - , l = u.get + , l = u.enforce + , d = u.get , f = Object.defineProperty , h = a && !n((function() { return 8 !== f((function() {} @@ -532,13 +533,13 @@ } catch (i) {} } else t.prototype = void 0; - var n = d(t); + var n = l(t); return o(n, "source") || (n.source = p.join("string" == typeof e ? e : "")), t } ; Function.prototype.toString = m((function() { - return i(this) && l(this).source || c(this) + return i(this) && d(this).source || c(this) } ), "toString") }, @@ -616,7 +617,7 @@ var o = document.getElementById(r.watermark_parent_node) , s = o || document.body , c = Math.max(s.scrollWidth, s.clientWidth) - , l = Math.max(s.scrollHeight, s.clientHeight) + , d = Math.max(s.scrollHeight, s.clientHeight) , f = arguments[0] || {} , h = s , p = 0 @@ -637,21 +638,21 @@ g = "function" === typeof b.attachShadow ? b.attachShadow({ mode: "open" }) : b; - var y = s.children - , v = Math.floor(Math.random() * (y.length - 1)); - y[v] ? s.insertBefore(b, y[v]) : s.appendChild(b) + var v = s.children + , y = Math.floor(Math.random() * (v.length - 1)); + v[y] ? s.insertBefore(b, v[y]) : s.appendChild(b) } r.watermark_cols = parseInt((c - r.watermark_x) / (r.watermark_width + r.watermark_x_space) || 0); var S, w = parseInt((c - r.watermark_x - r.watermark_width * r.watermark_cols) / r.watermark_cols); r.watermark_x_space = w ? r.watermark_x_space : w, - r.watermark_rows = parseInt((l - r.watermark_y) / (r.watermark_height + r.watermark_y_space) || 0); - var C, _, A, I = parseInt((l - r.watermark_y - r.watermark_height * r.watermark_rows) / r.watermark_rows); + r.watermark_rows = parseInt((d - r.watermark_y) / (r.watermark_height + r.watermark_y_space) || 0); + var C, _, A, I = parseInt((d - r.watermark_y - r.watermark_height * r.watermark_rows) / r.watermark_rows); r.watermark_y_space = I ? r.watermark_y_space : I, o ? (S = r.watermark_x + r.watermark_width * r.watermark_cols + r.watermark_x_space * (r.watermark_cols - 1), C = r.watermark_y + r.watermark_height * r.watermark_rows + r.watermark_y_space * (r.watermark_rows - 1)) : (S = m + r.watermark_x + r.watermark_width * r.watermark_cols + r.watermark_x_space * (r.watermark_cols - 1), C = p + r.watermark_y + r.watermark_height * r.watermark_rows + r.watermark_y_space * (r.watermark_rows - 1)); for (var E = 0; E < r.watermark_rows; E++) { - A = o ? p + r.watermark_y + (l - C) / 2 + (r.watermark_y_space + r.watermark_height) * E : r.watermark_y + (l - C) / 2 + (r.watermark_y_space + r.watermark_height) * E; + A = o ? p + r.watermark_y + (d - C) / 2 + (r.watermark_y_space + r.watermark_height) * E : r.watermark_y + (d - C) / 2 + (r.watermark_y_space + r.watermark_height) * E; for (var T = 0; T < r.watermark_cols; T++) { _ = o ? m + r.watermark_x + (c - S) / 2 + (r.watermark_width + r.watermark_x_space) * T : r.watermark_x + (c - S) / 2 + (r.watermark_width + r.watermark_x_space) * T; var x = document.createElement("div") @@ -682,8 +683,8 @@ } } var k = void 0 === t.monitor ? r.monitor : t.monitor; - k && (u.observe(s, d), - u.observe(document.getElementById("wm_div_id").shadowRoot, d)) + k && (u.observe(s, l), + u.observe(document.getElementById("wm_div_id").shadowRoot, l)) } ; var i, o = function() { @@ -723,7 +724,7 @@ } , c = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver , u = new c(s) - , d = { + , l = { childList: !0, attributes: !0, subtree: !0 @@ -758,27 +759,27 @@ , r = a.f(e) , n = r.resolve , u = r.reject - , d = s((function() { + , l = s((function() { var r = o(e.resolve) , a = [] , s = 0 - , d = 1; + , l = 1; c(t, (function(t) { var o = s++ , c = !1; - d++, + l++, i(r, e, t).then((function(t) { c || (c = !0, a[o] = t, - --d || n(a)) + --l || n(a)) } ), u) } )), - --d || n(a) + --l || n(a) } )); - return d.error && u(d.value), + return l.error && u(l.value), r.promise } }) @@ -950,7 +951,7 @@ }, "1fb5": function(t, e, r) { "use strict"; - e.byteLength = d, + e.byteLength = l, e.toByteArray = f, e.fromByteArray = m; for (var n = [], i = [], o = "undefined" !== typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, c = a.length; s < c; ++s) @@ -965,27 +966,27 @@ var n = r === e ? 0 : 4 - r % 4; return [r, n] } - function d(t) { + function l(t) { var e = u(t) , r = e[0] , n = e[1]; return 3 * (r + n) / 4 - n } - function l(t, e, r) { + function d(t, e, r) { return 3 * (e + r) / 4 - r } function f(t) { - var e, r, n = u(t), a = n[0], s = n[1], c = new o(l(t, a, s)), d = 0, f = s > 0 ? a - 4 : a; + var e, r, n = u(t), a = n[0], s = n[1], c = new o(d(t, a, s)), l = 0, f = s > 0 ? a - 4 : a; for (r = 0; r < f; r += 4) e = i[t.charCodeAt(r)] << 18 | i[t.charCodeAt(r + 1)] << 12 | i[t.charCodeAt(r + 2)] << 6 | i[t.charCodeAt(r + 3)], - c[d++] = e >> 16 & 255, - c[d++] = e >> 8 & 255, - c[d++] = 255 & e; + c[l++] = e >> 16 & 255, + c[l++] = e >> 8 & 255, + c[l++] = 255 & e; return 2 === s && (e = i[t.charCodeAt(r)] << 2 | i[t.charCodeAt(r + 1)] >> 4, - c[d++] = 255 & e), + c[l++] = 255 & e), 1 === s && (e = i[t.charCodeAt(r)] << 10 | i[t.charCodeAt(r + 1)] << 4 | i[t.charCodeAt(r + 2)] >> 2, - c[d++] = e >> 8 & 255, - c[d++] = 255 & e), + c[l++] = e >> 8 & 255, + c[l++] = 255 & e), c } function h(t) { @@ -1019,8 +1020,8 @@ , s = r("0d51") , c = r("e95a") , u = r("07fa") - , d = r("3a9b") - , l = r("9a1f") + , l = r("3a9b") + , d = r("9a1f") , f = r("35a1") , h = r("2a62") , p = n.TypeError @@ -1030,7 +1031,7 @@ } , b = m.prototype; t.exports = function(t, e, r) { - var n, g, y, v, S, w, C, _ = r && r.that, A = !(!r || !r.AS_ENTRIES), I = !(!r || !r.IS_ITERATOR), E = !(!r || !r.INTERRUPTED), T = i(e, _), x = function(t) { + var n, g, v, y, S, w, C, _ = r && r.that, A = !(!r || !r.AS_ENTRIES), I = !(!r || !r.IS_ITERATOR), E = !(!r || !r.INTERRUPTED), T = i(e, _), x = function(t) { return n && h(n, "normal", t), new m(!0,t) }, P = function(t) { @@ -1044,14 +1045,14 @@ !g) throw p(s(t) + " is not iterable"); if (c(g)) { - for (y = 0, - v = u(t); v > y; y++) - if (S = P(t[y]), - S && d(b, S)) + for (v = 0, + y = u(t); y > v; v++) + if (S = P(t[v]), + S && l(b, S)) return S; return new m(!1) } - n = l(t, g) + n = d(t, g) } w = n.next; while (!(C = o(w, n)).done) { @@ -1060,7 +1061,7 @@ } catch (k) { h(n, "throw", k) } - if ("object" == typeof S && S && d(b, S)) + if ("object" == typeof S && S && l(b, S)) return S } return new m(!1) @@ -1092,21 +1093,21 @@ , c = r("e893") , u = r("94ca"); t.exports = function(t, e) { - var r, d, l, f, h, p, m = t.target, b = t.global, g = t.stat; - if (d = b ? n : g ? n[m] || s(m, {}) : (n[m] || {}).prototype, - d) - for (l in e) { - if (h = e[l], - t.noTargetGet ? (p = i(d, l), - f = p && p.value) : f = d[l], - r = u(b ? l : m + (g ? "." : "#") + l, t.forced), + var r, l, d, f, h, p, m = t.target, b = t.global, g = t.stat; + if (l = b ? n : g ? n[m] || s(m, {}) : (n[m] || {}).prototype, + l) + for (d in e) { + if (h = e[d], + t.noTargetGet ? (p = i(l, d), + f = p && p.value) : f = l[d], + r = u(b ? d : m + (g ? "." : "#") + d, t.forced), !r && void 0 !== f) { if (typeof h == typeof f) continue; c(h, f) } (t.sham || f && f.sham) && o(h, "sham", !0), - a(d, l, h, t) + a(l, d, h, t) } } }, @@ -1297,13 +1298,13 @@ , s = r("577e") , c = r("5a34") , u = r("1d80") - , d = r("ab13") - , l = r("c430") + , l = r("ab13") + , d = r("c430") , f = i("".startsWith) , h = i("".slice) , p = Math.min - , m = d("startsWith") - , b = !l && !m && !!function() { + , m = l("startsWith") + , b = !d && !m && !!function() { var t = o(String.prototype, "startsWith"); return t && !t.writable }(); @@ -1322,12 +1323,12 @@ }) }, "2cf4": function(t, e, r) { - var n, i, o, a, s = r("da84"), c = r("2ba4"), u = r("0366"), d = r("1626"), l = r("1a2d"), f = r("d039"), h = r("1be4"), p = r("f36a"), m = r("cc12"), b = r("d6d6"), g = r("1cdc"), y = r("605d"), v = s.setImmediate, S = s.clearImmediate, w = s.process, C = s.Dispatch, _ = s.Function, A = s.MessageChannel, I = s.String, E = 0, T = {}, x = "onreadystatechange"; + var n, i, o, a, s = r("da84"), c = r("2ba4"), u = r("0366"), l = r("1626"), d = r("1a2d"), f = r("d039"), h = r("1be4"), p = r("f36a"), m = r("cc12"), b = r("d6d6"), g = r("1cdc"), v = r("605d"), y = s.setImmediate, S = s.clearImmediate, w = s.process, C = s.Dispatch, _ = s.Function, A = s.MessageChannel, I = s.String, E = 0, T = {}, x = "onreadystatechange"; try { n = s.location } catch (R) {} var P = function(t) { - if (l(T, t)) { + if (d(T, t)) { var e = T[t]; delete T[t], e() @@ -1344,9 +1345,9 @@ , O = function(t) { s.postMessage(I(t), n.protocol + "//" + n.host) }; - v && S || (v = function(t) { + y && S || (y = function(t) { b(arguments.length, 1); - var e = d(t) ? t : _(t) + var e = l(t) ? t : _(t) , r = p(arguments, 1); return T[++E] = function() { c(e, void 0, r) @@ -1360,7 +1361,7 @@ delete T[t] } , - y ? i = function(t) { + v ? i = function(t) { w.nextTick(k(t)) } : C && C.now ? i = function(t) { @@ -1369,7 +1370,7 @@ : A && !g ? (o = new A, a = o.port2, o.port1.onmessage = D, - i = u(a.postMessage, a)) : s.addEventListener && d(s.postMessage) && !s.importScripts && n && "file:" !== n.protocol && !f(O) ? (i = O, + i = u(a.postMessage, a)) : s.addEventListener && l(s.postMessage) && !s.importScripts && n && "file:" !== n.protocol && !f(O) ? (i = O, s.addEventListener("message", D, !1)) : i = x in m("script") ? function(t) { h.appendChild(m("script"))[x] = function() { h.removeChild(this), @@ -1381,13 +1382,13 @@ } ), t.exports = { - set: v, + set: y, clear: S } }, "2d00": function(t, e, r) { - var n, i, o = r("da84"), a = r("342f"), s = o.process, c = o.Deno, u = s && s.versions || c && c.version, d = u && u.v8; - d && (n = d.split("."), + var n, i, o = r("da84"), a = r("342f"), s = o.process, c = o.Deno, u = s && s.versions || c && c.version, l = u && u.v8; + l && (n = l.split("."), i = n[0] > 0 && n[0] < 4 ? 1 : +(n[0] + n[1])), !i && a && (n = a.match(/Edge\/(\d+)/), (!n || n[1] >= 74) && (n = a.match(/Chrome\/(\d+)/), @@ -1530,7 +1531,7 @@ return t[e] = r } } - function d(t, e, r, n) { + function l(t, e, r, n) { var i = e && e.prototype instanceof h ? e : h , o = Object.create(i.prototype) , a = new I(n || []); @@ -1565,7 +1566,7 @@ } else "return" === r.method && r.abrupt("return", r.arg); n = "executing"; - var c = l(t, e, r); + var c = d(t, e, r); if ("normal" === c.type) { if (n = r.done ? "completed" : "suspendedYield", c.arg === f) @@ -1583,7 +1584,7 @@ }(t, r, a), o } - function l(t, e, r) { + function d(t, e, r) { try { return { type: "normal", @@ -1596,7 +1597,7 @@ } } } - t.wrap = d; + t.wrap = l; var f = {}; function h() {} function p() {} @@ -1607,9 +1608,9 @@ } )); var g = Object.getPrototypeOf - , y = g && g(g(E([]))); - y && y !== e && r.call(y, a) && (b = y); - var v = m.prototype = h.prototype = Object.create(b); + , v = g && g(g(E([]))); + v && v !== e && r.call(v, a) && (b = v); + var y = m.prototype = h.prototype = Object.create(b); function S(t) { ["next", "throw", "return"].forEach((function(e) { u(t, e, (function(t) { @@ -1621,10 +1622,10 @@ } function w(t, e) { function i(o, a, s, c) { - var u = l(t[o], t, a); + var u = d(t[o], t, a); if ("throw" !== u.type) { - var d = u.arg - , f = d.value; + var l = u.arg + , f = l.value; return f && "object" == n(f) && r.call(f, "__await") ? e.resolve(f.__await).then((function(t) { i("next", t, s, c) } @@ -1632,8 +1633,8 @@ i("throw", t, s, c) } )) : e.resolve(f).then((function(t) { - d.value = t, - s(d) + l.value = t, + s(l) } ), (function(t) { return i("throw", t, s, c) @@ -1668,7 +1669,7 @@ } return f } - var n = l(r, t.iterator, e.arg); + var n = d(r, t.iterator, e.arg); if ("throw" === n.type) return e.method = "throw", e.arg = n.arg, @@ -1740,7 +1741,7 @@ } } return p.prototype = m, - u(v, "constructor", m), + u(y, "constructor", m), u(m, "constructor", p), p.displayName = u(m, c, "GeneratorFunction"), t.isGeneratorFunction = function(t) { @@ -1751,7 +1752,7 @@ t.mark = function(t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, m) : (t.__proto__ = m, u(t, c, "GeneratorFunction")), - t.prototype = Object.create(v), + t.prototype = Object.create(y), t } , @@ -1769,20 +1770,20 @@ t.AsyncIterator = w, t.async = function(e, r, n, i, o) { void 0 === o && (o = Promise); - var a = new w(d(e, r, n, i),o); + var a = new w(l(e, r, n, i),o); return t.isGeneratorFunction(r) ? a : a.next().then((function(t) { return t.done ? t.value : a.next() } )) } , - S(v), - u(v, c, "Generator"), - u(v, a, (function() { + S(y), + u(y, c, "Generator"), + u(y, a, (function() { return this } )), - u(v, "toString", (function() { + u(y, "toString", (function() { return "[object Generator]" } )), @@ -2020,9 +2021,9 @@ , c = r("df75"); e.f = n && !i ? Object.defineProperties : function(t, e) { a(t); - var r, n = s(e), i = c(e), u = i.length, d = 0; - while (u > d) - o.f(t, r = i[d++], n[r]); + var r, n = s(e), i = c(e), u = i.length, l = 0; + while (u > l) + o.f(t, r = i[l++], n[r]); return t } }, @@ -2151,8 +2152,8 @@ 4002: function(t, e, r) { "use strict"; r("3ca3"); - var n, i = r("23e7"), o = r("83ab"), a = r("0d3b"), s = r("da84"), c = r("0366"), u = r("e330"), d = r("cb2d"), l = r("edd0"), f = r("19aa"), h = r("1a2d"), p = r("60da"), m = r("4df4"), b = r("4dae"), g = r("6547").codeAt, y = r("5fb2"), v = r("577e"), S = r("d44e"), w = r("d6d6"), C = r("5352"), _ = r("69f3"), A = _.set, I = _.getterFor("URL"), E = C.URLSearchParams, T = C.getState, x = s.URL, P = s.TypeError, k = s.parseInt, D = Math.floor, O = Math.pow, R = u("".charAt), N = u(/./.exec), M = u([].join), B = u(1..toString), F = u([].pop), j = u([].push), K = u("".replace), L = u([].shift), U = u("".split), X = u("".slice), z = u("".toLowerCase), G = u([].unshift), q = "Invalid authority", W = "Invalid scheme", V = "Invalid host", H = "Invalid port", Y = /[a-z]/i, Z = /[\d+-.a-z]/i, Q = /\d/, J = /^0x/i, $ = /^[0-7]+$/, tt = /^\d+$/, et = /^[\da-f]+$/i, rt = /[\0\t\n\r #%/:<>?@[\\\]^|]/, nt = /[\0\t\n\r #/:<>?@[\\\]^|]/, it = /^[\u0000-\u0020]+|[\u0000-\u0020]+$/g, ot = /[\t\n\r]/g, at = function(t) { - var e, r, n, i, o, a, s, c = U(t, "."); + var n, i = r("23e7"), o = r("83ab"), a = r("0d3b"), s = r("da84"), c = r("0366"), u = r("e330"), l = r("cb2d"), d = r("edd0"), f = r("19aa"), h = r("1a2d"), p = r("60da"), m = r("4df4"), b = r("4dae"), g = r("6547").codeAt, v = r("5fb2"), y = r("577e"), S = r("d44e"), w = r("d6d6"), C = r("5352"), _ = r("69f3"), A = _.set, I = _.getterFor("URL"), E = C.URLSearchParams, T = C.getState, x = s.URL, P = s.TypeError, k = s.parseInt, D = Math.floor, O = Math.pow, R = u("".charAt), M = u(/./.exec), N = u([].join), B = u(1..toString), F = u([].pop), j = u([].push), U = u("".replace), L = u([].shift), K = u("".split), X = u("".slice), z = u("".toLowerCase), G = u([].unshift), W = "Invalid authority", q = "Invalid scheme", H = "Invalid host", V = "Invalid port", Z = /[a-z]/i, Q = /[\d+-.a-z]/i, Y = /\d/, J = /^0x/i, $ = /^[0-7]+$/, tt = /^\d+$/, et = /^[\da-f]+$/i, rt = /[\0\t\n\r #%/:<>?@[\\\]^|]/, nt = /[\0\t\n\r #/:<>?@[\\\]^|]/, it = /^[\u0000-\u0020]+|[\u0000-\u0020]+$/g, ot = /[\t\n\r]/g, at = function(t) { + var e, r, n, i, o, a, s, c = K(t, "."); if (c.length && "" == c[c.length - 1] && c.length--, e = c.length, e > 4) @@ -2163,12 +2164,12 @@ "" == i) return t; if (o = 10, - i.length > 1 && "0" == R(i, 0) && (o = N(J, i) ? 16 : 8, + i.length > 1 && "0" == R(i, 0) && (o = M(J, i) ? 16 : 8, i = X(i, 8 == o ? 1 : 2)), "" === i) a = 0; else { - if (!N(10 == o ? tt : 8 == o ? $ : et, i)) + if (!M(10 == o ? tt : 8 == o ? $ : et, i)) return t; a = k(i, o) } @@ -2186,29 +2187,29 @@ s += r[n] * O(256, 3 - n); return s }, st = function(t) { - var e, r, n, i, o, a, s, c = [0, 0, 0, 0, 0, 0, 0, 0], u = 0, d = null, l = 0, f = function() { - return R(t, l) + var e, r, n, i, o, a, s, c = [0, 0, 0, 0, 0, 0, 0, 0], u = 0, l = null, d = 0, f = function() { + return R(t, d) }; if (":" == f()) { if (":" != R(t, 1)) return; - l += 2, + d += 2, u++, - d = u + l = u } while (f()) { if (8 == u) return; if (":" != f()) { e = r = 0; - while (r < 4 && N(et, f())) + while (r < 4 && M(et, f())) e = 16 * e + k(f(), 16), - l++, + d++, r++; if ("." == f()) { if (0 == r) return; - if (l -= r, + if (d -= r, u > 6) return; n = 0; @@ -2217,11 +2218,11 @@ n > 0) { if (!("." == f() && n < 4)) return; - l++ + d++ } - if (!N(Q, f())) + if (!M(Y, f())) return; - while (N(Q, f())) { + while (M(Y, f())) { if (o = k(f(), 10), null === i) i = o; @@ -2232,7 +2233,7 @@ } if (i > 255) return; - l++ + d++ } c[u] = 256 * c[u] + i, n++, @@ -2243,27 +2244,27 @@ break } if (":" == f()) { - if (l++, + if (d++, !f()) return } else if (f()) return; c[u++] = e } else { - if (null !== d) + if (null !== l) return; - l++, + d++, u++, - d = u + l = u } } - if (null !== d) { - a = u - d, + if (null !== l) { + a = u - l, u = 7; while (0 != u && a > 0) s = c[u], - c[u--] = c[d + a - 1], - c[d + --a] = s + c[u--] = c[l + a - 1], + c[l + --a] = s } else if (8 != u) return; return c @@ -2284,7 +2285,7 @@ r = 0; r < 4; r++) G(e, t % 256), t = D(t / 256); - return M(e, ".") + return N(e, ".") } if ("object" == typeof t) { for (e = "", @@ -2297,13 +2298,13 @@ return "[" + e + "]" } return t - }, dt = {}, lt = p({}, dt, { + }, lt = {}, dt = p({}, lt, { " ": 1, '"': 1, "<": 1, ">": 1, "`": 1 - }), ft = p({}, lt, { + }), ft = p({}, dt, { "#": 1, "?": 1, "{": 1, @@ -2331,24 +2332,24 @@ wss: 443 }, bt = function(t, e) { var r; - return 2 == t.length && N(Y, R(t, 0)) && (":" == (r = R(t, 1)) || !e && "|" == r) + return 2 == t.length && M(Z, R(t, 0)) && (":" == (r = R(t, 1)) || !e && "|" == r) }, gt = function(t) { var e; return t.length > 1 && bt(X(t, 0, 2)) && (2 == t.length || "/" === (e = R(t, 2)) || "\\" === e || "?" === e || "#" === e) - }, yt = function(t) { - return "." === t || "%2e" === z(t) }, vt = function(t) { + return "." === t || "%2e" === z(t) + }, yt = function(t) { return t = z(t), ".." === t || "%2e." === t || ".%2e" === t || "%2e%2e" === t - }, St = {}, wt = {}, Ct = {}, _t = {}, At = {}, It = {}, Et = {}, Tt = {}, xt = {}, Pt = {}, kt = {}, Dt = {}, Ot = {}, Rt = {}, Nt = {}, Mt = {}, Bt = {}, Ft = {}, jt = {}, Kt = {}, Lt = {}, Ut = function(t, e, r) { - var n, i, o, a = v(t); + }, St = {}, wt = {}, Ct = {}, _t = {}, At = {}, It = {}, Et = {}, Tt = {}, xt = {}, Pt = {}, kt = {}, Dt = {}, Ot = {}, Rt = {}, Mt = {}, Nt = {}, Bt = {}, Ft = {}, jt = {}, Ut = {}, Lt = {}, Kt = function(t, e, r) { + var n, i, o, a = y(t); if (e) { if (i = this.parse(a), i) throw P(i); this.searchParams = null } else { - if (void 0 !== r && (n = new Ut(r,!0)), + if (void 0 !== r && (n = new Kt(r,!0)), i = this.parse(a, null, n), i) throw P(i); @@ -2357,11 +2358,11 @@ this.searchParams = o } }; - Ut.prototype = { + Kt.prototype = { type: "URL", parse: function(t, e, r) { - var i, o, a, s, c = this, u = e || St, d = 0, l = "", f = !1, p = !1, g = !1; - t = v(t), + var i, o, a, s, c = this, u = e || St, l = 0, d = "", f = !1, p = !1, g = !1; + t = y(t), e || (c.scheme = "", c.username = "", c.password = "", @@ -2371,49 +2372,49 @@ c.query = null, c.fragment = null, c.cannotBeABaseURL = !1, - t = K(t, it, "")), - t = K(t, ot, ""), + t = U(t, it, "")), + t = U(t, ot, ""), i = m(t); - while (d <= i.length) { - switch (o = i[d], + while (l <= i.length) { + switch (o = i[l], u) { case St: - if (!o || !N(Y, o)) { + if (!o || !M(Z, o)) { if (e) - return W; + return q; u = Ct; continue } - l += z(o), + d += z(o), u = wt; break; case wt: - if (o && (N(Z, o) || "+" == o || "-" == o || "." == o)) - l += z(o); + if (o && (M(Q, o) || "+" == o || "-" == o || "." == o)) + d += z(o); else { if (":" != o) { if (e) - return W; - l = "", + return q; + d = "", u = Ct, - d = 0; + l = 0; continue } - if (e && (c.isSpecial() != h(mt, l) || "file" == l && (c.includesCredentials() || null !== c.port) || "file" == c.scheme && !c.host)) + if (e && (c.isSpecial() != h(mt, d) || "file" == d && (c.includesCredentials() || null !== c.port) || "file" == c.scheme && !c.host)) return; - if (c.scheme = l, + if (c.scheme = d, e) return void (c.isSpecial() && mt[c.scheme] == c.port && (c.port = null)); - l = "", - "file" == c.scheme ? u = Rt : c.isSpecial() && r && r.scheme == c.scheme ? u = _t : c.isSpecial() ? u = Tt : "/" == i[d + 1] ? (u = At, - d++) : (c.cannotBeABaseURL = !0, + d = "", + "file" == c.scheme ? u = Rt : c.isSpecial() && r && r.scheme == c.scheme ? u = _t : c.isSpecial() ? u = Tt : "/" == i[l + 1] ? (u = At, + l++) : (c.cannotBeABaseURL = !0, j(c.path, ""), u = jt) } break; case Ct: if (!r || r.cannotBeABaseURL && "#" != o) - return W; + return q; if (r.cannotBeABaseURL && "#" == o) { c.scheme = r.scheme, c.path = b(r.path), @@ -2426,12 +2427,12 @@ u = "file" == r.scheme ? Rt : It; continue; case _t: - if ("/" != o || "/" != i[d + 1]) { + if ("/" != o || "/" != i[l + 1]) { u = It; continue } u = xt, - d++; + l++; break; case At: if ("/" == o) { @@ -2458,7 +2459,7 @@ c.port = r.port, c.path = b(r.path), c.query = "", - u = Kt; + u = Ut; else { if ("#" != o) { c.username = r.username, @@ -2496,9 +2497,9 @@ break; case Tt: if (u = xt, - "/" != o || "/" != R(l, d + 1)) + "/" != o || "/" != R(d, l + 1)) continue; - d++; + l++; break; case xt: if ("/" != o && "\\" != o) { @@ -2508,85 +2509,85 @@ break; case Pt: if ("@" == o) { - f && (l = "%40" + l), + f && (d = "%40" + d), f = !0, - a = m(l); - for (var y = 0; y < a.length; y++) { - var S = a[y]; + a = m(d); + for (var v = 0; v < a.length; v++) { + var S = a[v]; if (":" != S || g) { var w = pt(S, ht); g ? c.password += w : c.username += w } else g = !0 } - l = "" + d = "" } else if (o == n || "/" == o || "?" == o || "#" == o || "\\" == o && c.isSpecial()) { - if (f && "" == l) - return q; - d -= m(l).length + 1, - l = "", + if (f && "" == d) + return W; + l -= m(d).length + 1, + d = "", u = kt } else - l += o; + d += o; break; case kt: case Dt: if (e && "file" == c.scheme) { - u = Mt; + u = Nt; continue } if (":" != o || p) { if (o == n || "/" == o || "?" == o || "#" == o || "\\" == o && c.isSpecial()) { - if (c.isSpecial() && "" == l) - return V; - if (e && "" == l && (c.includesCredentials() || null !== c.port)) + if (c.isSpecial() && "" == d) + return H; + if (e && "" == d && (c.includesCredentials() || null !== c.port)) return; - if (s = c.parseHost(l), + if (s = c.parseHost(d), s) return s; - if (l = "", + if (d = "", u = Bt, e) return; continue } "[" == o ? p = !0 : "]" == o && (p = !1), - l += o + d += o } else { - if ("" == l) - return V; - if (s = c.parseHost(l), + if ("" == d) + return H; + if (s = c.parseHost(d), s) return s; - if (l = "", + if (d = "", u = Ot, e == Dt) return } break; case Ot: - if (!N(Q, o)) { + if (!M(Y, o)) { if (o == n || "/" == o || "?" == o || "#" == o || "\\" == o && c.isSpecial() || e) { - if ("" != l) { - var C = k(l, 10); + if ("" != d) { + var C = k(d, 10); if (C > 65535) - return H; + return V; c.port = c.isSpecial() && C === mt[c.scheme] ? null : C, - l = "" + d = "" } if (e) return; u = Bt; continue } - return H + return V } - l += o; + d += o; break; case Rt: if (c.scheme = "file", "/" == o || "\\" == o) - u = Nt; + u = Mt; else { if (!r || "file" != r.scheme) { u = Ft; @@ -2600,10 +2601,10 @@ c.host = r.host, c.path = b(r.path), c.query = "", - u = Kt; + u = Ut; else { if ("#" != o) { - gt(M(b(i, d), "")) || (c.host = r.host, + gt(N(b(i, l), "")) || (c.host = r.host, c.path = b(r.path), c.shortenPath()), u = Ft; @@ -2617,36 +2618,36 @@ } } break; - case Nt: + case Mt: if ("/" == o || "\\" == o) { - u = Mt; + u = Nt; break } - r && "file" == r.scheme && !gt(M(b(i, d), "")) && (bt(r.path[0], !0) ? j(c.path, r.path[0]) : c.host = r.host), + r && "file" == r.scheme && !gt(N(b(i, l), "")) && (bt(r.path[0], !0) ? j(c.path, r.path[0]) : c.host = r.host), u = Ft; continue; - case Mt: + case Nt: if (o == n || "/" == o || "\\" == o || "?" == o || "#" == o) { - if (!e && bt(l)) + if (!e && bt(d)) u = Ft; - else if ("" == l) { + else if ("" == d) { if (c.host = "", e) return; u = Bt } else { - if (s = c.parseHost(l), + if (s = c.parseHost(d), s) return s; if ("localhost" == c.host && (c.host = ""), e) return; - l = "", + d = "", u = Bt } continue } - l += o; + d += o; break; case Bt: if (c.isSpecial()) { @@ -2663,64 +2664,64 @@ u = Lt; else c.query = "", - u = Kt; + u = Ut; break; case Ft: if (o == n || "/" == o || "\\" == o && c.isSpecial() || !e && ("?" == o || "#" == o)) { - if (vt(l) ? (c.shortenPath(), - "/" == o || "\\" == o && c.isSpecial() || j(c.path, "")) : yt(l) ? "/" == o || "\\" == o && c.isSpecial() || j(c.path, "") : ("file" == c.scheme && !c.path.length && bt(l) && (c.host && (c.host = ""), - l = R(l, 0) + ":"), - j(c.path, l)), - l = "", + if (yt(d) ? (c.shortenPath(), + "/" == o || "\\" == o && c.isSpecial() || j(c.path, "")) : vt(d) ? "/" == o || "\\" == o && c.isSpecial() || j(c.path, "") : ("file" == c.scheme && !c.path.length && bt(d) && (c.host && (c.host = ""), + d = R(d, 0) + ":"), + j(c.path, d)), + d = "", "file" == c.scheme && (o == n || "?" == o || "#" == o)) while (c.path.length > 1 && "" === c.path[0]) L(c.path); "?" == o ? (c.query = "", - u = Kt) : "#" == o && (c.fragment = "", + u = Ut) : "#" == o && (c.fragment = "", u = Lt) } else - l += pt(o, ft); + d += pt(o, ft); break; case jt: "?" == o ? (c.query = "", - u = Kt) : "#" == o ? (c.fragment = "", - u = Lt) : o != n && (c.path[0] += pt(o, dt)); + u = Ut) : "#" == o ? (c.fragment = "", + u = Lt) : o != n && (c.path[0] += pt(o, lt)); break; - case Kt: - e || "#" != o ? o != n && ("'" == o && c.isSpecial() ? c.query += "%27" : c.query += "#" == o ? "%23" : pt(o, dt)) : (c.fragment = "", + case Ut: + e || "#" != o ? o != n && ("'" == o && c.isSpecial() ? c.query += "%27" : c.query += "#" == o ? "%23" : pt(o, lt)) : (c.fragment = "", u = Lt); break; case Lt: - o != n && (c.fragment += pt(o, lt)); + o != n && (c.fragment += pt(o, dt)); break } - d++ + l++ } }, parseHost: function(t) { var e, r, n; if ("[" == R(t, 0)) { if ("]" != R(t, t.length - 1)) - return V; + return H; if (e = st(X(t, 1, -1)), !e) - return V; + return H; this.host = e } else if (this.isSpecial()) { - if (t = y(t), - N(rt, t)) - return V; + if (t = v(t), + M(rt, t)) + return H; if (e = at(t), null === e) - return V; + return H; this.host = e } else { - if (N(nt, t)) - return V; + if (M(nt, t)) + return H; for (e = "", r = m(t), n = 0; n < r.length; n++) - e += pt(r[n], dt); + e += pt(r[n], lt); this.host = e } }, @@ -2753,7 +2754,7 @@ t.includesCredentials() && (u += r + (n ? ":" + n : "") + "@"), u += ut(i), null !== o && (u += ":" + o)) : "file" == e && (u += "//"), - u += t.cannotBeABaseURL ? a[0] : a.length ? "/" + M(a, "/") : "", + u += t.cannotBeABaseURL ? a[0] : a.length ? "/" + N(a, "/") : "", null !== s && (u += "?" + s), null !== c && (u += "#" + c), u @@ -2779,13 +2780,13 @@ return this.scheme + ":" }, setProtocol: function(t) { - this.parse(v(t) + ":", St) + this.parse(y(t) + ":", St) }, getUsername: function() { return this.username }, setUsername: function(t) { - var e = m(v(t)); + var e = m(y(t)); if (!this.cannotHaveUsernamePasswordPort()) { this.username = ""; for (var r = 0; r < e.length; r++) @@ -2796,7 +2797,7 @@ return this.password }, setPassword: function(t) { - var e = m(v(t)); + var e = m(y(t)); if (!this.cannotHaveUsernamePasswordPort()) { this.password = ""; for (var r = 0; r < e.length; r++) @@ -2820,15 +2821,15 @@ }, getPort: function() { var t = this.port; - return null === t ? "" : v(t) + return null === t ? "" : y(t) }, setPort: function(t) { - this.cannotHaveUsernamePasswordPort() || (t = v(t), + this.cannotHaveUsernamePasswordPort() || (t = y(t), "" == t ? this.port = null : this.parse(t, Ot)) }, getPathname: function() { var t = this.path; - return this.cannotBeABaseURL ? t[0] : t.length ? "/" + M(t, "/") : "" + return this.cannotBeABaseURL ? t[0] : t.length ? "/" + N(t, "/") : "" }, setPathname: function(t) { this.cannotBeABaseURL || (this.path = [], @@ -2839,10 +2840,10 @@ return t ? "?" + t : "" }, setSearch: function(t) { - t = v(t), + t = y(t), "" == t ? this.query = null : ("?" == R(t, 0) && (t = X(t, 1)), this.query = "", - this.parse(t, Kt)), + this.parse(t, Ut)), this.searchParams.update() }, getSearchParams: function() { @@ -2853,7 +2854,7 @@ return t ? "#" + t : "" }, setHash: function(t) { - t = v(t), + t = y(t), "" != t ? ("#" == R(t, 0) && (t = X(t, 1)), this.fragment = "", this.parse(t, Lt)) : this.fragment = null @@ -2865,7 +2866,7 @@ var Xt = function(t) { var e = f(this, zt) , r = w(arguments.length, 1) > 1 ? arguments[1] : void 0 - , n = A(e, new Ut(t,!1,r)); + , n = A(e, new Kt(t,!1,r)); o || (e.href = n.serialize(), e.origin = n.getOrigin(), e.protocol = n.getProtocol(), @@ -2893,35 +2894,35 @@ enumerable: !0 } }; - if (o && (l(zt, "href", Gt("serialize", "setHref")), - l(zt, "origin", Gt("getOrigin")), - l(zt, "protocol", Gt("getProtocol", "setProtocol")), - l(zt, "username", Gt("getUsername", "setUsername")), - l(zt, "password", Gt("getPassword", "setPassword")), - l(zt, "host", Gt("getHost", "setHost")), - l(zt, "hostname", Gt("getHostname", "setHostname")), - l(zt, "port", Gt("getPort", "setPort")), - l(zt, "pathname", Gt("getPathname", "setPathname")), - l(zt, "search", Gt("getSearch", "setSearch")), - l(zt, "searchParams", Gt("getSearchParams")), - l(zt, "hash", Gt("getHash", "setHash"))), - d(zt, "toJSON", (function() { + if (o && (d(zt, "href", Gt("serialize", "setHref")), + d(zt, "origin", Gt("getOrigin")), + d(zt, "protocol", Gt("getProtocol", "setProtocol")), + d(zt, "username", Gt("getUsername", "setUsername")), + d(zt, "password", Gt("getPassword", "setPassword")), + d(zt, "host", Gt("getHost", "setHost")), + d(zt, "hostname", Gt("getHostname", "setHostname")), + d(zt, "port", Gt("getPort", "setPort")), + d(zt, "pathname", Gt("getPathname", "setPathname")), + d(zt, "search", Gt("getSearch", "setSearch")), + d(zt, "searchParams", Gt("getSearchParams")), + d(zt, "hash", Gt("getHash", "setHash"))), + l(zt, "toJSON", (function() { return I(this).serialize() } ), { enumerable: !0 }), - d(zt, "toString", (function() { + l(zt, "toString", (function() { return I(this).serialize() } ), { enumerable: !0 }), x) { - var qt = x.createObjectURL - , Wt = x.revokeObjectURL; - qt && d(Xt, "createObjectURL", c(qt, x)), - Wt && d(Xt, "revokeObjectURL", c(Wt, x)) + var Wt = x.createObjectURL + , qt = x.revokeObjectURL; + Wt && l(Xt, "createObjectURL", c(Wt, x)), + qt && l(Xt, "revokeObjectURL", c(qt, x)) } S(Xt, "URL"), i({ @@ -3047,8 +3048,8 @@ , s = r("8925") , c = r("b622") , u = r("6069") - , d = r("c430") - , l = r("2d00") + , l = r("c430") + , d = r("2d00") , f = i && i.prototype , h = c("species") , p = !1 @@ -3056,11 +3057,11 @@ , b = a("Promise", (function() { var t = s(i) , e = t !== String(i); - if (!e && 66 === l) + if (!e && 66 === d) return !0; - if (d && (!f["catch"] || !f["finally"])) + if (l && (!f["catch"] || !f["finally"])) return !0; - if (l >= 51 && /native code/.test(t)) + if (d >= 51 && /native code/.test(t)) return !1; var r = new i((function(t) { t(1) @@ -3154,12 +3155,12 @@ n in e ? r[n] = c(t[n], e[n]) : n in t && (r[n] = c(void 0, t[n])) } )); - var d = i.concat(o).concat(a).concat(s) - , l = Object.keys(t).concat(Object.keys(e)).filter((function(t) { - return -1 === d.indexOf(t) + var l = i.concat(o).concat(a).concat(s) + , d = Object.keys(t).concat(Object.keys(e)).filter((function(t) { + return -1 === l.indexOf(t) } )); - return n.forEach(l, u), + return n.forEach(d, u), r } }, @@ -3169,16 +3170,16 @@ , o = r("07fa") , a = function(t) { return function(e, r, a) { - var s, c = n(e), u = o(c), d = i(a, u); + var s, c = n(e), u = o(c), l = i(a, u); if (t && r != r) { - while (u > d) - if (s = c[d++], + while (u > l) + if (s = c[l++], s != s) return !0 } else - for (; u > d; d++) - if ((t || d in c) && c[d] === r) - return t || d || 0; + for (; u > l; l++) + if ((t || l in c) && c[l] === r) + return t || l || 0; return !t && -1 } }; @@ -3210,11 +3211,11 @@ , s = n.Array , c = Math.max; t.exports = function(t, e, r) { - for (var n = o(t), u = i(e, n), d = i(void 0 === r ? n : r, n), l = s(c(d - u, 0)), f = 0; u < d; u++, + for (var n = o(t), u = i(e, n), l = i(void 0 === r ? n : r, n), d = s(c(l - u, 0)), f = 0; u < l; u++, f++) - a(l, f, t[u]); - return l.length = f, - l + a(d, f, t[u]); + return d.length = f, + d } }, "4df4": function(t, e, r) { @@ -3226,8 +3227,8 @@ , s = r("9bdd") , c = r("e95a") , u = r("68ee") - , d = r("07fa") - , l = r("8418") + , l = r("07fa") + , d = r("8418") , f = r("9a1f") , h = r("35a1") , p = n.Array; @@ -3238,20 +3239,20 @@ , m = n > 1 ? arguments[1] : void 0 , b = void 0 !== m; b && (m = i(m, n > 2 ? arguments[2] : void 0)); - var g, y, v, S, w, C, _ = h(e), A = 0; + var g, v, y, S, w, C, _ = h(e), A = 0; if (!_ || this == p && c(_)) - for (g = d(e), - y = r ? new this(g) : p(g); g > A; A++) + for (g = l(e), + v = r ? new this(g) : p(g); g > A; A++) C = b ? m(e[A], A) : e[A], - l(y, A, C); + d(v, A, C); else for (S = f(e, _), w = S.next, - y = r ? new this : []; !(v = o(w, S)).done; A++) - C = b ? s(S, m, [v.value, A], !0) : v.value, - l(y, A, C); - return y.length = A, - y + v = r ? new this : []; !(y = o(w, S)).done; A++) + C = b ? s(S, m, [y.value, A], !0) : y.value, + d(v, A, C); + return v.length = A, + v } }, "4e28": function(t, e, r) { @@ -3349,16 +3350,16 @@ , s = r("83ab") , c = r("0d3b") , u = r("cb2d") - , d = r("6964") - , l = r("d44e") + , l = r("6964") + , d = r("d44e") , f = r("9ed3") , h = r("69f3") , p = r("19aa") , m = r("1626") , b = r("1a2d") , g = r("0366") - , y = r("f5df") - , v = r("825a") + , v = r("f5df") + , y = r("825a") , S = r("861d") , w = r("577e") , C = r("7c73") @@ -3373,29 +3374,29 @@ , D = k + "Iterator" , O = h.set , R = h.getterFor(k) - , N = h.getterFor(D) - , M = Object.getOwnPropertyDescriptor + , M = h.getterFor(D) + , N = Object.getOwnPropertyDescriptor , B = function(t) { if (!s) return i[t]; - var e = M(i, t); + var e = N(i, t); return e && e.value } , F = B("fetch") , j = B("Request") - , K = B("Headers") + , U = B("Headers") , L = j && j.prototype - , U = K && K.prototype + , K = U && U.prototype , X = i.RegExp , z = i.TypeError , G = i.decodeURIComponent - , q = i.encodeURIComponent - , W = a("".charAt) - , V = a([].join) - , H = a([].push) - , Y = a("".replace) - , Z = a([].shift) - , Q = a([].splice) + , W = i.encodeURIComponent + , q = a("".charAt) + , H = a([].join) + , V = a([].push) + , Z = a("".replace) + , Q = a([].shift) + , Y = a([].splice) , J = a("".split) , $ = a("".slice) , tt = /\+/g @@ -3411,13 +3412,13 @@ } } , it = function(t) { - var e = Y(t, tt, " ") + var e = Z(t, tt, " ") , r = 4; try { return G(e) } catch (n) { while (r) - e = Y(e, rt(r--), nt); + e = Z(e, rt(r--), nt); return e } } @@ -3434,7 +3435,7 @@ return at[t] } , ct = function(t) { - return Y(q(t), ot, st) + return Z(W(t), ot, st) } , ut = f((function(t, e) { O(this, { @@ -3444,7 +3445,7 @@ }) } ), "Iterator", (function() { - var t = N(this) + var t = M(this) , e = t.kind , r = t.iterator.next() , n = r.value; @@ -3452,12 +3453,12 @@ r } ), !0) - , dt = function(t) { + , lt = function(t) { this.entries = [], this.url = null, - void 0 !== t && (S(t) ? this.parseObject(t) : this.parseQuery("string" == typeof t ? "?" === W(t, 0) ? $(t, 1) : t : w(t))) + void 0 !== t && (S(t) ? this.parseObject(t) : this.parseQuery("string" == typeof t ? "?" === q(t, 0) ? $(t, 1) : t : w(t))) }; - dt.prototype = { + lt.prototype = { type: k, bindURL: function(t) { this.url = t, @@ -3469,20 +3470,20 @@ e = A(t, u), r = e.next; while (!(n = o(r, e)).done) { - if (i = A(v(n.value)), + if (i = A(y(n.value)), a = i.next, (s = o(a, i)).done || (c = o(a, i)).done || !o(a, i).done) throw z("Expected sequence with length 2"); - H(this.entries, { + V(this.entries, { key: w(s.value), value: w(c.value) }) } } else - for (var d in t) - b(t, d) && H(this.entries, { - key: d, - value: w(t[d]) + for (var l in t) + b(t, l) && V(this.entries, { + key: l, + value: w(t[l]) }) }, parseQuery: function(t) { @@ -3491,9 +3492,9 @@ while (i < n.length) e = n[i++], e.length && (r = J(e, "="), - H(this.entries, { - key: it(Z(r)), - value: it(V(r, "=")) + V(this.entries, { + key: it(Q(r)), + value: it(H(r, "=")) })) } }, @@ -3501,8 +3502,8 @@ var t, e = this.entries, r = [], n = 0; while (n < e.length) t = e[n++], - H(r, ct(t.key) + "=" + ct(t.value)); - return V(r, "&") + V(r, ct(t.key) + "=" + ct(t.value)); + return H(r, "&") }, update: function() { this.entries.length = 0, @@ -3512,17 +3513,17 @@ this.url && this.url.update() } }; - var lt = function() { + var dt = function() { p(this, ft); var t = arguments.length > 0 ? arguments[0] : void 0; - O(this, new dt(t)) + O(this, new lt(t)) } - , ft = lt.prototype; - if (d(ft, { + , ft = dt.prototype; + if (l(ft, { append: function(t, e) { E(arguments.length, 2); var r = R(this); - H(r.entries, { + V(r.entries, { key: w(t), value: w(e) }), @@ -3535,7 +3536,7 @@ , n = w(t) , i = 0; while (i < r.length) - r[i].key === n ? Q(r, i, 1) : i++; + r[i].key === n ? Y(r, i, 1) : i++; e.updateURL() }, get: function(t) { @@ -3548,7 +3549,7 @@ getAll: function(t) { E(arguments.length, 1); for (var e = R(this).entries, r = w(t), n = [], i = 0; i < e.length; i++) - e[i].key === r && H(n, e[i].value); + e[i].key === r && V(n, e[i].value); return n }, has: function(t) { @@ -3565,9 +3566,9 @@ E(arguments.length, 1); for (var r, n = R(this), i = n.entries, o = !1, a = w(t), s = w(e), c = 0; c < i.length; c++) r = i[c], - r.key === a && (o ? Q(i, c--, 1) : (o = !0, + r.key === a && (o ? Y(i, c--, 1) : (o = !0, r.value = s)); - o || H(i, { + o || V(i, { key: a, value: s }), @@ -3608,22 +3609,22 @@ ), { enumerable: !0 }), - l(lt, k), + d(dt, k), n({ global: !0, constructor: !0, forced: !c }, { - URLSearchParams: lt + URLSearchParams: dt }), - !c && m(K)) { - var ht = a(U.has) - , pt = a(U.set) + !c && m(U)) { + var ht = a(K.has) + , pt = a(K.set) , mt = function(t) { if (S(t)) { var e, r = t.body; - if (y(r) === k) - return e = t.headers ? new K(t.headers) : new K, + if (v(r) === k) + return e = t.headers ? new U(t.headers) : new U, ht(e, "content-type") || pt(e, "content-type", "application/x-www-form-urlencoded;charset=UTF-8"), C(t, { body: _(0, w(r)), @@ -3660,7 +3661,7 @@ } } t.exports = { - URLSearchParams: lt, + URLSearchParams: dt, getState: R } }, @@ -3864,21 +3865,21 @@ }, "5e7e": function(t, e, r) { "use strict"; - var n, i, o, a, s = r("23e7"), c = r("c430"), u = r("605d"), d = r("da84"), l = r("c65b"), f = r("cb2d"), h = r("d2bb"), p = r("d44e"), m = r("2626"), b = r("59ed"), g = r("1626"), y = r("861d"), v = r("19aa"), S = r("4840"), w = r("2cf4").set, C = r("b575"), _ = r("44de"), A = r("e667"), I = r("01b4"), E = r("69f3"), T = r("d256"), x = r("4738"), P = r("f069"), k = "Promise", D = x.CONSTRUCTOR, O = x.REJECTION_EVENT, R = x.SUBCLASSING, N = E.getterFor(k), M = E.set, B = T && T.prototype, F = T, j = B, K = d.TypeError, L = d.document, U = d.process, X = P.f, z = X, G = !!(L && L.createEvent && d.dispatchEvent), q = "unhandledrejection", W = "rejectionhandled", V = 0, H = 1, Y = 2, Z = 1, Q = 2, J = function(t) { + var n, i, o, a, s = r("23e7"), c = r("c430"), u = r("605d"), l = r("da84"), d = r("c65b"), f = r("cb2d"), h = r("d2bb"), p = r("d44e"), m = r("2626"), b = r("59ed"), g = r("1626"), v = r("861d"), y = r("19aa"), S = r("4840"), w = r("2cf4").set, C = r("b575"), _ = r("44de"), A = r("e667"), I = r("01b4"), E = r("69f3"), T = r("d256"), x = r("4738"), P = r("f069"), k = "Promise", D = x.CONSTRUCTOR, O = x.REJECTION_EVENT, R = x.SUBCLASSING, M = E.getterFor(k), N = E.set, B = T && T.prototype, F = T, j = B, U = l.TypeError, L = l.document, K = l.process, X = P.f, z = X, G = !!(L && L.createEvent && l.dispatchEvent), W = "unhandledrejection", q = "rejectionhandled", H = 0, V = 1, Z = 2, Q = 1, Y = 2, J = function(t) { var e; - return !(!y(t) || !g(e = t.then)) && e + return !(!v(t) || !g(e = t.then)) && e }, $ = function(t, e) { - var r, n, i, o = e.value, a = e.state == H, s = a ? t.ok : t.fail, c = t.resolve, u = t.reject, d = t.domain; + var r, n, i, o = e.value, a = e.state == V, s = a ? t.ok : t.fail, c = t.resolve, u = t.reject, l = t.domain; try { - s ? (a || (e.rejection === Q && it(e), - e.rejection = Z), - !0 === s ? r = o : (d && d.enter(), + s ? (a || (e.rejection === Y && it(e), + e.rejection = Q), + !0 === s ? r = o : (l && l.enter(), r = s(o), - d && (d.exit(), + l && (l.exit(), i = !0)), - r === t.promise ? u(K("Promise-chain cycle")) : (n = J(r)) ? l(n, r, c, u) : c(r)) : u(o) + r === t.promise ? u(U("Promise-chain cycle")) : (n = J(r)) ? d(n, r, c, u) : c(r)) : u(o) } catch (f) { - d && !i && d.exit(), + l && !i && l.exit(), u(f) } }, tt = function(t, e) { @@ -3897,29 +3898,29 @@ n.promise = e, n.reason = r, n.initEvent(t, !1, !0), - d.dispatchEvent(n)) : n = { + l.dispatchEvent(n)) : n = { promise: e, reason: r }, - !O && (i = d["on" + t]) ? i(n) : t === q && _("Unhandled promise rejection", r) + !O && (i = l["on" + t]) ? i(n) : t === W && _("Unhandled promise rejection", r) }, rt = function(t) { - l(w, d, (function() { + d(w, l, (function() { var e, r = t.facade, n = t.value, i = nt(t); if (i && (e = A((function() { - u ? U.emit("unhandledRejection", n, r) : et(q, r, n) + u ? K.emit("unhandledRejection", n, r) : et(W, r, n) } )), - t.rejection = u || nt(t) ? Q : Z, + t.rejection = u || nt(t) ? Y : Q, e.error)) throw e.value } )) }, nt = function(t) { - return t.rejection !== Z && !t.parent + return t.rejection !== Q && !t.parent }, it = function(t) { - l(w, d, (function() { + d(w, l, (function() { var e = t.facade; - u ? U.emit("rejectionHandled", e) : et(W, e, t.value) + u ? K.emit("rejectionHandled", e) : et(q, e, t.value) } )) }, ot = function(t, e, r) { @@ -3930,7 +3931,7 @@ t.done || (t.done = !0, r && (t = r), t.value = e, - t.state = Y, + t.state = Z, tt(t, !0)) }, st = function(t, e, r) { if (!t.done) { @@ -3938,20 +3939,20 @@ r && (t = r); try { if (t.facade === e) - throw K("Promise can't be resolved itself"); + throw U("Promise can't be resolved itself"); var n = J(e); n ? C((function() { var r = { done: !1 }; try { - l(n, e, ot(st, r, t), ot(at, r, t)) + d(n, e, ot(st, r, t), ot(at, r, t)) } catch (i) { at(r, i, t) } } )) : (t.value = e, - t.state = H, + t.state = V, tt(t, !1)) } catch (i) { at({ @@ -3961,10 +3962,10 @@ } }; if (D && (F = function(t) { - v(this, j), + y(this, j), b(t), - l(n, this); - var e = N(this); + d(n, this); + var e = M(this); try { t(ot(st, e), ot(at, e)) } catch (r) { @@ -3974,26 +3975,26 @@ , j = F.prototype, n = function(t) { - M(this, { + N(this, { type: k, done: !1, notified: !1, parent: !1, reactions: new I, rejection: !1, - state: V, + state: H, value: void 0 }) } , n.prototype = f(j, "then", (function(t, e) { - var r = N(this) + var r = M(this) , n = X(S(this, F)); return r.parent = !0, n.ok = !g(t) || t, n.fail = g(e) && e, - n.domain = u ? U.domain : void 0, - r.state == V ? r.reactions.add(n) : C((function() { + n.domain = u ? K.domain : void 0, + r.state == H ? r.reactions.add(n) : C((function() { $(n, r) } )), @@ -4002,7 +4003,7 @@ )), i = function() { var t = new n - , e = N(t); + , e = M(t); this.promise = t, this.resolve = ot(st, e), this.reject = ot(at, e) @@ -4017,7 +4018,7 @@ R || f(B, "then", (function(t, e) { var r = this; return new F((function(t, e) { - l(a, r, t, e) + d(a, r, t, e) } )).then(t, e) } @@ -4067,16 +4068,16 @@ , s = 1 , c = 26 , u = 38 - , d = 700 - , l = 72 + , l = 700 + , d = 72 , f = 128 , h = "-" , p = /[^\0-\u007E]/ , m = /[.\u3002\uFF0E\uFF61]/g , b = "Overflow: input needs wider integers to process" , g = a - s - , y = n.RangeError - , v = i(m.exec) + , v = n.RangeError + , y = i(m.exec) , S = Math.floor , w = String.fromCharCode , C = i("".charCodeAt) @@ -4105,7 +4106,7 @@ } , k = function(t, e, r) { var n = 0; - t = r ? S(t / d) : t >> 1, + t = r ? S(t / l) : t >> 1, t += S(t / e); while (t > g * c >> 1) t = S(t / g), @@ -4115,7 +4116,7 @@ , D = function(t) { var e = []; t = x(t); - var r, n, i = t.length, u = f, d = 0, p = l; + var r, n, i = t.length, u = f, l = 0, p = d; for (r = 0; r < t.length; r++) n = t[r], n < 128 && A(e, w(n)); @@ -4123,21 +4124,21 @@ , g = m; m && A(e, h); while (g < i) { - var v = o; + var y = o; for (r = 0; r < t.length; r++) n = t[r], - n >= u && n < v && (v = n); + n >= u && n < y && (y = n); var C = g + 1; - if (v - u > S((o - d) / C)) - throw y(b); - for (d += (v - u) * C, - u = v, + if (y - u > S((o - l) / C)) + throw v(b); + for (l += (y - u) * C, + u = y, r = 0; r < t.length; r++) { if (n = t[r], - n < u && ++d > o) - throw y(b); + n < u && ++l > o) + throw v(b); if (n == u) { - var I = d + var I = l , E = a; while (1) { var T = E <= p ? s : E >= p + c ? c : E - p; @@ -4150,12 +4151,12 @@ E += a } A(e, w(P(I))), - p = k(d, C, g == m), - d = 0, + p = k(l, C, g == m), + l = 0, g++ } } - d++, + l++, u++ } return _(e, "") @@ -4164,7 +4165,7 @@ var e, r, n = [], i = E(I(T(t), m, "."), "."); for (e = 0; e < i.length; e++) r = i[e], - A(n, v(p, r) ? "xn--" + D(r) : r); + A(n, y(p, r) ? "xn--" + D(r) : r); return _(n, ".") } }, @@ -4188,8 +4189,8 @@ , s = r("df75") , c = r("7418") , u = r("d1e7") - , d = r("7b0b") - , l = r("44ad") + , l = r("7b0b") + , d = r("44ad") , f = Object.assign , h = Object.defineProperty , p = i([].concat); @@ -4220,21 +4221,43 @@ 7 != f({}, t)[r] || s(f({}, e)).join("") != i } )) ? function(t, e) { - var r = d(t) + var r = l(t) , i = arguments.length , a = 1 , f = c.f , h = u.f; while (i > a) { - var m, b = l(arguments[a++]), g = f ? p(s(b), f(b)) : s(b), y = g.length, v = 0; - while (y > v) - m = g[v++], + var m, b = d(arguments[a++]), g = f ? p(s(b), f(b)) : s(b), v = g.length, y = 0; + while (v > y) + m = g[y++], n && !o(h, b, m) || (r[m] = b[m]) } return r } : f }, + "62e4": function(t, e) { + t.exports = function(t) { + return t.webpackPolyfill || (t.deprecate = function() {} + , + t.paths = [], + t.children || (t.children = []), + Object.defineProperty(t, "loaded", { + enumerable: !0, + get: function() { + return t.l + } + }), + Object.defineProperty(t, "id", { + enumerable: !0, + get: function() { + return t.i + } + }), + t.webpackPolyfill = 1), + t + } + }, "64c1": function(t, e, r) { var n; n = function() { @@ -4256,19 +4279,19 @@ var s = r ? new Uint8Array(3 * e.length >> 2) : [] , c = 0 , u = 0 - , d = 0; + , l = 0; for (n = 0; n < e.length; ++n) { - var l = i ? e.charCodeAt(n) : e[n]; - if (61 == l) + var d = i ? e.charCodeAt(n) : e[n]; + if (61 == d) break; - if (l = t[l], - -1 != l) { - if (void 0 === l) + if (d = t[d], + -1 != d) { + if (void 0 === d) throw "Illegal character at offset " + n; - c |= l, - ++u >= 4 ? (s[d++] = c >> 16, - s[d++] = c >> 8 & 255, - s[d++] = 255 & c, + c |= d, + ++u >= 4 ? (s[l++] = c >> 16, + s[l++] = c >> 8 & 255, + s[l++] = 255 & c, c = 0, u = 0) : c <<= 6 } @@ -4277,14 +4300,14 @@ case 1: throw "Base64 encoding incomplete: at least 2 bits missing"; case 2: - s[d++] = c >> 10; + s[l++] = c >> 10; break; case 3: - s[d++] = c >> 16, - s[d++] = c >> 8 & 255; + s[l++] = c >> 16, + s[l++] = c >> 8 & 255; break } - return r && s.length > d && (s = s.subarray(0, d)), + return r && s.length > l && (s = s.subarray(0, l)), s } , @@ -4323,16 +4346,16 @@ , s = n("".charAt) , c = n("".charCodeAt) , u = n("".slice) - , d = function(t) { + , l = function(t) { return function(e, r) { - var n, d, l = o(a(e)), f = i(r), h = l.length; - return f < 0 || f >= h ? t ? "" : void 0 : (n = c(l, f), - n < 55296 || n > 56319 || f + 1 === h || (d = c(l, f + 1)) < 56320 || d > 57343 ? t ? s(l, f) : n : t ? u(l, f, f + 2) : d - 56320 + (n - 55296 << 10) + 65536) + var n, l, d = o(a(e)), f = i(r), h = d.length; + return f < 0 || f >= h ? t ? "" : void 0 : (n = c(d, f), + n < 55296 || n > 56319 || f + 1 === h || (l = c(d, f + 1)) < 56320 || l > 57343 ? t ? s(d, f) : n : t ? u(d, f, f + 2) : l - 56320 + (n - 55296 << 10) + 65536) } }; t.exports = { - codeAt: d(!1), - charAt: d(!0) + codeAt: l(!1), + charAt: l(!0) } }, 6566: function(t, e, r) { @@ -4344,15 +4367,15 @@ , s = r("19aa") , c = r("2266") , u = r("7dd0") - , d = r("2626") - , l = r("83ab") + , l = r("2626") + , d = r("83ab") , f = r("f183").fastKey , h = r("69f3") , p = h.set , m = h.getterFor; t.exports = { getConstructor: function(t, e, r, u) { - var d = t((function(t, n) { + var l = t((function(t, n) { s(t, h), p(t, { type: e, @@ -4361,17 +4384,17 @@ last: void 0, size: 0 }), - l || (t.size = 0), + d || (t.size = 0), void 0 != n && c(n, t[u], { that: t, AS_ENTRIES: r }) } )) - , h = d.prototype + , h = l.prototype , b = m(e) , g = function(t, e, r) { - var n, i, o = b(t), a = y(t, e); + var n, i, o = b(t), a = v(t, e); return a ? a.value = r : (o.last = a = { index: i = f(e, !0), key: e, @@ -4382,11 +4405,11 @@ }, o.first || (o.first = a), n && (n.next = a), - l ? o.size++ : t.size++, + d ? o.size++ : t.size++, "F" !== i && (o.index[i] = a)), t } - , y = function(t, e) { + , v = function(t, e) { var r, n = b(t), i = f(e); if ("F" !== i) return n.index[i]; @@ -4406,12 +4429,12 @@ delete r[n.index], n = n.next; e.first = e.last = void 0, - l ? e.size = 0 : t.size = 0 + d ? e.size = 0 : t.size = 0 }, delete: function(t) { var e = this , r = b(e) - , n = y(e, t); + , n = v(e, t); if (n) { var i = n.next , o = n.previous; @@ -4421,7 +4444,7 @@ i && (i.previous = o), r.first == n && (r.first = i), r.last == n && (r.last = o), - l ? r.size-- : e.size-- + d ? r.size-- : e.size-- } return !!n }, @@ -4434,12 +4457,12 @@ } }, has: function(t) { - return !!y(this, t) + return !!v(this, t) } }), o(h, r ? { get: function(t) { - var e = y(this, t); + var e = v(this, t); return e && e.value }, set: function(t, e) { @@ -4450,12 +4473,12 @@ return g(this, t = 0 === t ? 0 : t, t) } }), - l && n(h, "size", { + d && n(h, "size", { get: function() { return b(this).size } }), - d + l }, setStrong: function(t, e, r) { var n = e + " Iterator" @@ -4492,7 +4515,7 @@ }) } ), r ? "entries" : "values", !r, !0), - d(e) + l(e) } } }, @@ -4502,20 +4525,19 @@ return new (n(t))(0 === e ? 0 : e) } }, - "67d3": function(t, e, r) { "use strict"; (function(t) { r.d(e, "d", (function() { - return x + return k } )), r.d(e, "b", (function() { - return P + return D } )), r.d(e, "c", (function() { - return k + return O } )); var n = r("3662") @@ -4525,20 +4547,22 @@ , s = r("73fd") , c = r("a9c6") , u = r("14a5") - , d = r.n(u) - , l = r("9a6e") - , f = r.n(l); - function h(t) { - return h = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + , l = r.n(u) + , d = r("9a6e") + , f = r.n(d) + , h = r("7b14") + , p = r.n(h); + function m(t) { + return m = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { return typeof t } : function(t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t } , - h(t) + m(t) } - function p(t, e, r) { + function b(t, e, r) { return e in t ? Object.defineProperty(t, e, { value: r, enumerable: !0, @@ -4547,10 +4571,10 @@ }) : t[e] = r, t } - function m(t, e) { + function g(t, e) { var r = "undefined" !== typeof Symbol && t[Symbol.iterator] || t["@@iterator"]; if (!r) { - if (Array.isArray(t) || (r = y(t)) || e && t && "number" === typeof t.length) { + if (Array.isArray(t) || (r = S(t)) || e && t && "number" === typeof t.length) { r && (t = r); var n = 0 , i = function() {}; @@ -4596,28 +4620,28 @@ } } } - function b(t, e) { - return w(t) || S(t, e) || y(t, e) || g() + function v(t, e) { + return _(t) || C(t, e) || S(t, e) || y() } - function g() { + function y() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } - function y(t, e) { + function S(t, e) { if (t) { if ("string" === typeof t) - return v(t, e); + return w(t, e); var r = Object.prototype.toString.call(t).slice(8, -1); return "Object" === r && t.constructor && (r = t.constructor.name), - "Map" === r || "Set" === r ? Array.from(t) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? v(t, e) : void 0 + "Map" === r || "Set" === r ? Array.from(t) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? w(t, e) : void 0 } } - function v(t, e) { + function w(t, e) { (null == e || e > t.length) && (e = t.length); for (var r = 0, n = new Array(e); r < e; r++) n[r] = t[r]; return n } - function S(t, e) { + function C(t, e) { var r = null == t ? null : "undefined" !== typeof Symbol && t[Symbol.iterator] || t["@@iterator"]; if (null != r) { var n, i, o = [], a = !0, s = !1; @@ -4640,13 +4664,13 @@ return o } } - function w(t) { + function _(t) { if (Array.isArray(t)) return t } - function C() { + function A() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ - C = function() { + A = function() { return t } ; @@ -4674,7 +4698,7 @@ } } function c(t, e, r, n) { - var i = e && e.prototype instanceof l ? e : l + var i = e && e.prototype instanceof d ? e : d , o = Object.create(i.prototype) , a = new I(n || []); return o._invoke = function(t, e, r) { @@ -4693,7 +4717,7 @@ if (a) { var s = w(a, r); if (s) { - if (s === d) + if (s === l) continue; return s } @@ -4711,7 +4735,7 @@ var c = u(t, e, r); if ("normal" === c.type) { if (n = r.done ? "completed" : "suspendedYield", - c.arg === d) + c.arg === l) continue; return { value: c.arg, @@ -4740,20 +4764,20 @@ } } t.wrap = c; - var d = {}; - function l() {} + var l = {}; + function d() {} function f() {} - function p() {} - var m = {}; - s(m, i, (function() { + function h() {} + var p = {}; + s(p, i, (function() { return this } )); var b = Object.getPrototypeOf , g = b && b(b(E([]))); - g && g !== e && r.call(g, i) && (m = g); - var y = p.prototype = l.prototype = Object.create(m); - function v(t) { + g && g !== e && r.call(g, i) && (p = g); + var v = h.prototype = d.prototype = Object.create(p); + function y(t) { ["next", "throw", "return"].forEach((function(e) { s(t, e, (function(t) { return this._invoke(e, t) @@ -4766,17 +4790,17 @@ function n(i, o, a, s) { var c = u(t[i], t, o); if ("throw" !== c.type) { - var d = c.arg - , l = d.value; - return l && "object" == h(l) && r.call(l, "__await") ? e.resolve(l.__await).then((function(t) { + var l = c.arg + , d = l.value; + return d && "object" == m(d) && r.call(d, "__await") ? e.resolve(d.__await).then((function(t) { n("next", t, a, s) } ), (function(t) { n("throw", t, a, s) } - )) : e.resolve(l).then((function(t) { - d.value = t, - a(d) + )) : e.resolve(d).then((function(t) { + l.value = t, + a(l) } ), (function(t) { return n("throw", t, a, s) @@ -4805,30 +4829,30 @@ e.arg = void 0, w(t, e), "throw" === e.method)) - return d; + return l; e.method = "throw", e.arg = new TypeError("The iterator does not provide a 'throw' method") } - return d + return l } var n = u(r, t.iterator, e.arg); if ("throw" === n.type) return e.method = "throw", e.arg = n.arg, e.delegate = null, - d; + l; var i = n.arg; return i ? i.done ? (e[t.resultName] = i.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = void 0), e.delegate = null, - d) : i : (e.method = "throw", + l) : i : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, - d) + l) } - function _(t) { + function C(t) { var e = { tryLoc: t[0] }; @@ -4837,7 +4861,7 @@ e.afterLoc = t[3]), this.tryEntries.push(e) } - function A(t) { + function _(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, @@ -4847,7 +4871,7 @@ this.tryEntries = [{ tryLoc: "root" }], - t.forEach(_, this), + t.forEach(C, this), this.reset(!0) } function E(t) { @@ -4882,19 +4906,19 @@ done: !0 } } - return f.prototype = p, - s(y, "constructor", p), - s(p, "constructor", f), - f.displayName = s(p, a, "GeneratorFunction"), + return f.prototype = h, + s(v, "constructor", h), + s(h, "constructor", f), + f.displayName = s(h, a, "GeneratorFunction"), t.isGeneratorFunction = function(t) { var e = "function" == typeof t && t.constructor; return !!e && (e === f || "GeneratorFunction" === (e.displayName || e.name)) } , t.mark = function(t) { - return Object.setPrototypeOf ? Object.setPrototypeOf(t, p) : (t.__proto__ = p, + return Object.setPrototypeOf ? Object.setPrototypeOf(t, h) : (t.__proto__ = h, s(t, a, "GeneratorFunction")), - t.prototype = Object.create(y), + t.prototype = Object.create(v), t } , @@ -4904,7 +4928,7 @@ } } , - v(S.prototype), + y(S.prototype), s(S.prototype, o, (function() { return this } @@ -4919,13 +4943,13 @@ )) } , - v(y), - s(y, a, "Generator"), - s(y, i, (function() { + y(v), + s(v, a, "Generator"), + s(v, i, (function() { return this } )), - s(y, "toString", (function() { + s(v, "toString", (function() { return "[object Generator]" } )), @@ -4958,7 +4982,7 @@ this.delegate = null, this.method = "next", this.arg = void 0, - this.tryEntries.forEach(A), + this.tryEntries.forEach(_), !t) for (var e in this) "t" === e.charAt(0) && r.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = void 0) @@ -5021,7 +5045,7 @@ a.arg = e, o ? (this.method = "next", this.next = o.finallyLoc, - d) : this.complete(a) + l) : this.complete(a) }, complete: function(t, e) { if ("throw" === t.type) @@ -5029,15 +5053,15 @@ return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), - d + l }, finish: function(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), - A(r), - d + _(r), + l } }, catch: function(t) { @@ -5047,7 +5071,7 @@ var n = r.completion; if ("throw" === n.type) { var i = n.arg; - A(r) + _(r) } return i } @@ -5061,12 +5085,12 @@ nextLoc: r }, "next" === this.method && (this.arg = void 0), - d + l } }, t } - function _(t, e, r, n, i, o, a) { + function I(t, e, r, n, i, o, a) { try { var s = t[o](a) , c = s.value @@ -5075,28 +5099,41 @@ } s.done ? e(c) : Promise.resolve(c).then(n, i) } - function A(t) { + function E(t) { return function() { var e = this , r = arguments; return new Promise((function(n, i) { var o = t.apply(e, r); function a(t) { - _(o, n, i, a, s, "next", t) + I(o, n, i, a, s, "next", t) } function s(t) { - _(o, n, i, a, s, "throw", t) + I(o, n, i, a, s, "throw", t) } a(void 0) } )) } } - var I = r("74db") - , E = "" - , T = "" - , x = function(t, e) { - + var T = r("74db") + , x = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwImLbqWu58LE+LAgvR3Qwvizexn1TDfXldpBiq/ri5aghzOBnCgcaHIgdZc6RoUtiPl5CWtteCd5dLikQfxSJMBxhK2+gvhW4o+ImPbPq9o/3KGY4XdgsPOc12mIgZMQfLzRxkHJXk80v1tKBe2FYMAoUeqxbqdNR/aHkwS1EKOixCp2W8DwUKyQm2JXRjKT5KGJBhzOn9u8oETn2wrcLRmQmb/NXlENKrZ8Lv3A9wFZpFBRUUYkVLuOo/Qmc97uR4NHGQaeUd9aSaa+f2/30LklT/64F6vDB3RAqF4ve2vmoHxE7d5L0E993Rq/TB0HxtuDvxb2slRoGQAe9mvK1QIDAQAB" + , P = "" + , k = function(t, e) { + P = e; + var r = ""; + r = self.location.href; + var n = ""; + if (n = self.location.host, + r.startsWith("file://") || n.startsWith("localhost") || n.startsWith("127.0.0.1")) + ; + else if (P) { + var i = new f.a; + i.setPublicKey(x); + var a = i.decrypt(P, !1); + a ? -1 == n.indexOf(a) && rt() : rt() + } else + rt(); return new Promise((function(e, r) { o.a.loadAsync(t).then((function(t) { e(t) @@ -5108,15 +5145,15 @@ } )) } - , P = function() { - var t = A(C().mark((function t(e) { + , D = function() { + var t = E(A().mark((function t(e) { var r, n, i; - return C().wrap((function(t) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: return t.next = 2, - V(e, "OFD.xml"); + Z(e, "OFD.xml"); case 2: return r = t.sent, n = r["json"]["ofd:OFD"]["ofd:DocBody"], @@ -5135,18 +5172,18 @@ return t.apply(this, arguments) } }() - , k = function() { - var t = A(C().mark((function t(e) { + , O = function() { + var t = E(A().mark((function t(e) { var r, n, i, o, a, s, c, u; - return C().wrap((function(t) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: - r = b(e, 2), + r = v(e, 2), n = r[0], i = r[1], o = [], - a = m(i), + a = g(i), t.prev = 3, a.s(); case 5: @@ -5160,27 +5197,27 @@ break } return t.next = 10, - D(n, c); + R(n, c); case 10: return u = t.sent, t.next = 13, - O(u); + M(u); case 13: return u = t.sent, t.next = 16, - N(u); + B(u); case 16: return u = t.sent, t.next = 19, - M(u); + F(u); case 19: return u = t.sent, t.next = 22, - B(u); + j(u); case 22: return u = t.sent, t.next = 25, - F(u); + U(u); case 25: u = t.sent, u.docInfo = c["ofd:DocInfo"], @@ -5213,10 +5250,10 @@ return t.apply(this, arguments) } }() - , D = function() { - var t = A(C().mark((function t(e, r) { - var n, i, o, s, c, u, d, l, f, h, p, b, g, y, v, S, w, _, I, E, T, x, P, k, D, O, R; - return C().wrap((function(t) { + , R = function() { + var t = E(A().mark((function t(e, r) { + var n, i, o, s, c, u, l, d, f, h, p, m, b, v, y, S, w, C, _, I, T, x, P, k, D, O, R; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -5225,59 +5262,67 @@ i = n.split("/")[0], o = r["ofd:Signatures"], t.next = 6, - z(e, o, i); + W(e, o, i); case 6: s = t.sent, c = {}, - u = m(s), + u = g(s), t.prev = 9, u.s(); case 11: - if ((d = u.n()).done) { - t.next = 57; + if ((l = u.n()).done) { + t.next = 63; break } - if (l = d.value, - !(l.sealObj && Object.keys(l.sealObj).length > 0)) { - t.next = 55; + if (d = l.value, + !(d.sealObj && Object.keys(d.sealObj).length > 0)) { + t.next = 61; break } - if ("ofd" !== l.sealObj.type) { - t.next = 22; + if ("ofd" !== d.sealObj.type) { + t.next = 28; break } - return t.next = 17, - W(l); - case 17: + return t.prev = 15, + t.next = 18, + V(d); + case 18: f = t.sent, - h = m(f); + h = g(f); try { for (h.s(); !(p = h.n()).done; ) - b = p.value, - l.stampAnnot.boundary = Object(a["k"])(l.stampAnnot["@_Boundary"]), - l.stampAnnot.pageRef = l.stampAnnot["@_PageRef"], - c[l.stampAnnot["@_PageRef"]] || (c[l.stampAnnot["@_PageRef"]] = []), - c[l.stampAnnot["@_PageRef"]].push({ + m = p.value, + d.stampAnnot.boundary = Object(a["k"])(d.stampAnnot["@_Boundary"]), + d.stampAnnot.pageRef = d.stampAnnot["@_PageRef"], + c[d.stampAnnot["@_PageRef"]] || (c[d.stampAnnot["@_PageRef"]] = []), + c[d.stampAnnot["@_PageRef"]].push({ type: "ofd", - obj: b, - stamp: l + obj: m, + stamp: d }) - } catch (N) { - h.e(N) + } catch (M) { + h.e(M) } finally { h.f() } - t.next = 55; + t.next = 26; break; - case 22: - if ("png" !== l.sealObj.type && "gif" !== l.sealObj.type && "jpg" !== l.sealObj.type && "jpeg" !== l.sealObj.type && 0 != l.sealObj.type.indexOf("png") && "bmp" !== l.sealObj.type) { - t.next = 54; + case 23: + t.prev = 23, + t.t0 = t["catch"](15), + console.log("电子印章解析失败!"); + case 26: + t.next = 61; + break; + case 28: + if ("png" !== d.sealObj.type && "gif" !== d.sealObj.type && "jpg" !== d.sealObj.type && "jpeg" !== d.sealObj.type && 0 != d.sealObj.type.indexOf("png") && "bmp" !== d.sealObj.type) { + t.next = 60; break } - if (g = function() { - var t = A(C().mark((function t(e) { + if (b = function() { + var t = E(A().mark((function t(e) { var r, n; - return C().wrap((function(t) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -5312,49 +5357,49 @@ return t.apply(this, arguments) } }(), - y = void 0, - "bmp" !== l.sealObj.type) { - t.next = 38; + v = void 0, + "bmp" !== d.sealObj.type) { + t.next = 44; break } - return t.next = 28, - g("data:image/bmp;base64," + Object(a["o"])(l.sealObj.ofdArray)); - case 28: - for (v = t.sent, + return t.next = 34, + b("data:image/bmp;base64," + Object(a["p"])(d.sealObj.ofdArray)); + case 34: + for (y = t.sent, S = document.createElement("canvas"), - S.width = v.width, - S.height = v.height, + S.width = y.width, + S.height = y.height, w = S.getContext("2d"), - _ = 0; _ < v.data.length / 4; _++) - v.data[4 * _] > 250 && v.data[4 * _ + 1] > 250 && v.data[4 * _ + 2] > 250 && (v.data[4 * _ + 3] = 0); - w.putImageData(v, 0, 0), - y = S.toDataURL("image/png", 1), - t.next = 48; + C = 0; C < y.data.length / 4; C++) + y.data[4 * C] > 250 && y.data[4 * C + 1] > 250 && y.data[4 * C + 2] > 250 && (y.data[4 * C + 3] = 0); + w.putImageData(y, 0, 0), + v = S.toDataURL("image/png", 1), + t.next = 54; break; - case 38: - return t.next = 40, - g("data:image/png;base64," + Object(a["o"])(l.sealObj.ofdArray)); - case 40: - for (I = t.sent, - E = document.createElement("canvas"), - E.width = I.width, - E.height = I.height, - T = E.getContext("2d"), + case 44: + return t.next = 46, + b("data:image/png;base64," + Object(a["p"])(d.sealObj.ofdArray)); + case 46: + for (_ = t.sent, + I = document.createElement("canvas"), + I.width = _.width, + I.height = _.height, + T = I.getContext("2d"), x = !1, - _ = 0; _ < I.data.length / 4; _++) - I.data[4 * _] > 250 && I.data[4 * _ + 1] > 250 && I.data[4 * _ + 2] > 250 && (I.data[4 * _ + 3] = 0, + C = 0; C < _.data.length / 4; C++) + _.data[4 * C] > 250 && _.data[4 * C + 1] > 250 && _.data[4 * C + 2] > 250 && (_.data[4 * C + 3] = 0, x = !0); - x ? (T.putImageData(I, 0, 0), - y = E.toDataURL("image/png", 1)) : y = "data:image/png;base64," + Object(a["o"])(l.sealObj.ofdArray); - case 48: + x ? (T.putImageData(_, 0, 0), + v = I.toDataURL("image/png", 1)) : v = "data:image/png;base64," + Object(a["p"])(d.sealObj.ofdArray); + case 54: P = [], - P = P.concat(l.stampAnnot), - k = m(P); + P = P.concat(d.stampAnnot), + k = g(P); try { for (k.s(); !(D = k.n()).done; ) O = D.value, O && (R = { - img: y, + img: v, pageId: O["@_PageRef"], boundary: Object(a["k"])(O["@_Boundary"]), clip: Object(a["k"])(O["@_Clip"]) @@ -5363,69 +5408,69 @@ c[O["@_PageRef"]].push({ type: "png", obj: R, - stamp: l + stamp: d })) - } catch (N) { - k.e(N) + } catch (M) { + k.e(M) } finally { k.f() } - t.next = 55; + t.next = 61; break; - case 54: - console.log(l.sealObj.type); - case 55: + case 60: + console.log(d.sealObj.type); + case 61: t.next = 11; break; - case 57: - t.next = 62; + case 63: + t.next = 68; break; - case 59: - t.prev = 59, - t.t0 = t["catch"](9), - u.e(t.t0); - case 62: - return t.prev = 62, - u.f(), - t.finish(62); case 65: + t.prev = 65, + t.t1 = t["catch"](9), + u.e(t.t1); + case 68: + return t.prev = 68, + u.f(), + t.finish(68); + case 71: return t.abrupt("return", [e, i, n, c]); - case 66: + case 72: case "end": return t.stop() } } - ), t, null, [[9, 59, 62, 65]]) + ), t, null, [[9, 65, 68, 71], [15, 23]]) } ))); return function(e, r) { return t.apply(this, arguments) } }() - , O = function() { - var t = A(C().mark((function t(e) { - var r, n, i, o, a, s, c, u, d, l, f; - return C().wrap((function(t) { + , M = function() { + var t = E(A().mark((function t(e) { + var r, n, i, o, a, s, c, u, l, d, f; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: - return r = b(e, 4), + return r = v(e, 4), n = r[0], i = r[1], o = r[2], a = r[3], t.next = 3, - V(n, o); + Z(n, o); case 3: if (s = t.sent, c = s["json"]["ofd:Document"], u = c["ofd:Annotations"], - d = [], + l = [], !u) { t.next = 16; break } - if (-1 !== u.indexOf("/") && (l = u.substring(0, u.indexOf("/"))), + if (-1 !== u.indexOf("/") && (d = u.substring(0, u.indexOf("/"))), -1 === u.indexOf(i) && (u = "".concat(i, "/").concat(u)), 0 === u.indexOf("/") && (u = u.substring(1)), !n.files[u]) { @@ -5433,13 +5478,13 @@ break } return t.next = 14, - V(n, u); + Z(n, u); case 14: u = t.sent, - d = d.concat(u["json"]["ofd:Annotations"]["ofd:Page"]); + l = l.concat(u["json"]["ofd:Annotations"]["ofd:Page"]); case 16: return t.next = 18, - R(l, d, i, n); + N(d, l, i, n); case 18: return f = t.sent, t.abrupt("return", [n, i, c, a, f]); @@ -5455,15 +5500,15 @@ return t.apply(this, arguments) } }() - , R = function() { - var t = A(C().mark((function t(e, r, n, i) { - var o, s, c, u, d, l, f, h, p, b, g, y, v, S, w; - return C().wrap((function(t) { + , N = function() { + var t = E(A().mark((function t(e, r, n, i) { + var o, s, c, u, l, d, f, h, p, m, b, v, y, S, w; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: o = {}, - s = m(r), + s = g(r), t.prev = 2, s.s(); case 4: @@ -5478,46 +5523,46 @@ } return t.abrupt("continue", 42); case 8: - if (d = u["@_PageID"], - l = u["ofd:FileLoc"], - l = Object(a["l"])(l), - e && -1 === l.indexOf(e) && (l = "".concat(e, "/").concat(l)), - -1 === l.indexOf(n) && (l = "".concat(n, "/").concat(l)), - !i.files[l]) { + if (l = u["@_PageID"], + d = u["ofd:FileLoc"], + d = Object(a["l"])(d), + e && -1 === d.indexOf(e) && (d = "".concat(e, "/").concat(d)), + -1 === d.indexOf(n) && (d = "".concat(n, "/").concat(d)), + !i.files[d]) { t.next = 42; break } return t.next = 16, - V(i, l); + Z(i, d); case 16: f = t.sent, h = [], h = h.concat(f["json"]["ofd:PageAnnot"]["ofd:Annot"]), - o[d] || (o[d] = []), - p = m(h), + o[l] || (o[l] = []), + p = g(h), t.prev = 21, p.s(); case 23: - if ((b = p.n()).done) { + if ((m = p.n()).done) { t.next = 34; break } - if (g = b.value, - g) { + if (b = m.value, + b) { t.next = 27; break } return t.abrupt("continue", 32); case 27: - y = g["@_Type"], - v = !g["@_Visible"] || g["@_Visible"], - S = g["ofd:Appearance"], + v = b["@_Type"], + y = !b["@_Visible"] || b["@_Visible"], + S = b["ofd:Appearance"], w = { - type: y, + type: v, appearance: S, - visible: v + visible: y }, - o[d].push(w); + o[l].push(w); case 32: t.next = 23; break; @@ -5560,14 +5605,14 @@ return t.apply(this, arguments) } }() - , N = function() { - var t = A(C().mark((function t(e) { - var r, n, i, o, a, s, c, u, d, l, f, h, p; - return C().wrap((function(t) { + , B = function() { + var t = E(A().mark((function t(e) { + var r, n, i, o, a, s, c, u, l, d, f, h, p, m, b, y, S, w, C, _, I, E, T; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: - if (r = b(e, 5), + if (r = v(e, 5), n = r[0], i = r[1], o = r[2], @@ -5575,39 +5620,68 @@ s = r[4], c = o["ofd:CommonData"]["ofd:DocumentRes"], u = {}, - d = {}, l = {}, + d = {}, f = [], !c) { - t.next = 23; + t.next = 34; break } - if (-1 == c.indexOf(i) && (c = "".concat(i, "/").concat(c)), - !n.files[c]) { - t.next = 23; + if (h = [], + c instanceof Array) { + p = g(c); + try { + for (p.s(); !(m = p.n()).done; ) + b = m.value, + b && h.push(b) + } catch (A) { + p.e(A) + } finally { + p.f() + } + } else + h.push(c); + y = 0, + S = h; + case 10: + if (!(y < S.length)) { + t.next = 34; break } - return t.next = 11, - V(n, c); - case 11: - return h = t.sent, - p = h["json"]["ofd:Res"], - t.next = 15, - j(p, n, i); - case 15: - return u = t.sent, - t.next = 18, - K(p); - case 18: - return d = t.sent, - t.next = 21, - L(n, p, i); - case 21: - l = t.sent, - f = U(p); - case 23: - return t.abrupt("return", [n, i, o, a, s, u, d, l, f]); + if (w = S[y], + -1 == w.indexOf(i) && (w = "".concat(i, "/").concat(w)), + !n.files[w]) { + t.next = 31; + break + } + return t.next = 16, + Z(n, w); + case 16: + return C = t.sent, + _ = C["json"]["ofd:Res"], + t.next = 20, + L(_, n, i); + case 20: + return I = t.sent, + u = Object.assign(u, I), + t.next = 24, + K(_); case 24: + return E = t.sent, + l = Object.assign(l, E), + t.next = 28, + X(n, _, i); + case 28: + T = t.sent, + d = Object.assign(d, T), + f = z(_); + case 31: + y++, + t.next = 10; + break; + case 34: + return t.abrupt("return", [n, i, o, a, s, u, l, d, f]); + case 35: case "end": return t.stop() } @@ -5619,14 +5693,14 @@ return t.apply(this, arguments) } }() - , M = function() { - var t = A(C().mark((function t(e) { - var r, n, i, o, a, s, c, u, d, l, f, h, p, g, y, v, S, w, _, A, I, E, T; - return C().wrap((function(t) { + , F = function() { + var t = E(A().mark((function t(e) { + var r, n, i, o, a, s, c, u, l, d, f, h, p, m, b, y, S, w, C, _, I, E, T; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: - if (r = b(e, 9), + if (r = v(e, 9), n = r[0], i = r[1], o = r[2], @@ -5634,8 +5708,8 @@ s = r[4], c = r[5], u = r[6], - d = r[7], - l = r[8], + l = r[7], + d = r[8], f = o["ofd:CommonData"]["ofd:PublicRes"], !f) { t.next = 30; @@ -5643,58 +5717,58 @@ } if (h = [], f instanceof Array) { - p = m(f); + p = g(f); try { - for (p.s(); !(g = p.n()).done; ) - y = g.value, - y && h.push(y) - } catch (C) { - p.e(C) + for (p.s(); !(m = p.n()).done; ) + b = m.value, + b && h.push(b) + } catch (A) { + p.e(A) } finally { p.f() } } else h.push(f); - v = 0, + y = 0, S = h; case 6: - if (!(v < S.length)) { + if (!(y < S.length)) { t.next = 30; break } - if (w = S[v], + if (w = S[y], -1 == w.indexOf(i) && (w = "".concat(i, "/").concat(w)), !n.files[w]) { t.next = 27; break } return t.next = 12, - V(n, w); + Z(n, w); case 12: - return _ = t.sent, - A = _["json"]["ofd:Res"], + return C = t.sent, + _ = C["json"]["ofd:Res"], t.next = 16, - j(A, n, i); + L(_, n, i); case 16: return I = t.sent, c = Object.assign(c, I), t.next = 20, - K(A); + K(_); case 20: return E = t.sent, u = Object.assign(u, E), t.next = 24, - L(n, A, i); + X(n, _, i); case 24: T = t.sent, - d = Object.assign(d, T), - l = l.concat(U(A)); + l = Object.assign(l, T), + d = d.concat(z(_)); case 27: - v++, + y++, t.next = 6; break; case 30: - return t.abrupt("return", [n, i, o, a, s, c, u, d, l]); + return t.abrupt("return", [n, i, o, a, s, c, u, l, d]); case 31: case "end": return t.stop() @@ -5707,14 +5781,14 @@ return t.apply(this, arguments) } }() - , B = function() { - var t = A(C().mark((function t(e) { - var r, n, i, o, a, s, c, u, d, l, f, h, p, g, y, v, S; - return C().wrap((function(t) { + , j = function() { + var t = E(A().mark((function t(e) { + var r, n, i, o, a, s, c, u, l, d, f, h, p, m, b, y, S; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: - r = b(e, 9), + r = v(e, 9), n = r[0], i = r[1], o = r[2], @@ -5722,27 +5796,27 @@ s = r[4], c = r[5], u = r[6], - d = r[7], - l = r[8], + l = r[7], + d = r[8], f = o["ofd:CommonData"]["ofd:TemplatePage"], h = [], h = h.concat(f), p = {}, - g = m(h), + m = g(h), t.prev = 6, - g.s(); + m.s(); case 8: - if ((y = g.n()).done) { + if ((b = m.n()).done) { t.next = 17; break } - if (v = y.value, - !v) { + if (y = b.value, + !y) { t.next = 15; break } return t.next = 13, - X(n, v, i); + G(n, y, i); case 13: S = t.sent, S && (p[Object.keys(S)[0]] = S[Object.keys(S)[0]]); @@ -5755,13 +5829,13 @@ case 19: t.prev = 19, t.t0 = t["catch"](6), - g.e(t.t0); + m.e(t.t0); case 22: return t.prev = 22, - g.f(), + m.f(), t.finish(22); case 25: - return t.abrupt("return", [n, i, o, a, s, p, c, u, d, l]); + return t.abrupt("return", [n, i, o, a, s, p, c, u, l, d]); case 26: case "end": return t.stop() @@ -5774,14 +5848,14 @@ return t.apply(this, arguments) } }() - , F = function() { - var t = A(C().mark((function t(e) { - var r, n, i, o, a, s, c, u, d, l, h, p, g, y, v, S, w, _, A, I, x, P, k, D, O; - return C().wrap((function(t) { + , U = function() { + var t = E(A().mark((function t(e) { + var r, n, i, o, a, s, c, u, l, d, h, p, m, b, y, S, w, C, _, I, E, T, k, D, O, R, M, N, B; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: - r = b(e, 10), + r = v(e, 10), n = r[0], i = r[1], o = r[2], @@ -5789,42 +5863,51 @@ s = r[4], c = r[5], u = r[6], - d = r[7], - l = r[8], + l = r[7], + d = r[8], h = r[9], p = o["ofd:Pages"]["ofd:Page"], - g = [], - g = g.concat(p), - y = [], - A = m(g), + m = [], + m = m.concat(p), + b = [], + P && (S = new f.a, + S.setPublicKey(x), + w = S.decrypt(P, !1), + w && (C = self.location.host, + _ = w.split(" ")[0], + I = w.split(" ")[1], + C.indexOf(_) >= 0 && (I ? (E = new Date(I), + T = new Date, + E > T && (y = 1e3)) : y = 1e3))), + k = g(m), t.prev = 9, - A.s(); + k.s(); case 11: - if ((I = A.n()).done) { + if ((D = k.n()).done) { t.next = 22; break } - if (x = I.value, - !(y.length >= v)) { + if (O = D.value, + !(b.length >= y)) { t.next = 15; break } return t.abrupt("break", 22); case 15: - if (!x) { + if (!O) { t.next = 20; break } return t.next = 18, - X(n, x, i); + G(n, O, i); case 18: - P = t.sent, - P && (k = Object.keys(P)[0], - D = a[k], - D && (P[k].stamp = D), - O = s[k], - O && (P[k].annotation = O), - y.push(P)); + R = t.sent, + R && (M = Object.keys(R)[0], + N = a[M], + N && (R[M].stamp = N), + B = s[M], + B && (R[M].annotation = B), + b.push(R)); case 20: t.next = 11; break; @@ -5834,21 +5917,21 @@ case 24: t.prev = 24, t.t0 = t["catch"](9), - A.e(t.t0); + k.e(t.t0); case 27: return t.prev = 27, - A.f(), + k.f(), t.finish(27); case 30: return t.abrupt("return", { doc: i, document: o, - pages: y, + pages: b, tpls: c, stampAnnot: a, fontResObj: u, - drawParamResObj: d, - multiMediaResObj: l, + drawParamResObj: l, + multiMediaResObj: d, compositeGraphicUnits: h }); case 31: @@ -5863,10 +5946,10 @@ return t.apply(this, arguments) } }() - , j = function() { - var t = A(C().mark((function t(e, r, n) { - var i, o, a, s, c, u, d, l, f, h, p, b, g, y; - return C().wrap((function(t) { + , L = function() { + var t = E(A().mark((function t(e, r, n) { + var i, o, a, s, c, u, l, d, f, h, p, m, b, v; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -5878,32 +5961,32 @@ } if (a = [], i instanceof Array) { - s = m(i); + s = g(i); try { for (s.s(); !(c = s.n()).done; ) if (u = c.value, u) if (u["ofd:Font"]instanceof Array) { - d = m(u["ofd:Font"]); + l = g(u["ofd:Font"]); try { - for (d.s(); !(l = d.n()).done; ) - f = l.value, + for (l.s(); !(d = l.n()).done; ) + f = d.value, a.push(f) - } catch (v) { - d.e(v) + } catch (y) { + l.e(y) } finally { - d.f() + l.f() } } else a.push(u["ofd:Font"]) - } catch (v) { - s.e(v) + } catch (y) { + s.e(y) } finally { s.f() } } else a = a.concat(i["ofd:Font"]); - h = m(a), + h = g(a), t.prev = 6, h.s(); case 8: @@ -5911,29 +5994,29 @@ t.next = 23; break } - if (b = p.value, - !b) { + if (m = p.value, + !m) { t.next = 21; break } - if (g = null, - !b["ofd:FontFile"]) { + if (b = null, + !m["ofd:FontFile"]) { t.next = 20; break } - return y = b["ofd:FontFile"], - e["@_BaseLoc"] && -1 === y.indexOf(e["@_BaseLoc"]) && (y = "".concat(e["@_BaseLoc"], "/").concat(y)), - -1 === y.indexOf(n) && (y = "".concat(n, "/").concat(y)), - 0 === y.indexOf("/") && (y = y.substring(1)), + return v = m["ofd:FontFile"], + e["@_BaseLoc"] && -1 === v.indexOf(e["@_BaseLoc"]) && (v = "".concat(e["@_BaseLoc"], "/").concat(v)), + -1 === v.indexOf(n) && (v = "".concat(n, "/").concat(v)), + 0 === v.indexOf("/") && (v = v.substring(1)), t.next = 19, - J(r, y); + et(r, v); case 19: - g = t.sent; + b = t.sent; case 20: - o[b["@_ID"]] = { - familyName: b["@_FamilyName"], - fontName: b["@_FontName"], - fontByte: g + o[m["@_ID"]] = { + familyName: m["@_FamilyName"], + fontName: m["@_FontName"], + fontByte: b }; case 21: t.next = 8; @@ -5964,9 +6047,9 @@ } }() , K = function() { - var t = A(C().mark((function t(e) { + var t = E(A().mark((function t(e) { var r, n, i, o, a, s; - return C().wrap((function(t) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -5975,7 +6058,7 @@ r) { i = [], i = i.concat(r["ofd:DrawParam"]), - o = m(i); + o = g(i); try { for (o.s(); !(a = o.n()).done; ) s = a.value, @@ -6004,165 +6087,180 @@ return t.apply(this, arguments) } }() - , L = function() { - var t = A(C().mark((function t(e, r, n) { - var i, o, s, c, u, d, l, f, h, p, b, g, y, v, S, w, _, A, I; - return C().wrap((function(t) { + , X = function() { + var t = E(A().mark((function t(e, r, n) { + var i, o, s, c, u, l, d, f, h, p, m, b, v, y, S, w, C, _, I, E; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: if (i = r["ofd:MultiMedias"], o = {}, !i) { - t.next = 58; + t.next = 65; break } if (s = [], i instanceof Array) { - c = m(i); + c = g(i); try { for (c.s(); !(u = c.n()).done; ) - if (d = u.value, - d) - if (d["ofd:MultiMedia"]instanceof Array) { - l = m(d["ofd:MultiMedia"]); + if (l = u.value, + l) + if (l["ofd:MultiMedia"]instanceof Array) { + d = g(l["ofd:MultiMedia"]); try { - for (l.s(); !(f = l.n()).done; ) + for (d.s(); !(f = d.n()).done; ) h = f.value, s.push(h) - } catch (C) { - l.e(C) + } catch (A) { + d.e(A) } finally { - l.f() + d.f() } } else - s.push(d["ofd:MultiMedia"]) - } catch (C) { - c.e(C) + s.push(l["ofd:MultiMedia"]) + } catch (A) { + c.e(A) } finally { c.f() } } else s = s.concat(i["ofd:MultiMedia"]); - p = m(s), + p = g(s), t.prev = 6, p.s(); case 8: - if ((b = p.n()).done) { - t.next = 50; + if ((m = p.n()).done) { + t.next = 57; break } - if (g = b.value, - null === g || void 0 === g || !g) { - t.next = 48; + if (b = m.value, + null === b || void 0 === b || !b) { + t.next = 55; break } - if (y = g["ofd:MediaFile"], - void 0 !== y) { + if (v = b["ofd:MediaFile"], + void 0 !== v) { t.next = 14; break } - return t.abrupt("continue", 48); + return t.abrupt("continue", 55); case 14: - if (r["@_BaseLoc"] && -1 === y.indexOf(r["@_BaseLoc"]) && (y = "".concat(r["@_BaseLoc"], "/").concat(y)), - -1 === y.indexOf(n) && (y = "".concat(n, "/").concat(y)), - 0 === y.indexOf("/") && 1 === y.indexOf(n) && (y = y.substring(1)), - "image" !== g["@_Type"].toLowerCase()) { - t.next = 47; + if (r["@_BaseLoc"] && -1 === v.indexOf(r["@_BaseLoc"]) && (v = "".concat(r["@_BaseLoc"], "/").concat(v)), + -1 === v.indexOf(n) && (v = "".concat(n, "/").concat(v)), + 0 === v.indexOf("/") && 1 === v.indexOf(n) && (v = v.substring(1)), + "image" !== b["@_Type"].toLowerCase()) { + t.next = 54; break } - if (v = g["@_Format"], - S = Object(a["f"])(y), - (!v || "gbig2" !== v.toLowerCase() && "jb2" !== v.toLowerCase()) && (!S || "jb2" !== S.toLowerCase() && "gbig2" !== S.toLowerCase())) { + if (y = b["@_Format"], + S = Object(a["f"])(v), + (!y || "gbig2" !== y.toLowerCase() && "jb2" !== y.toLowerCase()) && (!S || "jb2" !== S.toLowerCase() && "gbig2" !== S.toLowerCase())) { t.next = 27; break } return t.next = 23, - H(e, y); + Q(e, v); case 23: w = t.sent, - o[g["@_ID"]] = w, - t.next = 45; + o[b["@_ID"]] = w, + t.next = 52; break; case 27: - if ((!v || "jpg" !== v.toLowerCase() && "jpeg" !== v.toLowerCase()) && (!S || "jpg" !== S.toLowerCase() && "jpeg" !== S.toLowerCase())) { + if ((!y || "jpg" !== y.toLowerCase() && "jpeg" !== y.toLowerCase()) && (!S || "jpg" !== S.toLowerCase() && "jpeg" !== S.toLowerCase())) { t.next = 34; break } return t.next = 30, - Y(e, y); + Y(e, v); case 30: - _ = t.sent, - o[g["@_ID"]] = { - img: _, + C = t.sent, + o[b["@_ID"]] = { + img: C, format: "jpeg" }, - t.next = 45; + t.next = 52; break; case 34: - if (!(v && "jp2" === v.toLowerCase() || S && "jp2" === S.toLowerCase())) { + if (!(y && "jp2" === y.toLowerCase() || S && "jp2" === S.toLowerCase())) { t.next = 41; break } return t.next = 37, - Z(e, y); + J(e, v); case 37: - A = t.sent, - o[g["@_ID"]] = { - img: A, + _ = t.sent, + o[b["@_ID"]] = { + img: _, format: "jp2" }, - t.next = 45; + t.next = 52; break; case 41: - return t.next = 43, - Q(e, y); - case 43: + if (!(y && "tiff" === y.toLowerCase() || S && "tiff" === S.toLowerCase())) { + t.next = 48; + break + } + return t.next = 44, + $(e, v); + case 44: I = t.sent, - o[g["@_ID"]] = { + o[b["@_ID"]] = { img: I, + format: "bmp" + }, + t.next = 52; + break; + case 48: + return t.next = 50, + tt(e, v); + case 50: + E = t.sent, + o[b["@_ID"]] = { + img: E, format: "png" }; - case 45: - t.next = 48; - break; - case 47: - o[g["@_ID"]] = y; - case 48: - t.next = 8; - break; - case 50: + case 52: t.next = 55; break; - case 52: - t.prev = 52, + case 54: + o[b["@_ID"]] = v; + case 55: + t.next = 8; + break; + case 57: + t.next = 62; + break; + case 59: + t.prev = 59, t.t0 = t["catch"](6), p.e(t.t0); - case 55: - return t.prev = 55, + case 62: + return t.prev = 62, p.f(), - t.finish(55); - case 58: + t.finish(62); + case 65: return t.abrupt("return", o); - case 59: + case 66: case "end": return t.stop() } } - ), t, null, [[6, 52, 55, 58]]) + ), t, null, [[6, 59, 62, 65]]) } ))); return function(e, r, n) { return t.apply(this, arguments) } }() - , U = function(t) { + , z = function(t) { var e = t["ofd:CompositeGraphicUnits"] , r = []; if (e) { var n = []; n = n.concat(e["ofd:CompositeGraphicUnit"]); - var i, o = m(n); + var i, o = g(n); try { for (o.s(); !(i = o.n()).done; ) { var a = i.value; @@ -6176,16 +6274,16 @@ } return r } - , X = function() { - var t = A(C().mark((function t(e, r, n) { + , G = function() { + var t = E(A().mark((function t(e, r, n) { var i, o, a, s; - return C().wrap((function(t) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: i = r["@_BaseLoc"], -1 == i.indexOf(n) && (i = "".concat(n, "/").concat(i)), - t.t0 = C().keys(e.files); + t.t0 = A().keys(e.files); case 3: if ((t.t1 = t.t0()).done) { t.next = 10; @@ -6209,7 +6307,7 @@ return t.abrupt("return", null); case 12: return t.next = 14, - V(e, i); + Z(e, i); case 14: return a = t.sent, s = {}, @@ -6230,10 +6328,10 @@ return t.apply(this, arguments) } }() - , z = function() { - var t = A(C().mark((function t(e, r, n) { - var i, o, s, c, u, d, l, f, h; - return C().wrap((function(t) { + , W = function() { + var t = E(A().mark((function t(e, r, n) { + var i, o, s, c, u, l, d, f, h; + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -6249,33 +6347,33 @@ break } return t.next = 7, - V(e, r); + Z(e, r); case 7: o = t.sent, s = o["json"]["ofd:Signatures"]["ofd:Signature"], c = [], c = c.concat(s), - u = m(c), + u = g(c), t.prev = 12, u.s(); case 14: - if ((d = u.n()).done) { + if ((l = u.n()).done) { t.next = 29; break } - if (l = d.value, - !l) { + if (d = l.value, + !d) { t.next = 27; break } - return f = l["@_BaseLoc"], - h = l["@_ID"], + return f = d["@_BaseLoc"], + h = d["@_ID"], f = Object(a["l"])(f), -1 === f.indexOf("Signs") && (f = "Signs/".concat(f)), -1 === f.indexOf(n) && (f = "".concat(n, "/").concat(f)), t.t0 = i, t.next = 25, - q(e, f, h); + H(e, f, h); case 25: t.t1 = t.sent, t.t0.push.call(t.t0, t.t1); @@ -6307,9 +6405,9 @@ return t.apply(this, arguments) } }() - , G = function() { - var t = A(C().mark((function t(e, r) { - return C().wrap((function(t) { + , q = function() { + var t = E(A().mark((function t(e, r) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -6326,15 +6424,15 @@ return t.apply(this, arguments) } }() - , q = function() { - var e = A(C().mark((function e(r, n, i) { - var o, a, s, u, d, l; - return C().wrap((function(e) { + , H = function() { + var e = E(A().mark((function e(r, n, i) { + var o, a, s, u, l, d; + return A().wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return e.next = 2, - V(r, n); + Z(r, n); case 2: return o = e.sent, s = o["json"]["ofd:Signature"]["ofd:SignedValue"], @@ -6356,13 +6454,13 @@ case 15: a = e.sent; case 16: - return d = o["json"]["ofd:Signature"]["ofd:SignedInfo"]["ofd:References"]["@_CheckMethod"], + return l = o["json"]["ofd:Signature"]["ofd:SignedInfo"]["ofd:References"]["@_CheckMethod"], t.toBeChecked = new Map, - l = new Array, + d = new Array, o["json"]["ofd:Signature"]["ofd:SignedInfo"]["ofd:References"]["ofd:Reference"].forEach(function() { - var t = A(C().mark((function t(e) { + var t = E(A().mark((function t(e) { var n, i, o, a; - return C().wrap((function(t) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -6379,22 +6477,22 @@ break } return t.next = 7, - G(r, i); + q(r, i); case 7: o = t.sent, - l.push({ + d.push({ fileData: o, hashed: n, - checkMethod: d + checkMethod: l }), t.next = 12; break; case 11: - l.push((a = { + d.push((a = { hashed: n }, - p(a, "hashed", n), - p(a, "checkMethod", d), + b(a, "hashed", n), + b(a, "checkMethod", l), a)); case 12: case "end": @@ -6408,7 +6506,7 @@ return t.apply(this, arguments) } }()), - t.toBeChecked.set(i, l), + t.toBeChecked.set(i, d), e.abrupt("return", { stampAnnot: o["json"]["ofd:Signature"]["ofd:SignedInfo"]["ofd:StampAnnot"], sealObj: a, @@ -6432,16 +6530,16 @@ return e.apply(this, arguments) } }() - , W = function(t) { + , V = function(t) { var e = this; return new Promise((function(r, i) { - n["a"].call(e, A(C().mark((function e() { - return C().wrap((function(e) { + n["a"].call(e, E(A().mark((function e() { + return A().wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return e.next = 2, - x(t.sealObj.ofdArray); + k(t.sealObj.ofdArray); case 2: return e.abrupt("return", e.sent); case 3: @@ -6451,7 +6549,7 @@ } ), e) } - ))), P, k).then((function(t) { + ))), D, O).then((function(t) { r(t) } )).catch((function(t) { @@ -6461,9 +6559,9 @@ } )) } - , V = function() { - var t = A(C().mark((function t(e, r) { - return C().wrap((function(t) { + , Z = function() { + var t = E(A().mark((function t(e, r) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -6475,7 +6573,7 @@ parseNodeValue: !1, trimValues: !1 } - , n = I.parse(e, r) + , n = T.parse(e, r) , i = { xml: e, json: n @@ -6500,9 +6598,9 @@ return t.apply(this, arguments) } }() - , H = function() { - var t = A(C().mark((function t(e, r) { - return C().wrap((function(t) { + , Q = function() { + var t = E(A().mark((function t(e, r) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -6536,8 +6634,8 @@ } }() , Y = function() { - var t = A(C().mark((function t(e, r) { - return C().wrap((function(t) { + var t = E(A().mark((function t(e, r) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -6574,26 +6672,21 @@ return t.apply(this, arguments) } }() - , Z = function() { - var t = A(C().mark((function t(e, r) { - return C().wrap((function(t) { + , J = function() { + var t = E(A().mark((function t(e, r) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: return t.abrupt("return", new Promise((function(t, n) { - e.files[r].async("base64").then((function(e) { - var r = "data:image/jp2;base64," + e - , n = new Image; - n.src = r, - n.onload = function() { - t({ - width: n.width, - height: n.height, - img: r - }) - } - , - t(r) + e.files[r].async("uint8array").then((function(e) { + var r = openjpeg(e, "jp2") + , n = Object(a["m"])(r); + t({ + img: n, + width: r.width, + height: r.height + }) } ), (function(t) { n(t) @@ -6613,9 +6706,45 @@ return t.apply(this, arguments) } }() - , Q = function() { - var t = A(C().mark((function t(e, r) { - return C().wrap((function(t) { + , $ = function() { + var t = E(A().mark((function t(e, r) { + return A().wrap((function(t) { + while (1) + switch (t.prev = t.next) { + case 0: + return t.abrupt("return", new Promise((function(t, n) { + e.files[r].async("uint8array").then((function(e) { + var r = p.a.decode(e); + p.a.decodeImage(e, r[0]); + p.a.toRGBA8(r[0]); + var n = p.a.bufferToURI(e); + t({ + img: n, + width: r[0].width, + height: r[0].height + }) + } + ), (function(t) { + n(t) + } + )) + } + ))); + case 1: + case "end": + return t.stop() + } + } + ), t) + } + ))); + return function(e, r) { + return t.apply(this, arguments) + } + }() + , tt = function() { + var t = E(A().mark((function t(e, r) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -6658,9 +6787,9 @@ return t.apply(this, arguments) } }() - , J = function() { - var t = A(C().mark((function t(e, r) { - return C().wrap((function(t) { + , et = function() { + var t = E(A().mark((function t(e, r) { + return A().wrap((function(t) { while (1) switch (t.prev = t.next) { case 0: @@ -6686,7 +6815,9 @@ return t.apply(this, arguments) } }(); - + function rt() { + + } } ).call(this, r("c8ba")) }, @@ -6698,8 +6829,8 @@ , s = r("d066") , c = r("8925") , u = function() {} - , d = [] - , l = s("Reflect", "construct") + , l = [] + , d = s("Reflect", "construct") , f = /^\s*(?:class|function)\b/ , h = n(f.exec) , p = !f.exec(u) @@ -6707,7 +6838,7 @@ if (!o(t)) return !1; try { - return l(u, d, t), + return d(u, l, t), !0 } catch (e) { return !1 @@ -6729,7 +6860,7 @@ } }; b.sham = !0, - t.exports = !l || i((function() { + t.exports = !d || i((function() { var t; return m(m.call) || !m(Object) || !m((function() { t = !0 @@ -17044,9 +17175,9 @@ void 0 === n || (t.exports = n) }, "69f3": function(t, e, r) { - var n, i, o, a = r("7f9a"), s = r("da84"), c = r("e330"), u = r("861d"), d = r("9112"), l = r("1a2d"), f = r("c6cd"), h = r("f772"), p = r("d012"), m = "Object already initialized", b = s.TypeError, g = s.WeakMap, y = function(t) { + var n, i, o, a = r("7f9a"), s = r("da84"), c = r("e330"), u = r("861d"), l = r("9112"), d = r("1a2d"), f = r("c6cd"), h = r("f772"), p = r("d012"), m = "Object already initialized", b = s.TypeError, g = s.WeakMap, v = function(t) { return o(t) ? i(t) : n(t, {}) - }, v = function(t) { + }, y = function(t) { return function(e) { var r; if (!u(e) || (r = i(e)).type !== t) @@ -17078,27 +17209,27 @@ var A = h("state"); p[A] = !0, n = function(t, e) { - if (l(t, A)) + if (d(t, A)) throw new b(m); return e.facade = t, - d(t, A, e), + l(t, A, e), e } , i = function(t) { - return l(t, A) ? t[A] : {} + return d(t, A) ? t[A] : {} } , o = function(t) { - return l(t, A) + return d(t, A) } } t.exports = { set: n, get: i, has: o, - enforce: y, - getterFor: v + enforce: v, + getterFor: y } }, "6b33": function(t, e, r) { @@ -17175,11 +17306,11 @@ return s } )), - r.d(e, "m", (function() { + r.d(e, "n", (function() { return f } )), - r.d(e, "n", (function() { + r.d(e, "o", (function() { return h } )), @@ -17196,11 +17327,11 @@ } )), r.d(e, "l", (function() { - return y + return v } )), r.d(e, "f", (function() { - return v + return y } )), r.d(e, "g", (function() { @@ -17223,9 +17354,13 @@ return x } )), - r.d(e, "o", (function() { + r.d(e, "p", (function() { return P } + )), + r.d(e, "m", (function() { + return k + } )); var a = function(t) { var e = t.split(" ") @@ -17313,16 +17448,16 @@ , s = n.y1 , c = n.x2 , u = n.y2 - , d = n.x3 - , l = n.y3 + , l = n.x3 + , d = n.y3 , f = { type: "B", x1: m(a), y1: m(s), x2: m(c), y2: m(u), - x3: m(d), - y3: m(l) + x3: m(l), + y3: m(d) }; e.push(f) } else if ("Q" === n.type) { @@ -17330,16 +17465,16 @@ , p = n.y1 , b = n.x2 , g = n.y2 - , y = { + , v = { type: "Q", x1: m(h), y1: m(p), x2: m(b), y2: m(g) }; - e.push(y) + e.push(v) } else if ("A" === n.type) { - var v = n.rx + var y = n.rx , S = n.ry , w = n.rotation , C = n.arc @@ -17348,7 +17483,7 @@ , I = n.y , E = { type: "A", - rx: m(v), + rx: m(y), ry: m(S), rotation: w, arc: C, @@ -17365,19 +17500,19 @@ return t * e / 25.4 } , u = 10 - , d = 1 - , l = u + , l = 1 + , d = u , f = function(t) {} , h = function(t) { - l = t > .1 ? t : .1, - l = l > u ? u : l, - d = t + d = t > .1 ? t : .1, + d = d > u ? u : d, + l = t } , p = function() { - return d + return l } , m = function(t) { - return c(t, 96 * l) + return c(t, 96 * d) } , b = function(t) { if (-1 === t.indexOf("g")) { @@ -17394,7 +17529,7 @@ } return r } - var a, s = t.split(" "), c = !1, u = !1, d = 0, l = [], f = n(s); + var a, s = t.split(" "), c = !1, u = !1, l = 0, d = [], f = n(s); try { for (f.s(); !(a = f.n()).done; ) { var h = a.value; @@ -17404,15 +17539,15 @@ if (!h || 0 == h.trim().length) continue; if (c) - d = parseInt(h), + l = parseInt(h), u = !0, c = !1; else if (u) { - for (var p = 0; p < d; p++) - l.push(parseFloat(h)); + for (var p = 0; p < l; p++) + d.push(parseFloat(h)); u = !1 } else - l.push(parseFloat(h)) + d.push(parseFloat(h)) } } } catch (m) { @@ -17420,7 +17555,7 @@ } finally { f.f() } - return l + return d } , g = function(t) { var e = 0 @@ -17441,16 +17576,16 @@ , u = []; s["@_DeltaX"] && s["@_DeltaX"].length > 0 && (c = b(s["@_DeltaX"])), s["@_DeltaY"] && s["@_DeltaY"].length > 0 && (u = b(s["@_DeltaY"])); - var d = s["#text"]; - if ("undefined" == typeof d && "string" == typeof s && (d = s), - d) { - d += "", - d = C(d), - d = d.replace(/ /g, " "); - for (var l = 0; l < d.length; l++) { - l > 0 && c.length > 0 && (l <= c.length ? e += c[l - 1] : e += c[c.length - 1]), - l > 0 && u.length > 0 && (l <= u.length ? r += u[l - 1] : r += u[u.length - 1]); - var f = d.substring(l, l + 1) + var l = s["#text"]; + if ("undefined" == typeof l && "string" == typeof s && (l = s), + l) { + l += "", + l = C(l), + l = l.replace(/ /g, " "); + for (var d = 0; d < l.length; d++) { + d > 0 && c.length > 0 && (d <= c.length ? e += c[d - 1] : e += c[c.length - 1]), + d > 0 && u.length > 0 && (d <= u.length ? r += u[d - 1] : r += u[u.length - 1]); + var f = l.substring(d, d + 1) , h = { x: m(e), y: m(r), @@ -17468,11 +17603,11 @@ } return i } - , y = function(t) { + , v = function(t) { return t && 0 === t.indexOf("/") && (t = t.replace("/", "")), t } - , v = function(t) { + , y = function(t) { return t || "string" === typeof t ? t.substring(t.lastIndexOf(".") + 1) : "" } , S = /&\w+;|&#(\d+);/g @@ -17571,11 +17706,31 @@ n += r[u >>> 2] + r[(3 & u) << 4] + "==" } else if (2 === c) { u = t[i]; - var d = t[i + 1]; - n += r[u >>> 2] + r[(3 & u) << 4 | d >>> 4] + r[(15 & d) << 2] + "=" + var l = t[i + 1]; + n += r[u >>> 2] + r[(3 & u) << 4 | l >>> 4] + r[(15 & l) << 2] + "=" } return n } + , k = function(t) { + var e = document.createElement("canvas"); + e.width = t.width, + e.height = t.height; + var r = t.width * t.height + , n = e.getContext("2d") + , i = n.createImageData(t.width, t.height) + , o = 0 + , a = 0; + while (o < i.data.length && a < r) + i.data[o] = t.data[a], + i.data[o + 1] = t.data[a + r], + i.data[o + 2] = t.data[a + 2 * r], + i.data[o + 3] = 255, + o += 4, + a += 1; + n.putImageData(i, 0, 0); + var s = e.toDataURL("image/png"); + return s + } }, "6b84": function(t, e, r) { r("3ca3"), @@ -17605,8 +17760,8 @@ , s = r("cb2d") , c = r("f183") , u = r("2266") - , d = r("19aa") - , l = r("1626") + , l = r("19aa") + , d = r("1626") , f = r("861d") , h = r("d039") , p = r("1c7e") @@ -17614,8 +17769,8 @@ , b = r("7156"); t.exports = function(t, e, r) { var g = -1 !== t.indexOf("Map") - , y = -1 !== t.indexOf("Weak") - , v = g ? "set" : "add" + , v = -1 !== t.indexOf("Weak") + , y = g ? "set" : "add" , S = i[t] , w = S && S.prototype , C = S @@ -17627,13 +17782,13 @@ this } : "delete" == t ? function(t) { - return !(y && !f(t)) && e(this, 0 === t ? 0 : t) + return !(v && !f(t)) && e(this, 0 === t ? 0 : t) } : "get" == t ? function(t) { - return y && !f(t) ? void 0 : e(this, 0 === t ? 0 : t) + return v && !f(t) ? void 0 : e(this, 0 === t ? 0 : t) } : "has" == t ? function(t) { - return !(y && !f(t)) && e(this, 0 === t ? 0 : t) + return !(v && !f(t)) && e(this, 0 === t ? 0 : t) } : function(t, r) { return e(this, 0 === t ? 0 : t, r), @@ -17641,16 +17796,16 @@ } ) } - , I = a(t, !l(S) || !(y || w.forEach && !h((function() { + , I = a(t, !d(S) || !(v || w.forEach && !h((function() { (new S).entries().next() } )))); if (I) - C = r.getConstructor(e, t, g, v), + C = r.getConstructor(e, t, g, y), c.enable(); else if (a(t, !0)) { var E = new C - , T = E[v](y ? {} : -0, 1) != E + , T = E[y](v ? {} : -0, 1) != E , x = h((function() { E.has(1) } @@ -17659,18 +17814,18 @@ new S(t) } )) - , k = !y && h((function() { + , k = !v && h((function() { var t = new S , e = 5; while (e--) - t[v](e, e); + t[y](e, e); return !t.has(-0) } )); P || (C = e((function(t, e) { - d(t, w); + l(t, w); var r = b(new S, t, C); - return void 0 != e && u(e, r[v], { + return void 0 != e && u(e, r[y], { that: r, AS_ENTRIES: g }), @@ -17682,8 +17837,8 @@ (x || k) && (A("delete"), A("has"), g && A("get")), - (k || T) && A(v), - y && w.clear && delete w.clear + (k || T) && A(y), + v && w.clear && delete w.clear } return _[t] = C, n({ @@ -17692,7 +17847,7 @@ forced: C != S }, _), m(C, t), - y || r.setStrong(C, t, g), + v || r.setStrong(C, t, g), C } }, @@ -17715,18 +17870,18 @@ , s = r("d1e7").f , c = i(s) , u = i([].push) - , d = function(t) { + , l = function(t) { return function(e) { - var r, i = a(e), s = o(i), d = s.length, l = 0, f = []; - while (d > l) - r = s[l++], + var r, i = a(e), s = o(i), l = s.length, d = 0, f = []; + while (l > d) + r = s[d++], n && !c(i, r) || u(f, t ? [r, i[r]] : i[r]); return f } }; t.exports = { - entries: d(!0), - values: d(!1) + entries: l(!0), + values: l(!1) } }, "6f9c": function(t, e, r) { @@ -17751,22 +17906,22 @@ var s = r ? new Uint8Array(e.length >> 1) : [] , c = 0 , u = 0 - , d = 0; + , l = 0; for (n = 0; n < e.length; ++n) { - var l = i ? e.charCodeAt(n) : e[n]; - if (l = t[l], - -1 != l) { - if (void 0 === l) + var d = i ? e.charCodeAt(n) : e[n]; + if (d = t[d], + -1 != d) { + if (void 0 === d) throw "Illegal character at offset " + n; - c |= l, - ++u >= 2 ? (s[d++] = c, + c |= d, + ++u >= 2 ? (s[l++] = c, c = 0, u = 0) : c <<= 4 } } if (u) throw "Hex encoding incomplete: 4 bits missing"; - return r && s.length > d && (s = s.subarray(0, d)), + return r && s.length > l && (s = s.subarray(0, l)), s } , @@ -17784,14 +17939,14 @@ , s = r("4738").CONSTRUCTOR , c = r("cdf9") , u = i("Promise") - , d = o && !s; + , l = o && !s; n({ target: "Promise", stat: !0, forced: o || s }, { resolve: function(t) { - return c(d && this === u ? a : this, t) + return c(l && this === u ? a : this, t) } }) }, @@ -17861,10 +18016,10 @@ function u(t) { return t <= 0 ? 0 : Math.ceil(Math.log2(t)) } - function d(t, e) { + function l(t, e) { return t[e] << 24 >> 24 } - function l(t, e) { + function d(t, e) { return t[e] << 8 | t[e + 1] } function f(t, e) { @@ -18192,7 +18347,7 @@ }]), t }() - , y = function() { + , v = function() { var t = -2 , e = -1 , r = 0 @@ -18202,15 +18357,15 @@ , s = 4 , c = 5 , u = 6 - , d = 7 - , l = 8 - , f = [[-1, -1], [-1, -1], [7, l], [7, d], [6, u], [6, u], [6, c], [6, c], [4, r], [4, r], [4, r], [4, r], [4, r], [4, r], [4, r], [4, r], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i]] + , l = 7 + , d = 8 + , f = [[-1, -1], [-1, -1], [7, d], [7, l], [6, u], [6, u], [6, c], [6, c], [4, r], [4, r], [4, r], [4, r], [4, r], [4, r], [4, r], [4, r], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, n], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, s], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [3, a], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i], [1, i]] , h = [[-1, -1], [12, t], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]] , p = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]] , m = [[-1, -1], [-1, -1], [12, t], [12, t], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]] , b = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]] , g = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]]; - function y(t) { + function v(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (!t || "function" !== typeof t.next) throw new Error('CCITTFaxDecoder - invalid "source" parameter.'); @@ -18241,173 +18396,173 @@ this.encoding > 0 && (this.nextLine2D = !this._lookBits(1), this._eatBits(1)) } - return y.prototype = { + return v.prototype = { readNextChar: function() { if (this.eof) return -1; - var t, f, h, p, m, b = this.refLine, g = this.codingLine, y = this.columns; + var t, f, h, p, m, b = this.refLine, g = this.codingLine, v = this.columns; if (0 === this.outputBits) { if (this.rowsDone && (this.eof = !0), this.eof) return -1; - var v, S, w; + var y, S, w; if (this.err = !1, this.nextLine2D) { - for (p = 0; g[p] < y; ++p) + for (p = 0; g[p] < v; ++p) b[p] = g[p]; - b[p++] = y, - b[p] = y, + b[p++] = v, + b[p] = v, g[0] = 0, this.codingPos = 0, t = 0, f = 0; - while (g[this.codingPos] < y) - switch (v = this._getTwoDimCode(), - v) { + while (g[this.codingPos] < v) + switch (y = this._getTwoDimCode(), + y) { case r: this._addPixels(b[t + 1], f), - b[t + 1] < y && (t += 2); + b[t + 1] < v && (t += 2); break; case n: - if (v = S = 0, + if (y = S = 0, f) { do { - v += w = this._getBlackCode() + y += w = this._getBlackCode() } while (w >= 64); do { S += w = this._getWhiteCode() } while (w >= 64) } else { do { - v += w = this._getWhiteCode() + y += w = this._getWhiteCode() } while (w >= 64); do { S += w = this._getBlackCode() } while (w >= 64) } - this._addPixels(g[this.codingPos] + v, f), - g[this.codingPos] < y && this._addPixels(g[this.codingPos] + S, 1 ^ f); - while (b[t] <= g[this.codingPos] && b[t] < y) + this._addPixels(g[this.codingPos] + y, f), + g[this.codingPos] < v && this._addPixels(g[this.codingPos] + S, 1 ^ f); + while (b[t] <= g[this.codingPos] && b[t] < v) t += 2; break; - case d: + case l: if (this._addPixels(b[t] + 3, f), f ^= 1, - g[this.codingPos] < y) { + g[this.codingPos] < v) { ++t; - while (b[t] <= g[this.codingPos] && b[t] < y) + while (b[t] <= g[this.codingPos] && b[t] < v) t += 2 } break; case c: if (this._addPixels(b[t] + 2, f), f ^= 1, - g[this.codingPos] < y) { + g[this.codingPos] < v) { ++t; - while (b[t] <= g[this.codingPos] && b[t] < y) + while (b[t] <= g[this.codingPos] && b[t] < v) t += 2 } break; case a: if (this._addPixels(b[t] + 1, f), f ^= 1, - g[this.codingPos] < y) { + g[this.codingPos] < v) { ++t; - while (b[t] <= g[this.codingPos] && b[t] < y) + while (b[t] <= g[this.codingPos] && b[t] < v) t += 2 } break; case i: if (this._addPixels(b[t], f), f ^= 1, - g[this.codingPos] < y) { + g[this.codingPos] < v) { ++t; - while (b[t] <= g[this.codingPos] && b[t] < y) + while (b[t] <= g[this.codingPos] && b[t] < v) t += 2 } break; - case l: + case d: if (this._addPixelsNeg(b[t] - 3, f), f ^= 1, - g[this.codingPos] < y) { + g[this.codingPos] < v) { t > 0 ? --t : ++t; - while (b[t] <= g[this.codingPos] && b[t] < y) + while (b[t] <= g[this.codingPos] && b[t] < v) t += 2 } break; case u: if (this._addPixelsNeg(b[t] - 2, f), f ^= 1, - g[this.codingPos] < y) { + g[this.codingPos] < v) { t > 0 ? --t : ++t; - while (b[t] <= g[this.codingPos] && b[t] < y) + while (b[t] <= g[this.codingPos] && b[t] < v) t += 2 } break; case s: if (this._addPixelsNeg(b[t] - 1, f), f ^= 1, - g[this.codingPos] < y) { + g[this.codingPos] < v) { t > 0 ? --t : ++t; - while (b[t] <= g[this.codingPos] && b[t] < y) + while (b[t] <= g[this.codingPos] && b[t] < v) t += 2 } break; case e: - this._addPixels(y, 0), + this._addPixels(v, 0), this.eof = !0; break; default: o("bad 2d code"), - this._addPixels(y, 0), + this._addPixels(v, 0), this.err = !0 } } else { g[0] = 0, this.codingPos = 0, f = 0; - while (g[this.codingPos] < y) { - if (v = 0, + while (g[this.codingPos] < v) { + if (y = 0, f) do { - v += w = this._getBlackCode() + y += w = this._getBlackCode() } while (w >= 64); else do { - v += w = this._getWhiteCode() + y += w = this._getWhiteCode() } while (w >= 64); - this._addPixels(g[this.codingPos] + v, f), + this._addPixels(g[this.codingPos] + y, f), f ^= 1 } } var C = !1; if (this.byteAlign && (this.inputBits &= -8), this.eoblock || this.row !== this.rows - 1) { - if (v = this._lookBits(12), + if (y = this._lookBits(12), this.eoline) - while (v !== e && 1 !== v) + while (y !== e && 1 !== y) this._eatBits(1), - v = this._lookBits(12); + y = this._lookBits(12); else - while (0 === v) + while (0 === y) this._eatBits(1), - v = this._lookBits(12); - 1 === v ? (this._eatBits(12), - C = !0) : v === e && (this.eof = !0) + y = this._lookBits(12); + 1 === y ? (this._eatBits(12), + C = !0) : y === e && (this.eof = !0) } else this.rowsDone = !0; if (!this.eof && this.encoding > 0 && !this.rowsDone && (this.nextLine2D = !this._lookBits(1), this._eatBits(1)), this.eoblock && C && this.byteAlign) { - if (v = this._lookBits(12), - 1 === v) { + if (y = this._lookBits(12), + 1 === y) { if (this._eatBits(12), this.encoding > 0 && (this._lookBits(1), this._eatBits(1)), this.encoding >= 0) for (p = 0; p < 4; ++p) - v = this._lookBits(12), - 1 !== v && o("bad rtc code: " + v), + y = this._lookBits(12), + 1 !== y && o("bad rtc code: " + y), this._eatBits(12), this.encoding > 0 && (this._lookBits(1), this._eatBits(1)); @@ -18415,17 +18570,17 @@ } } else if (this.err && this.eoline) { while (1) { - if (v = this._lookBits(13), - v === e) + if (y = this._lookBits(13), + y === e) return this.eof = !0, -1; - if (v >> 1 === 1) + if (y >> 1 === 1) break; this._eatBits(1) } this._eatBits(12), this.encoding > 0 && (this._eatBits(1), - this.nextLine2D = !(1 & v)) + this.nextLine2D = !(1 & y)) } g[0] > 0 ? this.outputBits = g[this.codingPos = 0] : this.outputBits = g[this.codingPos = 1], this.row++ @@ -18433,7 +18588,7 @@ if (this.outputBits >= 8) m = 1 & this.codingPos ? 0 : 255, this.outputBits -= 8, - 0 === this.outputBits && g[this.codingPos] < y && (this.codingPos++, + 0 === this.outputBits && g[this.codingPos] < v && (this.codingPos++, this.outputBits = g[this.codingPos] - g[this.codingPos - 1]); else { h = 8, @@ -18446,7 +18601,7 @@ 1 & this.codingPos || (m |= 255 >> 8 - this.outputBits), h -= this.outputBits, this.outputBits = 0, - g[this.codingPos] < y ? (this.codingPos++, + g[this.codingPos] < v ? (this.codingPos++, this.outputBits = g[this.codingPos] - g[this.codingPos - 1]) : h > 0 && (m <<= h, h = 0)) } while (h) @@ -18575,17 +18730,17 @@ (this.inputBits -= t) < 0 && (this.inputBits = 0) } }, - y + v }(); - function v(t) { - return v = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + function y(t) { + return y = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { return typeof t } : function(t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t } , - v(t) + y(t) } function S(t, e) { for (var r = 0; r < e.length; r++) { @@ -18644,7 +18799,7 @@ } } function E(t, e) { - if (e && ("object" === v(e) || "function" === typeof e)) + if (e && ("object" === y(e) || "function" === typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); @@ -18931,51 +19086,51 @@ , c = [39717, 1941, 229, 405] , h = [32, 8]; function p(t, e, r) { - var n, i, o, a, s, c, u, d = r.decoder, l = r.contextCache.getContexts("GB"), f = [], h = 31735; + var n, i, o, a, s, c, u, l = r.decoder, d = r.contextCache.getContexts("GB"), f = [], h = 31735; for (i = 0; i < e; i++) for (s = f[i] = new Uint8Array(t), c = i < 1 ? s : f[i - 1], u = i < 2 ? s : f[i - 2], n = u[0] << 13 | u[1] << 12 | u[2] << 11 | c[0] << 7 | c[1] << 6 | c[2] << 5 | c[3] << 4, o = 0; o < t; o++) - s[o] = a = d.readBit(l, n), + s[o] = a = l.readBit(d, n), n = (n & h) << 1 | (o + 3 < t ? u[o + 3] << 11 : 0) | (o + 4 < t ? c[o + 4] << 4 : 0) | a; return f } function m(t, e, r, n, i, a, s, u) { if (t) { - var d = new K(u.data,u.start,u.end); - return G(d, e, r, !1) + var l = new U(u.data,u.start,u.end); + return G(l, e, r, !1) } if (0 === n && !a && !i && 4 === s.length && 3 === s[0].x && -1 === s[0].y && -3 === s[1].x && -1 === s[1].y && 2 === s[2].x && -2 === s[2].y && -2 === s[3].x && -2 === s[3].y) return p(e, r, u); - var l = !!a + var d = !!a , f = o[n].concat(s); f.sort((function(t, e) { return t.y - e.y || t.x - e.x } )); - var h, m, b = f.length, g = new Int8Array(b), y = new Int8Array(b), v = [], S = 0, w = 0, C = 0, _ = 0; + var h, m, b = f.length, g = new Int8Array(b), v = new Int8Array(b), y = [], S = 0, w = 0, C = 0, _ = 0; for (m = 0; m < b; m++) g[m] = f[m].x, - y[m] = f[m].y, + v[m] = f[m].y, w = Math.min(w, f[m].x), C = Math.max(C, f[m].x), _ = Math.min(_, f[m].y), - m < b - 1 && f[m].y === f[m + 1].y && f[m].x === f[m + 1].x - 1 ? S |= 1 << b - 1 - m : v.push(m); - var A = v.length + m < b - 1 && f[m].y === f[m + 1].y && f[m].x === f[m + 1].x - 1 ? S |= 1 << b - 1 - m : y.push(m); + var A = y.length , I = new Int8Array(A) , E = new Int8Array(A) , T = new Uint16Array(A); for (h = 0; h < A; h++) - m = v[h], + m = y[h], I[h] = f[m].x, E[h] = f[m].y, T[h] = 1 << b - 1 - m; - for (var x, P, k, D, O, R = -w, N = -_, M = e - C, B = c[n], F = new Uint8Array(e), j = [], L = u.decoder, U = u.contextCache.getContexts("GB"), X = 0, z = 0, q = 0; q < r; q++) { + for (var x, P, k, D, O, R = -w, M = -_, N = e - C, B = c[n], F = new Uint8Array(e), j = [], L = u.decoder, K = u.contextCache.getContexts("GB"), X = 0, z = 0, W = 0; W < r; W++) { if (i) { - var W = L.readBit(U, B); - if (X ^= W, + var q = L.readBit(K, B); + if (X ^= q, X) { j.push(F); continue @@ -18984,13 +19139,13 @@ for (F = new Uint8Array(F), j.push(F), x = 0; x < e; x++) - if (l && a[q][x]) + if (d && a[W][x]) F[x] = 0; else { - if (x >= R && x < M && q >= N) + if (x >= R && x < N && W >= M) for (z = z << 1 & S, m = 0; m < A; m++) - P = q + E[m], + P = W + E[m], k = x + I[m], D = j[P][k], D && (D = T[m], @@ -19001,30 +19156,30 @@ m = 0; m < b; m++, O--) k = x + g[m], - k >= 0 && k < e && (P = q + y[m], + k >= 0 && k < e && (P = W + v[m], P >= 0 && (D = j[P][k], D && (z |= D << O))); - var V = L.readBit(U, z); - F[x] = V + var H = L.readBit(K, z); + F[x] = H } } return j } function b(t, e, r, n, i, o, s, c, u) { - var d = a[r].coding; - 0 === r && (d = d.concat([c[0]])); - var l, f = d.length, p = new Int32Array(f), m = new Int32Array(f); - for (l = 0; l < f; l++) - p[l] = d[l].x, - m[l] = d[l].y; + var l = a[r].coding; + 0 === r && (l = l.concat([c[0]])); + var d, f = l.length, p = new Int32Array(f), m = new Int32Array(f); + for (d = 0; d < f; d++) + p[d] = l[d].x, + m[d] = l[d].y; var b = a[r].reference; 0 === r && (b = b.concat([c[1]])); var g = b.length - , y = new Int32Array(g) - , v = new Int32Array(g); - for (l = 0; l < g; l++) - y[l] = b[l].x, - v[l] = b[l].y; + , v = new Int32Array(g) + , y = new Int32Array(g); + for (d = 0; d < g; d++) + v[d] = b[d].x, + y[d] = b[d].y; for (var S = n[0].length, w = n.length, C = h[r], _ = [], A = u.decoder, I = u.contextCache.getContexts("GR"), E = 0, T = 0; T < e; T++) { if (s) { var x = A.readBit(I, C); @@ -19035,34 +19190,34 @@ var P = new Uint8Array(t); _.push(P); for (var D = 0; D < t; D++) { - var O, R, N = 0; - for (l = 0; l < f; l++) - O = T + m[l], - R = D + p[l], - O < 0 || R < 0 || R >= t ? N <<= 1 : N = N << 1 | _[O][R]; - for (l = 0; l < g; l++) - O = T + v[l] - o, - R = D + y[l] - i, - O < 0 || O >= w || R < 0 || R >= S ? N <<= 1 : N = N << 1 | n[O][R]; - var M = A.readBit(I, N); - P[D] = M + var O, R, M = 0; + for (d = 0; d < f; d++) + O = T + m[d], + R = D + p[d], + O < 0 || R < 0 || R >= t ? M <<= 1 : M = M << 1 | _[O][R]; + for (d = 0; d < g; d++) + O = T + y[d] - o, + R = D + v[d] - i, + O < 0 || O >= w || R < 0 || R >= S ? M <<= 1 : M = M << 1 | n[O][R]; + var N = A.readBit(I, M); + P[D] = N } } return _ } - function v(t, e, i, o, a, s, c, d, l, f, h, p) { + function y(t, e, i, o, a, s, c, l, d, f, h, p) { if (t && e) throw new k("symbol refinement with Huffman is not supported"); - var g, y, v = [], w = 0, C = u(i.length + o), _ = h.decoder, A = h.contextCache; + var g, v, y = [], w = 0, C = u(i.length + o), _ = h.decoder, A = h.contextCache; t && (g = j(1), - y = [], + v = [], C = Math.max(C, 1)); - while (v.length < o) { + while (y.length < o) { var I = t ? s.tableDeltaHeight.decode(p) : r(A, "IADH", _); w += I; var E = 0 , T = 0 - , x = t ? y.length : 0; + , x = t ? v.length : 0; while (1) { var P, D = t ? s.tableDeltaWidth.decode(p) : r(A, "IADW", _); if (null === D) @@ -19072,56 +19227,56 @@ e) { var O = r(A, "IAAI", _); if (O > 1) - P = S(t, e, E, w, 0, O, 1, i.concat(v), C, 0, 0, 1, 0, s, l, f, h, 0, p); + P = S(t, e, E, w, 0, O, 1, i.concat(y), C, 0, 0, 1, 0, s, d, f, h, 0, p); else { var R = n(A, _, C) - , N = r(A, "IARDX", _) - , M = r(A, "IARDY", _) - , B = R < i.length ? i[R] : v[R - i.length]; - P = b(E, w, l, B, N, M, !1, f, h) + , M = r(A, "IARDX", _) + , N = r(A, "IARDY", _) + , B = R < i.length ? i[R] : y[R - i.length]; + P = b(E, w, d, B, M, N, !1, f, h) } - v.push(P) + y.push(P) } else - t ? y.push(E) : (P = m(!1, E, w, c, !1, null, d, h), - v.push(P)) + t ? v.push(E) : (P = m(!1, E, w, c, !1, null, l, h), + y.push(P)) } if (t && !e) { var F = s.tableBitmapSize.decode(p); p.byteAlign(); - var K = void 0; + var U = void 0; if (0 === F) - K = z(p, T, w); + U = z(p, T, w); else { var L = p.end - , U = p.position + F; - p.end = U, - K = G(p, T, w, !1), + , K = p.position + F; + p.end = K, + U = G(p, T, w, !1), p.end = L, - p.position = U + p.position = K } - var X = y.length; + var X = v.length; if (x === X - 1) - v.push(K); + y.push(U); else { - var q = void 0 - , W = void 0 - , V = 0 - , H = void 0 - , Y = void 0 - , Z = void 0; - for (q = x; q < X; q++) { - for (Y = y[q], - H = V + Y, - Z = [], - W = 0; W < w; W++) - Z.push(K[W].subarray(V, H)); - v.push(Z), - V = H + var W = void 0 + , q = void 0 + , H = 0 + , V = void 0 + , Z = void 0 + , Q = void 0; + for (W = x; W < X; W++) { + for (Z = v[W], + V = H + Z, + Q = [], + q = 0; q < w; q++) + Q.push(U[q].subarray(H, V)); + y.push(Q), + H = V } } } } - var Q = [] + var Y = [] , J = [] , $ = !1 , tt = i.length + o; @@ -19132,13 +19287,13 @@ $ = !$ } for (var rt = 0, nt = i.length; rt < nt; rt++) - J[rt] && Q.push(i[rt]); + J[rt] && Y.push(i[rt]); for (var it = 0; it < o; rt++, it++) - J[rt] && Q.push(v[it]); - return Q + J[rt] && Y.push(y[it]); + return Y } - function S(t, e, i, o, a, s, c, u, d, l, f, h, p, m, g, y, v, S, w) { + function S(t, e, i, o, a, s, c, u, l, d, f, h, p, m, g, v, y, S, w) { if (t && e) throw new k("refinement with Huffman is not supported"); var C, _, A = []; @@ -19149,8 +19304,8 @@ _[I] = a; A.push(_) } - var E = v.decoder - , T = v.contextCache + var E = y.decoder + , T = y.contextCache , x = t ? -m.tableDeltaT.decode(w) : -r(T, "IADT", E) , P = 0; C = 0; @@ -19161,38 +19316,38 @@ P += O; var R = P; do { - var N = 0; - c > 1 && (N = t ? w.readBits(S) : r(T, "IAIT", E)); - var M = c * x + N - , B = t ? m.symbolIDTable.decode(w) : n(T, E, d) + var M = 0; + c > 1 && (M = t ? w.readBits(S) : r(T, "IAIT", E)); + var N = c * x + M + , B = t ? m.symbolIDTable.decode(w) : n(T, E, l) , F = e && (t ? w.readBit() : r(T, "IARI", E)) , j = u[B] - , K = j[0].length + , U = j[0].length , L = j.length; if (F) { - var U = r(T, "IARDW", E) + var K = r(T, "IARDW", E) , X = r(T, "IARDH", E) , z = r(T, "IARDX", E) , G = r(T, "IARDY", E); - K += U, + U += K, L += X, - j = b(K, L, g, j, (U >> 1) + z, (X >> 1) + G, !1, y, v) + j = b(U, L, g, j, (K >> 1) + z, (X >> 1) + G, !1, v, y) } - var q, W, V, H = M - (1 & h ? 0 : L - 1), Y = R - (2 & h ? K - 1 : 0); - if (l) { - for (q = 0; q < L; q++) - if (_ = A[Y + q], + var W, q, H, V = N - (1 & h ? 0 : L - 1), Z = R - (2 & h ? U - 1 : 0); + if (d) { + for (W = 0; W < L; W++) + if (_ = A[Z + W], _) { - V = j[q]; - var Z = Math.min(i - H, K); + H = j[W]; + var Q = Math.min(i - V, U); switch (p) { case 0: - for (W = 0; W < Z; W++) - _[H + W] |= V[W]; + for (q = 0; q < Q; q++) + _[V + q] |= H[q]; break; case 2: - for (W = 0; W < Z; W++) - _[H + W] ^= V[W]; + for (q = 0; q < Q; q++) + _[V + q] ^= H[q]; break; default: throw new k("operator ".concat(p, " is not supported")) @@ -19200,29 +19355,29 @@ } R += L - 1 } else { - for (W = 0; W < L; W++) - if (_ = A[H + W], + for (q = 0; q < L; q++) + if (_ = A[V + q], _) - switch (V = j[W], + switch (H = j[q], p) { case 0: - for (q = 0; q < K; q++) - _[Y + q] |= V[q]; + for (W = 0; W < U; W++) + _[Z + W] |= H[W]; break; case 2: - for (q = 0; q < K; q++) - _[Y + q] ^= V[q]; + for (W = 0; W < U; W++) + _[Z + W] ^= H[W]; break; default: throw new k("operator ".concat(p, " is not supported")) } - R += K - 1 + R += U - 1 } C++; - var Q = t ? m.tableDeltaS.decode(w) : r(T, "IADS", E); - if (null === Q) + var Y = t ? m.tableDeltaS.decode(w) : r(T, "IADS", E); + if (null === Y) break; - R += Q + f + R += Y + f } while (1) } return A @@ -19245,25 +19400,25 @@ x: -2, y: -2 }))); - for (var s = (n + 1) * e, c = m(t, s, r, i, !1, null, a, o), u = [], d = 0; d <= n; d++) { - for (var l = [], f = e * d, h = f + e, p = 0; p < r; p++) - l.push(c[p].subarray(f, h)); - u.push(l) + for (var s = (n + 1) * e, c = m(t, s, r, i, !1, null, a, o), u = [], l = 0; l <= n; l++) { + for (var d = [], f = e * l, h = f + e, p = 0; p < r; p++) + d.push(c[p].subarray(f, h)); + u.push(d) } return u } - function C(t, e, r, n, i, o, a, s, c, d, l, f, h, p, b) { + function C(t, e, r, n, i, o, a, s, c, l, d, f, h, p, b) { var g = null; if (a) throw new k("skip is not supported"); if (0 !== s) throw new k("operator " + s + " is not supported in halftone region"); - var y, v, S, w = []; - for (y = 0; y < i; y++) { + var v, y, S, w = []; + for (v = 0; v < i; v++) { if (S = new Uint8Array(n), o) - for (v = 0; v < n; v++) - S[v] = o; + for (y = 0; y < n; y++) + S[y] = o; w.push(S) } var C = e.length @@ -19288,38 +19443,38 @@ x: -2, y: -2 }))); - var x, P, D, O, R, N, M, B, F, j, L, U = []; - for (t && (x = new K(b.data,b.start,b.end)), - y = E - 1; y >= 0; y--) - P = t ? G(x, c, d, !0) : m(!1, c, d, r, !1, g, T, b), - U[y] = P; - for (D = 0; D < d; D++) + var x, P, D, O, R, M, N, B, F, j, L, K = []; + for (t && (x = new U(b.data,b.start,b.end)), + v = E - 1; v >= 0; v--) + P = t ? G(x, c, l, !0) : m(!1, c, l, r, !1, g, T, b), + K[v] = P; + for (D = 0; D < l; D++) for (O = 0; O < c; O++) { for (R = 0, - N = 0, - v = E - 1; v >= 0; v--) - R = U[v][D][O] ^ R, - N |= R << v; - if (M = e[N], - B = l + D * p + O * h >> 8, + M = 0, + y = E - 1; y >= 0; y--) + R = K[y][D][O] ^ R, + M |= R << y; + if (N = e[M], + B = d + D * p + O * h >> 8, F = f + D * h - O * p >> 8, B >= 0 && B + A <= n && F >= 0 && F + I <= i) - for (y = 0; y < I; y++) - for (L = w[F + y], - j = M[y], - v = 0; v < A; v++) - L[B + v] |= j[v]; + for (v = 0; v < I; v++) + for (L = w[F + v], + j = N[v], + y = 0; y < A; y++) + L[B + y] |= j[y]; else { var X = void 0 , z = void 0; - for (y = 0; y < I; y++) - if (z = F + y, + for (v = 0; v < I; v++) + if (z = F + v, !(z < 0 || z >= i)) for (L = w[z], - j = M[y], - v = 0; v < A; v++) - X = B + v, - X >= 0 && X < n && (L[X] |= j[v]) + j = N[v], + y = 0; y < A; y++) + X = B + y, + X >= 0 && X < n && (L[X] |= j[y]) } } return w @@ -19338,14 +19493,14 @@ , s = t[e + 5] , c = s >> 5 & 7 , u = [31 & s] - , d = e + 6; + , l = e + 6; if (7 === s) { - c = 536870911 & f(t, d - 1), - d += 3; + c = 536870911 & f(t, l - 1), + l += 3; var h = c + 7 >> 3; - u[0] = t[d++]; + u[0] = t[l++]; while (--h > 0) - u.push(t[d++]) + u.push(t[l++]) } else if (5 === s || 6 === s) throw new k("invalid referred-to flags"); r.retainBits = u; @@ -19353,31 +19508,31 @@ r.number <= 256 ? p = 1 : r.number <= 65536 && (p = 2); var m, b, g = []; for (m = 0; m < c; m++) { - var y = void 0; - y = 1 === p ? t[d] : 2 === p ? l(t, d) : f(t, d), - g.push(y), - d += p + var v = void 0; + v = 1 === p ? t[l] : 2 === p ? d(t, l) : f(t, l), + g.push(v), + l += p } if (r.referredTo = g, - a ? (r.pageAssociation = f(t, d), - d += 4) : r.pageAssociation = t[d++], - r.length = f(t, d), - d += 4, + a ? (r.pageAssociation = f(t, l), + l += 4) : r.pageAssociation = t[l++], + r.length = f(t, l), + l += 4, 4294967295 === r.length) { if (38 !== o) throw new k("invalid unknown segment length"); - var v = I(t, d) - , S = t[d + E] + var y = I(t, l) + , S = t[l + E] , w = !!(1 & S) , C = 6 , _ = new Uint8Array(C); for (w || (_[0] = 255, _[1] = 172), - _[2] = v.height >>> 24 & 255, - _[3] = v.height >> 16 & 255, - _[4] = v.height >> 8 & 255, - _[5] = 255 & v.height, - m = d, + _[2] = y.height >>> 24 & 255, + _[3] = y.height >> 16 & 255, + _[4] = y.height >> 8 & 255, + _[5] = 255 & y.height, + m = l, b = t.length; m < b; m++) { var A = 0; while (A < C && _[A] === t[m + A]) @@ -19390,7 +19545,7 @@ if (4294967295 === r.length) throw new k("segment end was not found") } - return r.headerEnd = d, + return r.headerEnd = l, r } function A(t, e, r, n) { @@ -19432,7 +19587,7 @@ switch (a.type) { case 0: var h = {} - , p = l(s, c); + , p = d(s, c); if (h.huffman = !!(1 & p), h.refinement = !!(2 & p), h.huffmanDHSelector = p >> 2 & 3, @@ -19449,8 +19604,8 @@ n = [], i = 0; i < o; i++) n.push({ - x: d(s, c), - y: d(s, c + 1) + x: l(s, c), + y: l(s, c + 1) }), c += 2; h.at = n @@ -19459,8 +19614,8 @@ for (n = [], i = 0; i < 2; i++) n.push({ - x: d(s, c), - y: d(s, c + 1) + x: l(s, c), + y: l(s, c + 1) }), c += 2; h.refinementAt = n @@ -19476,7 +19631,7 @@ var m = {}; m.info = I(s, c), c += E; - var b = l(s, c); + var b = d(s, c); if (c += 2, m.huffman = !!(1 & b), m.refinement = !!(2 & b), @@ -19489,7 +19644,7 @@ m.dsOffset = b << 17 >> 27, m.refinementTemplate = b >> 15 & 1, m.huffman) { - var g = l(s, c); + var g = d(s, c); c += 2, m.huffmanFS = 3 & g, m.huffmanDS = g >> 2 & 3, @@ -19504,8 +19659,8 @@ for (n = [], i = 0; i < 2; i++) n.push({ - x: d(s, c), - y: d(s, c + 1) + x: l(s, c), + y: l(s, c + 1) }), c += 2; m.refinementAt = n @@ -19515,15 +19670,15 @@ r = [m, a.referredTo, s, c, u]; break; case 16: - var y = {} - , v = s[c++]; - y.mmr = !!(1 & v), - y.template = v >> 1 & 3, - y.patternWidth = s[c++], - y.patternHeight = s[c++], - y.maxPatternIndex = f(s, c), + var v = {} + , y = s[c++]; + v.mmr = !!(1 & y), + v.template = y >> 1 & 3, + v.patternWidth = s[c++], + v.patternHeight = s[c++], + v.maxPatternIndex = f(s, c), c += 4, - r = [y, a.number, s, c, u]; + r = [v, a.number, s, c, u]; break; case 22: case 23: @@ -19544,9 +19699,9 @@ c += 4, S.gridOffsetY = 4294967295 & f(s, c), c += 4, - S.gridVectorX = l(s, c), + S.gridVectorX = d(s, c), c += 2, - S.gridVectorY = l(s, c), + S.gridVectorY = d(s, c), c += 2, r = [S, a.referredTo, s, c, u]; break; @@ -19564,8 +19719,8 @@ n = [], i = 0; i < o; i++) n.push({ - x: d(s, c), - y: d(s, c + 1) + x: l(s, c), + y: l(s, c + 1) }), c += 2; C.at = n @@ -19581,7 +19736,7 @@ }; 4294967295 === A.height && delete A.height; var T = s[c + 16]; - l(s, c + 17), + d(s, c + 17), A.lossless = !!(1 & T), A.refinement = !!(2 & T), A.defaultPixelValue = T >> 2 & 1, @@ -19633,14 +19788,14 @@ var o = A(n, t, r, e) , a = new O; x(o, a); - for (var s = a.currentPageInfo, c = s.width, u = s.height, d = a.buffer, l = new Uint8ClampedArray(c * u), h = 0, p = 0, m = 0; m < u; m++) - for (var b = 0, g = void 0, y = 0; y < c; y++) + for (var s = a.currentPageInfo, c = s.width, u = s.height, l = a.buffer, d = new Uint8ClampedArray(c * u), h = 0, p = 0, m = 0; m < u; m++) + for (var b = 0, g = void 0, v = 0; v < c; v++) b || (b = 128, - g = d[p++]), - l[h++] = g & b ? 0 : 255, + g = l[p++]), + d[h++] = g & b ? 0 : 255, b >>= 1; return { - imgData: l, + imgData: d, width: c, height: u } @@ -19659,7 +19814,7 @@ this.prefixCode = t[3], this.isLowerRange = "lower" === t[4]) } - function N(t) { + function M(t) { this.children = [], t ? (this.isLeaf = !0, this.rangeLength = t.rangeLength, @@ -19667,29 +19822,29 @@ this.isLowerRange = t.isLowerRange, this.isOOB = t.isOOB) : this.isLeaf = !1 } - function M(t, e) { + function N(t, e) { e || this.assignPrefixCodes(t), - this.rootNode = new N(null); + this.rootNode = new M(null); for (var r = 0, n = t.length; r < n; r++) { var i = t[r]; i.prefixLength > 0 && this.rootNode.buildTree(i, i.prefixLength - 1) } } function B(t, e, r) { - var n, i, o = t[e], a = 4294967295 & f(t, e + 1), s = 4294967295 & f(t, e + 5), c = new K(t,e + 9,r), u = 1 + (o >> 1 & 7), d = 1 + (o >> 4 & 7), l = [], h = a; + var n, i, o = t[e], a = 4294967295 & f(t, e + 1), s = 4294967295 & f(t, e + 5), c = new U(t,e + 9,r), u = 1 + (o >> 1 & 7), l = 1 + (o >> 4 & 7), d = [], h = a; do { n = c.readBits(u), - i = c.readBits(d), - l.push(new R([h, n, i, 0])), + i = c.readBits(l), + d.push(new R([h, n, i, 0])), h += 1 << i } while (h < s); return n = c.readBits(u), - l.push(new R([a - 1, n, 32, 0, "lower"])), + d.push(new R([a - 1, n, 32, 0, "lower"])), n = c.readBits(u), - l.push(new R([s, n, 32, 0])), + d.push(new R([s, n, 32, 0])), 1 & o && (n = c.readBits(u), - l.push(new R([n, 0]))), - new M(l,!1) + d.push(new R([n, 0]))), + new N(d,!1) } O.prototype = { onPageInformation: function(t) { @@ -19702,14 +19857,14 @@ this.buffer = r }, drawBitmap: function(t, e) { - var r, n, i, o, a = this.currentPageInfo, s = t.width, c = t.height, u = a.width + 7 >> 3, d = a.combinationOperatorOverride ? t.combinationOperator : a.combinationOperator, l = this.buffer, f = 128 >> (7 & t.x), h = t.y * u + (t.x >> 3); - switch (d) { + var r, n, i, o, a = this.currentPageInfo, s = t.width, c = t.height, u = a.width + 7 >> 3, l = a.combinationOperatorOverride ? t.combinationOperator : a.combinationOperator, d = this.buffer, f = 128 >> (7 & t.x), h = t.y * u + (t.x >> 3); + switch (l) { case 0: for (r = 0; r < c; r++) { for (i = f, o = h, n = 0; n < s; n++) - e[r][n] && (l[o] |= i), + e[r][n] && (d[o] |= i), i >>= 1, i || (i = 128, o++); @@ -19721,7 +19876,7 @@ for (i = f, o = h, n = 0; n < s; n++) - e[r][n] && (l[o] ^= i), + e[r][n] && (d[o] ^= i), i >>= 1, i || (i = 128, o++); @@ -19729,7 +19884,7 @@ } break; default: - throw new k("operator ".concat(d, " is not supported")) + throw new k("operator ".concat(l, " is not supported")) } }, onImmediateGenericRegion: function(t, r, n, i) { @@ -19744,26 +19899,26 @@ onSymbolDictionary: function(t, r, n, i, o, a) { var s, c; t.huffman && (s = X(t, n, this.customTables), - c = new K(i,o,a)); + c = new U(i,o,a)); var u = this.symbols; u || (this.symbols = u = {}); - for (var d = [], l = 0, f = n.length; l < f; l++) { - var h = u[n[l]]; - h && (d = d.concat(h)) + for (var l = [], d = 0, f = n.length; d < f; d++) { + var h = u[n[d]]; + h && (l = l.concat(h)) } var p = new e(i,o,a); - u[r] = v(t.huffman, t.refinement, d, t.numberOfNewSymbols, t.numberOfExportedSymbols, s, t.template, t.at, t.refinementTemplate, t.refinementAt, p, c) + u[r] = y(t.huffman, t.refinement, l, t.numberOfNewSymbols, t.numberOfExportedSymbols, s, t.template, t.at, t.refinementTemplate, t.refinementAt, p, c) }, onImmediateTextRegion: function(t, r, n, i, o) { - for (var a, s, c = t.info, d = this.symbols, l = [], f = 0, h = r.length; f < h; f++) { - var p = d[r[f]]; - p && (l = l.concat(p)) + for (var a, s, c = t.info, l = this.symbols, d = [], f = 0, h = r.length; f < h; f++) { + var p = l[r[f]]; + p && (d = d.concat(p)) } - var m = u(l.length); - t.huffman && (s = new K(n,i,o), - a = U(t, r, this.customTables, l.length, s)); + var m = u(d.length); + t.huffman && (s = new U(n,i,o), + a = K(t, r, this.customTables, d.length, s)); var b = new e(n,i,o) - , g = S(t.huffman, t.refinement, c.width, c.height, t.defaultPixelValue, t.numberOfSymbolInstances, t.stripSize, l, m, t.transposed, t.dsOffset, t.referenceCorner, t.combinationOperator, a, t.refinementTemplate, t.refinementAt, b, t.logStripSize, s); + , g = S(t.huffman, t.refinement, c.width, c.height, t.defaultPixelValue, t.numberOfSymbolInstances, t.stripSize, d, m, t.transposed, t.dsOffset, t.referenceCorner, t.combinationOperator, a, t.refinementTemplate, t.refinementAt, b, t.logStripSize, s); this.drawBitmap(c, g) }, onImmediateLosslessTextRegion: function() { @@ -19791,14 +19946,14 @@ i[t] = B(e, r, n) } }, - N.prototype = { + M.prototype = { buildTree: function(t, e) { var r = t.prefixCode >> e & 1; if (e <= 0) - this.children[r] = new N(t); + this.children[r] = new M(t); else { var n = this.children[r]; - n || (this.children[r] = n = new N(null)), + n || (this.children[r] = n = new M(null)), n.buildTree(t, e - 1) } }, @@ -19815,7 +19970,7 @@ return r.decodeNode(t) } }, - M.prototype = { + N.prototype = { decode: function(t) { return this.rootNode.decodeNode(t) }, @@ -19824,11 +19979,11 @@ r = Math.max(r, t[n].prefixLength); for (var i = new Uint32Array(r + 1), o = 0; o < e; o++) i[t[o].prefixLength]++; - var a, s, c, u = 1, d = 0; + var a, s, c, u = 1, l = 0; i[0] = 0; while (u <= r) { - d = d + i[u - 1] << 1, - a = d, + l = l + i[u - 1] << 1, + a = l, s = 0; while (s < e) c = t[s], @@ -19895,11 +20050,11 @@ } for (var n = 0, i = e.length; n < i; n++) e[n] = new R(e[n]); - return r = new M(e,!0), + return r = new N(e,!0), F[t] = r, r } - function K(t, e, r) { + function U(t, e, r) { this.data = t, this.start = e, this.end = r, @@ -19918,54 +20073,54 @@ } throw new k("can't find custom Huffman table") } - function U(t, e, r, n, i) { + function K(t, e, r, n, i) { for (var o = [], a = 0; a <= 34; a++) { var s = i.readBits(4); o.push(new R([a, s, 0, 0])) } - var c = new M(o,!1); + var c = new N(o,!1); o.length = 0; for (var u = 0; u < n; ) { - var d = c.decode(i); - if (d >= 32) { - var l = void 0 + var l = c.decode(i); + if (l >= 32) { + var d = void 0 , f = void 0 , h = void 0; - switch (d) { + switch (l) { case 32: if (0 === u) throw new k("no previous value in symbol ID table"); f = i.readBits(2) + 3, - l = o[u - 1].prefixLength; + d = o[u - 1].prefixLength; break; case 33: f = i.readBits(3) + 3, - l = 0; + d = 0; break; case 34: f = i.readBits(7) + 11, - l = 0; + d = 0; break; default: throw new k("invalid code length in symbol ID table") } for (h = 0; h < f; h++) - o.push(new R([u, l, 0, 0])), + o.push(new R([u, d, 0, 0])), u++ } else - o.push(new R([u, d, 0, 0])), + o.push(new R([u, l, 0, 0])), u++ } i.byteAlign(); - var p, m, b, g = new M(o,!1), y = 0; + var p, m, b, g = new N(o,!1), v = 0; switch (t.huffmanFS) { case 0: case 1: p = j(t.huffmanFS + 6); break; case 3: - p = L(y, e, r), - y++; + p = L(v, e, r), + v++; break; default: throw new k("invalid Huffman FS selector") @@ -19977,8 +20132,8 @@ m = j(t.huffmanDS + 8); break; case 3: - m = L(y, e, r), - y++; + m = L(v, e, r), + v++; break; default: throw new k("invalid Huffman DS selector") @@ -19990,8 +20145,8 @@ b = j(t.huffmanDT + 11); break; case 3: - b = L(y, e, r), - y++; + b = L(v, e, r), + v++; break; default: throw new k("invalid Huffman DT selector") @@ -20058,16 +20213,16 @@ Rows: r, BlackIs1: !0, EndOfBlock: n - }, a = new y(t,o), s = [], c = !1, u = 0; u < r; u++) { - var d = new Uint8Array(e); - s.push(d); - for (var l = -1, f = 0; f < e; f++) - l < 0 && (i = a.readNextChar(), + }, a = new v(t,o), s = [], c = !1, u = 0; u < r; u++) { + var l = new Uint8Array(e); + s.push(l); + for (var d = -1, f = 0; f < e; f++) + d < 0 && (i = a.readNextChar(), -1 === i && (i = 0, c = !0), - l = 7), - d[f] = i >> l & 1, - l-- + d = 7), + l[f] = i >> d & 1, + d-- } if (n && !c) for (var h = 5, p = 0; p < h; p++) @@ -20075,8 +20230,8 @@ break; return s } - function q() {} - return K.prototype = { + function W() {} + return U.prototype = { readBit: function() { if (this.shift < 0) { if (this.position >= this.end) @@ -20101,7 +20256,7 @@ return this.position >= this.end ? -1 : this.data[this.position++] } }, - q.prototype = { + W.prototype = { parseChunks: function(t) { return P(t) }, @@ -20115,7 +20270,7 @@ r } }, - q + W }() }, 7418: function(t, e) { @@ -20217,16 +20372,3751 @@ return o(i(t)) } }, + "7b14": function(t, e, r) { + (function(t, e) { + function r(t) { + return r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + return typeof t + } + : function(t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + } + , + r(t) + } + Array.prototype.fill || Object.defineProperty(Array.prototype, "fill", { + value: function(t) { + if (null == this) + throw new TypeError("this is null or not defined"); + var e = Object(this) + , r = e.length >>> 0 + , n = arguments[1] + , i = n >> 0 + , o = i < 0 ? Math.max(r + i, 0) : Math.min(i, r) + , a = arguments[2] + , s = void 0 === a ? r : a >> 0 + , c = s < 0 ? Math.max(r + s, 0) : Math.min(s, r); + while (o < c) + e[o] = t, + o++; + return e + } + }), + function() { + var n = {}; + function i() { + "undefined" == typeof e && console.log.apply(console, arguments) + } + "object" == r(t) ? t.exports = n : self.UTIF = n, + function(t) { + (function() { + "use strict"; + var e = function() { + function t(t) { + this.message = "JPEG error: " + t + } + return t.prototype = new Error, + t.prototype.name = "JpegError", + t.constructor = t, + t + }() + , n = function() { + var t = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]) + , n = 4017 + , o = 799 + , a = 3406 + , s = 2276 + , c = 1567 + , u = 3784 + , l = 5793 + , d = 2896; + function f(t) { + null == t && (t = {}), + null == t.w && (t.w = -1), + this.V = t.n, + this.N = t.w + } + function h(t, e) { + var r, n, i, o = 0, a = [], s = 16; + while (s > 0 && !t[s - 1]) + s--; + a.push({ + children: [], + index: 0 + }); + var c = a[0]; + for (r = 0; r < s; r++) { + for (n = 0; n < t[r]; n++) { + c = a.pop(), + c.children[c.index] = e[o]; + while (c.index > 0) + c = a.pop(); + c.index++, + a.push(c); + while (a.length <= r) + a.push(i = { + children: [], + index: 0 + }), + c.children[c.index] = i.children, + c = i; + o++ + } + r + 1 < s && (a.push(i = { + children: [], + index: 0 + }), + c.children[c.index] = i.children, + c = i) + } + return a[0].children + } + function p(t, e, r) { + return 64 * ((t.P + 1) * e + r) + } + function m(n, o, a, s, c, u, l, d, f, h) { + null == h && (h = !1); + var m, b, g, y, S, w, C, _, A, I, E, T = a.m, x = a.Z, P = o, k = 0, D = 0, O = 0, R = 0, M = 0, N = 0; + function B() { + if (D > 0) + return D--, + k >> D & 1; + if (k = n[o++], + 255 === k) { + var t = n[o++]; + if (t) { + if (220 === t && h) { + o += 2; + var r = i(n, o); + if (o += 2, + r > 0 && r !== a.s) + throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",r) + } else if (217 === t) { + if (h) { + var s = 8 * M; + if (s > 0 && s < a.s / 10) + throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",s) + } + throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data") + } + throw new e("unexpected marker") + } + } + return D = 7, + k >>> 7 + } + function F(t) { + var n = t; + while (1) { + switch (n = n[B()], + r(n)) { + case "number": + return n; + case "object": + continue + } + throw new e("invalid huffman sequence") + } + } + function j(t) { + var e = 0; + while (t > 0) + e = e << 1 | B(), + t--; + return e + } + function U(t) { + if (1 === t) + return 1 === B() ? 1 : -1; + var e = j(t); + return e >= 1 << t - 1 ? e : e + (-1 << t) + 1 + } + function L(e, r) { + var n = F(e.J) + , i = 0 === n ? 0 : U(n) + , o = 1; + e.D[r] = e.Q += i; + while (o < 64) { + var a = F(e.i) + , s = 15 & a + , c = a >> 4; + if (0 !== s) { + o += c; + var u = t[o]; + e.D[r + u] = U(s), + o++ + } else { + if (c < 15) + break; + o += 16 + } + } + } + function K(t, e) { + var r = F(t.J) + , n = 0 === r ? 0 : U(r) << f; + t.D[e] = t.Q += n + } + function X(t, e) { + t.D[e] |= B() << f + } + function z(e, r) { + if (O > 0) + O--; + else { + var n = u + , i = l; + while (n <= i) { + var o = F(e.i) + , a = 15 & o + , s = o >> 4; + if (0 !== a) { + n += s; + var c = t[n]; + e.D[r + c] = U(a) * (1 << f), + n++ + } else { + if (s < 15) { + O = j(s) + (1 << s) - 1; + break + } + n += 16 + } + } + } + } + function G(r, n) { + var i, o, a = u, s = l, c = 0; + while (a <= s) { + var d = n + t[a] + , h = r.D[d] < 0 ? -1 : 1; + switch (R) { + case 0: + if (o = F(r.i), + i = 15 & o, + c = o >> 4, + 0 === i) + c < 15 ? (O = j(c) + (1 << c), + R = 4) : (c = 16, + R = 1); + else { + if (1 !== i) + throw new e("invalid ACn encoding"); + m = U(i), + R = c ? 2 : 3 + } + continue; + case 1: + case 2: + r.D[d] ? r.D[d] += h * (B() << f) : (c--, + 0 === c && (R = 2 === R ? 3 : 0)); + break; + case 3: + r.D[d] ? r.D[d] += h * (B() << f) : (r.D[d] = m << f, + R = 0); + break; + case 4: + r.D[d] && (r.D[d] += h * (B() << f)); + break + } + a++ + } + 4 === R && (O--, + 0 === O && (R = 0)) + } + function W(t, e, r, n, i) { + var o = r / T | 0 + , a = r % T; + M = o * t.A + n; + var s = a * t.h + i + , c = p(t, M, s); + e(t, c) + } + function q(t, e, r) { + M = r / t.P | 0; + var n = r % t.P + , i = p(t, M, n); + e(t, i) + } + var H = s.length; + C = x ? 0 === u ? 0 === d ? K : X : 0 === d ? z : G : L, + A = 1 === H ? s[0].P * s[0].c : T * a.R; + while (N <= A) { + var V = c ? Math.min(A - N, c) : A; + if (V > 0) { + for (g = 0; g < H; g++) + s[g].Q = 0; + if (O = 0, + 1 === H) + for (b = s[0], + w = 0; w < V; w++) + q(b, C, N), + N++; + else + for (w = 0; w < V; w++) { + for (g = 0; g < H; g++) + for (b = s[g], + I = b.h, + E = b.A, + y = 0; y < E; y++) + for (S = 0; S < I; S++) + W(b, C, N, y, S); + N++ + } + } + if (D = 0, + _ = v(n, o), + !_) + break; + if (_.u) { + o = _.offset + } + if (!(_.M >= 65488 && _.M <= 65495)) + break; + o += 2 + } + return o - P + } + function b(t, r, i) { + var f, h, p, m, b, g, v, y, S, w, C, _, A, I, E, T, x, P = t.$, k = t.D; + if (!P) + throw new e("missing required Quantization Table."); + for (var D = 0; D < 64; D += 8) + S = k[r + D], + w = k[r + D + 1], + C = k[r + D + 2], + _ = k[r + D + 3], + A = k[r + D + 4], + I = k[r + D + 5], + E = k[r + D + 6], + T = k[r + D + 7], + S *= P[D], + 0 !== (w | C | _ | A | I | E | T) ? (w *= P[D + 1], + C *= P[D + 2], + _ *= P[D + 3], + A *= P[D + 4], + I *= P[D + 5], + E *= P[D + 6], + T *= P[D + 7], + f = l * S + 128 >> 8, + h = l * A + 128 >> 8, + p = C, + m = E, + b = d * (w - T) + 128 >> 8, + y = d * (w + T) + 128 >> 8, + g = _ << 4, + v = I << 4, + f = f + h + 1 >> 1, + h = f - h, + x = p * u + m * c + 128 >> 8, + p = p * c - m * u + 128 >> 8, + m = x, + b = b + v + 1 >> 1, + v = b - v, + y = y + g + 1 >> 1, + g = y - g, + f = f + m + 1 >> 1, + m = f - m, + h = h + p + 1 >> 1, + p = h - p, + x = b * s + y * a + 2048 >> 12, + b = b * a - y * s + 2048 >> 12, + y = x, + x = g * o + v * n + 2048 >> 12, + g = g * n - v * o + 2048 >> 12, + v = x, + i[D] = f + y, + i[D + 7] = f - y, + i[D + 1] = h + v, + i[D + 6] = h - v, + i[D + 2] = p + g, + i[D + 5] = p - g, + i[D + 3] = m + b, + i[D + 4] = m - b) : (x = l * S + 512 >> 10, + i[D] = x, + i[D + 1] = x, + i[D + 2] = x, + i[D + 3] = x, + i[D + 4] = x, + i[D + 5] = x, + i[D + 6] = x, + i[D + 7] = x); + for (var O = 0; O < 8; ++O) + S = i[O], + w = i[O + 8], + C = i[O + 16], + _ = i[O + 24], + A = i[O + 32], + I = i[O + 40], + E = i[O + 48], + T = i[O + 56], + 0 !== (w | C | _ | A | I | E | T) ? (f = l * S + 2048 >> 12, + h = l * A + 2048 >> 12, + p = C, + m = E, + b = d * (w - T) + 2048 >> 12, + y = d * (w + T) + 2048 >> 12, + g = _, + v = I, + f = 4112 + (f + h + 1 >> 1), + h = f - h, + x = p * u + m * c + 2048 >> 12, + p = p * c - m * u + 2048 >> 12, + m = x, + b = b + v + 1 >> 1, + v = b - v, + y = y + g + 1 >> 1, + g = y - g, + f = f + m + 1 >> 1, + m = f - m, + h = h + p + 1 >> 1, + p = h - p, + x = b * s + y * a + 2048 >> 12, + b = b * a - y * s + 2048 >> 12, + y = x, + x = g * o + v * n + 2048 >> 12, + g = g * n - v * o + 2048 >> 12, + v = x, + S = f + y, + T = f - y, + w = h + v, + E = h - v, + C = p + g, + I = p - g, + _ = m + b, + A = m - b, + S < 16 ? S = 0 : S >= 4080 ? S = 255 : S >>= 4, + w < 16 ? w = 0 : w >= 4080 ? w = 255 : w >>= 4, + C < 16 ? C = 0 : C >= 4080 ? C = 255 : C >>= 4, + _ < 16 ? _ = 0 : _ >= 4080 ? _ = 255 : _ >>= 4, + A < 16 ? A = 0 : A >= 4080 ? A = 255 : A >>= 4, + I < 16 ? I = 0 : I >= 4080 ? I = 255 : I >>= 4, + E < 16 ? E = 0 : E >= 4080 ? E = 255 : E >>= 4, + T < 16 ? T = 0 : T >= 4080 ? T = 255 : T >>= 4, + k[r + O] = S, + k[r + O + 8] = w, + k[r + O + 16] = C, + k[r + O + 24] = _, + k[r + O + 32] = A, + k[r + O + 40] = I, + k[r + O + 48] = E, + k[r + O + 56] = T) : (x = l * S + 8192 >> 14, + x = x < -2040 ? 0 : x >= 2024 ? 255 : x + 2056 >> 4, + k[r + O] = x, + k[r + O + 8] = x, + k[r + O + 16] = x, + k[r + O + 24] = x, + k[r + O + 32] = x, + k[r + O + 40] = x, + k[r + O + 48] = x, + k[r + O + 56] = x) + } + function g(t, e) { + for (var r = e.P, n = e.c, i = new Int16Array(64), o = 0; o < n; o++) + for (var a = 0; a < r; a++) { + var s = p(e, o, a); + b(e, s, i) + } + return e.D + } + function v(t, e, r) { + null == r && (r = e); + var n = t.length - 1 + , o = r < e ? r : e; + if (e >= n) + return null; + var a = i(t, e); + if (a >= 65472 && a <= 65534) + return { + u: null, + M: a, + offset: e + }; + var s = i(t, o); + while (!(s >= 65472 && s <= 65534)) { + if (++o >= n) + return null; + s = i(t, o) + } + return { + u: a.toString(16), + M: s, + offset: o + } + } + return f.prototype = { + parse: function(r, n) { + null == n && (n = {}); + var o, a, s = n.F, c = 0, u = null, l = null, d = 0; + function f() { + var t = i(r, c); + c += 2; + var e = c + t - 2 + , n = v(r, e, c); + n && n.u && (e = n.offset); + var o = r.subarray(c, e); + return c += o.length, + o + } + function p(t) { + for (var e = Math.ceil(t.o / 8 / t.X), r = Math.ceil(t.s / 8 / t.B), n = 0; n < t.W.length; n++) { + G = t.W[n]; + var i = Math.ceil(Math.ceil(t.o / 8) * G.h / t.X) + , o = Math.ceil(Math.ceil(t.s / 8) * G.A / t.B) + , a = e * G.h + , s = r * G.A + , c = 64 * s * (a + 1); + G.D = new Int16Array(c), + G.P = i, + G.c = o + } + t.m = e, + t.R = r + } + var b = [] + , y = [] + , S = [] + , w = i(r, c); + if (c += 2, + 65496 !== w) + throw new e("SOI not found"); + w = i(r, c), + c += 2; + t: while (65497 !== w) { + var C, _, A; + switch (w) { + case 65504: + case 65505: + case 65506: + case 65507: + case 65508: + case 65509: + case 65510: + case 65511: + case 65512: + case 65513: + case 65514: + case 65515: + case 65516: + case 65517: + case 65518: + case 65519: + case 65534: + var I = f(); + 65504 === w && 74 === I[0] && 70 === I[1] && 73 === I[2] && 70 === I[3] && 0 === I[4] && (u = { + version: { + d: I[5], + T: I[6] + }, + K: I[7], + j: I[8] << 8 | I[9], + H: I[10] << 8 | I[11], + S: I[12], + I: I[13], + C: I.subarray(14, 14 + 3 * I[12] * I[13]) + }), + 65518 === w && 65 === I[0] && 100 === I[1] && 111 === I[2] && 98 === I[3] && 101 === I[4] && (l = { + version: I[5] << 8 | I[6], + k: I[7] << 8 | I[8], + q: I[9] << 8 | I[10], + a: I[11] + }); + break; + case 65499: + var E, T = i(r, c); + c += 2; + var x = T + c - 2; + while (c < x) { + var P = r[c++] + , k = new Uint16Array(64); + if (P >> 4 === 0) + for (_ = 0; _ < 64; _++) + E = t[_], + k[E] = r[c++]; + else { + if (P >> 4 !== 1) + throw new e("DQT - invalid table spec"); + for (_ = 0; _ < 64; _++) + E = t[_], + k[E] = i(r, c), + c += 2 + } + b[15 & P] = k + } + break; + case 65472: + case 65473: + case 65474: + if (o) + throw new e("Only single frame JPEGs supported"); + c += 2, + o = {}, + o.G = 65473 === w, + o.Z = 65474 === w, + o.precision = r[c++]; + var D, O = i(r, c), R = 0, M = 0; + c += 2, + o.s = s || O, + o.o = i(r, c), + c += 2, + o.W = [], + o._ = {}; + var N = r[c++]; + for (C = 0; C < N; C++) { + D = r[c]; + var B = r[c + 1] >> 4 + , F = 15 & r[c + 1]; + R < B && (R = B), + M < F && (M = F); + var j = r[c + 2]; + A = o.W.push({ + h: B, + A: F, + L: j, + $: null + }), + o._[D] = A - 1, + c += 3 + } + o.X = R, + o.B = M, + p(o); + break; + case 65476: + var U = i(r, c); + for (c += 2, + C = 2; C < U; ) { + var L = r[c++] + , K = new Uint8Array(16) + , X = 0; + for (_ = 0; _ < 16; _++, + c++) + X += K[_] = r[c]; + var z = new Uint8Array(X); + for (_ = 0; _ < X; _++, + c++) + z[_] = r[c]; + C += 17 + X, + (L >> 4 === 0 ? S : y)[15 & L] = h(K, z) + } + break; + case 65501: + c += 2, + a = i(r, c), + c += 2; + break; + case 65498: + var G, W = 1 === ++d && !s; + c += 2; + var q = r[c++] + , H = []; + for (C = 0; C < q; C++) { + var V = r[c++] + , Z = o._[V]; + G = o.W[Z], + G.index = V; + var Q = r[c++]; + G.J = S[Q >> 4], + G.i = y[15 & Q], + H.push(G) + } + var Y = r[c++] + , J = r[c++] + , $ = r[c++]; + try { + var tt = m(r, c, o, H, a, Y, J, $ >> 4, 15 & $, W); + c += tt + } catch (nt) { + if (nt instanceof DNLMarkerError) + return this.parse(r, { + F: nt.s + }); + if (nt instanceof EOIMarkerError) + break t; + throw nt + } + break; + case 65500: + c += 4; + break; + case 65535: + 255 !== r[c] && c--; + break; + default: + var et = v(r, c - 2, c - 3); + if (et && et.u) { + c = et.offset; + break + } + if (c >= r.length - 1) + break t; + throw new e("JpegImage.parse - unknown marker: " + w.toString(16)) + } + w = i(r, c), + c += 2 + } + for (this.width = o.o, + this.height = o.s, + this.g = u, + this.b = l, + this.W = [], + C = 0; C < o.W.length; C++) { + G = o.W[C]; + var rt = b[G.L]; + rt && (G.$ = rt), + this.W.push({ + index: G.index, + e: g(o, G), + l: G.h / o.X, + t: G.A / o.B, + P: G.P, + c: G.c + }) + } + this.p = this.W.length + }, + Y: function(t, e, r) { + null == r && (r = !1); + var n, i, o, a, s, c, u, l, d, f, h, p, m = this.width / t, b = this.height / e, g = 0, v = this.W.length, y = t * e * v, S = new Uint8ClampedArray(y), w = new Uint32Array(t), C = 4294967288; + for (u = 0; u < v; u++) { + if (n = this.W[u], + i = n.l * m, + o = n.t * b, + g = u, + h = n.e, + a = n.P + 1 << 3, + i !== p) { + for (s = 0; s < t; s++) + l = 0 | s * i, + w[s] = (l & C) << 3 | 7 & l; + p = i + } + for (c = 0; c < e; c++) + for (l = 0 | c * o, + f = a * (l & C) | (7 & l) << 3, + s = 0; s < t; s++) + S[g] = h[f + w[s]], + g += v + } + var _ = this.V; + if (r || 4 !== v || _ || (_ = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255])), + _) + for (u = 0; u < y; ) + for (l = 0, + d = 0; l < v; l++, + u++, + d += 2) + S[u] = (S[u] * _[d] >> 8) + _[d + 1]; + return S + }, + get f() { + return this.b ? !!this.b.a : 3 === this.p ? 0 !== this.N && (82 !== this.W[0].index || 71 !== this.W[1].index || 66 !== this.W[2].index) : 1 === this.N + }, + z: function(t) { + for (var e, r, n, i = 0, o = t.length; i < o; i += 3) + e = t[i], + r = t[i + 1], + n = t[i + 2], + t[i] = e - 179.456 + 1.402 * n, + t[i + 1] = e + 135.459 - .344 * r - .714 * n, + t[i + 2] = e - 226.816 + 1.772 * r; + return t + }, + O: function(t) { + for (var e, r, n, i, o = 0, a = 0, s = t.length; a < s; a += 4) + e = t[a], + r = t[a + 1], + n = t[a + 2], + i = t[a + 3], + t[o++] = r * (-660635669420364e-19 * r + .000437130475926232 * n - 54080610064599e-18 * e + .00048449797120281 * i - .154362151871126) - 122.67195406894 + n * (-.000957964378445773 * n + .000817076911346625 * e - .00477271405408747 * i + 1.53380253221734) + e * (.000961250184130688 * e - .00266257332283933 * i + .48357088451265) + i * (-.000336197177618394 * i + .484791561490776), + t[o++] = 107.268039397724 + r * (219927104525741e-19 * r - .000640992018297945 * n + .000659397001245577 * e + .000426105652938837 * i - .176491792462875) + n * (-.000778269941513683 * n + .00130872261408275 * e + .000770482631801132 * i - .151051492775562) + e * (.00126935368114843 * e - .00265090189010898 * i + .25802910206845) + i * (-.000318913117588328 * i - .213742400323665), + t[o++] = r * (-.000570115196973677 * r - 263409051004589e-19 * n + .0020741088115012 * e - .00288260236853442 * i + .814272968359295) - 20.810012546947 + n * (-153496057440975e-19 * n - .000132689043961446 * e + .000560833691242812 * i - .195152027534049) + e * (.00174418132927582 * e - .00255243321439347 * i + .116935020465145) + i * (-.000343531996510555 * i + .24165260232407); + return t.subarray(0, o) + }, + r: function(t) { + for (var e, r, n, i = 0, o = t.length; i < o; i += 4) + e = t[i], + r = t[i + 1], + n = t[i + 2], + t[i] = 434.456 - e - 1.402 * n, + t[i + 1] = 119.541 - e + .344 * r + .714 * n, + t[i + 2] = 481.816 - e - 1.772 * r; + return t + }, + U: function(t) { + for (var e, r, n, i, o = 0, a = 0, s = t.length; a < s; a += 4) + e = t[a], + r = t[a + 1], + n = t[a + 2], + i = t[a + 3], + t[o++] = 255 + e * (-6747147073602441e-20 * e + .0008379262121013727 * r + .0002894718188643294 * n + .003264231057537806 * i - 1.1185611867203937) + r * (26374107616089405e-21 * r - 8626949158638572e-20 * n - .0002748769067499491 * i - .02155688794978967) + n * (-3878099212869363e-20 * n - .0003267808279485286 * i + .0686742238595345) - i * (.0003361971776183937 * i + .7430659151342254), + t[o++] = 255 + e * (.00013596372813588848 * e + .000924537132573585 * r + .00010567359618683593 * n + .0004791864687436512 * i - .3109689587515875) + r * (-.00023545346108370344 * r + .0002702845253534714 * n + .0020200308977307156 * i - .7488052167015494) + n * (6834815998235662e-20 * n + .00015168452363460973 * i - .09751927774728933) - i * (.0003189131175883281 * i + .7364883807733168), + t[o++] = 255 + e * (13598650411385307e-21 * e + .00012423956175490851 * r + .0004751985097583589 * n - 36729317476630422e-22 * i - .05562186980264034) + r * (.00016141380598724676 * r + .0009692239130725186 * n + .0007782692450036253 * i - .44015232367526463) + n * (5.068882914068769e-7 * n + .0017778369011375071 * i - .7591454649749609) - i * (.0003435319965105553 * i + .7063770186160144); + return t.subarray(0, o) + }, + getData: function(t) { + var r = t.width + , n = t.height + , i = t.forceRGB + , o = t.isSourcePDF; + if (this.p > 4) + throw new e("Unsupported color mode"); + var a = this.Y(r, n, o); + if (1 === this.p && i) { + for (var s = a.length, c = new Uint8ClampedArray(3 * s), u = 0, l = 0; l < s; l++) { + var d = a[l]; + c[u++] = d, + c[u++] = d, + c[u++] = d + } + return c + } + if (3 === this.p && this.f) + return this.z(a); + if (4 === this.p) { + if (this.f) + return i ? this.O(a) : this.r(a); + if (i) + return this.U(a) + } + return a + } + }, + f + }(); + function i(t, e) { + return t[e] << 8 | t[e + 1] + } + t.JpegDecoder = n + } + )(), + t.encodeImage = function(e, r, n, i) { + var o = { + t256: [r], + t257: [n], + t258: [8, 8, 8, 8], + t259: [1], + t262: [2], + t273: [1e3], + t277: [4], + t278: [n], + t279: [r * n * 4], + t282: [[72, 1]], + t283: [[72, 1]], + t284: [1], + t286: [[0, 1]], + t287: [[0, 1]], + t296: [1], + t305: ["Photopea (UTIF.js)"], + t338: [1] + }; + if (i) + for (var a in i) + o[a] = i[a]; + var s = new Uint8Array(t.encode([o])) + , c = new Uint8Array(e) + , u = new Uint8Array(1e3 + r * n * 4); + for (a = 0; a < s.length; a++) + u[a] = s[a]; + for (a = 0; a < c.length; a++) + u[1e3 + a] = c[a]; + return u.buffer + } + , + t.encode = function(e) { + var r = !1 + , n = new Uint8Array(2e4) + , i = 4 + , o = r ? t._binLE : t._binBE; + n[0] = n[1] = r ? 73 : 77, + o.writeUshort(n, 2, 42); + var a = 8; + o.writeUint(n, i, a), + i += 4; + for (var s = 0; s < e.length; s++) { + var c = t._writeIFD(o, t._types.basic, n, a, e[s]); + a = c[1], + s < e.length - 1 && (0 != (3 & a) && (a += 4 - (3 & a)), + o.writeUint(n, c[0], a)) + } + return n.slice(0, a).buffer + } + , + t.decode = function(e, r) { + null == r && (r = { + parseMN: !0, + debug: !1 + }); + var n = new Uint8Array(e) + , o = 0 + , a = t._binBE.readASCII(n, o, 2); + o += 2; + var s = "II" == a ? t._binLE : t._binBE; + s.readUshort(n, o); + o += 2; + var c = s.readUint(n, o); + o += 4; + var u = []; + while (1) { + var l = s.readUshort(n, c) + , d = s.readUshort(n, c + 4); + if (0 != l && (d < 1 || 13 < d)) { + i("error in TIFF"); + break + } + if (t._readIFD(s, n, c, u, 0, r), + c = s.readUint(n, c + 2 + 12 * l), + 0 == c) + break + } + return u + } + , + t.decodeImage = function(e, r, n) { + if (!r.data) { + var o = new Uint8Array(e) + , a = t._binBE.readASCII(o, 0, 2); + if (null != r["t256"]) { + r.isLE = "II" == a, + r.width = r["t256"][0], + r.height = r["t257"][0]; + var s = r["t259"] ? r["t259"][0] : 1 + , c = r["t266"] ? r["t266"][0] : 1; + r["t284"] && 2 == r["t284"][0] && i("PlanarConfiguration 2 should not be used!"), + 7 == s && r["t258"] && r["t258"].length > 3 && (r["t258"] = r["t258"].slice(0, 3)); + var u = r["t277"] ? r["t277"][0] : 1 + , l = r["t258"] ? r["t258"][0] : 1 + , d = l * u; + 1 == s && null != r["t279"] && r["t278"] && 32803 == r["t262"][0] && (d = Math.round(8 * r["t279"][0] / (r.width * r["t278"][0]))), + r["t50885"] && 4 == r["t50885"][0] && (d = 3 * r["t258"][0]); + var f = 8 * Math.ceil(r.width * d / 8) + , h = r["t273"]; + (null == h || r["t322"]) && (h = r["t324"]); + var p = r["t279"]; + 1 == s && 1 == h.length && (p = [r.height * (f >>> 3)]), + (null == p || r["t322"]) && (p = r["t325"]); + var m = new Uint8Array(r.height * (f >>> 3)) + , b = 0; + if (null != r["t322"]) { + var g = r["t322"][0] + , v = r["t323"][0] + , y = Math.floor((r.width + g - 1) / g) + , S = Math.floor((r.height + v - 1) / v) + , w = new Uint8Array(0 | Math.ceil(g * v * d / 8)); + console.log("====", y, S); + for (var C = 0; C < S; C++) + for (var _ = 0; _ < y; _++) { + var A = C * y + _; + w.fill(0), + t.decode._decompress(r, n, o, h[A], p[A], s, w, 0, c, g, v), + 6 == s ? m = w : t._copyTile(w, 0 | Math.ceil(g * d / 8), v, m, 0 | Math.ceil(r.width * d / 8), r.height, 0 | Math.ceil(_ * g * d / 8), C * v) + } + b = 8 * m.length + } else { + if (null == h) + return; + var I = r["t278"] ? r["t278"][0] : r.height; + I = Math.min(I, r.height); + for (A = 0; A < h.length; A++) + t.decode._decompress(r, n, o, h[A], p[A], s, m, 0 | Math.ceil(b / 8), c, r.width, I), + b += f * I; + b = Math.min(b, 8 * m.length) + } + r.data = new Uint8Array(m.buffer,0,0 | Math.ceil(b / 8)) + } + } + } + , + t.decode._decompress = function(e, r, n, o, a, s, c, u, l, d, f) { + if (e["t271"] && "Panasonic" == e["t271"][0] && e["t45"] && 6 == e["t45"][0] && (s = 34316), + 1 == s) + for (var h = 0; h < a; h++) + c[u + h] = n[o + h]; + else if (2 == s) + t.decode._decodeG2(n, o, a, c, u, d, l); + else if (3 == s) + t.decode._decodeG3(n, o, a, c, u, d, l, !!e["t292"] && 1 == (1 & e["t292"][0])); + else if (4 == s) + t.decode._decodeG4(n, o, a, c, u, d, l); + else if (5 == s) + t.decode._decodeLZW(n, o, a, c, u, 8); + else if (6 == s) + t.decode._decodeOldJPEG(e, n, o, a, c, u); + else if (7 == s || 34892 == s) + t.decode._decodeNewJPEG(e, n, o, a, c, u); + else if (8 == s || 32946 == s) { + var p = new Uint8Array(n.buffer,o + 2,a - 6) + , m = t._inflateRaw(p); + u + m.length <= c.length && c.set(m, u) + } else + 9 == s ? t.decode._decodeVC5(n, o, a, c, u, e["t33422"]) : 32767 == s ? t.decode._decodeARW(e, n, o, a, c, u) : 32773 == s ? t.decode._decodePackBits(n, o, a, c, u) : 32809 == s ? t.decode._decodeThunder(n, o, a, c, u) : 34316 == s ? t.decode._decodePanasonic(e, n, o, a, c, u) : 34713 == s ? t.decode._decodeNikon(e, r, n, o, a, c, u) : 34676 == s ? t.decode._decodeLogLuv32(e, n, o, a, c, u) : i("Unknown compression", s); + var b = e["t258"] ? Math.min(32, e["t258"][0]) : 1 + , g = e["t277"] ? e["t277"][0] : 1 + , v = b * g >>> 3 + , y = Math.ceil(b * g * d / 8); + if (16 == b && !e.isLE && null == e["t33422"]) + for (var S = 0; S < f; S++) + for (var w = u + S * y, C = 1; C < y; C += 2) { + var _ = c[w + C]; + c[w + C] = c[w + C - 1], + c[w + C - 1] = _ + } + if (e["t317"] && 2 == e["t317"][0]) + for (S = 0; S < f; S++) { + var A = u + S * y; + if (16 == b) + for (h = v; h < y; h += 2) { + var I = (c[A + h + 1] << 8 | c[A + h]) + (c[A + h - v + 1] << 8 | c[A + h - v]); + c[A + h] = 255 & I, + c[A + h + 1] = I >>> 8 & 255 + } + else if (3 == g) + for (h = 3; h < y; h += 3) + c[A + h] = c[A + h] + c[A + h - 3] & 255, + c[A + h + 1] = c[A + h + 1] + c[A + h - 2] & 255, + c[A + h + 2] = c[A + h + 2] + c[A + h - 1] & 255; + else + for (h = v; h < y; h++) + c[A + h] = c[A + h] + c[A + h - v] & 255 + } + } + , + t.decode._decodePanasonic = function(t, e, r, n, i, o) { + var a, s, c, u, l, d, f, h, p = e.buffer, m = t["t2"][0], b = t["t3"][0], g = t["t10"][0], v = t["t45"][0], y = 0, S = 0, w = 0, C = 0, _ = 6 == v ? new Uint32Array(18) : new Uint8Array(16), A = [0, 0], I = [0, 0], E = 0, T = new Uint8Array(16384), x = new Uint16Array(i.buffer); + function P(t) { + if (0 == w) { + var e = new Uint8Array(p,r + S + 8184,8200) + , n = new Uint8Array(p,r + S,8184); + T.set(e), + T.set(n, e.length), + S += 16384 + } + if (5 != v) + return w = w - t & 131071, + C = w >> 3 ^ 16368, + (T[C] | T[C + 1] << 8) >> (7 & w) & ~(-1 << t); + for (a = 0; a < 16; a++) + _[a] = T[w++], + w &= 16383 + } + function k(t) { + return T[w + 15 - t] + } + function D() { + _[0] = k(0) << 6 | k(1) >> 2, + _[1] = 16383 & ((3 & k(1)) << 12 | k(2) << 4 | k(3) >> 4), + _[2] = k(3) >> 2 & 3, + _[3] = (3 & k(3)) << 8 | k(4), + _[4] = k(5) << 2 | k(6) >> 6, + _[5] = (63 & k(6)) << 4 | k(7) >> 4, + _[6] = k(7) >> 2 & 3, + _[7] = (3 & k(7)) << 8 | k(8), + _[8] = k(9) << 2 & 1020 | k(10) >> 6, + _[9] = 1023 & (k(10) << 4 | k(11) >> 4), + _[10] = k(11) >> 2 & 3, + _[11] = (3 & k(11)) << 8 | k(12), + _[12] = 1023 & (k(13) << 2 & 1020 | k(14) >> 6), + _[13] = 1023 & (k(14) << 4 | k(15) >> 4), + w += 16, + C = 0 + } + function O() { + _[0] = k(0) << 4 | k(1) >> 4, + _[1] = 4095 & ((15 & k(1)) << 8 | k(2)), + _[2] = k(3) >> 6 & 3, + _[3] = (63 & k(3)) << 2 | k(4) >> 6, + _[4] = (63 & k(4)) << 2 | k(5) >> 6, + _[5] = (63 & k(5)) << 2 | k(6) >> 6, + _[6] = k(6) >> 4 & 3, + _[7] = (15 & k(6)) << 4 | k(7) >> 4, + _[8] = (15 & k(7)) << 4 | k(8) >> 4, + _[9] = (15 & k(8)) << 4 | k(9) >> 4, + _[10] = k(9) >> 2 & 3, + _[11] = (3 & k(9)) << 6 | k(10) >> 2, + _[12] = (3 & k(10)) << 6 | k(11) >> 2, + _[13] = (3 & k(11)) << 6 | k(12) >> 2, + _[14] = 3 & k(12), + _[15] = k(13), + _[16] = k(14), + _[17] = k(15), + w += 16, + C = 0 + } + function R() { + A[0] = 0, + A[1] = 0, + I[0] = 0, + I[1] = 0 + } + if (7 == v) + throw v; + if (6 == v) { + var M = 12 == g + , N = M ? O : D + , B = M ? 14 : 11 + , F = M ? 128 : 512 + , j = M ? 2048 : 8192 + , U = M ? 16383 : 65535 + , L = M ? 4095 : 16383 + , K = m / B + , X = 16 * K + , z = M ? 18 : 14; + for (d = 0; d < b - 15; d += 16) { + var G = Math.min(16, b - d) + , W = X * G; + for (T = new Uint8Array(p,r + y,W), + w = 0, + y += W, + h = 0, + f = 0; h < G; h++, + f = 0) { + E = (d + h) * m; + for (var q = 0; q < K; q++) + for (N(), + R(), + c = 0, + l = 0, + a = 0; a < B; a++) { + if (u = 1 & a, + a % 3 == 2) { + var H = C < z ? _[C++] : 0; + 3 == H && (H = 4), + l = F << H, + c = 1 << H + } + var V = C < z ? _[C++] : 0; + A[u] ? (V *= c, + l < j && I[u] > l && (V += I[u] - l), + I[u] = V) : (A[u] = V, + V ? I[u] = V : V = I[u]), + x[E + f++] = V - 15 <= U ? V - 15 & U : V + 2147483633 >> 31 & L + } + } + } + } else if (5 == v) { + var Z = 12 == g ? 10 : 9; + for (d = 0; d < b; d++) + for (f = 0; f < m; f += Z) + P(0), + 12 == g ? (x[E++] = ((15 & _[1]) << 8) + _[0], + x[E++] = 16 * _[2] + (_[1] >> 4), + x[E++] = ((15 & _[4]) << 8) + _[3], + x[E++] = 16 * _[5] + (_[4] >> 4), + x[E++] = ((15 & _[7]) << 8) + _[6], + x[E++] = 16 * _[8] + (_[7] >> 4), + x[E++] = ((15 & _[10]) << 8) + _[9], + x[E++] = 16 * _[11] + (_[10] >> 4), + x[E++] = ((15 & _[13]) << 8) + _[12], + x[E++] = 16 * _[14] + (_[13] >> 4)) : 14 == g && (x[E++] = _[0] + ((63 & _[1]) << 8), + x[E++] = (_[1] >> 6) + 4 * _[2] + ((15 & _[3]) << 10), + x[E++] = (_[3] >> 4) + 16 * _[4] + ((3 & _[5]) << 12), + x[E++] = ((252 & _[5]) >> 2) + (_[6] << 6), + x[E++] = _[7] + ((63 & _[8]) << 8), + x[E++] = (_[8] >> 6) + 4 * _[9] + ((15 & _[10]) << 10), + x[E++] = (_[10] >> 4) + 16 * _[11] + ((3 & _[12]) << 12), + x[E++] = ((252 & _[12]) >> 2) + (_[13] << 6), + x[E++] = _[14] + ((63 & _[15]) << 8)) + } else { + if (4 != v) + throw v; + for (d = 0; d < b; d++) + for (f = 0; f < m; f++) + a = f % 14, + u = 1 & a, + 0 == a && R(), + a % 3 == 2 && (c = 4 >> 3 - P(2)), + I[u] ? (s = P(8), + 0 != s && (A[u] -= 128 << c, + (A[u] < 0 || 4 == c) && (A[u] &= ~(-1 << c)), + A[u] += s << c)) : (I[u] = P(8), + (I[u] || a > 11) && (A[u] = I[u] << 4 | P(4))), + x[E++] = A[1 & f] + } + } + , + t.decode._decodeVC5 = function() { + var e, r, n, i = [1, 0, 1, 0, 2, 2, 1, 1, 3, 7, 1, 2, 5, 25, 1, 3, 6, 48, 1, 4, 6, 54, 1, 5, 7, 111, 1, 8, 7, 99, 1, 6, 7, 105, 12, 0, 7, 107, 1, 7, 8, 209, 20, 0, 8, 212, 1, 9, 8, 220, 1, 10, 9, 393, 1, 11, 9, 394, 32, 0, 9, 416, 1, 12, 9, 427, 1, 13, 10, 887, 1, 18, 10, 784, 1, 14, 10, 790, 1, 15, 10, 835, 60, 0, 10, 852, 1, 16, 10, 885, 1, 17, 11, 1571, 1, 19, 11, 1668, 1, 20, 11, 1669, 100, 0, 11, 1707, 1, 21, 11, 1772, 1, 22, 12, 3547, 1, 29, 12, 3164, 1, 24, 12, 3166, 1, 25, 12, 3140, 1, 23, 12, 3413, 1, 26, 12, 3537, 1, 27, 12, 3539, 1, 28, 13, 7093, 1, 35, 13, 6283, 1, 30, 13, 6331, 1, 31, 13, 6335, 180, 0, 13, 6824, 1, 32, 13, 7072, 1, 33, 13, 7077, 320, 0, 13, 7076, 1, 34, 14, 12565, 1, 36, 14, 12661, 1, 37, 14, 12669, 1, 38, 14, 13651, 1, 39, 14, 14184, 1, 40, 15, 28295, 1, 46, 15, 28371, 1, 47, 15, 25320, 1, 42, 15, 25336, 1, 43, 15, 25128, 1, 41, 15, 27300, 1, 44, 15, 28293, 1, 45, 16, 50259, 1, 48, 16, 50643, 1, 49, 16, 50675, 1, 50, 16, 56740, 1, 53, 16, 56584, 1, 51, 16, 56588, 1, 52, 17, 113483, 1, 61, 17, 113482, 1, 60, 17, 101285, 1, 55, 17, 101349, 1, 56, 17, 109205, 1, 57, 17, 109207, 1, 58, 17, 100516, 1, 54, 17, 113171, 1, 59, 18, 202568, 1, 62, 18, 202696, 1, 63, 18, 218408, 1, 64, 18, 218412, 1, 65, 18, 226340, 1, 66, 18, 226356, 1, 67, 18, 226358, 1, 68, 19, 402068, 1, 69, 19, 405138, 1, 70, 19, 405394, 1, 71, 19, 436818, 1, 72, 19, 436826, 1, 73, 19, 452714, 1, 75, 19, 452718, 1, 76, 19, 452682, 1, 74, 20, 804138, 1, 77, 20, 810279, 1, 78, 20, 810790, 1, 79, 20, 873638, 1, 80, 20, 873654, 1, 81, 20, 905366, 1, 82, 20, 905430, 1, 83, 20, 905438, 1, 84, 21, 1608278, 1, 85, 21, 1620557, 1, 86, 21, 1621582, 1, 87, 21, 1621583, 1, 88, 21, 1747310, 1, 89, 21, 1810734, 1, 90, 21, 1810735, 1, 91, 21, 1810863, 1, 92, 21, 1810879, 1, 93, 22, 3621725, 1, 99, 22, 3621757, 1, 100, 22, 3241112, 1, 94, 22, 3494556, 1, 95, 22, 3494557, 1, 96, 22, 3494622, 1, 97, 22, 3494623, 1, 98, 23, 6482227, 1, 102, 23, 6433117, 1, 101, 23, 6989117, 1, 103, 23, 6989119, 1, 105, 23, 6989118, 1, 104, 23, 7243449, 1, 106, 23, 7243512, 1, 107, 24, 13978233, 1, 111, 24, 12964453, 1, 109, 24, 12866232, 1, 108, 24, 14486897, 1, 113, 24, 13978232, 1, 110, 24, 14486896, 1, 112, 24, 14487026, 1, 114, 24, 14487027, 1, 115, 25, 25732598, 1, 225, 25, 25732597, 1, 189, 25, 25732596, 1, 188, 25, 25732595, 1, 203, 25, 25732594, 1, 202, 25, 25732593, 1, 197, 25, 25732592, 1, 207, 25, 25732591, 1, 169, 25, 25732590, 1, 223, 25, 25732589, 1, 159, 25, 25732522, 1, 235, 25, 25732579, 1, 152, 25, 25732575, 1, 192, 25, 25732489, 1, 179, 25, 25732573, 1, 201, 25, 25732472, 1, 172, 25, 25732576, 1, 149, 25, 25732488, 1, 178, 25, 25732566, 1, 120, 25, 25732571, 1, 219, 25, 25732577, 1, 150, 25, 25732487, 1, 127, 25, 25732506, 1, 211, 25, 25732548, 1, 125, 25, 25732588, 1, 158, 25, 25732486, 1, 247, 25, 25732467, 1, 238, 25, 25732508, 1, 163, 25, 25732552, 1, 228, 25, 25732603, 1, 183, 25, 25732513, 1, 217, 25, 25732587, 1, 168, 25, 25732520, 1, 122, 25, 25732484, 1, 128, 25, 25732562, 1, 249, 25, 25732505, 1, 187, 25, 25732504, 1, 186, 25, 25732483, 1, 136, 25, 25928905, 1, 181, 25, 25732560, 1, 255, 25, 25732500, 1, 230, 25, 25732482, 1, 135, 25, 25732555, 1, 233, 25, 25732568, 1, 222, 25, 25732583, 1, 145, 25, 25732481, 1, 134, 25, 25732586, 1, 167, 25, 25732521, 1, 248, 25, 25732518, 1, 209, 25, 25732480, 1, 243, 25, 25732512, 1, 216, 25, 25732509, 1, 164, 25, 25732547, 1, 140, 25, 25732479, 1, 157, 25, 25732544, 1, 239, 25, 25732574, 1, 191, 25, 25732564, 1, 251, 25, 25732478, 1, 156, 25, 25732546, 1, 139, 25, 25732498, 1, 242, 25, 25732557, 1, 133, 25, 25732477, 1, 162, 25, 25732515, 1, 213, 25, 25732584, 1, 165, 25, 25732514, 1, 212, 25, 25732476, 1, 227, 25, 25732494, 1, 198, 25, 25732531, 1, 236, 25, 25732530, 1, 234, 25, 25732529, 1, 117, 25, 25732528, 1, 215, 25, 25732527, 1, 124, 25, 25732526, 1, 123, 25, 25732525, 1, 254, 25, 25732524, 1, 253, 25, 25732523, 1, 148, 25, 25732570, 1, 218, 25, 25732580, 1, 146, 25, 25732581, 1, 147, 25, 25732569, 1, 224, 25, 25732533, 1, 143, 25, 25732540, 1, 184, 25, 25732541, 1, 185, 25, 25732585, 1, 166, 25, 25732556, 1, 132, 25, 25732485, 1, 129, 25, 25732563, 1, 250, 25, 25732578, 1, 151, 25, 25732501, 1, 119, 25, 25732502, 1, 193, 25, 25732536, 1, 176, 25, 25732496, 1, 245, 25, 25732553, 1, 229, 25, 25732516, 1, 206, 25, 25732582, 1, 144, 25, 25732517, 1, 208, 25, 25732558, 1, 137, 25, 25732543, 1, 241, 25, 25732466, 1, 237, 25, 25732507, 1, 190, 25, 25732542, 1, 240, 25, 25732551, 1, 131, 25, 25732554, 1, 232, 25, 25732565, 1, 252, 25, 25732475, 1, 171, 25, 25732493, 1, 205, 25, 25732492, 1, 204, 25, 25732491, 1, 118, 25, 25732490, 1, 214, 25, 25928904, 1, 180, 25, 25732549, 1, 126, 25, 25732602, 1, 182, 25, 25732539, 1, 175, 25, 25732545, 1, 141, 25, 25732559, 1, 138, 25, 25732537, 1, 177, 25, 25732534, 1, 153, 25, 25732503, 1, 194, 25, 25732606, 1, 160, 25, 25732567, 1, 121, 25, 25732538, 1, 174, 25, 25732497, 1, 246, 25, 25732550, 1, 130, 25, 25732572, 1, 200, 25, 25732474, 1, 170, 25, 25732511, 1, 221, 25, 25732601, 1, 196, 25, 25732532, 1, 142, 25, 25732519, 1, 210, 25, 25732495, 1, 199, 25, 25732605, 1, 155, 25, 25732535, 1, 154, 25, 25732499, 1, 244, 25, 25732510, 1, 220, 25, 25732600, 1, 195, 25, 25732607, 1, 161, 25, 25732604, 1, 231, 25, 25732473, 1, 173, 25, 25732599, 1, 226, 26, 51465122, 1, 116, 26, 51465123, 0, 1], o = [3, 3, 3, 3, 2, 2, 2, 1, 1, 1], a = 24576, s = 16384, c = 8192, u = s | c; + function l(t) { + var e = t[1] + , r = t[0][e >>> 3] >>> 7 - (7 & e) & 1; + return t[1]++, + r + } + function d(t, r) { + if (null == e) { + e = {}; + for (var n = 0; n < i.length; n += 4) + e[i[n + 1]] = i.slice(n, n + 4) + } + var o = l(t) + , a = e[o]; + while (null == a) + o = o << 1 | l(t), + a = e[o]; + var s = a[3]; + 0 != s && (s = 0 == l(t) ? s : -s), + r[0] = a[2], + r[1] = s + } + function f(t, e) { + for (var r = 0; r < e; r++) + 1 == (1 & t) && t++, + t >>>= 1; + return t + } + function h(t, e) { + return t >> e + } + function p(t, e, r, n, i, o) { + e[r] = h(h(11 * t[i] - 4 * t[i + o] + t[i + o + o] + 4, 3) + t[n], 1), + e[r + o] = h(h(5 * t[i] + 4 * t[i + o] - t[i + o + o] + 4, 3) - t[n], 1) + } + function m(t, e, r, n, i, o) { + var a = t[i - o] - t[i + o] + , s = t[i] + , c = t[n]; + e[r] = h(h(a + 4, 3) + s + c, 1), + e[r + o] = h(h(4 - a, 3) + s - c, 1) + } + function b(t, e, r, n, i, o) { + e[r] = h(h(5 * t[i] + 4 * t[i - o] - t[i - o - o] + 4, 3) + t[n], 1), + e[r + o] = h(h(11 * t[i] - 4 * t[i - o] + t[i - o - o] + 4, 3) - t[n], 1) + } + function g(t) { + return t = t < 0 ? 0 : t > 4095 ? 4095 : t, + t = n[t] >>> 2, + t + } + function v(e, i, s, l, h, v) { + l = new Uint16Array(l.buffer); + var y, S, w, C, _, A, I, E, T = Date.now(), x = t._binBE, P = i + s; + i += 4; + var k = 1 == v[0]; + while (i < P) { + var D = x.readShort(e, i) + , O = x.readUshort(e, i + 2); + if (i += 4, + 12 == D) + U = O; + else if (20 == D) + y = O; + else if (21 == D) + S = O; + else if (48 == D) + w = O; + else if (53 == D) + C = O; + else if (35 == D) + O; + else if (62 == D) + _ = O; + else if (101 == D) + O; + else if (109 == D) + A = O; + else if (84 == D) + O; + else if (106 == D) + O; + else if (107 == D) + O; + else if (108 == D) + O; + else if (102 == D) + O; + else if (104 == D) + at = O; + else if (105 == D) + O; + else { + var R = D < 0 ? -D : D + , M = 65280 & R + , N = 0; + if (R & u && (R & c ? (N = 65535 & O, + N += (255 & R) << 16) : N = 65535 & O), + (R & a) == a) { + if (null == I) { + I = []; + for (var B = 0; B < 4; B++) + I[B] = new Int16Array((y >>> 1) * (S >>> 1)); + E = new Int16Array((y >>> 1) * (S >>> 1)), + r = new Int16Array(1024); + for (B = 0; B < 1024; B++) { + var F = B - 512 + , j = Math.abs(F) + , U = Math.floor(768 * j * j * j / 16581375) + j; + r[B] = Math.sign(F) * U + } + n = new Uint16Array(4096); + var L = 65535; + for (B = 0; B < 4096; B++) { + var K = B + , X = L * (Math.pow(113, K / 4095) - 1) / 112; + n[B] = Math.min(X, L) + } + } + var z = I[_] + , G = f(y, 1 + o[w]) + , W = f(S, 1 + o[w]); + if (0 == w) + for (var q = 0; q < W; q++) + for (var H = 0; H < G; H++) { + var V = i + 2 * (q * G + H); + z[q * (y >>> 1) + H] = e[V] << 8 | e[V + 1] + } + else { + var Z = [e, 8 * i] + , Q = [] + , Y = 0 + , J = G * W + , $ = [0, 0] + , tt = 0; + O = 0; + while (Y < J) { + d(Z, $), + tt = $[0], + O = $[1]; + while (tt > 0) + Q[Y++] = O, + tt-- + } + var et = (w - 1) % 3 + , rt = 1 != et ? G : 0 + , nt = 0 != et ? W : 0; + for (q = 0; q < W; q++) { + var it = (q + nt) * (y >>> 1) + rt + , ot = q * G; + for (H = 0; H < G; H++) + z[it + H] = r[Q[ot + H] + 512] * C + } + if (2 == et) { + var at = y >>> 1 + , st = 2 * G + , ct = 2 * W; + for (q = 0; q < W; q++) + for (H = 0; H < st; H++) { + B = 2 * q * at + H; + var ut = q * at + H + , lt = W * at + ut; + 0 == q ? p(z, E, B, lt, ut, at) : q == W - 1 ? b(z, E, B, lt, ut, at) : m(z, E, B, lt, ut, at) + } + var dt = z; + z = E, + E = dt; + for (q = 0; q < ct; q++) + for (H = 0; H < G; H++) { + B = q * at + 2 * H, + ut = q * at + H, + lt = G + ut; + 0 == H ? p(z, E, B, lt, ut, 1) : H == G - 1 ? b(z, E, B, lt, ut, 1) : m(z, E, B, lt, ut, 1) + } + dt = z; + z = E, + E = dt; + for (var ft = [], ht = 2 - ~~((w - 1) / 3), pt = 0; pt < 3; pt++) + ft[pt] = A >> 14 - 2 * pt & 3; + var mt = ft[ht]; + if (0 != mt) + for (q = 0; q < ct; q++) + for (H = 0; H < st; H++) { + B = q * at + H; + z[B] = z[B] << mt + } + } + } + if (9 == w && 3 == _) { + var bt = I[0] + , gt = I[1] + , vt = I[2] + , yt = I[3]; + for (q = 0; q < S; q += 2) + for (H = 0; H < y; H += 2) { + var St = q * y + H + , wt = (V = (q >>> 1) * (y >>> 1) + (H >>> 1), + bt[V]) + , Ct = gt[V] - 2048 + , _t = vt[V] - 2048 + , At = yt[V] - 2048 + , It = (Ct << 1) + wt + , Et = (_t << 1) + wt + , Tt = wt + At + , xt = wt - At; + k ? (l[St] = g(Tt), + l[St + 1] = g(Et), + l[St + y] = g(It), + l[St + y + 1] = g(xt)) : (l[St] = g(It), + l[St + 1] = g(Tt), + l[St + y] = g(xt), + l[St + y + 1] = g(Et)) + } + } + i += 4 * N + } else if (16388 == R) + i += 4 * N; + else if (8192 != M && 8448 != M && 9216 != M) + throw R.toString(16) + } + } + console.log(Date.now() - T) + } + return v + }(), + t.decode._decodeLogLuv32 = function(t, e, r, n, i, o) { + var a = t.width + , s = 4 * a + , c = 0 + , u = new Uint8Array(s); + while (c < n) { + var l = 0; + while (l < s) { + var d = e[r + c]; + if (c++, + d < 128) { + for (var f = 0; f < d; f++) + u[l + f] = e[r + c + f]; + l += d, + c += d + } else { + d -= 126; + for (f = 0; f < d; f++) + u[l + f] = e[r + c]; + l += d, + c++ + } + } + for (var h = 0; h < a; h++) + i[o + 0] = u[h], + i[o + 1] = u[h + a], + i[o + 2] = u[h + 2 * a], + i[o + 4] = u[h + 3 * a], + o += 6 + } + } + , + t.decode._ljpeg_diff = function(e, r, n) { + var i, o, a = t.decode._getbithuff; + return i = a(e, r, n[0], n), + o = a(e, r, i, 0), + 0 == (o & 1 << i - 1) && (o -= (1 << i) - 1), + o + } + , + t.decode._decodeARW = function(e, r, n, i, o, a) { + var s = e["t256"][0] + , c = e["t257"][0] + , u = e["t258"][0] + , l = e.isLE ? t._binLE : t._binBE + , d = s * c == i || s * c * 1.5 == i; + if (d) + if (s * c * 1.5 != i) { + var f, h, p, m, b, g, v, y, S = new Uint16Array(16), w = new Uint8Array(s + 1); + for (P = 0; P < c; P++) { + for (var C = 0; C < s; C++) + w[C] = r[n++]; + for (y = 0, + x = 0; x < s - 30; y += 16) { + for (h = 2047 & (f = l.readUint(w, y)), + p = 2047 & f >>> 11, + m = 15 & f >>> 22, + b = 15 & f >>> 26, + g = 0; g < 4 && 128 << g <= h - p; g++) + ; + for (v = 30, + _ = 0; _ < 16; _++) + _ == m ? S[_] = h : _ == b ? S[_] = p : (S[_] = ((l.readUshort(w, y + (v >> 3)) >>> (7 & v) & 127) << g) + p, + S[_] > 2047 && (S[_] = 2047), + v += 7); + for (_ = 0; _ < 16; _++, + x += 2) { + F = S[_] << 1; + t.decode._putsF(o, (P * s + x) * u, F << 16 - u) + } + x -= 1 & x ? 1 : 31 + } + } + } else + for (var _ = 0; _ < i; _ += 3) { + var A = r[n + _ + 0] + , I = r[n + _ + 1] + , E = r[n + _ + 2]; + o[a + _] = I << 4 | A >>> 4, + o[a + _ + 1] = A << 4 | E >>> 4, + o[a + _ + 2] = E << 4 | I >>> 4 + } + else { + c += 8; + var T, x, P, k = [n, 0, 0, 0], D = new Uint16Array(32770), O = [3857, 3856, 3599, 3342, 3085, 2828, 2571, 2314, 2057, 1800, 1543, 1286, 1029, 772, 771, 768, 514, 513], R = 0, M = t.decode._ljpeg_diff; + for (D[0] = 15, + T = _ = 0; _ < 18; _++) + for (var N = 32768 >>> (O[_] >>> 8), B = 0; B < N; B++) + D[++T] = O[_]; + for (x = s; x--; ) + for (P = 0; P < c + 1; P += 2) + if (P == c && (P = 1), + R += M(r, k, D), + P < c) { + var F = 4095 & R; + t.decode._putsF(o, (P * s + x) * u, F << 16 - u) + } + } + } + , + t.decode._decodeNikon = function(e, r, n, i, o, a, s) { + var c = [[0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 5, 4, 3, 6, 2, 7, 1, 0, 8, 9, 11, 10, 12], [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 57, 90, 56, 39, 22, 5, 4, 3, 2, 1, 0, 11, 12, 12], [0, 0, 1, 4, 2, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 6, 3, 7, 2, 8, 1, 9, 0, 10, 11, 12], [0, 0, 1, 4, 3, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 5, 6, 4, 7, 8, 3, 9, 2, 1, 0, 10, 11, 12, 13, 14], [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 8, 92, 75, 58, 41, 7, 6, 5, 4, 3, 2, 1, 0, 13, 14], [0, 0, 1, 4, 2, 2, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 8, 5, 9, 4, 10, 3, 11, 12, 2, 0, 1, 13, 14]] + , u = e["t256"][0] + , l = e["t257"][0] + , d = e["t258"][0] + , f = 0 + , h = 0 + , p = t.decode._make_decoder + , m = t.decode._getbithuff + , b = r[0].exifIFD.makerNote + , g = b["t150"] ? b["t150"] : b["t140"] + , v = 0 + , y = g[v++] + , S = g[v++]; + 73 != y && 88 != S || (v += 2110), + 70 == y && (f = 2), + 14 == d && (f += 3); + for (var w = [[0, 0], [0, 0]], C = e.isLE ? t._binLE : t._binBE, _ = 0; _ < 2; _++) + for (var A = 0; A < 2; A++) + w[_][A] = C.readShort(g, v), + v += 2; + var I, E, T, x, P, k = 1 << d & 32767, D = 0, O = C.readShort(g, v); + v += 2, + O > 1 && (D = Math.floor(k / (O - 1))), + 68 == y && 32 == S && D > 0 && (h = C.readShort(g, 562)); + var R = [0, 0] + , M = p(c[f]) + , N = [i, 0, 0, 0]; + for (I = 0; I < l; I++) + for (h && I == h && (M = p(c[f + 1])), + E = 0; E < u; E++) { + _ = m(n, N, M[0], M), + T = 15 & _, + x = _ >>> 4, + P = 1 + (m(n, N, T - x, 0) << 1) << x >>> 1, + 0 == (P & 1 << T - 1) && (P -= (1 << T) - (0 == x ? 1 : 0)), + E < 2 ? R[E] = w[1 & I][E] += P : R[1 & E] += P; + var B = Math.min(Math.max(R[1 & E], 0), (1 << d) - 1) + , F = (I * u + E) * d; + t.decode._putsF(a, F, B << 16 - d) + } + } + , + t.decode._putsF = function(t, e, r) { + r <<= 8 - (7 & e); + var n = e >>> 3; + t[n] |= r >>> 16, + t[n + 1] |= r >>> 8, + t[n + 2] |= r + } + , + t.decode._getbithuff = function(e, r, n, i) { + var o, a = 0, s = (t.decode._get_byte, + r[0]), c = r[1], u = r[2], l = r[3]; + if (0 == n || u < 0) + return 0; + while (!l && u < n && -1 != (o = e[s++]) && !(l = a && 255 == o && e[s++])) + c = (c << 8) + o, + u += 8; + if (o = c << 32 - u >>> 32 - n, + i ? (u -= i[o + 1] >>> 8, + o = 255 & i[o + 1]) : u -= n, + u < 0) + throw "e"; + return r[0] = s, + r[1] = c, + r[2] = u, + r[3] = l, + o + } + , + t.decode._make_decoder = function(t) { + var e, r, n, i, o, a = []; + for (e = 16; 0 != e && !t[e]; e--) + ; + var s = 17; + for (a[0] = e, + n = r = 1; r <= e; r++) + for (i = 0; i < t[r]; i++, + ++s) + for (o = 0; o < 1 << e - r; o++) + n <= 1 << e && (a[n++] = r << 8 | t[s]); + return a + } + , + t.decode._decodeNewJPEG = function(e, r, n, i, o, a) { + i = Math.min(i, r.length - n); + var s = e["t347"] + , c = s ? s.length : 0 + , u = new Uint8Array(c + i); + if (s) { + for (var l = 216, d = 217, f = 0, h = 0; h < c - 1; h++) { + if (255 == s[h] && s[h + 1] == d) + break; + u[f++] = s[h] + } + var p = r[n] + , m = r[n + 1]; + 255 == p && m == l || (u[f++] = p, + u[f++] = m); + for (h = 2; h < i; h++) + u[f++] = r[n + h] + } else + for (h = 0; h < i; h++) + u[h] = r[n + h]; + if (32803 == e["t262"][0] || 7 == e["t259"][0] && 34892 == e["t262"][0]) { + var b = e["t258"][0] + , g = t.LosslessJpegDecode(u) + , v = g.length; + if (16 == b) + if (e.isLE) + for (h = 0; h < v; h++) + o[a + (h << 1)] = 255 & g[h], + o[a + (h << 1) + 1] = g[h] >>> 8; + else + for (h = 0; h < v; h++) + o[a + (h << 1)] = g[h] >>> 8, + o[a + (h << 1) + 1] = 255 & g[h]; + else if (14 == b || 12 == b || 10 == b) { + var y = 16 - b; + for (h = 0; h < v; h++) + t.decode._putsF(o, h * b, g[h] << y) + } else { + if (8 != b) + throw new Error("unsupported bit depth " + b); + for (h = 0; h < v; h++) + o[a + h] = g[h] + } + } else { + var S = new t.JpegDecoder; + S.parse(u); + var w = S.getData({ + width: S.width, + height: S.height, + forceRGB: !0, + isSourcePDF: !1 + }); + for (h = 0; h < w.length; h++) + o[a + h] = w[h] + } + 6 == e["t262"][0] && (e["t262"][0] = 2) + } + , + t.decode._decodeOldJPEGInit = function(t, e, r, n) { + var o, a, s, c, u, l = 216, d = 219, f = 196, h = 221, p = 192, m = 218, b = 0, g = 0, v = !1, y = t["t513"], S = y ? y[0] : 0, w = t["t514"], C = w ? w[0] : 0, _ = t["t324"] || t["t273"] || y, A = t["t530"], I = 0, E = 0, T = t["t277"] ? t["t277"][0] : 1, x = t["t515"]; + if (_ && (g = _[0], + v = _.length > 1), + !v) { + if (255 == e[r] && e[r + 1] == l) + return { + jpegOffset: r + }; + if (null != y && (255 == e[r + S] && e[r + S + 1] == l ? b = r + S : i("JPEGInterchangeFormat does not point to SOI"), + null == w ? i("JPEGInterchangeFormatLength field is missing") : (S >= g || S + C <= g) && i("JPEGInterchangeFormatLength field value is invalid"), + null != b)) + return { + jpegOffset: b + } + } + if (null != A && (I = A[0], + E = A[1]), + null != y && null != w) + if (C >= 2 && S + C <= g) { + for (o = 255 == e[r + S + C - 2] && e[r + S + C - 1] == l ? new Uint8Array(C - 2) : new Uint8Array(C), + s = 0; s < o.length; s++) + o[s] = e[r + S + s]; + i("Incorrect JPEG interchange format: using JPEGInterchangeFormat offset to derive tables") + } else + i("JPEGInterchangeFormat+JPEGInterchangeFormatLength > offset to first strip or tile"); + if (null == o) { + var P = 0 + , k = []; + k[P++] = 255, + k[P++] = l; + var D = t["t519"]; + if (null == D) + throw new Error("JPEGQTables tag is missing"); + for (s = 0; s < D.length; s++) + for (k[P++] = 255, + k[P++] = d, + k[P++] = 0, + k[P++] = 67, + k[P++] = s, + c = 0; c < 64; c++) + k[P++] = e[r + D[s] + c]; + for (u = 0; u < 2; u++) { + var O = t[0 == u ? "t520" : "t521"]; + if (null == O) + throw new Error((0 == u ? "JPEGDCTables" : "JPEGACTables") + " tag is missing"); + for (s = 0; s < O.length; s++) { + k[P++] = 255, + k[P++] = f; + var R = 19; + for (c = 0; c < 16; c++) + R += e[r + O[s] + c]; + for (k[P++] = R >>> 8, + k[P++] = 255 & R, + k[P++] = s | u << 4, + c = 0; c < 16; c++) + k[P++] = e[r + O[s] + c]; + for (c = 0; c < R; c++) + k[P++] = e[r + O[s] + 16 + c] + } + } + if (k[P++] = 255, + k[P++] = p, + k[P++] = 0, + k[P++] = 8 + 3 * T, + k[P++] = 8, + k[P++] = t.height >>> 8 & 255, + k[P++] = 255 & t.height, + k[P++] = t.width >>> 8 & 255, + k[P++] = 255 & t.width, + k[P++] = T, + 1 == T) + k[P++] = 1, + k[P++] = 17, + k[P++] = 0; + else + for (s = 0; s < 3; s++) + k[P++] = s + 1, + k[P++] = 0 != s ? 17 : (15 & I) << 4 | 15 & E, + k[P++] = s; + null != x && 0 != x[0] && (k[P++] = 255, + k[P++] = h, + k[P++] = 0, + k[P++] = 4, + k[P++] = x[0] >>> 8 & 255, + k[P++] = 255 & x[0]), + o = new Uint8Array(k) + } + var M = -1; + s = 0; + while (s < o.length - 1) { + if (255 == o[s] && o[s + 1] == p) { + M = s; + break + } + s++ + } + if (-1 == M) { + var N = new Uint8Array(o.length + 10 + 3 * T); + N.set(o); + var B = o.length; + if (M = o.length, + o = N, + o[B++] = 255, + o[B++] = p, + o[B++] = 0, + o[B++] = 8 + 3 * T, + o[B++] = 8, + o[B++] = t.height >>> 8 & 255, + o[B++] = 255 & t.height, + o[B++] = t.width >>> 8 & 255, + o[B++] = 255 & t.width, + o[B++] = T, + 1 == T) + o[B++] = 1, + o[B++] = 17, + o[B++] = 0; + else + for (s = 0; s < 3; s++) + o[B++] = s + 1, + o[B++] = 0 != s ? 17 : (15 & I) << 4 | 15 & E, + o[B++] = s + } + if (255 == e[g] && e[g + 1] == m) { + var F = e[g + 2] << 8 | e[g + 3]; + for (a = new Uint8Array(F + 2), + a[0] = e[g], + a[1] = e[g + 1], + a[2] = e[g + 2], + a[3] = e[g + 3], + s = 0; s < F - 2; s++) + a[s + 4] = e[g + s + 4] + } else { + a = new Uint8Array(8 + 2 * T); + var j = 0; + if (a[j++] = 255, + a[j++] = m, + a[j++] = 0, + a[j++] = 6 + 2 * T, + a[j++] = T, + 1 == T) + a[j++] = 1, + a[j++] = 0; + else + for (s = 0; s < 3; s++) + a[j++] = s + 1, + a[j++] = s << 4 | s; + a[j++] = 0, + a[j++] = 63, + a[j++] = 0 + } + return { + jpegOffset: r, + tables: o, + sosMarker: a, + sofPosition: M + } + } + , + t.decode._decodeOldJPEG = function(e, r, n, i, o, a) { + var s, c, u, l, d = t.decode._decodeOldJPEGInit(e, r, n, i); + if (null != d.jpegOffset) + for (s = n + i - d.jpegOffset, + u = new Uint8Array(s), + p = 0; p < s; p++) + u[p] = r[d.jpegOffset + p]; + else { + for (c = d.tables.length, + u = new Uint8Array(c + d.sosMarker.length + i + 2), + u.set(d.tables), + l = c, + u[d.sofPosition + 5] = e.height >>> 8 & 255, + u[d.sofPosition + 6] = 255 & e.height, + u[d.sofPosition + 7] = e.width >>> 8 & 255, + u[d.sofPosition + 8] = 255 & e.width, + 255 == r[n] && r[n + 1] == SOS || (u.set(d.sosMarker, l), + l += sosMarker.length), + p = 0; p < i; p++) + u[l++] = r[n + p]; + u[l++] = 255, + u[l++] = EOI + } + var f = new t.JpegDecoder; + f.parse(u); + for (var h = f.getData({ + width: f.width, + height: f.height, + forceRGB: !0, + isSourcePDF: !1 + }), p = 0; p < h.length; p++) + o[a + p] = h[p]; + e["t262"] && 6 == e["t262"][0] && (e["t262"][0] = 2) + } + , + t.decode._decodePackBits = function(t, e, r, n, i) { + var o = new Int8Array(t.buffer) + , a = new Int8Array(n.buffer) + , s = e + r; + while (e < s) { + var c = o[e]; + if (e++, + c >= 0 && c < 128) + for (var u = 0; u < c + 1; u++) + a[i] = o[e], + i++, + e++; + if (c >= -127 && c < 0) { + for (u = 0; u < 1 - c; u++) + a[i] = o[e], + i++; + e++ + } + } + return i + } + , + t.decode._decodeThunder = function(t, e, r, n, i) { + var o = [0, 1, 0, -1] + , a = [0, 1, 2, 3, 0, -3, -2, -1] + , s = e + r + , c = 2 * i + , u = 0; + while (e < s) { + var l = t[e] + , d = l >>> 6 + , f = 63 & l; + if (e++, + 3 == d && (u = 15 & f, + n[c >>> 1] |= u << 4 * (1 - c & 1), + c++), + 0 == d) + for (var h = 0; h < f; h++) + n[c >>> 1] |= u << 4 * (1 - c & 1), + c++; + if (2 == d) + for (h = 0; h < 2; h++) { + var p = f >>> 3 * (1 - h) & 7; + 4 != p && (u += a[p], + n[c >>> 1] |= u << 4 * (1 - c & 1), + c++) + } + if (1 == d) + for (h = 0; h < 3; h++) { + p = f >>> 2 * (2 - h) & 3; + 2 != p && (u += o[p], + n[c >>> 1] |= u << 4 * (1 - c & 1), + c++) + } + } + } + , + t.decode._dmap = { + 1: 0, + "011": 1, + "000011": 2, + "0000011": 3, + "010": -1, + "000010": -2, + "0000010": -3 + }, + t.decode._lens = function() { + var t = function(t, e, r, n) { + for (var i = 0; i < e.length; i++) + t[e[i]] = r + i * n + } + , e = "00110101,000111,0111,1000,1011,1100,1110,1111,10011,10100,00111,01000,001000,000011,110100,110101,101010,101011,0100111,0001100,0001000,0010111,0000011,0000100,0101000,0101011,0010011,0100100,0011000,00000010,00000011,00011010,00011011,00010010,00010011,00010100,00010101,00010110,00010111,00101000,00101001,00101010,00101011,00101100,00101101,00000100,00000101,00001010,00001011,01010010,01010011,01010100,01010101,00100100,00100101,01011000,01011001,01011010,01011011,01001010,01001011,00110010,00110011,00110100" + , r = "0000110111,010,11,10,011,0011,0010,00011,000101,000100,0000100,0000101,0000111,00000100,00000111,000011000,0000010111,0000011000,0000001000,00001100111,00001101000,00001101100,00000110111,00000101000,00000010111,00000011000,000011001010,000011001011,000011001100,000011001101,000001101000,000001101001,000001101010,000001101011,000011010010,000011010011,000011010100,000011010101,000011010110,000011010111,000001101100,000001101101,000011011010,000011011011,000001010100,000001010101,000001010110,000001010111,000001100100,000001100101,000001010010,000001010011,000000100100,000000110111,000000111000,000000100111,000000101000,000001011000,000001011001,000000101011,000000101100,000001011010,000001100110,000001100111" + , n = "11011,10010,010111,0110111,00110110,00110111,01100100,01100101,01101000,01100111,011001100,011001101,011010010,011010011,011010100,011010101,011010110,011010111,011011000,011011001,011011010,011011011,010011000,010011001,010011010,011000,010011011" + , i = "0000001111,000011001000,000011001001,000001011011,000000110011,000000110100,000000110101,0000001101100,0000001101101,0000001001010,0000001001011,0000001001100,0000001001101,0000001110010,0000001110011,0000001110100,0000001110101,0000001110110,0000001110111,0000001010010,0000001010011,0000001010100,0000001010101,0000001011010,0000001011011,0000001100100,0000001100101" + , o = "00000001000,00000001100,00000001101,000000010010,000000010011,000000010100,000000010101,000000010110,000000010111,000000011100,000000011101,000000011110,000000011111"; + e = e.split(","), + r = r.split(","), + n = n.split(","), + i = i.split(","), + o = o.split(","); + var a = {} + , s = {}; + return t(a, e, 0, 1), + t(a, n, 64, 64), + t(a, o, 1792, 64), + t(s, r, 0, 1), + t(s, i, 64, 64), + t(s, o, 1792, 64), + [a, s] + }(), + t.decode._decodeG4 = function(e, r, n, i, o, a, s) { + for (var c = t.decode, u = r << 3, l = 0, d = "", f = [], h = [], p = 0; p < a; p++) + h.push(0); + h = c._makeDiff(h); + var m = 0 + , b = 0 + , g = 0 + , v = 0 + , y = 0 + , S = 0 + , w = "" + , C = 0 + , _ = 8 * Math.ceil(a / 8); + while (u >>> 3 < r + n) { + g = c._findDiff(h, m + (0 == m ? 0 : 1), 1 - y), + v = c._findDiff(h, g, y); + var A = 0; + if (1 == s && (A = e[u >>> 3] >>> 7 - (7 & u) & 1), + 2 == s && (A = e[u >>> 3] >>> (7 & u) & 1), + u++, + d += A, + "H" == w) { + if (null != c._lens[y][d]) { + var I = c._lens[y][d]; + d = "", + l += I, + I < 64 && (c._addNtimes(f, l, y), + m += l, + y = 1 - y, + l = 0, + C--, + 0 == C && (w = "")) + } + } else + "0001" == d && (d = "", + c._addNtimes(f, v - m, y), + m = v), + "001" == d && (d = "", + w = "H", + C = 2), + null != c._dmap[d] && (b = g + c._dmap[d], + c._addNtimes(f, b - m, y), + m = b, + d = "", + y = 1 - y); + f.length == a && "" == w && (c._writeBits(f, i, 8 * o + S * _), + y = 0, + S++, + m = 0, + h = c._makeDiff(f), + f = []) + } + } + , + t.decode._findDiff = function(t, e, r) { + for (var n = 0; n < t.length; n += 2) + if (t[n] >= e && t[n + 1] == r) + return t[n] + } + , + t.decode._makeDiff = function(t) { + var e = []; + 1 == t[0] && e.push(0, 1); + for (var r = 1; r < t.length; r++) + t[r - 1] != t[r] && e.push(r, t[r]); + return e.push(t.length, 0, t.length, 1), + e + } + , + t.decode._decodeG2 = function(e, r, n, i, o, a, s) { + var c = t.decode + , u = r << 3 + , l = 0 + , d = "" + , f = [] + , h = 0 + , p = 0 + , m = 8 * Math.ceil(a / 8); + while (u >>> 3 < r + n) { + var b = 0; + 1 == s && (b = e[u >>> 3] >>> 7 - (7 & u) & 1), + 2 == s && (b = e[u >>> 3] >>> (7 & u) & 1), + u++, + d += b, + l = c._lens[h][d], + null != l && (c._addNtimes(f, l, h), + d = "", + l < 64 && (h = 1 - h), + f.length == a && (c._writeBits(f, i, 8 * o + p * m), + f = [], + p++, + h = 0, + 0 != (7 & u) && (u += 8 - (7 & u)), + l >= 64 && (u += 8))) + } + } + , + t.decode._decodeG3 = function(e, r, n, i, o, a, s, c) { + for (var u = t.decode, l = r << 3, d = 0, f = "", h = [], p = [], m = 0; m < a; m++) + h.push(0); + var b = 0 + , g = 0 + , v = 0 + , y = 0 + , S = 0 + , w = -1 + , C = "" + , _ = 0 + , A = !0 + , I = 8 * Math.ceil(a / 8); + while (l >>> 3 < r + n) { + v = u._findDiff(p, b + (0 == b ? 0 : 1), 1 - S), + y = u._findDiff(p, v, S); + var E = 0; + if (1 == s && (E = e[l >>> 3] >>> 7 - (7 & l) & 1), + 2 == s && (E = e[l >>> 3] >>> (7 & l) & 1), + l++, + f += E, + A) { + if (null != u._lens[S][f]) { + var T = u._lens[S][f]; + f = "", + d += T, + T < 64 && (u._addNtimes(h, d, S), + S = 1 - S, + d = 0) + } + } else if ("H" == C) { + if (null != u._lens[S][f]) { + T = u._lens[S][f]; + f = "", + d += T, + T < 64 && (u._addNtimes(h, d, S), + b += d, + S = 1 - S, + d = 0, + _--, + 0 == _ && (C = "")) + } + } else + "0001" == f && (f = "", + u._addNtimes(h, y - b, S), + b = y), + "001" == f && (f = "", + C = "H", + _ = 2), + null != u._dmap[f] && (g = v + u._dmap[f], + u._addNtimes(h, g - b, S), + b = g, + f = "", + S = 1 - S); + f.endsWith("000000000001") && (w >= 0 && u._writeBits(h, i, 8 * o + w * I), + c && (1 == s && (A = 1 == (e[l >>> 3] >>> 7 - (7 & l) & 1)), + 2 == s && (A = 1 == (e[l >>> 3] >>> (7 & l) & 1)), + l++), + f = "", + S = 0, + w++, + b = 0, + p = u._makeDiff(h), + h = []) + } + h.length == a && u._writeBits(h, i, 8 * o + w * I) + } + , + t.decode._addNtimes = function(t, e, r) { + for (var n = 0; n < e; n++) + t.push(r) + } + , + t.decode._writeBits = function(t, e, r) { + for (var n = 0; n < t.length; n++) + e[r + n >>> 3] |= t[n] << 7 - (r + n & 7) + } + , + t.decode._decodeLZW = t.decode._decodeLZW = function() { + var t, e, r, n, i = 0, o = 0, a = 0, s = 0, c = function() { + var r = t >>> 3 + , n = e[r] << 16 | e[r + 1] << 8 | e[r + 2] + , i = n >>> 24 - (7 & t) - o & (1 << o) - 1; + return t += o, + i + }, u = new Uint32Array(16384), l = 0, d = function(t) { + if (t != l) { + l = t, + a = 1 << t, + s = a + 1; + for (var e = 0; e < s + 1; e++) + u[4 * e] = u[4 * e + 3] = e, + u[4 * e + 1] = 65535, + u[4 * e + 2] = 1 + } + }, f = function(t) { + o = t + 1, + i = s + 1 + }, h = function(t) { + var e = t << 2 + , i = u[e + 2] + , o = n + i - 1; + while (65535 != e) + r[o--] = u[e], + e = u[e + 1]; + n += i + }, p = function(t, e) { + var r = i << 2 + , n = t << 2; + u[r] = u[3 + (e << 2)], + u[r + 1] = n, + u[r + 2] = u[n + 2] + 1, + u[r + 3] = u[n + 3], + i++, + i + 1 == 1 << o && 12 != o && o++ + }, m = function(o, u, l, m, b, g) { + t = u << 3, + e = o, + r = m, + n = b; + var v = u + l << 3 + , y = 0 + , S = 0; + d(g), + f(g); + while (t < v && (y = c()) != s) { + if (y == a) { + if (f(g), + y = c(), + y == s) + break; + h(y) + } else + y < i ? (h(y), + p(S, y)) : (p(S, S), + h(i - 1)); + S = y + } + return n + }; + return m + }(), + t.tags = {}, + t._types = function() { + var t = new Array(250); + t.fill(0), + t = t.concat([0, 0, 0, 0, 4, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 0, 3, 0, 0, 2, 2, 2, 2, 4, 3, 0, 0, 3, 4, 4, 3, 3, 5, 5, 3, 2, 5, 5, 0, 0, 0, 0, 4, 4, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 5, 5, 3, 0, 3, 3, 4, 4, 4, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); + var e = { + 33432: 2, + 33434: 5, + 33437: 5, + 34665: 4, + 34850: 3, + 34853: 4, + 34855: 3, + 34864: 3, + 34866: 4, + 36864: 7, + 36867: 2, + 36868: 2, + 37121: 7, + 37377: 10, + 37378: 5, + 37380: 10, + 37381: 5, + 37383: 3, + 37384: 3, + 37385: 3, + 37386: 5, + 37510: 7, + 37520: 2, + 37521: 2, + 37522: 2, + 40960: 7, + 40961: 3, + 40962: 4, + 40963: 4, + 40965: 4, + 41486: 5, + 41487: 5, + 41488: 3, + 41985: 3, + 41986: 3, + 41987: 3, + 41988: 5, + 41989: 3, + 41990: 3, + 41993: 3, + 41994: 3, + 41995: 7, + 41996: 3, + 42032: 2, + 42033: 2, + 42034: 5, + 42036: 2, + 42037: 2, + 59932: 7 + }; + return { + basic: { + main: t, + rest: e + }, + gps: { + main: [1, 2, 5, 2, 5, 1, 5, 5, 0, 9], + rest: { + 18: 2, + 29: 2 + } + } + } + }(), + t._readIFD = function(e, r, n, o, a, s) { + var c = e.readUshort(r, n); + n += 2; + var u = {}; + s.debug && i(" ".repeat(a), o.length - 1, ">>>----------------"); + for (var l = 0; l < c; l++) { + var d = e.readUshort(r, n); + n += 2; + var f = e.readUshort(r, n); + n += 2; + var h = e.readUint(r, n); + n += 4; + var p = e.readUint(r, n); + n += 4; + var m = []; + if (1 == f || 7 == f) { + var b = h < 5 ? n - 4 : p; + b + h > r.buffer.byteLength && (h = r.buffer.byteLength - b), + m = new Uint8Array(r.buffer,b,h) + } + if (2 == f) { + var g = h < 5 ? n - 4 : p + , v = r[g] + , y = Math.max(0, Math.min(h - 1, r.length - g)); + v < 128 || 0 == y ? m.push(e.readASCII(r, g, y)) : m = new Uint8Array(r.buffer,g,y) + } + if (3 == f) + for (var S = 0; S < h; S++) + m.push(e.readUshort(r, (h < 3 ? n - 4 : p) + 2 * S)); + if (4 == f || 13 == f) + for (S = 0; S < h; S++) + m.push(e.readUint(r, (h < 2 ? n - 4 : p) + 4 * S)); + if (5 == f || 10 == f) { + var w = 5 == f ? e.readUint : e.readInt; + for (S = 0; S < h; S++) + m.push([w(r, p + 8 * S), w(r, p + 8 * S + 4)]) + } + if (8 == f) + for (S = 0; S < h; S++) + m.push(e.readShort(r, (h < 3 ? n - 4 : p) + 2 * S)); + if (9 == f) + for (S = 0; S < h; S++) + m.push(e.readInt(r, (h < 2 ? n - 4 : p) + 4 * S)); + if (11 == f) + for (S = 0; S < h; S++) + m.push(e.readFloat(r, p + 4 * S)); + if (12 == f) + for (S = 0; S < h; S++) + m.push(e.readDouble(r, p + 8 * S)); + if (0 == h || 0 != m.length) { + if (s.debug && i(" ".repeat(a), d, f, t.tags[d], m), + u["t" + d] = m, + 330 == d && u["t272"] && "DSLR-A100" == u["t272"][0]) + ; + else if (330 == d || 34665 == d || 34853 == d || 50740 == d && e.readUshort(r, e.readUint(m, 0)) < 300 || 61440 == d) { + var C = 50740 == d ? [e.readUint(m, 0)] : m + , _ = []; + for (S = 0; S < C.length; S++) + t._readIFD(e, r, C[S], _, a + 1, s); + 330 == d && (u.subIFD = _), + 34665 == d && (u.exifIFD = _[0]), + 34853 == d && (u.gpsiIFD = _[0]), + 50740 == d && (u.dngPrvt = _[0]), + 61440 == d && (u.fujiIFD = _[0]) + } + if (37500 == d && s.parseMN) { + var A = m; + if ("Nikon" == e.readASCII(A, 0, 5)) + u.makerNote = t["decode"](A.slice(10).buffer)[0]; + else if ("OLYMP" == e.readASCII(A, 0, 5) || "OM SYSTEM" == e.readASCII(A, 0, 9)) { + var I = [8208, 8224, 8240, 8256, 8272] + , E = []; + t._readIFD(e, A, 77 == A[1] ? 16 : 85 == A[5] ? 12 : 8, E, a + 1, s); + var T = u.makerNote = E.pop(); + for (S = 0; S < I.length; S++) { + var x = "t" + I[S]; + null != T[x] && (t._readIFD(e, A, T[x][0], E, a + 1, s), + T[x] = E.pop()) + } + T["t12288"] && (t._readIFD(e, T["t12288"], 0, E, a + 1, s), + T["t12288"] = E.pop()) + } else if (e.readUshort(r, p) < 300 && e.readUshort(r, p + 4) <= 12) { + E = []; + t._readIFD(e, r, p, E, a + 1, s), + u.makerNote = E[0] + } + } + } else if (i(d, "unknown TIFF tag type: ", f, "num:", h), + 0 == l) + return + } + return o.push(u), + s.debug && i(" ".repeat(a), "<<<---------------"), + n + } + , + t._writeIFD = function(e, r, n, i, o) { + var a = Object.keys(o) + , s = a.length; + o["exifIFD"] && s--, + o["gpsiIFD"] && s--, + e.writeUshort(n, i, s), + i += 2; + for (var c = i + 12 * s + 4, u = 0; u < a.length; u++) { + var l = a[u]; + if ("t34665" != l && "t34853" != l) { + "exifIFD" == l && (l = "t34665"), + "gpsiIFD" == l && (l = "t34853"); + var d = parseInt(l.slice(1)) + , f = r.main[d]; + if (null == f && (f = r.rest[d]), + null == f || 0 == f) + throw new Error("unknown type of tag: " + d); + var h = o[l]; + if (34665 == d) { + var p = t._writeIFD(e, r, n, c, o["exifIFD"]); + h = [c], + c = p[1] + } + if (34853 == d) { + p = t._writeIFD(e, t._types.gps, n, c, o["gpsiIFD"]); + h = [c], + c = p[1] + } + 2 == f && (h = h[0] + "\0"); + var m = h.length; + e.writeUshort(n, i, d), + i += 2, + e.writeUshort(n, i, f), + i += 2, + e.writeUint(n, i, m), + i += 4; + var b = [-1, 1, 1, 2, 4, 8, 0, 1, 0, 4, 8, 0, 8][f] * m + , g = i; + if (b > 4 && (e.writeUint(n, i, c), + g = c), + 1 == f || 7 == f) + for (var v = 0; v < m; v++) + n[g + v] = h[v]; + else if (2 == f) + e.writeASCII(n, g, h); + else if (3 == f) + for (v = 0; v < m; v++) + e.writeUshort(n, g + 2 * v, h[v]); + else if (4 == f) + for (v = 0; v < m; v++) + e.writeUint(n, g + 4 * v, h[v]); + else if (5 == f || 10 == f) { + var y = 5 == f ? e.writeUint : e.writeInt; + for (v = 0; v < m; v++) { + var S = h[v] + , w = S[0] + , C = S[1]; + if (null == w) + throw "e"; + y(n, g + 8 * v, w), + y(n, g + 8 * v + 4, C) + } + } else if (9 == f) + for (v = 0; v < m; v++) + e.writeInt(n, g + 4 * v, h[v]); + else { + if (12 != f) + throw f; + for (v = 0; v < m; v++) + e.writeDouble(n, g + 8 * v, h[v]) + } + b > 4 && (b += 1 & b, + c += b), + i += 4 + } + } + return [i, c] + } + , + t.toRGBA8 = function(t, e) { + function r(t) { + return t < .0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - .055 + } + var n = t.width + , o = t.height + , a = n * o + , s = t.data + , c = new Uint8Array(4 * a) + , u = t["t262"] ? t["t262"][0] : 2 + , l = t["t258"] ? Math.min(32, t["t258"][0]) : 1; + null == t["t262"] && 1 == l && (u = 0); + var d = t["t277"] ? t["t277"][0] : t["t258"] ? t["t258"].length : [1, 1, 3, 1, 1, 4, 3][u] + , f = t["t339"] ? t["t339"][0] : null; + if (1 == u && 32 == l && 3 != f) + throw "e"; + var h = Math.ceil(d * l * n / 8); + if (0 == u) { + e = 1 / 256; + for (var p = 0; p < o; p++) { + var m = p * h + , b = p * n; + if (1 == l) + for (var g = 0; g < n; g++) { + var v = b + g << 2 + , y = s[m + (g >> 3)] >> 7 - (7 & g) & 1; + c[v] = c[v + 1] = c[v + 2] = 255 * (1 - y), + c[v + 3] = 255 + } + if (4 == l) + for (g = 0; g < n; g++) { + v = b + g << 2, + y = s[m + (g >> 1)] >> 4 - 4 * (1 & g) & 15; + c[v] = c[v + 1] = c[v + 2] = 17 * (15 - y), + c[v + 3] = 255 + } + if (8 == l) + for (g = 0; g < n; g++) { + v = b + g << 2, + y = s[m + g]; + c[v] = c[v + 1] = c[v + 2] = 255 - y, + c[v + 3] = 255 + } + if (16 == l) + for (g = 0; g < n; g++) { + v = b + g << 2; + var S = m + 2 * g; + y = s[S + 1] << 8 | s[S]; + c[v] = c[v + 1] = c[v + 2] = Math.min(255, 255 - ~~(y * e)), + c[v + 3] = 255 + } + } + } else if (1 == u) { + null == e && (e = 1 / 256); + var w = 0 == (3 & s.length) ? new Float32Array(s.buffer) : null; + for (p = 0; p < o; p++) { + m = p * h, + b = p * n; + if (1 == l) + for (g = 0; g < n; g++) { + v = b + g << 2, + y = s[m + (g >> 3)] >> 7 - (7 & g) & 1; + c[v] = c[v + 1] = c[v + 2] = 255 * y, + c[v + 3] = 255 + } + if (2 == l) + for (g = 0; g < n; g++) { + v = b + g << 2, + y = s[m + (g >> 2)] >> 6 - 2 * (3 & g) & 3; + c[v] = c[v + 1] = c[v + 2] = 85 * y, + c[v + 3] = 255 + } + if (8 == l) + for (g = 0; g < n; g++) { + v = b + g << 2, + y = s[m + g * d]; + c[v] = c[v + 1] = c[v + 2] = y, + c[v + 3] = 255 + } + if (16 == l) + for (g = 0; g < n; g++) { + v = b + g << 2, + S = m + 2 * g, + y = s[S + 1] << 8 | s[S]; + c[v] = c[v + 1] = c[v + 2] = Math.min(255, ~~(y * e)), + c[v + 3] = 255 + } + if (32 == l) + for (g = 0; g < n; g++) { + v = b + g << 2, + S = (m >>> 2) + g, + y = w[S]; + c[v] = c[v + 1] = c[v + 2] = ~~(.5 + 255 * y), + c[v + 3] = 255 + } + } + } else if (2 == u) + if (8 == l) { + if (1 == d) + for (g = 0; g < a; g++) + c[4 * g] = c[4 * g + 1] = c[4 * g + 2] = s[g], + c[4 * g + 3] = 255; + if (3 == d) + for (g = 0; g < a; g++) { + v = g << 2; + var C = 3 * g; + c[v] = s[C], + c[v + 1] = s[C + 1], + c[v + 2] = s[C + 2], + c[v + 3] = 255 + } + if (d >= 4) + for (g = 0; g < a; g++) { + v = g << 2, + C = g * d; + c[v] = s[C], + c[v + 1] = s[C + 1], + c[v + 2] = s[C + 2], + c[v + 3] = s[C + 3] + } + } else if (16 == l) { + if (4 == d) + for (g = 0; g < a; g++) { + v = g << 2, + C = 8 * g + 1; + c[v] = s[C], + c[v + 1] = s[C + 2], + c[v + 2] = s[C + 4], + c[v + 3] = s[C + 6] + } + if (3 == d) + for (g = 0; g < a; g++) { + v = g << 2, + C = 6 * g + 1; + c[v] = s[C], + c[v + 1] = s[C + 2], + c[v + 2] = s[C + 4], + c[v + 3] = 255 + } + } else { + if (32 != l) + throw l; + var _ = new Float32Array(s.buffer) + , A = 0; + for (g = 0; g < _.length; g++) + A = Math.min(A, _[g]); + if (A < 0) + for (g = 0; g < s.length; g += 4) { + var I = s[g]; + s[g] = s[g + 3], + s[g + 3] = I, + I = s[g + 1], + s[g + 1] = s[g + 2], + s[g + 2] = I + } + var E = []; + for (g = 0; g < 65536; g++) + E.push(r(g / 65535)); + for (g = 0; g < _.length; g++) { + var T = Math.max(0, Math.min(1, _[g])); + _[g] = E[~~(.5 + 65535 * T)] + } + if (3 == d) + for (g = 0; g < a; g++) { + v = g << 2, + C = 3 * g; + c[v] = ~~(.5 + 255 * _[C]), + c[v + 1] = ~~(.5 + 255 * _[C + 1]), + c[v + 2] = ~~(.5 + 255 * _[C + 2]), + c[v + 3] = 255 + } + else { + if (4 != d) + throw d; + for (g = 0; g < a; g++) { + v = g << 2, + C = 4 * g; + c[v] = ~~(.5 + 255 * _[C]), + c[v + 1] = ~~(.5 + 255 * _[C + 1]), + c[v + 2] = ~~(.5 + 255 * _[C + 2]), + c[v + 3] = ~~(.5 + 255 * _[C + 3]) + } + } + } + else if (3 == u) { + var x = t["t320"] + , P = 1 << l + , k = 8 == l && d > 1 && t["t338"] && 0 != t["t338"][0]; + for (p = 0; p < o; p++) + for (var D = 0; D < n; D++) { + g = p * n + D, + v = g << 2; + var O = 0 + , R = p * h; + if (1 == l) + O = s[R + (D >>> 3)] >>> 7 - (7 & D) & 1; + else if (2 == l) + O = s[R + (D >>> 2)] >>> 6 - 2 * (3 & D) & 3; + else if (4 == l) + O = s[R + (D >>> 1)] >>> 4 - 4 * (1 & D) & 15; + else { + if (8 != l) + throw l; + O = s[R + D * d] + } + c[v] = x[O] >> 8, + c[v + 1] = x[P + O] >> 8, + c[v + 2] = x[P + P + O] >> 8, + c[v + 3] = k ? s[R + D * d + 1] : 255 + } + } else if (5 == u) { + var M = d > 4 ? 1 : 0; + for (g = 0; g < a; g++) { + v = g << 2; + var N = g * d; + if (window.UDOC) { + var B = s[N] + , F = s[N + 1] + , j = s[N + 2] + , U = s[N + 3] + , L = UDOC.C.cmykToRgb([B * (1 / 255), F * (1 / 255), j * (1 / 255), U * (1 / 255)]); + c[v] = ~~(.5 + 255 * L[0]), + c[v + 1] = ~~(.5 + 255 * L[1]), + c[v + 2] = ~~(.5 + 255 * L[2]) + } else { + B = 255 - s[N], + F = 255 - s[N + 1], + j = 255 - s[N + 2], + U = (255 - s[N + 3]) * (1 / 255); + c[v] = ~~(B * U + .5), + c[v + 1] = ~~(F * U + .5), + c[v + 2] = ~~(j * U + .5) + } + c[v + 3] = 255 * (1 - M) + s[N + 4] * M + } + } else if (6 == u && t["t278"]) { + var K = t["t278"][0]; + for (p = 0; p < o; p += K) { + g = p * n; + for (var X = K * n, z = 0; z < X; z++) { + v = 4 * (g + z), + N = 3 * g + 4 * (z >>> 1), + j = s[N + (1 & z)]; + var G = s[N + 2] - 128 + , W = s[N + 3] - 128 + , q = j + ((W >> 2) + (W >> 3) + (W >> 5)) + , H = j - ((G >> 2) + (G >> 4) + (G >> 5)) - ((W >> 1) + (W >> 3) + (W >> 4) + (W >> 5)) + , V = j + (G + (G >> 1) + (G >> 2) + (G >> 6)); + c[v] = Math.max(0, Math.min(255, q)), + c[v + 1] = Math.max(0, Math.min(255, H)), + c[v + 2] = Math.max(0, Math.min(255, V)), + c[v + 3] = 255 + } + } + } else if (32845 == u) + for (p = 0; p < o; p++) + for (D = 0; D < n; D++) { + N = 6 * (p * n + D), + v = 4 * (p * n + D); + var Z = s[N + 1] << 8 | s[N] + , Q = (Z = Math.pow(2, (Z + .5) / 256 - 64), + (s[N + 3] + .5) / 410) + , Y = (s[N + 5] + .5) / 410 + , J = 9 * Q / (6 * Q - 16 * Y + 12) + , $ = 4 * Y / (6 * Q - 16 * Y + 12) + , tt = Z + , et = J * tt / $ + , rt = (j = tt, + (1 - J - $) * tt / $); + q = 2.69 * et - 1.276 * j - .414 * rt, + H = -1.022 * et + 1.978 * j + .044 * rt, + V = .061 * et - .224 * j + 1.163 * rt; + c[v] = 255 * r(Math.min(q, 1)), + c[v + 1] = 255 * r(Math.min(H, 1)), + c[v + 2] = 255 * r(Math.min(V, 1)), + c[v + 3] = 255 + } + else + i("Unknown Photometric interpretation: " + u); + return c + } + , + t.replaceIMG = function(e) { + null == e && (e = document.getElementsByTagName("img")); + for (var r = ["tif", "tiff", "dng", "cr2", "nef"], n = 0; n < e.length; n++) { + var i = e[n] + , o = i.getAttribute("src"); + if (null != o) { + var a = o.split(".").pop().toLowerCase(); + if (-1 != r.indexOf(a)) { + var s = new XMLHttpRequest; + t._xhrs.push(s), + t._imgs.push(i), + s.open("GET", o), + s.responseType = "arraybuffer", + s.onload = t._imgLoaded, + s.send() + } + } + } + } + , + t._xhrs = [], + t._imgs = [], + t._imgLoaded = function(e) { + var r = t._xhrs.indexOf(e.target) + , n = t._imgs[r]; + t._xhrs.splice(r, 1), + t._imgs.splice(r, 1), + n.setAttribute("src", t.bufferToURI(e.target.response)) + } + , + t.bufferToURI = function(e) { + var r = t.decode(e) + , n = r + , i = 0 + , o = n[0]; + r[0].subIFD && (n = n.concat(r[0].subIFD)); + for (var a = 0; a < n.length; a++) { + var s = n[a]; + if (!(null == s["t258"] || s["t258"].length < 3)) { + var c = s["t256"] * s["t257"]; + c > i && (i = c, + o = s) + } + } + t.decodeImage(e, o, r); + var u = t.toRGBA8(o) + , l = o.width + , d = o.height + , f = document.createElement("canvas"); + f.width = l, + f.height = d; + var h = f.getContext("2d") + , p = new ImageData(new Uint8ClampedArray(u.buffer),l,d); + return h.putImageData(p, 0, 0), + f.toDataURL() + } + , + t._binBE = { + nextZero: function(t, e) { + while (0 != t[e]) + e++; + return e + }, + readUshort: function(t, e) { + return t[e] << 8 | t[e + 1] + }, + readShort: function(e, r) { + var n = t._binBE.ui8; + return n[0] = e[r + 1], + n[1] = e[r + 0], + t._binBE.i16[0] + }, + readInt: function(e, r) { + var n = t._binBE.ui8; + return n[0] = e[r + 3], + n[1] = e[r + 2], + n[2] = e[r + 1], + n[3] = e[r + 0], + t._binBE.i32[0] + }, + readUint: function(e, r) { + var n = t._binBE.ui8; + return n[0] = e[r + 3], + n[1] = e[r + 2], + n[2] = e[r + 1], + n[3] = e[r + 0], + t._binBE.ui32[0] + }, + readASCII: function(t, e, r) { + for (var n = "", i = 0; i < r; i++) + n += String.fromCharCode(t[e + i]); + return n + }, + readFloat: function(e, r) { + for (var n = t._binBE.ui8, i = 0; i < 4; i++) + n[i] = e[r + 3 - i]; + return t._binBE.fl32[0] + }, + readDouble: function(e, r) { + for (var n = t._binBE.ui8, i = 0; i < 8; i++) + n[i] = e[r + 7 - i]; + return t._binBE.fl64[0] + }, + writeUshort: function(t, e, r) { + t[e] = r >> 8 & 255, + t[e + 1] = 255 & r + }, + writeInt: function(e, r, n) { + var i = t._binBE.ui8; + t._binBE.i32[0] = n, + e[r + 3] = i[0], + e[r + 2] = i[1], + e[r + 1] = i[2], + e[r + 0] = i[3] + }, + writeUint: function(t, e, r) { + t[e] = r >> 24 & 255, + t[e + 1] = r >> 16 & 255, + t[e + 2] = r >> 8 & 255, + t[e + 3] = r >> 0 & 255 + }, + writeASCII: function(t, e, r) { + for (var n = 0; n < r.length; n++) + t[e + n] = r.charCodeAt(n) + }, + writeDouble: function(e, r, n) { + t._binBE.fl64[0] = n; + for (var i = 0; i < 8; i++) + e[r + i] = t._binBE.ui8[7 - i] + } + }, + t._binBE.ui8 = new Uint8Array(8), + t._binBE.i16 = new Int16Array(t._binBE.ui8.buffer), + t._binBE.i32 = new Int32Array(t._binBE.ui8.buffer), + t._binBE.ui32 = new Uint32Array(t._binBE.ui8.buffer), + t._binBE.fl32 = new Float32Array(t._binBE.ui8.buffer), + t._binBE.fl64 = new Float64Array(t._binBE.ui8.buffer), + t._binLE = { + nextZero: t._binBE.nextZero, + readUshort: function(t, e) { + return t[e + 1] << 8 | t[e] + }, + readShort: function(e, r) { + var n = t._binBE.ui8; + return n[0] = e[r + 0], + n[1] = e[r + 1], + t._binBE.i16[0] + }, + readInt: function(e, r) { + var n = t._binBE.ui8; + return n[0] = e[r + 0], + n[1] = e[r + 1], + n[2] = e[r + 2], + n[3] = e[r + 3], + t._binBE.i32[0] + }, + readUint: function(e, r) { + var n = t._binBE.ui8; + return n[0] = e[r + 0], + n[1] = e[r + 1], + n[2] = e[r + 2], + n[3] = e[r + 3], + t._binBE.ui32[0] + }, + readASCII: t._binBE.readASCII, + readFloat: function(e, r) { + for (var n = t._binBE.ui8, i = 0; i < 4; i++) + n[i] = e[r + i]; + return t._binBE.fl32[0] + }, + readDouble: function(e, r) { + for (var n = t._binBE.ui8, i = 0; i < 8; i++) + n[i] = e[r + i]; + return t._binBE.fl64[0] + }, + writeUshort: function(t, e, r) { + t[e] = 255 & r, + t[e + 1] = r >> 8 & 255 + }, + writeInt: function(e, r, n) { + var i = t._binBE.ui8; + t._binBE.i32[0] = n, + e[r + 0] = i[0], + e[r + 1] = i[1], + e[r + 2] = i[2], + e[r + 3] = i[3] + }, + writeUint: function(t, e, r) { + t[e] = r >>> 0 & 255, + t[e + 1] = r >>> 8 & 255, + t[e + 2] = r >>> 16 & 255, + t[e + 3] = r >>> 24 & 255 + }, + writeASCII: t._binBE.writeASCII + }, + t._copyTile = function(t, e, r, n, i, o, a, s) { + for (var c = Math.min(e, i - a), u = Math.min(r, o - s), l = 0; l < u; l++) + for (var d = (s + l) * i + a, f = l * e, h = 0; h < c; h++) + n[d + h] = t[f + h] + } + , + t._inflateRaw = function() { + var t = { + H: {} + }; + return t.H.N = function(e, r) { + var n, i, o = Uint8Array, a = 0, s = 0, c = 0, u = 0, l = 0, d = 0, f = 0, h = 0, p = 0; + if (3 == e[0] && 0 == e[1]) + return r || new o(0); + var m = t.H + , b = m.b + , g = m.e + , v = m.R + , y = m.n + , S = m.A + , w = m.Z + , C = m.m + , _ = null == r; + _ && (r = new o(e.length >>> 2 << 5)); + while (0 == a) + if (a = b(e, p, 1), + s = b(e, p + 1, 2), + p += 3, + 0 != s) { + if (_ && (r = t.H.W(r, h + (1 << 17))), + 1 == s && (n = C.J, + i = C.h, + d = 511, + f = 31), + 2 == s) { + c = g(e, p, 5) + 257, + u = g(e, p + 5, 5) + 1, + l = g(e, p + 10, 4) + 4, + p += 14; + for (var A = 1, I = 0; I < 38; I += 2) + C.Q[I] = 0, + C.Q[I + 1] = 0; + for (I = 0; I < l; I++) { + var E = g(e, p + 3 * I, 3); + C.Q[1 + (C.X[I] << 1)] = E, + E > A && (A = E) + } + p += 3 * l, + y(C.Q, A), + S(C.Q, A, C.u), + n = C.w, + i = C.d, + p = v(C.u, (1 << A) - 1, c + u, e, p, C.v); + var T = m.V(C.v, 0, c, C.C); + d = (1 << T) - 1; + var x = m.V(C.v, c, u, C.D); + f = (1 << x) - 1, + y(C.C, T), + S(C.C, T, n), + y(C.D, x), + S(C.D, x, i) + } + while (1) { + var P = n[w(e, p) & d]; + p += 15 & P; + var k = P >>> 4; + if (k >>> 8 == 0) + r[h++] = k; + else { + if (256 == k) + break; + var D = h + k - 254; + if (k > 264) { + var O = C.q[k - 257]; + D = h + (O >>> 3) + g(e, p, 7 & O), + p += 7 & O + } + var R = i[w(e, p) & f]; + p += 15 & R; + var M = R >>> 4 + , N = C.c[M] + , B = (N >>> 4) + b(e, p, 15 & N); + p += 15 & N; + while (h < D) + r[h] = r[h++ - B], + r[h] = r[h++ - B], + r[h] = r[h++ - B], + r[h] = r[h++ - B]; + h = D + } + } + } else { + 0 != (7 & p) && (p += 8 - (7 & p)); + var F = 4 + (p >>> 3) + , j = e[F - 4] | e[F - 3] << 8; + _ && (r = t.H.W(r, h + j)), + r.set(new o(e.buffer,e.byteOffset + F,j), h), + p = F + j << 3, + h += j + } + return r.length == h ? r : r.slice(0, h) + } + , + t.H.W = function(t, e) { + var r = t.length; + if (e <= r) + return t; + var n = new Uint8Array(r << 1); + return n.set(t, 0), + n + } + , + t.H.R = function(e, r, n, i, o, a) { + var s = t.H.e + , c = t.H.Z + , u = 0; + while (u < n) { + var l = e[c(i, o) & r]; + o += 15 & l; + var d = l >>> 4; + if (d <= 15) + a[u] = d, + u++; + else { + var f = 0 + , h = 0; + 16 == d ? (h = 3 + s(i, o, 2), + o += 2, + f = a[u - 1]) : 17 == d ? (h = 3 + s(i, o, 3), + o += 3) : 18 == d && (h = 11 + s(i, o, 7), + o += 7); + var p = u + h; + while (u < p) + a[u] = f, + u++ + } + } + return o + } + , + t.H.V = function(t, e, r, n) { + var i = 0 + , o = 0 + , a = n.length >>> 1; + while (o < r) { + var s = t[o + e]; + n[o << 1] = 0, + n[1 + (o << 1)] = s, + s > i && (i = s), + o++ + } + while (o < a) + n[o << 1] = 0, + n[1 + (o << 1)] = 0, + o++; + return i + } + , + t.H.n = function(e, r) { + for (var n, i, o, a, s = t.H.m, c = e.length, u = s.j, l = 0; l <= r; l++) + u[l] = 0; + for (l = 1; l < c; l += 2) + u[e[l]]++; + var d = s.K; + for (n = 0, + u[0] = 0, + i = 1; i <= r; i++) + n = n + u[i - 1] << 1, + d[i] = n; + for (o = 0; o < c; o += 2) + a = e[o + 1], + 0 != a && (e[o] = d[a], + d[a]++) + } + , + t.H.A = function(e, r, n) { + for (var i = e.length, o = t.H.m, a = o.r, s = 0; s < i; s += 2) + if (0 != e[s + 1]) { + var c = s >> 1 + , u = e[s + 1] + , l = c << 4 | u + , d = r - u + , f = e[s] << d + , h = f + (1 << d); + while (f != h) { + var p = a[f] >>> 15 - r; + n[p] = l, + f++ + } + } + } + , + t.H.l = function(e, r) { + for (var n = t.H.m.r, i = 15 - r, o = 0; o < e.length; o += 2) { + var a = e[o] << r - e[o + 1]; + e[o] = n[a] >>> i + } + } + , + t.H.M = function(t, e, r) { + r <<= 7 & e; + var n = e >>> 3; + t[n] |= r, + t[n + 1] |= r >>> 8 + } + , + t.H.I = function(t, e, r) { + r <<= 7 & e; + var n = e >>> 3; + t[n] |= r, + t[n + 1] |= r >>> 8, + t[n + 2] |= r >>> 16 + } + , + t.H.e = function(t, e, r) { + return (t[e >>> 3] | t[1 + (e >>> 3)] << 8) >>> (7 & e) & (1 << r) - 1 + } + , + t.H.b = function(t, e, r) { + return (t[e >>> 3] | t[1 + (e >>> 3)] << 8 | t[2 + (e >>> 3)] << 16) >>> (7 & e) & (1 << r) - 1 + } + , + t.H.Z = function(t, e) { + return (t[e >>> 3] | t[1 + (e >>> 3)] << 8 | t[2 + (e >>> 3)] << 16) >>> (7 & e) + } + , + t.H.i = function(t, e) { + return (t[e >>> 3] | t[1 + (e >>> 3)] << 8 | t[2 + (e >>> 3)] << 16 | t[3 + (e >>> 3)] << 24) >>> (7 & e) + } + , + t.H.m = function() { + var t = Uint16Array + , e = Uint32Array; + return { + K: new t(16), + j: new t(16), + X: [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], + S: [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 999, 999, 999], + T: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0], + q: new t(32), + p: [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 65535, 65535], + z: [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0], + c: new e(32), + J: new t(512), + _: [], + h: new t(32), + $: [], + w: new t(32768), + C: [], + v: [], + d: new t(32768), + D: [], + u: new t(512), + Q: [], + r: new t(32768), + s: new e(286), + Y: new e(30), + a: new e(19), + t: new e(15e3), + k: new t(65536), + g: new t(32768) + } + }(), + function() { + for (var e = t.H.m, r = 32768, n = 0; n < r; n++) { + var i = n; + i = (2863311530 & i) >>> 1 | (1431655765 & i) << 1, + i = (3435973836 & i) >>> 2 | (858993459 & i) << 2, + i = (4042322160 & i) >>> 4 | (252645135 & i) << 4, + i = (4278255360 & i) >>> 8 | (16711935 & i) << 8, + e.r[n] = (i >>> 16 | i << 16) >>> 17 + } + function o(t, e, r) { + while (0 != e--) + t.push(0, r) + } + for (n = 0; n < 32; n++) + e.q[n] = e.S[n] << 3 | e.T[n], + e.c[n] = e.p[n] << 4 | e.z[n]; + o(e._, 144, 8), + o(e._, 112, 9), + o(e._, 24, 7), + o(e._, 8, 8), + t.H.n(e._, 9), + t.H.A(e._, 9, e.J), + t.H.l(e._, 9), + o(e.$, 32, 5), + t.H.n(e.$, 5), + t.H.A(e.$, 5, e.h), + t.H.l(e.$, 5), + o(e.Q, 19, 0), + o(e.C, 286, 0), + o(e.D, 30, 0), + o(e.v, 320, 0) + }(), + t.H.N + }(), + t.LosslessJpegDecode = function() { + var t, e; + function r() { + return t[e++] + } + function n() { + return t[e++] << 8 | t[e++] + } + function i(t) { + for (var e = r(), n = [0, 0, 0, 255], i = [], a = 8, s = 0; s < 16; s++) + i[s] = r(); + for (s = 0; s < 16; s++) + for (var c = 0; c < i[s]; c++) { + var u = o(n, 0, s + 1, 1); + n[u + 3] = r() + } + var l = new Uint8Array(1 << a); + t[e] = [new Uint8Array(n), l]; + for (s = 0; s < 1 << a; s++) { + var d = a + , f = s + , h = 0 + , p = 0; + while (255 == n[h + 3] && 0 != d) + p = f >> --d & 1, + h = n[h + p]; + l[s] = h + } + } + function o(t, e, r, n) { + if (255 != t[e + 3]) + return 0; + if (0 == r) + return e; + for (var i = 0; i < 2; i++) { + 0 == t[e + i] && (t[e + i] = t.length, + t.push(0, 0, n, 255)); + var a = o(t, t[e + i], r - 1, n + 1); + if (0 != a) + return a + } + return 0 + } + function a(t) { + var e = t.b + , r = t.f; + while (e < 25 && t.a < t.d) { + var n = t.data[t.a++]; + 255 != n || t.c || t.a++, + r = r << 8 | n, + e += 8 + } + if (e < 0) + throw "e"; + t.b = e, + t.f = r + } + function s(t, e) { + return e.b < t && a(e), + e.f >> (e.b -= t) & 65535 >> 16 - t + } + function c(t, e) { + var r = t[0] + , n = 0 + , i = 255 + , o = 0; + e.b < 16 && a(e); + var s = e.f >> e.b - 8 & 255; + n = t[1][s], + i = r[n + 3], + e.b -= r[n + 2]; + while (255 == i) + o = e.f >> --e.b & 1, + n = r[n + o], + i = r[n + 3]; + return i + } + function u(t, e) { + return t < 32768 >> 16 - e && (t += 1 - (1 << e)), + t + } + function l(t, e) { + var r = c(t, e); + if (0 == r) + return 0; + if (16 == r) + return -32768; + var n = s(r, e); + return u(n, r) + } + function d(t, e, r, n, i, o) { + for (var a = 0, s = 0; s < o; s++) { + for (var c = s * e, u = 0; u < e; u += i) { + a++; + for (var d = 0; d < i; d++) + t[c + u + d] = l(n[d], r) + } + if (0 != r.e && a % r.e == 0 && 0 != s) { + var f = r.a + , h = r.data; + while (255 != h[f] || !(208 <= h[f + 1] && h[f + 1] <= 215)) + f--; + r.a = f + 2, + r.f = 0, + r.b = 0 + } + } + } + function f(t, e) { + return u(s(t, e), t) + } + function h(r, n, i, o, a) { + for (var s = t.length - e, u = 0; u < s; u += 4) { + var l = t[e + u]; + t[e + u] = t[e + u + 3], + t[e + u + 3] = l; + l = t[e + u + 1]; + t[e + u + 1] = t[e + u + 2], + t[e + u + 2] = l + } + for (var d = 0; d < a; d++) + for (var h = 32768, p = 32768, m = 0; m < n; m += 2) { + var b = c(o, i) + , g = c(o, i); + 0 != b && (h += f(b, i)), + 0 != g && (p += f(g, i)), + r[d * n + m] = 65535 & h, + r[d * n + m + 1] = 65535 & p + } + } + function p(o) { + if (t = o, + e = 0, + 65496 != n()) + throw "e"; + var a = [] + , s = 0 + , c = 0 + , u = 0 + , l = [] + , f = [] + , p = [] + , b = 0 + , g = 0 + , v = 0; + while (1) { + var y = n(); + if (65535 != y) { + var S = n(); + if (65475 == y) { + c = r(), + g = n(), + v = n(), + b = r(); + for (var w = 0; w < b; w++) { + var C = r() + , _ = r() + , A = r(); + if (0 != A) + throw "e"; + a[C] = [w, _ >> 4, 15 & _] + } + } else if (65476 == y) { + var I = e + S - 2; + while (e < I) + i(f) + } else { + if (65498 == y) { + e++; + for (w = 0; w < b; w++) { + var E = r() + , T = a[E]; + p[T[0]] = f[r() >>> 4], + l[T[0]] = T.slice(1) + } + s = r(), + e += 2; + break + } + 65501 == y ? u = n() : e += S - 2 + } + } else + e-- + } + var x = c > 8 ? Uint16Array : Uint8Array + , P = new x(g * v * b) + , k = { + b: 0, + f: 0, + c: 8 == s, + a: e, + data: t, + d: t.length, + e: u + }; + if (k.c) + h(P, v * b, k, p[0], g); + else { + var D = [] + , O = 0 + , R = 0; + for (w = 0; w < b; w++) { + var M = l[w] + , N = M[0] + , B = M[1]; + N > O && (O = N), + B > R && (R = B), + D.push(N * B) + } + if (1 != O || 1 != R) { + if (3 != b || 1 != D[1] || 1 != D[2]) + throw "e"; + if (2 != O || 1 != R && 2 != R) + throw "e"; + var F = [] + , j = 0; + for (w = 0; w < b; w++) { + for (var U = 0; U < D[w]; U++) + F.push(p[w]); + j += D[w] + } + var L = v / O + , K = g / R + , X = L * K; + d(P, L * j, k, F, j, K), + m(P, s, L, K, j - 2, j, j, c); + var z = new Uint16Array(X * D[0]); + if (2 == O && 2 == R) { + for (w = 0; w < X; w++) + z[4 * w] = P[6 * w], + z[4 * w + 1] = P[6 * w + 1], + z[4 * w + 2] = P[6 * w + 2], + z[4 * w + 3] = P[6 * w + 3]; + m(z, s, 4 * L, K, 0, 1, 1, c); + for (w = 0; w < X; w++) + P[6 * w] = z[4 * w], + P[6 * w + 1] = z[4 * w + 1], + P[6 * w + 2] = z[4 * w + 2], + P[6 * w + 3] = z[4 * w + 3] + } + if (2 == O && 1 == R) { + for (w = 0; w < X; w++) + z[2 * w] = P[4 * w], + z[2 * w + 1] = P[4 * w + 1]; + m(z, s, 2 * L, K, 0, 1, 1, c); + for (w = 0; w < X; w++) + P[4 * w] = z[2 * w], + P[4 * w + 1] = z[2 * w + 1] + } + var G = P.slice(0); + for (B = 0; B < g; B++) + if (2 == R) + for (N = 0; N < v; N++) { + var W = (B * v + N) * b + , q = ((B >>> 1) * L + (N >>> 1)) * j + , H = 2 * (1 & B) + (1 & N); + P[W] = G[q + H], + P[W + 1] = G[q + 4], + P[W + 2] = G[q + 5] + } + else + for (N = 0; N < v; N++) { + W = (B * v + N) * b, + q = (B * L + (N >>> 1)) * j, + H = 1 & N; + P[W] = G[q + H], + P[W + 1] = G[q + 2], + P[W + 2] = G[q + 3] + } + } else if (d(P, v * b, k, p, b, g), + 0 == u) + m(P, s, v, g, 0, b, b, c); + else { + var V = Math.floor(u / v); + for (B = 0; B < g; B += V) { + var Z = P.slice(B * v * b, (B + V) * v * b); + m(Z, s, v, V, 0, b, b, c), + P.set(Z, B * v * b) + } + } + } + return P + } + function m(t, e, r, n, i, o, a, s) { + for (var c = r * a, u = i; u < o; u++) + t[u] += 1 << s - 1; + for (var l = a; l < c; l += a) + for (u = i; u < o; u++) + t[l + u] += t[l + u - a]; + for (var d = 1; d < n; d++) { + var f = d * c; + for (u = i; u < o; u++) + t[f + u] += t[f + u - c]; + for (l = a; l < c; l += a) + for (u = i; u < o; u++) { + var h = f + l + u + , p = h - c + , m = t[h - a] + , b = 0; + if (0 == e) + b = 0; + else if (1 == e) + b = m; + else if (2 == e) + b = t[p]; + else if (3 == e) + b = t[p - a]; + else if (4 == e) + b = m + (t[p] - t[p - a]); + else if (5 == e) + b = m + (t[p] - t[p - a] >>> 1); + else if (6 == e) + b = t[p] + (m - t[p - a] >>> 1); + else { + if (7 != e) + throw e; + b = m + t[p] >>> 1 + } + t[h] += b + } + } + } + return p + }(), + function() { + var e = 0 + , r = 1 + , n = 2 + , i = 3 + , o = 4 + , a = 5 + , s = 6 + , c = 7 + , u = 8 + , l = 9 + , d = 10 + , f = 11 + , h = 12 + , p = 13 + , m = 14 + , b = 15 + , g = 16 + , v = 17 + , y = 18; + function S(e) { + var r = t._binBE.readUshort + , n = { + b: r(e, 0), + i: e[2], + C: e[3], + u: e[4], + q: r(e, 5), + k: r(e, 7), + e: r(e, 9), + l: r(e, 11), + s: e[13], + d: r(e, 14) + }; + if (18771 != n.b || n.i > 1 || n.q < 6 || n.q % 6 || n.e < 768 || n.e % 24 || 768 != n.l || n.k < n.l || n.k % n.l || n.k - n.e >= n.l || n.s > 16 || n.s != n.k / n.l || n.s != Math.ceil(n.e / n.l) || n.d != n.q / 6 || 12 != n.u && 14 != n.u && 16 != n.u || 16 != n.C && 0 != n.C) + throw "Invalid data"; + if (0 == n.i) + throw "Not implemented. We need this file!"; + return n.h = 16 == n.C, + n.m = 0 | (n.h ? 2 * n.l / 3 : n.l >>> 1), + n.A = n.m + 2, + n.f = 64, + n.g = (1 << n.u) - 1, + n.n = 4 * n.u, + n + } + function w(e, r) { + var n = new Array(r.s) + , i = 4 * r.s + , o = 16 + i; + 12 & i && (o += 16 - (12 & i)); + for (var a = 0, s = 16; a < r.s; s += 4) { + var c = t._binBE.readUint(e, s); + n[a] = e.slice(o, o + c), + n[a].j = 0, + n[a].a = 0, + o += c, + a++ + } + if (o != e.length) + throw "Invalid data"; + return n + } + function C(t, e) { + for (var r = -e[4], n = 0; r <= e[4]; n++, + r++) + t[n] = r <= -e[3] ? -4 : r <= -e[2] ? -3 : r <= -e[1] ? -2 : r < -e[0] ? -1 : r <= e[0] ? 0 : r < e[1] ? 1 : r < e[2] ? 2 : r < e[3] ? 3 : 4 + } + function _(t, e, r) { + var n = [e, 3 * e + 18, 5 * e + 67, 7 * e + 276, r]; + t.o = e, + t.w = (n[4] + 2 * e) / (2 * e + 1) + 1 | 0, + t.v = Math.ceil(Math.log2(t.w)), + t.t = 9, + C(t.c, n) + } + function A(t) { + var e = { + c: new Int8Array(2 << t.u) + }; + return _(e, 0, t.g), + e + } + function I(t) { + for (var e = [[], [], []], r = Math.max(2, t.w + 32 >>> 6), n = 0; n < 3; n++) + for (var i = 0; i < 41; i++) + e[n][i] = [r, 1]; + return e + } + function E(t) { + for (var e = -1, r = 0; !r; e++) + r = t[t.j] >>> 7 - t.a & 1, + t.a++, + t.a &= 7, + t.a || t.j++; + return e + } + function T(t, e) { + var r = 0 + , n = 8 - t.a; + t.j, + t.a; + if (e) { + if (e >= n) + do { + r <<= n, + e -= n, + r |= t[t.j] & (1 << n) - 1, + t.j++, + n = 8 + } while (e >= 8); + e && (r <<= e, + n -= e, + r |= t[t.j] >>> n & (1 << e) - 1), + t.a = 8 - n + } + return r + } + function x(t, e) { + var r = 0; + if (e < t) + while (r <= 14 && e << ++r < t) + ; + return r + } + function P(t, e, r, n, i, o, a, s) { + null == s && (s = 0); + var c, u, l, d, f, h, p = o + 1, m = p % 2, b = 0, g = n[i], v = n[i - 1], y = n[i - 2][p], S = v[p - 1], w = v[p], C = v[p + 1], _ = g[p - 1], A = g[p + 1], I = Math.abs; + if (m && (l = I(C - w), + d = I(y - w), + f = I(S - w)), + m) { + if (h = l > f && d < l ? y + S : l < f && d < f ? y + C : C + S, + h = h + 2 * w >>> 2, + s) + return void (g[p] = h); + c = e.t * e.c[t.g + w - y] + e.c[t.g + S - w] + } else + h = w > S && w > C || w < S && w < C ? A + _ + 2 * w >>> 2 : _ + A >>> 1, + c = e.t * e.c[t.g + w - S] + e.c[t.g + S - _]; + u = I(c); + var P = E(r); + if (P < t.n - e.v - 1) { + var k = x(a[u][0], a[u][1]); + b = T(r, k) + (P << k) + } else + b = T(r, e.v) + 1; + b = 1 & b ? -1 - (b >>> 1) : b >>> 1, + a[u][0] += I(b), + a[u][1] == t.f && (a[u][0] >>>= 1, + a[u][1] >>>= 1), + a[u][1]++, + h = c < 0 ? h - b : h + b, + t.i && (h < 0 ? h += e.w : h > t.g && (h -= e.w)), + g[p] = h >= 0 ? Math.min(h, t.g) : 0 + } + function k(t, e, r) { + for (var n = t[0].length, i = e; i <= r; i++) + t[i][0] = t[i - 1][1], + t[i][n - 1] = t[i - 1][n - 2] + } + function D(t) { + k(t, c, h), + k(t, n, o), + k(t, b, v) + } + function O(t, e, r, n, i, a, s, c, u, l, d, f, h) { + var m = 0 + , b = 1 + , g = i < p && i > o; + while (b < t.m) + m < t.m && (P(t, e, r, n, i, m, s[u], t.h && (g && l || !g && (d || (m & f) == h))), + P(t, e, r, n, a, m, s[u], t.h && (!g && l || g && (d || (m & f) == h))), + m += 2), + m > 8 && (P(t, e, r, n, i, b, c[u]), + P(t, e, r, n, a, b, c[u]), + b += 2); + D(n) + } + function R(t, e, r, a, s, p) { + O(t, e, r, a, n, c, s, p, 0, 0, 1, 0, 8), + O(t, e, r, a, u, b, s, p, 1, 0, 1, 0, 8), + O(t, e, r, a, i, l, s, p, 2, 1, 0, 3, 0), + O(t, e, r, a, d, g, s, p, 0, 0, 0, 3, 2), + O(t, e, r, a, o, f, s, p, 1, 0, 0, 3, 2), + O(t, e, r, a, h, v, s, p, 2, 1, 0, 3, 0) + } + function M(t, e, r, i, o, a) { + var s = a.length + , u = t.l; + o + 1 == t.s && (u = t.e - o * t.l); + for (var l = 6 * t.e * i + o * t.l, d = 0; d < 6; d++) { + for (var f = 0; f < u; f++) { + var h, p = a[d % s][f % s]; + h = 0 == p ? n + (d >>> 1) : 2 == p ? b + (d >>> 1) : c + d; + var m = t.h ? (2 * f / 3 & 2147483646 | f % 3 & 1) + (f % 3 >>> 1) : f >>> 1; + e[l + f] = r[h][m + 1] + } + l += t.e + } + } + t._decompressRAF = function(t, c) { + var u = S(t) + , l = w(t, u) + , d = A(u) + , b = new Int16Array(u.e * u.q); + null == c && (c = u.h ? [[1, 1, 0, 1, 1, 2], [1, 1, 2, 1, 1, 0], [2, 0, 1, 0, 2, 1], [1, 1, 2, 1, 1, 0], [1, 1, 0, 1, 1, 2], [0, 2, 1, 2, 0, 1]] : [[0, 1], [3, 2]]); + for (var C = [[e, i], [r, o], [a, f], [s, h], [p, g], [m, v]], _ = [], E = 0; E < y; E++) + _[E] = new Uint16Array(u.A); + for (var T = 0; T < u.s; T++) { + var x = I(d) + , P = I(d); + for (E = 0; E < y; E++) + for (var k = 0; k < u.A; k++) + _[E][k] = 0; + for (var O = 0; O < u.d; O++) { + R(u, d, l[T], _, x, P); + for (E = 0; E < 6; E++) + for (k = 0; k < u.A; k++) + _[C[E][0]][k] = _[C[E][1]][k]; + M(u, b, _, O, T, c); + for (E = n; E < y; E++) + if (-1 == [a, s, p, m].indexOf(E)) + for (k = 0; k < u.A; k++) + _[E][k] = 0; + D(_) + } + } + return b + } + }() + }(n) + }() + } + ).call(this, r("62e4")(t), r("4362")) + }, "7c73": function(t, e, r) { - var n, i = r("825a"), o = r("37e8"), a = r("7839"), s = r("d012"), c = r("1be4"), u = r("cc12"), d = r("f772"), l = ">", f = "<", h = "prototype", p = "script", m = d("IE_PROTO"), b = function() {}, g = function(t) { - return f + p + l + t + f + "/" + p + l - }, y = function(t) { + var n, i = r("825a"), o = r("37e8"), a = r("7839"), s = r("d012"), c = r("1be4"), u = r("cc12"), l = r("f772"), d = ">", f = "<", h = "prototype", p = "script", m = l("IE_PROTO"), b = function() {}, g = function(t) { + return f + p + d + t + f + "/" + p + d + }, v = function(t) { t.write(g("")), t.close(); var e = t.parentWindow.Object; return t = null, e - }, v = function() { + }, y = function() { var t, e = u("iframe"), r = "java" + p + ":"; return e.style.display = "none", c.appendChild(e), @@ -20240,7 +24130,7 @@ try { n = new ActiveXObject("htmlfile") } catch (e) {} - S = "undefined" != typeof document ? document.domain && n ? y(n) : v() : y(n); + S = "undefined" != typeof document ? document.domain && n ? v(n) : y() : v(n); var t = a.length; while (t--) delete S[h][a[t]]; @@ -20265,16 +24155,16 @@ , s = r("1626") , c = r("9ed3") , u = r("e163") - , d = r("d2bb") - , l = r("d44e") + , l = r("d2bb") + , d = r("d44e") , f = r("9112") , h = r("cb2d") , p = r("b622") , m = r("3f8c") , b = r("ae93") , g = a.PROPER - , y = a.CONFIGURABLE - , v = b.IteratorPrototype + , v = a.CONFIGURABLE + , y = b.IteratorPrototype , S = b.BUGGY_SAFARI_ITERATORS , w = p("iterator") , C = "keys" @@ -20286,8 +24176,8 @@ t.exports = function(t, e, r, a, p, b, E) { c(r, e, a); var T, x, P, k = function(t) { - if (t === p && M) - return M; + if (t === p && N) + return N; if (!S && t in R) return R[t]; switch (t) { @@ -20309,20 +24199,20 @@ return function() { return new r(this) } - }, D = e + " Iterator", O = !1, R = t.prototype, N = R[w] || R["@@iterator"] || p && R[p], M = !S && N || k(p), B = "Array" == e && R.entries || N; + }, D = e + " Iterator", O = !1, R = t.prototype, M = R[w] || R["@@iterator"] || p && R[p], N = !S && M || k(p), B = "Array" == e && R.entries || M; if (B && (T = u(B.call(new t)), - T !== Object.prototype && T.next && (o || u(T) === v || (d ? d(T, v) : s(T[w]) || h(T, w, I)), - l(T, D, !0, !0), + T !== Object.prototype && T.next && (o || u(T) === y || (l ? l(T, y) : s(T[w]) || h(T, w, I)), + d(T, D, !0, !0), o && (m[D] = I))), - g && p == _ && N && N.name !== _ && (!o && y ? f(R, "name", _) : (O = !0, - M = function() { - return i(N, this) + g && p == _ && M && M.name !== _ && (!o && v ? f(R, "name", _) : (O = !0, + N = function() { + return i(M, this) } )), p) if (x = { values: k(_), - keys: b ? M : k(C), + keys: b ? N : k(C), entries: k(A) }, E) @@ -20334,17 +24224,17 @@ proto: !0, forced: S || O }, x); - return o && !E || R[w] === M || h(R, w, M, { + return o && !E || R[w] === N || h(R, w, N, { name: p }), - m[e] = M, + m[e] = N, x } }, "7efc": function(t, e, r) { "use strict"; r.d(e, "a", (function() { - return l + return d } )), r.d(e, "b", (function() { @@ -20389,15 +24279,15 @@ for (var c in a) { var u = i["findTable"](t, c, r); if (u) { - var d = u[0] - , l = n[d]; - null == l && (l = a[c].parseTab(t, d, u[1], s)), - s[c] = n[d] = l + var l = u[0] + , d = n[l]; + null == d && (d = a[c].parseTab(t, l, u[1], s)), + s[c] = n[l] = d } } if (!s["head"]) { - l = a["CFF "].parseTab(t, 0, t.length); - s["CFF "] = l + d = a["CFF "].parseTab(t, 0, t.length); + s["CFF "] = d } return s } @@ -20413,10 +24303,10 @@ s += 2; var c = r.readUint(n, s); s += 4; - for (var u = [], d = 0; d < c; d++) { - var l = r.readUint(n, s); + for (var u = [], l = 0; l < c; l++) { + var d = r.readUint(n, s); s += 4, - u.push(e(n, d, l, o)) + u.push(e(n, l, d, o)) } return u } @@ -20427,9 +24317,9 @@ var c = n.readASCII(t, a, 4) , u = (n.readUint(t, a + 4), n.readUint(t, a + 8)) - , d = n.readUint(t, a + 12); + , l = n.readUint(t, a + 12); if (c == e) - return [u, d]; + return [u, l]; a += 16 } return null @@ -20566,32 +24456,32 @@ e += a[a.length - 1]; var u = []; e = o.readIndex(t, e, u); - var d = []; + var l = []; for (c = 0; c < u.length - 1; c++) - d.push(o.readDict(t, e + u[c], e + u[c + 1])); + l.push(o.readDict(t, e + u[c], e + u[c + 1])); e += u[u.length - 1]; - var l = d[0] + var d = l[0] , f = []; e = o.readIndex(t, e, f); var h = []; for (c = 0; c < f.length - 1; c++) h.push(n.readASCII(t, e + f[c], f[c + 1] - f[c])); if (e += f[f.length - 1], - o.readSubrs(t, e, l), - l["CharStrings"] && (l["CharStrings"] = o.readBytes(t, l["CharStrings"])), - l["ROS"]) { - e = l["FDArray"]; + o.readSubrs(t, e, d), + d["CharStrings"] && (d["CharStrings"] = o.readBytes(t, d["CharStrings"])), + d["ROS"]) { + e = d["FDArray"]; var p = []; e = o.readIndex(t, e, p), - l["FDArray"] = []; + d["FDArray"] = []; for (c = 0; c < p.length - 1; c++) { var m = o.readDict(t, e + p[c], e + p[c + 1]); o._readFDict(t, m, h), - l["FDArray"].push(m) + d["FDArray"].push(m) } e += p[p.length - 1], - e = l["FDSelect"], - l["FDSelect"] = []; + e = d["FDSelect"], + d["FDSelect"] = []; var b = t[e]; if (e++, 3 != b) @@ -20599,12 +24489,12 @@ var g = n.readUshort(t, e); e += 2; for (c = 0; c < g + 1; c++) - l["FDSelect"].push(n.readUshort(t, e), t[e + 2]), + d["FDSelect"].push(n.readUshort(t, e), t[e + 2]), e += 3 } - return l["charset"] && (l["charset"] = o.readCharset(t, l["charset"], l["CharStrings"].length)), - o._readFDict(t, l, h), - l + return d["charset"] && (d["charset"] = o.readCharset(t, d["charset"], d["CharStrings"].length)), + o._readFDict(t, d, h), + d }, _readFDict: function(t, e, r) { var n, o = i["T"].CFF; @@ -20733,29 +24623,29 @@ t[e + 3], t[e + 4], 1) - , d = null - , l = null; - s <= 20 && (d = s, + , l = null + , d = null; + s <= 20 && (l = s, u = 1), - 12 == s && (d = 100 * s + c, + 12 == s && (l = 100 * s + c, u = 2), - 19 != s && 20 != s || (d = s, + 19 != s && 20 != s || (l = s, u = 2), - 21 <= s && s <= 27 && (d = s, + 21 <= s && s <= 27 && (l = s, u = 1), - 28 == s && (l = o.readShort(t, e + 1), + 28 == s && (d = o.readShort(t, e + 1), u = 3), - 29 <= s && s <= 31 && (d = s, + 29 <= s && s <= 31 && (l = s, u = 1), - 32 <= s && s <= 246 && (l = s - 139, + 32 <= s && s <= 246 && (d = s - 139, u = 1), - 247 <= s && s <= 250 && (l = 256 * (s - 247) + c + 108, + 247 <= s && s <= 250 && (d = 256 * (s - 247) + c + 108, u = 2), - 251 <= s && s <= 254 && (l = 256 * -(s - 251) - c - 108, + 251 <= s && s <= 254 && (d = 256 * -(s - 251) - c - 108, u = 2), - 255 == s && (l = o.readInt(t, e + 1) / 65535, + 255 == s && (d = o.readInt(t, e + 1) / 65535, u = 5), - a.push(null != l ? l : "o" + d), + a.push(null != d ? d : "o" + l), e += u } return a @@ -20771,20 +24661,20 @@ t[e + 3], t[e + 4], 1) - , d = null - , l = null; - if (28 == s && (l = n.readShort(t, e + 1), + , l = null + , d = null; + if (28 == s && (d = n.readShort(t, e + 1), u = 3), - 29 == s && (l = n.readInt(t, e + 1), + 29 == s && (d = n.readInt(t, e + 1), u = 5), - 32 <= s && s <= 246 && (l = s - 139, + 32 <= s && s <= 246 && (d = s - 139, u = 1), - 247 <= s && s <= 250 && (l = 256 * (s - 247) + c + 108, + 247 <= s && s <= 250 && (d = 256 * (s - 247) + c + 108, u = 2), - 251 <= s && s <= 254 && (l = 256 * -(s - 251) - c - 108, + 251 <= s && s <= 254 && (d = 256 * -(s - 251) - c - 108, u = 2), 255 == s) - throw l = n.readInt(t, e + 1) / 65535, + throw d = n.readInt(t, e + 1) / 65535, u = 5, "unknown number"; if (30 == s) { @@ -20800,22 +24690,22 @@ 15 == m) break } - for (var b = "", g = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ".", "e", "e-", "reserved", "-", "endOfNumber"], y = 0; y < f.length; y++) - b += g[f[y]]; - l = parseFloat(b) + for (var b = "", g = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ".", "e", "e-", "reserved", "-", "endOfNumber"], v = 0; v < f.length; v++) + b += g[f[v]]; + d = parseFloat(b) } if (s <= 21) { - var v = ["version", "Notice", "FullName", "FamilyName", "Weight", "FontBBox", "BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StdHW", "StdVW", "escape", "UniqueID", "XUID", "charset", "Encoding", "CharStrings", "Private", "Subrs", "defaultWidthX", "nominalWidthX"]; - if (d = v[s], + var y = ["version", "Notice", "FullName", "FamilyName", "Weight", "FontBBox", "BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StdHW", "StdVW", "escape", "UniqueID", "XUID", "charset", "Encoding", "CharStrings", "Private", "Subrs", "defaultWidthX", "nominalWidthX"]; + if (l = y[s], u = 1, 12 == s) { - v = ["Copyright", "isFixedPitch", "ItalicAngle", "UnderlinePosition", "UnderlineThickness", "PaintType", "CharstringType", "FontMatrix", "StrokeWidth", "BlueScale", "BlueShift", "BlueFuzz", "StemSnapH", "StemSnapV", "ForceBold", "", "", "LanguageGroup", "ExpansionFactor", "initialRandomSeed", "SyntheticBase", "PostScript", "BaseFontName", "BaseFontBlend", "", "", "", "", "", "", "ROS", "CIDFontVersion", "CIDFontRevision", "CIDFontType", "CIDCount", "UIDBase", "FDArray", "FDSelect", "FontName"]; - d = v[c], + y = ["Copyright", "isFixedPitch", "ItalicAngle", "UnderlinePosition", "UnderlineThickness", "PaintType", "CharstringType", "FontMatrix", "StrokeWidth", "BlueScale", "BlueShift", "BlueFuzz", "StemSnapH", "StemSnapV", "ForceBold", "", "", "LanguageGroup", "ExpansionFactor", "initialRandomSeed", "SyntheticBase", "PostScript", "BaseFontName", "BaseFontBlend", "", "", "", "", "", "", "ROS", "CIDFontVersion", "CIDFontRevision", "CIDFontType", "CIDCount", "UIDBase", "FDArray", "FDSelect", "FontName"]; + l = y[c], u = 2 } } - null != d ? (o[d] = 1 == a.length ? a[0] : a, - a = []) : a.push(l), + null != l ? (o[l] = 1 == a.length ? a[0] : a, + a = []) : a.push(d), e += u } return o @@ -20837,14 +24727,14 @@ e += 2; var c = a(t, e); e += 2; - for (var u = [], d = 0; d < c; d++) { - var l = a(t, e); + for (var u = [], l = 0; l < c; l++) { + var d = a(t, e); e += 2; var f = a(t, e); e += 2; var h = o.readUint(t, e); e += 4; - var p = "p" + l + "e" + f + var p = "p" + d + "e" + f , m = u.indexOf(h); if (-1 == m) { m = n.tables.length; @@ -20883,24 +24773,24 @@ e += 2; var u = o(t, e); e += 2; - var d = u >>> 1; + var l = u >>> 1; r.searchRange = o(t, e), e += 2, r.entrySelector = o(t, e), e += 2, r.rangeShift = o(t, e), e += 2, - r.endCount = a(t, e, d), - e += 2 * d, + r.endCount = a(t, e, l), + e += 2 * l, e += 2, - r.startCount = a(t, e, d), - e += 2 * d, + r.startCount = a(t, e, l), + e += 2 * l, r.idDelta = []; - for (var l = 0; l < d; l++) + for (var d = 0; d < l; d++) r.idDelta.push(n.readShort(t, e)), e += 2; - return r.idRangeOffset = a(t, e, d), - e += 2 * d, + return r.idRangeOffset = a(t, e, l), + e += 2 * l, r.glyphIdArray = a(t, e, s + c - e >>> 1), r }, @@ -20962,28 +24852,28 @@ n.readUshort(t, e); e += 2, e += 4; - for (var d = o + u, l = 0; l < 3; l++) { - var f = n.readUshort(t, d); - d += 2; - var h = n.readUshort(t, d); - d += 2; - var p = n.readUint(t, d); - d += 4; + for (var l = o + u, d = 0; d < 3; d++) { + var f = n.readUshort(t, l); + l += 2; + var h = n.readUshort(t, l); + l += 2; + var p = n.readUint(t, l); + l += 4; var m = h - f + 1 , b = o + u + p , g = n.readUshort(t, b); if (b += 2, 1 != g) throw g; - var y = n.readUshort(t, b); + var v = n.readUshort(t, b); b += 2; - var v = n.readUint(t, b); + var y = n.readUint(t, b); b += 4; for (var S = [], w = 0; w < m; w++) { var C = n.readUint(t, b + 4 * w); - S.push(v + C) + S.push(y + C) } - s.push([f, h, y, S]) + s.push([f, h, v, S]) } } return s @@ -21032,22 +24922,22 @@ return null; s.instructions = r.readBytes(n, a, u), a += u; - var d = s.endPts[s.noc - 1] + 1; + var l = s.endPts[s.noc - 1] + 1; s.flags = []; - for (c = 0; c < d; c++) { - var l = n[a]; + for (c = 0; c < l; c++) { + var d = n[a]; if (a++, - s.flags.push(l), - 0 != (8 & l)) { + s.flags.push(d), + 0 != (8 & d)) { var f = n[a]; a++; for (var h = 0; h < f; h++) - s.flags.push(l), + s.flags.push(d), c++ } } s.xs = []; - for (c = 0; c < d; c++) { + for (c = 0; c < l; c++) { var p = 0 != (2 & s.flags[c]) , m = 0 != (16 & s.flags[c]); p ? (s.xs.push(m ? n[a] : -n[a]), @@ -21055,7 +24945,7 @@ a += 2) } s.ys = []; - for (c = 0; c < d; c++) { + for (c = 0; c < l; c++) { p = 0 != (4 & s.flags[c]), m = 0 != (32 & s.flags[c]); p ? (s.ys.push(m ? n[a] : -n[a]), @@ -21064,16 +24954,16 @@ } var b = 0 , g = 0; - for (c = 0; c < d; c++) + for (c = 0; c < l; c++) b += s.xs[c], g += s.ys[c], s.xs[c] = b, s.ys[c] = g } else { - var y, v = 1, S = 2, w = 8, C = 32, _ = 64, A = 128, I = 256; + var v, y = 1, S = 2, w = 8, C = 32, _ = 64, A = 128, I = 256; s.parts = []; do { - y = r.readUshort(n, a), + v = r.readUshort(n, a), a += 2; var E = { m: { @@ -21090,7 +24980,7 @@ if (s.parts.push(E), E.glyphIndex = r.readUshort(n, a), a += 2, - y & v) { + v & y) { var T = r.readShort(n, a); a += 2; var x = r.readShort(n, a); @@ -21101,14 +24991,14 @@ x = r.readInt8(n, a); a++ } - y & S ? (E.m.tx = T, + v & S ? (E.m.tx = T, E.m.ty = x) : (E.p1 = T, E.p2 = x), - y & w ? (E.m.a = E.m.d = r.readF2dot14(n, a), - a += 2) : y & _ ? (E.m.a = r.readF2dot14(n, a), + v & w ? (E.m.a = E.m.d = r.readF2dot14(n, a), + a += 2) : v & _ ? (E.m.a = r.readF2dot14(n, a), a += 2, E.m.d = r.readF2dot14(n, a), - a += 2) : y & A && (E.m.a = r.readF2dot14(n, a), + a += 2) : v & A && (E.m.a = r.readF2dot14(n, a), a += 2, E.m.b = r.readF2dot14(n, a), a += 2, @@ -21116,8 +25006,8 @@ a += 2, E.m.d = r.readF2dot14(n, a), a += 2) - } while (y & C); - if (y & I) { + } while (v & C); + if (v & I) { var P = r.readUshort(n, a); a += 2, s.instr = []; @@ -21180,7 +25070,7 @@ o += u } return c - }, c = a(n), u = s(n), d = (a(n), + }, c = a(n), u = s(n), l = (a(n), s(n), function(t) { for (var e, n = 0, i = t.length, o = 0; o <= i; o++) { @@ -21199,27 +25089,27 @@ break } if (28 == c || 29 == c || c >= 32 && c <= 254) { - var d; + var l; if (28 == c) - d = r.readShort(t, n), + l = r.readShort(t, n), n += 2; else if (29 == c) - d = r.readInt(t, n), + l = r.readInt(t, n), n += 4; else if (c >= 32 && c <= 246) - d = c - 139; + l = c - 139; else if (c >= 247 && c <= 250) { - var l = r.readUint8(t, n); + var d = r.readUint8(t, n); n += 1, - d = 256 * (c - 247) + l + 108 + l = 256 * (c - 247) + d + 108 } else { if (!(c >= 251 && c <= 254)) throw "IllegalArgumentExceptionnew"; - l = r.readUint8(t, n); + d = r.readUint8(t, n); n += 1, - d = 256 * -(c - 251) - l - 108 + l = 256 * -(c - 251) - d - 108 } - a[s] = d, + a[s] = l, s += 1 } else if (30 != c) throw "invalid DICT data b0 byte: " + c @@ -21227,9 +25117,9 @@ } return e } - ), l = (new ArrayBuffer(c.byteLength), - 0); l <= c.byteLength; l++) - d(u[l]); + ), d = (new ArrayBuffer(c.byteLength), + 0); d <= c.byteLength; d++) + l(u[d]); var f = {}; if (f.noc = r.readShort(n, o), o += 2, @@ -21243,7 +25133,7 @@ o += 2, f.noc > 0) { f.endPts = []; - for (l = 0; l < f.noc; l++) + for (d = 0; d < f.noc; d++) f.endPts.push(r.readUshort(n, o)), o += 2; var h = r.readUshort(n, o); @@ -21254,7 +25144,7 @@ o += h; var p = f.endPts[f.noc - 1] + 1; f.flags = []; - for (l = 0; l < p; l++) { + for (d = 0; d < p; d++) { var m = n[o]; if (o++, f.flags.push(m), @@ -21263,32 +25153,32 @@ o++; for (var g = 0; g < b; g++) f.flags.push(m), - l++ + d++ } } f.xs = []; - for (l = 0; l < p; l++) { - var y = 0 != (2 & f.flags[l]) - , v = 0 != (16 & f.flags[l]); - y ? (f.xs.push(v ? n[o] : -n[o]), - o++) : v ? f.xs.push(0) : (f.xs.push(r.readShort(n, o)), + for (d = 0; d < p; d++) { + var v = 0 != (2 & f.flags[d]) + , y = 0 != (16 & f.flags[d]); + v ? (f.xs.push(y ? n[o] : -n[o]), + o++) : y ? f.xs.push(0) : (f.xs.push(r.readShort(n, o)), o += 2) } f.ys = []; - for (l = 0; l < p; l++) { - y = 0 != (4 & f.flags[l]), - v = 0 != (32 & f.flags[l]); - y ? (f.ys.push(v ? n[o] : -n[o]), - o++) : v ? f.ys.push(0) : (f.ys.push(r.readShort(n, o)), + for (d = 0; d < p; d++) { + v = 0 != (4 & f.flags[d]), + y = 0 != (32 & f.flags[d]); + v ? (f.ys.push(y ? n[o] : -n[o]), + o++) : y ? f.ys.push(0) : (f.ys.push(r.readShort(n, o)), o += 2) } var S = 0 , w = 0; - for (l = 0; l < p; l++) - S += f.xs[l], - w += f.ys[l], - f.xs[l] = S, - f.ys[l] = w + for (d = 0; d < p; d++) + S += f.xs[d], + w += f.ys[d], + f.xs[d] = S, + f.ys[d] = w } else { var C, _ = 1, A = 2, I = 8, E = 32, T = 64, x = 128, P = 256; f.parts = []; @@ -21341,7 +25231,7 @@ var R = r.readUshort(n, o); o += 2, f.instr = []; - for (l = 0; l < R; l++) + for (d = 0; d < R; d++) f.instr.push(n[o]), o++ } @@ -21411,18 +25301,18 @@ , s = [] , c = n["maxp"]["numGlyphs"] , u = n["hhea"]["numberOfHMetrics"] - , d = 0 , l = 0 + , d = 0 , f = 0; while (f < u) - d = o.readUshort(t, e + (f << 2)), - l = o.readShort(t, e + (f << 2) + 2), - a.push(d), - s.push(l), + l = o.readUshort(t, e + (f << 2)), + d = o.readShort(t, e + (f << 2) + 2), + a.push(l), + s.push(d), f++; while (f < c) - a.push(d), - s.push(l), + a.push(l), + s.push(d), f++; return { aWidth: a, @@ -21442,13 +25332,13 @@ for (var u = { glyph1: [], rval: [] - }, d = 0; d < c; d++) { + }, l = 0; l < c; l++) { e += 2; r = o.readUshort(t, e); e += 2; - var l = o.readUshort(t, e); + var d = o.readUshort(t, e); e += 2; - var f = l >>> 8; + var f = d >>> 8; f &= 15, 0 == f && (e = a.readFormat0(t, e, u)) } @@ -21466,12 +25356,12 @@ }, u = 0; u < s; u++) { o.readUint(t, e); e += 4; - var d = o.readUshort(t, e); + var l = o.readUshort(t, e); e += 2; o.readUshort(t, e); e += 2; - var l = 255 & d; - 0 == l && (e = a.readFormat0(t, e, c)) + var d = 255 & l; + 0 == d && (e = a.readFormat0(t, e, c)) } return c }, @@ -21487,9 +25377,9 @@ for (var c = 0; c < s; c++) { var u = o(t, e); e += 2; - var d = o(t, e); + var l = o(t, e); e += 2; - var l = n.readShort(t, e); + var d = n.readShort(t, e); e += 2, u != a && (r.glyph1.push(u), r.rval.push({ @@ -21497,8 +25387,8 @@ vals: [] })); var f = r.rval[r.rval.length - 1]; - f.glyph2.push(d), - f.vals.push(l), + f.glyph2.push(l), + f.vals.push(d), a = u } return e @@ -21541,8 +25431,8 @@ e += 2; n.readUshort(t, e); e += 2; - for (var s = ["copyright", "fontFamily", "fontSubfamily", "ID", "fullName", "version", "postScriptName", "trademark", "manufacturer", "designer", "description", "urlVendor", "urlDesigner", "licence", "licenceURL", "---", "typoFamilyName", "typoSubfamilyName", "compatibleFull", "sampleText", "postScriptCID", "wwsFamilyName", "wwsSubfamilyName", "lightPalette", "darkPalette"], c = e, u = n.readUshort, d = 0; d < a; d++) { - var l = u(t, e); + for (var s = ["copyright", "fontFamily", "fontSubfamily", "ID", "fullName", "version", "postScriptName", "trademark", "manufacturer", "designer", "description", "urlVendor", "urlDesigner", "licence", "licenceURL", "---", "typoFamilyName", "typoSubfamilyName", "compatibleFull", "sampleText", "postScriptCID", "wwsFamilyName", "wwsSubfamilyName", "lightPalette", "darkPalette"], c = e, u = n.readUshort, l = 0; l < a; l++) { + var d = u(t, e); e += 2; var f = u(t, e); e += 2; @@ -21554,14 +25444,14 @@ e += 2; var b = u(t, e); e += 2; - var g, y = c + 12 * a + b; - 0 == l || 3 == l && 0 == f || 1 == l && 25 == f ? g = n.readUnicode(t, y, m / 2) : 0 == f ? g = n.readASCII(t, y, m) : 1 == f || 3 == f || 4 == f || 5 == f || 10 == f ? g = n.readUnicode(t, y, m / 2) : 1 == l ? (g = n.readASCII(t, y, m), - console.log("reading unknown MAC encoding " + f + " as ASCII")) : (console.log("unknown encoding " + f + ", platformID: " + l), - g = n.readASCII(t, y, m)); - var v = "p" + l + "," + h.toString(16); - null == o[v] && (o[v] = {}), - o[v][s[p]] = g, - o[v]["_lang"] = h + var g, v = c + 12 * a + b; + 0 == d || 3 == d && 0 == f || 1 == d && 25 == f ? g = n.readUnicode(t, v, m / 2) : 0 == f ? g = n.readASCII(t, v, m) : 1 == f || 3 == f || 4 == f || 5 == f || 10 == f ? g = n.readUnicode(t, v, m / 2) : 1 == d ? (g = n.readASCII(t, v, m), + console.log("reading unknown MAC encoding " + f + " as ASCII")) : (console.log("unknown encoding " + f + ", platformID: " + d), + g = n.readASCII(t, v, m)); + var y = "p" + d + "," + h.toString(16); + null == o[y] && (o[y] = {}), + o[y][s[p]] = g, + o[y]["_lang"] = h } var S = i["T"].name.selectOne(o) , w = "fontFamily"; @@ -21742,17 +25632,17 @@ var c = n.readUshort(t, e); e += 2; for (var u = 0; u < c; u++) { - var d = n.readUshort(t, e); - e += 2; var l = n.readUshort(t, e); e += 2; + var d = n.readUshort(t, e); + e += 2; var f = n.readUint(t, e); e += 4; var h = n.readUint(t, e); e += 4; var p = new Uint8Array(t.buffer,a + f + s,h); 31 == p[0] && 139 == p[1] && 8 == p[2] && (p = pako["inflate"](p)); - for (var m = n.readUTF8(p, 0, p.length), b = d; b <= l; b++) + for (var m = n.readUTF8(p, 0, p.length), b = l; b <= d; b++) o.entries[b] = m } return o @@ -21760,12 +25650,12 @@ }, i["T"].sbix = { parseTab: function(t, e, r, n) { - for (var o = n["maxp"]["numGlyphs"], a = e, s = i["B"], c = s.readUint(t, e + 4), u = [], d = c - 1; d < c; d++) - for (var l = a + s.readUint(t, e + 8 + 4 * d), f = 0; f < o; f++) { - var h = s.readUint(t, l + 4 + 4 * f) - , p = s.readUint(t, l + 4 + 4 * f + 4); + for (var o = n["maxp"]["numGlyphs"], a = e, s = i["B"], c = s.readUint(t, e + 4), u = [], l = c - 1; l < c; l++) + for (var d = a + s.readUint(t, e + 8 + 4 * l), f = 0; f < o; f++) { + var h = s.readUint(t, d + 4 + 4 * f) + , p = s.readUint(t, d + 4 + 4 * f + 4); if (h != p) { - var m = l + h + var m = d + h , b = s.readASCII(t, m + 4, 4); if ("png " != b) throw b; @@ -21789,15 +25679,15 @@ e += 4; var u = n.readUshort(t, e); e += 2; - for (var d = {}, l = o + s, f = 0; f < a; f++) - d["g" + n.readUshort(t, l)] = [n.readUshort(t, l + 2), n.readUshort(t, l + 4)], - l += 6; + for (var l = {}, d = o + s, f = 0; f < a; f++) + l["g" + n.readUshort(t, d)] = [n.readUshort(t, d + 2), n.readUshort(t, d + 4)], + d += 6; var h = []; - l = o + c; + d = o + c; for (f = 0; f < u; f++) - h.push(n.readUshort(t, l), n.readUshort(t, l + 2)), - l += 4; - return [d, h] + h.push(n.readUshort(t, d), n.readUshort(t, d + 2)), + d += 4; + return [l, h] } }, i["T"].cpal = { @@ -21843,17 +25733,17 @@ var c = []; for (a = 0; a < o.length; a++) { var u = n(t, o, a, r) - , d = o[a] - , l = t["hmtx"].aWidth[d] + u[2]; + , l = o[a] + , d = t["hmtx"].aWidth[l] + u[2]; c.push({ - g: d, + g: l, cl: a, dx: 0, dy: 0, - ax: l, + ax: d, ay: 0 }), - l + d } return c }, @@ -21862,12 +25752,12 @@ cmds: [], crds: [] }, o = 0, a = 0, s = 0; s < e.length; s++) { - for (var c = e[s], u = i["U"]["glyphToPath"](t, c["g"]), d = u["crds"], l = 0; l < d.length; l += 2) - n.crds.push(d[l] + o + c["dx"]), - n.crds.push(d[l + 1] + a + c["dy"]); + for (var c = e[s], u = i["U"]["glyphToPath"](t, c["g"]), l = u["crds"], d = 0; d < l.length; d += 2) + n.crds.push(l[d] + o + c["dx"]), + n.crds.push(l[d + 1] + a + c["dy"]); r && n.cmds.push(r); - for (l = 0; l < u["cmds"].length; l++) - n.cmds.push(u["cmds"][l]); + for (d = 0; d < u["cmds"].length; d++) + n.cmds.push(u["cmds"][d]); var f = n.cmds.length; r && 0 != f && "X" != n.cmds[f - 1] && n.cmds.push("X"), o += c["ax"], @@ -21905,39 +25795,39 @@ } var c = e["_ctab"] , u = c.format - , d = -1; + , l = -1; if (0 == u) - d = n >= c.map.length ? 0 : c.map[n]; + l = n >= c.map.length ? 0 : c.map[n]; else if (4 == u) { - var l = c.endCount; - if (d = 0, - n <= l[l.length - 1]) { - var f = t(l, 1, n); - if (l[f] < n && f++, + var d = c.endCount; + if (l = 0, + n <= d[d.length - 1]) { + var f = t(d, 1, n); + if (d[f] < n && f++, n >= c.startCount[f]) { var h = 0; h = 0 != c.idRangeOffset[f] ? c.glyphIdArray[n - c.startCount[f] + (c.idRangeOffset[f] >> 1) - (c.idRangeOffset.length - f)] : n + c.idDelta[f], - d = 65535 & h + l = 65535 & h } } } else if (6 == u) { var p = n - c.firstCode , m = c.glyphIdArray; - d = p < 0 || p >= m.length ? 0 : m[p] + l = p < 0 || p >= m.length ? 0 : m[p] } else { if (12 != u) throw "unknown cmap table format " + c.format; var b = c.groups; - if (d = 0, + if (l = 0, n <= b[b.length - 2]) { s = t(b, 3, n); - b[s] <= n && n <= b[s + 1] && (d = b[s + 2] + (n - b[s])) + b[s] <= n && n <= b[s + 1] && (l = b[s + 2] + (n - b[s])) } } var g = e["SVG "] - , y = e["loca"]; - return 0 == d || null != e["CFF "] || null != g && null != g.entries[d] || !y || y[d] != y[d + 1] || null != r[n] || (d = 0), - d + , v = e["loca"]; + return 0 == l || null != e["CFF "] || null != g && null != g.entries[l] || !v || v[l] != v[l + 1] || null != r[n] || (l = 0), + l } return i }(), @@ -21951,33 +25841,33 @@ , s = t["COLR"] , c = t["CBLC"] , u = t["CBDT"] - , d = t["sbix"] - , l = window["UPNG"] + , l = t["sbix"] + , d = window["UPNG"] , f = i["U"] , h = null; - if (c && l) + if (c && d) for (var p = 0; p < c.length; p++) c[p][0] <= e && e <= c[p][1] && (h = c[p]); - if (h || d && d[e]) { + if (h || l && l[e]) { if (h && 17 != h[2]) throw "not a PNG"; null == t["__tmp"] && (t["__tmp"] = {}); var m = t["__tmp"]["g" + e]; if (null == m) { var b, g; - if (d) - b = d[e], + if (l) + b = l[e], g = b.length; else { - var y = h[3][e - h[0]] + 5; - g = u[y + 1] << 16 | u[y + 2] << 8 | u[y + 3], - y += 4, - b = new Uint8Array(u.buffer,u.byteOffset + y,g) + var v = h[3][e - h[0]] + 5; + g = u[v + 1] << 16 | u[v + 2] << 8 | u[v + 3], + v += 4, + b = new Uint8Array(u.buffer,u.byteOffset + v,g) } - var v = ""; + var y = ""; for (p = 0; p < g; p++) - v += String.fromCharCode(b[p]); - m = t["__tmp"]["g" + e] = "data:image/png;base64," + btoa(v) + y += String.fromCharCode(b[p]); + m = t["__tmp"]["g" + e] = "data:image/png;base64," + btoa(y) } n.cmds.push(m); var S = 1.15 * t["head"]["unitsPerEm"] @@ -22010,7 +25900,7 @@ } } else if (a) { var R = a["Private"] - , N = { + , M = { x: 0, y: 0, stack: [], @@ -22020,17 +25910,14 @@ open: !1 }; if (a["ROS"]) { - var M = 0; - while (a["FDSelect"][M + 2] <= e) - M += 2; - try{ - R = a["FDArray"][a["FDSelect"][M + 1]]["Private"] - } - catch(e){ - R = a["FDArray"][a["FDSelect"][M + 1]] - } + var N = 0; + while (a["FDSelect"][N + 2] <= e) + N += 2; + R = a["FDArray"][a["FDSelect"][N + 1]]["Private"] } - f["_drawCFF"](a["CharStrings"][e], N, a, R, n) + if (!(e < a["CharStrings"].length)) + return null; + f["_drawCFF"](a["CharStrings"][e], M, a, R, n) } else if (t["glyf"]) f["_drawGlyf"](e, t, n); else { @@ -22052,21 +25939,21 @@ for (var o = 0 == n ? 0 : t.endPts[n - 1] + 1, a = t.endPts[n], s = o; s <= a; s++) { var c = s == o ? a : s - 1 , u = s == a ? o : s + 1 - , d = 1 & t.flags[s] - , l = 1 & t.flags[c] + , l = 1 & t.flags[s] + , d = 1 & t.flags[c] , f = 1 & t.flags[u] , h = t.xs[s] , p = t.ys[s]; if (s == o) - if (d) { - if (!l) { + if (l) { + if (!d) { r.MoveTo(e, h, p); continue } r.MoveTo(e, t.xs[c], t.ys[c]) } else - l ? r.MoveTo(e, t.xs[c], t.ys[c]) : r.MoveTo(e, Math.floor(.5 * (t.xs[c] + h)), Math.floor(.5 * (t.ys[c] + p))); - d ? l && r.LineTo(e, h, p) : f ? r.qCurveTo(e, h, p, t.xs[u], t.ys[u]) : r.qCurveTo(e, h, p, Math.floor(.5 * (h + t.xs[u])), Math.floor(.5 * (p + t.ys[u]))) + d ? r.MoveTo(e, t.xs[c], t.ys[c]) : r.MoveTo(e, Math.floor(.5 * (t.xs[c] + h)), Math.floor(.5 * (t.ys[c] + p))); + l ? d && r.LineTo(e, h, p) : f ? r.qCurveTo(e, h, p, t.xs[u], t.ys[u]) : r.qCurveTo(e, h, p, Math.floor(.5 * (h + t.xs[u])), Math.floor(.5 * (p + t.ys[u]))) } r.ClosePath(e) } @@ -22081,9 +25968,9 @@ i["U"]["_drawGlyf"](a.glyphIndex, e, o); for (var s = a.m, c = 0; c < o.crds.length; c += 2) { var u = o.crds[c] - , d = o.crds[c + 1]; - r.crds.push(u * s.a + d * s.c + s.tx), - r.crds.push(u * s.b + d * s.d + s.ty) + , l = o.crds[c + 1]; + r.crds.push(u * s.a + l * s.c + s.tx), + r.crds.push(u * s.b + l * s.d + s.ty) } for (c = 0; c < o.cmds.length; c++) r.cmds.push(o.cmds[c]) @@ -22116,36 +26003,36 @@ L: 2, Q: 4, C: 6 - }, u = 0, d = 0, l = 0, f = 0, h = 0, p = 0, m = 0; m < r.length; m++) { - var b, g, y, v, S = r[m], w = c[S] ? c[S] : 0, C = []; + }, u = 0, l = 0, d = 0, f = 0, h = 0, p = 0, m = 0; m < r.length; m++) { + var b, g, v, y, S = r[m], w = c[S] ? c[S] : 0, C = []; if ("L" == S) b = n[s] - u, - g = n[s + 1] - d, - y = i(b + l), - v = i(g + f), - "Z" == r[m + 1] && n[s] == h && n[s + 1] == p ? (y = b, - v = g) : 0 == y && 0 == v || (0 == y ? C.push("v", v) : 0 == v ? C.push("h", y) : C.push("l", y, v)); + g = n[s + 1] - l, + v = i(b + d), + y = i(g + f), + "Z" == r[m + 1] && n[s] == h && n[s + 1] == p ? (v = b, + y = g) : 0 == v && 0 == y || (0 == v ? C.push("v", y) : 0 == y ? C.push("h", v) : C.push("l", v, y)); else { C.push(S.toLowerCase()); for (var _ = 0; _ < w; _ += 2) b = n[s + _] - u, - g = n[s + _ + 1] - d, - y = i(b + l), - v = i(g + f), - C.push(y, v) + g = n[s + _ + 1] - l, + v = i(b + d), + y = i(g + f), + C.push(v, y) } - 0 != w && (l += b - y, - f += g - v); + 0 != w && (d += b - v, + f += g - y); var A = C; for (_ = 0; _ < A.length; _++) a.push(A[_]); 0 != w && (s += w, u = n[s - 2], - d = n[s - 1]), + l = n[s - 1]), "M" == S && (h = u, - p = d), + p = l), "Z" == S && (u = h, - d = p) + l = p) } return o(a) }, @@ -22179,8 +26066,8 @@ i += 4; else if ("d" == c[0]) { var u = window["UPNG"] - , d = a[i] - , l = a[i + 1] + , l = a[i] + , d = a[i + 1] , f = a[i + 2] , h = a[i + 3] , p = a[i + 4] @@ -22189,7 +26076,7 @@ , g = a[i + 7]; if (i += 8, null == u) { - n.moveTo(d, l), + n.moveTo(l, d), n.lineTo(f, h), n.lineTo(p, m), n.lineTo(b, g), @@ -22197,7 +26084,7 @@ continue } n.save(); - for (var y = f - d, v = h - l, S = Math.sqrt(y * y + v * v), w = Math.atan2(v, y), C = b - d, _ = g - l, A = Math.sqrt(C * C + _ * _), I = Math.sign(y * _ - v * C), E = atob(c.slice(22)), T = [], x = 0; x < E.length; x++) + for (var v = f - l, y = h - d, S = Math.sqrt(v * v + y * y), w = Math.atan2(y, v), C = b - l, _ = g - d, A = Math.sqrt(C * C + _ * _), I = Math.sign(v * _ - y * C), E = atob(c.slice(22)), T = [], x = 0; x < E.length; x++) T[x] = E.charCodeAt(x); var P = u["decode"](new Uint8Array(T)) , k = P["width"] @@ -22208,7 +26095,7 @@ t.width == k && t.height == D || (t.width = k, t.height = D), e.putImageData(new ImageData(new Uint8ClampedArray(O.buffer),k,D), 0, 0), - n.translate(d, l), + n.translate(l, d), n.rotate(w), n.scale(S * (k / D) / k, I * A / D), n.drawImage(t, 0, 0), @@ -22249,41 +26136,35 @@ } }, _drawCFF: function(t, e, r, n, o) { - try{ - var EE = n["nominalWidthX"]; - } - catch(e){ - var EE = 0; - } var a = e.stack , s = e.nStems , c = e.haveWidth , u = e.width - , d = e.open - , l = 0 + , l = e.open + , d = 0 , f = e.x , h = e.y , p = 0 , m = 0 , b = 0 , g = 0 - , y = 0 , v = 0 + , y = 0 , S = 0 , w = 0 , C = 0 , _ = 0 , A = i["T"].CFF , I = i["U"]["P"] - , E = EE + , E = n["nominalWidthX"] , T = { val: 0, size: 0 }; - while (t && l < t.length) { - A.getCharString(t, l, T); + while (t && d < t.length) { + A.getCharString(t, d, T); var x = T.val; - if (l += T.size, + if (d += T.size, "o1" == x || "o18" == x) L = a.length % 2 !== 0, L && !c && (u = a.shift() + E), @@ -22299,10 +26180,10 @@ } else if ("o4" == x) a.length > 1 && !c && (u = a.shift() + E, c = !0), - d && I.ClosePath(o), + l && I.ClosePath(o), h += a.pop(), I.MoveTo(o, f, h), - d = !0; + l = !0; else if ("o5" == x) while (a.length > 0) f += a.shift(), @@ -22340,71 +26221,71 @@ g = m + a.shift(), C = b + a.shift(), _ = g, - y = C + a.shift(), - v = g, - S = y + a.shift(), + v = C + a.shift(), + y = g, + S = v + a.shift(), w = h, f = S + a.shift(), I.CurveTo(o, p, m, b, g, C, _), - I.CurveTo(o, y, v, S, w, f, h)), + I.CurveTo(o, v, y, S, w, f, h)), "o1235" == x && (p = f + a.shift(), m = h + a.shift(), b = p + a.shift(), g = m + a.shift(), C = b + a.shift(), _ = g + a.shift(), - y = C + a.shift(), - v = _ + a.shift(), - S = y + a.shift(), - w = v + a.shift(), + v = C + a.shift(), + y = _ + a.shift(), + S = v + a.shift(), + w = y + a.shift(), f = S + a.shift(), h = w + a.shift(), a.shift(), I.CurveTo(o, p, m, b, g, C, _), - I.CurveTo(o, y, v, S, w, f, h)), + I.CurveTo(o, v, y, S, w, f, h)), "o1236" == x && (p = f + a.shift(), m = h + a.shift(), b = p + a.shift(), g = m + a.shift(), C = b + a.shift(), _ = g, - y = C + a.shift(), - v = g, - S = y + a.shift(), - w = v + a.shift(), + v = C + a.shift(), + y = g, + S = v + a.shift(), + w = y + a.shift(), f = S + a.shift(), I.CurveTo(o, p, m, b, g, C, _), - I.CurveTo(o, y, v, S, w, f, h)), + I.CurveTo(o, v, y, S, w, f, h)), "o1237" == x && (p = f + a.shift(), m = h + a.shift(), b = p + a.shift(), g = m + a.shift(), C = b + a.shift(), _ = g + a.shift(), - y = C + a.shift(), - v = _ + a.shift(), - S = y + a.shift(), - w = v + a.shift(), + v = C + a.shift(), + y = _ + a.shift(), + S = v + a.shift(), + w = y + a.shift(), Math.abs(S - f) > Math.abs(w - h) ? f = S + a.shift() : h = w + a.shift(), I.CurveTo(o, p, m, b, g, C, _), - I.CurveTo(o, y, v, S, w, f, h)); + I.CurveTo(o, v, y, S, w, f, h)); else if ("o14" == x) { if (a.length > 0 && 4 != a.length && !c && (u = a.shift() + r["nominalWidthX"], c = !0), 4 == a.length) { - var N = a.shift() - , M = a.shift() + var M = a.shift() + , N = a.shift() , B = a.shift() , F = a.shift() , j = A.glyphBySE(r, B) - , K = A.glyphBySE(r, F); + , U = A.glyphBySE(r, F); i["U"]["_drawCFF"](r["CharStrings"][j], e, r, n, o), - e.x = N, - e.y = M, - i["U"]["_drawCFF"](r["CharStrings"][K], e, r, n, o) + e.x = M, + e.y = N, + i["U"]["_drawCFF"](r["CharStrings"][U], e, r, n, o) } - d && (I.ClosePath(o), - d = !1) + l && (I.ClosePath(o), + l = !1) } else if ("o19" == x || "o20" == x) { var L; L = a.length % 2 !== 0, @@ -22412,22 +26293,22 @@ s += a.length >> 1, a.length = 0, c = !0, - l += s + 7 >> 3 + d += s + 7 >> 3 } else if ("o21" == x) a.length > 2 && !c && (u = a.shift() + E, c = !0), h += a.pop(), f += a.pop(), - d && I.ClosePath(o), + l && I.ClosePath(o), I.MoveTo(o, f, h), - d = !0; + l = !0; else if ("o22" == x) a.length > 1 && !c && (u = a.shift() + E, c = !0), f += a.pop(), - d && I.ClosePath(o), + l && I.ClosePath(o), I.MoveTo(o, f, h), - d = !0; + l = !0; else if ("o25" == x) { while (a.length > 6) f += a.shift(), @@ -22461,48 +26342,48 @@ h = g, I.CurveTo(o, p, m, b, g, f, h) } else if ("o10" == x || "o29" == x) { - var U = "o10" == x ? n : r; + var K = "o10" == x ? n : r; if (0 == a.length) console.log("error: empty stack"); else { var X = a.pop() - , z = U["Subrs"][X + U["Bias"]]; + , z = K["Subrs"][X + K["Bias"]]; e.x = f, e.y = h, e.nStems = s, e.haveWidth = c, e.width = u, - e.open = d, + e.open = l, i["U"]["_drawCFF"](z, e, r, n, o), f = e.x, h = e.y, s = e.nStems, c = e.haveWidth, u = e.width, - d = e.open + l = e.open } } else if ("o30" == x || "o31" == x) { var G = a.length - , q = (R = 0, + , W = (R = 0, "o31" == x); P = -3 & G, R += G - P; while (R < P) - q ? (p = f + a.shift(), + W ? (p = f + a.shift(), m = h, b = p + a.shift(), g = m + a.shift(), h = g + a.shift(), P - R == 5 ? (f = b + a.shift(), R++) : f = b, - q = !1) : (p = f, + W = !1) : (p = f, m = h + a.shift(), b = p + a.shift(), g = m + a.shift(), f = b + a.shift(), P - R == 5 ? (h = g + a.shift(), R++) : h = g, - q = !0), + W = !0), I.CurveTo(o, p, m, b, g, f, h), R += 4 } else { @@ -22518,7 +26399,7 @@ e.nStems = s, e.haveWidth = c, e.width = u, - e.open = d + e.open = l }, SVG: function() { var t = { @@ -22668,36 +26549,36 @@ for (var o = 0; o < e.length; o++) { var s = e[o] , c = s.tagName - , d = s.getAttribute("fill"); - if (null == d && (d = i), + , l = s.getAttribute("fill"); + if (null == l && (l = i), "g" == c) { - var l = { + var d = { crds: [], cmds: [] }; - a(s.children, l, d); + a(s.children, d, l); var f = s.getAttribute("transform"); if (f) { var h = n(f); - t.multArray(h, l.crds) + t.multArray(h, d.crds) } - r.crds = r.crds.concat(l.crds), - r.cmds = r.cmds.concat(l.cmds) + r.crds = r.crds.concat(d.crds), + r.cmds = r.cmds.concat(d.cmds) } else if ("path" == c || "circle" == c || "ellipse" == c) { var p; - if (r.cmds.push(d || "#000000"), + if (r.cmds.push(l || "#000000"), "path" == c && (p = s.getAttribute("d")), "circle" == c || "ellipse" == c) { for (var m = [0, 0, 0, 0], b = ["cx", "cy", "rx", "ry", "r"], g = 0; g < 5; g++) { - var y = s.getAttribute(b[g]); - y && (y = parseFloat(y), - g < 4 ? m[g] = y : m[2] = m[3] = y) + var v = s.getAttribute(b[g]); + v && (v = parseFloat(v), + g < 4 ? m[g] = v : m[2] = m[3] = v) } - var v = m[0] + var y = m[0] , S = m[1] , w = m[2] , C = m[3]; - p = ["M", v - w, S, "a", w, C, 0, 1, 0, 2 * w, 0, "a", w, C, 0, 1, 0, 2 * -w, 0].join(" ") + p = ["M", y - w, S, "a", w, C, 0, 1, 0, 2 * w, 0, "a", w, C, 0, 1, 0, 2 * -w, 0].join(" ") } u(p, r), r.cmds.push("X") @@ -22717,15 +26598,15 @@ var c = t.charCodeAt(r) , u = t.charAt(r); r++; - var d = 48 <= c && c <= 57 || "." == u || "-" == u || "+" == u || "e" == u || "E" == u; - n ? ("+" == u || "-" == u) && "e" != o || "." == u && -1 != i.indexOf(".") || d && ("a" == a || "A" == a) && (s % 7 == 3 || s % 7 == 4) ? (e.push(parseFloat(i)), + var l = 48 <= c && c <= 57 || "." == u || "-" == u || "+" == u || "e" == u || "E" == u; + n ? ("+" == u || "-" == u) && "e" != o || "." == u && -1 != i.indexOf(".") || l && ("a" == a || "A" == a) && (s % 7 == 3 || s % 7 == 4) ? (e.push(parseFloat(i)), s++, - i = u) : d ? i += u : (e.push(parseFloat(i)), + i = u) : l ? i += u : (e.push(parseFloat(i)), s++, "," != u && " " != u && (e.push(u), a = u, s = 0), - n = !1) : d ? (i = u, + n = !1) : l ? (i = u, n = !0) : "," != u && " " != u && (e.push(u), a = u, s = 0), @@ -22750,8 +26631,8 @@ , o = 0 , a = 0 , u = 0 - , d = e.crds.length - , l = { + , l = e.crds.length + , d = { M: 2, L: 2, H: 1, @@ -22773,27 +26654,27 @@ i = a, o = u; else - for (var b = l[m], g = c(r, n, b), y = 0; y < g; y++) { - 1 == y && "M" == m && (p = p == m ? "L" : "l", + for (var b = d[m], g = c(r, n, b), v = 0; v < g; v++) { + 1 == v && "M" == m && (p = p == m ? "L" : "l", m = "L"); - var v = 0 + var y = 0 , S = 0; - if (p != m && (v = i, + if (p != m && (y = i, S = o), "M" == m) - i = v + r[n++], + i = y + r[n++], o = S + r[n++], f.push("M"), h.push(i, o), a = i, u = o; else if ("L" == m) - i = v + r[n++], + i = y + r[n++], o = S + r[n++], f.push("L"), h.push(i, o); else if ("H" == m) - i = v + r[n++], + i = y + r[n++], f.push("L"), h.push(i, o); else if ("V" == m) @@ -22801,42 +26682,42 @@ f.push("L"), h.push(i, o); else if ("Q" == m) { - var w = v + r[n++] + var w = y + r[n++] , C = S + r[n++] - , _ = v + r[n++] + , _ = y + r[n++] , A = S + r[n++]; f.push("Q"), h.push(w, C, _, A), i = _, o = A } else if ("T" == m) { - var I = Math.max(h.length - ("Q" == f[f.length - 1] ? 4 : 2), d); + var I = Math.max(h.length - ("Q" == f[f.length - 1] ? 4 : 2), l); w = i + i - h[I], C = o + o - h[I + 1], - _ = v + r[n++], + _ = y + r[n++], A = S + r[n++]; f.push("Q"), h.push(w, C, _, A), i = _, o = A } else if ("C" == m) { - w = v + r[n++], + w = y + r[n++], C = S + r[n++], - _ = v + r[n++], + _ = y + r[n++], A = S + r[n++]; - var E = v + r[n++] + var E = y + r[n++] , T = S + r[n++]; f.push("C"), h.push(w, C, _, A, E, T), i = E, o = T } else if ("S" == m) { - I = Math.max(h.length - ("C" == f[f.length - 1] ? 4 : 2), d), + I = Math.max(h.length - ("C" == f[f.length - 1] ? 4 : 2), l), w = i + i - h[I], C = o + o - h[I + 1], - _ = v + r[n++], + _ = y + r[n++], A = S + r[n++], - E = v + r[n++], + E = y + r[n++], T = S + r[n++]; f.push("C"), h.push(w, C, _, A, E, T), @@ -22850,36 +26731,36 @@ , k = r[n++] * (Math.PI / 180) , D = r[n++] , O = r[n++]; - _ = v + r[n++], + _ = y + r[n++], A = S + r[n++]; if (_ == i && A == o && 0 == x && 0 == P) continue; var R = (w - _) / 2 - , N = (C - A) / 2 - , M = Math.cos(k) + , M = (C - A) / 2 + , N = Math.cos(k) , B = Math.sin(k) - , F = M * R + B * N - , j = -B * R + M * N - , K = x * x + , F = N * R + B * M + , j = -B * R + N * M + , U = x * x , L = P * P - , U = F * F + , K = F * F , X = j * j - , z = (K * L - K * X - L * U) / (K * X + L * U) + , z = (U * L - U * X - L * K) / (U * X + L * K) , G = (D != O ? 1 : -1) * Math.sqrt(Math.max(z, 0)) - , q = G * (x * j) / P - , W = P * F * -G / x - , V = M * q - B * W + (w + _) / 2 - , H = B * q + M * W + (C + A) / 2 - , Y = function(t, e, r, n) { + , W = G * (x * j) / P + , q = P * F * -G / x + , H = N * W - B * q + (w + _) / 2 + , V = B * W + N * q + (C + A) / 2 + , Z = function(t, e, r, n) { var i = Math.sqrt(t * t + e * e) , o = Math.sqrt(r * r + n * n) , a = (t * r + e * n) / (i * o); return (t * n - e * r >= 0 ? 1 : -1) * Math.acos(Math.max(-1, Math.min(1, a))) } - , Z = (F - q) / x - , Q = (j - W) / P - , J = Y(1, 0, Z, Q) - , $ = Y(Z, Q, (-F - q) / x, (-j - W) / P); + , Q = (F - W) / x + , Y = (j - q) / P + , J = Z(1, 0, Q, Y) + , $ = Z(Q, Y, (-F - W) / x, (-j - q) / P); $ %= 2 * Math.PI; var tt = function(t, e, r, n, i, o, a) { var s = function(t, e) { @@ -22906,7 +26787,7 @@ for (var r = 0; r < e.length; r++) t.push(e[r]) } - , d = function(t, e) { + , l = function(t, e) { u(t.cmds, e.cmds), u(t.crds, e.crds) }; @@ -22916,26 +26797,26 @@ else while (o < i) o += 2 * Math.PI; - var l = (o - i) / 4 - , f = Math.cos(l / 2) - , h = -Math.sin(l / 2) + var d = (o - i) / 4 + , f = Math.cos(d / 2) + , h = -Math.sin(d / 2) , p = (4 - f) / 3 , m = 0 == h ? h : (1 - f) * (3 - f) / (3 * h) , b = p , g = -m - , y = f - , v = -h - , S = [p, m, b, g, y, v] + , v = f + , y = -h + , S = [p, m, b, g, v, y] , w = { cmds: ["C", "C", "C", "C"], crds: S.slice(0) } , C = [1, 0, 0, 1, 0, 0]; - s(C, -l); + s(C, -d); for (var _ = 0; _ < 3; _++) c(C, S), u(w.crds, S); - s(C, l / 2 - i), + s(C, d / 2 - i), C[0] *= n, C[1] *= n, C[2] *= n, @@ -22944,11 +26825,11 @@ C[5] = r, c(C, w.crds), c(t.ctm, w.crds), - d(t.pth, w) + l(t.pth, w) } , et = { pth: e, - ctm: [x * M, x * B, -P * B, P * M, V, H] + ctm: [x * N, x * B, -P * B, P * N, H, V] }; tt(et, 0, 0, 1, J, J + $, 0 == O), i = _, @@ -22979,7 +26860,7 @@ } )).then((function(t) { console.log("HB ready"); - var n, o, a, s, c, u, d, l, f = t["instance"]["exports"], h = f["memory"]; + var n, o, a, s, c, u, l, d, f = t["instance"]["exports"], h = f["memory"]; i["U"]["shapeHB"] = function() { var t, e = function(t) { for (var e = f["hb_buffer_get_length"](t), r = [], n = f["hb_buffer_get_glyph_infos"](t, 0) >>> 2, i = f["hb_buffer_get_glyph_positions"](t, 0) >>> 2, s = 0; s < e; ++s) { @@ -22999,21 +26880,21 @@ return function(i, p, m) { var b = i["_data"] , g = i["name"]["postScriptName"] - , y = h.buffer.byteLength - , v = 2 * b.length + 16 * p.length + 4e6; - if (y < v && h["grow"](4 + (v - y >>> 16)), + , v = h.buffer.byteLength + , y = 2 * b.length + 16 * p.length + 4e6; + if (v < y && h["grow"](4 + (y - v >>> 16)), n = new Uint8Array(h.buffer), o = new Uint32Array(h.buffer), a = new Int32Array(h.buffer), s != g && (null != c && (f["hb_blob_destroy"](c), f["free"](u), - f["hb_face_destroy"](d), - f["hb_font_destroy"](l)), + f["hb_face_destroy"](l), + f["hb_font_destroy"](d)), u = f["malloc"](b.byteLength), n.set(b, u), c = f["hb_blob_create"](u, b.byteLength, 2, 0, 0), - d = f["hb_face_create"](c, 0), - l = f["hb_font_create"](d), + l = f["hb_face_create"](c, 0), + d = f["hb_font_create"](l), s = g), null != window["TextEncoder"]) { null == t && (t = new window["TextEncoder"]("utf8")); @@ -23026,7 +26907,7 @@ f["free"](_), f["hb_buffer_set_direction"](S, m ? 4 : 5), f["hb_buffer_guess_segment_properties"](S), - f["hb_shape"](l, S, 0, 0); + f["hb_shape"](d, S, 0, 0); var A = e(S); f["hb_buffer_destroy"](S); var I = A.slice(0); @@ -23092,10 +26973,10 @@ r.push(e[i - 1]); return r } - function d(t) { + function l(t) { return [].slice.call(t) } - function l() { + function d() { throw new Error("This cannot be instantiated") } function f(t, e) { @@ -23107,7 +26988,7 @@ } } function h(t) { - var o, a, s = d(arguments), c = []; + var o, a, s = l(arguments), c = []; return this.___get = function(t, e) { return c[a * (t - 1) + e - 1] } @@ -23146,34 +27027,34 @@ throw new f(f.ErrorCodes.INVALID_PARAMETERS,"Elements must be numbers"); c = s[0]; var u = s[1] - , d = s[2]; - if (e(u) || e(d)) - !e(u) && r(d) ? u = c.length / d : r(u) && !e(d) && (d = c.length / u); + , l = s[2]; + if (e(u) || e(l)) + !e(u) && r(l) ? u = c.length / l : r(u) && !e(l) && (l = c.length / u); else { var h = Math.sqrt(c.length); u = h, - d = h + l = h } - if (!r(u) || !r(d)) + if (!r(u) || !r(l)) throw new f(f.ErrorCodes.OUT_OF_BOUNDS,"Array must represent square matrix if no size is given"); o = u, - a = d + a = l } else if (1 === s.length && r(s[0])) o = s[0], a = s[0], - c = l.repeat(o * a, 0); + c = d.repeat(o * a, 0); else { if (2 !== s.length || !r(s[0]) || !r(s[1])) throw new f(f.ErrorCodes.INVALID_PARAMETERS,"Parameters must match a supported signature"); o = s[0], a = s[1], - c = l.repeat(o * a, 0) + c = d.repeat(o * a, 0) } }(), this } function p(t) { - var e, i, o = d(arguments), a = [], s = [], c = []; + var e, i, o = l(arguments), a = [], s = [], c = []; return this.___get = function(t, e) { for (var r = c[t - 1]; r < c[t]; r++) if (s[r] === e) @@ -23233,7 +27114,7 @@ i = o[1] || e, a = [], s = [], - c = l.repeat(e + 1, 0); + c = d.repeat(e + 1, 0); else { if (!(5 === o.length && r(o[0]) && r(o[1]) && n(o[2]) && n(o[3]) && n(o[4]))) { if (1 === o.length && o[0]instanceof b) @@ -23258,7 +27139,7 @@ this } function m(t) { - d(arguments); + l(arguments); var e, r = []; return this.___get = function(t, n) { return r[e ? t - 1 : n - 1] @@ -23316,7 +27197,7 @@ return t.row != e.row ? t.row < e.row ? -1 : 1 : t.column != e.column ? t.column < e.column ? -1 : 1 : 0 } )); - for (var e = [], r = l.repeat(t + 1, 0), o = [], a = 1, s = 0; s < i.length; s++) { + for (var e = [], r = d.repeat(t + 1, 0), o = [], a = 1, s = 0; s < i.length; s++) { var c = i[s]; if (e[s] = c.value, o[s] = c.column, @@ -23425,7 +27306,7 @@ } , h.prototype.isTriangular = function(t) { - if (t = a(t, l.options.isTriangular.mode), + if (t = a(t, d.options.isTriangular.mode), !this.isSquare()) throw new f(f.ErrorCodes.DIMENSION_MISMATCH,"Matrix must be square"); switch (t.toLowerCase()) { @@ -23480,7 +27361,7 @@ var e = this.rows() , r = this.columns(); if (arguments.length > 1) { - var n = d(arguments); + var n = l(arguments); return this.add.apply(this.add(n.shift()), n) } if (!this.isSameSizeAs(t)) @@ -23499,7 +27380,7 @@ var e = this.rows() , r = this.columns(); if (arguments.length > 1) { - var n = d(arguments); + var n = l(arguments); return this.subtract.apply(this.subtract(n.shift()), n) } if (!this.isSameSizeAs(t)) @@ -23533,8 +27414,8 @@ throw new f(f.ErrorCodes.DIMENSION_MISMATCH,"Inner dimensions must match"); for (var i = new h(e,n), o = 1; o <= e; o++) for (var a = 1; a <= n; a++) { - for (var s = 0, c = this.__getRow(o), u = t.__getColumn(a), d = 0; d < r; d++) - s += c[d] * u[d]; + for (var s = 0, c = this.__getRow(o), u = t.__getColumn(a), l = 0; l < r; l++) + s += c[l] * u[l]; i.___set(o, a, s) } return i @@ -23555,32 +27436,32 @@ } , h.prototype.decomposeLU = function() { - var t, e, r, n, i, o, a, s, c, u, d = 0, l = this.copy(), h = this.rows(), p = this.columns(); + var t, e, r, n, i, o, a, s, c, u, l = 0, d = this.copy(), h = this.rows(), p = this.columns(); for (r = 1; r <= h; r++) { for (a = 0, s = -1, - i = l.__getColumn(r), + i = d.__getColumn(r), t = r; t <= h; t++) c = Math.abs(i[t - 1]), c >= s && (a = t, s = c); if (0 === i[a - 1]) throw new f(f.ErrorCodes.MATRIX_IS_SINGULAR); - for (a !== r && (u = l.__getRow(a), - l.__setRow(a, l.__getRow(r)), - l.__setRow(r, u), - d++), - n = l.__getRow(r), + for (a !== r && (u = d.__getRow(a), + d.__setRow(a, d.__getRow(r)), + d.__setRow(r, u), + l++), + n = d.__getRow(r), t = r + 1; t <= h; t++) { - for (o = l.__getRow(t), + for (o = d.__getRow(t), e = r; e < p; e++) o[e] = o[e] - n[e] * o[r - 1] / n[r - 1]; o[r - 1] = 0, - l.__setRow(t, o) + d.__setRow(t, o) } } - return l.swappedRows = d, - l + return d.swappedRows = l, + d } , h.prototype.det = function() { @@ -23632,7 +27513,7 @@ r[o] = t[o] / t[i - 1]; u.__setRow(i, r) } - } catch (d) { + } catch (l) { throw new f(f.ErrorCodes.MATRIX_IS_SINGULAR) } return u.submatrix(1, s, this.columns() + 1, c) @@ -23664,7 +27545,7 @@ } , h.prototype.roundTo = function(t) { - t = o(t, l.options.roundTo.digits); + t = o(t, d.options.roundTo.digits); var e = Math.pow(10, t); return this.fun((function(t) { return Math.round(t * e) / e @@ -23709,8 +27590,8 @@ } , h.prototype.stringify = function(t, e) { - t = a(t, l.options.stringify.rowSeparator), - e = a(e, l.options.stringify.columnSeparator); + t = a(t, d.options.stringify.rowSeparator), + e = a(e, d.options.stringify.columnSeparator); for (var r, n = [], i = this.rows(), o = 1; o <= i; o++) r = this.__getRow(o), n.push(r.join(e)); @@ -23732,7 +27613,7 @@ } , h.prototype.fun = function(t, e) { - if (e = e || l.filters.all, + if (e = e || d.filters.all, "function" !== typeof t) throw new f(f.ErrorCodes.INVALID_PARAMETERS,"Applicator must be a function"); if ("function" !== typeof e) @@ -23748,11 +27629,11 @@ } , h.prototype.spfun = function(t) { - return this.fun(t, l.filters.nonZero) + return this.fun(t, d.filters.nonZero) } , h.prototype.pw_exp = function() { - return this.fun(l.applicators.exp, null) + return this.fun(d.applicators.exp, null) } , h.prototype.pw_pow = function(t) { @@ -23763,7 +27644,7 @@ } , h.prototype.norm = function(t, e) { - switch (t = a(t, l.options.norm.which), + switch (t = a(t, d.options.norm.which), e = e || {}, t.toLowerCase()) { case "p": @@ -23834,7 +27715,7 @@ } , h.prototype.toArray = function() { - return d(this.___getElements()) + return l(this.___getElements()) } , h.zeros = function(t, e) { @@ -23866,14 +27747,14 @@ , h.random = function(t, e, r, n, i) { e = o(e, t), - r = o(r, l.options.random.minVal), - n = o(n, l.options.random.maxVal), - i = s(i, l.options.random.onlyInteger); - for (var a, c = new h(t,e), u = n - r + (i ? 1 : 0), d = 1; d <= t; d++) + r = o(r, d.options.random.minVal), + n = o(n, d.options.random.maxVal), + i = s(i, d.options.random.onlyInteger); + for (var a, c = new h(t,e), u = n - r + (i ? 1 : 0), l = 1; l <= t; l++) for (var f = 1; f <= e; f++) a = r + Math.random() * u, i && (a |= 0), - c.___set(d, f, a); + c.___set(l, f, a); return c } , @@ -23898,7 +27779,7 @@ } , p.prototype.__getRow = function(t) { - for (var e = l.repeat(this.columns(), 0), r = this.___getRowPointer(), n = this.___getColumnIndicator(), i = this.___getElements(), o = r[t - 1]; o < r[t]; o++) + for (var e = d.repeat(this.columns(), 0), r = this.___getRowPointer(), n = this.___getColumnIndicator(), i = this.___getElements(), o = r[t - 1]; o < r[t]; o++) e[n[o] - 1] = i[o]; return e } @@ -23982,7 +27863,7 @@ var e = this.rows() , r = this.columns(); if (arguments.length > 1) { - var n = d(arguments); + var n = l(arguments); return this.add.apply(this.add(n.shift()), n) } if (!this.isSameSizeAs(t)) @@ -24000,7 +27881,7 @@ var e = this.rows() , r = this.columns(); if (arguments.length > 1) { - var n = d(arguments); + var n = l(arguments); return this.subtract.apply(this.subtract(n.shift()), n) } if (!this.isSameSizeAs(t)) @@ -24023,13 +27904,13 @@ return new p(r,n); if (1 === t) return this; - for (var i = d(this.___getElements()), o = 0; o < i.length; o++) + for (var i = l(this.___getElements()), o = 0; o < i.length; o++) i[o] *= t; - return new p(r,n,i,d(this.___getColumnIndicator()),d(this.___getRowPointer())) + return new p(r,n,i,l(this.___getColumnIndicator()),l(this.___getRowPointer())) } , p.prototype.copy = function() { - return new p(this.rows(),this.columns(),d(this.___getElements()),d(this.___getColumnIndicator()),d(this.___getRowPointer())) + return new p(this.rows(),this.columns(),l(this.___getElements()),l(this.___getColumnIndicator()),l(this.___getRowPointer())) } , p.prototype.equals = function(t) { @@ -24045,8 +27926,8 @@ } , p.prototype.stringify = function(t, e) { - t = a(t, l.options.stringify.rowSeparator), - e = a(e, l.options.stringify.columnSeparator); + t = a(t, d.options.stringify.rowSeparator), + e = a(e, d.options.stringify.columnSeparator); for (var r, n = [], i = this.rows(), o = this.columns(), s = 1; s <= i; s++) { r = []; for (var c = 1; c <= o; c++) @@ -24066,9 +27947,9 @@ } , p.eye = function(t) { - var e = l.repeat(t, 1) - , r = l.linspace(1, t) - , n = l.linspace(0, t); + var e = d.repeat(t, 1) + , r = d.linspace(1, t) + , n = d.linspace(0, t); return new p(t,t,e,r,n) } , @@ -24080,7 +27961,7 @@ return r.build() } , - l.options = { + d.options = { stringify: { rowSeparator: "\r\n", columnSeparator: "\t" @@ -24100,20 +27981,20 @@ onlyInteger: !0 } }, - l.linspace = function(t, e, r) { + d.linspace = function(t, e, r) { r = o(r, 1); for (var n = [], i = t; i <= e; i += r) n.push(i); return n } , - l.repeat = function(t, e) { + d.repeat = function(t, e) { for (var r = [], n = 1; n <= t; n++) r[n - 1] = e; return r } , - l.filters = { + d.filters = { all: function() { return !0 }, @@ -24124,7 +28005,7 @@ return e === r } }, - l.applicators = { + d.applicators = { exp: function(t) { return Math.exp(t) }, @@ -24159,7 +28040,7 @@ t.Matrix = h, t.SparseMatrix = p, t.Vector = m, - t.MatrixUtils = l, + t.MatrixUtils = d, t.SparseBuilder = b } )(window); @@ -24226,19 +28107,19 @@ function u(t, e) { if (t) { if ("string" === typeof t) - return d(t, e); + return l(t, e); var r = Object.prototype.toString.call(t).slice(8, -1); return "Object" === r && t.constructor && (r = t.constructor.name), - "Map" === r || "Set" === r ? Array.from(t) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? d(t, e) : void 0 + "Map" === r || "Set" === r ? Array.from(t) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? l(t, e) : void 0 } } - function d(t, e) { + function l(t, e) { (null == e || e > t.length) && (e = t.length); for (var r = 0, n = new Array(e); r < e; r++) n[r] = t[r]; return n } - var l = function(t, e, r) { + var d = function(t, e, r) { var i, o = r[Object.keys(r)[0]]["json"]["ofd:Area"]; if (o) { var a = o["ofd:PhysicalBox"]; @@ -24256,14 +28137,14 @@ } else { var u = e["ofd:CommonData"]["ofd:PageArea"]; "undefined" === typeof u && (u = e["ofd:CommonData"]["PageArea"]); - var d = u["ofd:PhysicalBox"]; - if ("undefined" === typeof d && (d = u["PhysicalBox"]), - d) - i = d; + var l = u["ofd:PhysicalBox"]; + if ("undefined" === typeof l && (l = u["PhysicalBox"]), + l) + i = l; else { - var l = u["ofd:ApplicationBox"]; - if (l) - i = l; + var d = u["ofd:ApplicationBox"]; + if (d) + i = d; else { var f = u["ofd:ContentBox"]; f && (i = f) @@ -24272,8 +28153,8 @@ } var h = i.split(" ") , p = ((t - 30) / parseFloat(h[2])).toFixed(1) / 96 * 25.4; - return Object(n["m"])(p), - Object(n["n"])(p), + return Object(n["n"])(p), + Object(n["o"])(p), i = Object(n["k"])(i), i = Object(n["d"])(i), i @@ -24301,12 +28182,12 @@ u) r = u; else { - var d = c["ofd:ApplicationBox"]; - if (d) - r = d; + var l = c["ofd:ApplicationBox"]; + if (l) + r = l; else { - var l = c["ofd:ContentBox"]; - l && (r = l) + var d = c["ofd:ContentBox"]; + d && (r = d) } } } @@ -24316,18 +28197,18 @@ } , h = function(t, e, r, i, o, a, s) { var u = Object.keys(e)[0] - , d = e[u]["json"]["ofd:Template"]; - if (d) { - var l = []; - if (r[d["@_TemplateID"]]) { - var f = r[d["@_TemplateID"]]["json"]["ofd:Content"]["ofd:Layer"]; - l = l.concat(f) + , l = e[u]["json"]["ofd:Template"]; + if (l) { + var d = []; + if (r[l["@_TemplateID"]]) { + var f = r[l["@_TemplateID"]]["json"]["ofd:Content"]["ofd:Layer"]; + d = d.concat(f) } - var h, g = c(l); + var h, g = c(d); try { for (g.s(); !(h = g.n()).done; ) { - var y = h.value; - y && b(t, i, o, a, s, y, !1, null, null, null, !0) + var v = h.value; + v && b(t, i, o, a, s, v, !1, null, null, null, !0) } } catch (B) { g.e(B) @@ -24361,7 +28242,7 @@ else if ("png" === x.type) { var P = Object(n["d"])(x.obj.boundary) , k = (Array.isArray(x.stamp.stampAnnot) ? x.stamp.stampAnnot[0]["@_ID"] : x.stamp.stampAnnot["@_ID"]) + E - , D = v(t.style.width, t.style.height, a, x.obj.img, P, x.obj.clip, !0, x.stamp.sealObj.SES_Signature, x.stamp.signedInfo, k); + , D = y(t.style.width, t.style.height, a, x.obj.img, P, x.obj.clip, !0, x.stamp.sealObj.SES_Signature, x.stamp.signedInfo, k); t.appendChild(D) } } @@ -24372,16 +28253,16 @@ } } if (e[u].annotation) { - var O, R = e[u].json.pfIndex, N = c(e[u].annotation); + var O, R = e[u].json.pfIndex, M = c(e[u].annotation); try { - for (N.s(); !(O = N.n()).done; ) { - var M = O.value; - p(t, M, i, o, a, s, R) + for (M.s(); !(O = M.n()).done; ) { + var N = O.value; + p(t, N, i, o, a, s, R) } } catch (B) { - N.e(B) + M.e(B) } finally { - N.f() + M.f() } } } @@ -24389,37 +28270,45 @@ var c = document.createElement("div"); if (c.setAttribute("style", "overflow: hidden;z-index:0;position:relative;"), "undefined" != typeof e["appearance"]) { - var u = e["appearance"]["@_Boundary"]; - if (u) { - var d = Object(n["d"])(Object(n["k"])(u)); - c.setAttribute("style", "overflow: hidden;z-index:0;position:absolute; left: ".concat(d.x, "px; top: ").concat(d.y, "px; width: ").concat(d.w, "px; height: ").concat(d.h, "px")) + var u = e["appearance"]["@_Boundary"] + , l = 0; + if ("undefined" != typeof e["@_ID"] && (l = e["@_ID"]), + u) { + var d = e["type"]; + if ("Watermark" === d || "Stamp" === d) { + var f = Object(n["d"])(Object(n["k"])(u)); + c.setAttribute("style", "overflow: hidden;z-index:".concat(1e3 + l + s, ";position:absolute; left: ").concat(f.x, "px; top: ").concat(f.y, "px; width: ").concat(f.w, "px; height: ").concat(f.h, "px")) + } else { + var h = Object(n["d"])(Object(n["k"])(u)); + c.setAttribute("style", "overflow: hidden;z-index:0;position:absolute; left: ".concat(h.x, "px; top: ").concat(h.y, "px; width: ").concat(h.w, "px; height: ").concat(h.h, "px")) + } } else - c.setAttribute("style", "overflow: visible;z-index:".concat(e["@_ID"] + s, ";position:absolute; left: 0px; top: 0px; width: 1px; height: 1px")); - var l = e["appearance"]; - b(c, r, i, o, a, l, !1), + c.setAttribute("style", "overflow: visible;z-index:".concat(l + s, ";position:absolute; left: 0px; top: 0px; width: 1px; height: 1px")); + var p = e["appearance"]; + b(c, r, i, o, a, p, !1), t.appendChild(c) } } - , m = function(t, e, r, i, o, a, s, u, d, l, f, h) { + , m = function(t, e, r, i, o, a, s, u, l, d, f, h) { var p, m = c(e); try { for (m.s(); !(p = m.n()).done; ) { var g = p.value - , y = Object.keys(g)[0] - , v = { + , v = Object.keys(g)[0] + , y = { x: 0, y: 0, w: 0, h: 0 }; - i && o && (v = o.boundary); - var S = Object(n["d"])(v) + i && o && (y = o.boundary); + var S = Object(n["d"])(y) , w = document.createElement("div"); w.setAttribute("name", "seal_img_div"), w.setAttribute("style", "z-index:".concat(h + 1e4, ";cursor: pointer; position:relative; left: ").concat(S.x, "px; top: ").concat(S.y, "px; width: ").concat(S.w, "px; height: ").concat(S.h, "px")), - w.setAttribute("data-ses-signature", "".concat(JSON.stringify(l))), + w.setAttribute("data-ses-signature", "".concat(JSON.stringify(d))), w.setAttribute("data-signed-info", "".concat(JSON.stringify(f))); - var C = g[y]["json"]["ofd:Template"]; + var C = g[v]["json"]["ofd:Template"]; if (C) { var _ = r[C["@_TemplateID"]]["json"]["ofd:Content"]["ofd:Layer"] , A = []; @@ -24428,7 +28317,7 @@ try { for (E.s(); !(I = E.n()).done; ) { var T = I.value; - T && b(w, a, s, u, d, T, i) + T && b(w, a, s, u, l, T, i) } } catch (R) { E.e(R) @@ -24436,14 +28325,14 @@ E.f() } } - var x = g[y]["json"]["ofd:Content"]["ofd:Layer"] + var x = g[v]["json"]["ofd:Content"]["ofd:Layer"] , P = []; P = P.concat(x); var k, D = c(P); try { for (D.s(); !(k = D.n()).done; ) { var O = k.value; - O && b(w, a, s, u, d, O, i) + O && b(w, a, s, u, l, O, i) } } catch (R) { D.e(R) @@ -24458,21 +28347,21 @@ m.f() } } - , b = function t(e, r, i, o, a, s, u, d, l, f, h) { + , b = function t(e, r, i, o, a, s, u, l, d, f, h) { var p = null , m = null , b = Object(n["e"])(.353) - , y = s["@_DrawParam"]; - if (y && Object.keys(i).length > 0 && i[y]) { - if (i[y]["relative"]) { - var v = i[y]["relative"]; - i[v]["FillColor"] && (p = Object(n["i"])(i[v]["FillColor"])), - i[v]["StrokeColor"] && (m = Object(n["i"])(i[v]["StrokeColor"])), - i[v]["LineWidth"] && (b = Object(n["e"])(i[v]["LineWidth"])) + , v = s["@_DrawParam"]; + if (v && Object.keys(i).length > 0 && i[v]) { + if (i[v]["relative"]) { + var y = i[v]["relative"]; + i[y]["FillColor"] && (p = Object(n["i"])(i[y]["FillColor"])), + i[y]["StrokeColor"] && (m = Object(n["i"])(i[y]["StrokeColor"])), + i[y]["LineWidth"] && (b = Object(n["e"])(i[y]["LineWidth"])) } - i[y]["FillColor"] && (p = Object(n["i"])(i[y]["FillColor"])), - i[y]["StrokeColor"] && (m = Object(n["i"])(i[y]["StrokeColor"])), - i[y]["LineWidth"] && (b = Object(n["e"])(i[y]["LineWidth"])) + i[v]["FillColor"] && (p = Object(n["i"])(i[v]["FillColor"])), + i[v]["StrokeColor"] && (m = Object(n["i"])(i[v]["StrokeColor"])), + i[v]["LineWidth"] && (b = Object(n["e"])(i[v]["LineWidth"])) } var C = s["ofd:ImageObject"] , _ = []; @@ -24485,7 +28374,7 @@ var T = E["@_ResourceID"]; if (null === o[T] || void 0 === o[T]) continue; - var x = g(e.style.width, e.style.height, o, E, u, l, h); + var x = g(e.style.width, e.style.height, o, E, u, d, f, h); e.appendChild(x) } } @@ -24502,8 +28391,8 @@ for (O.s(); !(D = O.n()).done; ) { var R = D.value; if (R) { - var N = w(i, R, p, m, b, u, d, l, f); - e.appendChild(N) + var M = w(i, R, p, m, b, u, l, d, f, e, o); + e.appendChild(M) } } } catch (ot) { @@ -24511,15 +28400,15 @@ } finally { O.f() } - var M = s["ofd:TextObject"] + var N = s["ofd:TextObject"] , B = []; - B = B.concat(M); + B = B.concat(N); var F, j = c(B); try { for (j.s(); !(F = j.n()).done; ) { - var K = F.value; - if (K) { - var L = S(r, K, p, m, i); + var U = F.value; + if (U) { + var L = S(r, U, p, m, i); e.appendChild(L) } } @@ -24528,37 +28417,37 @@ } finally { j.f() } - var U = s["ofd:CompositeObject"] + var K = s["ofd:CompositeObject"] , X = []; - X = X.concat(U); + X = X.concat(K); var z, G = c(X); try { for (G.s(); !(z = G.n()).done; ) { - var q = z.value; - if (q) { - var W, V = c(a); + var W = z.value; + if (W) { + var q, H = c(a); try { - for (V.s(); !(W = V.n()).done; ) { - var H = W.value; - if (H["@_ID"] === q["@_ResourceID"]) { - var Y = q["@_Alpha"] - , Z = q["@_Boundary"] - , Q = q["@_CTM"]; - if (Z) { - var J = Object(n["d"])(Object(n["k"])(Z)) + for (H.s(); !(q = H.n()).done; ) { + var V = q.value; + if (V["@_ID"] === W["@_ResourceID"]) { + var Z = W["@_Alpha"] + , Q = W["@_Boundary"] + , Y = W["@_CTM"]; + if (Q) { + var J = Object(n["d"])(Object(n["k"])(Q)) , $ = document.createElement("div"); $.setAttribute("style", "position:absolute; left: ".concat(J.x, "px; top: ").concat(J.y, "px; width: ").concat(J.w, "px; height: ").concat(J.h, "px")), e.appendChild($), - t($, r, i, o, a, H["ofd:Content"], !1, Y, null, Q) + t($, r, i, o, a, V["ofd:Content"], !1, Z, null, Y) } else - t(e, r, i, o, a, H["ofd:Content"], !1, Y, Z, Q); + t(e, r, i, o, a, V["ofd:Content"], !1, Z, Q, Y); break } } } catch (ot) { - V.e(ot) + H.e(ot) } finally { - V.f() + H.f() } } } @@ -24582,25 +28471,34 @@ nt.f() } } - , g = function(t, e, r, i, o, a, s) { - var c = Object(n["k"])(i["@_Boundary"]); - c = Object(n["d"])(c); - var u = i["@_ResourceID"]; - if ("gbig2" === r[u].format) { - var d = r[u].img - , l = r[u].width - , f = r[u].height - , h = window.navigator.userAgent; - if (h.indexOf("MSIE") > 0 || h.indexOf("Trident") > 0) { - var p = document.createElement("div"); - return p + , g = function(t, e, r, i, o, a, s, c) { + var u = Object(n["k"])(i["@_Boundary"]); + u = Object(n["d"])(u); + var l = i["@_ResourceID"]; + if ("gbig2" === r[l].format) { + var d = r[l].img + , f = r[l].width + , h = r[l].height + , p = window.navigator.userAgent; + if (p.indexOf("MSIE") > 0 || p.indexOf("Trident") > 0) { + var m = document.createElement("div"); + return m } - return y(d, l, f, c, i["@_ID"]) + return v(d, f, h, u, i["@_ID"]) } - var m = i["@_CTM"]; - return v(t, e, r, r[u].img, c, !1, o, null, null, i["@_ID"], m, a, s, i) + var b = i["@_CTM"]; + if (s) { + var g = _(Object(n["j"])(b)) + , S = _(Object(n["j"])(s)); + S = E(S, -S.getRow(3)[0], -S.getRow(3)[1]); + var w = S.multiply(g) + , C = A(w).join(" "); + return y(t, e, r, r[l].img, u, !1, o, null, null, i["@_ID"], C, a, i, c) + } + var I = b; + return y(t, e, r, r[l].img, u, !1, o, null, null, i["@_ID"], I, a, i, c) } - , y = function(t, e, r, n, i) { + , v = function(t, e, r, n, i) { for (var o = new Uint8ClampedArray(4 * e * r), a = 0; a < t.length; a++) o[4 * a] = t[a], o[4 * a + 1] = t[a], @@ -24615,65 +28513,55 @@ u.putImageData(c, 0, 0), s.setAttribute("style", "left: ".concat(n.x, "px; top: ").concat(n.y, "px; width: ").concat(n.w, "px; height: ").concat(n.h, "px;z-index: ").concat(i)), s.style.position = "absolute" - } catch (d) { - console.log(d) + } catch (l) { + console.log(l) } return s } - , v = function(t, e, r, i, o, a, c, u, d, l, f, h, p, m) { - var b = document.createElement("div"); - c && (b.setAttribute("name", "seal_img_div"), - b.setAttribute("data-ses-signature", "".concat(JSON.stringify(u))), - b.setAttribute("data-signed-info", "".concat(JSON.stringify(d)))); - var g = document.createElement("img"); - if ("object" === s(i) ? g.src = i.img : g.src = i, - c && (g.setAttribute("width", "100%"), - g.setAttribute("height", "100%"), - g.setAttribute("style", "opacity:0.85")), - "undefined" != typeof m) { - var y = m["@_Alpha"]; - "undefined" != typeof y && g.setAttribute("style", "opacity:".concat(y / 255, ";")) + , y = function(t, e, r, i, o, a, c, u, l, d, f, h, p, m) { + var b = parseFloat(t.replace("px", "")) + , g = parseFloat(e.replace("px", "")) + , v = o.w > b ? b : o.w + , y = o.h > g ? g : o.h + , S = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + c && (S.setAttribute("name", "seal_img_div"), + S.setAttribute("data-ses-signature", "".concat(JSON.stringify(u))), + S.setAttribute("data-signed-info", "".concat(JSON.stringify(l)))); + var w = document.createElementNS("http://www.w3.org/2000/svg", "image") + , C = o.x + , _ = o.y; + C < 0 && w.setAttribute("x", "".concat(C, "px")), + _ < 0 && w.setAttribute("y", "".concat(_, "px")); + var A = v + , I = y; + if ("object" === s(i) ? (w.setAttribute("xlink:href", i.img), + w.href.baseVal = i.img, + A = i.width, + I = i.height) : (w.setAttribute("xlink:href", i), + w.href.baseVal = i), + w.setAttribute("width", "".concat(A, "px")), + w.setAttribute("height", "".concat(I, "px")), + f) { + var E = Object(n["j"])(f); + w.setAttribute("transform", "matrix(".concat(Object(n["e"])(E[0]) / A, " ").concat(Object(n["e"])(E[1]) / A, " ").concat(Object(n["e"])(E[2]) / I, " ").concat(Object(n["e"])(E[3]) / I, " ").concat(Object(n["e"])(E[4]), " ").concat(Object(n["e"])(E[5]), ")")), + w.setAttribute("preserveAspectRatio", "none") } - var v = 0 - , S = 0 - , w = 0 - , C = 0 - , _ = ""; - if (f) { - var A = Object(n["j"])(f); - if (g.setAttribute("width", "".concat(Object(n["e"])(A[0]), "px")), - g.setAttribute("height", "".concat(Object(n["e"])(A[3]), "px")), - w = Object(n["e"])(A[0]), - C = Object(n["e"])(A[3]), - v = Object(n["e"])(A[4]), - S = Object(n["e"])(A[5]), - 0 == A[1] && 0 == A[2] && A[0] * A[3] < 0 && (g.setAttribute("style", "transform:rotateX(180deg);"), - S += Object(n["e"])(A[3])), - 0 != A[1] && 0 != A[2] && A[1] * A[2] < 0) { - var I = -1 * Math.atan2(Math.sqrt(-1 * A[1] * A[2]), Math.sqrt(A[0] * A[3])) * 180 / Math.PI; - _ = "transform:rotate(".concat(I, "deg);") - } + if (h && (w.setAttribute("width", "100%"), + w.setAttribute("height", "100%"), + w.removeAttribute("transform")), + "undefined" != typeof p) { + var T = p["@_Alpha"]; + "undefined" != typeof T && w.setAttribute("style", "opacity:".concat(T / 255, ";")) } - h && (g.setAttribute("width", "100%"), - g.setAttribute("height", "100%"), - g.removeAttribute("transform")), - b.appendChild(g); - var E = parseFloat(t.replace("px", "")) - , T = parseFloat(e.replace("px", "")) - , x = o.w > E ? E : o.w - , P = o.h > T ? T : o.h - , k = ""; - a && (a = Object(n["d"])(a), - k = "clip: rect(".concat(a.y, "px, ").concat(a.w + a.x, "px, ").concat(a.h + a.y, "px, ").concat(a.x, "px)")); - var D = 0 - , O = 0; - return k ? (D = o.x, - O = o.y) : (D = o.x + v < 0 ? 0 : o.x + v, - O = o.y + S < 0 ? 0 : o.y + S), - w > 0 && (x = w, - P = C), - p ? b.setAttribute("style", "cursor: pointer; overflow: hidden; position: absolute; left: ".concat(D, "px; top: ").concat(O, "px; width: ").concat(x, "px; height: ").concat(P, "px; ").concat(k, ";")) : b.setAttribute("style", "cursor: pointer; overflow: hidden; position: absolute; left: ".concat(D, "px; top: ").concat(O, "px; width: ").concat(x, "px; height: ").concat(P, "px; ").concat(k, ";z-index: ").concat(l, "; ").concat(_)), - b + c && (w.setAttribute("width", "100%"), + w.setAttribute("height", "100%"), + w.setAttribute("style", "opacity:0.85")), + S.appendChild(w); + var x = ""; + return a && (a = Object(n["d"])(a), + x = "clip: rect(".concat(a.y, "px, ").concat(a.w + a.x, "px, ").concat(a.h + a.y, "px, ").concat(a.x, "px)")), + S.setAttribute("style", "cursor: pointer; overflow: hidden; position: absolute; left: ".concat(x ? o.x : o.x < 0 ? 0 : o.x, "px; top: ").concat(x ? o.y : o.y < 0 ? 0 : o.y, "px; width: ").concat(v, "px; height: ").concat(y, "px; ").concat(x, ";z-index: ").concat(d)), + S } , S = function(t, e, r, i, a) { var s = 1 @@ -24681,8 +28569,8 @@ u = Object(n["d"])(u); u.x, u.y; - var d = e["@_CTM"] - , l = e["@_HScale"] + var l = e["@_CTM"] + , d = e["@_HScale"] , f = e["@_Font"] , h = e["@_Weight"] , p = ""; @@ -24691,365 +28579,415 @@ , b = ""; "true" == m && (b = "font-style:italic;"); var g = e["@_Alpha"] - , y = ""; - "undefined" != typeof g && (y = "fill-opacity:".concat(g / 255, ";")); - var v = Object(n["e"])(parseFloat(e["@_Size"])) - , S = []; - S = S.concat(e["ofd:TextCode"]); - var w = Object(n["b"])(S) - , _ = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - _.setAttribute("version", "1.1"); - var A = e["ofd:FillColor"] - , I = !1 - , E = e["@_DrawParam"]; - if (E && Object.keys(a).length > 0 && a[E] && a[E]["FillColor"] && (r = Object(n["i"])(a[E]["FillColor"])), - A) { - A["@_Value"] && (r = Object(n["i"])(A["@_Value"])); - var T = A["@_Alpha"]; - T && (s = T > 1 ? T / 255 : T); - var x = A["ofd:AxialShd"]; - if (x) { - I = !0; - var P = document.createElement("linearGradient"); - P.setAttribute("id", "".concat(e["@_ID"])), - P.setAttribute("x1", "0%"), - P.setAttribute("y1", "0%"), - P.setAttribute("x2", "100%"), - P.setAttribute("y2", "100%"); - var k, D = c(x["ofd:Segment"]); + , v = ""; + "undefined" != typeof g && (v = "fill-opacity:".concat(g / 255, ";")); + var y = e["@_Fill"] + , S = !0; + "undefined" != typeof y && "false" == y && (S = !1); + var w = Object(n["e"])(parseFloat(e["@_Size"])) + , _ = []; + _ = _.concat(e["ofd:TextCode"]); + var A = Object(n["b"])(_) + , I = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + I.setAttribute("version", "1.1"); + var E = e["ofd:FillColor"] + , T = !1 + , x = e["@_DrawParam"]; + if (x && Object.keys(a).length > 0 && a[x] && a[x]["FillColor"] && (r = Object(n["i"])(a[x]["FillColor"])), + E && S) { + E["@_Value"] && (r = Object(n["i"])(E["@_Value"])); + var P = E["@_Alpha"]; + P && (s = P > 1 ? P / 255 : P); + var k = E["ofd:AxialShd"]; + if (k) { + T = !0; + var D = document.createElement("linearGradient"); + D.setAttribute("id", "".concat(e["@_ID"])), + D.setAttribute("x1", "0%"), + D.setAttribute("y1", "0%"), + D.setAttribute("x2", "100%"), + D.setAttribute("y2", "100%"); + var O, R = c(k["ofd:Segment"]); try { - for (D.s(); !(k = D.n()).done; ) { - var O = k.value; - if (O) { - var R = document.createElement("stop"); - R.setAttribute("offset", "".concat(100 * O["@_Position"], "%")), - R.setAttribute("style", "stop-color:".concat(Object(n["i"])(O["ofd:Color"]["@_Value"]), ";stop-opacity:1")), - P.appendChild(R), - r = Object(n["i"])(O["ofd:Color"]["@_Value"]) + for (R.s(); !(O = R.n()).done; ) { + var M = O.value; + if (M) { + var N = document.createElement("stop"); + N.setAttribute("offset", "".concat(100 * M["@_Position"], "%")), + N.setAttribute("style", "stop-color:".concat(Object(n["i"])(M["ofd:Color"]["@_Value"]), ";stop-opacity:1")), + D.appendChild(N), + r = Object(n["i"])(M["ofd:Color"]["@_Value"]) } } - } catch (Rt) { - D.e(Rt) + } catch (Lt) { + R.e(Lt) } finally { - D.f() + R.f() } - _.appendChild(P) + I.appendChild(D) } } - var N = e["@_CharDirection"] - , M = ""; - "90" === N ? M = " rotate(".concat(N, ") translate(").concat(v, ", ").concat(v, ")") : "180" === N ? M = " rotate(".concat(N, ") translate(-").concat(2 * v, ", ").concat(2 * v, ")") : "270" === N && (M = " rotate(".concat(N, ") translate(-").concat(v, ", ").concat(v, ")")); - var B = u.w - , F = u.h - , j = u.x - , K = u.y - , L = v - , U = v; - if (d) { - var X = Object(n["j"])(d) - , z = X[0] - , G = X[1] - , q = X[2] - , W = X[3] - , V = function(t) { + var B = e["ofd:StrokeColor"]; + B && (i = Object(n["i"])(B)); + var F = e["@_LineWidth"] + , j = null; + F && (j = 15 * F); + var U = e["@_CharDirection"] + , L = ""; + "90" === U ? L = " rotate(".concat(U, ") translate(").concat(w, ", ").concat(w, ")") : "180" === U ? L = " rotate(".concat(U, ") translate(-").concat(2 * w, ", ").concat(2 * w, ")") : "270" === U && (L = " rotate(".concat(U, ") translate(-").concat(w, ", ").concat(w, ")")); + var K = u.w + , X = u.h + , z = u.x + , G = u.y + , W = w + , q = w; + if (l) { + var H = Object(n["j"])(l) + , V = H[0] + , Z = H[1] + , Q = H[2] + , Y = H[3] + , J = function(t) { return 2 * (t >= 0) - 1 } - , H = z > 0 ? V(z) * Math.sqrt(z * z + q * q) : Math.sqrt(z * z + q * q) - , Y = W > 0 ? V(W) * Math.sqrt(G * G + W * W) : Math.sqrt(G * G + W * W) - , Z = Math.atan2(-G, W); - 0 == Z && 0 != z && 1 == W || (L *= H, - U *= Y), - 0 == Z && l > 0 && (L *= l) + , $ = V > 0 ? J(V) * Math.sqrt(V * V + Q * Q) : Math.sqrt(V * V + Q * Q) + , tt = Y > 0 ? J(Y) * Math.sqrt(Z * Z + Y * Y) : Math.sqrt(Z * Z + Y * Y) + , et = Math.atan2(-Z, Y); + 0 == et && 0 != V && 1 == Y || (W *= $, + q *= tt), + 0 == et && d > 0 && (W *= d) } - var Q, J = e["ofd:CGTransform"]; - if ("undefined" != typeof J) - if (J instanceof Array) { - var $, tt = "", et = c(J); + var rt, nt = e["ofd:CGTransform"]; + if ("undefined" != typeof nt) + if (nt instanceof Array) { + var it, ot = "", at = c(nt); try { - for (et.s(); !($ = et.n()).done; ) { - var rt = $.value; - rt && (tt += rt["ofd:Glyphs"]) + for (at.s(); !(it = at.n()).done; ) { + var st = it.value; + st && (ot += st["ofd:Glyphs"]) } - } catch (Rt) { - et.e(Rt) + } catch (Lt) { + at.e(Lt) } finally { - et.f() + at.f() } - Q = tt.split(" ") + rt = ot.split(" ") } else { - var nt = J["ofd:Glyphs"]; - Q = nt.split(" ") + var ct = nt["ofd:Glyphs"]; + rt = ct.split(" ") } - var it, ot = 0, at = c(w); + var ut, lt = 0, dt = c(A); try { - for (at.s(); !(it = at.n()).done; ) { - var st = it.value; - if (st && !isNaN(st.x)) { - var ct = !1; - if ("undefined" != typeof J && null != t[f].fontByte && st.text.charCodeAt() > 32 && 127 != st.text.charCodeAt()) { - var ut = o.parse(t[f].fontByte)[0]; - if (null != ut.head) { - var dt = Q[ot] - , lt = o.U.glyphToPath(ut, dt) - , ft = o.U.pathToSVG(lt) - , ht = document.createElementNS("http://www.w3.org/2000/svg", "g"); - I ? ht.setAttribute("style", "fill:".concat(r, ";stroke:none")) : ht.setAttribute("style", "fill:".concat(r, ";stroke:").concat(i, ";fill-opacity:").concat(s, ";")); - var pt = L / ut.head.unitsPerEm - , mt = U / ut.head.unitsPerEm; - if (d) { - var bt = Object(n["j"])(d) - , gt = (st.x, - bt[0], - st.y, - bt[2], - st.y, - bt[3], - Object(n["e"])(bt[5]), - C(l, bt, u, st.x, st.y, v, ut.head.unitsPerEm)); - ht.setAttribute("transform", "matrix(".concat(gt.getRow(1)[0], ", ").concat(gt.getRow(1)[1], ", ").concat(gt.getRow(2)[0], ", ").concat(gt.getRow(2)[1], ", ").concat(gt.getRow(3)[0], ", ").concat(gt.getRow(3)[1], ")") + M) + for (dt.s(); !(ut = dt.n()).done; ) { + var ft = ut.value; + if (ft && !isNaN(ft.x)) { + var ht = !1; + if ("undefined" != typeof nt && null != t[f].fontByte && ft.text.charCodeAt() > 32 && 127 != ft.text.charCodeAt()) { + var pt = o.parse(t[f].fontByte)[0]; + if (null != pt.head) { + var mt = rt[lt] + , bt = o.U.glyphToPath(pt, mt) + , gt = o.U.pathToSVG(bt) + , vt = document.createElementNS("http://www.w3.org/2000/svg", "g"); + T ? vt.setAttribute("style", "fill:".concat(r, ";stroke:none")) : vt.setAttribute("style", "fill:".concat(r, ";stroke:").concat(i, "; stroke-width:").concat(j, "; fill-opacity:").concat(s, ";")); + var yt = W / pt.head.unitsPerEm + , St = q / pt.head.unitsPerEm; + if (l) { + var wt = Object(n["j"])(l) + , Ct = (ft.x, + wt[0], + ft.y, + wt[2], + ft.y, + wt[3], + Object(n["e"])(wt[5]), + C(d, wt, u, ft.x, ft.y, w, pt.head.unitsPerEm)); + vt.setAttribute("transform", "matrix(".concat(Ct.getRow(1)[0], ", ").concat(Ct.getRow(1)[1], ", ").concat(Ct.getRow(2)[0], ", ").concat(Ct.getRow(2)[1], ", ").concat(Ct.getRow(3)[0], ", ").concat(Ct.getRow(3)[1], ")") + L) } else { - var yt = st.x - , vt = st.y; - ht.setAttribute("transform", "matrix(".concat(pt, ", 0, 0, ").concat(-mt, ", ").concat(yt, ",").concat(vt, ")") + M) + var _t = ft.x + , At = ft.y; + vt.setAttribute("transform", "matrix(".concat(yt, ", 0, 0, ").concat(-St, ", ").concat(_t, ",").concat(At, ")") + L) } - var St = document.createElementNS("http://www.w3.org/2000/svg", "path"); - St.setAttribute("d", ft), - ht.appendChild(St), - _.appendChild(ht), - ct = !0 + var It = document.createElementNS("http://www.w3.org/2000/svg", "path"); + It.setAttribute("d", gt), + vt.appendChild(It), + I.appendChild(vt), + ht = !0 } else { - dt = Q[ot], - lt = o.U.glyphToPath(ut, dt), - ft = o.U.pathToSVG(lt); - var wt = document.createElementNS("http://www.w3.org/2000/svg", "g"); - I ? wt.setAttribute("style", "fill:".concat(r, ";stroke:none")) : wt.setAttribute("style", "fill:".concat(r, ";stroke:").concat(i, ";fill-opacity:").concat(s, ";")); - var Ct = .001; - ut["CFF "] && ut["CFF "].FontMatrix && (Ct = ut["CFF "].FontMatrix[0]); - var _t = L * Ct - , At = U * Ct; - if (d) { - var It = Object(n["j"])(d) - , Et = (st.x, - It[0], - st.y, - It[2], - st.y, - It[3], - Object(n["e"])(It[5]), - C(l, It, u, st.x, st.y, v, 1 / Ct)); - wt.setAttribute("transform", "matrix(".concat(Et.getRow(1)[0], ", ").concat(Et.getRow(1)[1], ", ").concat(Et.getRow(2)[0], ", ").concat(Et.getRow(2)[1], ", ").concat(Et.getRow(3)[0], ", ").concat(Et.getRow(3)[1], ")")) - } else { - var Tt = st.x - , xt = st.y; - wt.setAttribute("transform", "matrix(".concat(_t, ", 0, 0, ").concat(-At, ", ").concat(Tt, ",").concat(xt, ")")) + mt = rt[lt]; + try { + bt = o.U.glyphToPath(pt, mt), + gt = o.U.pathToSVG(bt); + if ("string" === typeof gt && gt.length > 0 || "?" == ft.text) { + var Et = document.createElementNS("http://www.w3.org/2000/svg", "g"); + T ? Et.setAttribute("style", "fill:".concat(r, ";stroke:none")) : Et.setAttribute("style", "fill:".concat(r, ";stroke:").concat(i, ";fill-opacity:").concat(s, ";")); + var Tt = .001; + pt["CFF "] && pt["CFF "].FontMatrix && (Tt = pt["CFF "].FontMatrix[0]); + var xt = W * Tt + , Pt = q * Tt; + if (l) { + var kt = Object(n["j"])(l) + , Dt = (ft.x, + kt[0], + ft.y, + kt[2], + ft.y, + kt[3], + Object(n["e"])(kt[5]), + C(d, kt, u, ft.x, ft.y, w, 1 / Tt)); + Et.setAttribute("transform", "matrix(".concat(Dt.getRow(1)[0], ", ").concat(Dt.getRow(1)[1], ", ").concat(Dt.getRow(2)[0], ", ").concat(Dt.getRow(2)[1], ", ").concat(Dt.getRow(3)[0], ", ").concat(Dt.getRow(3)[1], ")")) + } else { + var Ot = ft.x + , Rt = ft.y; + Et.setAttribute("transform", "matrix(".concat(xt, ", 0, 0, ").concat(-Pt, ", ").concat(Ot, ",").concat(Rt, ")")) + } + var Mt = document.createElementNS("http://www.w3.org/2000/svg", "path"); + Mt.setAttribute("d", gt), + Et.appendChild(Mt), + I.appendChild(Et), + ht = !0 + } + } catch (Lt) { + console.log(Lt) } - var Pt = document.createElementNS("http://www.w3.org/2000/svg", "path"); - Pt.setAttribute("d", ft), - wt.appendChild(Pt), - _.appendChild(wt), - ct = !0 } } - if (!ct) { - var kt = document.createElementNS("http://www.w3.org/2000/svg", "text"); - kt.setAttribute("x", st.x), - kt.setAttribute("y", st.y); - var Dt = document.createTextNode(st.text); - if (kt.appendChild(Dt), - d) { - var Ot = Object(n["j"])(d); - kt.setAttribute("transform", "matrix(".concat(Ot[0], " ").concat(Ot[1], " ").concat(Ot[2], " ").concat(Ot[3], " ").concat(Object(n["e"])(Ot[4]), " ").concat(Object(n["e"])(Ot[5]), ")") + M) + if (ht) { + var Nt = document.createElementNS("http://www.w3.org/2000/svg", "text"); + Nt.setAttribute("x", ft.x), + Nt.setAttribute("y", ft.y); + jt = document.createTextNode(ft.text); + if (Nt.appendChild(jt), + l) { + var Bt = Object(n["j"])(l); + Nt.setAttribute("transform", "matrix(".concat(Bt[0], " ").concat(Bt[1], " ").concat(Bt[2], " ").concat(Bt[3], " ").concat(Object(n["e"])(Bt[4]), " ").concat(Object(n["e"])(Bt[5]), ")") + L) } - l && kt.setAttribute("transform", "matrix(".concat(l, ", 0, 0, 1, ").concat((1 - l) * st.x, ", 0)") + M), - I ? kt.setAttribute("fill", r) : (kt.setAttribute("fill", i), - kt.setAttribute("fill", r), - kt.setAttribute("fill-opacity", s)), - kt.setAttribute("style", "".concat(b, " ").concat(p, " ").concat(y, " font-size:").concat(v, "px;font-family: ").concat(Object(n["g"])(t[f]), ";")), - _.appendChild(kt) + d && Nt.setAttribute("transform", "matrix(".concat(d, ", 0, 0, 1, ").concat((1 - d) * ft.x, ", 0)") + L), + Nt.setAttribute("fill", "none"), + Nt.setAttribute("style", "".concat(b, " ").concat(p, " ").concat(v, " font-size:").concat(w, "px;font-family: ").concat(Object(n["g"])(t[f]), ";")), + I.appendChild(Nt) + } else { + var Ft = document.createElementNS("http://www.w3.org/2000/svg", "text"); + Ft.setAttribute("x", ft.x), + Ft.setAttribute("y", ft.y); + var jt = document.createTextNode(ft.text); + if (Ft.appendChild(jt), + l) { + var Ut = Object(n["j"])(l); + Ft.setAttribute("transform", "matrix(".concat(Ut[0], " ").concat(Ut[1], " ").concat(Ut[2], " ").concat(Ut[3], " ").concat(Object(n["e"])(Ut[4]), " ").concat(Object(n["e"])(Ut[5]), ")") + L) + } + d && Ft.setAttribute("transform", "matrix(".concat(d, ", 0, 0, 1, ").concat((1 - d) * ft.x, ", 0)") + L), + T ? Ft.setAttribute("fill", r) : (Ft.setAttribute("fill", i), + Ft.setAttribute("fill", r), + Ft.setAttribute("fill-opacity", s)), + S || Ft.setAttribute("fill", "none"), + Ft.setAttribute("style", "".concat(b, " ").concat(p, " ").concat(v, " font-size:").concat(w, "px;font-family: ").concat(Object(n["g"])(t[f]), ";")), + I.appendChild(Ft) } } - ot++ + lt++ } - } catch (Rt) { - at.e(Rt) + } catch (Lt) { + dt.e(Lt) } finally { - at.f() + dt.f() } - return _.setAttribute("style", "overflow:visible;position:absolute;width:".concat(B, "px;height:").concat(F, "px;left:").concat(j, "px;top:").concat(K, "px;z-index:").concat(e["@_ID"])), - _ + return I.setAttribute("style", "overflow:visible;position:absolute;width:".concat(K, "px;height:").concat(X, "px;left:").concat(z, "px;top:").concat(G, "px;z-index:").concat(e["@_ID"])), + I } - , w = function(t, e, r, i, o, a, s, u, d) { - var l = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - l.setAttribute("version", "1.1"); - var f = Object(n["k"])(e["@_Boundary"]); - if (!f) - return l; - f = Object(n["d"])(f); - var h = e["@_LineWidth"] - , p = e["ofd:AbbreviatedData"]; + , w = function(t, e, r, i, o, a, s, u, l, d, f) { + var h = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + h.setAttribute("version", "1.1"); + var p = Object(n["k"])(e["@_Boundary"]); if (!p) - return l; - var m = Object(n["a"])(Object(n["c"])(p)) - , b = e["@_CTM"] - , g = document.createElementNS("http://www.w3.org/2000/svg", "path"); - h && (o = Object(n["e"])(h)); - var y = e["@_DrawParam"]; - if (y && t[y] && (h = t[y].LineWidth, - h && (o = Object(n["e"])(h))), - b) { - var v = Object(n["j"])(b); - g.setAttribute("transform", "matrix(".concat(v[0], " ").concat(v[1], " ").concat(v[2], " ").concat(v[3], " ").concat(Object(n["e"])(v[4]), " ").concat(Object(n["e"])(v[5]), ")")) + return h; + p = Object(n["d"])(p); + var m = e["@_LineWidth"] + , b = e["ofd:AbbreviatedData"]; + if (!b) + return h; + var v = Object(n["a"])(Object(n["c"])(b)) + , y = e["@_CTM"] + , S = document.createElementNS("http://www.w3.org/2000/svg", "path"); + m && (o = Object(n["e"])(m)); + var w = e["@_DrawParam"]; + if (w && t[w] && (m = t[w].LineWidth, + m && (o = Object(n["e"])(m))), + y) { + var C = Object(n["j"])(y); + S.setAttribute("transform", "matrix(".concat(C[0], " ").concat(C[1], " ").concat(C[2], " ").concat(C[3], " ").concat(Object(n["e"])(C[4]), " ").concat(Object(n["e"])(C[5]), ")")) } - var S = e["ofd:StrokeColor"]; - if (S) { - S["@_Value"] && (i = Object(n["i"])(S["@_Value"])); - var w = S["ofd:AxialShd"]; - if (w) { + var _ = e["ofd:StrokeColor"]; + if (_) { + _["@_Value"] && (i = Object(n["i"])(_["@_Value"])); + var A = _["ofd:AxialShd"]; + if (A) { !0; - var C = document.createElement("linearGradient"); - C.setAttribute("id", "".concat(e["@_ID"])), - C.setAttribute("x1", "0%"), - C.setAttribute("y1", "0%"), - C.setAttribute("x2", "100%"), - C.setAttribute("y2", "100%"); - var _, A = c(w["ofd:Segment"]); + var I = document.createElement("linearGradient"); + I.setAttribute("id", "".concat(e["@_ID"])), + I.setAttribute("x1", "0%"), + I.setAttribute("y1", "0%"), + I.setAttribute("x2", "100%"), + I.setAttribute("y2", "100%"); + var E, T = c(A["ofd:Segment"]); try { - for (A.s(); !(_ = A.n()).done; ) { - var I = _.value; - if (I) { - var E = document.createElement("stop"); - E.setAttribute("offset", "".concat(100 * I["@_Position"], "%")), - E.setAttribute("style", "stop-color:".concat(Object(n["i"])(I["ofd:Color"]["@_Value"]), ";stop-opacity:1")), - C.appendChild(E), - i = Object(n["i"])(I["ofd:Color"]["@_Value"]) + for (T.s(); !(E = T.n()).done; ) { + var x = E.value; + if (x) { + var P = document.createElement("stop"); + P.setAttribute("offset", "".concat(100 * x["@_Position"], "%")), + P.setAttribute("style", "stop-color:".concat(Object(n["i"])(x["ofd:Color"]["@_Value"]), ";stop-opacity:1")), + I.appendChild(P), + i = Object(n["i"])(x["ofd:Color"]["@_Value"]) } } - } catch ($) { - A.e($) + } catch (lt) { + T.e(lt) } finally { - A.f() + T.f() } - l.appendChild(C) + h.appendChild(I) } } else - y && t[y] && t[y].StrokeColor && (i = Object(n["i"])(t[y].StrokeColor)); - var T = e["ofd:FillColor"]; - var url = window.location.href; + w && t[w] && t[w].StrokeColor && (i = Object(n["i"])(t[w].StrokeColor)); + var k = e["ofd:FillColor"]; + var url = window.location.href; var spliceLength2 = url.lastIndexOf("="); var pathType = url.slice(spliceLength2 + 1); - if (T) { - if(pathType ==1){ - T["@_Value"] && ((T["@_Value"])), T["@_Alpha"] && 0 == T["@_Alpha"] && (r = "none"); + if (k) { + if(pathType ==1){ + k["@_Value"] && ((k["@_Value"])),k["@_Alpha"] && 0 == k["@_Alpha"] && (r = "none"); }else{ - T["@_Value"] && (r = Object(n["i"])(T["@_Value"])), T["@_Alpha"] && 0 == T["@_Alpha"] && (r = "none"); + k["@_Value"] && (r = Object(n["i"])(k["@_Value"])),k["@_Alpha"] && 0 == k["@_Alpha"] && (r = "none"); } - var x = T["ofd:AxialShd"]; - if (x) { + var D = k["ofd:AxialShd"]; + if (D) { !0; - var P = document.createElement("linearGradient"); - P.setAttribute("id", "".concat(e["@_ID"])), - P.setAttribute("x1", "0%"), - P.setAttribute("y1", "0%"), - P.setAttribute("x2", "100%"), - P.setAttribute("y2", "100%"); - var k, D = c(x["ofd:Segment"]); + var O = document.createElement("linearGradient"); + O.setAttribute("id", "".concat(e["@_ID"])), + O.setAttribute("x1", "0%"), + O.setAttribute("y1", "0%"), + O.setAttribute("x2", "100%"), + O.setAttribute("y2", "100%"); + var R, M = c(D["ofd:Segment"]); try { - for (D.s(); !(k = D.n()).done; ) { - var O = k.value; - if (O) { - var R = document.createElement("stop"); - R.setAttribute("offset", "".concat(100 * O["@_Position"], "%")), - R.setAttribute("style", "stop-color:".concat(Object(n["i"])(O["ofd:Color"]["@_Value"]), ";stop-opacity:1")), - P.appendChild(R), - r = Object(n["i"])(O["ofd:Color"]["@_Value"]) + for (M.s(); !(R = M.n()).done; ) { + var N = R.value; + if (N) { + var B = document.createElement("stop"); + B.setAttribute("offset", "".concat(100 * N["@_Position"], "%")), + B.setAttribute("style", "stop-color:".concat(Object(n["i"])(N["ofd:Color"]["@_Value"]), ";stop-opacity:1")), + O.appendChild(B), + r = Object(n["i"])(N["ofd:Color"]["@_Value"]) } } - } catch ($) { - D.e($) + } catch (lt) { + M.e(lt) } finally { - D.f() + M.f() + } + h.appendChild(O) + } + var F = k["ofd:Pattern"]; + if (F) { + var j = F["@_Width"] + , U = F["@_Height"] + , L = F["@_CTM"] + , K = F["ofd:CellContent"] + , X = K["ofd:ImageObject"]; + if (X) { + var z = X["@_ResourceID"]; + if (null != f[z] || void 0 != f[z]) { + var G = g(j, U, f, X, !1, null, L, !1); + d.appendChild(G) + } } - l.appendChild(P) } } else - y && t[y] && t[y].FillColor && (r = Object(n["i"])(t[y].FillColor)); - o > 0 && !i && (i = r, - i || (i = "rgb(0, 0, 0)")); - var N = e["@_Alpha"]; - if ("undefined" != typeof N ? g.setAttribute("fill-opacity", "".concat(N / 255)) : s && g.setAttribute("fill-opacity", "".concat(s / 255)), - "false" != e["@_Stroke"] && (g.setAttribute("stroke", "".concat(i)), - g.setAttribute("stroke-width", "".concat(o, "px")), - g.setAttribute("fill", "none")), + w && t[w] && t[w].FillColor && (r = Object(n["i"])(t[w].FillColor)); + o > 0 && !i && (i || (i = "rgb(0, 0, 0)")); + var W = e["@_Alpha"]; + if ("undefined" != typeof W ? S.setAttribute("fill-opacity", "".concat(W / 255)) : s && S.setAttribute("fill-opacity", "".concat(s / 255)), + "false" != e["@_Stroke"] && (S.setAttribute("stroke", "".concat(i)), + S.setAttribute("stroke-width", "".concat(o, "px")), + S.setAttribute("fill", "none")), e.hasOwnProperty("@_Fill") || (r = "none"), - "false" != e["@_Fill"] && g.setAttribute("fill", "".concat(r || "none")), - e["@_Join"] && g.setAttribute("stroke-linejoin", "".concat(e["@_Join"])), - e["@_Cap"] && g.setAttribute("stroke-linecap", "".concat(e["@_Cap"])), + "false" != e["@_Fill"] && S.setAttribute("fill", "".concat(r || "none")), + e["@_Join"] && S.setAttribute("stroke-linejoin", "".concat(e["@_Join"])), + e["@_Cap"] && S.setAttribute("stroke-linecap", "".concat(e["@_Cap"])), e["@_DashPattern"]) { - var M = e["@_DashPattern"] - , B = Object(n["j"])(M) - , F = 0; - e["@_DashOffset"] && (F = e["@_DashOffset"]), - g.setAttribute("stroke-dasharray", "".concat(Object(n["e"])(B[0]), ",").concat(Object(n["e"])(B[1]))), - g.setAttribute("stroke-dashoffset", "".concat(Object(n["e"])(F), "px")) + var q = e["@_DashPattern"] + , H = Object(n["j"])(q) + , V = 0; + e["@_DashOffset"] && (V = e["@_DashOffset"]), + S.setAttribute("stroke-dasharray", "".concat(Object(n["e"])(H[0]), ",").concat(Object(n["e"])(H[1]))), + S.setAttribute("stroke-dashoffset", "".concat(Object(n["e"])(V), "px")) } - var j, K = "", L = c(m); + var Z, Q = "", Y = c(v); try { - for (L.s(); !(j = L.n()).done; ) { - var U = j.value; - "M" === U.type ? K += "M".concat(U.x, " ").concat(U.y, " ") : "L" === U.type ? K += "L".concat(U.x, " ").concat(U.y, " ") : "B" === U.type ? K += "C".concat(U.x1, " ").concat(U.y1, " ").concat(U.x2, " ").concat(U.y2, " ").concat(U.x3, " ").concat(U.y3, " ") : "Q" === U.type ? K += "Q".concat(U.x1, " ").concat(U.y1, " ").concat(U.x2, " ").concat(U.y2, " ") : "A" === U.type ? K += "A".concat(U.rx, ",").concat(U.ry, " ").concat(U.rotation, " ").concat(U.arc, ",").concat(U.sweep, " ").concat(U.x, ",").concat(U.y) : "C" === U.type && (K += "Z") + for (Y.s(); !(Z = Y.n()).done; ) { + var J = Z.value; + "M" === J.type ? Q += "M".concat(J.x, " ").concat(J.y, " ") : "L" === J.type ? Q += "L".concat(J.x, " ").concat(J.y, " ") : "B" === J.type ? Q += "C".concat(J.x1, " ").concat(J.y1, " ").concat(J.x2, " ").concat(J.y2, " ").concat(J.x3, " ").concat(J.y3, " ") : "Q" === J.type ? Q += "Q".concat(J.x1, " ").concat(J.y1, " ").concat(J.x2, " ").concat(J.y2, " ") : "A" === J.type ? Q += "A".concat(J.rx, ",").concat(J.ry, " ").concat(J.rotation, " ").concat(J.arc, ",").concat(J.sweep, " ").concat(J.x, ",").concat(J.y) : "C" === J.type && (Q += "Z") } - } catch ($) { - L.e($) + } catch (lt) { + Y.e(lt) } finally { - L.f() + Y.f() } - g.setAttribute("d", K), - l.appendChild(g); - var X = a ? f.w : Math.ceil(f.w) - , z = a ? f.h : Math.ceil(f.h) - , G = f.x - , q = f.y; - if (l.setAttribute("style", "overflow:visible;position:absolute;width:".concat(X, "px;height:").concat(z, "px;left:").concat(G, "px;top:").concat(q, "px;z-index:").concat(e["@_ID"])), + S.setAttribute("d", Q), + h.appendChild(S); + var $ = a ? p.w : Math.ceil(p.w) + , tt = a ? p.h : Math.ceil(p.h) + , et = p.x + , rt = p.y; + if (h.setAttribute("style", "overflow:visible;position:absolute;width:".concat($, "px;height:").concat(tt, "px;left:").concat(et, "px;top:").concat(rt, "px;z-index:").concat(e["@_ID"])), u) { - var W = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - W.setAttribute("version", "1.1"); - var V = Object(n["k"])(u); - V = Object(n["d"])(V); - var H = Math.ceil(V.w) - , Y = Math.ceil(V.h) - , Z = V.x - , Q = V.y; - if (W.setAttribute("style", "overflow:hidden;position:absolute;width:".concat(H, "px;height:").concat(Y, "px;left:").concat(Z, "px;top:").concat(Q, "px;z-index:").concat(e["@_ID"])), - d) { - var J = Object(n["j"])(d); - l.setAttribute("transform", "matrix(".concat(J[0], " ").concat(J[1], " ").concat(J[2], " ").concat(J[3], " ").concat(Object(n["e"])(J[4]), " ").concat(Object(n["e"])(J[5]), ")")) + var nt = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + nt.setAttribute("version", "1.1"); + var it = Object(n["k"])(u); + it = Object(n["d"])(it); + var ot = Math.ceil(it.w) + , at = Math.ceil(it.h) + , st = it.x + , ct = it.y; + if (nt.setAttribute("style", "overflow:hidden;position:absolute;width:".concat(ot, "px;height:").concat(at, "px;left:").concat(st, "px;top:").concat(ct, "px;z-index:").concat(e["@_ID"])), + l) { + var ut = Object(n["j"])(l); + h.setAttribute("transform", "matrix(".concat(ut[0], " ").concat(ut[1], " ").concat(ut[2], " ").concat(ut[3], " ").concat(Object(n["e"])(ut[4]), " ").concat(Object(n["e"])(ut[5]), ")")) } - return W.appendChild(l), - W + return nt.appendChild(h), + nt } - return l + return h } , C = function(t, e, r, n, i, o, s, c) { var u = new a([1, 0, 0, 0, -1, 0, 0, 0, 1]); "undefined" == typeof t && (t = 1), - u = _(u, Number(t), 1); - var d = new a([1 / s, 0, 0, 0, 1 / s, 0, 0, 0, 1]); - if (u = u.multiply(d), - u = _(u, o / 3.7795, o / 3.7795), - u = A(u, n / 3.7795, i / 3.7795), + u = I(u, Number(t), 1); + var l = new a([1 / s, 0, 0, 0, 1 / s, 0, 0, 0, 1]); + if (u = u.multiply(l), + u = I(u, o / 3.7795, o / 3.7795), + u = E(u, n / 3.7795, i / 3.7795), null != e) { - var l = new a([Number(e[0]), Number(e[1]), 0, Number(e[2]), Number(e[3]), 0, Number(e[4]), Number(e[5]), 1]); - u = u.multiply(l) + var d = new a([Number(e[0]), Number(e[1]), 0, Number(e[2]), Number(e[3]), 0, Number(e[4]), Number(e[5]), 1]); + u = u.multiply(d) } return "undefined" == typeof c && (c = new a([3.7795, 0, 0, 0, 3.7795, 0, 0, 0, 1])), u = u.multiply(c), u } - , _ = function(t, e, r) { + , _ = function(t) { + var e = new a([Number(t[0]), Number(t[1]), 0, Number(t[2]), Number(t[3]), 0, Number(t[4]), Number(t[5]), 1]); + return e + } + , A = function(t) { + return [t.getRow(1)[0], t.getRow(1)[1], t.getRow(2)[0], t.getRow(2)[1], t.getRow(3)[0], t.getRow(3)[1]] + } + , I = function(t, e, r) { var n = new a([e, 0, 0, 0, r, 0, 0, 0, 1]); return t.multiply(n) } - , A = function(t, e, r) { + , E = function(t, e, r) { var n = new a([1, 0, 0, 0, 1, 0, e, r, 1]); return t.multiply(n) } @@ -25191,7 +29129,7 @@ if ("string" === typeof e) return t && t[0] && void 0 !== t[0].val ? s(t[0].val, e) : s(t, e); { - const n = d(t); + const n = l(t); if (!0 === n) { let n = ""; if (Array.isArray(e)) { @@ -25244,13 +29182,13 @@ , u = function(t) { return -1 !== o.indexOf(t) }; - function d(t) { + function l(t) { return void 0 === t ? i.missingChar : null === t ? i.nilChar : !(t.child && 0 === Object.keys(t.child).length && (!t.attrsMap || 0 === Object.keys(t.attrsMap).length)) || i.emptyChar } - const l = r("8a24") + const d = r("8a24") , f = r("90da").buildOptions , h = function(t, e, r) { - return r = f(r, l.defaultOptions, l.props), + return r = f(r, d.defaultOptions, d.props), a(t, e, r) }; e.convert2nimn = h @@ -25311,17 +29249,17 @@ , s = r("0083") , c = r("bc3a") , u = r.n(c); - function d(t) { - return d = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + function l(t) { + return l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { return typeof t } : function(t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t } , - d(t) + l(t) } - function l(t, e) { + function d(t, e) { var r = "undefined" !== typeof Symbol && t[Symbol.iterator] || t["@@iterator"]; if (!r) { if (Array.isArray(t) || (r = f(t)) || e && t && "number" === typeof t.length) { @@ -25434,7 +29372,7 @@ if (a) { var s = C(a, r); if (s) { - if (s === l) + if (s === d) continue; return s } @@ -25452,7 +29390,7 @@ var c = u(t, e, r); if ("normal" === c.type) { if (n = r.done ? "completed" : "suspendedYield", - c.arg === l) + c.arg === d) continue; return { value: c.arg, @@ -25481,7 +29419,7 @@ } } t.wrap = c; - var l = {}; + var d = {}; function f() {} function h() {} function m() {} @@ -25491,9 +29429,9 @@ } )); var g = Object.getPrototypeOf - , y = g && g(g(E([]))); - y && y !== e && r.call(y, i) && (b = y); - var v = m.prototype = f.prototype = Object.create(b); + , v = g && g(g(E([]))); + v && v !== e && r.call(v, i) && (b = v); + var y = m.prototype = f.prototype = Object.create(b); function S(t) { ["next", "throw", "return"].forEach((function(e) { s(t, e, (function(t) { @@ -25507,17 +29445,17 @@ function n(i, o, a, s) { var c = u(t[i], t, o); if ("throw" !== c.type) { - var l = c.arg - , f = l.value; - return f && "object" == d(f) && r.call(f, "__await") ? e.resolve(f.__await).then((function(t) { + var d = c.arg + , f = d.value; + return f && "object" == l(f) && r.call(f, "__await") ? e.resolve(f.__await).then((function(t) { n("next", t, a, s) } ), (function(t) { n("throw", t, a, s) } )) : e.resolve(f).then((function(t) { - l.value = t, - a(l) + d.value = t, + a(d) } ), (function(t) { return n("throw", t, a, s) @@ -25546,28 +29484,28 @@ e.arg = void 0, C(t, e), "throw" === e.method)) - return l; + return d; e.method = "throw", e.arg = new TypeError("The iterator does not provide a 'throw' method") } - return l + return d } var n = u(r, t.iterator, e.arg); if ("throw" === n.type) return e.method = "throw", e.arg = n.arg, e.delegate = null, - l; + d; var i = n.arg; return i ? i.done ? (e[t.resultName] = i.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = void 0), e.delegate = null, - l) : i : (e.method = "throw", + d) : i : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, - l) + d) } function _(t) { var e = { @@ -25624,7 +29562,7 @@ } } return h.prototype = m, - s(v, "constructor", m), + s(y, "constructor", m), s(m, "constructor", h), h.displayName = s(m, a, "GeneratorFunction"), t.isGeneratorFunction = function(t) { @@ -25635,7 +29573,7 @@ t.mark = function(t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, m) : (t.__proto__ = m, s(t, a, "GeneratorFunction")), - t.prototype = Object.create(v), + t.prototype = Object.create(y), t } , @@ -25660,13 +29598,13 @@ )) } , - S(v), - s(v, a, "Generator"), - s(v, i, (function() { + S(y), + s(y, a, "Generator"), + s(y, i, (function() { return this } )), - s(v, "toString", (function() { + s(y, "toString", (function() { return "[object Generator]" } )), @@ -25762,7 +29700,7 @@ a.arg = e, o ? (this.method = "next", this.next = o.finallyLoc, - l) : this.complete(a) + d) : this.complete(a) }, complete: function(t, e) { if ("throw" === t.type) @@ -25770,7 +29708,7 @@ return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), - l + d }, finish: function(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { @@ -25778,7 +29716,7 @@ if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), A(r), - l + d } }, catch: function(t) { @@ -25802,7 +29740,7 @@ nextLoc: r }, "next" === this.method && (this.arg = void 0), - l + d } }, t @@ -25835,13 +29773,13 @@ } u.a.defaults.timeout = 3e4; var g = "" - , y = !1 - , v = "" + , v = !1 + , y = "" , S = function(t) { - y = "Server" == t + v = "Server" == t } , w = function(t) { - v = t + y = t } , C = function(t) { g = t @@ -25854,7 +29792,7 @@ )) } , A = function(e) { - if (y && "" != v) { + if (v && "" != y) { var r = new FormData; r.append("file", e.ofd), r.append("zoomScale", Object(a["h"])()); @@ -25862,7 +29800,7 @@ r.append("accessId", n); var s = k(new Date, "yyyy-MM-dd hh:mm:ss"); r.append("reqTime", s), - u.a.post(v + "getPageSvgInfo", r, { + u.a.post(y + "getPageSvgInfo", r, { "Content-type": "multipart/form-data" }).then((function(t) { if (console.log(t), @@ -25910,16 +29848,16 @@ var r = []; if (!t) return r; - if (y && "" != v) { - var i, o = 0, s = l(t.pages); + if (v && "" != y) { + var i, o = 0, s = d(t.pages); try { for (s.s(); !(i = s.n()).done; ) { var c = i.value , u = Object(a["e"])(c[0]) - , d = Object(a["e"])(c[1]) + , l = Object(a["e"])(c[1]) , f = document.createElement("div"); f.id = o, - f.setAttribute("style", "margin-top: 15px; position: relative; width: ".concat(u, "px; height: ").concat(d, "px; background: white; box-shadow: 0px 0px 10px 3PX grey;")), + f.setAttribute("style", "margin-top: 15px; position: relative; width: ".concat(u, "px; height: ").concat(l, "px; background: white; box-shadow: 0px 0px 10px 3PX grey;")), f.className = "page-break", f.innerHTML = t.listPageSvg[o], r.push(f), @@ -25931,7 +29869,7 @@ s.f() } } else { - var h, p = l(t.pages); + var h, p = d(t.pages); try { for (p.s(); !(h = p.n()).done; ) { var m = h.value @@ -25956,8 +29894,8 @@ var e = []; if (!t) return e; - if (!y || "" == v) { - var r, i = l(t.pages); + if (!v || "" == y) { + var r, i = d(t.pages); try { for (i.s(); !(r = i.n()).done; ) { var o = r.value @@ -25978,7 +29916,7 @@ } } , T = function(t) { - Object(a["n"])(t) + Object(a["o"])(t) } , x = function() { return Object(a["h"])() @@ -26027,7 +29965,7 @@ , r = a.f(e) , n = r.resolve , u = r.reject - , d = s((function() { + , l = s((function() { var r = o(e.resolve) , a = [] , s = 0 @@ -26058,7 +29996,7 @@ --u || n(a) } )); - return d.error && u(d.value), + return l.error && u(l.value), r.promise } }) @@ -26154,12 +30092,12 @@ function u(t) { return "number" === typeof t && (!n(t) && !(t < 0)) } - function d(t, e, r) { + function l(t, e, r) { if ("function" !== typeof t) throw new TypeError("Argument is not a function"); return Function.prototype.apply.call(t, e, r) } - function l(t, e, r, n) { + function d(t, e, r, n) { var i = t[e]; if (void 0 !== i) { if ("function" !== typeof i) @@ -26184,11 +30122,11 @@ function f(t, e, r) { var n = t[e]; if (void 0 !== n) - return d(n, t, r) + return l(n, t, r) } function h(t, e, r) { try { - return _(d(t, e, r)) + return _(l(t, e, r)) } catch (n) { return A(n) } @@ -26217,12 +30155,12 @@ return t(e) } } - var y = Promise - , v = Promise.prototype.then - , S = Promise.resolve.bind(y) - , w = Promise.reject.bind(y); + var v = Promise + , y = Promise.prototype.then + , S = Promise.resolve.bind(v) + , w = Promise.reject.bind(v); function C(t) { - return new y(t) + return new v(t) } function _(t) { return S(t) @@ -26231,7 +30169,7 @@ return w(t) } function I(t, e, r) { - return v.call(t, e, r) + return y.call(t, e, r) } function E(t, e, r) { I(I(t, e, r), void 0, i) @@ -26328,18 +30266,18 @@ i.done = e, i } - function N(t, e) { + function M(t, e) { t._forAuthorCode = !0, t._ownerReadableStream = e, e._reader = t, - "readable" === e._state ? j(t) : "closed" === e._state ? L(t) : K(t, e._storedError) + "readable" === e._state ? j(t) : "closed" === e._state ? L(t) : U(t, e._storedError) } - function M(t, e) { + function N(t, e) { var r = t._ownerReadableStream; return Br(r, e) } function B(t) { - "readable" === t._ownerReadableStream._state ? U(t, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")) : X(t, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")), + "readable" === t._ownerReadableStream._state ? K(t, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")) : X(t, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")), t._ownerReadableStream._reader = void 0, t._ownerReadableStream = void 0 } @@ -26353,22 +30291,22 @@ } )) } - function K(t, e) { + function U(t, e) { j(t), - U(t, e) + K(t, e) } function L(t) { j(t), z(t) } - function U(t, e) { + function K(t, e) { k(t._closedPromise), t._closedPromise_reject(e), t._closedPromise_resolve = void 0, t._closedPromise_reject = void 0 } function X(t, e) { - K(t, e) + U(t, e) } function z(t) { t._closedPromise_resolve(void 0), @@ -26376,14 +30314,14 @@ t._closedPromise_reject = void 0 } var G = e("[[CancelSteps]]") - , q = e("[[PullSteps]]"); - function W(t, e) { + , W = e("[[PullSteps]]"); + function q(t, e) { void 0 === e && (e = !1); var r = new $(t); return r._forAuthorCode = e, r } - function V(t) { + function H(t) { var e = C((function(e, r) { var n = { _resolve: e, @@ -26394,25 +30332,25 @@ )); return e } - function H(t, e, r) { + function V(t, e, r) { var n = t._reader , i = n._readRequests.shift(); i._resolve(R(e, r, n._forAuthorCode)) } - function Y(t) { + function Z(t) { return t._reader._readRequests.length } - function Z(t) { + function Q(t) { var e = t._reader; return void 0 !== e && !!tt(e) } - var Q, J, $ = function() { + var Y, J, $ = function() { function t(t) { - if (!1 === Nr(t)) + if (!1 === Mr(t)) throw new TypeError("ReadableStreamDefaultReader can only be constructed with a ReadableStream instance"); - if (!0 === Mr(t)) + if (!0 === Nr(t)) throw new TypeError("This stream has already been locked for exclusive reading by another reader"); - N(this, t), + M(this, t), this._readRequests = new O } return Object.defineProperty(t.prototype, "closed", { @@ -26423,7 +30361,7 @@ configurable: !0 }), t.prototype.cancel = function(t) { - return tt(this) ? void 0 === this._ownerReadableStream ? A(F("cancel")) : M(this, t) : A(rt("cancel")) + return tt(this) ? void 0 === this._ownerReadableStream ? A(F("cancel")) : N(this, t) : A(rt("cancel")) } , t.prototype.read = function() { @@ -26448,17 +30386,17 @@ function et(t) { var e = t._ownerReadableStream; return e._disturbed = !0, - "closed" === e._state ? _(R(void 0, !0, t._forAuthorCode)) : "errored" === e._state ? A(e._storedError) : e._readableStreamController[q]() + "closed" === e._state ? _(R(void 0, !0, t._forAuthorCode)) : "errored" === e._state ? A(e._storedError) : e._readableStreamController[W]() } function rt(t) { return new TypeError("ReadableStreamDefaultReader.prototype." + t + " can only be used on a ReadableStreamDefaultReader") } - "symbol" === typeof e.asyncIterator && (Q = {}, - Q[e.asyncIterator] = function() { + "symbol" === typeof e.asyncIterator && (Y = {}, + Y[e.asyncIterator] = function() { return this } , - J = Q, + J = Y, Object.defineProperty(J, e.asyncIterator, { enumerable: !1 })); @@ -26484,7 +30422,7 @@ if (e._readRequests.length > 0) return A(new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled")); if (!1 === this._preventCancel) { - var r = M(e, t); + var r = N(e, t); return B(e), P(r, (function() { return R(t, !0, !0) @@ -26497,7 +30435,7 @@ }; function it(t, e) { void 0 === e && (e = !1); - var r = W(t) + var r = q(t) , n = Object.create(nt); return n._asyncIteratorReader = r, n._preventCancel = Boolean(e), @@ -26529,7 +30467,7 @@ var e = t._queue.peek(); return e.value } - function dt(t) { + function lt(t) { t._queue = new O, t._queueTotalSize = 0 } @@ -26540,7 +30478,7 @@ Object.defineProperty(nt, "return", { enumerable: !1 }); - var lt = e("[[AbortSteps]]") + var dt = e("[[AbortSteps]]") , ft = e("[[ErrorSteps]]") , ht = function() { function t(t, e) { @@ -26555,23 +30493,23 @@ var o = g(r); void 0 === n && (n = 1), n = b(n), - Ht(this, t, n, o) + Vt(this, t, n, o) } return Object.defineProperty(t.prototype, "locked", { get: function() { if (!1 === gt(this)) throw ae("locked"); - return yt(this) + return vt(this) }, enumerable: !0, configurable: !0 }), t.prototype.abort = function(t) { - return !1 === gt(this) ? A(ae("abort")) : !0 === yt(this) ? A(new TypeError("Cannot abort a stream that already has a writer")) : vt(this, t) + return !1 === gt(this) ? A(ae("abort")) : !0 === vt(this) ? A(new TypeError("Cannot abort a stream that already has a writer")) : yt(this, t) } , t.prototype.close = function() { - return !1 === gt(this) ? A(ae("close")) : !0 === yt(this) ? A(new TypeError("Cannot close a stream that already has a writer")) : !0 === Pt(this) ? A(new TypeError("Cannot close an already-closing stream")) : St(this) + return !1 === gt(this) ? A(ae("close")) : !0 === vt(this) ? A(new TypeError("Cannot close a stream that already has a writer")) : !0 === Pt(this) ? A(new TypeError("Cannot close an already-closing stream")) : St(this) } , t.prototype.getWriter = function() { @@ -26583,7 +30521,7 @@ t }(); function pt(t) { - return new Mt(t) + return new Nt(t) } function mt(t, e, r, n, i, o) { void 0 === i && (i = 1), @@ -26593,8 +30531,8 @@ ); var a = Object.create(ht.prototype); bt(a); - var s = Object.create(qt.prototype); - return Vt(a, s, t, e, r, n, i, o), + var s = Object.create(Wt.prototype); + return Ht(a, s, t, e, r, n, i, o), a } function bt(t) { @@ -26612,10 +30550,10 @@ function gt(t) { return !!o(t) && !!Object.prototype.hasOwnProperty.call(t, "_writableStreamController") } - function yt(t) { + function vt(t) { return void 0 !== t._writer } - function vt(t, e) { + function yt(t, e) { var r = t._state; if ("closed" === r || "errored" === r) return _(void 0); @@ -26652,7 +30590,7 @@ )) , n = t._writer; return void 0 !== n && !0 === t._backpressure && "writable" === e && we(n), - Zt(t._writableStreamController), + Qt(t._writableStreamController), r } function wt(t) { @@ -26675,7 +30613,7 @@ t._state = "erroring", t._storedError = e; var n = t._writer; - void 0 !== n && Ut(n, e), + void 0 !== n && Kt(n, e), !1 === kt(t) && !0 === r._started && At(t) } function At(t) { @@ -26693,7 +30631,7 @@ !0 === r._wasAlreadyErroring) return r._reject(e), void Rt(t); - var n = t._writableStreamController[lt](r._reason); + var n = t._writableStreamController[dt](r._reason); E(n, (function() { r._resolve(), Rt(t) @@ -26752,16 +30690,16 @@ var e = t._writer; void 0 !== e && fe(e, t._storedError) } - function Nt(t, e) { + function Mt(t, e) { var r = t._writer; - void 0 !== r && e !== t._backpressure && (!0 === e ? ve(r) : we(r)), + void 0 !== r && e !== t._backpressure && (!0 === e ? ye(r) : we(r)), t._backpressure = e } - var Mt = function() { + var Nt = function() { function t(t) { if (!1 === gt(t)) throw new TypeError("WritableStreamDefaultWriter can only be constructed with a WritableStream instance"); - if (!0 === yt(t)) + if (!0 === vt(t)) throw new TypeError("This stream has already been locked for exclusive writing by another writer"); this._ownerWritableStream = t, t._writer = this; @@ -26774,11 +30712,11 @@ ue(this); else if ("closed" === e) ge(this), - le(this); + de(this); else { var r = t._storedError; be(this, r), - de(this, r) + le(this, r) } } return Object.defineProperty(t.prototype, "closed", { @@ -26835,13 +30773,13 @@ } function Ft(t, e) { var r = t._ownerWritableStream; - return vt(r, e) + return yt(r, e) } function jt(t) { var e = t._ownerWritableStream; return St(e) } - function Kt(t) { + function Ut(t) { var e = t._ownerWritableStream , r = e._state; return !0 === Pt(e) || "closed" === r ? _(void 0) : "errored" === r ? A(e._storedError) : jt(t) @@ -26849,8 +30787,8 @@ function Lt(t, e) { "pending" === t._closedPromiseState ? fe(t, e) : he(t, e) } - function Ut(t, e) { - "pending" === t._readyPromiseState ? ye(t, e) : Se(t, e) + function Kt(t, e) { + "pending" === t._readyPromiseState ? ve(t, e) : Se(t, e) } function Xt(t) { var e = t._ownerWritableStream @@ -26860,7 +30798,7 @@ function zt(t) { var e = t._ownerWritableStream , r = new TypeError("Writer was released and can no longer be used to monitor the stream's closedness"); - Ut(t, r), + Kt(t, r), Lt(t, r), e._writer = void 0, t._ownerWritableStream = void 0 @@ -26868,7 +30806,7 @@ function Gt(t, e) { var r = t._ownerWritableStream , n = r._writableStreamController - , i = Qt(n, e); + , i = Yt(n, e); if (r !== t._ownerWritableStream) return A(ce("write to")); var o = r._state; @@ -26882,38 +30820,38 @@ return $t(n, e, i), a } - var qt = function() { + var Wt = function() { function t() { throw new TypeError("WritableStreamDefaultController cannot be constructed explicitly") } return t.prototype.error = function(t) { - if (!1 === Wt(this)) + if (!1 === qt(this)) throw new TypeError("WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController"); var e = this._controlledWritableStream._state; "writable" === e && oe(this, t) } , - t.prototype[lt] = function(t) { + t.prototype[dt] = function(t) { var e = this._abortAlgorithm(t); - return Yt(this), + return Zt(this), e } , t.prototype[ft] = function() { - dt(this) + lt(this) } , t }(); - function Wt(t) { + function qt(t) { return !!o(t) && !!Object.prototype.hasOwnProperty.call(t, "_controlledWritableStream") } - function Vt(t, e, r, n, i, o, a, s) { + function Ht(t, e, r, n, i, o, a, s) { e._controlledWritableStream = t, t._writableStreamController = e, e._queue = void 0, e._queueTotalSize = void 0, - dt(e), + lt(e), e._started = !1, e._strategySizeAlgorithm = s, e._strategyHWM = a, @@ -26921,10 +30859,10 @@ e._closeAlgorithm = i, e._abortAlgorithm = o; var c = ie(e); - Nt(t, c); + Mt(t, c); var u = r() - , d = _(u); - E(d, (function() { + , l = _(u); + E(l, (function() { e._started = !0, te(e) } @@ -26934,27 +30872,27 @@ } )) } - function Ht(t, e, r, n) { - var i = Object.create(qt.prototype); + function Vt(t, e, r, n) { + var i = Object.create(Wt.prototype); function o() { return f(e, "start", [i]) } - var a = l(e, "write", 1, [i]) - , s = l(e, "close", 0, []) - , c = l(e, "abort", 1, []); - Vt(t, i, o, a, s, c, r, n) + var a = d(e, "write", 1, [i]) + , s = d(e, "close", 0, []) + , c = d(e, "abort", 1, []); + Ht(t, i, o, a, s, c, r, n) } - function Yt(t) { + function Zt(t) { t._writeAlgorithm = void 0, t._closeAlgorithm = void 0, t._abortAlgorithm = void 0, t._strategySizeAlgorithm = void 0 } - function Zt(t) { + function Qt(t) { ct(t, "close", 0), te(t) } - function Qt(t, e) { + function Yt(t, e) { try { return t._strategySizeAlgorithm(e) } catch (r) { @@ -26977,7 +30915,7 @@ var i = t._controlledWritableStream; if (!1 === Pt(i) && "writable" === i._state) { var o = ie(t); - Nt(i, o) + Mt(i, o) } te(t) } @@ -27002,7 +30940,7 @@ Dt(e), st(t); var r = t._closeAlgorithm(); - Yt(t), + Zt(t), E(r, (function() { Tt(e) } @@ -27021,12 +30959,12 @@ if (st(t), !1 === Pt(r) && "writable" === e) { var n = ie(t); - Nt(r, n) + Mt(r, n) } te(t) } ), (function(e) { - "writable" === r._state && Yt(t), + "writable" === r._state && Zt(t), Et(r, e) } )) @@ -27037,7 +30975,7 @@ } function oe(t, e) { var r = t._controlledWritableStream; - Yt(t), + Zt(t), _t(r, e) } function ae(t) { @@ -27057,11 +30995,11 @@ } )) } - function de(t, e) { + function le(t, e) { ue(t), fe(t, e) } - function le(t) { + function de(t) { ue(t), pe(t) } @@ -27073,7 +31011,7 @@ t._closedPromiseState = "rejected" } function he(t, e) { - de(t, e) + le(t, e) } function pe(t) { t._closedPromise_resolve(void 0), @@ -27091,20 +31029,20 @@ } function be(t, e) { me(t), - ye(t, e) + ve(t, e) } function ge(t) { me(t), we(t) } - function ye(t, e) { + function ve(t, e) { k(t._readyPromise), t._readyPromise_reject(e), t._readyPromise_resolve = void 0, t._readyPromise_reject = void 0, t._readyPromiseState = "rejected" } - function ve(t) { + function ye(t) { me(t) } function Se(t, e) { @@ -27121,7 +31059,7 @@ return !1; try { return "boolean" === typeof t.aborted - } catch (Q) { + } catch (Y) { return !1 } } @@ -27132,7 +31070,7 @@ try { return new t, !0 - } catch (Q) { + } catch (Y) { return !1 } } @@ -27152,19 +31090,19 @@ } var Ee = Ae(_e) ? _e : Ie(); function Te(t, e, n, i, o, a) { - var s = W(t) + var s = q(t) , c = pt(e); t._disturbed = !0; var u = !1 - , d = _(void 0); - return C((function(l, f) { + , l = _(void 0); + return C((function(d, f) { var h; if (void 0 !== a) { if (h = function() { var r = new Ee("Aborted","AbortError") , n = []; !1 === i && n.push((function() { - return "writable" === e._state ? vt(e, r) : _(void 0) + return "writable" === e._state ? yt(e, r) : _(void 0) } )), !1 === o && n.push((function() { @@ -27196,30 +31134,30 @@ function m() { return !0 === u ? _(!0) : I(c._readyPromise, (function() { return I(et(s), (function(t) { - return !0 === t.done || (d = I(Gt(c, t.value), void 0, r), + return !0 === t.done || (l = I(Gt(c, t.value), void 0, r), !1) } )) } )) } - if (y(t, s._closedPromise, (function(t) { + if (v(t, s._closedPromise, (function(t) { !1 === i ? S((function() { - return vt(e, t) + return yt(e, t) } ), !0, t) : w(!0, t) } )), - y(e, c._closedPromise, (function(e) { + v(e, c._closedPromise, (function(e) { !1 === o ? S((function() { return Br(t, e) } ), !0, e) : w(!0, e) } )), - v(t, s._closedPromise, (function() { + y(t, s._closedPromise, (function() { !1 === n ? S((function() { - return Kt(c) + return Ut(c) } )) : w() } @@ -27232,16 +31170,16 @@ ), !0, b) : w(!0, b) } function g() { - var t = d; - return I(d, (function() { - return t !== d ? g() : void 0 + var t = l; + return I(l, (function() { + return t !== l ? g() : void 0 } )) } - function y(t, e, r) { + function v(t, e, r) { "errored" === t._state ? r(t._storedError) : x(e, r) } - function v(t, e, r) { + function y(t, e, r) { "closed" === t._state ? r() : T(e, r) } function S(t, r, n) { @@ -27268,7 +31206,7 @@ zt(c), B(s), void 0 !== a && a.removeEventListener("abort", h), - t ? f(e) : l(void 0) + t ? f(e) : d(void 0) } k(p()) } @@ -27281,7 +31219,7 @@ return Object.defineProperty(t.prototype, "desiredSize", { get: function() { if (!1 === Pe(this)) - throw Ue("desiredSize"); + throw Ke("desiredSize"); return Be(this) }, enumerable: !0, @@ -27289,7 +31227,7 @@ }), t.prototype.close = function() { if (!1 === Pe(this)) - throw Ue("close"); + throw Ke("close"); if (!1 === je(this)) throw new TypeError("The stream is not in a state that permits close"); Re(this) @@ -27297,26 +31235,26 @@ , t.prototype.enqueue = function(t) { if (!1 === Pe(this)) - throw Ue("enqueue"); + throw Ke("enqueue"); if (!1 === je(this)) throw new TypeError("The stream is not in a state that permits enqueue"); - return Ne(this, t) + return Me(this, t) } , t.prototype.error = function(t) { if (!1 === Pe(this)) - throw Ue("error"); - Me(this, t) + throw Ke("error"); + Ne(this, t) } , t.prototype[G] = function(t) { - dt(this); + lt(this); var e = this._cancelAlgorithm(t); return Oe(this), e } , - t.prototype[q] = function() { + t.prototype[W] = function() { var t = this._controlledReadableStream; if (this._queue.length > 0) { var e = st(this); @@ -27324,7 +31262,7 @@ Fr(t)) : ke(this), _(R(e, !1, t._reader._forAuthorCode)) } - var r = V(t); + var r = H(t); return ke(this), r } @@ -27346,7 +31284,7 @@ ke(t)) } ), (function(e) { - Me(t, e) + Ne(t, e) } )) } else @@ -27358,7 +31296,7 @@ return !1; if (!1 === t._started) return !1; - if (!0 === Mr(e) && Y(e) > 0) + if (!0 === Nr(e) && Z(e) > 0) return !0; var r = Be(t); return r > 0 @@ -27374,30 +31312,30 @@ 0 === t._queue.length && (Oe(t), Fr(e)) } - function Ne(t, e) { + function Me(t, e) { var r = t._controlledReadableStream; - if (!0 === Mr(r) && Y(r) > 0) - H(r, e, !1); + if (!0 === Nr(r) && Z(r) > 0) + V(r, e, !1); else { var n = void 0; try { n = t._strategySizeAlgorithm(e) } catch (i) { - throw Me(t, i), + throw Ne(t, i), i } try { ct(t, e, n) } catch (o) { - throw Me(t, o), + throw Ne(t, o), o } } ke(t) } - function Me(t, e) { + function Ne(t, e) { var r = t._controlledReadableStream; - "readable" === r._state && (dt(t), + "readable" === r._state && (lt(t), Oe(t), jr(r, e)) } @@ -27413,11 +31351,11 @@ var e = t._controlledReadableStream._state; return !1 === t._closeRequested && "readable" === e } - function Ke(t, e, r, n, i, o, a) { + function Ue(t, e, r, n, i, o, a) { e._controlledReadableStream = t, e._queue = void 0, e._queueTotalSize = void 0, - dt(e), + lt(e), e._started = !1, e._closeRequested = !1, e._pullAgain = !1, @@ -27433,7 +31371,7 @@ ke(e) } ), (function(t) { - Me(e, t) + Ne(e, t) } )) } @@ -27442,15 +31380,15 @@ function o() { return f(e, "start", [i]) } - var a = l(e, "pull", 0, [i]) - , s = l(e, "cancel", 1, []); - Ke(t, i, o, a, s, r, n) + var a = d(e, "pull", 0, [i]) + , s = d(e, "cancel", 1, []); + Ue(t, i, o, a, s, r, n) } - function Ue(t) { + function Ke(t) { return new TypeError("ReadableStreamDefaultController.prototype." + t + " can only be used on a ReadableStreamDefaultController") } function Xe(t, e) { - var r, n, i, o, s, c = W(t), u = !1, d = !1, l = !1, f = C((function(t) { + var r, n, i, o, s, c = q(t), u = !1, l = !1, d = !1, f = C((function(t) { s = t } )); @@ -27462,22 +31400,22 @@ u = !1; var e = t.done; if (!0 === e) - return !1 === d && Re(i._readableStreamController), - void (!1 === l && Re(o._readableStreamController)); + return !1 === l && Re(i._readableStreamController), + void (!1 === d && Re(o._readableStreamController)); var r = t.value , n = r , a = r; - !1 === d && Ne(i._readableStreamController, n), - !1 === l && Ne(o._readableStreamController, a) + !1 === l && Me(i._readableStreamController, n), + !1 === d && Me(o._readableStreamController, a) } )); return k(t), _(void 0) } function p(e) { - if (d = !0, + if (l = !0, r = e, - !0 === l) { + !0 === d) { var i = a([r, n]) , o = Br(t, i); s(o) @@ -27485,9 +31423,9 @@ return f } function m(e) { - if (l = !0, + if (d = !0, n = e, - !0 === d) { + !0 === l) { var i = a([r, n]) , o = Br(t, i); s(o) @@ -27498,8 +31436,8 @@ return i = Or(b, h, p), o = Or(b, h, m), x(c._closedPromise, (function(t) { - Me(i._readableStreamController, t), - Me(o._readableStreamController, t) + Ne(i._readableStreamController, t), + Ne(o._readableStreamController, t) } )), [i, o] @@ -27513,7 +31451,7 @@ } return Object.defineProperty(t.prototype, "view", { get: function() { - if (!1 === Ve(this)) + if (!1 === He(this)) throw Sr("view"); return this._view }, @@ -27521,7 +31459,7 @@ configurable: !0 }), t.prototype.respond = function(t) { - if (!1 === Ve(this)) + if (!1 === He(this)) throw Sr("respond"); if (void 0 === this._associatedReadableByteStreamController) throw new TypeError("This BYOB request has been invalidated"); @@ -27530,7 +31468,7 @@ } , t.prototype.respondWithNewView = function(t) { - if (!1 === Ve(this)) + if (!1 === He(this)) throw Sr("respond"); if (void 0 === this._associatedReadableByteStreamController) throw new TypeError("This BYOB request has been invalidated"); @@ -27542,19 +31480,19 @@ , t }() - , qe = function() { + , We = function() { function t() { throw new TypeError("ReadableByteStreamController constructor cannot be used directly") } return Object.defineProperty(t.prototype, "byobRequest", { get: function() { - if (!1 === We(this)) + if (!1 === qe(this)) throw wr("byobRequest"); if (void 0 === this._byobRequest && this._pendingPullIntos.length > 0) { var t = this._pendingPullIntos.peek() , e = new Uint8Array(t.buffer,t.byteOffset + t.bytesFilled,t.byteLength - t.bytesFilled) , r = Object.create(Ge.prototype); - vr(r, this, e), + yr(r, this, e), this._byobRequest = r } return this._byobRequest @@ -27564,7 +31502,7 @@ }), Object.defineProperty(t.prototype, "desiredSize", { get: function() { - if (!1 === We(this)) + if (!1 === qe(this)) throw wr("desiredSize"); return pr(this) }, @@ -27572,18 +31510,18 @@ configurable: !0 }), t.prototype.close = function() { - if (!1 === We(this)) + if (!1 === qe(this)) throw wr("close"); if (!0 === this._closeRequested) throw new TypeError("The stream has already been closed; do not close it again!"); var t = this._controlledReadableByteStream._state; if ("readable" !== t) throw new TypeError("The stream (in " + t + " state) is not in the readable state and cannot be closed"); - lr(this) + dr(this) } , t.prototype.enqueue = function(t) { - if (!1 === We(this)) + if (!1 === qe(this)) throw wr("enqueue"); if (!0 === this._closeRequested) throw new TypeError("stream is closed or draining"); @@ -27597,7 +31535,7 @@ } , t.prototype.error = function(t) { - if (!1 === We(this)) + if (!1 === qe(this)) throw wr("error"); hr(this, t) } @@ -27607,13 +31545,13 @@ var e = this._pendingPullIntos.peek(); e.bytesFilled = 0 } - dt(this); + lt(this); var r = this._cancelAlgorithm(t); - return dr(this), + return lr(this), r } , - t.prototype[q] = function() { + t.prototype[W] = function() { var t = this._controlledReadableByteStream; if (this._queueTotalSize > 0) { var e = this._queue.shift(); @@ -27646,20 +31584,20 @@ }; this._pendingPullIntos.push(o) } - var a = V(t); - return He(this), + var a = H(t); + return Ve(this), a } , t }(); - function We(t) { + function qe(t) { return !!o(t) && !!Object.prototype.hasOwnProperty.call(t, "_controlledReadableByteStream") } - function Ve(t) { + function He(t) { return !!o(t) && !!Object.prototype.hasOwnProperty.call(t, "_associatedReadableByteStreamController") } - function He(t) { + function Ve(t) { var e = ur(t); if (!1 !== e) if (!0 !== t._pulling) { @@ -27668,7 +31606,7 @@ E(r, (function() { t._pulling = !1, !0 === t._pullAgain && (t._pullAgain = !1, - He(t)) + Ve(t)) } ), (function(e) { hr(t, e) @@ -27677,17 +31615,17 @@ } else t._pullAgain = !0 } - function Ye(t) { + function Ze(t) { rr(t), t._pendingPullIntos = new O } - function Ze(t, e) { + function Qe(t, e) { var r = !1; "closed" === t._state && (r = !0); - var n = Qe(e); - "default" === e.readerType ? H(t, n, r) : Ar(t, n, r) + var n = Ye(e); + "default" === e.readerType ? V(t, n, r) : Ar(t, n, r) } - function Qe(t) { + function Ye(t) { var e = t.bytesFilled , r = t.elementSize; return new t.ctor(t.buffer,t.byteOffset,e / r) @@ -27710,14 +31648,14 @@ , u = !1; a > n && (c = a - e.bytesFilled, u = !0); - var d = t._queue; + var l = t._queue; while (c > 0) { - var l = d.peek() - , f = Math.min(c, l.byteLength) + var d = l.peek() + , f = Math.min(c, d.byteLength) , h = e.byteOffset + e.bytesFilled; - s(e.buffer, h, l.buffer, l.byteOffset, f), - l.byteLength === f ? d.shift() : (l.byteOffset += f, - l.byteLength -= f), + s(e.buffer, h, d.buffer, d.byteOffset, f), + d.byteLength === f ? l.shift() : (d.byteOffset += f, + d.byteLength -= f), t._queueTotalSize -= f, tr(t, f, e), c -= f @@ -27729,8 +31667,8 @@ r.bytesFilled += e } function er(t) { - 0 === t._queueTotalSize && !0 === t._closeRequested ? (dr(t), - Fr(t._controlledReadableByteStream)) : He(t) + 0 === t._queueTotalSize && !0 === t._closeRequested ? (lr(t), + Fr(t._controlledReadableByteStream)) : Ve(t) } function rr(t) { void 0 !== t._byobRequest && (t._byobRequest._associatedReadableByteStreamController = void 0, @@ -27743,7 +31681,7 @@ return; var e = t._pendingPullIntos.peek(); !0 === $e(t, e) && (cr(t), - Ze(t._controlledReadableByteStream, e)) + Qe(t._controlledReadableByteStream, e)) } } function ir(t, e) { @@ -27770,7 +31708,7 @@ } if (t._queueTotalSize > 0) { if (!0 === $e(t, a)) { - var c = Qe(a); + var c = Ye(a); return er(t), _(R(c, !1, r._reader._forAuthorCode)) } @@ -27781,9 +31719,9 @@ } } t._pendingPullIntos.push(a); - var d = _r(r); - return He(t), - d + var l = _r(r); + return Ve(t), + l } function or(t, e) { e.buffer = p(e.buffer); @@ -27791,7 +31729,7 @@ if (!0 === Er(r)) while (Ir(r) > 0) { var n = cr(t); - Ze(r, n) + Qe(r, n) } } function ar(t, e, r) { @@ -27808,7 +31746,7 @@ } r.buffer = p(r.buffer), r.bytesFilled -= n, - Ze(t._controlledReadableByteStream, r), + Qe(t._controlledReadableByteStream, r), nr(t) } } @@ -27821,7 +31759,7 @@ or(t, r) } else ar(t, e, r); - He(t) + Ve(t) } function cr(t) { var e = t._pendingPullIntos.shift(); @@ -27836,18 +31774,18 @@ return !1; if (!1 === t._started) return !1; - if (!0 === Z(e) && Y(e) > 0) + if (!0 === Q(e) && Z(e) > 0) return !0; if (!0 === Er(e) && Ir(e) > 0) return !0; var r = pr(t); return r > 0 } - function dr(t) { + function lr(t) { t._pullAlgorithm = void 0, t._cancelAlgorithm = void 0 } - function lr(t) { + function dr(t) { var e = t._controlledReadableByteStream; if (t._queueTotalSize > 0) t._closeRequested = !0; @@ -27860,7 +31798,7 @@ n } } - dr(t), + lr(t), Fr(e) } } @@ -27870,23 +31808,23 @@ , i = e.byteOffset , o = e.byteLength , a = p(n); - if (!0 === Z(r)) - if (0 === Y(r)) + if (!0 === Q(r)) + if (0 === Z(r)) Je(t, a, i, o); else { var s = new Uint8Array(a,i,o); - H(r, s, !1) + V(r, s, !1) } else !0 === Er(r) ? (Je(t, a, i, o), nr(t)) : Je(t, a, i, o); - He(t) + Ve(t) } function hr(t, e) { var r = t._controlledReadableByteStream; - "readable" === r._state && (Ye(t), - dt(t), - dr(t), + "readable" === r._state && (Ze(t), + lt(t), + lr(t), jr(r, e)) } function pr(t) { @@ -27915,7 +31853,7 @@ e._pulling = !1, e._byobRequest = void 0, e._queue = e._queueTotalSize = void 0, - dt(e), + lt(e), e._closeRequested = !1, e._started = !1, e._strategyHWM = b(o), @@ -27927,27 +31865,27 @@ var s = r(); E(_(s), (function() { e._started = !0, - He(e) + Ve(e) } ), (function(t) { hr(e, t) } )) } - function yr(t, e, r) { - var n = Object.create(qe.prototype); + function vr(t, e, r) { + var n = Object.create(We.prototype); function i() { return f(e, "start", [n]) } - var o = l(e, "pull", 0, [n]) - , a = l(e, "cancel", 1, []) + var o = d(e, "pull", 0, [n]) + , a = d(e, "cancel", 1, []) , s = e.autoAllocateChunkSize; if (void 0 !== s && (s = Number(s), !1 === ze(s) || s <= 0)) throw new RangeError("autoAllocateChunkSize must be a positive integer"); gr(t, n, i, o, a, r, s) } - function vr(t, e, r) { + function yr(t, e, r) { t._associatedReadableByteStreamController = e, t._view = r } @@ -27988,13 +31926,13 @@ } var Tr = function() { function t(t) { - if (!Nr(t)) + if (!Mr(t)) throw new TypeError("ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a byte source"); - if (!1 === We(t._readableStreamController)) + if (!1 === qe(t._readableStreamController)) throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source"); - if (Mr(t)) + if (Nr(t)) throw new TypeError("This stream has already been locked for exclusive reading by another reader"); - N(this, t), + M(this, t), this._readIntoRequests = new O } return Object.defineProperty(t.prototype, "closed", { @@ -28005,7 +31943,7 @@ configurable: !0 }), t.prototype.cancel = function(t) { - return xr(this) ? void 0 === this._ownerReadableStream ? A(F("cancel")) : M(this, t) : A(kr("cancel")) + return xr(this) ? void 0 === this._ownerReadableStream ? A(F("cancel")) : N(this, t) : A(kr("cancel")) } , t.prototype.read = function(t) { @@ -28050,7 +31988,7 @@ throw new RangeError("The strategy for a byte stream cannot have a size function"); void 0 === n && (n = 0), n = b(n), - yr(this, t, n) + vr(this, t, n) } else { if (void 0 !== i) throw new RangeError("Invalid type is specified"); @@ -28062,23 +32000,23 @@ } return Object.defineProperty(t.prototype, "locked", { get: function() { - if (!1 === Nr(this)) - throw Kr("locked"); - return Mr(this) + if (!1 === Mr(this)) + throw Ur("locked"); + return Nr(this) }, enumerable: !0, configurable: !0 }), t.prototype.cancel = function(t) { - return !1 === Nr(this) ? A(Kr("cancel")) : !0 === Mr(this) ? A(new TypeError("Cannot cancel a stream that already has a reader")) : Br(this, t) + return !1 === Mr(this) ? A(Ur("cancel")) : !0 === Nr(this) ? A(new TypeError("Cannot cancel a stream that already has a reader")) : Br(this, t) } , t.prototype.getReader = function(t) { var e = (void 0 === t ? {} : t).mode; - if (!1 === Nr(this)) - throw Kr("getReader"); + if (!1 === Mr(this)) + throw Ur("getReader"); if (void 0 === e) - return W(this, !0); + return q(this, !0); if (e = String(e), "byob" === e) return Cr(this, !0); @@ -28093,20 +32031,20 @@ , a = i.preventAbort , s = i.preventCancel , c = i.signal; - if (!1 === Nr(this)) - throw Kr("pipeThrough"); + if (!1 === Mr(this)) + throw Ur("pipeThrough"); if (!1 === gt(r)) throw new TypeError("writable argument to pipeThrough must be a WritableStream"); - if (!1 === Nr(n)) + if (!1 === Mr(n)) throw new TypeError("readable argument to pipeThrough must be a ReadableStream"); if (o = Boolean(o), a = Boolean(a), s = Boolean(s), void 0 !== c && !Ce(c)) throw new TypeError("ReadableStream.prototype.pipeThrough's signal option must be an AbortSignal"); - if (!0 === Mr(this)) + if (!0 === Nr(this)) throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream"); - if (!0 === yt(r)) + if (!0 === vt(r)) throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream"); var u = Te(this, r, o, a, s, c); return k(u), @@ -28119,15 +32057,15 @@ , i = r.preventAbort , o = r.preventCancel , a = r.signal; - return !1 === Nr(this) ? A(Kr("pipeTo")) : !1 === gt(t) ? A(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream")) : (n = Boolean(n), + return !1 === Mr(this) ? A(Ur("pipeTo")) : !1 === gt(t) ? A(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream")) : (n = Boolean(n), i = Boolean(i), o = Boolean(o), - void 0 === a || Ce(a) ? !0 === Mr(this) ? A(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")) : !0 === yt(t) ? A(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")) : Te(this, t, n, i, o, a) : A(new TypeError("ReadableStream.prototype.pipeTo's signal option must be an AbortSignal"))) + void 0 === a || Ce(a) ? !0 === Nr(this) ? A(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")) : !0 === vt(t) ? A(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")) : Te(this, t, n, i, o, a) : A(new TypeError("ReadableStream.prototype.pipeTo's signal option must be an AbortSignal"))) } , t.prototype.tee = function() { - if (!1 === Nr(this)) - throw Kr("tee"); + if (!1 === Mr(this)) + throw Ur("tee"); var t = Xe(this); return a(t) } @@ -28135,8 +32073,8 @@ t.prototype.getIterator = function(t) { var e = (void 0 === t ? {} : t).preventCancel , r = void 0 !== e && e; - if (!1 === Nr(this)) - throw Kr("getIterator"); + if (!1 === Mr(this)) + throw Ur("getIterator"); return it(this, r) } , @@ -28151,7 +32089,7 @@ var o = Object.create(Dr.prototype); Rr(o); var a = Object.create(xe.prototype); - return Ke(o, a, t, e, r, n, i), + return Ue(o, a, t, e, r, n, i), o } function Rr(t) { @@ -28160,10 +32098,10 @@ t._storedError = void 0, t._disturbed = !1 } - function Nr(t) { + function Mr(t) { return !!o(t) && !!Object.prototype.hasOwnProperty.call(t, "_readableStreamController") } - function Mr(t) { + function Nr(t) { return void 0 !== t._reader } function Br(t, e) { @@ -28199,9 +32137,9 @@ } )), r._readIntoRequests = new O), - U(r, e)) + K(r, e)) } - function Kr(t) { + function Ur(t) { return new TypeError("ReadableStream.prototype." + t + " can only be used on a ReadableStream") } "symbol" === typeof e.asyncIterator && Object.defineProperty(Dr.prototype, e.asyncIterator, { @@ -28221,7 +32159,7 @@ , t }() - , Ur = function() { + , Kr = function() { function t(t) { var e = t.highWaterMark; this.highWaterMark = e @@ -28250,17 +32188,17 @@ var u = t.readableType; if (void 0 !== u) throw new RangeError("Invalid readable type specified"); - var d, l = g(o); + var l, d = g(o); void 0 === a && (a = 0), a = b(a); var h = C((function(t) { - d = t + l = t } )); - zr(this, h, i, c, a, l), - Qr(this, t); + zr(this, h, i, c, a, d), + Yr(this, t); var p = f(t, "start", [this._transformStreamController]); - d(p) + l(p) } return Object.defineProperty(t.prototype, "readable", { get: function() { @@ -28295,34 +32233,34 @@ function u() { return an(t) } - function d() { + function l() { return sn(t) } - function l(e) { - return Wr(t, e), + function d(e) { + return qr(t, e), _(void 0) } t._writable = mt(a, s, u, c, r, n), - t._readable = Or(a, d, l, i, o), + t._readable = Or(a, l, d, i, o), t._backpressure = void 0, t._backpressureChangePromise = void 0, t._backpressureChangePromise_resolve = void 0, - Vr(t, !0), + Hr(t, !0), t._transformStreamController = void 0 } function Gr(t) { return !!o(t) && !!Object.prototype.hasOwnProperty.call(t, "_transformStreamController") } - function qr(t, e) { - Me(t._readable._readableStreamController, e), - Wr(t, e) - } function Wr(t, e) { + Ne(t._readable._readableStreamController, e), + qr(t, e) + } + function qr(t, e) { Jr(t._transformStreamController), ee(t._writable._writableStreamController, e), - !0 === t._backpressure && Vr(t, !1) + !0 === t._backpressure && Hr(t, !1) } - function Vr(t, e) { + function Hr(t, e) { void 0 !== t._backpressureChangePromise && t._backpressureChangePromise_resolve(), t._backpressureChangePromise = C((function(e) { t._backpressureChangePromise_resolve = e @@ -28330,13 +32268,13 @@ )), t._backpressure = e } - var Hr = function() { + var Vr = function() { function t() { throw new TypeError("TransformStreamDefaultController instances cannot be created directly") } return Object.defineProperty(t.prototype, "desiredSize", { get: function() { - if (!1 === Yr(this)) + if (!1 === Zr(this)) throw cn("desiredSize"); var t = this._controlledTransformStream._readable._readableStreamController; return Be(t) @@ -28345,36 +32283,36 @@ configurable: !0 }), t.prototype.enqueue = function(t) { - if (!1 === Yr(this)) + if (!1 === Zr(this)) throw cn("enqueue"); $r(this, t) } , t.prototype.error = function(t) { - if (!1 === Yr(this)) + if (!1 === Zr(this)) throw cn("error"); tn(this, t) } , t.prototype.terminate = function() { - if (!1 === Yr(this)) + if (!1 === Zr(this)) throw cn("terminate"); rn(this) } , t }(); - function Yr(t) { + function Zr(t) { return !!o(t) && !!Object.prototype.hasOwnProperty.call(t, "_controlledTransformStream") } - function Zr(t, e, r, n) { + function Qr(t, e, r, n) { e._controlledTransformStream = t, t._transformStreamController = e, e._transformAlgorithm = r, e._flushAlgorithm = n } - function Qr(t, e) { - var r = Object.create(Hr.prototype) + function Yr(t, e) { + var r = Object.create(Vr.prototype) , n = function(t) { try { return $r(r, t), @@ -28391,8 +32329,8 @@ return h(i, e, [t, r]) } } - var o = l(e, "flush", 0, [r]); - Zr(t, r, n, o) + var o = d(e, "flush", 0, [r]); + Qr(t, r, n, o) } function Jr(t) { t._transformAlgorithm = void 0, @@ -28404,21 +32342,21 @@ if (!1 === je(n)) throw new TypeError("Readable side is not in a state that permits enqueue"); try { - Ne(n, e) + Me(n, e) } catch (o) { - throw Wr(r, o), + throw qr(r, o), r._readable._storedError } var i = Fe(n); - i !== r._backpressure && Vr(r, !0) + i !== r._backpressure && Hr(r, !0) } function tn(t, e) { - qr(t._controlledTransformStream, e) + Wr(t._controlledTransformStream, e) } function en(t, e) { var r = t._transformAlgorithm(e); return P(r, void 0, (function(e) { - throw qr(t._controlledTransformStream, e), + throw Wr(t._controlledTransformStream, e), e } )) @@ -28428,7 +32366,7 @@ , r = e._readable._readableStreamController; !0 === je(r) && Re(r); var n = new TypeError("TransformStream terminated"); - Wr(e, n) + qr(e, n) } function nn(t, e) { var r = t._transformStreamController; @@ -28446,7 +32384,7 @@ return en(r, e) } function on(t, e) { - return qr(t, e), + return Wr(t, e), _(void 0) } function an(t) { @@ -28461,13 +32399,13 @@ !0 === je(t) && Re(t) } ), (function(r) { - throw qr(t, r), + throw Wr(t, r), e._storedError } )) } function sn(t) { - return Vr(t, !1), + return Hr(t, !1), t._backpressureChangePromise } function cn(t) { @@ -28477,7 +32415,7 @@ return new TypeError("TransformStream.prototype." + t + " can only be used on a TransformStream") } t.ByteLengthQueuingStrategy = Lr, - t.CountQueuingStrategy = Ur, + t.CountQueuingStrategy = Kr, t.ReadableStream = Dr, t.TransformStream = Xr, t.WritableStream = ht, @@ -28505,17 +32443,17 @@ try { throw new Error } catch (h) { - var r, n, i, o = /.*at [^(]*\((.*):(.+):(.+)\)$/gi, a = /@([^@]*):(\d+):(\d+)\s*$/gi, s = o.exec(h.stack) || a.exec(h.stack), c = s && s[1] || !1, u = s && s[2] || !1, d = document.location.href.replace(document.location.hash, ""), l = document.getElementsByTagName("script"); - c === d && (r = document.documentElement.outerHTML, + var r, n, i, o = /.*at [^(]*\((.*):(.+):(.+)\)$/gi, a = /@([^@]*):(\d+):(\d+)\s*$/gi, s = o.exec(h.stack) || a.exec(h.stack), c = s && s[1] || !1, u = s && s[2] || !1, l = document.location.href.replace(document.location.hash, ""), d = document.getElementsByTagName("script"); + c === l && (r = document.documentElement.outerHTML, n = new RegExp("(?:[^\\n]+?\\n){0," + (u - 2) + "}[^<]* + - @@ -46,17 +42,17 @@ See https://github.com/adobe-type-tools/cmap-resources
-
- - - -
@@ -88,13 +84,13 @@ See https://github.com/adobe-type-tools/cmap-resources