@abi-software/scaffoldvuer 0.1.52-beta.2 → 0.1.52-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scaffoldvuer.common.js +614 -279
- package/dist/scaffoldvuer.common.js.map +1 -1
- package/dist/scaffoldvuer.css +1 -1
- package/dist/scaffoldvuer.umd.js +614 -279
- package/dist/scaffoldvuer.umd.js.map +1 -1
- package/dist/scaffoldvuer.umd.min.js +1 -1
- package/dist/scaffoldvuer.umd.min.js.map +1 -1
- package/package-lock.json +1396 -2470
- package/package.json +4 -3
- package/src/App.vue +45 -46
- package/src/components/DropZone.vue +91 -0
- package/src/components/ScaffoldTooltip.vue +117 -0
- package/src/components/ScaffoldVuer.vue +72 -48
- package/src/components/TreeControls.vue +633 -0
- package/src/scripts/RendererModule.js +21 -14
- package/src/scripts/eventNotifier.js +1 -1
- package/src/scripts/organsRenderer.js +24 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://scaffoldvuer/webpack/universalModuleDefinition","webpack://scaffoldvuer/webpack/bootstrap","webpack://scaffoldvuer/external \"core-js/modules/es.symbol.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/checkbox-group\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/checkbox-group.css\"","webpack://scaffoldvuer/external \"element-ui/lib/select\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/select.css\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.for-each\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.concat\"","webpack://scaffoldvuer/external \"element-ui/lib/container\"","webpack://scaffoldvuer/external \"core-js/modules/web.dom-collections.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/main\"","webpack://scaffoldvuer/external \"core-js/modules/es.object.keys\"","webpack://scaffoldvuer/./src/components/OpacityControls.vue?cbe9","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://scaffoldvuer/external \"core-js/modules/web.url\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://scaffoldvuer/external \"element-ui/lib/header\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tabs.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.number.to-fixed\"","webpack://scaffoldvuer/external \"element-ui/lib/tab-pane\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/color-picker.css\"","webpack://scaffoldvuer/external \"element-ui/lib/drawer\"","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?1453","webpack://scaffoldvuer/external \"@abi-software/svg-sprite\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://scaffoldvuer/external \"element-ui/lib/color-picker\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/drawer.css\"","webpack://scaffoldvuer/external \"lodash/uniq\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/header.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.symbol.description\"","webpack://scaffoldvuer/external \"core-js/modules/es.regexp.exec\"","webpack://scaffoldvuer/./src/scripts/organsRenderer.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/checkbox.css\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://scaffoldvuer/./src/scripts/graphicsHighlight.js","webpack://scaffoldvuer/external \"core-js/modules/es.regexp.to-string\"","webpack://scaffoldvuer/external \"core-js/modules/es.symbol\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?7756","webpack://scaffoldvuer/external \"core-js/modules/es.array.slice\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://scaffoldvuer/external \"lodash/orderBy\"","webpack://scaffoldvuer/./src/scripts/BaseModule.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.index-of\"","webpack://scaffoldvuer/external \"element-ui/lib/locale/lang/en\"","webpack://scaffoldvuer/external \"element-ui/lib/row\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/typeof.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/col.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/main.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.splice\"","webpack://scaffoldvuer/external \"element-ui/lib/locale\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/option.css\"","webpack://scaffoldvuer/./src/scripts/RendererModule.js","webpack://scaffoldvuer/external \"core-js/modules/es.object.to-string\"","webpack://scaffoldvuer/external \"vue\"","webpack://scaffoldvuer/external \"element-ui/lib/tabs\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/icon.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.string.iterator\"","webpack://scaffoldvuer/external \"zincjs\"","webpack://scaffoldvuer/external \"element-ui/lib/popover\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/slider.css\"","webpack://scaffoldvuer/./src/scripts/annotation.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tab-pane.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/base.css\"","webpack://scaffoldvuer/./src/scripts/eventNotifier.js","webpack://scaffoldvuer/external \"@soda/get-current-script\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?4e3a","webpack://scaffoldvuer/external \"element-ui/lib/col\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/popover.css\"","webpack://scaffoldvuer/external \"element-ui/lib/slider\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.includes\"","webpack://scaffoldvuer/external \"element-ui/lib/loading\"","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?54dd","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/container.css\"","webpack://scaffoldvuer/external \"element-ui/lib/icon\"","webpack://scaffoldvuer/external \"element-ui/lib/checkbox\"","webpack://scaffoldvuer/external \"core-js/modules/es.function.name\"","webpack://scaffoldvuer/external \"core-js/modules/web.dom-collections.for-each\"","webpack://scaffoldvuer/external \"core-js/modules/es.string.replace\"","webpack://scaffoldvuer/external \"element-ui/lib/option\"","webpack://scaffoldvuer/./src/scripts/WebGL.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/readOnlyError.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.from\"","webpack://scaffoldvuer/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?012b","webpack://scaffoldvuer/./src/components/OpacityControls.vue?593c","webpack://scaffoldvuer/src/components/OpacityControls.vue","webpack://scaffoldvuer/./src/components/OpacityControls.vue?c7a4","webpack://scaffoldvuer/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://scaffoldvuer/./src/components/OpacityControls.vue","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?34cc","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://scaffoldvuer/src/components/TraditionalControls.vue","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?54bd","webpack://scaffoldvuer/./src/components/TraditionalControls.vue","webpack://scaffoldvuer/src/components/ScaffoldVuer.vue","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?13bd","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue","webpack://scaffoldvuer/external \"core-js/modules/es.string.includes\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/row.css\""],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","_nonIterableSpread","TypeError","_iterableToArray","iter","iterator","Array","from","arrayLikeToArray","_arrayWithoutHoles","arr","isArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_toConsumableArray","THREE","OrgansSceneData","currentName","currentSystem","currentPart","currentSpecies","metaURL","viewURL","geometries","lines","glyphsets","pointsets","currentTime","timeVarying","OrgansViewer","ModelsLoaderIn","RendererModule","_this","pickerScene","undefined","sceneData","timeChangedCallbacks","sceneChangedCallbacks","organPartAddedCallbacks","finishDownloadCallback","modelsLoader","NDCCameraControl","typeName","getSceneData","updateTime","duration","scene","getDuration","actualTime","nerveMapIsActive","setMorphsTime","preRenderTimeUpdate","zincRenderer","getCurrentTime","length","nerveMap","additionalReader","setTime","toggleSyncControl","flag","cameraControl","getZincCameraControls","resetView","enableSyncControl","disableSyncControl","isSyncControl","setSyncControlZoomToBox","box","zoomToBox","setSyncControlCallback","callback","setEventCallback","setSyncControlCenterZoom","center","zoom","setCenterZoom","postRenderSelectedCoordinatesUpdate","selectedCenter","vector","Vector3","copy","coord","vectorToScreenXY","selectedScreenCoordinates","x","y","preRenderUpdateCallback","postRenderUpdateCallback","addTimeChangedCallback","push","setTexturePos","setSliderPos","addSceneChangedCallback","addOrganPartAddedCallback","setFinishDownloadCallback","unsetFinishDownloadCallback","getNamedObjectsToScreenCoordinates","camera","setFromMatrixPosition","obj","matrixWorld","widthHalf","width","heightHalf","height","project","getIdObjectFromIntersect","intersected","id","intersectedObject","userData","isMarker","parent","morph","annotations","getAnnotationsFromObjects","data","group","_pickingCallback","intersects","window_x","window_y","getIntersectedObject","idObject","isGlyph","setSelectedByObjects","setSelectedByZincObject","getGlyphset","_hoverCallback","displayArea","style","cursor","setHighlightedByObjects","changeOrganPartsVisibilityForScene","type","findGeometriesWithGroupName","setVisibility","findGlyphsetsWithGroupName","findPointsetsWithGroupName","findLinesWithGroupName","changeGeometriesVisibility","changeGlyphsetsVisibility","changeLinesVisibility","changePointsetsVisibility","changeOrganPartsVisibility","typeIn","changeOrganPartsVisibilityCallback","changeBackgroundColour","backgroundColourString","colour","Color","internalRenderer","getThreeJSRenderer","setClearColor","addOrganPartToSceneData","zincObject","groupName","isGeometry","includes","isGlyphset","isLines","isPointset","addOrganPart","systemName","partName","useDefautColour","isTimeVarying","setGeometryColour","annotation","species","system","part","_addOrganPartCallback","downloadCompletedCallback","settingsChanged","updateFieldvisibility","dataFields","geometryName","PartName","partDetails","getOrganDetails","SystemName","loadMetadataURL","getOrgansDirectoryPrefix","meta","getAvailableSpecies","availableSpecies","keysArray","keys","organsFileMap","index","setSceneData","speciesName","organsDetails","splice","loadOrgansFromURL","url","organScene","getSceneByName","clearAll","createScene","loadViewURL","setCurrentScene","graphicsHighlight","reset","zincCameraControl","enableRaycaster","setMouseButtonAction","alignCameraWithSelectedObject","transitionTime","objects","getSelected","alignObjectToCameraView","exportSettings","settings","instanceName","dialog","importSettings","setName","loadOrgans","initialise","initialiseRenderer","addPreRenderCallbackFunction","addPostRenderCallbackFunction","_arrayLikeToArray","len","arr2","GraphicsHighlight","currentHighlightedObjects","currentSelectedObjects","highlightColour","selectColour","originalColour","isDifferent","array1","array2","matched","j","getUnmatchingObjects","objectsArray1","objectsArray2","unmatchingObjects","setHighlighted","previousHighlightedObjects","resetHighlighted","array","fullList","getFullListOfObjects","material","emissive","setRGB","setSelected","previousHSelectedObjects","resetSelected","depthFunc","LessEqualDepth","_unsupportedIterableToArray","minLen","toString","slice","constructor","test","MODULE_CHANGE","ALL","DESTROYED","NAME_CHANGED","SETTINGS_CHANGED","BaseModule","onChangedCallbacks","eventNotifiers","callbackArray","publishChanges","eventType","publish","getName","destroy","addChangedCallback","removeChangedCallback","indexOf","addNotifier","eventNotifier","_typeof","createRenderer","WEBGL","localContainer","document","createElement","localRenderer","isWebGLAvailable","Zinc","Renderer","window","defaultMaterialColor","initialiseVisualisation","playAnimation","warning","getWebGLErrorMessage","appendChild","rendererContainer","isZincObject","count","glyphset","propagateChanges","changed","EVENT_TYPE","HIGHLIGHTED","setHighlightedByZincObject","setupLiveCoordinates","zincObjects","boundingBox","getBoundingBoxOfZincObjects","newSelectedCenter","getCenter","objectsToZincObjects","SELECTED","addGlyphToArray","glyph","getMesh","findObjectsByGroupName","forEachGlyph","setHighlightedByGroupName","setSelectedByGroupName","viewAll","setPlayRate","getPlayRate","displayAreaIn","returnedValue","animate","dispose","isAnnotation","SelectionEvent","eventTypeIn","identifiersIn","identifiers","Subscription","subscriberIn","callbackIn","targetedID","subscriber","targetEventType","getEventType","notify","source","ids","event","EventNotifier","subscriptions","subscribe","callbackFunction","subscription","unsubscribe","canvas","WebGLRenderingContext","getContext","e","isWebGL2Available","WebGL2RenderingContext","getErrorMessage","getWebGL2ErrorMessage","version","names","1","2","contexts","message","element","fontFamily","fontSize","fontWeight","textAlign","background","color","padding","margin","replace","innerHTML","_readOnlyError","Error","currentScript","getCurrentScript","src","match","render","_vm","_h","$createElement","_c","_self","directives","rawName","expression","ref","staticClass","attrs","staticStyle","on","$event","keyCode","backgroundChangeCallback","displayUI","isTransitioning","warningMessage","model","hoverVisabilities","$$v","$set","_e","arg","showToolitip","hideToolitip","_v","helpMode","$module","showColourPicker","objectSelected","objectHovered","drawerToggled","class","minimisedSlider","sliderPosition","nativeOn","play","timeMax","formatTooltip","timeStamps","timeChange","_s","orginalDuration","animateDuration","currentSpeed","speedChanged","_l","item","label","zoomIn","slot","zoomOut","fitWindow","currentBackground","open","drawerOpen","close","staticRenderFns","toggleDrawer","displayString","watch","_zincobject","setAlpha","opacity","mounted","methods","Math","floor","val","setObject","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","component","isIndeterminate","handleCheckAllChange","checkAll","handleCheckedItemsChange","checkedItems","activeItem","activeRegion","hoverItem","hoverRegion","visibilityToggle","itemClicked","checkboxHover","getColour","myPopperClass","setColour","props","default","Boolean","sortedPrimitiveGroups","immediate","handler","created","tmpArray","uniq","pointset","orderBy","organsAdded","destroyed","changeActiveByName","targetObject","getVisibility","$emit","propagate","removeActive","removeHover","changeHoverByName","clear","getFirstZincObjectWithGroupName","graphic","hex","setColourHex","hexString","preventDefault","unnamed","checkedCount","getState","setState","state","components","OpacityControls","MapSvgIcon","MapSvgSpriteColor","TraditionalControls","String","displayAtStartUp","displayWarning","displayMarkers","displayMinimap","minimapSettings","x_offset","y_offset","align","region","isPlaying","tooltipAppendToBody","inHelp","loading","availableBackground","playSpeed","setFocusedRegion","deep","updateViewURL","setHelpMode","setDuration","toggleRendering","isReady","selectedObject","hoveredObject","_currentURL","eventNotifierCallback","$refs","display","ro","ResizeObserver","adjustLayout","observe","defaultRate","beforeDestroy","disconnect","captureScreenshotCallback","removePostRenderCallbackFunction","body","append","hrefElement","captureFilename","download","href","screenshot","click","remove","captureScreenshot","filename","captureID","min","sec","toFixed","changeZoomByScrollRateUnit","speed","stopFreeSpin","cameracontrol","stopAutoTumble","viewRegion","viewAllWithBoundingBox","getRendererInfo","info","freeSpin","enableAutoTumble","autoTumble","PI","setTimeout","traditionalControl","getCoordinatesOfSelected","getObjectsScreenXY","getDynamicSelectedCoordinates","normalizedTime","opacityControl","changeHighlightedByName","forEach","tooltipWait","tooltipNumber","clearTimeout","updateMinimapScissor","minimapScissor","updateRequired","updateSettingsfromScene","getMetadataTag","setURLFinishCallback","viewport","visibility","zincCameraControls","getCurrentViewport","setURLAndState","exportGLTF","binary","newValue","setURL","stopAnimate","forceResize","onWindowResize","syncControlCallback","payload"],"mappings":"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","file":"scaffoldvuer.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"scaffoldvuer\"] = factory();\n\telse\n\t\troot[\"scaffoldvuer\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/checkbox-group\");","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","module.exports = require(\"element-ui/lib/theme-chalk/checkbox-group.css\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","module.exports = require(\"core-js/modules/es.array.for-each\");","module.exports = require(\"core-js/modules/es.array.concat\");","module.exports = require(\"element-ui/lib/container\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"element-ui/lib/main\");","module.exports = require(\"core-js/modules/es.object.keys\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=style&index=0&id=4c00a30f&scoped=true&lang=scss&\"","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","module.exports = require(\"element-ui/lib/header\");","module.exports = require(\"element-ui/lib/theme-chalk/tabs.css\");","module.exports = require(\"core-js/modules/es.number.to-fixed\");","module.exports = require(\"element-ui/lib/tab-pane\");","module.exports = require(\"element-ui/lib/theme-chalk/color-picker.css\");","module.exports = require(\"element-ui/lib/drawer\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&\"","module.exports = require(\"@abi-software/svg-sprite\");","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","module.exports = require(\"element-ui/lib/color-picker\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"lodash/uniq\");","module.exports = require(\"element-ui/lib/theme-chalk/header.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","const THREE = require('zincjs').THREE;\n// Current model's associate data, data fields, external link, nerve map\n// informations,\n// these are proived in the organsFileMap array.\nconst OrgansSceneData = function() {\n this.currentName = \"\";\n this.currentSystem = \"\";\n this.currentPart = \"\";\n this.currentSpecies = \"\";\n this.metaURL = \"\";\n this.viewURL = \"\";\n this.geometries = [];\n this.lines = [];\n this.glyphsets = [];\n this.pointsets = [];\n this.currentTime = 0.0;\n this.timeVarying = false;\n}\n\n/**\n * Viewer of 3D-organs models. Users can toggle on/off different views. Data is\n * displayed instead if models are not available.\n * \n * @class\n * @param {PJP.ModelsLoader}\n * ModelsLoaderIn - defined in modelsLoade.js, providing locations of\n * files.\n * @param {String}\n * PanelName - Id of the target element to create the\n * {@link PJP.OrgansViewer} on.\n * @author Alan Wu\n * @returns {PJP.OrgansViewer}\n */\n const OrgansViewer = function(ModelsLoaderIn) {\n (require('./RendererModule').RendererModule).call(this);\n const _this = this;\n\tlet pickerScene = undefined;\n\tthis.sceneData = new OrgansSceneData();\n\tconst timeChangedCallbacks = new Array();\n\tconst sceneChangedCallbacks = new Array();\n const organPartAddedCallbacks = new Array();\n let finishDownloadCallback = undefined;\n\tconst modelsLoader = ModelsLoaderIn;\n this.NDCCameraControl = undefined;\n\t_this.typeName = \"Organ Viewer\";\n\t\n\tthis.getSceneData = function() {\n\t return _this.sceneData;\n\t}\n\n\t/**\n\t * Used to update internal timer in scene when time slider has changed.\n\t */\n\tthis.updateTime = function(value) {\n let duration = 6000;\n if (_this.scene)\n duration = _this.scene.getDuration();\n const actualTime = value / 100.0 * duration;\n\t\tif (!_this.sceneData.nerveMapIsActive) {\n\t\t\tif (pickerScene)\n\t\t\t\tpickerScene.setMorphsTime(actualTime);\n\t\t\tif (_this.scene)\n\t\t\t\t_this.scene.setMorphsTime(actualTime);\n\t\t}\n\t\t_this.sceneData.currentTime = value;\n\t}\n\t\n\t/**\n\t * Update the time slider and other renderers/scenes when time has changed.\n\t */\n const preRenderTimeUpdate = function() {\n let duration = 3000;\n if (_this.scene)\n duration = _this.scene.getDuration();\n const currentTime = _this.zincRenderer.getCurrentTime();\n\t\tfor (let i = 0; i < timeChangedCallbacks.length;i++) {\n\t\t\ttimeChangedCallbacks[i](currentTime);\n\t\t}\n\t\tif (!_this.sceneData.nerveMapIsActive && pickerScene)\n\t\t\tpickerScene.setMorphsTime(currentTime);\n\t\tif (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)\n _this.sceneData.nerveMap.additionalReader.setTime(currentTime / \n duration);\n\t\t_this.sceneData.currentTime = currentTime / duration * 100.0;\n }\n\n this.toggleSyncControl = (flag) => {\n let cameraControl = this.scene.getZincCameraControls();\n if (flag) {\n cameraControl.resetView();\n this.NDCCameraControl = cameraControl.enableSyncControl();\n } else {\n cameraControl.disableSyncControl();\n this.NDCCameraControl = undefined;\n }\n }\n\n this.isSyncControl = () => {\n return this.NDCCameraControl !== undefined;\n }\n\n this.setSyncControlZoomToBox = (box) => {\n if (this.NDCCameraControl) {\n this.NDCCameraControl.zoomToBox(box, 2);\n }\n }\n\n this.setSyncControlCallback = (callback) => {\n if (this.NDCCameraControl) {\n this.NDCCameraControl.setEventCallback(callback);\n }\n }\n\n this.setSyncControlCenterZoom = (center, zoom) => {\n if (this.NDCCameraControl) {\n this.NDCCameraControl.setCenterZoom(center, zoom);\n }\n }\n \n const postRenderSelectedCoordinatesUpdate = function() {\n if (_this.selectedCenter) {\n const vector = new THREE.Vector3();\n vector.copy(_this.selectedCenter);\n const coord = _this.scene.vectorToScreenXY(vector);\n _this.selectedScreenCoordinates.x = coord.x;\n _this.selectedScreenCoordinates.y = coord.y;\n }\n }\n\t\n\tconst preRenderUpdateCallback = function() {\n\t\treturn function() {\n preRenderTimeUpdate();\n\t\t}\n }\n \n const postRenderUpdateCallback = function() {\n\t\treturn function() {\n postRenderSelectedCoordinatesUpdate();\n\t\t}\n\t}\n\t\n\t /**\n\t\t * Add a callback which will be called when time has changed\n\t\t */\n\tthis.addTimeChangedCallback = function(callback) {\n\t if (typeof(callback === \"function\"))\n\t timeChangedCallbacks.push(callback);\n\t}\n\t\n\tthis.setTexturePos = function(value) {\n\t\tif (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)\n\t\t\t_this.sceneData.nerveMap.additionalReader.setSliderPos(value);\n\t}\n\n\tthis.addSceneChangedCallback = function(callback) {\n\t if (typeof(callback === \"function\")) {\n\t sceneChangedCallbacks.push(callback);\n\t }\n\t}\n\t\n\tthis.addOrganPartAddedCallback = function(callback) {\n if (typeof(callback === \"function\"))\n organPartAddedCallbacks.push(callback);\n }\n\n this.setFinishDownloadCallback = function(callback) {\n if (typeof(callback === \"function\"))\n finishDownloadCallback = callback;\n }\n\n this.unsetFinishDownloadCallback = function() {\n finishDownloadCallback = undefined;\n }\n\n this.getNamedObjectsToScreenCoordinates = function(name, camera) {\n const vector = new THREE.Vector3();\n vector.setFromMatrixPosition( obj.matrixWorld );\n const widthHalf = (width/2);\n const heightHalf = (height/2);\n vector.project(camera);\n vector.x = ( vector.x * widthHalf ) + widthHalf;\n vector.y = - ( vector.y * heightHalf ) + heightHalf;\n return vector;\n }\n\n const getIdObjectFromIntersect = function(intersected) {\n let id = undefined;\n let intersectedObject = undefined;\n if (intersected !== undefined) {\n if (intersected.object.userData && \n intersected.object.userData.isMarker) {\n intersectedObject = intersected.object.userData.parent.morph;\n } else {\n intersectedObject = intersected.object;\n }\n if (intersectedObject) {\n if (intersectedObject.name) {\n id = intersectedObject.name;\n } else {\n const annotations = _this.getAnnotationsFromObjects(\n [intersectedObject]);\n if (annotations && annotations[0]) {\n id = annotations[0].data.group;\n }\n }\n }\n }\n return {\"id\":id, \"object\":intersectedObject};\n }\n\t \n\t/**\n\t * Callback function when a pickable object has been picked. It will then\n\t * call functions in tissueViewer and cellPanel to show corresponding\n\t * informations.\n\t * \n\t * @callback\n\t */\n const _pickingCallback = function() {\n\t\treturn function(intersects, window_x, window_y) {\n const intersected = _this.getIntersectedObject(intersects);\n const idObject = getIdObjectFromIntersect(intersected);\n if (idObject.id) {\n if (idObject.object.userData.isGlyph) {\n if (idObject.object.name)\n _this.setSelectedByObjects([idObject.object], true);\n else\n _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);\n } else {\n _this.setSelectedByObjects([idObject.object], true);\n }\n return;\n } else {\n\t\t\t\t_this.setSelectedByObjects([], true);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t/**\n\t * Callback function when a pickable object has been hovered over.\n\t * \n\t * @callback\n\t */\n const _hoverCallback = function() {\n\t\treturn function(intersects, window_x, window_y) {\n const intersected = _this.getIntersectedObject(intersects);\n const idObject = getIdObjectFromIntersect(intersected);\n if (idObject.id) {\n _this.displayArea.style.cursor = \"pointer\";\n _this.setHighlightedByObjects([idObject.object], true);\n return;\n }\n else {\n\t\t\t\t_this.displayArea.style.cursor = \"auto\";\n\t\t\t\t_this.setHighlightedByObjects([], true);\n }\n\t\t}\n\t};\n\n\tconst changeOrganPartsVisibilityForScene = function(scene, name, value, type) {\n\t\tif (type == \"all\" || type == \"geometries\") {\n\t\t\tconst geometries = scene.findGeometriesWithGroupName(name);\n\t\t\tfor (let i = 0; i < geometries.length; i ++ ) {\n\t\t\t\tgeometries[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"glyphsets\") {\n\t\t\tconst glyphsets = scene.findGlyphsetsWithGroupName(name);\n\t\t\tfor (let i = 0; i < glyphsets.length; i ++ ) {\n\t\t\t\tglyphsets[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"pointsets\") {\n\t\t\tconst pointsets = scene.findPointsetsWithGroupName(name);\n\t\t\tfor (let i = 0; i < pointsets.length; i ++ ) {\n\t\t\t\tpointsets[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"lines\") {\n\t\t\tconst lines = scene.findLinesWithGroupName(name);\n\t\t\tfor (let i = 0; i < lines.length; i ++ ) {\n\t\t\t\tlines[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeGeometriesVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeGlyphsetsVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeLinesVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changePointsetsVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');\n }\n \t\t\t\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeOrganPartsVisibility = function(name, value, typeIn) {\n\t\tlet type = \"all\";\n\t\tif (typeIn !== undefined)\n\t\t\ttype = typeIn;\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, type);\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, type);\n\t}\n\t\n\tthis.changeOrganPartsVisibilityCallback = function(name) {\n\t\treturn function(value) {\n\t\t\t_this.changeOrganPartsVisibility(name, value);\n\t\t}\n\t}\n\t\t\t\n\tthis.changeBackgroundColour = function(backgroundColourString) {\n\t\tconst colour = new THREE.Color(backgroundColourString);\n\t\tif (_this.zincRenderer) {\n\t\t\tconst internalRenderer = _this.zincRenderer.getThreeJSRenderer();\n\t\t\tinternalRenderer.setClearColor( colour, 1 );\n\t\t}\n\t}\n\n\tconst addOrganPartToSceneData = function(zincObject) {\n\t\tif (zincObject.groupName) {\n\t\t\tif (zincObject.isGeometry) {\n\t\t\t\tif (!_this.sceneData.geometries.includes(zincObject.groupName)) {\n\t\t\t\t\t_this.sceneData.geometries.push(zincObject.groupName);\n\t\t\t\t}\n\t\t\t} else if (zincObject.isGlyphset) {\n\t\t\t\tif (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {\n\t\t\t\t\t_this.sceneData.glyphsets.push(zincObject.groupName);\n\t\t\t\t}\n\t\t\t} else if (zincObject.isLines) {\n\t\t\t\tif (!_this.sceneData.lines.includes(zincObject.groupName)) {\n\t\t\t\t\t_this.sceneData.lines.push(zincObject.groupName);\n\t\t\t\t}\n\t\t\t} else if (zincObject.isPointset) {\n\t\t\t\tif (!_this.sceneData.pointsets.includes(zincObject.groupName)) {\n\t\t\t\t\t_this.sceneData.pointsets.push(zincObject.groupName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst addOrganPart = function(systemName, partName, useDefautColour, zincObject) {\n for (let i = 0; i < organPartAddedCallbacks.length;i++) {\n organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);\n }\n if (useDefautColour)\n modelsLoader.setGeometryColour(zincObject, systemName, partName);\n addOrganPartToSceneData(zincObject);\n\t\tconst annotation = new (require('./annotation').annotation)();\n\t\tannotation.data = {species:_this.sceneData.currentSpecies, system:systemName, part:partName, group:zincObject.groupName};\n\t\tzincObject.userData = [annotation];\n\t}\n\n\t /**\n\t\t * New organs geometry has been added to the scene, add UIs and make\n\t\t * sure the viewport is correct.\n\t\t */\n\t const _addOrganPartCallback = function(systemName, partName, useDefautColour) {\n\t return function(zincObject) {\n\t \taddOrganPart(systemName, partName, useDefautColour, zincObject);\n\t }\n\t }\n\t \n\t const downloadCompletedCallback = function() {\n\t\t return function() {\n\t\t\t _this.settingsChanged();\n\t\t\t _this.sceneData.timeVarying = _this.scene.isTimeVarying();\n if (finishDownloadCallback)\n finishDownloadCallback();\n\t\t }\n\t }\n\t \n\t const singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {\n return function(geometry) {\n addOrganPart(systemName, partName, useDefautColour, geometry);\n _this.settingsChanged();\n }\n\t }\n\t \n\t /**\n\t\t * Toggle data field displays. Data fields displays flow/pressure and <button @click=\"play\">Play</button>\n\t\t * other activities of the organs.\n\t\t */\n\t this.updateFieldvisibility = function(dataFields, value) {\n for ( let i = 0; i < dataFields.length; i ++ ) {\n if (value != i) {\n const geometryName = dataFields[i].PartName;\n _this.changeOrganPartsVisibility(geometryName, false);\n }\n }\n if (value > -1) {\n const partName = dataFields[value].PartName;\n if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||\n (_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {\n _this.changeOrganPartsVisibility(partName, true);\n } else {\n const partDetails = getOrganDetails(dataFields[value].SystemName, partName);\n if (partDetails != undefined) {\n _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + \"/\" + partDetails.meta);\n }\n }\n\t }\n\t }\n\t \n\t /**\n\t\t * Return an array containing name(s) of species that also contains the\n\t\t * currently displayed organs.\n\t\t * \n\t\t * @returns {Array} containing species name\n\t\t */\n\t this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {\n\t const availableSpecies = new Array();\n\t availableSpecies.push(\"none\");\n\t const keysArray = Object.keys(organsFileMap);\n\t for (index in keysArray) {\n\t const species = keysArray[index];\n\t if (species != currentSpecies) {\n\t if (organsFileMap[species].hasOwnProperty(currentSystem) &&\n\t organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {\n\t availableSpecies.push(species);\n\t }\n\t }\n\t }\n\t return availableSpecies;\n\t }\n\t \n\t const setSceneData = function(speciesName, systemName, partName, organsDetails) {\n _this.sceneData.nerveMapIsActive = false;\n _this.sceneData.nerveMap = undefined;\n _this.sceneData.metaURL = \"\";\n _this.sceneData.viewURL = \"\";\n _this.sceneData.currentSpecies = speciesName;\n _this.sceneData.currentSystem = systemName;\n\t\t\t_this.sceneData.currentPart = partName;\n\t\t\t_this.sceneData.currentTime = 0.0;\n\t\t\t_this.sceneData.geometries.splice(0);\n\t\t\t_this.sceneData.lines.splice(0);\n\t\t\t_this.sceneData.glyphsets.splice(0);\n\t\t\t_this.sceneData.pointsets.splice(0);\n\t\t\t_this.sceneData.timeVarying = false;\n // This is used as title\n let name = \"\";\n if (speciesName)\n name = speciesName + \"/\";\n if (systemName)\n name = systemName + \"/\";\n if (partName)\n name = partName;\n _this.sceneData.currentName = name;\n\t }\n\n\t this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {\n\t\t if (_this.zincRenderer) {\n\t\t\t if (partName && (_this.sceneData.metaURL !== url)) {\n\t\t\t setSceneData(speciesName, systemName, partName, undefined);\n\t\t\t const name = _this.sceneData.currentName;\n\t\t\t let organScene = _this.zincRenderer.getSceneByName(name);\n\t\t\t if (organScene) {\n\t\t\t \t organScene.clearAll();\n\t\t\t } else {\n\t\t\t \t organScene = _this.zincRenderer.createScene(name);\n\t\t\t }\n\t\t\t for (let i = 0; i < sceneChangedCallbacks.length;i++) {\n\t\t\t \t sceneChangedCallbacks[i](_this.sceneData);\n\t\t\t }\n\t\t\t if (viewURL && viewURL != \"\") {\n\t\t\t \t _this.sceneData.viewURL = viewURL;\n\t\t\t\t organScene.loadViewURL(_this.sceneData.viewURL);\n\t\t\t } else {\n\t\t\t \t _this.sceneData.viewURL = undefined;\n }\n\t\t\t _this.sceneData.metaURL = url;\n\t\t\t organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),\n\t\t\t \t downloadCompletedCallback());\t \n\t\t\t _this.scene = organScene;\n\t\t\t _this.zincRenderer.setCurrentScene(organScene);\n\t\t\t _this.graphicsHighlight.reset();\n\t\t\t const zincCameraControl = organScene.getZincCameraControls();\n\t\t\t zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());\n\t\t\t zincCameraControl.setMouseButtonAction(\"AUXILIARY\", \"ZOOM\");\n\t\t\t zincCameraControl.setMouseButtonAction(\"SECONDARY\", \"PAN\");\n\t\t\t }\n\t\t }\n\t }\n\t \t \n\t this.alignCameraWithSelectedObject = function(transitionTime) {\n\t const objects = _this.graphicsHighlight.getSelected();\n\t if (objects && objects[0] && objects[0].userData) {\n\t _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);\n\t }\n\t }\n\t \n\t this.exportSettings = function() {\n\t\t const settings = {};\n\t\t settings.name = _this.instanceName;\n\t\t if (_this.sceneData.currentSystem)\n\t\t\t settings.system = _this.sceneData.currentSystem;\n\t\t if (_this.sceneData.currentSpecies)\n\t\t\t settings.species = _this.sceneData.currentSpecies;\n\t\t if (_this.sceneData.currentPart)\n\t\t\t settings.part = _this.sceneData.currentPart;\n\t\t settings.metaURL = _this.sceneData.metaURL;\n\t\t if (_this.sceneData.viewURL)\n\t\t\t settings.viewURL = _this.sceneData.viewURL;\n\t\t settings.dialog = \"Organ Viewer\";\n\t\t return settings;\n\t }\n\t \n\t this.importSettings = function(settings) {\n\t\t if (settings && (settings.dialog == this.typeName)) {\n\t\t\t _this.setName(settings.name);\n\t\t\t if (settings.metaURL !== undefined && settings.metaURL != \"\") {\n\t\t\t\t _this.loadOrgansFromURL(settings.metaURL, settings.species,\n\t\t\t\t\tsettings.system, settings.part, settings.viewURL);\n\t\t\t } else {\n\t\t\t\t _this.loadOrgans(settings.species, settings.system, settings.part);\n\t\t\t }\n\t\t\t return true;\n\t\t }\n\t\t return false;\n\t }\n\t\t\n\t/**\n\t * initialise loading of the html layout for the organs panel, this is\n\t * called when the {@link PJP.OrgansViewer} is created.\n\t * \n\t * @async\n\t */\n\t const initialise = function() {\n\t _this.initialiseRenderer(undefined);\n\t if (_this.zincRenderer) {\n _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());\n _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());\n }\n }\n\t \n\tinitialise();\n\n}\n\nOrgansViewer.prototype = Object.create((require('./RendererModule').RendererModule).prototype);\nexports.OrgansViewer = OrgansViewer;\n","module.exports = require(\"element-ui/lib/theme-chalk/checkbox.css\");","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var THREE = require('zincjs').THREE;\n\n/**\n * This module manages highlighted and selected objects in 3D modules. \n * \n * @class\n * @returns {exports.GraphicsHighlight}\n */\nexports.GraphicsHighlight = function() {\n let currentHighlightedObjects = [];\n let currentSelectedObjects = [];\n this.highlightColour = [1, 0, 0];\n this.selectColour = [0, 1, 0];\n this.originalColour = [0, 0, 0];\n const _this = this;\n\n const isDifferent = function(array1, array2) {\n if ((array1.length == 0) && (array2.length == 0))\n return false; \n for (let i = 0; i < array1.length; i++) {\n let matched = false;\n for (let j = 0; j < array2.length; j++) {\n if (array1[i] === array2[j]) {\n matched = true;\n }\n }\n if (!matched)\n return true;\n }\n for (let i = 0; i < array2.length; i++) {\n let matched = false;\n for (let j = 0; j < array1.length; j++) {\n if (array2[i] === array1[j]) {\n matched = true;\n }\n }\n if (!matched)\n return true;\n }\n return false;\n }\n \n const getUnmatchingObjects = function(objectsArray1, objectsArray2) {\n const unmatchingObjects = [];\n if (objectsArray2.length == 0)\n return objectsArray1;\n for (let i = 0; i < objectsArray1.length; i++) {\n let matched = false;\n for (let j = 0; j < objectsArray2.length; j++) {\n if (objectsArray1[i] === objectsArray2[j]) {\n matched = true;\n }\n }\n if (!matched)\n unmatchingObjects.push(objectsArray1[i]);\n }\n return unmatchingObjects;\n }\n \n this.setHighlighted = function(objects) {\n const previousHighlightedObjects = currentHighlightedObjects;\n _this.resetHighlighted();\n // Selected object cannot be highlighted\n const array = getUnmatchingObjects(objects, currentSelectedObjects);\n const fullList = getFullListOfObjects(array);\n for (let i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.highlightColour);\n }\n currentHighlightedObjects = array;\n return isDifferent(currentHighlightedObjects, previousHighlightedObjects);\n }\n\n this.setSelected = function(objects) {\n // first find highlighted object that are not selected\n const previousHSelectedObjects = currentSelectedObjects;\n const array = getUnmatchingObjects(currentHighlightedObjects, objects);\n currentHighlightedObjects = array;\n _this.resetSelected();\n const fullList = getFullListOfObjects(objects);\n for (let i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.selectColour);\n }\n currentSelectedObjects = objects;\n return isDifferent(currentSelectedObjects, previousHSelectedObjects);\n }\n\n const getFullListOfObjects = function(objects) {\n let fullList = [];\n for (let i = 0; i < objects.length; i++) {\n if (objects[i].material)\n fullList.push(objects[i]);\n }\n return fullList;\n }\n \n this.resetHighlighted = function() {\n const fullList = getFullListOfObjects(currentHighlightedObjects);\n for (let i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material) {\n if (fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.originalColour);\n if (fullList[i].material.depthFunc)\n fullList[i].material.depthFunc = THREE.LessEqualDepth;\n }\n }\n currentHighlightedObjects = [];\n }\n \n this.resetSelected = function() {\n const fullList = getFullListOfObjects(currentSelectedObjects);\n for (let i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material) {\n \t\tif (fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.originalColour);\n \t\tif (fullList[i].material.depthFunc)\n fullList[i].material.depthFunc = THREE.LessEqualDepth;\n \t}\n }\n currentSelectedObjects = [];\n }\n \n this.getSelected = function() {\n return currentSelectedObjects;\n }\n \n this.reset = function() {\n _this.resetSelected();\n _this.resetHighlighted();\n }\n}\n","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&\"","module.exports = require(\"core-js/modules/es.array.slice\");","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","module.exports = require(\"lodash/orderBy\");","const MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };\n\nconst BaseModule = function() {\n this.typeName = \"Base Module\";\n this.instanceName = \"default\";\n this.onChangedCallbacks = [];\n /** Notifier handle for informing other modules of any changes **/\n this.eventNotifiers = [];\n}\n\nBaseModule.prototype.setName = function(name) {\n if (name && this.instanceName !== name) {\n this.instanceName = name;\n const callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );\n }\n }\n}\n\nBaseModule.prototype.settingsChanged = function() {\n\tconst callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );\n }\n}\n\nBaseModule.prototype.exportSettings = function() {\n const settings = {};\n settings.dialog = this.typeName;\n settings.name = this.instanceName;\n return settings;\n}\n\nBaseModule.prototype.importSettings = function(settings) {\n\tif (settings.dialog == this.typeName) {\n\t\tthis.setName(settings.name);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nBaseModule.prototype.publishChanges = function(annotations, eventType) {\n for (let i = 0; i < this.eventNotifiers.length; i++) {\n this.eventNotifiers[i].publish(this, eventType, annotations);\n }\n}\n\nBaseModule.prototype.getName = function() {\n return this.instanceName;\n}\n\nBaseModule.prototype.destroy = function() {\n //Make a temorary copy as the array may be altered during the loop\n const callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.DESTROYED );\n }\n\n delete this;\n} \n\nBaseModule.prototype.addChangedCallback = function(callback) {\n if (this.onChangedCallbacks.includes(callback) == false)\n this.onChangedCallbacks.push(callback);\n}\n\nBaseModule.prototype.removeChangedCallback = function(callback) {\n const index = this.onChangedCallbacks.indexOf(callback);\n if (index > -1) {\n this.onChangedCallbacks.splice(index, 1);\n }\n} \n\nBaseModule.prototype.addNotifier = function(eventNotifier) {\n this.eventNotifiers.push(eventNotifier);\n}\n\nexports.BaseModule = BaseModule;\nexports.MODULE_CHANGE = MODULE_CHANGE;\n","module.exports = require(\"core-js/modules/es.array.index-of\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","module.exports = require(\"element-ui/lib/row\");","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","module.exports = require(\"element-ui/lib/theme-chalk/col.css\");","module.exports = require(\"element-ui/lib/theme-chalk/main.css\");","module.exports = require(\"core-js/modules/es.array.splice\");","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","const THREE = require('zincjs').THREE;\n\n/**\n * Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.\n * @param {String} elementID - id of the target dom element.\n * @returns {Zinc.Renderer}\n */\nconst createRenderer = function () {\n const WEBGL = require('./WebGL').WEBGL;\n const localContainer = document.createElement( 'div' );\n let localRenderer = undefined;;\n localContainer.style.height = \"100%\";\n if (WEBGL.isWebGLAvailable()) {\n const Zinc = require('zincjs');\n localRenderer = new Zinc.Renderer(localContainer, window);\n Zinc.defaultMaterialColor = 0xFFFF9C;\n localRenderer.initialiseVisualisation();\n localRenderer.playAnimation = false;\n } else {\n const warning = WEBGL.getWebGLErrorMessage();\n localContainer.appendChild(warning);\n }\n return {\"renderer\":localRenderer, \"container\":localContainer};\n}\n\nconst RendererModule = function() {\n (require('./BaseModule').BaseModule).call(this);\n this.scene = undefined;\n this.rendererContainer = undefined;\n this.displayArea = undefined;\n this.graphicsHighlight = new (require(\"./graphicsHighlight\").GraphicsHighlight)();\n this.zincRenderer = null;\n this.selectedScreenCoordinates = new THREE.Vector3();\n this.selectedCenter = undefined;\n}\n\nRendererModule.prototype = Object.create((require('./BaseModule').BaseModule).prototype);\n\n/**\n * This function will get the the first intersected object with name or\n * the first glyph object with name.\n */\nRendererModule.prototype.getIntersectedObject = function(intersects) {\n\tif (intersects) {\n\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\tif (intersects[i] !== undefined) {\n\t\t\t\tif (intersects[i].object &&\n intersects[i].object.userData && \n intersects[i].object.userData.isZincObject && \n (intersects[i].object.name || \n intersects[i].object.userData.isMarker))\n\t\t\t\t\treturn intersects[i];\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nRendererModule.prototype.getAnnotationsFromObjects = function(objects) {\n const annotations = [];\n let count = 0;\n for (var i = 0; i < objects.length; i++) {\n const zincObject = objects[i].userData;\n let annotation = undefined;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n const glyphset = zincObject;\n if (zincObject.isGlyph)\n glyphset = zincObject.getGlyphset();\n annotation = glyphset.userData ? glyphset.userData[0] : undefined;\n if (annotation && annotation.data) {\n if (objects[i].name && objects[i].name != \"\")\n annotation.data.id = objects[i].name;\n else\n annotation.data.id = glyphset.groupName;\n }\n } else {\n annotation = zincObject.userData ? zincObject.userData[0] : undefined;\n if (annotation && annotation.data){\n annotation.data.id = objects[i].name;\n }\n }\n }\n if (annotation)\n annotations[count++] = annotation;\n }\n\treturn annotations;\n}\n\nRendererModule.prototype.setHighlightedByObjects = function(objects, propagateChanges) {\n const changed = this.graphicsHighlight.setHighlighted(objects);\n if (changed && propagateChanges) {\n const eventType = require(\"./eventNotifier\").EVENT_TYPE.HIGHLIGHTED;\n const annotations = this.getAnnotationsFromObjects(objects);\n this.publishChanges(annotations, eventType);\n }\n return changed;\n}\n\n\nRendererModule.prototype.setHighlightedByZincObject = function(\n zincObject, propagateChanges) {\n return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);\n}\n\nRendererModule.prototype.setupLiveCoordinates = function(zincObjects) {\n if (zincObjects && (zincObjects.length > 0)) {\n const boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);\n let newSelectedCenter = new THREE.Vector3();\n boundingBox.getCenter(newSelectedCenter);\n if (this.selectedCenter == undefined)\n this.selectedCenter = newSelectedCenter;\n else {\n this.selectedCenter.x = newSelectedCenter.x;\n this.selectedCenter.y = newSelectedCenter.y;\n }\n } else {\n this.selectedCenter = undefined;\n }\n}\n\nRendererModule.prototype.objectsToZincObjects = function(objects) {\n const zincObjects = [];\n for (let i = 0; i < objects.length; i++) {\n let zincObject = objects[i].userData;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n let glyphset = zincObject;\n if (zincObject.isGlyph)\n glyphset = zincObject.getGlyphset();\n zincObjects. push(glyphset);\n } else {\n zincObjects. push(zincObject);\n }\n }\n }\n return zincObjects;\n}\n\n\nRendererModule.prototype.setSelectedByObjects = function(\n objects, propagateChanges) {\n const changed = this.graphicsHighlight.setSelected(objects);\n if (changed) {\n const zincObjects = this.objectsToZincObjects(objects);\n this.setupLiveCoordinates(zincObjects);\n if (propagateChanges) {\n const eventType = require(\"./eventNotifier\").EVENT_TYPE.SELECTED;\n const annotations = this.getAnnotationsFromObjects(objects);\n this.publishChanges(annotations, eventType);\n }\n }\n return changed;\n}\n\nRendererModule.prototype.setSelectedByZincObject = function(\n zincObject, propagateChanges) {\n return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);\n}\n\nconst addGlyphToArray = function(objects) {\n return function(glyph) {\n objects.push(glyph.getMesh());\n }\n}\n\nRendererModule.prototype.findObjectsByGroupName = function(groupName) {\n const geometries = this.scene.findGeometriesWithGroupName(groupName);\n const objects = [];\n for (let i = 0; i < geometries.length; i ++ ) {\n objects.push(geometries[i].morph);\n }\n const glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);\n for (let i = 0; i < glyphsets.length; i ++ ) {\n glyphsets[i].forEachGlyph(addGlyphToArray(objects));\n }\n \n return objects;\n}\n\nRendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {\n const objects = this.findObjectsByGroupName(groupName);\n return this.setHighlightedByObjects(objects, propagateChanges);\n}\n\nRendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {\n const objects = this.findObjectsByGroupName(groupName);\n return this.setSelectedByObjects(objects, propagateChanges);\n}\n\nRendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {\n const colour = new THREE.Color(backgroundColourString);\n if (this.zincRenderer) {\n let internalRenderer = this.zincRenderer.getThreeJSRenderer();\n internalRenderer.setClearColor( colour, 1 );\n }\n}\n\nRendererModule.prototype.resetView = function() {\n if (this.zincRenderer)\n this.zincRenderer.resetView();\n}\n \nRendererModule.prototype.viewAll = function() {\n if (this.zincRenderer)\n this.zincRenderer.viewAll();\n}\n\n/**\n * Start the animation and let the renderer to processs with\n * time progression\n */\nRendererModule.prototype.playAnimation = function(flag) {\n if (this.zincRenderer)\n this.zincRenderer.playAnimation = flag;\n}\n\n/**\n* Set the speed of playback\n*/\nRendererModule.prototype.setPlayRate = function(value) {\n if (this.zincRenderer)\n this.zincRenderer.setPlayRate(value);\n}\n\n/**\n* Get the speed of playback\n*/\nRendererModule.prototype.getPlayRate = function(value) {\n if (this.zincRenderer)\n return this.zincRenderer.getPlayRate();\n else\n return 0.0;\n}\n \n /** Initialise everything in the renderer, including the 3D renderer,\n * and picker for the 3D renderer.\n * \n */\nRendererModule.prototype.initialiseRenderer = function(displayAreaIn) {\n if (this.zincRenderer === undefined || this.rendererContainer === undefined) {\n let returnedValue = createRenderer();\n this.zincRenderer = returnedValue[\"renderer\"];\n this.rendererContainer = returnedValue[\"container\"];\n }\n if (displayAreaIn) {\n this.displayArea = displayAreaIn;\n this.displayArea.appendChild( this.rendererContainer );\n if (this.zincRenderer)\n this.zincRenderer.animate();\n }\n}\n\nRendererModule.prototype.destroy = function() {\n if (this.zincRenderer) {\n this.zincRenderer.dispose();\n this.zincRenderer.getThreeJSRenderer().dispose();\n this.zincRenderer = undefined;\n }\n (require('./BaseModule').BaseModule).prototype.destroy.call( this );\n}\n\nexports.RendererModule = RendererModule;","module.exports = require(\"core-js/modules/es.object.to-string\");","module.exports = require(\"vue\");","module.exports = require(\"element-ui/lib/tabs\");","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/icon.css\");","module.exports = require(\"core-js/modules/es.string.iterator\");","module.exports = require(\"zincjs\");","module.exports = require(\"element-ui/lib/popover\");","module.exports = require(\"element-ui/lib/theme-chalk/slider.css\");","exports.annotation = function() {\n this.type = \"anatomical\";\n this.data = undefined;\n this.isAnnotation = true;\n}\n","module.exports = require(\"element-ui/lib/theme-chalk/tab-pane.css\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","const EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };\n\nconst SelectionEvent = function(eventTypeIn, identifiersIn) {\n this.eventType = eventTypeIn;\n this.identifiers = identifiersIn;\n}\n\nconst returnFullID = function(sourceId) {\n //return full annotations with all different name\n}\n \nconst Subscription = function(subscriberIn, callbackIn, eventType) {\n this.targetedID = [];\n const subscriber = subscriberIn;\n const callback = callbackIn;\n this.targetEventType = eventType;\n const _this = this;\n\n if (eventType === undefined)\n this.targetEventType = EVENT_TYPE.ALL;\n \n this.getEventType = function() {\n return eventType;\n }\n \n this.notify = function(source, eventType, ids) {\n if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||\n _this.targetEventType === eventType)) {\n //should support different type of id e.g lyph, name, fmas...\n //need a function that finds all relavant ids\n const event = new SelectionEvent(eventType, ids);\n callback(event);\n }\n }\n}\n\nexports.EventNotifier = function() {\n const subscriptions = [];\n \n this.publish = function(source, eventType, id) {\n for (let i = 0; i < subscriptions.length;i++) {\n subscriptions[i].notify(source, eventType, id);\n }\n }\n \n this.subscribe = function(subscriber, callbackFunction, eventType) {\n if (typeof callbackFunction === \"function\") {\n const subscription = new Subscription(subscriber, callbackFunction, eventType);\n subscriptions.push(subscription);\n return subscription;\n }\n return undefined;\n }\n \n this.unsubscribe = function(subscription) {\n for (let i = 0; i < subscriptions.length;i++) {\n if (subscription === subscriptions[i]) {\n subscriptions.splice(i, 1);\n return;\n }\n }\n }\n} \n\nexports.EVENT_TYPE = EVENT_TYPE;\n","module.exports = require(\"@soda/get-current-script\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=style&index=0&id=226a06e2&scoped=true&lang=scss&\"","module.exports = require(\"element-ui/lib/col\");","module.exports = require(\"element-ui/lib/theme-chalk/popover.css\");","module.exports = require(\"element-ui/lib/slider\");","module.exports = require(\"core-js/modules/es.array.includes\");","module.exports = require(\"element-ui/lib/loading\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=style&index=1&lang=css&\"","module.exports = require(\"element-ui/lib/theme-chalk/container.css\");","module.exports = require(\"element-ui/lib/icon\");","module.exports = require(\"element-ui/lib/checkbox\");","module.exports = require(\"core-js/modules/es.function.name\");","module.exports = require(\"core-js/modules/web.dom-collections.for-each\");","module.exports = require(\"core-js/modules/es.string.replace\");","module.exports = require(\"element-ui/lib/option\");","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mr.doob / http://mrdoob.com/\n */\n\nexports.WEBGL = {\n\n\tisWebGLAvailable: function () {\n\n\t\ttry {\n\n\t\t\tvar canvas = document.createElement( 'canvas' );\n\t\t\treturn !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );\n\n\t\t} catch ( e ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t},\n\n\tisWebGL2Available: function () {\n\n\t\ttry {\n\n\t\t\tvar canvas = document.createElement( 'canvas' );\n\t\t\treturn !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );\n\n\t\t} catch ( e ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t},\n\n\tgetWebGLErrorMessage: function () {\n\n\t\treturn this.getErrorMessage( 1 );\n\n\t},\n\n\tgetWebGL2ErrorMessage: function () {\n\n\t\treturn this.getErrorMessage( 2 );\n\n\t},\n\n\tgetErrorMessage: function ( version ) {\n\n\t\tvar names = {\n\t\t\t1: 'WebGL',\n\t\t\t2: 'WebGL 2'\n\t\t};\n\n\t\tvar contexts = {\n\t\t\t1: window.WebGLRenderingContext,\n\t\t\t2: window.WebGL2RenderingContext\n\t\t};\n\n\t\tvar message = 'This module requires <a href=\"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation\" style=\"color:#008\">$1</a> support but your $0 does not seem to support it.';\n\n\t\tvar element = document.createElement( 'div' );\n\t\telement.id = 'webglmessage';\n\t\telement.style.fontFamily = 'monospace';\n\t\telement.style.fontSize = '20px';\n\t\telement.style.fontWeight = 'normal';\n\t\telement.style.textAlign = 'center';\n\t\telement.style.background = '#fff';\n\t\telement.style.color = '#000';\n\t\telement.style.padding = '1.5em';\n\t\telement.style.width = '400px';\n\t\telement.style.margin = '5em auto 0';\n\n\t\tif ( contexts[ version ] ) {\n\n\t\t\tmessage = message.replace( '$0', 'graphics card' );\n\n\t\t} else {\n\n\t\t\tmessage = message.replace( '$0', 'browser' );\n\n\t\t}\n\n\t\tmessage = message.replace( '$1', names[ version ] );\n\n\t\telement.innerHTML = message;\n\n\t\treturn element;\n\n\t}\n\n};\n","function _readOnlyError(name) {\n throw new Error(\"\\\"\" + name + \"\\\" is read-only\");\n}\n\nmodule.exports = _readOnlyError;","module.exports = require(\"core-js/modules/es.array.from\");","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"scaffoldContainer\",staticClass:\"scaffold-container\",attrs:{\"element-loading-text\":\"Loading...\",\"element-loading-spinner\":\"el-icon-loading\",\"element-loading-background\":\"rgba(0, 0, 0, 0.3)\"}},[_c('map-svg-sprite-color'),_c('div',{ref:\"display\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"id\":\"organsDisplayArea\",\"tabindex\":\"-1\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==66){ return null; }return _vm.backgroundChangeCallback($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.displayUI && !_vm.isTransitioning),expression:\"displayUI && !isTransitioning\"}]},[(_vm.displayWarning)?_c('el-popover',{ref:\"warningPopover\",attrs:{\"content\":_vm.warningMessage,\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"warning-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[6].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[6], \"value\", $$v)},expression:\"hoverVisabilities[6].value\"}}):_vm._e(),(_vm.displayWarning)?_c('i',{directives:[{name:\"popover\",rawName:\"v-popover:warningPopover\",arg:\"warningPopover\"}],staticClass:\"el-icon-warning warning-icon\",on:{\"mouseover\":function($event){return _vm.showToolitip(6)},\"mouseout\":function($event){return _vm.hideToolitip(6)}}},[_c('span',{staticClass:\"warning-text\"},[_vm._v(\"Beta\")])]):_vm._e(),_c('el-popover',{ref:\"checkBoxPopover\",attrs:{\"content\":\"Change region visibility\",\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[5].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[5], \"value\", $$v)},expression:\"hoverVisabilities[5].value\"}}),_c('TraditionalControls',{directives:[{name:\"popover\",rawName:\"v-popover:checkBoxPopover\",arg:\"checkBoxPopover\"}],ref:\"traditionalControl\",attrs:{\"help-mode\":_vm.helpMode,\"module\":_vm.$module,\"show-colour-picker\":_vm.showColourPicker},on:{\"object-selected\":_vm.objectSelected,\"object-hovered\":_vm.objectHovered,\"drawer-toggled\":_vm.drawerToggled}}),_c('div',{staticClass:\"opacity-box\"},[_c('OpacityControls',{ref:\"opacityControl\"})],1),(_vm.sceneData.timeVarying)?_c('el-popover',{ref:\"sliderPopover\",attrs:{\"content\":\"Move the slider to animate the region\",\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper top-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[4].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[4], \"value\", $$v)},expression:\"hoverVisabilities[4].value\"}}):_vm._e(),(_vm.sceneData.timeVarying)?_c('div',{directives:[{name:\"popover\",rawName:\"v-popover:sliderPopover\",arg:\"sliderPopover\"}],staticClass:\"time-slider-container\",class:[ _vm.minimisedSlider ? 'minimised' : '', _vm.sliderPosition]},[_c('el-tabs',{attrs:{\"type\":\"card\"}},[_c('el-tab-pane',{attrs:{\"label\":\"Animate scaffold\"}},[_c('el-row',{staticClass:\"tab-content\"},[(_vm.isPlaying)?_c('map-svg-icon',{staticClass:\"icon-button video-button\",attrs:{\"icon\":\"pause\"},nativeOn:{\"click\":function($event){return _vm.play(false)}}}):_c('map-svg-icon',{staticClass:\"video-button icon-button\",attrs:{\"icon\":\"play\"},nativeOn:{\"click\":function($event){return _vm.play(true)}}}),_c('el-slider',{staticClass:\"slider\",attrs:{\"min\":0,\"max\":_vm.timeMax,\"value\":_vm.sceneData.currentTime / 100 * _vm.timeMax,\"step\":0.1,\"tooltip-class\":\"time-slider-tooltip\",\"format-tooltip\":_vm.formatTooltip,\"marks\":_vm.timeStamps},on:{\"input\":function($event){return _vm.timeChange($event)}}})],1)],1),_c('el-tab-pane',{attrs:{\"label\":\"Animation data\"}},[_c('el-row',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Original duration: \"),_c('div',{staticClass:\"purple\"},[_vm._v(\" \"+_vm._s(_vm.orginalDuration)+\" \")])]),_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Animation duration: \"),_c('div',{staticClass:\"purple\"},[_vm._v(\" \"+_vm._s(_vm.animateDuration)+\" \")])]),_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Playback speed \"),_c('el-select',{staticClass:\"select-box\",attrs:{\"popper-append-to-body\":true,\"value\":_vm.currentSpeed,\"placeholder\":\"Select\",\"popper-class\":\"scaffold_viewer_dropdown\"},on:{\"change\":function($event){return _vm.speedChanged($event)}}},_vm._l((_vm.playSpeed),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)])],1)],1)],1):_vm._e(),_c('div',{staticClass:\"bottom-right-control\"},[_c('el-popover',{attrs:{\"content\":\"Zoom in\",\"placement\":\"left\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper left-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[0].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[0], \"value\", $$v)},expression:\"hoverVisabilities[0].value\"}},[_c('map-svg-icon',{staticClass:\"icon-button zoomIn\",attrs:{\"slot\":\"reference\",\"icon\":\"zoomIn\"},nativeOn:{\"click\":function($event){return _vm.zoomIn()},\"mouseover\":function($event){return _vm.showToolitip(0)},\"mouseout\":function($event){return _vm.hideToolitip(0)}},slot:\"reference\"})],1),_c('el-popover',{attrs:{\"content\":\"Zoom out\",\"placement\":\"top-end\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper popper-zoomout non-selectable\"},model:{value:(_vm.hoverVisabilities[1].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[1], \"value\", $$v)},expression:\"hoverVisabilities[1].value\"}},[_c('map-svg-icon',{staticClass:\"icon-button zoomOut\",attrs:{\"slot\":\"reference\",\"icon\":\"zoomOut\"},nativeOn:{\"click\":function($event){return _vm.zoomOut()},\"mouseover\":function($event){return _vm.showToolitip(1)},\"mouseout\":function($event){return _vm.hideToolitip(1)}},slot:\"reference\"})],1),_c('el-popover',{attrs:{\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[2].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[2], \"value\", $$v)},expression:\"hoverVisabilities[2].value\"}},[_c('div',[_vm._v(\" Fit to \"),_c('br'),_vm._v(\" window \")]),_c('map-svg-icon',{staticClass:\"icon-button fitWindow\",attrs:{\"slot\":\"reference\",\"icon\":\"fitWindow\"},nativeOn:{\"click\":function($event){return _vm.fitWindow()},\"mouseover\":function($event){return _vm.showToolitip(2)},\"mouseout\":function($event){return _vm.hideToolitip(2)}},slot:\"reference\"})],1)],1),_c('el-popover',{ref:\"backgroundPopover\",attrs:{\"placement\":\"top-start\",\"width\":\"128\",\"append-to-body\":false,\"trigger\":\"click\",\"popper-class\":\"background-popper non-selectable\"}},[_c('el-row',{staticClass:\"backgroundText\"},[_vm._v(\" Change background \")]),_c('el-row',{staticClass:\"backgroundChooser\"},_vm._l((_vm.availableBackground),function(item){return _c('div',{key:item,class:['backgroundChoice', item, item == _vm.currentBackground ? 'active' :''],on:{\"click\":function($event){return _vm.backgroundChangeCallback(item)}}})}),0)],1),_c('el-popover',{attrs:{\"content\":\"Change background color\",\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[3].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[3], \"value\", $$v)},expression:\"hoverVisabilities[3].value\"}},[_c('map-svg-icon',{directives:[{name:\"popover\",rawName:\"v-popover:backgroundPopover\",arg:\"backgroundPopover\"}],staticClass:\"icon-button background-colour\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{\"slot\":\"reference\",\"icon\":\"changeBckgd\"},nativeOn:{\"mouseover\":function($event){return _vm.showToolitip(3)},\"mouseout\":function($event){return _vm.hideToolitip(3)}},slot:\"reference\"})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.material!=undefined)?_c('div',{ref:\"control\",staticClass:\"opacity-control\"},[_c('el-drawer',{staticClass:\"drawer-content\",attrs:{\"custom-class\":\"my-drawer\",\"visible\":_vm.drawerOpen,\"append-to-body\":false,\"modal-append-to-body\":false,\"size\":\"300\",\"with-header\":false,\"wrapper-closable\":false,\"modal\":false},on:{\"update:visible\":function($event){_vm.drawerOpen=$event}}},[(_vm.drawerOpen)?_c('div',{staticClass:\"tab-button close\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-right\"})]):_vm._e(),_c('el-container',{staticClass:\"opacity-container\"},[_c('el-header',{staticClass:\"header\",attrs:{\"height\":\"37px\"}},[_c('div',[_vm._v(\"Opacity\")])]),_c('el-main',{staticClass:\"main\"},[_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"display\"},[_vm._v(_vm._s(_vm.displayString))]),_c('el-slider',{staticClass:\"my-slider\",attrs:{\"step\":0.01,\"min\":0,\"max\":1,\"format-tooltip\":_vm.formatTooltip,\"show-tooltip\":false},model:{value:(_vm.material.opacity),callback:function ($$v) {_vm.$set(_vm.material, \"opacity\", $$v)},expression:\"material.opacity\"}})],1)])],1)],1),(!_vm.drawerOpen)?_c('div',{staticClass:\"tab-button open\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div\n v-if=\"material!=undefined\"\n ref=\"control\"\n class=\"opacity-control\"\n >\n <el-drawer\n custom-class=\"my-drawer\"\n class=\"drawer-content\"\n :visible.sync=\"drawerOpen\"\n :append-to-body=\"false\"\n :modal-append-to-body=\"false\"\n size=\"300\"\n :with-header=\"false\"\n :wrapper-closable=\"false\"\n :modal=\"false\"\n >\n <div\n v-if=\"drawerOpen\"\n class=\"tab-button close\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-right\" />\n </div>\n <el-container class=\"opacity-container\">\n <el-header\n height=\"37px\"\n class=\"header\"\n >\n <div>Opacity</div>\n </el-header>\n <el-main class=\"main\">\n <div class=\"block\">\n <span class=\"display\">{{ displayString }}</span>\n <el-slider\n v-model=\"material.opacity\"\n class=\"my-slider\"\n :step=\"0.01\"\n :min=\"0\"\n :max=\"1\"\n :format-tooltip=\"formatTooltip\"\n :show-tooltip=\"false\"\n />\n </div>\n </el-main>\n </el-container>\n </el-drawer>\n <div\n v-if=\"!drawerOpen\"\n class=\"tab-button open\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Container, Drawer, Header, Icon, Main, Slider } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Container);\nVue.use(Drawer);\nVue.use(Header);\nVue.use(Icon);\nVue.use(Main);\nVue.use(Slider);\n\n/**\n * A component to control the opacity of the target object.\n */\nexport default {\n name: \"OpacityControls\",\n data: function() {\n return {\n displayString: \"100%\",\n material: undefined,\n drawerOpen: true\n };\n },\n watch: {\n \"material.opacity\": function() {\n if (this.material) {\n this._zincobject.setAlpha(this.material.opacity);\n }\n }\n },\n mounted: function() {\n this._zincobject = undefined;\n },\n methods: {\n formatTooltip(val) {\n this.displayString = Math.floor(100 * val + 0.5) + \"%\";\n return this.displayString;\n },\n toggleDrawer: function() {\n this.drawerOpen = !this.drawerOpen;\n },\n setObject(object) {\n if (object) this.material = object.morph.material;\n else this.material = undefined;\n this._zincobject = object;\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/container\";\n@import \"~element-ui/packages/theme-chalk/src/drawer\";\n@import \"~element-ui/packages/theme-chalk/src/slider\";\n\n.opacity-control {\n text-align: left;\n width:300px;\n}\n\n.header {\n color: #606266;\n line-height: 1;\n padding: 9px 17px 0 15px;\n border-bottom: 1px solid #ebeef5;\n font-size: 14px;\n}\n\n.display {\n width: 44px;\n}\n\n.icon {\n right: 17px;\n position: absolute;\n top: 10px;\n}\n\n.main {\n font-size: 13px;\n padding: 20px 17px 0 15px;\n}\n\n.block {\n left: 40px;\n position: absolute;\n top: 57px;\n width: 200px;\n}\n\n.my-slider {\n position: absolute;\n width: 109px;\n top: -12px;\n left: 50px;\n pointer-events: auto;\n}\n\n.opacity-container {\n width: 224px;\n height: 93px;\n border-radius: 4px;\n border: solid 1px #d8dce6;\n background-color: #fff;\n}\n\n::v-deep .el-slider__bar {\n background-color: $app-primary-color;\n}\n\n.drawer-content {\n position: relative;\n height: 93px;\n pointer-events: none;\n}\n\n::v-deep .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n\n::v-deep .my-drawer .el-drawer__body {\n height: 93px;\n}\n\n.tab-button {\n width: 20px;\n height: 40px;\n z-index: 8;\n right: 0px;\n \n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #FFFFFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n //transition: bottom 0.3s;\n\n &.close {\n float: left;\n flex: 1;\n border-right: 0;\n margin-top: 26px;\n }\n\n &.open {\n position: absolute;\n bottom:26px;\n }\n\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transform: scaleY(2.5);\n }\n}\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&\"\nimport script from \"./OpacityControls.vue?vue&type=script&lang=js&\"\nexport * from \"./OpacityControls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OpacityControls.vue?vue&type=style&index=0&id=4c00a30f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c00a30f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"traditional-location\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen }},[_c('div',{staticClass:\"traditional-container\"},[_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('div',{staticClass:\"regions-display-text\"},[_vm._v(\" Regions \")])]),_c('el-col',{attrs:{\"span\":12}},[_c('el-checkbox',{staticClass:\"all-checkbox\",attrs:{\"indeterminate\":_vm.isIndeterminate},on:{\"change\":_vm.handleCheckAllChange},model:{value:(_vm.checkAll),callback:function ($$v) {_vm.checkAll=$$v},expression:\"checkAll\"}},[_vm._v(\" Display all \")])],1)],1),_c('el-checkbox-group',{staticClass:\"checkbox-group\",attrs:{\"size\":\"small\"},on:{\"change\":_vm.handleCheckedItemsChange},model:{value:(_vm.checkedItems),callback:function ($$v) {_vm.checkedItems=$$v},expression:\"checkedItems\"}},[_c('div',{staticClass:\"checkbox-group-inner\"},_vm._l((_vm.sortedPrimitiveGroups),function(item){return _c('el-row',{key:item,attrs:{\"label\":item}},[_c('div',{staticClass:\"checkbox-container\"},[_c('el-checkbox',{staticClass:\"my-checkbox\",class:{ activeItem: _vm.activeRegion === item, \n hoverItem: _vm.hoverRegion === item },attrs:{\"label\":item,\"checked\":true},on:{\"change\":function($event){return _vm.visibilityToggle(item, $event)}},nativeOn:{\"click\":function($event){return _vm.itemClicked(item, $event)},\"mouseover\":function($event){return _vm.checkboxHover(item)}}},[_c('el-color-picker',{class:{ 'show-picker' : _vm.showColourPicker },attrs:{\"value\":_vm.getColour(item),\"size\":\"small\",\"popper-class\":_vm.myPopperClass},on:{\"change\":function($event){return _vm.setColour(item, $event)}}}),_vm._v(\" \"+_vm._s(item)+\" \")],1)],1)])}),1)])],1),_c('div',{staticClass:\"drawer-button\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","<template>\n <div\n class=\"traditional-location\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n >\n <div class=\"traditional-container\">\n <el-row>\n <el-col :span=\"12\">\n <div class=\"regions-display-text\">\n Regions\n </div>\n </el-col>\n <el-col :span=\"12\">\n <el-checkbox\n v-model=\"checkAll\"\n class=\"all-checkbox\"\n :indeterminate=\"isIndeterminate\"\n @change=\"handleCheckAllChange\"\n >\n Display all\n </el-checkbox>\n </el-col>\n </el-row>\n <el-checkbox-group\n v-model=\"checkedItems\"\n size=\"small\"\n class=\"checkbox-group\"\n @change=\"handleCheckedItemsChange\"\n >\n <div class=\"checkbox-group-inner\">\n <el-row\n v-for=\"item in sortedPrimitiveGroups\"\n :key=\"item\"\n :label=\"item\"\n >\n <div class=\"checkbox-container\">\n <el-checkbox\n class=\"my-checkbox\"\n :label=\"item\"\n :checked=\"true\"\n :class=\"{ activeItem: activeRegion === item, \n hoverItem: hoverRegion === item }\"\n @click.native=\"itemClicked(item, $event)\"\n @change=\"visibilityToggle(item, $event)\"\n @mouseover.native=\"checkboxHover(item)\"\n >\n <el-color-picker\n :class=\"{ 'show-picker' : showColourPicker }\"\n :value=\"getColour(item)\"\n size=\"small\"\n :popper-class=\"myPopperClass\"\n @change=\"setColour(item, $event)\"\n />\n {{ item }}\n </el-checkbox>\n </div>\n </el-row>\n </div>\n </el-checkbox-group>\n </div>\n <div\n class=\"drawer-button\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Checkbox, CheckboxGroup, ColorPicker, Row } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nconst orderBy = require(\"lodash/orderBy\");\nconst uniq = require(\"lodash/uniq\");\nlocale.use(lang);\nVue.use(Checkbox);\nVue.use(CheckboxGroup);\nVue.use(ColorPicker);\nVue.use(Row);\n\n/**\n * A vue component for toggling visibility of various regions.\n */\nexport default {\n name: \"TraditionalControls\",\n props: {\n /**\n * @ignore\n */\n module: {\n type: Object,\n default: undefined\n },\n /**\n * Enable/disable colour picker\n */\n showColourPicker: Boolean\n },\n data: function() {\n return {\n checkAll: true,\n isIndeterminate: false,\n checkedItems: [],\n sortedPrimitiveGroups: [],\n activeRegion: \"\",\n hoverRegion: \"\",\n myPopperClass: \"hide-scaffold-colour-popup\",\n drawerOpen: true\n };\n },\n watch: {\n showColourPicker: {\n immediate: true,\n handler: function() {\n if (this.showColourPicker) this.myPopperClass = \"showPicker\";\n else this.myPopperClass = \"hide-scaffold-colour-popup\";\n }\n }\n },\n created: function() {\n let tmpArray = this.module.sceneData.geometries.concat(\n this.module.sceneData.lines\n );\n tmpArray = tmpArray.concat(this.module.sceneData.glyphsets);\n tmpArray = uniq(tmpArray.concat(this.module.sceneData.pointset));\n this.sortedPrimitiveGroups = orderBy(tmpArray);\n this.module.addOrganPartAddedCallback(this.organsAdded);\n },\n destroyed: function() {\n this.sortedPrimitiveGroups = undefined;\n },\n methods: {\n /**\n * This is called when a new organ is read into the scene.\n */\n organsAdded: function(name) {\n if (name && name != \"\") {\n let tmpArray = uniq(this.sortedPrimitiveGroups.concat([name]));\n tmpArray = orderBy(tmpArray);\n const index = tmpArray.indexOf(undefined);\n if (index > -1) {\n tmpArray.splice(index, 1);\n }\n this.sortedPrimitiveGroups = tmpArray;\n }\n },\n /**\n * Select a region by its name.\n */\n changeActiveByName: function(name, propagate) {\n let targetObject = this.getFirstZincObjectWithGroupName(name);\n if (targetObject && targetObject.getVisibility()) {\n this.activeRegion = name;\n this.$emit(\"object-selected\", targetObject, propagate);\n } else {\n this.removeActive(propagate);\n }\n this.removeHover(propagate);\n },\n /**\n * Hover a region by its name.\n */\n changeHoverByName: function(name, propagate) {\n let targetObject = this.getFirstZincObjectWithGroupName(name);\n if (targetObject) {\n this.hoverRegion = name;\n this.$emit(\"object-hovered\", targetObject, propagate);\n } else {\n this.removeHover(propagate);\n }\n },\n /**\n * Unselect the current selected region.\n */\n removeActive: function(propagate) {\n this.activeRegion = \"\";\n this.$emit(\"object-selected\", undefined, propagate);\n },\n /**\n * Unselect the current hover region.\n */\n removeHover: function(propagate) {\n this.hoverRegion = \"\";\n this.$emit(\"object-hovered\", undefined, propagate);\n },\n /**\n * Reset the controls.\n */\n clear: function() {\n this.sortedPrimitiveGroups = [];\n this.checkedItems = [];\n this.checkAll = true;\n this.isIndeterminate = false;\n this.activeRegion = \"\";\n this.hoverRegion = \"\";\n this.$emit(\"object-selected\", undefined);\n },\n getFirstZincObjectWithGroupName: function(name) {\n if (this.module && this.module.scene) {\n let array = this.module.scene.findGeometriesWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findGlyphsetsWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findLinesWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findPointsetsWithGroupName(name);\n if (array.length > 0) return array[0];\n }\n return undefined;\n },\n getColour: function(name) {\n let graphic = this.getFirstZincObjectWithGroupName(name);\n if (graphic) {\n let hex = graphic.getColourHex();\n if (hex) return \"#\" + hex;\n }\n return \"#FFFFFF\";\n },\n setColour: function(name, value) {\n let graphic = this.getFirstZincObjectWithGroupName(name);\n if (graphic) {\n let hexString = value.replace(\"#\", \"0x\");\n graphic.setColourHex(hexString);\n }\n },\n checkboxHover: function(name) {\n this.changeHoverByName(name, true);\n },\n itemClicked: function(name, event) {\n if (\n !(\n event.target.classList.contains(\"el-checkbox__inner\") ||\n event.target.classList.contains(\"el-checkbox__original\")\n )\n ) {\n this.changeActiveByName(name, true);\n event.preventDefault();\n }\n },\n handleCheckedItemsChange: function() {\n let unnamed = this.checkedItems.includes(undefined) ? true: false;\n let checkedCount = this.checkedItems.length;\n if (unnamed)\n checkedCount--;\n this.checkAll = checkedCount === this.sortedPrimitiveGroups.length;\n this.isIndeterminate =\n checkedCount > 0 && checkedCount < this.sortedPrimitiveGroups.length;\n },\n handleCheckAllChange(val) {\n this.checkedItems = val ? [...this.sortedPrimitiveGroups] : [];\n this.isIndeterminate = false;\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n this.visibilityToggle(this.sortedPrimitiveGroups[i], this.checkAll);\n }\n },\n viewAll: function() {\n this.module.viewAll();\n },\n visibilityToggle: function(item, event) {\n this.module.changeOrganPartsVisibility(item, event);\n if (event == false) {\n if (this.activeRegion === item) {\n this.removeActive(true);\n }\n if (this.hoverRegion === item) {\n this.removeHover(true);\n }\n }\n },\n toggleDrawer: function() {\n this.drawerOpen = !this.drawerOpen;\n this.$emit(\"drawer-toggled\", this.drawerOpen);\n },\n getState: function() {\n if (this.checkAll) {\n return { checkAll: true };\n }\n let checkedItems = [...this.checkedItems];\n const index = checkedItems.indexOf(undefined);\n if (index > -1) {\n checkedItems.splice(index, 1);\n }\n return { checkedItems: checkedItems };\n },\n setState: function(state) {\n if (state) {\n if (state.checkAll) {\n this.checkedItems = [...this.sortedPrimitiveGroups];\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n this.module.changeOrganPartsVisibility(\n this.sortedPrimitiveGroups[i],\n true\n );\n }\n } else if (state.checkedItems) { \n this.checkedItems = [...state.checkedItems];\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n\n let visible = this.checkedItems.includes(\n this.sortedPrimitiveGroups[i]);\n this.module.changeOrganPartsVisibility(\n this.sortedPrimitiveGroups[i],\n visible\n );\n }\n }\n }\n this.handleCheckedItemsChange();\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/checkbox\";\n@import \"~element-ui/packages/theme-chalk/src/checkbox-group\";\n@import \"~element-ui/packages/theme-chalk/src/color-picker\";\n@import \"~element-ui/packages/theme-chalk/src/row\";\n\n.checkbox-container {\n display: flex;\n cursor: pointer;\n}\n\n.traditional-location {\n position: absolute;\n bottom: 0px;\n transition: all 1s ease;\n\n &:focus{\n outline: none;\n }\n &.open {\n left: 0px;\n .traditional-container {\n opacity: 1;\n }\n }\n &.close {\n left: -298px;\n .traditional-container {\n pointer-events:none;\n opacity: 0;\n }\n }\n}\n\n.traditional-container {\n transition: all 1s ease;\n float: left;\n padding-left: 16px;\n padding-right: 18px;\n max-height: calc(100% - 154px);\n text-align: left;\n overflow: none;\n border: 1px solid rgb(220, 223, 230);\n padding-top: 7px;\n padding-bottom: 16px;\n background: #ffffff;\n}\n\n.regions-display-text {\n width: 59px;\n height: 20px;\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n margin-left: 8px;\n}\n\n.all-checkbox {\n float: right;\n}\n\n.checkbox-group {\n width: 260px;\n border: 1px solid rgb(144, 147, 153);\n border-radius: 4px;\n background: #ffffff;\n margin-top: 6px;\n}\n\n.checkbox-group-inner {\n padding: 18px;\n max-height: 240px;\n min-height: 130px;\n overflow: auto;\n scrollbar-color: #c0c4cc rgba(1, 1, 1, 0);\n scrollbar-width: thin;\n\n &::-webkit-scrollbar {\n width: 4px;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n box-shadow: inset 0 0 6px #c0c4cc;\n }\n}\n\n::v-deep .el-checkbox__input {\n &.is-indeterminate, &.is-checked {\n .el-checkbox__inner {\n background-color: $app-primary-color;\n border-color: $app-primary-color;\n }\n }\n}\n\n::v-deep .el-color-picker__color {\n border: 1px solid $app-primary-color;\n}\n\n::v-deep .el-checkbox__label {\n padding-left: 5px;\n color: $app-primary-color !important;\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0px;\n line-height: 14px;\n}\n\n.activeItem {\n background-color: #bbb !important;\n}\n\n.my-checkbox {\n background-color: #fff;\n width: 100%;\n\n ::v-deep .el-color-picker {\n height: 16px !important;\n top: 3px;\n }\n\n ::v-deep .el-color-picker__trigger {\n margin-left: 8px;\n margin-right: 8px;\n padding: 0px;\n height: 16px;\n width: 16px;\n border: 0px;\n }\n\n}\n\n.hoverItem {\n background-color: #eee !important;\n}\n\n::v-deep .el-color-picker__icon {\n &.el-icon-arrow-down {\n display: none;\n }\n}\n\n::v-deep .show-picker {\n .el-color-picker__icon {\n &.el-icon-arrow-down {\n display: block;\n }\n }\n}\n\n::v-deep .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n\n.drawer {\n ::v-deep .el-drawer:focus {\n outline: none;\n }\n}\n\n.open-drawer {\n width: 20px;\n height: 40px;\n z-index: 8;\n position: absolute;\n left: 0px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #f7faff;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.drawer-button {\n float: left;\n width: 20px;\n height: 40px;\n z-index: 8;\n margin-top: calc(50% - 52px);\n border: solid 1px #e4e7ed;\n border-left: 0;\n background-color: #ffffff;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.drawer-button {\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transition-delay: 0.9s;\n }\n &.open {\n i {\n transform: rotate(0deg) scaleY(2.5);\n }\n }\n &.close {\n i {\n transform: rotate(180deg) scaleY(2.5); \n }\n }\n}\n\n.drawer-button.open i {\n transform: rotate(0deg) scaleY(2.5);\n}\n\n.drawer-button.close i {\n transform: rotate(180deg) scaleY(2.5);\n}\n</style>\n\n<style>\n.hide-scaffold-colour-popup {\n display: none;\n}\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraditionalControls.vue?vue&type=template&id=335c5764&scoped=true&\"\nimport script from \"./TraditionalControls.vue?vue&type=script&lang=js&\"\nexport * from \"./TraditionalControls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&\"\nimport style1 from \"./TraditionalControls.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"335c5764\",\n null\n \n)\n\nexport default component.exports","<template>\n <div\n ref=\"scaffoldContainer\"\n v-loading=\"loading\"\n class=\"scaffold-container\"\n element-loading-text=\"Loading...\"\n element-loading-spinner=\"el-icon-loading\"\n element-loading-background=\"rgba(0, 0, 0, 0.3)\"\n >\n <map-svg-sprite-color />\n <div\n id=\"organsDisplayArea\"\n ref=\"display\"\n tabindex=\"-1\"\n style=\"height:100%;width:100%;\"\n @keydown.66=\"backgroundChangeCallback\"\n />\n <div v-show=\"displayUI && !isTransitioning\">\n <el-popover\n v-if=\"displayWarning\"\n ref=\"warningPopover\"\n v-model=\"hoverVisabilities[6].value\"\n :content=\"warningMessage\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"warning-popper right-popper non-selectable\"\n />\n <i\n v-if=\"displayWarning\"\n v-popover:warningPopover\n class=\"el-icon-warning warning-icon\"\n @mouseover=\"showToolitip(6)\"\n @mouseout=\"hideToolitip(6)\"\n >\n <span class=\"warning-text\">Beta</span>\n </i>\n <el-popover\n ref=\"checkBoxPopover\"\n v-model=\"hoverVisabilities[5].value\"\n content=\"Change region visibility\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper right-popper non-selectable\"\n />\n <TraditionalControls\n ref=\"traditionalControl\"\n v-popover:checkBoxPopover\n :help-mode=\"helpMode\"\n :module=\"$module\"\n :show-colour-picker=\"showColourPicker\"\n @object-selected=\"objectSelected\"\n @object-hovered=\"objectHovered\"\n @drawer-toggled=\"drawerToggled\"\n />\n <div class=\"opacity-box\">\n <OpacityControls ref=\"opacityControl\" />\n </div>\n <el-popover\n v-if=\"sceneData.timeVarying\"\n ref=\"sliderPopover\"\n v-model=\"hoverVisabilities[4].value\"\n content=\"Move the slider to animate the region\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper top-popper non-selectable\"\n />\n <div\n v-if=\"sceneData.timeVarying\"\n v-popover:sliderPopover\n class=\"time-slider-container\"\n :class=\"[ minimisedSlider ? 'minimised' : '', sliderPosition]\"\n >\n <el-tabs type=\"card\">\n <el-tab-pane label=\"Animate scaffold\">\n <el-row class=\"tab-content\">\n <map-svg-icon\n v-if=\"isPlaying\"\n icon=\"pause\"\n class=\"icon-button video-button\"\n @click.native=\"play(false)\"\n />\n <map-svg-icon\n v-else\n icon=\"play\"\n class=\"video-button icon-button\"\n @click.native=\"play(true)\"\n />\n <el-slider\n :min=\"0\"\n :max=\"timeMax\"\n :value=\"sceneData.currentTime / 100 * timeMax\"\n :step=\"0.1\"\n tooltip-class=\"time-slider-tooltip\"\n class=\"slider\"\n :format-tooltip=\"formatTooltip\"\n :marks=\"timeStamps\"\n @input=\"timeChange($event)\"\n />\n </el-row>\n </el-tab-pane>\n <el-tab-pane label=\"Animation data\">\n <el-row class=\"tab-content\">\n <div class=\"animation-data\">\n Original duration:\n <div class=\"purple\">\n {{ orginalDuration }}\n </div>\n </div>\n <div class=\"animation-data\">\n Animation duration:\n <div class=\"purple\">\n {{ animateDuration }}\n </div>\n </div>\n <div class=\"animation-data\">\n Playback speed\n <el-select\n :popper-append-to-body=\"true\"\n :value=\"currentSpeed\"\n placeholder=\"Select\"\n class=\"select-box\"\n popper-class=\"scaffold_viewer_dropdown\"\n @change=\"speedChanged($event)\"\n >\n <el-option\n v-for=\"item in playSpeed\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </div>\n </el-row>\n </el-tab-pane>\n </el-tabs>\n </div>\n <div class=\"bottom-right-control\">\n <el-popover\n v-model=\"hoverVisabilities[0].value\"\n content=\"Zoom in\"\n placement=\"left\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper left-popper non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n icon=\"zoomIn\"\n class=\"icon-button zoomIn\"\n @click.native=\"zoomIn()\"\n @mouseover.native=\"showToolitip(0)\"\n @mouseout.native=\"hideToolitip(0)\"\n />\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[1].value\"\n content=\"Zoom out\"\n placement=\"top-end\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper popper-zoomout non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n icon=\"zoomOut\"\n class=\"icon-button zoomOut\"\n @click.native=\"zoomOut()\"\n @mouseover.native=\"showToolitip(1)\"\n @mouseout.native=\"hideToolitip(1)\"\n />\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[2].value\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper non-selectable\"\n >\n <div>\n Fit to\n <br>\n window\n </div>\n <map-svg-icon\n slot=\"reference\"\n icon=\"fitWindow\"\n class=\"icon-button fitWindow\"\n @click.native=\"fitWindow()\"\n @mouseover.native=\"showToolitip(2)\"\n @mouseout.native=\"hideToolitip(2)\"\n />\n </el-popover>\n </div>\n <el-popover\n ref=\"backgroundPopover\"\n placement=\"top-start\"\n width=\"128\"\n :append-to-body=\"false\"\n trigger=\"click\"\n popper-class=\"background-popper non-selectable\"\n >\n <el-row class=\"backgroundText\">\n Change background\n </el-row>\n <el-row class=\"backgroundChooser\">\n <div\n v-for=\"item in availableBackground\"\n :key=\"item\"\n :class=\"['backgroundChoice', item, item == currentBackground ? 'active' :'']\"\n @click=\"backgroundChangeCallback(item)\"\n />\n </el-row>\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[3].value\"\n content=\"Change background color\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper right-popper non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n v-popover:backgroundPopover\n icon=\"changeBckgd\"\n class=\"icon-button background-colour\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n @mouseover.native=\"showToolitip(3)\"\n @mouseout.native=\"hideToolitip(3)\"\n />\n </el-popover>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport OpacityControls from \"./OpacityControls\";\nimport TraditionalControls from \"./TraditionalControls\";\nimport { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\n\nimport {\n Col,\n Loading,\n Option,\n Popover,\n Row,\n Select,\n Slider,\n TabPane,\n Tabs\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Col);\nVue.use(Loading.directive);\nVue.use(Option);\nVue.use(Popover);\nVue.use(Row);\nVue.use(Select);\nVue.use(Slider);\nVue.use(TabPane);\nVue.use(Tabs);\n\nconst OrgansViewer = require(\"../scripts/organsRenderer\").OrgansViewer;\nconst EventNotifier = require(\"../scripts/eventNotifier\").EventNotifier;\n\n/**\n * A vue component of the scaffold viewer.\n *\n * @requires ./OpacityControls.vue\n * @requires ./TraditionalControls.vue\n */\nexport default {\n name: \"ScaffoldVuer\",\n components: {\n OpacityControls,\n MapSvgIcon,\n MapSvgSpriteColor,\n TraditionalControls\n },\n props: {\n /**\n * URL of the zincjs metadata. This value will be ignored if a valid\n * state prop is also provided.\n * If the url needs to be updated with state present, please use\n * the setURL method.\n */\n url: {\n type: String,\n default: \"\"\n },\n /**\n * Show the colour control of set to true.\n */\n showColourPicker: {\n type: Boolean,\n default: false\n },\n /**\n * Flag to show/hide the UI.\n */\n displayUI: {\n type: Boolean,\n default: true\n },\n /**\n * Display all graphics at start.\n *\n * This setting only works when traditional is set to false.\n */\n displayAtStartUp: {\n type: Boolean,\n default: true\n },\n /**\n * Use for toggling the help tooltips.\n */\n helpMode: {\n type: Boolean,\n default: false\n },\n /**\n * Use for show/display beta warning icon.\n */\n displayWarning: {\n type: Boolean,\n default: true\n },\n /**\n * Warning message for the hovered over text\n * on the warning icon.\n */\n warningMessage: {\n type: String,\n default: \"Beta feature - under active development\"\n },\n /**\n * Show/hide pickable markers for regions.\n */\n displayMarkers: {\n type: Boolean,\n default: true\n },\n /**\n * Show/hide minimap.\n */\n displayMinimap: {\n type: Boolean,\n default: false\n },\n /**\n * Settings for minimap position, size and alignment.\n */\n minimapSettings: {\n type: Object,\n default: function() {\n return {\n x_offset: 16,\n y_offset: 16,\n width: 128,\n height: 128,\n align: \"top-right\"\n };\n }\n },\n /**\n * State containing state of the scaffold.\n */\n state: {\n type: Object,\n default: undefined\n },\n /**\n * Optional prop for the name of the region to focus on,\n * this option is ignored if state or viewURL is also provided.\n */\n region: {\n type: String,\n default: \"\"\n },\n /**\n * Optional prop for an URL of containing information of a viewport.\n * This option is ignored if state is also provided.\n * It will use the provided URL as base if a relative parth is provided.\n */\n viewURL: {\n type: String,\n default: \"\"\n },\n /**\n * Settings for turning on/off rendering\n */\n render: {\n type: Boolean,\n default: true\n }\n },\n data: function() {\n return {\n sceneData: this.$module.sceneData,\n isPlaying: false,\n /**\n * This is set when scene is transitioning.\n */\n isTransitioning: false,\n tooltipAppendToBody: false,\n hoverVisabilities: [\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false }\n ],\n inHelp: false,\n loading: false,\n duration: 3000,\n drawerOpen: true,\n currentBackground: \"white\",\n availableBackground: [\"white\", \"lightskyblue\", \"black\"],\n minimisedSlider: false,\n sliderPosition: \"\",\n timeMax: 100,\n orginalDuration: \"\",\n animateDuration: \"6secs\",\n playSpeed: [\n {\n value: 0.1,\n label: \"0.1x\"\n },\n {\n value: 0.5,\n label: \"0.5x\"\n },\n {\n value: 1,\n label: \"1x\"\n },\n {\n value: 2,\n label: \"2x\"\n },\n {\n value: 5,\n label: \"5x\"\n },\n {\n value: 10,\n label: \"10x\"\n }\n ],\n currentSpeed: 1,\n timeStamps: {}\n };\n },\n watch: {\n url: {\n handler: function(newValue) {\n if (this.state === undefined || this.state.url === undefined)\n this.setURL(newValue);\n },\n immediate: true\n },\n region: {\n handler: function(region) {\n if (!(this.state || this.viewURL)) this.setFocusedRegion(region);\n },\n immediate: true\n },\n state: {\n handler: function(state) {\n this.setState(state);\n },\n immediate: true,\n deep: true\n },\n viewURL: {\n handler: function(viewURL) {\n this.updateViewURL(viewURL);\n },\n immediate: true\n },\n helpMode: function(val) {\n this.setHelpMode(val);\n },\n displayMarkers: function(val) {\n this.$module.scene.displayMarkers = val;\n },\n displayMinimap: function(val) {\n this.$module.scene.displayMinimap = val;\n },\n \"sceneData.currentTime\": function() {\n /**\n * Triggers when scene time changes.\n *\n * @property {number} time Current build-in time of scene.\n * of selected object.\n */\n this.$emit(\"timeChanged\", this.sceneData.currentTime);\n },\n duration: function() {\n this.$module.scene.setDuration(this.duration);\n },\n minimapSettings: {\n deep: true,\n handler: \"updateMinimapScissor\"\n },\n render: function(val) {\n this.toggleRendering(val);\n }\n },\n beforeCreate: function() {\n this.$module = new OrgansViewer();\n this.isReady = false;\n this.selectedObject = undefined;\n this.hoveredObject = undefined;\n this.currentBackground = \"white\";\n this._currentURL = undefined;\n this.availableBackground = [\"white\", \"black\", \"lightskyblue\"];\n },\n mounted: function() {\n let eventNotifier = new EventNotifier();\n eventNotifier.subscribe(this, this.eventNotifierCallback);\n this.$module.addNotifier(eventNotifier);\n this.$module.addOrganPartAddedCallback(this.organsAdded);\n this.$module.initialiseRenderer(this.$refs.display);\n this.toggleRendering(this.render);\n this.ro = new ResizeObserver(this.adjustLayout).observe(\n this.$refs.scaffoldContainer\n );\n this.defaultRate = this.$module.getPlayRate();\n },\n beforeDestroy: function() {\n if (this.ro) this.ro.disconnect();\n this.$module.destroy();\n this.$module = undefined;\n },\n methods: {\n /**\n * This is called when a new organ is read into the scene.\n */\n organsAdded: function() {\n this.loading = false;\n },\n /**\n * This is called when Change backgspeedround colour button\n * is pressed an causes the backgrouColornd colour to be changed\n * to one of the three preset colour: white, black and\n * lightskyblue.\n */\n backgroundChangeCallback: function(colour) {\n this.currentBackground = colour;\n this.$module.zincRenderer\n .getThreeJSRenderer()\n .setClearColor(this.currentBackground, 1);\n },\n /**\n * This is called by captueeScreenshot and after the last render\n * loop, it download a screenshot of the current scene with no UI.\n */\n captureScreenshotCallback: function() {\n //Remove the callback, only needs to happen once\n this.$module.zincRenderer.removePostRenderCallbackFunction(\n this.captureID\n );\n let screenshot = this.$module.zincRenderer\n .getThreeJSRenderer()\n .domElement.toDataURL(\"image/png\");\n let hrefElement = document.createElement(\"a\");\n document.body.append(hrefElement);\n if (!this.captureFilename) hrefElement.download = `screenshot.png`;\n else hrefElement.download = this.captureFilename;\n hrefElement.href = screenshot;\n hrefElement.click();\n hrefElement.remove();\n },\n /**\n * Function for capturing a screenshot of the current rendering.\n *\n * @param {String} filename filename given to the screenshot.\n *\n * @public\n */\n captureScreenshot: function(filename) {\n this.captureFilename = filename;\n this.captureID = this.$module.zincRenderer.addPostRenderCallbackFunction(\n this.captureScreenshotCallback\n );\n },\n formatTooltip(val) {\n if (this.timeMax >= 1000) {\n if (val) {\n let sec = ((val % 60000) / 1000).toFixed(2) + \"s\";\n let min = val > 60000 ? (val / 60000).toFixed(0) + \"m \" : \"\";\n return min + sec;\n }\n }\n return val ? val.toFixed(2) + \" ms\" : \"0 ms\";\n },\n /**\n * Function to reset the view to default.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n fitWindow: function() {\n if (this.$module.scene) {\n this.$module.scene.viewAll();\n }\n },\n /**\n * Function to zoom in.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n zoomIn: function() {\n if (this.$module.scene) {\n this.$module.scene.changeZoomByScrollRateUnit(-1);\n }\n },\n /**\n * Function to zoom out.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n zoomOut: function() {\n if (this.$module.scene) {\n this.$module.scene.changeZoomByScrollRateUnit(1);\n }\n },\n /**\n * Function to change the current play speed.\n *\n * @public\n */\n speedChanged: function(speed) {\n this.currentSpeed = speed;\n this.$module.setPlayRate(this.defaultRate * this.currentSpeed);\n },\n /**\n * Function used to stop the free spin\n *\n * @public\n */\n stopFreeSpin: function() {\n let cameracontrol = this.$module.scene.getZincCameraControls();\n cameracontrol.stopAutoTumble();\n this.isTransitioning = false;\n },\n /**\n * Focus on named region\n */\n viewRegion: function(name) {\n if (name && name != \"\" && this.$module.scene) {\n let objects = this.$module.scene.findObjectsWithGroupName(name);\n let box = this.$module.scene.getBoundingBoxOfZincObjects(objects);\n if (box) {\n if (this.$module.isSyncControl()) {\n this.$module.setSyncControlZoomToBox(box);\n } else {\n this.$module.scene.viewAllWithBoundingBox(box);\n }\n }\n }\n },\n setFocusedRegion: function(name) {\n if (name) {\n if (this.isReady) {\n this.viewRegion(name);\n } else {\n this.$module.setFinishDownloadCallback(\n this.setURLFinishCallback({ region: name })\n );\n }\n }\n },\n updateViewURL: function(viewURL) {\n if (viewURL) {\n if (this.isReady) {\n const url = new URL(viewURL, this.url);\n this.$module.scene.loadViewURL(url);\n } else {\n this.$module.setFinishDownloadCallback(\n this.setURLFinishCallback({ viewURL: viewURL })\n );\n }\n }\n },\n getRendererInfo: function() {\n if (this.$module.zincRenderer) {\n return this.$module.zincRenderer.getThreeJSRenderer().info;\n }\n return undefined;\n },\n /**\n * Function used to rotate the scene.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n freeSpin: function() {\n if (this.$module.scene) {\n let cameracontrol = this.$module.scene.getZincCameraControls();\n this.isTransitioning = true;\n cameracontrol.enableAutoTumble();\n cameracontrol.autoTumble([1.0, 0.0], Math.PI, true);\n setTimeout(this.stopFreeSpin, 4000);\n }\n },\n /**\n * Callback when a region is selected/highlighted.\n * It will also update other controls.\n */\n eventNotifierCallback: function(event) {\n if (event.eventType == 1) {\n if (this.$refs.traditionalControl) {\n if (event.identifiers[0]) {\n let id = event.identifiers[0].data.id\n ? event.identifiers[0].data.id\n : event.identifiers[0].data.group;\n this.$refs.traditionalControl.changeActiveByName(id, true);\n } else {\n this.$refs.traditionalControl.removeActive(true);\n }\n }\n /**\n * Triggers when an object has been selected\n *\n * @property {array} identifiers array of identifiers\n * of selected object.\n */\n this.$emit(\"scaffold-selected\", event.identifiers);\n } else if (event.eventType == 2) {\n if (this.$refs.traditionalControl) {\n if (event.identifiers[0]) {\n let id = event.identifiers[0].data.id\n ? event.identifiers[0].data.id\n : event.identifiers[0].data.group;\n this.$refs.traditionalControl.changeHoverByName(id, true);\n } else this.$refs.traditionalControl.removeHover(true);\n }\n /**\n * Triggers when an object has been highlighted\n *\n * @property {array} identifiers array of identifiers\n * of highlighted object.\n */\n this.$emit(\"scaffold-highlighted\", event.identifiers);\n }\n },\n /**\n * Get the coordinates of the current selected region.\n *\n * @public\n */\n getCoordinatesOfSelected: function() {\n if (this.selectedObject) {\n return this.$module.scene.getObjectsScreenXY([this.selectedObject]);\n }\n return undefined;\n },\n /**\n * Return an object containing the window coordinates of the\n * current selected region which will be updated after each render\n * loop.\n *\n * @public\n */\n getDynamicSelectedCoordinates: function() {\n return this.$module.selectedScreenCoordinates;\n },\n /**\n * Callback when time is changed through the UI.\n */\n timeChange: function(event) {\n let normalizedTime = (event / this.timeMax) * 100;\n if (normalizedTime != this.sceneData.currentTime)\n this.$module.updateTime(normalizedTime);\n },\n /**\n * A callback used by children components. Set the selected zinc object\n *\n * @param {object} object Zinc object\n */\n objectSelected: function(object, propagate) {\n if (object !== this.selectedObject) {\n this.selectedObject = object;\n this.$refs.opacityControl.setObject(this.selectedObject);\n if (object) this.$module.setSelectedByZincObject(object, propagate);\n else this.$module.setSelectedByObjects([], propagate);\n }\n },\n /**\n * A callback used by children components. Set the highlighted zinc object\n *\n * @param {object} object Zinc object\n */\n objectHovered: function(object, propagate) {\n if (object !== this.hoveredObject) {\n this.hoveredObject = object;\n if (object) this.$module.setHighlightedByZincObject(object, propagate);\n else this.$module.setHighlightedByObjects([], propagate);\n }\n },\n /**\n * Set the selected by name.\n *\n * @param {name} name Name of the region\n */\n changeActiveByName: function(name, propagate) {\n if (name === undefined)\n this.$refs.traditionalControl.removeActive(propagate);\n else\n this.$refs.traditionalControl.changeActiveByName(name, propagate);\n },\n /**\n * Set the highlighted by name.\n *\n * @param {name} name Name of the region\n */\n changeHighlightedByName: function(name, propagate) {\n if (name === undefined)\n this.$refs.traditionalControl.removeHover(propagate);\n else\n this.$refs.traditionalControl.changeHoverByName(name, propagate);\n },\n /**\n * Start the animation.\n *\n * @param {object} object Zinc object\n */\n play: function(flag) {\n this.$module.playAnimation(flag);\n this.isPlaying = flag;\n },\n /**\n * Function to toggle on/off overlay help.\n */\n setHelpMode: function(helpMode) {\n if (helpMode) {\n this.inHelp = true;\n this.hoverVisabilities.forEach(item => {\n item.value = true;\n });\n } else {\n this.inHelp = false;\n this.hoverVisabilities.forEach(item => {\n item.value = false;\n });\n }\n },\n /**\n * This is called when mouse cursor enters supported elements\n * with help tootltips.\n */\n showToolitip: function(tooltipNumber) {\n if (!this.inHelp) {\n this.tooltipWait = setTimeout(() => {\n this.hoverVisabilities[tooltipNumber].value = true;\n }, 500);\n }\n },\n /**\n * This is called when mouse cursor exits supported element..\n */\n hideToolitip: function(tooltipNumber) {\n if (!this.inHelp) {\n this.hoverVisabilities[tooltipNumber].value = false;\n clearTimeout(this.tooltipWait);\n }\n },\n /**\n * Called when minimap settings has changed. Pass the\n * parameters to ZincJS and marked it for update.\n */\n updateMinimapScissor: function() {\n Object.keys(this.minimapSettings).forEach(key => {\n this.$module.scene.minimapScissor[key] = this.minimapSettings[key];\n });\n this.$module.scene.minimapScissor.updateRequired = true;\n },\n updateSettingsfromScene: function() {\n this.currentSpeed = 1;\n this.$module.setPlayRate(this.defaultRate);\n this.orginalDuration = this.$module.scene.getMetadataTag(\n \"OriginalDuration\"\n );\n this.animateDuration = this.$module.scene.getMetadataTag(\"Duration\");\n let timeStamps = this.$module.scene.getMetadataTag(\"TimeStamps\");\n this.timeStamps = {};\n for (const key in timeStamps) {\n this.timeStamps[timeStamps[key]] = key;\n }\n this.timeMax = this.$module.scene.getDuration();\n },\n setURLFinishCallback: function(options) {\n return () => {\n if (options) {\n if (options.viewport) {\n this.$module.scene\n .getZincCameraControls()\n .setCurrentCameraSettings(options.viewport);\n } else if (options.viewURL && options.viewURL !== \"\") {\n const url = new URL(options.viewURL, this.url);\n this.$module.scene.loadViewURL(url);\n } else if (options.region && options.region !== \"\") {\n this.viewRegion(options.region);\n }\n if (options.visibility) {\n // Some UIs may not be ready at this time.\n this.$nextTick(() => {\n this.$refs.traditionalControl.setState(options.visibility);\n });\n }\n }\n this.updateSettingsfromScene();\n this.$module.updateTime(0.01);\n this.$module.updateTime(0);\n this.$module.unsetFinishDownloadCallback();\n this.isReady = true;\n };\n },\n /**\n * Function used for getting the current states of the scene. This exported states\n * can be imported using the importStates method.\n *\n * @public\n */\n getState: function() {\n let state = {\n url: this._currentURL,\n viewport: undefined,\n visibility: undefined\n };\n if (this.$refs.traditionalControl)\n state.visibility = this.$refs.traditionalControl.getState();\n if (this.$module.scene) {\n let zincCameraControls = this.$module.scene.getZincCameraControls();\n state.viewport = zincCameraControls.getCurrentViewport();\n }\n return state;\n },\n /**\n * Function used for importing the states of the scene. This exported states\n * can be imported using the read states method.\n *\n * @public\n */\n setState: function(state) {\n if (state) {\n if (state.url && state.url !== this._currentURL) {\n this.setURLAndState(state.url, {\n viewport: state.viewport,\n visibility: state.visibility\n });\n } else {\n if (state.viewport || state.visibility) {\n if (this.isReady && this.$module.scene) {\n if (state.viewport)\n this.$module.scene\n .getZincCameraControls()\n .setCurrentCameraSettings(state.viewport);\n if (state.visibility)\n this.$refs.traditionalControl.setState(state.visibility);\n } else {\n this.$module.setFinishDownloadCallback(\n this.setURLFinishCallback({\n viewport: state.viewport,\n visibility: state.visibility\n })\n );\n }\n }\n }\n }\n },\n exportGLTF: function(binary) {\n return this.$module.scene.exportGLTF(binary);\n },\n /**\n * Function used for reading in new scaffold metadata and a custom\n * viewport. This function will ignore the state prop and\n * read in the new url.\n *\n * @public\n */\n setURLAndState: function(newValue, state) {\n if (newValue != this._currentURL) {\n let viewport = state && state.viewport ? state.viewport : undefined;\n let visibility =\n state && state.visibility ? state.visibility : undefined;\n this._currentURL = newValue;\n if (this.$refs.traditionalControl)\n this.$refs.traditionalControl.clear();\n this.loading = true;\n this.isReady = false;\n this.$module.setFinishDownloadCallback(\n this.setURLFinishCallback({\n viewport: viewport,\n region: this.region,\n viewURL: this.viewURL,\n visibility: visibility\n })\n );\n this.$module.loadOrgansFromURL(\n newValue,\n undefined,\n undefined,\n \"scene\",\n undefined\n );\n this.$module.scene.displayMarkers = this.displayMarkers;\n this.$module.scene.displayMinimap = this.displayMinimap;\n this.updateMinimapScissor();\n }\n },\n /**\n * Function used for reading in new scaffold metadata. This function will ignore\n * the state prop and read in the new url.\n *\n * @public\n */\n setURL: function(newValue) {\n this.setURLAndState(newValue, undefined);\n },\n /**\n * Callback when drawer is toggled.\n *\n */\n drawerToggled: function(flag) {\n this.drawerOpen = flag;\n this.adjustLayout();\n },\n /**\n * Callback using ResizeObserver.\n */\n adjustLayout: function() {\n let width = this.$refs.scaffoldContainer.clientWidth;\n this.minimisedSlider = width < 812;\n if (this.minimisedSlider) {\n this.sliderPosition = this.drawerOpen ? \"right\" : \"left\";\n } else {\n this.sliderPosition = \"\";\n }\n },\n toggleRendering: function(flag) {\n if (this.$module.zincRenderer) {\n if (flag) {\n this.$module.zincRenderer.animate();\n } else {\n this.$module.zincRenderer.stopAnimate();\n }\n }\n },\n forceResize: function() {\n if (this.$module.zincRenderer) {\n this.$module.zincRenderer.onWindowResize();\n }\n },\n syncControlCallback: function() {\n const payload = this.$module.NDCCameraControl.getPanZoom();\n this.$emit(\"scaffold-navigated\", payload);\n },\n toggleSyncControl: function(flag) {\n this.$module.toggleSyncControl(flag);\n this.$module.setSyncControlCallback(this.syncControlCallback);\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/col\";\n@import \"~element-ui/packages/theme-chalk/src/loading\";\n@import \"~element-ui/packages/theme-chalk/src/option\";\n@import \"~element-ui/packages/theme-chalk/src/popover\";\n@import \"~element-ui/packages/theme-chalk/src/row\";\n@import \"~element-ui/packages/theme-chalk/src/select\";\n@import \"~element-ui/packages/theme-chalk/src/slider\";\n@import \"~element-ui/packages/theme-chalk/src/tabs\";\n@import \"~element-ui/packages/theme-chalk/src/tab-pane\";\n\n.warning-icon {\n position: absolute;\n top: 15px;\n left: 37px;\n text-align: left;\n font-size: 25px;\n color: $warning;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.warning-text {\n font-size: 15px;\n vertical-align: 5px;\n}\n\n::v-deep .warning-popper {\n padding: 9px 10px;\n min-width: 150px;\n font-size: 12px;\n color: #fff;\n background-color: $warning;\n\n &.right-popper {\n .popper__arrow {\n &::after {\n border-right-color: $warning !important;\n }\n }\n }\n}\n\n#organsDisplayArea {\n &:focus {\n outline: none !important;\n border: 0px;\n }\n}\n\n.scaffold-container {\n height: 100%;\n width: 100%;\n position: relative;\n}\n\n.time-slider-container {\n text-align: left;\n position: absolute;\n right: 155px;\n width: calc(100% - 530px);\n bottom: 16px;\n transition: all 1s ease;\n outline: none;\n\n &.minimised {\n width: calc(40%);\n }\n\n &.left {\n right: 155px;\n width: calc(100% - 250px);\n }\n\n &.right {\n right: 8px;\n bottom: 54px;\n }\n}\n\n.slider-display-text {\n height: 20px;\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n padding-left: 8px;\n text-shadow: -1px -1px #fff, 1px -1px #fff, -1px 1px #fff, 1px -1px #fff;\n}\n\n.tab-content {\n display: flex;\n height: 34px;\n padding-top: 8px;\n font-size: 14px;\n}\n\n.tab-content ::v-deep .el-slider__marks-text {\n margin-top: 12px;\n margin-left: 8px;\n font-size: 10px;\n}\n\n.tab-content ::v-deep .el-slider__stop {\n width: 10px;\n height: 10px;\n top: -1px;\n border: solid 1px $app-primary-color;\n}\n\n.animation-data {\n margin-left: 8px;\n line-height: 26px;\n display: flex;\n\n :not(:first-child) {\n margin-left: 8px;\n }\n .purple {\n padding-left: 2px;\n color: $app-primary-color;\n }\n}\n.slider {\n margin-left: 30px;\n width: calc(100% - 88px);\n margin-top: -7px;\n\n ::v-deep .el-slider__runway {\n height: 10px;\n margin: 14px 0;\n }\n\n ::v-deep .el-slider__button-wrapper {\n top: -13px;\n }\n}\n\n.zoomOut {\n padding-left: 8px;\n}\n\n.fitWindow {\n padding-left: 8px;\n}\n\n::v-deep .non-selectable {\n user-select: none;\n}\n\n::v-deep .background-popper {\n padding: 5px 12px;\n background-color: #ffffff;\n border: 1px solid $app-primary-color;\n box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.06);\n height: 72px;\n width: 128px;\n min-width: 128px;\n\n &.el-popper[x-placement^=\"top\"] {\n .popper__arrow {\n border-top-color: $app-primary-color !important;\n &:after {\n border-top-color: #fff !important;\n }\n }\n }\n}\n\n.background-colour {\n bottom: 16px;\n position: absolute;\n transition: all 1s ease;\n\n &.open {\n left: 322px;\n }\n\n &.close {\n left: 24px;\n }\n}\n\n.backgroundText {\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n}\n\n.backgroundChooser {\n display: flex;\n margin-top: 16px;\n}\n\n.backgroundChoice {\n width: 20px;\n height: 20px;\n border: 1px solid rgb(144, 147, 153);\n margin-left: 20px;\n\n &.active {\n border: 2px solid $app-primary-color;\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &.white {\n background-color: white;\n margin-left: 10px;\n }\n\n &.black {\n background-color: black;\n }\n\n &.lightskyblue {\n background-color: lightskyblue;\n }\n}\n\n.icon-button {\n height: 24px !important;\n width: 24px !important;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.bottom-right-control {\n position: absolute;\n right: 16px;\n bottom: 16px;\n}\n\n.video-button {\n margin-left: 8px;\n}\n\n.time-slider-container {\n ::v-deep .el-tabs__header {\n margin: 0px;\n border-bottom: 1px solid rgb(144, 147, 153);\n }\n\n .el-row {\n margin-bottom: 5px;\n }\n\n ::v-deep .el-tabs__content {\n border-left: 1px solid rgb(144, 147, 153);\n border-bottom: 1px solid rgb(144, 147, 153);\n border-right: 1px solid rgb(144, 147, 153);\n border-radius: 0px 0px 4px 4px;\n background-color: white;\n }\n\n ::v-deep .el-tabs--card {\n > .el-tabs__header {\n .el-tabs__nav {\n border: 1px solid rgb(144, 147, 153);\n border-bottom: none;\n border-radius: 4px 4px 0px 0px;\n background-color: white;\n }\n\n .el-tabs__item {\n height: 24px;\n line-height: 24px;\n padding: 0 8px !important;\n border-bottom: 1px solid;\n border-left: 1px solid rgb(144, 147, 153);\n &:first-child {\n border-left: none;\n }\n &.is-active {\n border-bottom: 1px solid white;\n color: rgb(48, 49, 51);\n }\n &:hover {\n color: $app-primary-color;\n }\n }\n }\n }\n}\n\n::v-deep .scaffold-popper {\n padding: 6px 4px;\n font-size: 12px;\n color: rgb(48, 49, 51);\n background-color: #f3ecf6;\n border: 1px solid $app-primary-color;\n white-space: nowrap;\n min-width: unset;\n pointer-events: none;\n\n &.left-popper {\n .popper__arrow {\n border-left-color: $app-primary-color !important;\n &:after {\n border-left-color: #f3ecf6 !important;\n }\n }\n }\n\n &.right-popper {\n .popper__arrow {\n border-right-color: $app-primary-color !important;\n &:after {\n border-right-color: #f3ecf6 !important;\n }\n }\n }\n\n &.el-popper[x-placement^=\"top\"] {\n .popper__arrow {\n border-top-color: $app-primary-color !important;\n &:after {\n border-top-color: #f3ecf6 !important;\n }\n }\n }\n}\n\n::v-deep .el-slider__button {\n border: 2px solid $app-primary-color;\n}\n\n::v-deep .el-slider__bar {\n background-color: $app-primary-color;\n height: 10px;\n}\n\n::v-deep .el-loading-spinner {\n i, .el-loading-text {\n color: $app-primary-color;\n }\n}\n\n::v-deep .popper-zoomout {\n padding-right: 11px;\n left: -21px !important;\n .popper__arrow {\n left: 53px !important;\n }\n}\n\n.select-box {\n width: 57px;\n border-radius: 4px;\n border: 1px solid rgb(144, 147, 153);\n background-color: var(--white);\n font-weight: 500;\n color: rgb(48, 49, 51);\n margin-left: 8px;\n\n ::v-deep .el-input__inner {\n color: $app-primary-color;\n height: 22px;\n padding-left: 8px;\n padding-right: 8px;\n border: none;\n font-family: \"Asap\", sans-serif;\n line-height: 22px;\n }\n\n ::v-deep .el-input,\n ::v-deep .el-input__icon {\n line-height: 22px;\n }\n}\n</style>\n\n<style lang=\"scss\">\n.time-slider-tooltip {\n padding: 6px 4px !important;\n font-family: \"Asap\", sans-serif;\n font-size: 12px !important;\n color: rgb(48, 49, 51) !important;\n background-color: #f3ecf6 !important;\n border: 1px solid $app-primary-color !important;\n white-space: nowrap !important;\n min-width: unset !important;\n}\n\n.scaffold_viewer_dropdown .el-select-dropdown__item {\n white-space: nowrap;\n text-align: left;\n font-family: \"Asap\", sans-serif;\n}\n\n.opacity-box {\n right: 0px;\n bottom:200px;\n position:absolute;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScaffoldVuer.vue?vue&type=template&id=226a06e2&scoped=true&\"\nimport script from \"./ScaffoldVuer.vue?vue&type=script&lang=js&\"\nexport * from \"./ScaffoldVuer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ScaffoldVuer.vue?vue&type=style&index=0&id=226a06e2&scoped=true&lang=scss&\"\nimport style1 from \"./ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"226a06e2\",\n null\n \n)\n\nexport default component.exports","module.exports = require(\"core-js/modules/es.string.includes\");","module.exports = require(\"element-ui/lib/theme-chalk/row.css\");"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://scaffoldvuer/webpack/universalModuleDefinition","webpack://scaffoldvuer/webpack/bootstrap","webpack://scaffoldvuer/external \"core-js/modules/es.symbol.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/checkbox-group\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/checkbox-group.css\"","webpack://scaffoldvuer/external \"element-ui/lib/select\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/select.css\"","webpack://scaffoldvuer/external \"element-ui/lib/tree\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.for-each\"","webpack://scaffoldvuer/external \"element-ui/lib/container\"","webpack://scaffoldvuer/external \"core-js/modules/web.dom-collections.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/main\"","webpack://scaffoldvuer/external \"core-js/modules/es.object.keys\"","webpack://scaffoldvuer/./src/components/OpacityControls.vue?cbe9","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://scaffoldvuer/external \"core-js/modules/web.url\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://scaffoldvuer/external \"element-ui/lib/header\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tabs.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.number.to-fixed\"","webpack://scaffoldvuer/external \"element-ui/lib/tab-pane\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/color-picker.css\"","webpack://scaffoldvuer/external \"element-ui/lib/drawer\"","webpack://scaffoldvuer/external \"@abi-software/svg-sprite\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://scaffoldvuer/./src/components/TreeControls.vue?e3f9","webpack://scaffoldvuer/external \"element-ui/lib/color-picker\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tree.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/drawer.css\"","webpack://scaffoldvuer/external \"lodash/uniq\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/header.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.symbol.description\"","webpack://scaffoldvuer/external \"core-js/modules/es.regexp.exec\"","webpack://scaffoldvuer/./src/scripts/organsRenderer.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/checkbox.css\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://scaffoldvuer/./src/scripts/graphicsHighlight.js","webpack://scaffoldvuer/external \"core-js/modules/es.regexp.to-string\"","webpack://scaffoldvuer/external \"core-js/modules/es.symbol\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?7756","webpack://scaffoldvuer/external \"core-js/modules/es.array.slice\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://scaffoldvuer/external \"lodash/orderBy\"","webpack://scaffoldvuer/./src/scripts/BaseModule.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.index-of\"","webpack://scaffoldvuer/external \"element-ui/lib/locale/lang/en\"","webpack://scaffoldvuer/external \"element-ui/lib/row\"","webpack://scaffoldvuer/external \"core-js/modules/es.number.constructor\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/typeof.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/col.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/main.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.splice\"","webpack://scaffoldvuer/external \"element-ui/lib/locale\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/option.css\"","webpack://scaffoldvuer/./src/scripts/RendererModule.js","webpack://scaffoldvuer/external \"core-js/modules/es.object.to-string\"","webpack://scaffoldvuer/external \"vue\"","webpack://scaffoldvuer/external \"element-ui/lib/tabs\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/icon.css\"","webpack://scaffoldvuer/./src/components/TreeControls.vue?dccf","webpack://scaffoldvuer/external \"core-js/modules/es.string.iterator\"","webpack://scaffoldvuer/external \"zincjs\"","webpack://scaffoldvuer/external \"element-ui/lib/popover\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/slider.css\"","webpack://scaffoldvuer/./src/scripts/annotation.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tab-pane.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/base.css\"","webpack://scaffoldvuer/./src/scripts/eventNotifier.js","webpack://scaffoldvuer/external \"@soda/get-current-script\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?1b70","webpack://scaffoldvuer/external \"element-ui/lib/col\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/popover.css\"","webpack://scaffoldvuer/external \"element-ui/lib/slider\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.includes\"","webpack://scaffoldvuer/external \"element-ui/lib/loading\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/container.css\"","webpack://scaffoldvuer/external \"element-ui/lib/icon\"","webpack://scaffoldvuer/external \"element-ui/lib/checkbox\"","webpack://scaffoldvuer/external \"core-js/modules/es.function.name\"","webpack://scaffoldvuer/external \"core-js/modules/web.dom-collections.for-each\"","webpack://scaffoldvuer/external \"core-js/modules/es.string.replace\"","webpack://scaffoldvuer/external \"element-ui/lib/option\"","webpack://scaffoldvuer/./src/scripts/WebGL.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/readOnlyError.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.from\"","webpack://scaffoldvuer/./src/components/ScaffoldTooltip.vue?ff97","webpack://scaffoldvuer/external \"core-js/modules/es.array.map\"","webpack://scaffoldvuer/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?09a1","webpack://scaffoldvuer/./src/components/OpacityControls.vue?2819","webpack://scaffoldvuer/src/components/OpacityControls.vue","webpack://scaffoldvuer/./src/components/OpacityControls.vue?c7a4","webpack://scaffoldvuer/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://scaffoldvuer/./src/components/OpacityControls.vue","webpack://scaffoldvuer/./src/components/ScaffoldTooltip.vue?7877","webpack://scaffoldvuer/src/components/ScaffoldTooltip.vue","webpack://scaffoldvuer/./src/components/ScaffoldTooltip.vue?2635","webpack://scaffoldvuer/./src/components/ScaffoldTooltip.vue","webpack://scaffoldvuer/./src/components/TreeControls.vue?fad0","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://scaffoldvuer/src/components/TreeControls.vue","webpack://scaffoldvuer/./src/components/TreeControls.vue?35a6","webpack://scaffoldvuer/./src/components/TreeControls.vue","webpack://scaffoldvuer/src/components/ScaffoldVuer.vue","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?13bd","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue","webpack://scaffoldvuer/external \"core-js/modules/es.string.includes\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/row.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.find\""],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","_nonIterableSpread","TypeError","_iterableToArray","iter","iterator","Array","from","arrayLikeToArray","_arrayWithoutHoles","arr","isArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_toConsumableArray","THREE","OrgansSceneData","currentName","currentSystem","currentPart","currentSpecies","metaURL","viewURL","geometries","lines","glyphsets","pointsets","currentTime","timeVarying","OrgansViewer","ModelsLoaderIn","RendererModule","_this","pickerScene","undefined","sceneData","timeChangedCallbacks","sceneChangedCallbacks","organPartAddedCallbacks","finishDownloadCallback","modelsLoader","NDCCameraControl","typeName","getSceneData","updateTime","duration","scene","getDuration","actualTime","nerveMapIsActive","setMorphsTime","preRenderTimeUpdate","zincRenderer","getCurrentTime","length","nerveMap","additionalReader","setTime","toggleSyncControl","flag","cameraControl","getZincCameraControls","resetView","enableSyncControl","disableSyncControl","isSyncControl","setSyncControlZoomToBox","box","zoomToBox","setSyncControlCallback","callback","setEventCallback","setSyncControlCenterZoom","center","zoom","setCenterZoom","postRenderSelectedCoordinatesUpdate","selectedCenter","vector","Vector3","copy","coord","vectorToScreenXY","selectedScreenCoordinates","x","y","preRenderUpdateCallback","postRenderUpdateCallback","addTimeChangedCallback","push","setTexturePos","setSliderPos","addSceneChangedCallback","addOrganPartAddedCallback","setFinishDownloadCallback","unsetFinishDownloadCallback","getNamedObjectsToScreenCoordinates","camera","setFromMatrixPosition","obj","matrixWorld","widthHalf","width","heightHalf","height","project","getIdObjectFromIntersect","intersected","id","intersectedObject","userData","isMarker","parent","morph","annotations","getAnnotationsFromObjects","data","group","_pickingCallback","intersects","window_x","window_y","getIntersectedObject","idObject","coords","isGlyph","setSelectedByObjects","setSelectedByZincObject","getGlyphset","_hoverCallback","displayArea","style","cursor","setHighlightedByObjects","changeOrganPartsVisibilityForScene","type","findGeometriesWithGroupName","setVisibility","findGlyphsetsWithGroupName","findPointsetsWithGroupName","findLinesWithGroupName","changeGeometriesVisibility","changeGlyphsetsVisibility","changeLinesVisibility","changePointsetsVisibility","changeOrganPartsVisibility","typeIn","changeOrganPartsVisibilityCallback","changeBackgroundColour","backgroundColourString","colour","Color","internalRenderer","getThreeJSRenderer","setClearColor","addOrganPartToSceneData","zincObject","isGeometry","isGlyphset","isLines","isPointset","addOrganPart","systemName","partName","useDefautColour","isTimeVarying","setGeometryColour","annotation","region","getFullPath","species","system","part","groupName","_addOrganPartCallback","downloadCompletedCallback","settingsChanged","updateFieldvisibility","dataFields","geometryName","PartName","partDetails","getOrganDetails","SystemName","loadMetadataURL","getOrgansDirectoryPrefix","meta","getAvailableSpecies","availableSpecies","keysArray","keys","organsFileMap","index","setSceneData","speciesName","organsDetails","splice","loadOrgansFromURL","url","organScene","getSceneByName","clearAll","createScene","loadViewURL","setCurrentScene","graphicsHighlight","reset","zincCameraControl","enableRaycaster","setMouseButtonAction","alignCameraWithSelectedObject","transitionTime","objects","getSelected","alignObjectToCameraView","exportSettings","settings","instanceName","dialog","importSettings","setName","loadOrgans","initialise","initialiseRenderer","addPreRenderCallbackFunction","addPostRenderCallbackFunction","_arrayLikeToArray","len","arr2","GraphicsHighlight","currentHighlightedObjects","currentSelectedObjects","highlightColour","selectColour","originalColour","isDifferent","array1","array2","matched","j","getUnmatchingObjects","objectsArray1","objectsArray2","unmatchingObjects","setHighlighted","previousHighlightedObjects","resetHighlighted","array","fullList","getFullListOfObjects","material","emissive","setRGB","setSelected","previousHSelectedObjects","resetSelected","depthFunc","LessEqualDepth","_unsupportedIterableToArray","minLen","toString","slice","constructor","test","MODULE_CHANGE","ALL","DESTROYED","NAME_CHANGED","SETTINGS_CHANGED","BaseModule","onChangedCallbacks","eventNotifiers","callbackArray","publishChanges","eventType","publish","getName","destroy","addChangedCallback","includes","removeChangedCallback","indexOf","addNotifier","eventNotifier","_typeof","createRenderer","WEBGL","localContainer","document","createElement","localRenderer","isWebGLAvailable","Zinc","Renderer","window","defaultMaterialColor","initialiseVisualisation","playAnimation","warning","getWebGLErrorMessage","appendChild","rendererContainer","isZincObject","glyphset","propagateChanges","changed","EVENT_TYPE","MOVE","HIGHLIGHTED","setHighlightedByZincObject","setupLiveCoordinates","zincObjects","boundingBox","getBoundingBoxOfZincObjects","newSelectedCenter","getCenter","objectsToZincObjects","SELECTED","addGlyphToArray","glyph","getMesh","findObjectsByGroupName","forEachGlyph","setHighlightedByGroupName","setSelectedByGroupName","viewAll","setPlayRate","getPlayRate","displayAreaIn","returnedValue","animate","dispose","isAnnotation","SelectionEvent","eventTypeIn","identifiersIn","identifiers","Subscription","subscriberIn","callbackIn","targetedID","subscriber","targetEventType","getEventType","notify","source","ids","event","EventNotifier","subscriptions","subscribe","callbackFunction","subscription","unsubscribe","canvas","WebGLRenderingContext","getContext","e","isWebGL2Available","WebGL2RenderingContext","getErrorMessage","getWebGL2ErrorMessage","version","names","1","2","contexts","message","element","fontFamily","fontSize","fontWeight","textAlign","background","color","padding","margin","replace","innerHTML","_readOnlyError","Error","currentScript","getCurrentScript","src","match","render","_vm","_h","$createElement","_c","_self","directives","rawName","expression","ref","staticClass","attrs","tData","label","visible","staticStyle","on","$event","keyCode","backgroundChangeCallback","displayUI","isTransitioning","warningMessage","model","hoverVisabilities","$$v","$set","_e","arg","showToolitip","hideToolitip","_v","helpMode","$module","showColourPicker","objectSelected","objectHovered","drawerToggled","class","minimisedSlider","sliderPosition","nativeOn","play","timeMax","formatTooltip","timeStamps","timeChange","_s","orginalDuration","animateDuration","currentSpeed","speedChanged","_l","item","zoomIn","slot","zoomOut","fitWindow","currentBackground","open","drawerOpen","close","staticRenderFns","toggleDrawer","displayString","watch","_zincobject","setAlpha","opacity","mounted","methods","Math","floor","val","setObject","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","component","display","props","String","default","Boolean","Number","computed","position","handler","immediate","treeData","checkChanged","scopedSlots","_u","fn","node","activeItem","active","regionPath","hoverItem","hover","changeActiveByNode","changeHoverByNode","getColour","myPopperClass","setColour","labelA","labelB","list","children","created","forEach","organsAdded","__nodeNumbers","destroyed","sortedPrimitiveGroups","addTreeItem","parentContainer","primitives","sort","nameSorting","a","b","$nextTick","findOrCreateRegion","getRootRegion","paths","childRegion","_paths","shift","path","regionData","child","checked","primitive","changeActiveByPrimitive","getVisibility","console","log","$emit","propagate","removeActive","removeHover","changeHoverByPrimitive","changeActiveByName","targetObject","changeHoverByName","clear","$refs","regionTree","updateKeyChildren","getFirstZincObjectWithGroupName","nodeData","graphic","hex","setColourHex","hexString","visibilityToggle","activeRegion","hoverRegion","setTreeVisibility","checkAllKeys","extractAllIds","keysList","setCheckedKeys","getState","checkedItems","setState","state","checkAll","map","components","MapSvgIcon","MapSvgSpriteColor","OpacityControls","ScaffoldTooltip","TreeControls","displayAtStartUp","displayWarning","displayMarkers","displayMinimap","minimapSettings","x_offset","y_offset","align","isPlaying","tooltipAppendToBody","inHelp","loading","availableBackground","playSpeed","defaultCheckedKeys","setFocusedRegion","deep","updateViewURL","setHelpMode","setDuration","toggleRendering","isReady","selectedObject","hoveredObject","_currentURL","eventNotifierCallback","ro","ResizeObserver","adjustLayout","observe","defaultRate","beforeDestroy","disconnect","captureScreenshotCallback","removePostRenderCallbackFunction","body","append","hrefElement","captureFilename","download","href","screenshot","click","remove","captureScreenshot","filename","captureID","min","sec","toFixed","changeZoomByScrollRateUnit","speed","stopFreeSpin","cameracontrol","stopAutoTumble","viewRegion","viewAllWithBoundingBox","getRendererInfo","info","freeSpin","enableAutoTumble","autoTumble","PI","setTimeout","treeControl","getCoordinatesOfSelected","getObjectsScreenXY","getDynamicSelectedCoordinates","normalizedTime","opacityControl","changeHighlightedByName","tooltipWait","tooltipNumber","clearTimeout","updateMinimapScissor","minimapScissor","updateRequired","updateSettingsfromScene","getMetadataTag","setURLFinishCallback","viewport","visibility","zincCameraControls","getCurrentViewport","setURLAndState","exportGLTF","binary","newValue","setURL","stopAnimate","forceResize","onWindowResize","syncControlCallback","payload"],"mappings":"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","file":"scaffoldvuer.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"scaffoldvuer\"] = factory();\n\telse\n\t\troot[\"scaffoldvuer\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/checkbox-group\");","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","module.exports = require(\"element-ui/lib/theme-chalk/checkbox-group.css\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","module.exports = require(\"element-ui/lib/tree\");","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","module.exports = require(\"core-js/modules/es.array.for-each\");","module.exports = require(\"element-ui/lib/container\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"element-ui/lib/main\");","module.exports = require(\"core-js/modules/es.object.keys\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=style&index=0&id=4c00a30f&scoped=true&lang=scss&\"","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","module.exports = require(\"element-ui/lib/header\");","module.exports = require(\"element-ui/lib/theme-chalk/tabs.css\");","module.exports = require(\"core-js/modules/es.number.to-fixed\");","module.exports = require(\"element-ui/lib/tab-pane\");","module.exports = require(\"element-ui/lib/theme-chalk/color-picker.css\");","module.exports = require(\"element-ui/lib/drawer\");","module.exports = require(\"@abi-software/svg-sprite\");","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TreeControls.vue?vue&type=style&index=0&id=4d20ec9a&scoped=true&lang=scss&\"","module.exports = require(\"element-ui/lib/color-picker\");","module.exports = require(\"element-ui/lib/theme-chalk/tree.css\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"lodash/uniq\");","module.exports = require(\"element-ui/lib/theme-chalk/header.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","const THREE = require('zincjs').THREE;\n// Current model's associate data, data fields, external link, nerve map\n// informations,\n// these are proived in the organsFileMap array.\nconst OrgansSceneData = function() {\n this.currentName = \"\";\n this.currentSystem = \"\";\n this.currentPart = \"\";\n this.currentSpecies = \"\";\n this.metaURL = \"\";\n this.viewURL = \"\";\n this.geometries = [];\n this.lines = [];\n this.glyphsets = [];\n this.pointsets = [];\n this.currentTime = 0.0;\n this.timeVarying = false;\n}\n\n/**\n * Viewer of 3D-organs models. Users can toggle on/off different views. Data is\n * displayed instead if models are not available.\n * \n * @class\n * @param {PJP.ModelsLoader}\n * ModelsLoaderIn - defined in modelsLoade.js, providing locations of\n * files.\n * @param {String}\n * PanelName - Id of the target element to create the\n * {@link PJP.OrgansViewer} on.\n * @author Alan Wu\n * @returns {PJP.OrgansViewer}\n */\n const OrgansViewer = function(ModelsLoaderIn) {\n (require('./RendererModule').RendererModule).call(this);\n const _this = this;\n\tlet pickerScene = undefined;\n\tthis.sceneData = new OrgansSceneData();\n\tconst timeChangedCallbacks = new Array();\n\tconst sceneChangedCallbacks = new Array();\n const organPartAddedCallbacks = new Array();\n let finishDownloadCallback = undefined;\n\tconst modelsLoader = ModelsLoaderIn;\n this.NDCCameraControl = undefined;\n\t_this.typeName = \"Organ Viewer\";\n\t\n\tthis.getSceneData = function() {\n\t return _this.sceneData;\n\t}\n\n\t/**\n\t * Used to update internal timer in scene when time slider has changed.\n\t */\n\tthis.updateTime = function(value) {\n let duration = 6000;\n if (_this.scene)\n duration = _this.scene.getDuration();\n const actualTime = value / 100.0 * duration;\n\t\tif (!_this.sceneData.nerveMapIsActive) {\n\t\t\tif (pickerScene)\n\t\t\t\tpickerScene.setMorphsTime(actualTime);\n\t\t\tif (_this.scene)\n\t\t\t\t_this.scene.setMorphsTime(actualTime);\n\t\t}\n\t\t_this.sceneData.currentTime = value;\n\t}\n\t\n\t/**\n\t * Update the time slider and other renderers/scenes when time has changed.\n\t */\n const preRenderTimeUpdate = function() {\n let duration = 3000;\n if (_this.scene)\n duration = _this.scene.getDuration();\n const currentTime = _this.zincRenderer.getCurrentTime();\n\t\tfor (let i = 0; i < timeChangedCallbacks.length;i++) {\n\t\t\ttimeChangedCallbacks[i](currentTime);\n\t\t}\n\t\tif (!_this.sceneData.nerveMapIsActive && pickerScene)\n\t\t\tpickerScene.setMorphsTime(currentTime);\n\t\tif (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)\n _this.sceneData.nerveMap.additionalReader.setTime(currentTime / \n duration);\n\t\t_this.sceneData.currentTime = currentTime / duration * 100.0;\n }\n\n this.toggleSyncControl = (flag) => {\n let cameraControl = this.scene.getZincCameraControls();\n if (flag) {\n cameraControl.resetView();\n this.NDCCameraControl = cameraControl.enableSyncControl();\n } else {\n cameraControl.disableSyncControl();\n this.NDCCameraControl = undefined;\n }\n }\n\n this.isSyncControl = () => {\n return this.NDCCameraControl !== undefined;\n }\n\n this.setSyncControlZoomToBox = (box) => {\n if (this.NDCCameraControl) {\n this.NDCCameraControl.zoomToBox(box, 2);\n }\n }\n\n this.setSyncControlCallback = (callback) => {\n if (this.NDCCameraControl) {\n this.NDCCameraControl.setEventCallback(callback);\n }\n }\n\n this.setSyncControlCenterZoom = (center, zoom) => {\n if (this.NDCCameraControl) {\n this.NDCCameraControl.setCenterZoom(center, zoom);\n }\n }\n \n const postRenderSelectedCoordinatesUpdate = function() {\n if (_this.selectedCenter) {\n const vector = new THREE.Vector3();\n vector.copy(_this.selectedCenter);\n const coord = _this.scene.vectorToScreenXY(vector);\n _this.selectedScreenCoordinates.x = coord.x;\n _this.selectedScreenCoordinates.y = coord.y;\n }\n }\n\t\n\tconst preRenderUpdateCallback = function() {\n\t\treturn function() {\n preRenderTimeUpdate();\n\t\t}\n }\n \n const postRenderUpdateCallback = function() {\n\t\treturn function() {\n postRenderSelectedCoordinatesUpdate();\n\t\t}\n\t}\n\t\n\t /**\n\t\t * Add a callback which will be called when time has changed\n\t\t */\n\tthis.addTimeChangedCallback = function(callback) {\n\t if (typeof(callback === \"function\"))\n\t timeChangedCallbacks.push(callback);\n\t}\n\t\n\tthis.setTexturePos = function(value) {\n\t\tif (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)\n\t\t\t_this.sceneData.nerveMap.additionalReader.setSliderPos(value);\n\t}\n\n\tthis.addSceneChangedCallback = function(callback) {\n\t if (typeof(callback === \"function\")) {\n\t sceneChangedCallbacks.push(callback);\n\t }\n\t}\n\t\n\tthis.addOrganPartAddedCallback = function(callback) {\n if (typeof(callback === \"function\"))\n organPartAddedCallbacks.push(callback);\n }\n\n this.setFinishDownloadCallback = function(callback) {\n if (typeof(callback === \"function\"))\n finishDownloadCallback = callback;\n }\n\n this.unsetFinishDownloadCallback = function() {\n finishDownloadCallback = undefined;\n }\n\n this.getNamedObjectsToScreenCoordinates = function(name, camera) {\n const vector = new THREE.Vector3();\n vector.setFromMatrixPosition( obj.matrixWorld );\n const widthHalf = (width/2);\n const heightHalf = (height/2);\n vector.project(camera);\n vector.x = ( vector.x * widthHalf ) + widthHalf;\n vector.y = - ( vector.y * heightHalf ) + heightHalf;\n return vector;\n }\n\n const getIdObjectFromIntersect = function(intersected) {\n let id = undefined;\n let intersectedObject = undefined;\n if (intersected !== undefined) {\n if (intersected.object.userData && \n intersected.object.userData.isMarker) {\n intersectedObject = intersected.object.userData.parent.morph;\n } else {\n intersectedObject = intersected.object;\n }\n if (intersectedObject) {\n if (intersectedObject.name) {\n id = intersectedObject.name;\n } else {\n const annotations = _this.getAnnotationsFromObjects(\n [intersectedObject]);\n if (annotations && annotations[0]) {\n id = annotations[0].data.group;\n }\n }\n }\n }\n return {\"id\":id, \"object\":intersectedObject};\n }\n\t \n\t/**\n\t * Callback function when a pickable object has been picked. It will then\n\t * call functions in tissueViewer and cellPanel to show corresponding\n\t * informations.\n\t * \n\t * @callback\n\t */\n const _pickingCallback = function() {\n\t\treturn function(intersects, window_x, window_y) {\n const intersected = _this.getIntersectedObject(intersects);\n const idObject = getIdObjectFromIntersect(intersected);\n const coords = { x: window_x, y: window_y };\n if (idObject.id) {\n if (idObject.object.userData.isGlyph) { \n if (idObject.object.name)\n _this.setSelectedByObjects([idObject.object], coords, true);\n else\n _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(),\n coords, true);\n } else {\n _this.setSelectedByObjects([idObject.object], coords, true);\n }\n return;\n } else {\n\t\t\t\t_this.setSelectedByObjects([], coords, true);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t/**\n\t * Callback function when a pickable object has been hovered over.\n\t * \n\t * @callback\n\t */\n const _hoverCallback = function() {\n\t\treturn function(intersects, window_x, window_y) {\n const intersected = _this.getIntersectedObject(intersects);\n const idObject = getIdObjectFromIntersect(intersected);\n const coords = { x: window_x, y: window_y };\n if (idObject.id) {\n _this.displayArea.style.cursor = \"pointer\";\n _this.setHighlightedByObjects([idObject.object], coords, true);\n return;\n }\n else {\n\t\t\t\t_this.displayArea.style.cursor = \"auto\";\n\t\t\t\t_this.setHighlightedByObjects([], coords, true);\n }\n\t\t}\n\t};\n\n\tconst changeOrganPartsVisibilityForScene = function(scene, name, value, type) {\n\t\tif (type == \"all\" || type == \"geometries\") {\n\t\t\tconst geometries = scene.findGeometriesWithGroupName(name);\n\t\t\tfor (let i = 0; i < geometries.length; i ++ ) {\n\t\t\t\tgeometries[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"glyphsets\") {\n\t\t\tconst glyphsets = scene.findGlyphsetsWithGroupName(name);\n\t\t\tfor (let i = 0; i < glyphsets.length; i ++ ) {\n\t\t\t\tglyphsets[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"pointsets\") {\n\t\t\tconst pointsets = scene.findPointsetsWithGroupName(name);\n\t\t\tfor (let i = 0; i < pointsets.length; i ++ ) {\n\t\t\t\tpointsets[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"lines\") {\n\t\t\tconst lines = scene.findLinesWithGroupName(name);\n\t\t\tfor (let i = 0; i < lines.length; i ++ ) {\n\t\t\t\tlines[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeGeometriesVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeGlyphsetsVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeLinesVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changePointsetsVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');\n }\n \t\t\t\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeOrganPartsVisibility = function(name, value, typeIn) {\n\t\tlet type = \"all\";\n\t\tif (typeIn !== undefined)\n\t\t\ttype = typeIn;\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, type);\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, type);\n\t}\n\t\n\tthis.changeOrganPartsVisibilityCallback = function(name) {\n\t\treturn function(value) {\n\t\t\t_this.changeOrganPartsVisibility(name, value);\n\t\t}\n\t}\n\t\t\t\n\tthis.changeBackgroundColour = function(backgroundColourString) {\n\t\tconst colour = new THREE.Color(backgroundColourString);\n\t\tif (_this.zincRenderer) {\n\t\t\tconst internalRenderer = _this.zincRenderer.getThreeJSRenderer();\n\t\t\tinternalRenderer.setClearColor( colour, 1 );\n\t\t}\n\t}\n\n\tconst addOrganPartToSceneData = function(zincObject) {\n if (zincObject.isGeometry) {\n _this.sceneData.geometries.push(zincObject);\n } else if (zincObject.isGlyphset) {\n _this.sceneData.glyphsets.push(zincObject);\n } else if (zincObject.isLines) {\n _this.sceneData.lines.push(zincObject);\n } else if (zincObject.isPointset) {\n _this.sceneData.pointsets.push(zincObject);\n }\n\t}\n\n\tconst addOrganPart = function(systemName, partName, useDefautColour, zincObject) {\n for (let i = 0; i < organPartAddedCallbacks.length;i++) {\n organPartAddedCallbacks[i](zincObject, _this.scene.isTimeVarying());\n }\n if (useDefautColour)\n modelsLoader.setGeometryColour(zincObject, systemName, partName);\n addOrganPartToSceneData(zincObject);\n\t\tconst annotation = new (require('./annotation').annotation)();\n const region = zincObject.region.getFullPath();\n\t\tannotation.data = {species:_this.sceneData.currentSpecies, system:systemName,\n part:partName, group:zincObject.groupName, region: region};\n\t\tzincObject.userData[\"annotation\"] = annotation;\n\t}\n\n\t /**\n\t\t * New organs geometry has been added to the scene, add UIs and make\n\t\t * sure the viewport is correct.\n\t\t */\n\t const _addOrganPartCallback = function(systemName, partName, useDefautColour) {\n\t return function(zincObject) {\n\t \taddOrganPart(systemName, partName, useDefautColour, zincObject);\n\t }\n\t }\n\t \n\t const downloadCompletedCallback = function() {\n\t\t return function() {\n\t\t\t _this.settingsChanged();\n\t\t\t _this.sceneData.timeVarying = _this.scene.isTimeVarying();\n if (finishDownloadCallback)\n finishDownloadCallback();\n\t\t }\n\t }\n\t \n\t const singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {\n return function(geometry) {\n addOrganPart(systemName, partName, useDefautColour, geometry);\n _this.settingsChanged();\n }\n\t }\n\t \n\t /**\n\t\t * Toggle data field displays. Data fields displays flow/pressure and <button @click=\"play\">Play</button>\n\t\t * other activities of the organs.\n\t\t */\n\t this.updateFieldvisibility = function(dataFields, value) {\n for ( let i = 0; i < dataFields.length; i ++ ) {\n if (value != i) {\n const geometryName = dataFields[i].PartName;\n _this.changeOrganPartsVisibility(geometryName, false);\n }\n }\n if (value > -1) {\n const partName = dataFields[value].PartName;\n if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||\n (_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {\n _this.changeOrganPartsVisibility(partName, true);\n } else {\n const partDetails = getOrganDetails(dataFields[value].SystemName, partName);\n if (partDetails != undefined) {\n _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + \"/\" + partDetails.meta);\n }\n }\n\t }\n\t }\n\t \n\t /**\n\t\t * Return an array containing name(s) of species that also contains the\n\t\t * currently displayed organs.\n\t\t * \n\t\t * @returns {Array} containing species name\n\t\t */\n\t this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {\n\t const availableSpecies = new Array();\n\t availableSpecies.push(\"none\");\n\t const keysArray = Object.keys(organsFileMap);\n\t for (index in keysArray) {\n\t const species = keysArray[index];\n\t if (species != currentSpecies) {\n\t if (organsFileMap[species].hasOwnProperty(currentSystem) &&\n\t organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {\n\t availableSpecies.push(species);\n\t }\n\t }\n\t }\n\t return availableSpecies;\n\t }\n\t \n\t const setSceneData = function(speciesName, systemName, partName, organsDetails) {\n _this.sceneData.nerveMapIsActive = false;\n _this.sceneData.nerveMap = undefined;\n _this.sceneData.metaURL = \"\";\n _this.sceneData.viewURL = \"\";\n _this.sceneData.currentSpecies = speciesName;\n _this.sceneData.currentSystem = systemName;\n\t\t\t_this.sceneData.currentPart = partName;\n\t\t\t_this.sceneData.currentTime = 0.0;\n\t\t\t_this.sceneData.geometries.splice(0);\n\t\t\t_this.sceneData.lines.splice(0);\n\t\t\t_this.sceneData.glyphsets.splice(0);\n\t\t\t_this.sceneData.pointsets.splice(0);\n\t\t\t_this.sceneData.timeVarying = false;\n // This is used as title\n let name = \"\";\n if (speciesName)\n name = speciesName + \"/\";\n if (systemName)\n name = systemName + \"/\";\n if (partName)\n name = partName;\n _this.sceneData.currentName = name;\n\t }\n\n\t this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {\n\t\t if (_this.zincRenderer) {\n\t\t\t if (partName && (_this.sceneData.metaURL !== url)) {\n\t\t\t setSceneData(speciesName, systemName, partName, undefined);\n\t\t\t const name = _this.sceneData.currentName;\n\t\t\t let organScene = _this.zincRenderer.getSceneByName(name);\n\t\t\t if (organScene) {\n\t\t\t \t organScene.clearAll();\n\t\t\t } else {\n\t\t\t \t organScene = _this.zincRenderer.createScene(name);\n\t\t\t }\n\t\t\t for (let i = 0; i < sceneChangedCallbacks.length;i++) {\n\t\t\t \t sceneChangedCallbacks[i](_this.sceneData);\n\t\t\t }\n\t\t\t if (viewURL && viewURL != \"\") {\n\t\t\t \t _this.sceneData.viewURL = viewURL;\n\t\t\t\t organScene.loadViewURL(_this.sceneData.viewURL);\n\t\t\t } else {\n\t\t\t \t _this.sceneData.viewURL = undefined;\n }\n\t\t\t _this.sceneData.metaURL = url;\n\t\t\t organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),\n\t\t\t \t downloadCompletedCallback());\t \n\t\t\t _this.scene = organScene;\n\t\t\t _this.zincRenderer.setCurrentScene(organScene);\n\t\t\t _this.graphicsHighlight.reset();\n\t\t\t const zincCameraControl = organScene.getZincCameraControls();\n\t\t\t zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());\n\t\t\t zincCameraControl.setMouseButtonAction(\"AUXILIARY\", \"ZOOM\");\n\t\t\t zincCameraControl.setMouseButtonAction(\"SECONDARY\", \"PAN\");\n\t\t\t }\n\t\t }\n\t }\n\t \t \n\t this.alignCameraWithSelectedObject = function(transitionTime) {\n\t const objects = _this.graphicsHighlight.getSelected();\n\t if (objects && objects[0] && objects[0].userData) {\n\t _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);\n\t }\n\t }\n\t \n\t this.exportSettings = function() {\n\t\t const settings = {};\n\t\t settings.name = _this.instanceName;\n\t\t if (_this.sceneData.currentSystem)\n\t\t\t settings.system = _this.sceneData.currentSystem;\n\t\t if (_this.sceneData.currentSpecies)\n\t\t\t settings.species = _this.sceneData.currentSpecies;\n\t\t if (_this.sceneData.currentPart)\n\t\t\t settings.part = _this.sceneData.currentPart;\n\t\t settings.metaURL = _this.sceneData.metaURL;\n\t\t if (_this.sceneData.viewURL)\n\t\t\t settings.viewURL = _this.sceneData.viewURL;\n\t\t settings.dialog = \"Organ Viewer\";\n\t\t return settings;\n\t }\n\t \n\t this.importSettings = function(settings) {\n\t\t if (settings && (settings.dialog == this.typeName)) {\n\t\t\t _this.setName(settings.name);\n\t\t\t if (settings.metaURL !== undefined && settings.metaURL != \"\") {\n\t\t\t\t _this.loadOrgansFromURL(settings.metaURL, settings.species,\n\t\t\t\t\tsettings.system, settings.part, settings.viewURL);\n\t\t\t } else {\n\t\t\t\t _this.loadOrgans(settings.species, settings.system, settings.part);\n\t\t\t }\n\t\t\t return true;\n\t\t }\n\t\t return false;\n\t }\n\t\t\n\t/**\n\t * initialise loading of the html layout for the organs panel, this is\n\t * called when the {@link PJP.OrgansViewer} is created.\n\t * \n\t * @async\n\t */\n\t const initialise = function() {\n\t _this.initialiseRenderer(undefined);\n\t if (_this.zincRenderer) {\n _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());\n _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());\n }\n }\n\t \n\tinitialise();\n\n}\n\nOrgansViewer.prototype = Object.create((require('./RendererModule').RendererModule).prototype);\nexports.OrgansViewer = OrgansViewer;\n","module.exports = require(\"element-ui/lib/theme-chalk/checkbox.css\");","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var THREE = require('zincjs').THREE;\n\n/**\n * This module manages highlighted and selected objects in 3D modules. \n * \n * @class\n * @returns {exports.GraphicsHighlight}\n */\nexports.GraphicsHighlight = function() {\n let currentHighlightedObjects = [];\n let currentSelectedObjects = [];\n this.highlightColour = [1, 0, 0];\n this.selectColour = [0, 1, 0];\n this.originalColour = [0, 0, 0];\n const _this = this;\n\n const isDifferent = function(array1, array2) {\n if ((array1.length == 0) && (array2.length == 0))\n return false; \n for (let i = 0; i < array1.length; i++) {\n let matched = false;\n for (let j = 0; j < array2.length; j++) {\n if (array1[i] === array2[j]) {\n matched = true;\n }\n }\n if (!matched)\n return true;\n }\n for (let i = 0; i < array2.length; i++) {\n let matched = false;\n for (let j = 0; j < array1.length; j++) {\n if (array2[i] === array1[j]) {\n matched = true;\n }\n }\n if (!matched)\n return true;\n }\n return false;\n }\n \n const getUnmatchingObjects = function(objectsArray1, objectsArray2) {\n const unmatchingObjects = [];\n if (objectsArray2.length == 0)\n return objectsArray1;\n for (let i = 0; i < objectsArray1.length; i++) {\n let matched = false;\n for (let j = 0; j < objectsArray2.length; j++) {\n if (objectsArray1[i] === objectsArray2[j]) {\n matched = true;\n }\n }\n if (!matched)\n unmatchingObjects.push(objectsArray1[i]);\n }\n return unmatchingObjects;\n }\n \n this.setHighlighted = function(objects) {\n const previousHighlightedObjects = currentHighlightedObjects;\n _this.resetHighlighted();\n // Selected object cannot be highlighted\n const array = getUnmatchingObjects(objects, currentSelectedObjects);\n const fullList = getFullListOfObjects(array);\n for (let i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.highlightColour);\n }\n currentHighlightedObjects = array;\n return isDifferent(currentHighlightedObjects, previousHighlightedObjects);\n }\n\n this.setSelected = function(objects) {\n // first find highlighted object that are not selected\n const previousHSelectedObjects = currentSelectedObjects;\n const array = getUnmatchingObjects(currentHighlightedObjects, objects);\n currentHighlightedObjects = array;\n _this.resetSelected();\n const fullList = getFullListOfObjects(objects);\n for (let i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.selectColour);\n }\n currentSelectedObjects = objects;\n return isDifferent(currentSelectedObjects, previousHSelectedObjects);\n }\n\n const getFullListOfObjects = function(objects) {\n let fullList = [];\n for (let i = 0; i < objects.length; i++) {\n if (objects[i].material)\n fullList.push(objects[i]);\n }\n return fullList;\n }\n \n this.resetHighlighted = function() {\n const fullList = getFullListOfObjects(currentHighlightedObjects);\n for (let i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material) {\n if (fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.originalColour);\n if (fullList[i].material.depthFunc)\n fullList[i].material.depthFunc = THREE.LessEqualDepth;\n }\n }\n currentHighlightedObjects = [];\n }\n \n this.resetSelected = function() {\n const fullList = getFullListOfObjects(currentSelectedObjects);\n for (let i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material) {\n \t\tif (fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.originalColour);\n \t\tif (fullList[i].material.depthFunc)\n fullList[i].material.depthFunc = THREE.LessEqualDepth;\n \t}\n }\n currentSelectedObjects = [];\n }\n \n this.getSelected = function() {\n return currentSelectedObjects;\n }\n \n this.reset = function() {\n _this.resetSelected();\n _this.resetHighlighted();\n }\n}\n","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&\"","module.exports = require(\"core-js/modules/es.array.slice\");","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","module.exports = require(\"lodash/orderBy\");","const MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };\n\nconst BaseModule = function() {\n this.typeName = \"Base Module\";\n this.instanceName = \"default\";\n this.onChangedCallbacks = [];\n /** Notifier handle for informing other modules of any changes **/\n this.eventNotifiers = [];\n}\n\nBaseModule.prototype.setName = function(name) {\n if (name && this.instanceName !== name) {\n this.instanceName = name;\n const callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );\n }\n }\n}\n\nBaseModule.prototype.settingsChanged = function() {\n\tconst callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );\n }\n}\n\nBaseModule.prototype.exportSettings = function() {\n const settings = {};\n settings.dialog = this.typeName;\n settings.name = this.instanceName;\n return settings;\n}\n\nBaseModule.prototype.importSettings = function(settings) {\n\tif (settings.dialog == this.typeName) {\n\t\tthis.setName(settings.name);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nBaseModule.prototype.publishChanges = function(annotations, eventType) {\n for (let i = 0; i < this.eventNotifiers.length; i++) {\n this.eventNotifiers[i].publish(this, eventType, annotations);\n }\n}\n\nBaseModule.prototype.getName = function() {\n return this.instanceName;\n}\n\nBaseModule.prototype.destroy = function() {\n //Make a temorary copy as the array may be altered during the loop\n const callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.DESTROYED );\n }\n\n delete this;\n} \n\nBaseModule.prototype.addChangedCallback = function(callback) {\n if (this.onChangedCallbacks.includes(callback) == false)\n this.onChangedCallbacks.push(callback);\n}\n\nBaseModule.prototype.removeChangedCallback = function(callback) {\n const index = this.onChangedCallbacks.indexOf(callback);\n if (index > -1) {\n this.onChangedCallbacks.splice(index, 1);\n }\n} \n\nBaseModule.prototype.addNotifier = function(eventNotifier) {\n this.eventNotifiers.push(eventNotifier);\n}\n\nexports.BaseModule = BaseModule;\nexports.MODULE_CHANGE = MODULE_CHANGE;\n","module.exports = require(\"core-js/modules/es.array.index-of\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","module.exports = require(\"element-ui/lib/row\");","module.exports = require(\"core-js/modules/es.number.constructor\");","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","module.exports = require(\"element-ui/lib/theme-chalk/col.css\");","module.exports = require(\"element-ui/lib/theme-chalk/main.css\");","module.exports = require(\"core-js/modules/es.array.splice\");","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","const THREE = require('zincjs').THREE;\n\n/**\n * Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.\n * @param {String} elementID - id of the target dom element.\n * @returns {Zinc.Renderer}\n */\nconst createRenderer = function () {\n const WEBGL = require('./WebGL').WEBGL;\n const localContainer = document.createElement( 'div' );\n let localRenderer = undefined;;\n localContainer.style.height = \"100%\";\n if (WEBGL.isWebGLAvailable()) {\n const Zinc = require('zincjs');\n localRenderer = new Zinc.Renderer(localContainer, window);\n Zinc.defaultMaterialColor = 0xFFFF9C;\n localRenderer.initialiseVisualisation();\n localRenderer.playAnimation = false;\n } else {\n const warning = WEBGL.getWebGLErrorMessage();\n localContainer.appendChild(warning);\n }\n return {\"renderer\":localRenderer, \"container\":localContainer};\n}\n\nconst RendererModule = function() {\n (require('./BaseModule').BaseModule).call(this);\n this.scene = undefined;\n this.rendererContainer = undefined;\n this.displayArea = undefined;\n this.graphicsHighlight = new (require(\"./graphicsHighlight\").GraphicsHighlight)();\n this.zincRenderer = null;\n this.selectedScreenCoordinates = new THREE.Vector3();\n this.selectedCenter = undefined;\n}\n\nRendererModule.prototype = Object.create((require('./BaseModule').BaseModule).prototype);\n\n/**\n * This function will get the the first intersected object with name or\n * the first glyph object with name.\n */\nRendererModule.prototype.getIntersectedObject = function(intersects) {\n\tif (intersects) {\n\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\tif (intersects[i] !== undefined) {\n\t\t\t\tif (intersects[i].object &&\n intersects[i].object.userData && \n intersects[i].object.userData.isZincObject && \n (intersects[i].object.name || \n intersects[i].object.userData.isMarker))\n\t\t\t\t\treturn intersects[i];\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nRendererModule.prototype.getAnnotationsFromObjects = function(objects) {\n const annotations = [];\n for (var i = 0; i < objects.length; i++) {\n const zincObject = objects[i].userData;\n let annotation = undefined;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n const glyphset = zincObject;\n if (zincObject.isGlyph)\n glyphset = zincObject.getGlyphset();\n annotation = glyphset.userData ? glyphset.userData.annotation : undefined;\n if (annotation && annotation.data) {\n if (objects[i].name && objects[i].name != \"\")\n annotation.data.id = objects[i].name;\n else\n annotation.data.id = glyphset.groupName;\n }\n } else {\n annotation = zincObject.userData ? zincObject.userData.annotation : undefined;\n if (annotation && annotation.data){\n annotation.data.id = objects[i].name;\n }\n }\n }\n if (annotation)\n annotations.push(annotation);\n }\n\treturn annotations;\n}\n\nRendererModule.prototype.setHighlightedByObjects = function(\n objects, coords, propagateChanges) {\n const changed = this.graphicsHighlight.setHighlighted(objects);\n if (propagateChanges) {\n eventType = require(\"./eventNotifier\").EVENT_TYPE.MOVE;\n if (changed)\n eventType = require(\"./eventNotifier\").EVENT_TYPE.HIGHLIGHTED;\n const annotations = this.getAnnotationsFromObjects(objects);\n if (annotations.length > 0)\n annotations[0].coords = coords;\n this.publishChanges(annotations, eventType);\n }\n return changed;\n}\n\n\nRendererModule.prototype.setHighlightedByZincObject = function(\n zincObject, coords, propagateChanges) {\n return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], coords,propagateChanges);\n}\n\nRendererModule.prototype.setupLiveCoordinates = function(zincObjects) {\n if (zincObjects && (zincObjects.length > 0)) {\n const boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);\n let newSelectedCenter = new THREE.Vector3();\n boundingBox.getCenter(newSelectedCenter);\n if (this.selectedCenter == undefined)\n this.selectedCenter = newSelectedCenter;\n else {\n this.selectedCenter.x = newSelectedCenter.x;\n this.selectedCenter.y = newSelectedCenter.y;\n }\n } else {\n this.selectedCenter = undefined;\n }\n}\n\nRendererModule.prototype.objectsToZincObjects = function(objects) {\n const zincObjects = [];\n for (let i = 0; i < objects.length; i++) {\n let zincObject = objects[i].userData;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n let glyphset = zincObject;\n if (zincObject.isGlyph)\n glyphset = zincObject.getGlyphset();\n zincObjects. push(glyphset);\n } else {\n zincObjects. push(zincObject);\n }\n }\n }\n return zincObjects;\n}\n\n\nRendererModule.prototype.setSelectedByObjects = function(\n objects, coords, propagateChanges) {\n const changed = this.graphicsHighlight.setSelected(objects);\n if (changed) {\n const zincObjects = this.objectsToZincObjects(objects);\n this.setupLiveCoordinates(zincObjects);\n if (propagateChanges) {\n const eventType = require(\"./eventNotifier\").EVENT_TYPE.SELECTED;\n const annotations = this.getAnnotationsFromObjects(objects);\n if (annotations.length > 0)\n annotations[0].coords = coords;\n this.publishChanges(annotations, eventType);\n }\n }\n return changed;\n}\n\nRendererModule.prototype.setSelectedByZincObject = function(\n zincObject, coords, propagateChanges) {\n return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined],\n coords, propagateChanges);\n}\n\nconst addGlyphToArray = function(objects) {\n return function(glyph) {\n objects.push(glyph.getMesh());\n }\n}\n\nRendererModule.prototype.findObjectsByGroupName = function(groupName) {\n const geometries = this.scene.findGeometriesWithGroupName(groupName);\n const objects = [];\n for (let i = 0; i < geometries.length; i ++ ) {\n objects.push(geometries[i].morph);\n }\n const glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);\n for (let i = 0; i < glyphsets.length; i ++ ) {\n glyphsets[i].forEachGlyph(addGlyphToArray(objects));\n }\n \n return objects;\n}\n\nRendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {\n const objects = this.findObjectsByGroupName(groupName);\n return this.setHighlightedByObjects(objects, undefined, propagateChanges);\n}\n\nRendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {\n const objects = this.findObjectsByGroupName(groupName);\n return this.setSelectedByObjects(objects, undefined, propagateChanges);\n}\n\nRendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {\n const colour = new THREE.Color(backgroundColourString);\n if (this.zincRenderer) {\n let internalRenderer = this.zincRenderer.getThreeJSRenderer();\n internalRenderer.setClearColor( colour, 1 );\n }\n}\n\nRendererModule.prototype.resetView = function() {\n if (this.zincRenderer)\n this.zincRenderer.resetView();\n}\n \nRendererModule.prototype.viewAll = function() {\n if (this.zincRenderer)\n this.zincRenderer.viewAll();\n}\n\n/**\n * Start the animation and let the renderer to processs with\n * time progression\n */\nRendererModule.prototype.playAnimation = function(flag) {\n if (this.zincRenderer)\n this.zincRenderer.playAnimation = flag;\n}\n\n/**\n* Set the speed of playback\n*/\nRendererModule.prototype.setPlayRate = function(value) {\n if (this.zincRenderer)\n this.zincRenderer.setPlayRate(value);\n}\n\n/**\n* Get the speed of playback\n*/\nRendererModule.prototype.getPlayRate = function(value) {\n if (this.zincRenderer)\n return this.zincRenderer.getPlayRate();\n else\n return 0.0;\n}\n \n /** Initialise everything in the renderer, including the 3D renderer,\n * and picker for the 3D renderer.\n * \n */\nRendererModule.prototype.initialiseRenderer = function(displayAreaIn) {\n if (this.zincRenderer === undefined || this.rendererContainer === undefined) {\n let returnedValue = createRenderer();\n this.zincRenderer = returnedValue[\"renderer\"];\n this.rendererContainer = returnedValue[\"container\"];\n }\n if (displayAreaIn) {\n this.displayArea = displayAreaIn;\n this.displayArea.appendChild( this.rendererContainer );\n if (this.zincRenderer)\n this.zincRenderer.animate();\n }\n}\n\nRendererModule.prototype.destroy = function() {\n if (this.zincRenderer) {\n this.zincRenderer.dispose();\n this.zincRenderer.getThreeJSRenderer().dispose();\n this.zincRenderer = undefined;\n }\n (require('./BaseModule').BaseModule).prototype.destroy.call( this );\n}\n\nexports.RendererModule = RendererModule;","module.exports = require(\"core-js/modules/es.object.to-string\");","module.exports = require(\"vue\");","module.exports = require(\"element-ui/lib/tabs\");","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/icon.css\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TreeControls.vue?vue&type=style&index=1&lang=css&\"","module.exports = require(\"core-js/modules/es.string.iterator\");","module.exports = require(\"zincjs\");","module.exports = require(\"element-ui/lib/popover\");","module.exports = require(\"element-ui/lib/theme-chalk/slider.css\");","exports.annotation = function() {\n this.type = \"anatomical\";\n this.data = undefined;\n this.isAnnotation = true;\n}\n","module.exports = require(\"element-ui/lib/theme-chalk/tab-pane.css\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","const EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2, MOVE: 3 };\n\nconst SelectionEvent = function(eventTypeIn, identifiersIn) {\n this.eventType = eventTypeIn;\n this.identifiers = identifiersIn;\n}\n\nconst returnFullID = function(sourceId) {\n //return full annotations with all different name\n}\n \nconst Subscription = function(subscriberIn, callbackIn, eventType) {\n this.targetedID = [];\n const subscriber = subscriberIn;\n const callback = callbackIn;\n this.targetEventType = eventType;\n const _this = this;\n\n if (eventType === undefined)\n this.targetEventType = EVENT_TYPE.ALL;\n \n this.getEventType = function() {\n return eventType;\n }\n \n this.notify = function(source, eventType, ids) {\n if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||\n _this.targetEventType === eventType)) {\n //should support different type of id e.g lyph, name, fmas...\n //need a function that finds all relavant ids\n const event = new SelectionEvent(eventType, ids);\n callback(event);\n }\n }\n}\n\nexports.EventNotifier = function() {\n const subscriptions = [];\n \n this.publish = function(source, eventType, id) {\n for (let i = 0; i < subscriptions.length;i++) {\n subscriptions[i].notify(source, eventType, id);\n }\n }\n \n this.subscribe = function(subscriber, callbackFunction, eventType) {\n if (typeof callbackFunction === \"function\") {\n const subscription = new Subscription(subscriber, callbackFunction, eventType);\n subscriptions.push(subscription);\n return subscription;\n }\n return undefined;\n }\n \n this.unsubscribe = function(subscription) {\n for (let i = 0; i < subscriptions.length;i++) {\n if (subscription === subscriptions[i]) {\n subscriptions.splice(i, 1);\n return;\n }\n }\n }\n} \n\nexports.EVENT_TYPE = EVENT_TYPE;\n","module.exports = require(\"@soda/get-current-script\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=style&index=0&id=73bfbf2a&scoped=true&lang=scss&\"","module.exports = require(\"element-ui/lib/col\");","module.exports = require(\"element-ui/lib/theme-chalk/popover.css\");","module.exports = require(\"element-ui/lib/slider\");","module.exports = require(\"core-js/modules/es.array.includes\");","module.exports = require(\"element-ui/lib/loading\");","module.exports = require(\"element-ui/lib/theme-chalk/container.css\");","module.exports = require(\"element-ui/lib/icon\");","module.exports = require(\"element-ui/lib/checkbox\");","module.exports = require(\"core-js/modules/es.function.name\");","module.exports = require(\"core-js/modules/web.dom-collections.for-each\");","module.exports = require(\"core-js/modules/es.string.replace\");","module.exports = require(\"element-ui/lib/option\");","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mr.doob / http://mrdoob.com/\n */\n\nexports.WEBGL = {\n\n\tisWebGLAvailable: function () {\n\n\t\ttry {\n\n\t\t\tvar canvas = document.createElement( 'canvas' );\n\t\t\treturn !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );\n\n\t\t} catch ( e ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t},\n\n\tisWebGL2Available: function () {\n\n\t\ttry {\n\n\t\t\tvar canvas = document.createElement( 'canvas' );\n\t\t\treturn !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );\n\n\t\t} catch ( e ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t},\n\n\tgetWebGLErrorMessage: function () {\n\n\t\treturn this.getErrorMessage( 1 );\n\n\t},\n\n\tgetWebGL2ErrorMessage: function () {\n\n\t\treturn this.getErrorMessage( 2 );\n\n\t},\n\n\tgetErrorMessage: function ( version ) {\n\n\t\tvar names = {\n\t\t\t1: 'WebGL',\n\t\t\t2: 'WebGL 2'\n\t\t};\n\n\t\tvar contexts = {\n\t\t\t1: window.WebGLRenderingContext,\n\t\t\t2: window.WebGL2RenderingContext\n\t\t};\n\n\t\tvar message = 'This module requires <a href=\"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation\" style=\"color:#008\">$1</a> support but your $0 does not seem to support it.';\n\n\t\tvar element = document.createElement( 'div' );\n\t\telement.id = 'webglmessage';\n\t\telement.style.fontFamily = 'monospace';\n\t\telement.style.fontSize = '20px';\n\t\telement.style.fontWeight = 'normal';\n\t\telement.style.textAlign = 'center';\n\t\telement.style.background = '#fff';\n\t\telement.style.color = '#000';\n\t\telement.style.padding = '1.5em';\n\t\telement.style.width = '400px';\n\t\telement.style.margin = '5em auto 0';\n\n\t\tif ( contexts[ version ] ) {\n\n\t\t\tmessage = message.replace( '$0', 'graphics card' );\n\n\t\t} else {\n\n\t\t\tmessage = message.replace( '$0', 'browser' );\n\n\t\t}\n\n\t\tmessage = message.replace( '$1', names[ version ] );\n\n\t\telement.innerHTML = message;\n\n\t\treturn element;\n\n\t}\n\n};\n","function _readOnlyError(name) {\n throw new Error(\"\\\"\" + name + \"\\\" is read-only\");\n}\n\nmodule.exports = _readOnlyError;","module.exports = require(\"core-js/modules/es.array.from\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldTooltip.vue?vue&type=style&index=0&id=7e38bfac&scoped=true&lang=scss&\"","module.exports = require(\"core-js/modules/es.array.map\");","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"scaffoldContainer\",staticClass:\"scaffold-container\",attrs:{\"element-loading-text\":\"Loading...\",\"element-loading-spinner\":\"el-icon-loading\",\"element-loading-background\":\"rgba(0, 0, 0, 0.3)\"}},[_c('map-svg-sprite-color'),_c('scaffold-tooltip',{attrs:{\"label\":_vm.tData.label,\"visible\":_vm.tData.visible,\"x\":_vm.tData.x,\"y\":_vm.tData.y}}),_c('div',{ref:\"display\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"id\":\"organsDisplayArea\",\"tabindex\":\"-1\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==66){ return null; }return _vm.backgroundChangeCallback($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.displayUI && !_vm.isTransitioning),expression:\"displayUI && !isTransitioning\"}]},[(_vm.displayWarning)?_c('el-popover',{ref:\"warningPopover\",attrs:{\"content\":_vm.warningMessage,\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"warning-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[6].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[6], \"value\", $$v)},expression:\"hoverVisabilities[6].value\"}}):_vm._e(),(_vm.displayWarning)?_c('i',{directives:[{name:\"popover\",rawName:\"v-popover:warningPopover\",arg:\"warningPopover\"}],staticClass:\"el-icon-warning warning-icon\",on:{\"mouseover\":function($event){return _vm.showToolitip(6)},\"mouseout\":function($event){return _vm.hideToolitip(6)}}},[_c('span',{staticClass:\"warning-text\"},[_vm._v(\"Beta\")])]):_vm._e(),_c('el-popover',{ref:\"checkBoxPopover\",attrs:{\"content\":\"Change region visibility\",\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[5].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[5], \"value\", $$v)},expression:\"hoverVisabilities[5].value\"}}),_c('tree-controls',{directives:[{name:\"popover\",rawName:\"v-popover:checkBoxPopover\",arg:\"checkBoxPopover\"}],ref:\"treeControl\",attrs:{\"help-mode\":_vm.helpMode,\"module\":_vm.$module,\"show-colour-picker\":_vm.showColourPicker},on:{\"object-selected\":_vm.objectSelected,\"object-hovered\":_vm.objectHovered,\"drawer-toggled\":_vm.drawerToggled}}),_c('div',{staticClass:\"opacity-box\"},[_c('opacity-controls',{ref:\"opacityControl\"})],1),(_vm.sceneData.timeVarying)?_c('el-popover',{ref:\"sliderPopover\",attrs:{\"content\":\"Move the slider to animate the region\",\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper top-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[4].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[4], \"value\", $$v)},expression:\"hoverVisabilities[4].value\"}}):_vm._e(),(_vm.sceneData.timeVarying)?_c('div',{directives:[{name:\"popover\",rawName:\"v-popover:sliderPopover\",arg:\"sliderPopover\"}],staticClass:\"time-slider-container\",class:[ _vm.minimisedSlider ? 'minimised' : '', _vm.sliderPosition]},[_c('el-tabs',{attrs:{\"type\":\"card\"}},[_c('el-tab-pane',{attrs:{\"label\":\"Animate scaffold\"}},[_c('el-row',{staticClass:\"tab-content\"},[(_vm.isPlaying)?_c('map-svg-icon',{staticClass:\"icon-button video-button\",attrs:{\"icon\":\"pause\"},nativeOn:{\"click\":function($event){return _vm.play(false)}}}):_c('map-svg-icon',{staticClass:\"video-button icon-button\",attrs:{\"icon\":\"play\"},nativeOn:{\"click\":function($event){return _vm.play(true)}}}),_c('el-slider',{staticClass:\"slider\",attrs:{\"min\":0,\"max\":_vm.timeMax,\"value\":_vm.sceneData.currentTime / 100 * _vm.timeMax,\"step\":0.1,\"tooltip-class\":\"time-slider-tooltip\",\"format-tooltip\":_vm.formatTooltip,\"marks\":_vm.timeStamps},on:{\"input\":function($event){return _vm.timeChange($event)}}})],1)],1),_c('el-tab-pane',{attrs:{\"label\":\"Animation data\"}},[_c('el-row',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Original duration: \"),_c('div',{staticClass:\"purple\"},[_vm._v(\" \"+_vm._s(_vm.orginalDuration)+\" \")])]),_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Animation duration: \"),_c('div',{staticClass:\"purple\"},[_vm._v(\" \"+_vm._s(_vm.animateDuration)+\" \")])]),_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Playback speed \"),_c('el-select',{staticClass:\"select-box\",attrs:{\"popper-append-to-body\":true,\"value\":_vm.currentSpeed,\"placeholder\":\"Select\",\"popper-class\":\"scaffold_viewer_dropdown\"},on:{\"change\":function($event){return _vm.speedChanged($event)}}},_vm._l((_vm.playSpeed),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)])],1)],1)],1):_vm._e(),_c('div',{staticClass:\"bottom-right-control\"},[_c('el-popover',{attrs:{\"content\":\"Zoom in\",\"placement\":\"left\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper left-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[0].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[0], \"value\", $$v)},expression:\"hoverVisabilities[0].value\"}},[_c('map-svg-icon',{staticClass:\"icon-button zoomIn\",attrs:{\"slot\":\"reference\",\"icon\":\"zoomIn\"},nativeOn:{\"click\":function($event){return _vm.zoomIn()},\"mouseover\":function($event){return _vm.showToolitip(0)},\"mouseout\":function($event){return _vm.hideToolitip(0)}},slot:\"reference\"})],1),_c('el-popover',{attrs:{\"content\":\"Zoom out\",\"placement\":\"top-end\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper popper-zoomout non-selectable\"},model:{value:(_vm.hoverVisabilities[1].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[1], \"value\", $$v)},expression:\"hoverVisabilities[1].value\"}},[_c('map-svg-icon',{staticClass:\"icon-button zoomOut\",attrs:{\"slot\":\"reference\",\"icon\":\"zoomOut\"},nativeOn:{\"click\":function($event){return _vm.zoomOut()},\"mouseover\":function($event){return _vm.showToolitip(1)},\"mouseout\":function($event){return _vm.hideToolitip(1)}},slot:\"reference\"})],1),_c('el-popover',{attrs:{\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[2].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[2], \"value\", $$v)},expression:\"hoverVisabilities[2].value\"}},[_c('div',[_vm._v(\" Fit to \"),_c('br'),_vm._v(\" window \")]),_c('map-svg-icon',{staticClass:\"icon-button fitWindow\",attrs:{\"slot\":\"reference\",\"icon\":\"fitWindow\"},nativeOn:{\"click\":function($event){return _vm.fitWindow()},\"mouseover\":function($event){return _vm.showToolitip(2)},\"mouseout\":function($event){return _vm.hideToolitip(2)}},slot:\"reference\"})],1)],1),_c('el-popover',{ref:\"backgroundPopover\",attrs:{\"placement\":\"top-start\",\"width\":\"128\",\"append-to-body\":false,\"trigger\":\"click\",\"popper-class\":\"background-popper non-selectable\"}},[_c('el-row',{staticClass:\"backgroundText\"},[_vm._v(\" Change background \")]),_c('el-row',{staticClass:\"backgroundChooser\"},_vm._l((_vm.availableBackground),function(item){return _c('div',{key:item,class:['backgroundChoice', item, item == _vm.currentBackground ? 'active' :''],on:{\"click\":function($event){return _vm.backgroundChangeCallback(item)}}})}),0)],1),_c('el-popover',{attrs:{\"content\":\"Change background color\",\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[3].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[3], \"value\", $$v)},expression:\"hoverVisabilities[3].value\"}},[_c('map-svg-icon',{directives:[{name:\"popover\",rawName:\"v-popover:backgroundPopover\",arg:\"backgroundPopover\"}],staticClass:\"icon-button background-colour\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{\"slot\":\"reference\",\"icon\":\"changeBckgd\"},nativeOn:{\"mouseover\":function($event){return _vm.showToolitip(3)},\"mouseout\":function($event){return _vm.hideToolitip(3)}},slot:\"reference\"})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.material!=undefined)?_c('div',{ref:\"control\",staticClass:\"opacity-control\"},[_c('el-drawer',{staticClass:\"drawer-content\",attrs:{\"custom-class\":\"my-drawer\",\"visible\":_vm.drawerOpen,\"append-to-body\":false,\"modal-append-to-body\":false,\"size\":\"300\",\"with-header\":false,\"wrapper-closable\":false,\"modal\":false},on:{\"update:visible\":function($event){_vm.drawerOpen=$event}}},[(_vm.drawerOpen)?_c('div',{staticClass:\"tab-button close\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-right\"})]):_vm._e(),_c('el-container',{staticClass:\"opacity-container\"},[_c('el-header',{staticClass:\"header\",attrs:{\"height\":\"37px\"}},[_c('div',[_vm._v(\"Opacity\")])]),_c('el-main',{staticClass:\"main\"},[_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"display\"},[_vm._v(_vm._s(_vm.displayString))]),_c('el-slider',{staticClass:\"my-slider\",attrs:{\"step\":0.01,\"min\":0,\"max\":1,\"format-tooltip\":_vm.formatTooltip,\"show-tooltip\":false},model:{value:(_vm.material.opacity),callback:function ($$v) {_vm.$set(_vm.material, \"opacity\", $$v)},expression:\"material.opacity\"}})],1)])],1)],1),(!_vm.drawerOpen)?_c('div',{staticClass:\"tab-button open\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div\n v-if=\"material!=undefined\"\n ref=\"control\"\n class=\"opacity-control\"\n >\n <el-drawer\n custom-class=\"my-drawer\"\n class=\"drawer-content\"\n :visible.sync=\"drawerOpen\"\n :append-to-body=\"false\"\n :modal-append-to-body=\"false\"\n size=\"300\"\n :with-header=\"false\"\n :wrapper-closable=\"false\"\n :modal=\"false\"\n >\n <div\n v-if=\"drawerOpen\"\n class=\"tab-button close\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-right\" />\n </div>\n <el-container class=\"opacity-container\">\n <el-header\n height=\"37px\"\n class=\"header\"\n >\n <div>Opacity</div>\n </el-header>\n <el-main class=\"main\">\n <div class=\"block\">\n <span class=\"display\">{{ displayString }}</span>\n <el-slider\n v-model=\"material.opacity\"\n class=\"my-slider\"\n :step=\"0.01\"\n :min=\"0\"\n :max=\"1\"\n :format-tooltip=\"formatTooltip\"\n :show-tooltip=\"false\"\n />\n </div>\n </el-main>\n </el-container>\n </el-drawer>\n <div\n v-if=\"!drawerOpen\"\n class=\"tab-button open\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Container, Drawer, Header, Icon, Main, Slider } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Container);\nVue.use(Drawer);\nVue.use(Header);\nVue.use(Icon);\nVue.use(Main);\nVue.use(Slider);\n\n/**\n * A component to control the opacity of the target object.\n */\nexport default {\n name: \"OpacityControls\",\n data: function() {\n return {\n displayString: \"100%\",\n material: undefined,\n drawerOpen: true\n };\n },\n watch: {\n \"material.opacity\": function() {\n if (this.material) {\n this._zincobject.setAlpha(this.material.opacity);\n }\n }\n },\n mounted: function() {\n this._zincobject = undefined;\n },\n methods: {\n formatTooltip(val) {\n this.displayString = Math.floor(100 * val + 0.5) + \"%\";\n return this.displayString;\n },\n toggleDrawer: function() {\n this.drawerOpen = !this.drawerOpen;\n },\n setObject(object) {\n if (object) this.material = object.morph.material;\n else this.material = undefined;\n this._zincobject = object;\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/container\";\n@import \"~element-ui/packages/theme-chalk/src/drawer\";\n@import \"~element-ui/packages/theme-chalk/src/slider\";\n\n.opacity-control {\n text-align: left;\n width:300px;\n}\n\n.header {\n color: #606266;\n line-height: 1;\n padding: 9px 17px 0 15px;\n border-bottom: 1px solid #ebeef5;\n font-size: 14px;\n}\n\n.display {\n width: 44px;\n}\n\n.icon {\n right: 17px;\n position: absolute;\n top: 10px;\n}\n\n.main {\n font-size: 13px;\n padding: 20px 17px 0 15px;\n}\n\n.block {\n left: 40px;\n position: absolute;\n top: 57px;\n width: 200px;\n}\n\n.my-slider {\n position: absolute;\n width: 109px;\n top: -12px;\n left: 50px;\n pointer-events: auto;\n}\n\n.opacity-container {\n width: 224px;\n height: 93px;\n border-radius: 4px;\n border: solid 1px #d8dce6;\n background-color: #fff;\n}\n\n::v-deep .el-slider__bar {\n background-color: $app-primary-color;\n}\n\n.drawer-content {\n position: relative;\n height: 93px;\n pointer-events: none;\n}\n\n::v-deep .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n\n::v-deep .my-drawer .el-drawer__body {\n height: 93px;\n}\n\n.tab-button {\n width: 20px;\n height: 40px;\n z-index: 8;\n right: 0px;\n \n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #FFFFFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n //transition: bottom 0.3s;\n\n &.close {\n float: left;\n flex: 1;\n border-right: 0;\n margin-top: 26px;\n }\n\n &.open {\n position: absolute;\n bottom:26px;\n }\n\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transform: scaleY(2.5);\n }\n}\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&\"\nimport script from \"./OpacityControls.vue?vue&type=script&lang=js&\"\nexport * from \"./OpacityControls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OpacityControls.vue?vue&type=style&index=0&id=4c00a30f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c00a30f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tooltipContainer\",style:(_vm.position)},[_c('el-popover',{ref:\"tooltip\",attrs:{\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"tooltip-popper non-selectable\"},model:{value:(_vm.display),callback:function ($$v) {_vm.display=$$v},expression:\"display\"}},[_c('div',[_vm._v(_vm._s(_vm.label))]),_c('i',{directives:[{name:\"popover\",rawName:\"v-popover:tooltip\",arg:\"tooltip\"}]})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div :style=\"position\" class=\"tooltipContainer\">\n <el-popover\n ref=\"tooltip\"\n v-model=\"display\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"tooltip-popper non-selectable\"\n >\n <div>{{ label }}</div>\n <i v-popover:tooltip />\n </el-popover>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Popover } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Popover);\n\n/**\n * A component to control the opacity of the target object.\n */\nexport default {\n name: \"ScaffoldTooltip\",\n props: {\n label: {\n type: String,\n default: \"\",\n },\n visible: {\n type: Boolean,\n default: false,\n },\n x: {\n type: Number,\n default: 200,\n },\n y: {\n type: Number,\n default: 200,\n },\n },\n data: function () {\n return {\n display: false,\n };\n },\n computed: {\n position: function () {\n return { left: this.x + \"px\", top: this.y - 30 + \"px\" };\n },\n },\n watch: {\n label: {\n handler: function () {\n if (this.visible && this.label && this.label !== \"\")\n this.display = true;\n else this.display = false;\n },\n immediate: true,\n },\n visible: {\n handler: function () {\n if (this.visible && this.label && this.label !== \"\")\n this.display = true;\n else this.display = false;\n },\n immediate: true,\n },\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/popover\";\n\n::v-deep .tooltip-popper {\n padding: 2px 6px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n font-size: 16px;\n color: $app-primary-color;\n background-color: #fff;\n border: 1px solid $app-primary-color;\n border-radius: 4px;\n white-space: nowrap;\n min-width: unset;\n pointer-events: none;\n\n &.el-popper[x-placement^=\"top\"] {\n .popper__arrow {\n border-top-color: $app-primary-color !important;\n &:after {\n border-top-color: #fff !important;\n }\n }\n }\n}\n\n.tooltipContainer {\n position: absolute;\n height: 50px;\n z-index: 2;\n}\n\n::v-deep .non-selectable {\n user-select: none;\n pointer-events: none;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldTooltip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldTooltip.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScaffoldTooltip.vue?vue&type=template&id=7e38bfac&scoped=true&\"\nimport script from \"./ScaffoldTooltip.vue?vue&type=script&lang=js&\"\nexport * from \"./ScaffoldTooltip.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ScaffoldTooltip.vue?vue&type=style&index=0&id=7e38bfac&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e38bfac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tree-controls\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen }},[_c('div',{staticClass:\"traditional-container\"},[_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('div',{staticClass:\"regions-display-text\"},[_vm._v(\" Regions \")])])],1),_c('div',{staticClass:\"tree-container\"},[_c('el-tree',{ref:\"regionTree\",attrs:{\"default-expand-all\":\"\",\"node-key\":\"id\",\"show-checkbox\":\"\",\"check-strictly\":true,\"data\":_vm.treeData,\"default-checked-keys\":['__r/'],\"expand-on-click-node\":false},on:{\"check\":_vm.checkChanged},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar node = ref.node;\nvar data = ref.data;\nreturn _c('span',{staticClass:\"region-tree-node\",class:{\n activeItem: \n (_vm.active.group === data.label && \n ((_vm.active.regionPath === data.regionPath) || \n _vm.active.regionPath === undefined)),\n hoverItem: \n (_vm.hover.group === data.label && \n ((_vm.hover.regionPath === data.regionPath) || \n _vm.hover.regionPath === undefined))\n },on:{\"click\":function($event){return _vm.changeActiveByNode(data, true)},\"mouseover\":function($event){return _vm.changeHoverByNode(data, true)}}},[(data.primitives)?_c('el-color-picker',{class:{ 'show-picker': _vm.showColourPicker },attrs:{\"value\":_vm.getColour(data),\"size\":\"small\",\"popper-class\":_vm.myPopperClass},on:{\"change\":function($event){return _vm.setColour(data, $event)}}}):_vm._e(),_c('span',[_vm._v(_vm._s(node.label))])],1)}}])})],1)],1),_c('div',{staticClass:\"drawer-button\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","<template>\n <div\n class=\"tree-controls\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n >\n <div class=\"traditional-container\">\n <el-row>\n <el-col :span=\"12\">\n <div class=\"regions-display-text\">\n Regions\n </div>\n </el-col>\n </el-row>\n <div class=\"tree-container\">\n <el-tree\n ref=\"regionTree\"\n default-expand-all\n node-key=\"id\"\n show-checkbox\n :check-strictly=\"true\"\n :data=\"treeData\"\n :default-checked-keys=\"['__r/']\"\n :expand-on-click-node=\"false\"\n @check=\"checkChanged\"\n >\n <span\n slot-scope=\"{ node, data }\"\n class=\"region-tree-node\"\n :class=\"{\n activeItem: \n (active.group === data.label && \n ((active.regionPath === data.regionPath) || \n active.regionPath === undefined)),\n hoverItem: \n (hover.group === data.label && \n ((hover.regionPath === data.regionPath) || \n hover.regionPath === undefined))\n }\"\n @click=\"changeActiveByNode(data, true)\"\n @mouseover=\"changeHoverByNode(data, true)\"\n >\n <el-color-picker\n v-if=\"data.primitives\"\n :class=\"{ 'show-picker': showColourPicker }\"\n :value=\"getColour(data)\"\n size=\"small\"\n :popper-class=\"myPopperClass\"\n @change=\"setColour(data, $event)\"\n />\n <span>{{ node.label }}</span>\n </span>\n </el-tree>\n </div>\n </div>\n <div\n class=\"drawer-button\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Checkbox, CheckboxGroup, ColorPicker, Row, Tree } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nconst orderBy = require(\"lodash/orderBy\");\nconst uniq = require(\"lodash/uniq\");\nlocale.use(lang);\nVue.use(Checkbox);\nVue.use(CheckboxGroup);\nVue.use(ColorPicker);\nVue.use(Row);\nVue.use(Tree);\n\nconst nameSorting = (a, b) => {\n const labelA = a.label.toUpperCase();\n const labelB = b.label.toUpperCase();\n if (labelA < labelB) {\n return -1;\n }\n if (labelA > labelB) {\n return 1;\n }\n return 0;\n};\n\nconst extractAllIds = (item, list) => {\n list.push(item.id);\n if (item.children)\n item.children.forEach(child => extractAllIds(child, list));\n}\n\n/**\n * A vue component for toggling visibility of various regions.\n */\nexport default {\n name: \"TreeControls\",\n props: {\n /**\n * @ignore\n */\n module: {\n type: Object,\n default: undefined,\n },\n /**\n * Enable/disable colour picker\n */\n showColourPicker: Boolean,\n },\n data: function () {\n return {\n treeData: [{ label: \"Root\", id: \"__r/\", children: [] }],\n active: {group: \"\", regionPath: undefined},\n hover: {group: \"\", regionPath: undefined},\n myPopperClass: \"hide-scaffold-colour-popup\",\n drawerOpen: true,\n };\n },\n watch: {\n showColourPicker: {\n immediate: true,\n handler: function () {\n if (this.showColourPicker) this.myPopperClass = \"showPicker\";\n else this.myPopperClass = \"hide-scaffold-colour-popup\";\n },\n },\n },\n created: function () {\n this.module.sceneData.geometries.forEach(zincObject => {\n this.organsAdded(zincObject);\n });\n this.module.sceneData.lines.forEach(zincObject => {\n this.organsAdded(zincObject);\n });\n this.module.sceneData.glyphsets.forEach(zincObject => {\n this.organsAdded(zincObject);\n });\n this.module.sceneData.pointsets.forEach(zincObject => {\n this.organsAdded(zincObject);\n });\n this.module.addOrganPartAddedCallback(this.organsAdded);\n this.__nodeNumbers = 1;\n },\n destroyed: function () {\n this.sortedPrimitiveGroups = undefined;\n },\n methods: {\n addTreeItem: function (parentContainer, item) {\n for (let i = 0; i < parentContainer.length; i++) {\n if (parentContainer[i].id === item.id) {\n if (item.primitives && parentContainer[i].primitives) {\n parentContainer[i].primitives.push(...item.primitives);\n return;\n }\n }\n }\n parentContainer.push(item);\n parentContainer.sort((a, b) => {\n return nameSorting(a, b);\n });\n this.__nodeNumbers++;\n this.$nextTick(() => {\n this.$refs.regionTree.setChecked(item.id, true);\n });\n },\n // find or create new region, region id is always prefixed with\n // '__r/'\n findOrCreateRegion: function (data, paths, prefix) {\n //check if root region has been set\n if (!this.treeData[0].region && this.module && this.module.scene) {\n this.treeData[0].region = this.module.scene.getRootRegion();\n }\n\n if (paths.length > 0) {\n const _paths = [...paths];\n let childRegion = data.children.find(\n (child) => child.label == _paths[0]\n );\n const path = prefix + \"/\" + paths[0];\n const id = \"__r\" + path;\n if (!childRegion) {\n const region = this.treeData[0].region.findChildFromPath(path);\n childRegion = {\n label: _paths[0],\n id: id,\n children: [],\n region: region,\n };\n this.addTreeItem(data.children, childRegion);\n }\n _paths.shift();\n return this.findOrCreateRegion(childRegion, _paths, path);\n } else {\n return data;\n }\n },\n /**\n * This is called when a new organ is read into the scene.\n */\n organsAdded: function (zincObject) {\n const region = zincObject.region;\n if (region) {\n const paths = region.getFullSeparatedPath();\n const regionData = this.findOrCreateRegion(this.treeData[0], paths, \"\");\n if (zincObject.groupName) {\n if (regionData) {\n if (!regionData.children) {\n regionData.children = [];\n }\n let id =\n regionData.id.replace(\"__r/\", \"\") + \"/\" + zincObject.groupName;\n const child = {\n label: zincObject.groupName,\n id: id,\n primitives: [zincObject],\n regionPath: zincObject.region.getFullPath()\n };\n this.addTreeItem(regionData.children, child);\n }\n }\n }\n },\n checkChanged: function (node, data) {\n let checked = data.checkedKeys.includes(node.id);\n if (node.region) node.region.setVisibility(checked);\n if (node.primitives) {\n node.primitives.forEach(primitive => {\n primitive.setVisibility(checked);\n });\n }\n },\n changeActiveByPrimitive: function (primitive, propagate) {\n if (primitive && primitive.getVisibility()) {\n this.active.group = primitive.groupName;\n this.active.regionPath = primitive.region.getFullPath();\n console.log(this.active)\n this.$emit(\"object-selected\", primitive, propagate);\n } else {\n this.removeActive(propagate);\n }\n this.removeHover(propagate);\n },\n changeHoverByPrimitive: function (primitive, propagate) {\n if (primitive) {\n this.hover.group = primitive.groupName;\n this.hover.regionPath = primitive.region.getFullPath();\n this.$emit(\"object-hovered\", primitive, propagate);\n } else {\n this.removeHover(propagate);\n }\n },\n /**\n * Select a region by its name.\n */\n changeActiveByName: function (name, regionPath, propagate) {\n const rootRegion = this.module.scene.getRootRegion();\n const targetRegion = rootRegion.findChildFromPath(regionPath);\n let targetObject = this.getFirstZincObjectWithGroupName(targetRegion, name);\n this.changeActiveByPrimitive(targetObject, propagate);\n },\n /**\n * Hover a region by its name.\n */\n changeHoverByName: function (name, regionPath, propagate) {\n const rootRegion = this.module.scene.getRootRegion();\n const targetRegion = rootRegion.findChildFromPath(regionPath);\n let targetObject = this.getFirstZincObjectWithGroupName(targetRegion, name);\n this.changeHoverByPrimitive(targetObject, propagate);\n },\n changeActiveByNode: function (node, propagate) {\n if (node.primitives)\n this.changeActiveByPrimitive(node.primitives[0], propagate);\n },\n changeHoverByNode: function (node, propagate) {\n if (node.primitives)\n this.changeHoverByPrimitive(node.primitives[0], propagate);\n },\n /**\n * Unselect the current selected region.\n */\n removeActive: function (propagate) {\n this.active.group = \"\";\n this.active.regionPath = undefined;\n this.$emit(\"object-selected\", undefined, propagate);\n },\n /**\n * Unselect the current hover region.\n */\n removeHover: function (propagate) {\n this.hover.group = \"\";\n this.hover.regionPath = undefined;\n this.$emit(\"object-hovered\", undefined, propagate);\n },\n /**\n * Reset the controls.\n */\n clear: function () {\n this.active.group = \"\";\n this.active.regionPath = undefined;\n this.hover.group = \"\";\n this.hover.regionPath = undefined;\n this.$refs.regionTree.updateKeyChildren( \"__r/\", []);\n this.$emit(\"object-selected\", undefined);\n },\n getFirstZincObjectWithGroupName: function (region, name) {\n if (region) {\n let array = region.findGeometriesWithGroupName(name);\n if (array.length > 0) return array[0];\n array = region.findGlyphsetsWithGroupName(name);\n if (array.length > 0) return array[0];\n array = region.findLinesWithGroupName(name);\n if (array.length > 0) return array[0];\n array = region.findPointsetsWithGroupName(name);\n if (array.length > 0) return array[0];\n }\n return undefined;\n },\n getColour: function (nodeData) {\n if (nodeData) {\n let graphic = nodeData.primitives[0];\n if (graphic) {\n let hex = graphic.getColourHex();\n if (hex) return \"#\" + hex;\n }\n }\n return \"#FFFFFF\";\n },\n setColour: function (nodeData, value) {\n if (nodeData) {\n let graphic = nodeData.primitives[0];\n if (graphic) {\n let hexString = value.replace(\"#\", \"0x\");\n graphic.setColourHex(hexString);\n }\n }\n },\n viewAll: function () {\n this.module.viewAll();\n },\n visibilityToggle: function (item, event) {\n this.module.changeOrganPartsVisibility(item, event);\n if (event == false) {\n if (this.activeRegion === item) {\n this.removeActive(true);\n }\n if (this.hoverRegion === item) {\n this.removeHover(true);\n }\n }\n },\n toggleDrawer: function () {\n this.drawerOpen = !this.drawerOpen;\n this.$emit(\"drawer-toggled\", this.drawerOpen);\n },\n setTreeVisibility: function(node, list) {\n let flag = false;\n if (list.includes(node.id)) flag = true;\n if (node.region) node.region.setVisibility(flag);\n if (node.primitives) node.primitives.forEach(primitive => primitive.setVisibility(flag))\n if (node.children) node.children.forEach(child => this.setTreeVisibility(child, list));\n },\n checkAllKeys: function () {\n const keysList = [];\n extractAllIds(this.treeData[0], keysList);\n this.setTreeVisibility(this.treeData[0], keysList);\n this.$refs.regionTree.setCheckedKeys(keysList);\n },\n getState: function () {\n let checkedItems = this.$refs.regionTree.getCheckedKeys();\n if (checkedItems.length === this.__nodeNumbers)\n return { checkAll: true, version: \"2.0\" };\n return { checkedItems: checkedItems, version: \"2.0\" };\n },\n setState: function (state) {\n if (state) {\n if (state.checkAll) {\n this.checkAllKeys(); \n } else if (state.checkedItems) {\n let list = [];\n if (state.version !== \"2.0\") {\n list = state.checkedItems.map(item => \"/\" + item);\n list.shift(\"__r/\");\n } else {\n list.push(...state.checkedItems);\n }\n this.setTreeVisibility(this.treeData[0], list);\n this.$refs.regionTree.setCheckedKeys(list);\n }\n }\n },\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/checkbox\";\n@import \"~element-ui/packages/theme-chalk/src/color-picker\";\n@import \"~element-ui/packages/theme-chalk/src/row\";\n@import \"~element-ui/packages/theme-chalk/src/tree\";\n\n.checkbox-container {\n display: flex;\n cursor: pointer;\n}\n\n.tree-controls {\n position: absolute;\n bottom: 0px;\n transition: all 1s ease;\n\n &:focus {\n outline: none;\n }\n &.open {\n left: 0px;\n .traditional-container {\n opacity: 1;\n }\n }\n &.close {\n left: -298px;\n .traditional-container {\n pointer-events: none;\n opacity: 0;\n }\n }\n}\n\n.traditional-container {\n transition: all 1s ease;\n float: left;\n padding-left: 16px;\n padding-right: 18px;\n max-height: calc(100% - 154px);\n text-align: left;\n overflow: none;\n border: 1px solid rgb(220, 223, 230);\n padding-top: 7px;\n padding-bottom: 16px;\n background: #ffffff;\n}\n\n.regions-display-text {\n width: 59px;\n height: 20px;\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n margin-left: 8px;\n}\n\n.all-checkbox {\n float: right;\n}\n\n.tree-container {\n width: 260px;\n border: 1px solid rgb(144, 147, 153);\n border-radius: 4px;\n background: #ffffff;\n margin-top: 6px;\n\n ::v-deep .el-tree {\n max-height: 240px;\n min-height: 130px;\n overflow: auto;\n &::-webkit-scrollbar {\n width: 4px;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n box-shadow: inset 0 0 6px #c0c4cc;\n }\n }\n\n ::v-deep .el-tree-node__content {\n height: 22px;\n }\n}\n\n::v-deep .el-checkbox__input {\n &.is-indeterminate,\n &.is-checked {\n .el-checkbox__inner {\n background-color: $app-primary-color;\n border-color: $app-primary-color;\n }\n }\n}\n\n::v-deep .el-color-picker__color {\n border: 1px solid $app-primary-color;\n}\n\n::v-deep .el-checkbox__label {\n padding-left: 5px;\n color: $app-primary-color !important;\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0px;\n line-height: 14px;\n}\n\n.activeItem {\n background-color: #bbb !important;\n}\n\n.region-tree-node {\n flex: 1;\n color: $app-primary-color !important;\n display: flex;\n font-size: 12px;\n line-height: 14px;\n padding-left: 0px;\n background-color: #fff;\n width: 100%;\n\n ::v-deep .el-color-picker {\n height: 14px !important;\n }\n\n ::v-deep .el-color-picker__trigger {\n margin-left: 8px;\n margin-right: 8px;\n padding: 0px;\n height: 14px;\n width: 14px;\n border: 0px;\n }\n}\n\n.hoverItem {\n background-color: #eee !important;\n}\n\n::v-deep .el-color-picker__icon {\n &.el-icon-arrow-down {\n display: none;\n }\n}\n\n::v-deep .show-picker {\n .el-color-picker__icon {\n &.el-icon-arrow-down {\n display: block;\n }\n }\n}\n\n::v-deep .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n\n.drawer {\n ::v-deep .el-drawer:focus {\n outline: none;\n }\n}\n\n.open-drawer {\n width: 20px;\n height: 40px;\n z-index: 8;\n position: absolute;\n left: 0px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #f7faff;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.drawer-button {\n float: left;\n width: 20px;\n height: 40px;\n z-index: 8;\n margin-top: calc(50% - 52px);\n border: solid 1px #e4e7ed;\n border-left: 0;\n background-color: #ffffff;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.drawer-button {\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transition-delay: 0.9s;\n }\n &.open {\n i {\n transform: rotate(0deg) scaleY(2.5);\n }\n }\n &.close {\n i {\n transform: rotate(180deg) scaleY(2.5);\n }\n }\n}\n\n.drawer-button.open i {\n transform: rotate(0deg) scaleY(2.5);\n}\n\n.drawer-button.close i {\n transform: rotate(180deg) scaleY(2.5);\n}\n</style>\n\n<style>\n.hide-scaffold-colour-popup {\n display: none;\n}\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TreeControls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TreeControls.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TreeControls.vue?vue&type=template&id=4d20ec9a&scoped=true&\"\nimport script from \"./TreeControls.vue?vue&type=script&lang=js&\"\nexport * from \"./TreeControls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TreeControls.vue?vue&type=style&index=0&id=4d20ec9a&scoped=true&lang=scss&\"\nimport style1 from \"./TreeControls.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d20ec9a\",\n null\n \n)\n\nexport default component.exports","<template>\n <div\n ref=\"scaffoldContainer\"\n v-loading=\"loading\"\n class=\"scaffold-container\"\n element-loading-text=\"Loading...\"\n element-loading-spinner=\"el-icon-loading\"\n element-loading-background=\"rgba(0, 0, 0, 0.3)\"\n >\n <map-svg-sprite-color />\n <scaffold-tooltip\n :label=\"tData.label\"\n :visible=\"tData.visible\"\n :x=\"tData.x\"\n :y=\"tData.y\"\n />\n <div\n id=\"organsDisplayArea\"\n ref=\"display\"\n tabindex=\"-1\"\n style=\"height:100%;width:100%;\"\n @keydown.66=\"backgroundChangeCallback\"\n />\n <div v-show=\"displayUI && !isTransitioning\">\n <el-popover\n v-if=\"displayWarning\"\n ref=\"warningPopover\"\n v-model=\"hoverVisabilities[6].value\"\n :content=\"warningMessage\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"warning-popper right-popper non-selectable\"\n />\n <i\n v-if=\"displayWarning\"\n v-popover:warningPopover\n class=\"el-icon-warning warning-icon\"\n @mouseover=\"showToolitip(6)\"\n @mouseout=\"hideToolitip(6)\"\n >\n <span class=\"warning-text\">Beta</span>\n </i>\n <el-popover\n ref=\"checkBoxPopover\"\n v-model=\"hoverVisabilities[5].value\"\n content=\"Change region visibility\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper right-popper non-selectable\"\n />\n <tree-controls\n ref=\"treeControl\"\n v-popover:checkBoxPopover\n :help-mode=\"helpMode\"\n :module=\"$module\"\n :show-colour-picker=\"showColourPicker\"\n @object-selected=\"objectSelected\"\n @object-hovered=\"objectHovered\"\n @drawer-toggled=\"drawerToggled\"\n />\n <div class=\"opacity-box\">\n <opacity-controls ref=\"opacityControl\" />\n </div>\n <el-popover\n v-if=\"sceneData.timeVarying\"\n ref=\"sliderPopover\"\n v-model=\"hoverVisabilities[4].value\"\n content=\"Move the slider to animate the region\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper top-popper non-selectable\"\n />\n <div\n v-if=\"sceneData.timeVarying\"\n v-popover:sliderPopover\n class=\"time-slider-container\"\n :class=\"[ minimisedSlider ? 'minimised' : '', sliderPosition]\"\n >\n <el-tabs type=\"card\">\n <el-tab-pane label=\"Animate scaffold\">\n <el-row class=\"tab-content\">\n <map-svg-icon\n v-if=\"isPlaying\"\n icon=\"pause\"\n class=\"icon-button video-button\"\n @click.native=\"play(false)\"\n />\n <map-svg-icon\n v-else\n icon=\"play\"\n class=\"video-button icon-button\"\n @click.native=\"play(true)\"\n />\n <el-slider\n :min=\"0\"\n :max=\"timeMax\"\n :value=\"sceneData.currentTime / 100 * timeMax\"\n :step=\"0.1\"\n tooltip-class=\"time-slider-tooltip\"\n class=\"slider\"\n :format-tooltip=\"formatTooltip\"\n :marks=\"timeStamps\"\n @input=\"timeChange($event)\"\n />\n </el-row>\n </el-tab-pane>\n <el-tab-pane label=\"Animation data\">\n <el-row class=\"tab-content\">\n <div class=\"animation-data\">\n Original duration:\n <div class=\"purple\">\n {{ orginalDuration }}\n </div>\n </div>\n <div class=\"animation-data\">\n Animation duration:\n <div class=\"purple\">\n {{ animateDuration }}\n </div>\n </div>\n <div class=\"animation-data\">\n Playback speed\n <el-select\n :popper-append-to-body=\"true\"\n :value=\"currentSpeed\"\n placeholder=\"Select\"\n class=\"select-box\"\n popper-class=\"scaffold_viewer_dropdown\"\n @change=\"speedChanged($event)\"\n >\n <el-option\n v-for=\"item in playSpeed\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </div>\n </el-row>\n </el-tab-pane>\n </el-tabs>\n </div>\n <div class=\"bottom-right-control\">\n <el-popover\n v-model=\"hoverVisabilities[0].value\"\n content=\"Zoom in\"\n placement=\"left\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper left-popper non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n icon=\"zoomIn\"\n class=\"icon-button zoomIn\"\n @click.native=\"zoomIn()\"\n @mouseover.native=\"showToolitip(0)\"\n @mouseout.native=\"hideToolitip(0)\"\n />\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[1].value\"\n content=\"Zoom out\"\n placement=\"top-end\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper popper-zoomout non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n icon=\"zoomOut\"\n class=\"icon-button zoomOut\"\n @click.native=\"zoomOut()\"\n @mouseover.native=\"showToolitip(1)\"\n @mouseout.native=\"hideToolitip(1)\"\n />\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[2].value\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper non-selectable\"\n >\n <div>\n Fit to\n <br>\n window\n </div>\n <map-svg-icon\n slot=\"reference\"\n icon=\"fitWindow\"\n class=\"icon-button fitWindow\"\n @click.native=\"fitWindow()\"\n @mouseover.native=\"showToolitip(2)\"\n @mouseout.native=\"hideToolitip(2)\"\n />\n </el-popover>\n </div>\n <el-popover\n ref=\"backgroundPopover\"\n placement=\"top-start\"\n width=\"128\"\n :append-to-body=\"false\"\n trigger=\"click\"\n popper-class=\"background-popper non-selectable\"\n >\n <el-row class=\"backgroundText\">\n Change background\n </el-row>\n <el-row class=\"backgroundChooser\">\n <div\n v-for=\"item in availableBackground\"\n :key=\"item\"\n :class=\"['backgroundChoice', item, item == currentBackground ? 'active' :'']\"\n @click=\"backgroundChangeCallback(item)\"\n />\n </el-row>\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[3].value\"\n content=\"Change background color\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper right-popper non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n v-popover:backgroundPopover\n icon=\"changeBckgd\"\n class=\"icon-button background-colour\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n @mouseover.native=\"showToolitip(3)\"\n @mouseout.native=\"hideToolitip(3)\"\n />\n </el-popover>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport OpacityControls from \"./OpacityControls\";\nimport ScaffoldTooltip from \"./ScaffoldTooltip\";\nimport TreeControls from \"./TreeControls\";\nimport { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\n\nimport {\n Col,\n Loading,\n Option,\n Popover,\n Row,\n Select,\n Slider,\n TabPane,\n Tabs\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Col);\nVue.use(Loading.directive);\nVue.use(Option);\nVue.use(Popover);\nVue.use(Row);\nVue.use(Select);\nVue.use(Slider);\nVue.use(TabPane);\nVue.use(Tabs);\n\nconst OrgansViewer = require(\"../scripts/organsRenderer\").OrgansViewer;\nconst EventNotifier = require(\"../scripts/eventNotifier\").EventNotifier;\n\n/**\n * A vue component of the scaffold viewer.\n *\n * @requires ./OpacityControls.vue\n * @requires ./TreeControls.vue\n */\nexport default {\n name: \"ScaffoldVuer\",\n components: {\n MapSvgIcon,\n MapSvgSpriteColor,\n OpacityControls,\n ScaffoldTooltip,\n TreeControls,\n },\n props: {\n /**\n * URL of the zincjs metadata. This value will be ignored if a valid\n * state prop is also provided.\n * If the url needs to be updated with state present, please use\n * the setURL method.\n */\n url: {\n type: String,\n default: \"\"\n },\n /**\n * Show the colour control of set to true.\n */\n showColourPicker: {\n type: Boolean,\n default: false\n },\n /**\n * Flag to show/hide the UI.\n */\n displayUI: {\n type: Boolean,\n default: true\n },\n /**\n * Display all graphics at start.\n *\n * This setting only works when traditional is set to false.\n */\n displayAtStartUp: {\n type: Boolean,\n default: true\n },\n /**\n * Use for toggling the help tooltips.\n */\n helpMode: {\n type: Boolean,\n default: false\n },\n /**\n * Use for show/display beta warning icon.\n */\n displayWarning: {\n type: Boolean,\n default: true\n },\n /**\n * Warning message for the hovered over text\n * on the warning icon.\n */\n warningMessage: {\n type: String,\n default: \"Beta feature - under active development\"\n },\n /**\n * Show/hide pickable markers for regions.\n */\n displayMarkers: {\n type: Boolean,\n default: true\n },\n /**\n * Show/hide minimap.\n */\n displayMinimap: {\n type: Boolean,\n default: false\n },\n /**\n * Settings for minimap position, size and alignment.\n */\n minimapSettings: {\n type: Object,\n default: function() {\n return {\n x_offset: 16,\n y_offset: 16,\n width: 128,\n height: 128,\n align: \"top-right\"\n };\n }\n },\n /**\n * State containing state of the scaffold.\n */\n state: {\n type: Object,\n default: undefined\n },\n /**\n * Optional prop for the name of the region to focus on,\n * this option is ignored if state or viewURL is also provided.\n */\n region: {\n type: String,\n default: \"\"\n },\n /**\n * Optional prop for an URL of containing information of a viewport.\n * This option is ignored if state is also provided.\n * It will use the provided URL as base if a relative parth is provided.\n */\n viewURL: {\n type: String,\n default: \"\"\n },\n /**\n * Settings for turning on/off rendering\n */\n render: {\n type: Boolean,\n default: true\n }\n },\n data: function() {\n return {\n sceneData: this.$module.sceneData,\n isPlaying: false,\n /**\n * This is set when scene is transitioning.\n */\n isTransitioning: false,\n tooltipAppendToBody: false,\n hoverVisabilities: [\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false }\n ],\n inHelp: false,\n loading: false,\n duration: 3000,\n drawerOpen: true,\n currentBackground: \"white\",\n availableBackground: [\"white\", \"lightskyblue\", \"black\"],\n minimisedSlider: false,\n sliderPosition: \"\",\n timeMax: 100,\n orginalDuration: \"\",\n animateDuration: \"6secs\",\n playSpeed: [\n {\n value: 0.1,\n label: \"0.1x\"\n },\n {\n value: 0.5,\n label: \"0.5x\"\n },\n {\n value: 1,\n label: \"1x\"\n },\n {\n value: 2,\n label: \"2x\"\n },\n {\n value: 5,\n label: \"5x\"\n },\n {\n value: 10,\n label: \"10x\"\n }\n ],\n currentSpeed: 1,\n timeStamps: {},\n defaultCheckedKeys: [],\n tData: {\n label: \"\",\n visible: false,\n x: 200,\n y: 200\n }\n };\n },\n watch: {\n url: {\n handler: function(newValue) {\n if (this.state === undefined || this.state.url === undefined)\n this.setURL(newValue);\n },\n immediate: true\n },\n region: {\n handler: function(region) {\n if (!(this.state || this.viewURL)) this.setFocusedRegion(region);\n },\n immediate: true\n },\n state: {\n handler: function(state) {\n this.setState(state);\n },\n immediate: true,\n deep: true\n },\n viewURL: {\n handler: function(viewURL) {\n this.updateViewURL(viewURL);\n },\n immediate: true\n },\n helpMode: function(val) {\n this.setHelpMode(val);\n },\n displayMarkers: function(val) {\n this.$module.scene.displayMarkers = val;\n },\n displayMinimap: function(val) {\n this.$module.scene.displayMinimap = val;\n },\n \"sceneData.currentTime\": function() {\n /**\n * Triggers when scene time changes.\n *\n * @property {number} time Current build-in time of scene.\n * of selected object.\n */\n this.$emit(\"timeChanged\", this.sceneData.currentTime);\n },\n duration: function() {\n this.$module.scene.setDuration(this.duration);\n },\n minimapSettings: {\n deep: true,\n handler: \"updateMinimapScissor\"\n },\n render: function(val) {\n this.toggleRendering(val);\n }\n },\n beforeCreate: function() {\n this.$module = new OrgansViewer();\n this.isReady = false;\n this.selectedObject = undefined;\n this.hoveredObject = undefined;\n this.currentBackground = \"white\";\n this._currentURL = undefined;\n this.availableBackground = [\"white\", \"black\", \"lightskyblue\"];\n },\n mounted: function() {\n let eventNotifier = new EventNotifier();\n eventNotifier.subscribe(this, this.eventNotifierCallback);\n this.$module.addNotifier(eventNotifier);\n this.$module.addOrganPartAddedCallback(this.organsAdded);\n this.$module.initialiseRenderer(this.$refs.display);\n this.toggleRendering(this.render);\n this.ro = new ResizeObserver(this.adjustLayout).observe(\n this.$refs.scaffoldContainer\n );\n this.defaultRate = this.$module.getPlayRate();\n },\n beforeDestroy: function() {\n if (this.ro) this.ro.disconnect();\n this.$module.destroy();\n this.$module = undefined;\n },\n methods: {\n /**\n * This is called when a new organ is read into the scene.\n */\n organsAdded: function() {\n this.loading = false;\n },\n /**\n * This is called when Change backgspeedround colour button\n * is pressed an causes the backgrouColornd colour to be changed\n * to one of the three preset colour: white, black and\n * lightskyblue.\n */\n backgroundChangeCallback: function(colour) {\n this.currentBackground = colour;\n this.$module.zincRenderer\n .getThreeJSRenderer()\n .setClearColor(this.currentBackground, 1);\n },\n /**\n * This is called by captueeScreenshot and after the last render\n * loop, it download a screenshot of the current scene with no UI.\n */\n captureScreenshotCallback: function() {\n //Remove the callback, only needs to happen once\n this.$module.zincRenderer.removePostRenderCallbackFunction(\n this.captureID\n );\n let screenshot = this.$module.zincRenderer\n .getThreeJSRenderer()\n .domElement.toDataURL(\"image/png\");\n let hrefElement = document.createElement(\"a\");\n document.body.append(hrefElement);\n if (!this.captureFilename) hrefElement.download = `screenshot.png`;\n else hrefElement.download = this.captureFilename;\n hrefElement.href = screenshot;\n hrefElement.click();\n hrefElement.remove();\n },\n /**\n * Function for capturing a screenshot of the current rendering.\n *\n * @param {String} filename filename given to the screenshot.\n *\n * @public\n */\n captureScreenshot: function(filename) {\n this.captureFilename = filename;\n this.captureID = this.$module.zincRenderer.addPostRenderCallbackFunction(\n this.captureScreenshotCallback\n );\n },\n formatTooltip(val) {\n if (this.timeMax >= 1000) {\n if (val) {\n let sec = ((val % 60000) / 1000).toFixed(2) + \"s\";\n let min = val > 60000 ? (val / 60000).toFixed(0) + \"m \" : \"\";\n return min + sec;\n }\n }\n return val ? val.toFixed(2) + \" ms\" : \"0 ms\";\n },\n /**\n * Function to reset the view to default.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n fitWindow: function() {\n if (this.$module.scene) {\n this.$module.scene.viewAll();\n }\n },\n /**\n * Function to zoom in.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n zoomIn: function() {\n if (this.$module.scene) {\n this.$module.scene.changeZoomByScrollRateUnit(-1);\n }\n },\n /**\n * Function to zoom out.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n zoomOut: function() {\n if (this.$module.scene) {\n this.$module.scene.changeZoomByScrollRateUnit(1);\n }\n },\n /**\n * Function to change the current play speed.\n *\n * @public\n */\n speedChanged: function(speed) {\n this.currentSpeed = speed;\n this.$module.setPlayRate(this.defaultRate * this.currentSpeed);\n },\n /**\n * Function used to stop the free spin\n *\n * @public\n */\n stopFreeSpin: function() {\n let cameracontrol = this.$module.scene.getZincCameraControls();\n cameracontrol.stopAutoTumble();\n this.isTransitioning = false;\n },\n /**\n * Focus on named region\n */\n viewRegion: function(name) {\n if (name && name != \"\" && this.$module.scene) {\n let objects = this.$module.scene.findObjectsWithGroupName(name);\n let box = this.$module.scene.getBoundingBoxOfZincObjects(objects);\n if (box) {\n if (this.$module.isSyncControl()) {\n this.$module.setSyncControlZoomToBox(box);\n } else {\n this.$module.scene.viewAllWithBoundingBox(box);\n }\n }\n }\n },\n setFocusedRegion: function(name) {\n if (name) {\n if (this.isReady) {\n this.viewRegion(name);\n } else {\n this.$module.setFinishDownloadCallback(\n this.setURLFinishCallback({ region: name })\n );\n }\n }\n },\n updateViewURL: function(viewURL) {\n if (viewURL) {\n if (this.isReady) {\n const url = new URL(viewURL, this.url);\n this.$module.scene.loadViewURL(url);\n } else {\n this.$module.setFinishDownloadCallback(\n this.setURLFinishCallback({ viewURL: viewURL })\n );\n }\n }\n },\n getRendererInfo: function() {\n if (this.$module.zincRenderer) {\n return this.$module.zincRenderer.getThreeJSRenderer().info;\n }\n return undefined;\n },\n /**\n * Function used to rotate the scene.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n freeSpin: function() {\n if (this.$module.scene) {\n let cameracontrol = this.$module.scene.getZincCameraControls();\n this.isTransitioning = true;\n cameracontrol.enableAutoTumble();\n cameracontrol.autoTumble([1.0, 0.0], Math.PI, true);\n setTimeout(this.stopFreeSpin, 4000);\n }\n },\n /**\n * Callback when a region is selected/highlighted.\n * It will also update other controls.\n */\n eventNotifierCallback: function(event) {\n if (event.eventType == 1) {\n if (this.$refs.treeControl) {\n if (event.identifiers[0]) {\n let id = event.identifiers[0].data.id\n ? event.identifiers[0].data.id\n : event.identifiers[0].data.group;\n let region = event.identifiers[0].data.region;\n this.$refs.treeControl.changeActiveByName(id, region, true);\n } else {\n this.$refs.treeControl.removeActive(true);\n }\n }\n // Triggers when an object has been selected\n this.$emit(\"scaffold-selected\", event.identifiers);\n } else if (event.eventType == 2) {\n this.tData.visible = false;\n if (event.identifiers[0]) {\n let id = event.identifiers[0].data.id\n ? event.identifiers[0].data.id\n : event.identifiers[0].data.group;\n if (event.identifiers[0].coords) {\n this.tData.visible = true;\n this.tData.label = id;\n this.tData.x = event.identifiers[0].coords.x;\n this.tData.y =event.identifiers[0].coords.y;\n }\n if (this.$refs.treeControl) {\n let region = event.identifiers[0].data.region;\n this.$refs.treeControl.changeHoverByName(id, region, true);\n } else {\n this.$refs.treeControl.removeHover(true);\n }\n }\n // Triggers when an object has been highlighted\n this.$emit(\"scaffold-highlighted\", event.identifiers);\n } else if (event.eventType == 3) { //MOVE\n if (event.identifiers[0]) {\n if (event.identifiers[0].coords) {\n this.tData.x = event.identifiers[0].coords.x;\n this.tData.y = event.identifiers[0].coords.y;\n }\n }\n }\n },\n /**\n * Get the coordinates of the current selected region.\n *\n * @public\n */\n getCoordinatesOfSelected: function() {\n if (this.selectedObject) {\n return this.$module.scene.getObjectsScreenXY([this.selectedObject]);\n }\n return undefined;\n },\n /**\n * Return an object containing the window coordinates of the\n * current selected region which will be updated after each render\n * loop.\n *\n * @public\n */\n getDynamicSelectedCoordinates: function() {\n return this.$module.selectedScreenCoordinates;\n },\n /**\n * Callback when time is changed through the UI.\n */\n timeChange: function(event) {\n let normalizedTime = (event / this.timeMax) * 100;\n if (normalizedTime != this.sceneData.currentTime)\n this.$module.updateTime(normalizedTime);\n },\n /**\n * A callback used by children components. Set the selected zinc object\n *\n * @param {object} object Zinc object\n */\n objectSelected: function(object, propagate) {\n if (object !== this.selectedObject) {\n this.selectedObject = object;\n this.$refs.opacityControl.setObject(this.selectedObject);\n if (object) this.$module.setSelectedByZincObject(object, undefined, propagate);\n else this.$module.setSelectedByObjects([], undefined, propagate);\n }\n },\n /**\n * A callback used by children components. Set the highlighted zinc object\n *\n * @param {object} object Zinc object\n */\n objectHovered: function(object, propagate) {\n if (object !== this.hoveredObject) {\n this.hoveredObject = object;\n if (object) this.$module.setHighlightedByZincObject(object, undefined, propagate);\n else this.$module.setHighlightedByObjects([], undefined, propagate);\n }\n },\n /**\n * Set the selected by name.\n *\n * @param {name} name Name of the group\n */\n changeActiveByName: function(name, region, propagate) {\n if (name === undefined)\n this.$refs.treeControl.removeActive(propagate);\n else\n this.$refs.treeControl.changeActiveByName(name, region, propagate);\n },\n /**\n * Set the highlighted by name.\n *\n * @param {name} name Name of the group\n */\n changeHighlightedByName: function(name, region, propagate) {\n if (name === undefined)\n this.$refs.treeControl.removeHover(propagate);\n else\n this.$refs.treeControl.changeHoverByName(name, region, propagate);\n },\n /**\n * Start the animation.\n *\n * @param {object} object Zinc object\n */\n play: function(flag) {\n this.$module.playAnimation(flag);\n this.isPlaying = flag;\n },\n /**\n * Function to toggle on/off overlay help.\n */\n setHelpMode: function(helpMode) {\n if (helpMode) {\n this.inHelp = true;\n this.hoverVisabilities.forEach(item => {\n item.value = true;\n });\n } else {\n this.inHelp = false;\n this.hoverVisabilities.forEach(item => {\n item.value = false;\n });\n }\n },\n /**\n * This is called when mouse cursor enters supported elements\n * with help tootltips.\n */\n showToolitip: function(tooltipNumber) {\n if (!this.inHelp) {\n this.tooltipWait = setTimeout(() => {\n this.hoverVisabilities[tooltipNumber].value = true;\n }, 500);\n }\n },\n /**\n * This is called when mouse cursor exits supported element..\n */\n hideToolitip: function(tooltipNumber) {\n if (!this.inHelp) {\n this.hoverVisabilities[tooltipNumber].value = false;\n clearTimeout(this.tooltipWait);\n }\n },\n /**\n * Called when minimap settings has changed. Pass the\n * parameters to ZincJS and marked it for update.\n */\n updateMinimapScissor: function() {\n Object.keys(this.minimapSettings).forEach(key => {\n this.$module.scene.minimapScissor[key] = this.minimapSettings[key];\n });\n this.$module.scene.minimapScissor.updateRequired = true;\n },\n updateSettingsfromScene: function() {\n this.currentSpeed = 1;\n this.$module.setPlayRate(this.defaultRate);\n this.orginalDuration = this.$module.scene.getMetadataTag(\n \"OriginalDuration\"\n );\n this.animateDuration = this.$module.scene.getMetadataTag(\"Duration\");\n let timeStamps = this.$module.scene.getMetadataTag(\"TimeStamps\");\n this.timeStamps = {};\n for (const key in timeStamps) {\n this.timeStamps[timeStamps[key]] = key;\n }\n this.timeMax = this.$module.scene.getDuration();\n },\n setURLFinishCallback: function(options) {\n return () => {\n if (options) {\n if (options.viewport) {\n this.$module.scene\n .getZincCameraControls()\n .setCurrentCameraSettings(options.viewport);\n } else if (options.viewURL && options.viewURL !== \"\") {\n const url = new URL(options.viewURL, this.url);\n this.$module.scene.loadViewURL(url);\n } else if (options.region && options.region !== \"\") {\n this.viewRegion(options.region);\n }\n if (options.visibility) {\n // Some UIs may not be ready at this time.\n this.$nextTick(() => {\n this.$refs.treeControl.setState(options.visibility);\n });\n }\n }\n this.updateSettingsfromScene();\n this.$module.updateTime(0.01);\n this.$module.updateTime(0);\n this.$module.unsetFinishDownloadCallback();\n this.$emit(\"on-ready\");\n this.isReady = true;\n };\n },\n /**\n * Function used for getting the current states of the scene. This exported states\n * can be imported using the importStates method.\n *\n * @public\n */\n getState: function() {\n let state = {\n url: this._currentURL,\n viewport: undefined,\n visibility: undefined\n };\n if (this.$refs.treeControl)\n state.visibility = this.$refs.treeControl.getState();\n if (this.$module.scene) {\n let zincCameraControls = this.$module.scene.getZincCameraControls();\n state.viewport = zincCameraControls.getCurrentViewport();\n }\n return state;\n },\n /**\n * Function used for importing the states of the scene. This exported states\n * can be imported using the read states method.\n *\n * @public\n */\n setState: function(state) {\n if (state) {\n if (state.url && state.url !== this._currentURL) {\n this.setURLAndState(state.url, {\n viewport: state.viewport,\n visibility: state.visibility\n });\n } else {\n if (state.viewport || state.visibility) {\n if (this.isReady && this.$module.scene) {\n if (state.viewport)\n this.$module.scene\n .getZincCameraControls()\n .setCurrentCameraSettings(state.viewport);\n if (state.visibility)\n this.$refs.treeControl.setState(state.visibility);\n } else {\n this.$module.setFinishDownloadCallback(\n this.setURLFinishCallback({\n viewport: state.viewport,\n visibility: state.visibility\n })\n );\n }\n }\n }\n }\n },\n exportGLTF: function(binary) {\n return this.$module.scene.exportGLTF(binary);\n },\n /**\n * Function used for reading in new scaffold metadata and a custom\n * viewport. This function will ignore the state prop and\n * read in the new url.\n *\n * @public\n */\n setURLAndState: function(newValue, state) {\n if (newValue != this._currentURL) {\n let viewport = state && state.viewport ? state.viewport : undefined;\n let visibility =\n state && state.visibility ? state.visibility : undefined;\n this._currentURL = newValue;\n if (this.$refs.treeControl)\n this.$refs.treeControl.clear();\n this.loading = true;\n this.isReady = false;\n this.$module.setFinishDownloadCallback(\n this.setURLFinishCallback({\n viewport: viewport,\n region: this.region,\n viewURL: this.viewURL,\n visibility: visibility\n })\n );\n this.$module.loadOrgansFromURL(\n newValue,\n undefined,\n undefined,\n \"scene\",\n undefined\n );\n this.$module.scene.displayMarkers = this.displayMarkers;\n this.$module.scene.displayMinimap = this.displayMinimap;\n this.updateMinimapScissor();\n }\n },\n /**\n * Function used for reading in new scaffold metadata. This function will ignore\n * the state prop and read in the new url.\n *\n * @public\n */\n setURL: function(newValue) {\n this.setURLAndState(newValue, undefined);\n },\n /**\n * Callback when drawer is toggled.\n *\n */\n drawerToggled: function(flag) {\n this.drawerOpen = flag;\n this.adjustLayout();\n },\n /**\n * Callback using ResizeObserver.\n */\n adjustLayout: function() {\n let width = this.$refs.scaffoldContainer.clientWidth;\n this.minimisedSlider = width < 812;\n if (this.minimisedSlider) {\n this.sliderPosition = this.drawerOpen ? \"right\" : \"left\";\n } else {\n this.sliderPosition = \"\";\n }\n },\n toggleRendering: function(flag) {\n if (this.$module.zincRenderer) {\n if (flag) {\n this.$module.zincRenderer.animate();\n } else {\n this.$module.zincRenderer.stopAnimate();\n }\n }\n },\n forceResize: function() {\n if (this.$module.zincRenderer) {\n this.$module.zincRenderer.onWindowResize();\n }\n },\n syncControlCallback: function() {\n const payload = this.$module.NDCCameraControl.getPanZoom();\n this.$emit(\"scaffold-navigated\", payload);\n },\n toggleSyncControl: function(flag) {\n this.$module.toggleSyncControl(flag);\n this.$module.setSyncControlCallback(this.syncControlCallback);\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/col\";\n@import \"~element-ui/packages/theme-chalk/src/loading\";\n@import \"~element-ui/packages/theme-chalk/src/option\";\n@import \"~element-ui/packages/theme-chalk/src/popover\";\n@import \"~element-ui/packages/theme-chalk/src/row\";\n@import \"~element-ui/packages/theme-chalk/src/select\";\n@import \"~element-ui/packages/theme-chalk/src/slider\";\n@import \"~element-ui/packages/theme-chalk/src/tabs\";\n@import \"~element-ui/packages/theme-chalk/src/tab-pane\";\n\n.warning-icon {\n position: absolute;\n top: 15px;\n left: 37px;\n text-align: left;\n font-size: 25px;\n color: $warning;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.warning-text {\n font-size: 15px;\n vertical-align: 5px;\n}\n\n::v-deep .warning-popper {\n padding: 9px 10px;\n min-width: 150px;\n font-size: 12px;\n color: #fff;\n background-color: $warning;\n\n &.right-popper {\n .popper__arrow {\n &::after {\n border-right-color: $warning !important;\n }\n }\n }\n}\n\n#organsDisplayArea {\n &:focus {\n outline: none !important;\n border: 0px;\n }\n}\n\n.scaffold-container {\n height: 100%;\n width: 100%;\n position: relative;\n}\n\n.time-slider-container {\n text-align: left;\n position: absolute;\n right: 155px;\n width: calc(100% - 530px);\n bottom: 16px;\n transition: all 1s ease;\n outline: none;\n\n &.minimised {\n width: calc(40%);\n }\n\n &.left {\n right: 155px;\n width: calc(100% - 250px);\n }\n\n &.right {\n right: 8px;\n bottom: 54px;\n }\n}\n\n.slider-display-text {\n height: 20px;\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n padding-left: 8px;\n text-shadow: -1px -1px #fff, 1px -1px #fff, -1px 1px #fff, 1px -1px #fff;\n}\n\n.tab-content {\n display: flex;\n height: 34px;\n padding-top: 8px;\n font-size: 14px;\n}\n\n.tab-content ::v-deep .el-slider__marks-text {\n margin-top: 12px;\n margin-left: 8px;\n font-size: 10px;\n}\n\n.tab-content ::v-deep .el-slider__stop {\n width: 10px;\n height: 10px;\n top: -1px;\n border: solid 1px $app-primary-color;\n}\n\n.animation-data {\n margin-left: 8px;\n line-height: 26px;\n display: flex;\n\n :not(:first-child) {\n margin-left: 8px;\n }\n .purple {\n padding-left: 2px;\n color: $app-primary-color;\n }\n}\n.slider {\n margin-left: 30px;\n width: calc(100% - 88px);\n margin-top: -7px;\n\n ::v-deep .el-slider__runway {\n height: 10px;\n margin: 14px 0;\n }\n\n ::v-deep .el-slider__button-wrapper {\n top: -13px;\n }\n}\n\n.zoomOut {\n padding-left: 8px;\n}\n\n.fitWindow {\n padding-left: 8px;\n}\n\n::v-deep .non-selectable {\n user-select: none;\n}\n\n::v-deep .background-popper {\n padding: 5px 12px;\n background-color: #ffffff;\n border: 1px solid $app-primary-color;\n box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.06);\n height: 72px;\n width: 128px;\n min-width: 128px;\n\n &.el-popper[x-placement^=\"top\"] {\n .popper__arrow {\n border-top-color: $app-primary-color !important;\n &:after {\n border-top-color: #fff !important;\n }\n }\n }\n}\n\n.background-colour {\n bottom: 16px;\n position: absolute;\n transition: all 1s ease;\n\n &.open {\n left: 322px;\n }\n\n &.close {\n left: 24px;\n }\n}\n\n.backgroundText {\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n}\n\n.backgroundChooser {\n display: flex;\n margin-top: 16px;\n}\n\n.backgroundChoice {\n width: 20px;\n height: 20px;\n border: 1px solid rgb(144, 147, 153);\n margin-left: 20px;\n\n &.active {\n border: 2px solid $app-primary-color;\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &.white {\n background-color: white;\n margin-left: 10px;\n }\n\n &.black {\n background-color: black;\n }\n\n &.lightskyblue {\n background-color: lightskyblue;\n }\n}\n\n.icon-button {\n height: 24px !important;\n width: 24px !important;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.bottom-right-control {\n position: absolute;\n right: 16px;\n bottom: 16px;\n}\n\n.video-button {\n margin-left: 8px;\n}\n\n.time-slider-container {\n ::v-deep .el-tabs__header {\n margin: 0px;\n border-bottom: 1px solid rgb(144, 147, 153);\n }\n\n .el-row {\n margin-bottom: 5px;\n }\n\n ::v-deep .el-tabs__content {\n border-left: 1px solid rgb(144, 147, 153);\n border-bottom: 1px solid rgb(144, 147, 153);\n border-right: 1px solid rgb(144, 147, 153);\n border-radius: 0px 0px 4px 4px;\n background-color: white;\n }\n\n ::v-deep .el-tabs--card {\n > .el-tabs__header {\n .el-tabs__nav {\n border: 1px solid rgb(144, 147, 153);\n border-bottom: none;\n border-radius: 4px 4px 0px 0px;\n background-color: white;\n }\n\n .el-tabs__item {\n height: 24px;\n line-height: 24px;\n padding: 0 8px !important;\n border-bottom: 1px solid;\n border-left: 1px solid rgb(144, 147, 153);\n &:first-child {\n border-left: none;\n }\n &.is-active {\n border-bottom: 1px solid white;\n color: rgb(48, 49, 51);\n }\n &:hover {\n color: $app-primary-color;\n }\n }\n }\n }\n}\n\n::v-deep .scaffold-popper {\n padding: 6px 4px;\n font-size: 12px;\n color: rgb(48, 49, 51);\n background-color: #f3ecf6;\n border: 1px solid $app-primary-color;\n white-space: nowrap;\n min-width: unset;\n pointer-events: none;\n\n &.left-popper {\n .popper__arrow {\n border-left-color: $app-primary-color !important;\n &:after {\n border-left-color: #f3ecf6 !important;\n }\n }\n }\n\n &.right-popper {\n .popper__arrow {\n border-right-color: $app-primary-color !important;\n &:after {\n border-right-color: #f3ecf6 !important;\n }\n }\n }\n\n &.el-popper[x-placement^=\"top\"] {\n .popper__arrow {\n border-top-color: $app-primary-color !important;\n &:after {\n border-top-color: #f3ecf6 !important;\n }\n }\n }\n}\n\n::v-deep .el-slider__button {\n border: 2px solid $app-primary-color;\n}\n\n::v-deep .el-slider__bar {\n background-color: $app-primary-color;\n height: 10px;\n}\n\n::v-deep .el-loading-spinner {\n i, .el-loading-text {\n color: $app-primary-color;\n }\n}\n\n::v-deep .popper-zoomout {\n padding-right: 11px;\n left: -21px !important;\n .popper__arrow {\n left: 53px !important;\n }\n}\n\n.select-box {\n width: 57px;\n border-radius: 4px;\n border: 1px solid rgb(144, 147, 153);\n background-color: var(--white);\n font-weight: 500;\n color: rgb(48, 49, 51);\n margin-left: 8px;\n\n ::v-deep .el-input__inner {\n color: $app-primary-color;\n height: 22px;\n padding-left: 8px;\n padding-right: 8px;\n border: none;\n font-family: \"Asap\", sans-serif;\n line-height: 22px;\n }\n\n ::v-deep .el-input,\n ::v-deep .el-input__icon {\n line-height: 22px;\n }\n}\n</style>\n\n<style lang=\"scss\">\n.time-slider-tooltip {\n padding: 6px 4px !important;\n font-family: \"Asap\", sans-serif;\n font-size: 12px !important;\n color: rgb(48, 49, 51) !important;\n background-color: #f3ecf6 !important;\n border: 1px solid $app-primary-color !important;\n white-space: nowrap !important;\n min-width: unset !important;\n}\n\n.scaffold_viewer_dropdown .el-select-dropdown__item {\n white-space: nowrap;\n text-align: left;\n font-family: \"Asap\", sans-serif;\n}\n\n.opacity-box {\n right: 0px;\n bottom:200px;\n position:absolute;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScaffoldVuer.vue?vue&type=template&id=73bfbf2a&scoped=true&\"\nimport script from \"./ScaffoldVuer.vue?vue&type=script&lang=js&\"\nexport * from \"./ScaffoldVuer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ScaffoldVuer.vue?vue&type=style&index=0&id=73bfbf2a&scoped=true&lang=scss&\"\nimport style1 from \"./ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73bfbf2a\",\n null\n \n)\n\nexport default component.exports","module.exports = require(\"core-js/modules/es.string.includes\");","module.exports = require(\"element-ui/lib/theme-chalk/row.css\");","module.exports = require(\"core-js/modules/es.array.find\");"],"sourceRoot":""}
|