@abi-software/scaffoldvuer 0.1.50-beta-0 → 0.1.51
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 +1320 -1568
- package/dist/scaffoldvuer.common.js.map +1 -1
- package/dist/scaffoldvuer.css +1 -1
- package/dist/scaffoldvuer.umd.js +1320 -1568
- 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 +2872 -1645
- package/package.json +5 -6
- package/src/App.vue +79 -4
- package/src/components/OpacityControls.vue +9 -20
- package/src/components/ScaffoldVuer.vue +66 -30
- package/src/components/TraditionalControls.vue +17 -23
- package/src/scripts/BaseModule.js +80 -0
- package/src/scripts/RendererModule.js +263 -0
- package/src/scripts/WebGL.js +94 -0
- package/src/scripts/annotation.js +5 -0
- package/src/scripts/eventNotifier.js +65 -0
- package/src/scripts/graphicsHighlight.js +132 -0
- package/src/scripts/organsRenderer.js +536 -0
- package/vue.config.js +1 -1
|
@@ -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/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/physiomeportal/src/utilities/WebGL.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.for-each\"","webpack://scaffoldvuer/./src/components/OpacityControls.vue?04af","webpack://scaffoldvuer/./node_modules/physiomeportal/src/shaders/varyingTexture.vs","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/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/./node_modules/physiomeportal/src/modules/BaseModule.js","webpack://scaffoldvuer/external \"@abi-software/svg-sprite\"","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/./node_modules/physiomeportal/src/shaders/varyingTexture.fs","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/./node_modules/physiomeportal/src/utilities/eventNotifier.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/checkbox.css\"","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/physiomeportal/src/modules/organsRenderer.js","webpack://scaffoldvuer/external \"lodash/orderBy\"","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/physiomeportal/src/varyingTexCoordsReader.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/col.css\"","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?1429","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/main.css\"","webpack://scaffoldvuer/./node_modules/physiomeportal/src/ui/tooltip.js","webpack://scaffoldvuer/./node_modules/physiomeportal/src/modules/RendererModule.js","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/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/./node_modules/physiomeportal/src/utilities/graphicsHighlight.js","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/external \"element-ui/lib/theme-chalk/tab-pane.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/base.css\"","webpack://scaffoldvuer/external \"@soda/get-current-script\"","webpack://scaffoldvuer/./node_modules/physiomeportal/src/utilities/annotation.js","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/external \"broadcast-channel\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?403a","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?0907","webpack://scaffoldvuer/./src/components/OpacityControls.vue?3aab","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?452f","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","WEBGL","isWebGLAvailable","canvas","document","createElement","window","WebGLRenderingContext","getContext","e","isWebGL2Available","WebGL2RenderingContext","getWebGLErrorMessage","getErrorMessage","getWebGL2ErrorMessage","version","names","1","2","contexts","message","element","id","style","fontFamily","fontSize","fontWeight","textAlign","background","color","padding","width","margin","replace","innerHTML","MODULE_CHANGE","ALL","DESTROYED","NAME_CHANGED","SETTINGS_CHANGED","BaseModule","typeName","instanceName","onChangedCallbacks","messageFunction","undefined","eventNotifiers","broadcastChannels","setName","callbackArray","slice","length","addBroadcastChannels","ChannelName","newChannel","default","removeBroadcastChannels","close","settingsChanged","exportSettings","settings","dialog","importSettings","publishChanges","annotations","eventType","publish","EVENT_TYPE","SELECTED","annotation","data","action","resource","sender","postMessage","setMessageFunction","functionIn","displayMessage","getName","destroy","addChangedCallback","callback","includes","push","removeChangedCallback","index","indexOf","splice","addNotifier","eventNotifier","HIGHLIGHTED","SelectionEvent","eventTypeIn","identifiersIn","identifiers","Subscription","subscriberIn","callbackIn","targetedID","subscriber","targetEventType","_this","getEventType","notify","source","ids","event","EventNotifier","subscriptions","subscribe","callbackFunction","subscription","unsubscribe","THREE","OrgansSceneData","currentName","currentSystem","currentPart","currentSpecies","metaURL","viewURL","geometries","lines","glyphsets","pointsets","currentTime","timeVarying","nerveMap","nerveMapIsActive","OrgansViewer","ModelsLoaderIn","pickerScene","nerveMapScene","sceneData","timeChangedCallbacks","Array","sceneChangedCallbacks","organPartAddedCallbacks","finishDownloadCallback","layoutUpdateRequiredCallbacks","modelsLoader","getSceneData","updateTime","duration","scene","getDuration","actualTime","setMorphsTime","additionalReader","setTime","preRenderTimeUpdate","zincRenderer","getCurrentTime","postRenderSelectedCoordinatesUpdate","selectedCenter","vector","Vector3","copy","coord","vectorToScreenXY","selectedScreenCoordinates","x","y","preRenderUpdateCallback","postRenderUpdateCallback","addTimeChangedCallback","setTexturePos","setSliderPos","addLayoutUpdateRequiredCallback","addSceneChangedCallback","addOrganPartAddedCallback","setFinishDownloadCallback","unsetFinishDownloadCallback","getNamedObjectsToScreenCoordinates","camera","setFromMatrixPosition","obj","matrixWorld","widthHalf","heightHalf","height","project","getIdObjectFromIntersect","intersected","intersectedObject","userData","isMarker","parent","morph","getAnnotationsFromObjects","group","_pickingCallback","intersects","window_x","window_y","getIntersectedObject","idObject","toolTip","setText","show","isGlyph","setSelectedByObjects","setSelectedByZincObject","getGlyphset","hide","_hoverCallback","displayArea","cursor","setHighlightedByObjects","changeOrganPartsVisibilityForScene","type","findGeometriesWithGroupName","setVisibility","findGlyphsetsWithGroupName","findPointsetsWithGroupName","findLinesWithGroupName","changeGeometriesVisibility","changeGlyphsetsVisibility","changeLinesVisibility","changePointsetsVisibility","changeOrganPartsVisibility","typeIn","changeOrganPartsVisibilityCallback","_addNerveMapGeometryCallback","GroupName","geometry","groupName","imageCombiner","material","map","Texture","getCombinedImage","needsUpdate","setupNerveMapPrimaryRenderer","sceneName","getSceneByName","downloadPath","getOrgansDirectoryPrefix","threed","meta","createScene","loadMetadataURL","view","loadViewURL","getBodyDirectoryPrefix","ambient","intensity","directionalLight","zincCameraControl","getZincCameraControls","setMouseButtonAction","urlsArray","loadURLsIntoBufferGeometry","setCurrentScene","graphicsHighlight","reset","activateAdditionalNerveMapRenderer","changeNerveMapVisibility","changeBackgroundColour","backgroundColourString","colour","Color","internalRenderer","getThreeJSRenderer","setClearColor","addOrganPartToSceneData","zincObject","isGeometry","isGlyphset","isLines","isPointset","addOrganPart","systemName","partName","useDefautColour","isTimeVarying","setGeometryColour","species","system","part","_addOrganPartCallback","downloadCompletedCallback","updateFieldvisibility","dataFields","geometryName","PartName","partDetails","getOrganDetails","SystemName","getAvailableSpecies","availableSpecies","keysArray","keys","organsFileMap","setSceneData","speciesName","organsDetails","loadOrgansFromURL","url","organScene","clearAll","enableRaycaster","alignCameraWithSelectedObject","transitionTime","objects","getSelected","alignObjectToCameraView","loadOrgans","initialise","initialiseRenderer","addPreRenderCallbackFunction","addPostRenderCallbackFunction","VaryingTexCoordsReader","sceneIn","finishCallbackFunction","bufferGeometry","zincGeometry","numberOfInputs","completedInputs","textureLoader","TextureLoader","texture","load","wrapS","RepeatWrapping","wrapT","format","RGBFormat","shadersUniforms","UniformsUtils","merge","diffuse","emissive","specular","shininess","opacity","ambientLightColor","directionalLightColor","directionalLightDirection","offsetRepeat","Vector4","time","slide_pos","myTex","addGeometryIntoBufferGeometry","order","arrayLength","faces","positions","Float32Array","normals","texCoords","BufferGeometry","forEach","face","vertices","a","z","b","vertexNormals","faceVertexUvs","addAttribute","BufferAttribute","positionStr","normalStr","uvsStr","meshReady","bufferGeometryIn","shaderText","shaderMaterial","RawShaderMaterial","vertexShader","fragmentShader","uniforms","side","DoubleSide","depthTest","addZincGeometry","myLoader","materials","pos","setTexture","textureIn","urls","finishCallback","progressCallback","errorCallback","loader","JSONLoader","ToolTip","container","tooltipcontainerElement","tipElement","tiptextElement","template","left","top","visibility","text","setupToolTipContainer","querySelector","appendChild","createRenderer","localContainer","localRenderer","Zinc","Renderer","defaultMaterialColor","initialiseVisualisation","playAnimation","warning","RendererModule","rendererContainer","isZincObject","glyphset","propagateChanges","changed","setHighlighted","setHighlightedByZincObject","setupLiveCoordinates","zincObjects","boundingBox","getBoundingBoxOfZincObjects","newSelectedCenter","getCenter","objectsToZincObjects","setSelected","addGlyphToArray","glyph","getMesh","findObjectsByGroupName","forEachGlyph","setHighlightedByGroupName","setSelectedByGroupName","resetView","viewAll","flag","setPlayRate","getPlayRate","displayAreaIn","returnedValue","animate","dispose","GraphicsHighlight","currentHighlightedObjects","currentSelectedObjects","highlightColour","selectColour","originalColour","isDifferent","array1","array2","matched","j","getUnmatchingObjects","objectsArray1","objectsArray2","unmatchingObjects","previousHighlightedObjects","resetHighlighted","array","fullList","getFullListOfObjects","setHex","previousHSelectedObjects","resetSelected","depthFunc","LessEqualDepth","isAnnotation","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","staticRenderFns","toggleDrawer","displayString","watch","_zincobject","setAlpha","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","_arrayLikeToArray","arr","len","arr2","_arrayWithoutHoles","isArray","arrayLikeToArray","_iterableToArray","iter","iterator","from","_unsupportedIterableToArray","minLen","toString","constructor","test","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","props","Boolean","sortedPrimitiveGroups","immediate","handler","created","tmpArray","uniq","pointset","orderBy","organsAdded","destroyed","changeActiveByName","targetObject","getVisibility","$emit","removeHover","changeHoverByName","removeActive","clear","getFirstZincObjectWithGroupName","graphic","hex","setColourHex","hexString","preventDefault","unnamed","checkedCount","getState","setState","state","components","OpacityControls","SvgIcon","SvgSpriteColor","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","box","viewAllWithBoundingBox","freeSpin","enableAutoTumble","autoTumble","PI","setTimeout","controls","getCoordinatesOfSelected","getObjectsScreenXY","getDynamicSelectedCoordinates","normalizedTime","opacityControl","tooltipWait","tooltipNumber","clearTimeout","updateMinimapScissor","minimapScissor","updateRequired","updateSettingsfromScene","getMetadataTag","setURLFinishCallback","viewport","traditionalControl","zincCameraControls","getCurrentViewport","setURLAndState","newValue","setURL","stopAnimate","forceResize","onWindowResize"],"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\");","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\");","/**\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","module.exports = require(\"core-js/modules/es.array.for-each\");","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=4fb32d85&scoped=true&lang=scss&\"","module.exports = \"precision highp float;\\n\\nuniform mat4 modelViewMatrix;\\nuniform mat4 projectionMatrix;\\n\\nattribute vec3 position;\\nattribute vec3 normal;\\nattribute vec3 color;\\nattribute vec2 uv;\\nattribute vec3 position_1;\\nattribute vec3 position_2;\\nattribute vec2 uv_1;\\nattribute vec2 uv_2;\\n\\nuniform float time;\\nuniform float slide_pos;\\nvarying vec2 vUv;\\n\\nvoid main() {\\n\\tvUv = uv;\\n\\t\\n\\tvec3 transformed_xi1 = position * vec3(1.0 - time) + position_1 * vec3(time);\\n\\t\\n\\tvec3 xi0_time_1 = vec3(position_1.x, position_1.y, 0.0);\\n\\tvec3 transformed_xi0 = position_2 * vec3(1.0 - time) + xi0_time_1 * vec3(time);\\n\\n\\tvec3 transformed = vec3(transformed_xi0) * vec3(1.0 - slide_pos) + vec3(transformed_xi1) * vec3(slide_pos);\\n\\t\\n\\tvec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\n}\\n\"","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\");","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\");","var MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };\n\nvar BaseModule = function() {\n this.typeName = \"Base Module\";\n this.instanceName = \"default\";\n this.onChangedCallbacks = [];\n this.messageFunction = undefined;\n /** Notifier handle for informing other modules of any changes **/\n this.eventNotifiers = [];\n this.broadcastChannels = {};\n}\n\nBaseModule.prototype.setName = function(name) {\n if (name && this.instanceName !== name) {\n this.instanceName = name;\n var callbackArray = this.onChangedCallbacks.slice();\n for (var i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );\n }\n }\n}\n\nBaseModule.prototype.addBroadcastChannels = function(ChannelName) {\n\tif (ChannelName in this.broadcastChannels)\n\t\treturn false;\n\tvar newChannel = new (require('broadcast-channel')).default(ChannelName);\n\tthis.broadcastChannels[ChannelName] = newChannel;\n\treturn true;\n}\n\nBaseModule.prototype.removeBroadcastChannels = function(ChannelName) {\n\tif (ChannelName in this.broadcastChannels) {\n\t\tthis.broadcastChannels[ChannelName].close();\n\t\tdelete broadcastChannels[ChannelName];\n\t}\n\t\n}\n\nBaseModule.prototype.settingsChanged = function() {\n\tvar callbackArray = this.onChangedCallbacks.slice();\n for (var i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );\n }\n}\n\nBaseModule.prototype.exportSettings = function() {\n\t var settings = {};\n\t settings.dialog = this.typeName;\n\t settings.name = this.instanceName;\n\t 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 (var i = 0; i < this.eventNotifiers.length; i++) {\n this.eventNotifiers[i].publish(this, eventType, annotations);\n }\n if (eventType === require(\"../utilities/eventNotifier\").EVENT_TYPE.SELECTED) {\n\t if (annotations && annotations[0]) {\n\t\t var annotation = annotations[0];\t \n\t\t var data = {action: \"query-data\", resource: annotation.data.id, data: annotation.data, sender: this.instanceName};\n\t\t for (var key in this.broadcastChannels) {\n\t\t\t this.broadcastChannels[key].postMessage(data);\n\t\t }\n\t }\n }\n}\n\nBaseModule.prototype.setMessageFunction = function(functionIn) {\n this.messageFunction = functionIn;\n}\n\nBaseModule.prototype.displayMessage = function(message) {\n if (this.messageFunction)\n\t this.messageFunction(message);\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 var callbackArray = this.onChangedCallbacks.slice();\n for (var 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 var 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(\"@abi-software/svg-sprite\");","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 = \"precision highp float;\\nuniform sampler2D myTex;\\nvarying vec2 vUv;\\n\\nvoid main() {\\n\\tgl_FragColor = texture2D( myTex, vUv );\\n\\n}\\n\"","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\");","var EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };\n\nvar SelectionEvent = function(eventTypeIn, identifiersIn) {\n this.eventType = eventTypeIn;\n this.identifiers = identifiersIn;\n}\n\nvar returnFullID = function(sourceId) {\n //return full annotations with all different name\n}\n \nvar Subscription = function(subscriberIn, callbackIn, eventType) {\n this.targetedID = [];\n var subscriber = subscriberIn;\n if (eventType === undefined)\n this.targetEventType = EVENT_TYPE.ALL;\n else\n this.targetEventType = eventType;\n var callback = callbackIn;\n \n var _this = this;\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 var event = new SelectionEvent(eventType, ids);\n callback(event);\n }\n }\n}\n\nexports.EventNotifier = function() {\n var events = [];\n var subscriptions = [];\n var _this = this;\n \n this.publish = function(source, eventType, id) {\n for (var 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 var 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 (var 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(\"element-ui/lib/theme-chalk/checkbox.css\");","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 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.\nvar 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 // Current model's associate data, data fields, external link, nerve map\n\t// informations,\n this.nerveMap = undefined;\n this.nerveMapIsActive = 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 */\nvar OrgansViewer = function(ModelsLoaderIn) {\n (require('./RendererModule').RendererModule).call(this);\n\tvar pickerScene = undefined;\n\tvar nerveMapScene = undefined;\n\tthis.sceneData = new OrgansSceneData();\n\tvar timeChangedCallbacks = new Array();\n\tvar sceneChangedCallbacks = new Array();\n var organPartAddedCallbacks = new Array();\n var finishDownloadCallback = undefined;\n\tvar layoutUpdateRequiredCallbacks = new Array();\n\tvar modelsLoader = ModelsLoaderIn;\n\tvar _this = this;\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 var 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} else if (nerveMapScene) {\n\t\t\t\tnerveMapScene.setMorphsTime(actualTime);\n\t\t\t\tif (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)\n\t\t\t\t\t_this.sceneData.nerveMap.additionalReader.setTime(value / 100.0);\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\tvar preRenderTimeUpdate = function() {\n let duration = 3000;\n if (_this.scene)\n duration = _this.scene.getDuration();\n\t\tvar currentTime = _this.zincRenderer.getCurrentTime();\n\t\tfor (var 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 var postRenderSelectedCoordinatesUpdate = function() {\n if (_this.selectedCenter) {\n const vector = new THREE.Vector3();\n vector.copy(_this.selectedCenter);\n var coord = _this.scene.vectorToScreenXY(vector);\n _this.selectedScreenCoordinates.x = coord.x;\n _this.selectedScreenCoordinates.y = coord.y;\n }\n }\n\t\n\tvar preRenderUpdateCallback = function() {\n\t\treturn function() {\n preRenderTimeUpdate();\n\t\t}\n }\n \n var 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\t\n\t this.addLayoutUpdateRequiredCallback = function(callback) {\n\t if (typeof(callback === \"function\")) {\n\t layoutUpdateRequiredCallbacks.push(callback);\n\t }\n\t }\n\t\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 var vector = new THREE.Vector3();\n vector.setFromMatrixPosition( obj.matrixWorld );\n var widthHalf = (width/2);\n var 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 var getIdObjectFromIntersect = function(intersected) {\n var id = undefined;\n var 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 var 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\tvar _pickingCallback = function() {\n\t\treturn function(intersects, window_x, window_y) {\n var intersected = _this.getIntersectedObject(intersects);\n var idObject = getIdObjectFromIntersect(intersected);\n if (idObject.id) {\n if (_this.toolTip !== undefined) {\n _this.toolTip.setText(idObject.id);\n _this.toolTip.show(window_x, window_y);\n }\n _this.displayMessage(idObject.object.name + \" selected.\");\n\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\tif (_this.toolTip !== undefined) {\n\t\t\t\t\t_this.toolTip.hide();\n\t\t\t\t}\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. It will\n\t * show objecty id/name as _this.toolTip text.\n\t * \n\t * @callback\n\t */\n\tvar _hoverCallback = function() {\n\t\treturn function(intersects, window_x, window_y) {\n var intersected = _this.getIntersectedObject(intersects);\n var idObject = getIdObjectFromIntersect(intersected);\n if (idObject.id) {\n _this.displayArea.style.cursor = \"pointer\";\n if (_this.toolTip !== undefined) {\n _this.toolTip.setText(idObject.id);\n _this.toolTip.show(window_x, window_y);\n }\n _this.setHighlightedByObjects([idObject.object], true);\n return;\n }\n else {\n if (_this.toolTip !== undefined) {\n\t\t\t\t\t_this.toolTip.hide();\n\t\t\t\t}\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\tvar changeOrganPartsVisibilityForScene = function(scene, name, value, type) {\n\t\tif (type == \"all\" || type == \"geometries\") {\n\t\t\tvar geometries = scene.findGeometriesWithGroupName(name);\n\t\t\tfor (var 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\tvar glyphsets = scene.findGlyphsetsWithGroupName(name);\n\t\t\tfor (var 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\tvar pointsets = scene.findPointsetsWithGroupName(name);\n\t\t\tfor (var 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\tvar lines = scene.findLinesWithGroupName(name);\n\t\t\tfor (var 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\tvar 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\n\t/**\n\t * Change some of the ZincGeometry property for never map geometry\n\t * \n\t * @callback\n\t */\n\tvar _addNerveMapGeometryCallback = function(GroupName) {\n\t\treturn function(geometry) {\n\t\t\tgeometry.groupName = GroupName;\n\t\t\tif (imageCombiner && geometry.morph && geometry.morph.material.map) {\n\t\t\t\tgeometry.morph.material.map = new THREE.Texture(imageCombiner.getCombinedImage());\n\t\t\t\tgeometry.morph.material.map.needsUpdate = true;\n\t\t\t\tgeometry.morph.material.needsUpdate = true;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Read in the nerve map models onto the primary renderer when nerve map has\n\t * been toggled on.\n\t */\n\tvar setupNerveMapPrimaryRenderer = function() {\n\t\tvar sceneName = _this.sceneData.currentName + \"_nervemap\";\n\t\tnerveMapScene = _this.zincRenderer.getSceneByName(sceneName);\n\t\tif (nerveMapScene == undefined) {\n\t\t\tvar downloadPath = modelsLoader.getOrgansDirectoryPrefix() + \"/\" + _this.sceneData.nerveMap.threed.meta;\n\t\t\tnerveMapScene = _this.zincRenderer.createScene(sceneName);\n\t\t\tnerveMapScene.loadMetadataURL(downloadPath, _addNerveMapGeometryCallback(\"threed\"));\n\t\t\tif (_this.sceneData.nerveMap.threed.view !== undefined)\n\t\t\t\tnerveMapScene.loadViewURL(modelsLoader.getOrgansDirectoryPrefix() + \"/\" + _this.sceneData.nerveMap.threed.view);\n\t\t\telse {\n\t\t\t\tnerveMapScene.loadViewURL(modelsLoader.getBodyDirectoryPrefix() + \"/body_view.json\");\n\t\t\t}\n\t\t\tnerveMapScene.ambient.intensity = 8.0;\n\t\t\tnerveMapScene.directionalLight.intensity = 0;\n\t\t\tvar zincCameraControl = nerveMapScene.getZincCameraControls();\n\t\t\tzincCameraControl.setMouseButtonAction(\"AUXILIARY\", \"ZOOM\");\n\t\t\tzincCameraControl.setMouseButtonAction(\"SECONDARY\", \"PAN\");\n\t\t\t_this.sceneData.nerveMap.additionalReader = new (require(\"../varyingTexCoordsReader\").VaryingTexCoordsReader)(nerveMapScene);\n\t\t\tvar urlsArray = [ modelsLoader.getOrgansDirectoryPrefix() + \"/digestive/stomach/nerve_map/3d/xi1_time_0.json\",\n\t\t\t modelsLoader.getOrgansDirectoryPrefix() + \"/digestive/stomach/nerve_map/3d/xi1_time_1.json\",\n\t\t\t modelsLoader.getOrgansDirectoryPrefix() + \"/digestive/stomach/nerve_map/3d/xi0_time_0.json\"];\n\t\t\t_this.sceneData.nerveMap.additionalReader.loadURLsIntoBufferGeometry(urlsArray);\n\t\t}\n\t\t_this.zincRenderer.setCurrentScene(nerveMapScene);\n\t\t_this.graphicsHighlight.reset();\n\t}\n\t\n\tvar activateAdditionalNerveMapRenderer = function() {\n\t for (var i = 0; i < layoutUpdateRequiredCallbacks.length;i++) {\n\t layoutUpdateRequiredCallbacks[i](false, true);\n\t }\n\t}\n\t\n\t/**\n\t * Nerve map has been toggled on/off, change organs renderer layput.\n\t */\n\tthis.changeNerveMapVisibility = function() {\n\t\t_this.sceneData.nerveMapIsActive = !_this.sceneData.nerveMapIsActive;\n\t\tif (_this.sceneData.nerveMapIsActive)\n\t\t\tsetupNerveMapPrimaryRenderer();\n\t\telse {\n\t\t\t_this.zincRenderer.setCurrentScene(_this.scene);\n\t\t\t_this.graphicsHighlight.reset();\n\t\t}\n\t\tactivateAdditionalNerveMapRenderer();\n\t}\n\t\n\tthis.changeBackgroundColour = function(backgroundColourString) {\n\t\tvar colour = new THREE.Color(backgroundColourString);\n\t\tif (_this.zincRenderer) {\n\t\t\tvar internalRenderer = _this.zincRenderer.getThreeJSRenderer();\n\t\t\tinternalRenderer.setClearColor( colour, 1 );\n\t\t}\n\t}\n\n\tvar 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\tvar addOrganPart = function(systemName, partName, useDefautColour, zincObject) {\n for (var 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\tif (zincObject.groupName) {\n\t\t\t_this.displayMessage(zincObject.groupName + \" loaded.\");\n\t\t} else {\n\t\t\t_this.displayMessage(\"Resource loaded.\");\n\t\t}\n\t\tvar annotation = new (require('../utilities/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 var _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 var downloadCompletedCallback = function() {\n\t\t return function() {\n\t\t\t _this.settingsChanged();\n\t\t\t _this.sceneData.timeVarying = _this.scene.isTimeVarying();\n _this.displayMessage(\"All resources loaded.\");\n if (finishDownloadCallback)\n finishDownloadCallback();\n\t\t }\n\t }\n\t \n\t var singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {\n\t\t return function(geometry) {\n\t\t \taddOrganPart(systemName, partName, useDefautColour, geometry);\n\t\t \t_this.settingsChanged();\n\t\t }\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 ( var i = 0; i < dataFields.length; i ++ ) {\n if (value != i) {\n var geometryName = dataFields[i].PartName;\n _this.changeOrganPartsVisibility(geometryName, false);\n }\n }\n if (value > -1) {\n var 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 var 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 var availableSpecies = new Array();\n\t availableSpecies.push(\"none\");\n\t var keysArray = Object.keys(organsFileMap);\n\t for (index in keysArray) {\n\t var 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 var 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 var 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 var name = _this.sceneData.currentName;\n\t\t\t var 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 (var 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\t\t\t _this.sceneData.metaURL = url;\n\t\t\t _this.displayMessage(\"Downloading...\");\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 var 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 var 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 var 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 var 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(\"lodash/orderBy\");","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\");","var THREE = require('zincjs').THREE;\n\nexports.VaryingTexCoordsReader = function(sceneIn) {\n\t\n\tvar _this = this;\n\tvar finishCallbackFunction = undefined;\n\tvar bufferGeometry = undefined;\n\tvar zincGeometry = undefined;\n\tvar numberOfInputs = 0;\n\tvar completedInputs = 0;\n\tvar scene = sceneIn;\n\tvar currentMap = undefined;\n\tvar textureLoader = new THREE.TextureLoader();\n\tvar texture = new textureLoader.load( 'models/organsViewerModels/digestive/stomach/nerve_map/texture/ratstomach_innervation_square.png' );\n\ttexture.wrapS = THREE.RepeatWrapping;\n\ttexture.wrapT = THREE.RepeatWrapping;\n\ttexture.format = THREE.RGBFormat;\n\t\n\tvar shadersUniforms = THREE.UniformsUtils.merge( [\n\t {\n\t\tambient : { type: \"c\", value: new THREE.Color( 0x000000 ) },\n\t\tdiffuse : { type: \"c\", value: new THREE.Color( 0xffffff ) },\n\t\temissive : { type: \"c\", value: new THREE.Color( 0xbbbbbb ) },\n\t\tspecular : { type: \"c\", value: new THREE.Color( 0x111111 ) },\n\t\tshininess: { type: \"f\", value: 100 },\n\t\topacity: { type: \"f\", value: 1.0 },\n\t\tambientLightColor: { type: \"c\", value: new THREE.Color( 0xF0F0F0 ) },\n\t\tdirectionalLightColor: { type: \"c\", value: new THREE.Color( 0x555555) },\n\t\tdirectionalLightDirection: { type: \"v3\", value: new THREE.Vector3() },\n\t\toffsetRepeat: { value: new THREE.Vector4( 0, 0, 1, 1 ) },\n\t\ttime: { type: \"f\", value: 0.0 },\n\t\tslide_pos: { type: \"f\", value: 1.0 },\n\t\tmyTex: {type: 't', value: null}\n\t} ] );\n\n\tvar addGeometryIntoBufferGeometry = function(order, geometry)\n\t{\n\t\tvar arrayLength = geometry.faces.length * 3 * 3;\n\t\tvar positions = new Float32Array( arrayLength );\n\t\tvar colors = new Float32Array( arrayLength );\n\t\tvar normals = new Float32Array( arrayLength );\n\t\tvar texCoords = new Float32Array( geometry.faces.length * 3 * 2 );\n\t\tif (bufferGeometry === undefined)\n\t\t\tbufferGeometry = new THREE.BufferGeometry();\n\t\t\n\t\tgeometry.faces.forEach( function ( face, index ) {\n\t\t\tpositions[ index * 9 + 0 ] = geometry.vertices[ face.a ].x;\n\t\t\tpositions[ index * 9 + 1 ] = geometry.vertices[ face.a ].y;\n\t\t\tpositions[ index * 9 + 2 ] = geometry.vertices[ face.a ].z;\n\t\t\tpositions[ index * 9 + 3 ] = geometry.vertices[ face.b ].x;\n\t\t\tpositions[ index * 9 + 4 ] = geometry.vertices[ face.b ].y;\n\t\t\tpositions[ index * 9 + 5 ] = geometry.vertices[ face.b ].z;\n\t\t\tpositions[ index * 9 + 6 ] = geometry.vertices[ face.c ].x;\n\t\t\tpositions[ index * 9 + 7 ] = geometry.vertices[ face.c ].y;\n\t\t\tpositions[ index * 9 + 8 ] = geometry.vertices[ face.c ].z;\n\t\t\n\t\t\tnormals[ index * 9 + 0 ] = face.vertexNormals[0].x;\n\t\t\tnormals[ index * 9 + 1 ] = face.vertexNormals[0].y;\n\t\t\tnormals[ index * 9 + 2 ] = face.vertexNormals[0].z;\n\t\t\tnormals[ index * 9 + 3 ] = face.vertexNormals[1].x;\n\t\t\tnormals[ index * 9 + 4 ] = face.vertexNormals[1].y;\n\t\t\tnormals[ index * 9 + 5 ] = face.vertexNormals[1].z;\n\t\t\tnormals[ index * 9 + 6 ] = face.vertexNormals[2].x;\n\t\t\tnormals[ index * 9 + 7 ] = face.vertexNormals[2].y;\n\t\t\tnormals[ index * 9 + 8 ] = face.vertexNormals[2].z;\n\t\t\t\n\t\t\ttexCoords[ index * 6 + 0] = geometry.faceVertexUvs[ 0 ][index][0].x;\n\t\t\ttexCoords[ index * 6 + 1] = geometry.faceVertexUvs[ 0 ][index][0].y;\n\t\t\ttexCoords[ index * 6 + 2] = geometry.faceVertexUvs[ 0 ][index][1].x;\n\t\t\ttexCoords[ index * 6 + 3] = geometry.faceVertexUvs[ 0 ][index][1].y;\n\t\t\ttexCoords[ index * 6 + 4] = geometry.faceVertexUvs[ 0 ][index][2].x;\n\t\t\ttexCoords[ index * 6 + 5] = geometry.faceVertexUvs[ 0 ][index][2].y;\n\t\t} );\n\t\t\n\t\t\n\t\tif (order == 0) {\n\t\t\tbufferGeometry.addAttribute( \"position\", new THREE.BufferAttribute( positions, 3) );\n\t\t\tbufferGeometry.addAttribute( \"normal\", new THREE.BufferAttribute( normals, 3 ) );\n\t\t\tbufferGeometry.addAttribute( \"uv\", new THREE.BufferAttribute( texCoords, 2 ) );\n\t\t} else {\n\t\t\tvar positionStr = \"position_\" + order;\n\t\t\tvar normalStr = \"normal_\" + order;\n\t\t\tvar uvsStr = \"uv_\" + order;\n\t\t\tbufferGeometry.addAttribute( positionStr, new THREE.BufferAttribute( positions, 3) );\n\t\t\tbufferGeometry.addAttribute( normalStr, new THREE.BufferAttribute( normals, 3 ) );\n\t\t\tbufferGeometry.addAttribute( uvsStr, new THREE.BufferAttribute( texCoords, 2 ) );\n\t\t}\n\n\t}\n\t\n\tvar meshReady = function(bufferGeometryIn, shaderText, material){\n\t\tvar shaderMaterial = new THREE.RawShaderMaterial( {\n\t\t\tvertexShader: shaderText[0],\n\t\t\tfragmentShader: shaderText[1],\n\t\t\tuniforms: shadersUniforms\n\t\t} );\n\t\tshaderMaterial.uniforms.myTex.value = texture;\n\t\tshaderMaterial.side = THREE.DoubleSide;\n\t\tshaderMaterial.depthTest = true;\n\t\tshaderMaterial.needsUpdate = true;\n\t\tshaderMaterial.map = texture;\n\t\tshaderMaterial.uniforms.myTex.value.needsUpdate = true;\n\t\tshaderMaterial.opacity = 1.0;\n\t\tzincGeometry = scene.addZincGeometry(bufferGeometryIn, 30001, undefined, undefined, false, false, true, undefined, shaderMaterial);\n\t\tzincGeometry.groupName = \"varyingTexture\";\n\t}\n\t\n\tvar myLoader = function(order, shaderText) {\n\t return function(geometry, materials){\n\t \tvar material = 0;\n\t \taddGeometryIntoBufferGeometry(order, geometry);\n\t \tcompletedInputs++;\n\t \tif (completedInputs == numberOfInputs) {\n\t \t\tmeshReady(bufferGeometry, shaderText, material);\n\t \t\tif (finishCallbackFunction != undefined && (typeof finishCallbackFunction == 'function'))\n\t \t\t\tfinishCallbackFunction(bufferGeometry);\n\t \t}\n\t }\n\t}\n\t\n\tthis.setSliderPos = function(pos) {\n\t\tif (zincGeometry)\n\t\t\tzincGeometry.morph.material.uniforms.slide_pos.value = pos;\n\t}\n\t\n\tthis.setTime = function(time) {\n\t\tif (zincGeometry) {\n\t\t\tzincGeometry.morph.material.uniforms.time.value = time;\n\t\t}\n\t}\n\t\n\tthis.setTexture = function(textureIn) {\n\t\tif (zincGeometry) {\n\t\t\tzincGeometry.morph.material.uniforms.myTex.value = textureIn;\n\t\t\tzincGeometry.morph.material.uniforms.myTex.value.needsUpdate = true;\n\t\t}\n\t}\n\t\n\tthis.loadURLsIntoBufferGeometry = function(urls, finishCallback, progressCallback, errorCallback) {\n\t\tvar loader = new THREE.JSONLoader( true );\n numberOfInputs = urls.length;\n finishCallbackFunction = finishCallback;\n var shaderText = [\n require('./shaders/varyingTexture.vs'),\n require('./shaders/varyingTexture.fs')\n ];\n for (var i = 0; i < numberOfInputs; i++)\n loader.load( urls[i], myLoader(i, shaderText), progressCallback, errorCallback);\n\t}\n}\n","module.exports = require(\"element-ui/lib/theme-chalk/col.css\");","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=318fd7c8&scoped=true&lang=scss&\"","module.exports = require(\"element-ui/lib/theme-chalk/main.css\");","require(\"../styles/tooltip.css\");\n\nexports.ToolTip = function(container) {\n var tooltipcontainerElement = undefined;\n var tipElement = undefined;\n var tiptextElement = undefined;\n var template = '<div class=\"mptooltip\" id=\"tip\"><span class=\"mptooltiptext\" id=\"tiptext\"> Tooltip text</span></div>';\n var _this = this;\n \n /**\n * Show tool tip on the specified windows coordinates.\n * @param {Number} x - Style sheet with the same title.\n * @param {Number} y - selector string to match.\n */\n this.show = function(x, y) {\n \ttooltipcontainerElement.style.left = x +\"px\";\n \ttooltipcontainerElement.style.top = (y - 20) + \"px\";\n \ttipElement.style.visibility = \"visible\";\n \ttipElement.style.opacity = 1;\n \ttiptextElement.style.visibility = \"visible\";\n \ttiptextElement.style.opacity = 1;\n }\n \n this.hide = function() {\n \ttipElement.style.visibility = \"hidden\";\n \ttipElement.style.opacity = 0;\n \ttiptextElement.style.visibility = \"hidden\";\n \ttiptextElement.style.opacity = 0;\n }\n \n /**\n * Change the tooltip text.\n * @param {String} text - Text to update the tooltip to.\n */\n this.setText = function(text) {\n \ttiptextElement.innerHTML = text;\n }\n\n var setupToolTipContainer = function() {\n tooltipcontainerElement = document.createElement(\"div\");\n tooltipcontainerElement.id = \"tooltipcontainer\";\n tooltipcontainerElement.innerHTML = template;\n /*\n for (i = 0; i < childNodes.length; i++) {\n parent[0].appendChild(childNodes[i]);\n }\n */\n tipElement = tooltipcontainerElement.querySelector(\"#tip\");\n tiptextElement = tooltipcontainerElement.querySelector(\"#tiptext\");\n container.appendChild(tooltipcontainerElement);\n \n }\n \n setupToolTipContainer();\n}\n\n","var 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 */\nvar createRenderer = function () {\n var WEBGL = require('../utilities/WebGL').WEBGL;\n var localContainer = document.createElement( 'div' );\n var localRenderer = undefined;;\n localContainer.style.height = \"100%\";\n if (WEBGL.isWebGLAvailable()) {\n var Zinc = require('zincjs');\n var localRenderer = new Zinc.Renderer(localContainer, window);\n Zinc.defaultMaterialColor = 0xFFFF9C;\n localRenderer.initialiseVisualisation();\n localRenderer.playAnimation = false;\n } else {\n var warning = WEBGL.getWebGLErrorMessage();\n localContainer.appendChild(warning);\n }\n return {\"renderer\":localRenderer, \"container\":localContainer};\n}\n\nvar RendererModule = function() {\n (require('./BaseModule').BaseModule).call(this);\n this.scene = undefined;\n this.toolTip = undefined;\n this.rendererContainer = undefined;\n this.displayArea = undefined;\n this.graphicsHighlight = new (require(\"../utilities/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 (var 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 var annotations = [];\n for (var i = 0; i < objects.length; i++) {\n \tvar zincObject = objects[i].userData;\n var annotation = undefined;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n var 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 annotations[i] = annotation;\n }\n\treturn annotations;\n}\n\nRendererModule.prototype.setHighlightedByObjects = function(objects, propagateChanges) {\n var changed = this.graphicsHighlight.setHighlighted(objects);\n if (changed && propagateChanges) {\n var eventType = require(\"../utilities/eventNotifier\").EVENT_TYPE.HIGHLIGHTED;\n var 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 var 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 var zincObjects = [];\n for (var i = 0; i < objects.length; i++) {\n var zincObject = objects[i].userData;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n var 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 var changed = this.graphicsHighlight.setSelected(objects);\n if (changed) {\n var zincObjects = this.objectsToZincObjects(objects);\n this.setupLiveCoordinates(zincObjects);\n if (propagateChanges) {\n var eventType = require(\"../utilities/eventNotifier\").EVENT_TYPE.SELECTED;\n var 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\nvar addGlyphToArray = function(objects) {\n return function(glyph) {\n objects.push(glyph.getMesh());\n }\n}\n\nRendererModule.prototype.findObjectsByGroupName = function(groupName) {\n var geometries = this.scene.findGeometriesWithGroupName(groupName);\n var objects = [];\n for (var i = 0; i < geometries.length; i ++ ) {\n objects.push(geometries[i].morph);\n }\n var glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);\n for (var 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 var objects = this.findObjectsByGroupName(groupName);\n return this.setHighlightedByObjects(objects, propagateChanges);\n}\n\nRendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {\n var objects = this.findObjectsByGroupName(groupName);\n return this.setSelectedByObjects(objects, propagateChanges);\n}\n\nRendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {\n var colour = new THREE.Color(backgroundColourString);\n if (this.zincRenderer) {\n var 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 var 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 if (this.toolTip === undefined)\n this.toolTip = new (require(\"../ui/tooltip\").ToolTip)(this.displayArea);\n }\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;\n","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\");","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\");","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 var currentHighlightedObjects = [];\n var currentSelectedObjects = [];\n this.highlightColour = 0x0000FF;\n this.selectColour = 0x00FF00;\n this.originalColour = 0x000000;\n var _this = this;\n\n var isDifferent = function(array1, array2) {\n if ((array1.length == 0) && (array2.length == 0))\n return false;\n \n for (var i = 0; i < array1.length; i++) {\n var matched = false;\n for (var 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 (var i = 0; i < array2.length; i++) {\n var matched = false;\n for (var 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 var getUnmatchingObjects = function(objectsArray1, objectsArray2) {\n var unmatchingObjects = [];\n if (objectsArray2.length == 0)\n return objectsArray1;\n for (var i = 0; i < objectsArray1.length; i++) {\n var matched = false;\n for (var 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 var previousHighlightedObjects = currentHighlightedObjects;\n _this.resetHighlighted();\n // Selected object cannot be highlighted\n var array = getUnmatchingObjects(objects, currentSelectedObjects);\n var fullList = getFullListOfObjects(array);\n for (var i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setHex(_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 var previousHSelectedObjects = currentSelectedObjects;\n var array = getUnmatchingObjects(currentHighlightedObjects, objects);\n currentHighlightedObjects = array;\n _this.resetSelected();\n var fullList = getFullListOfObjects(objects);\n for (var i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setHex(_this.selectColour);\n }\n currentSelectedObjects = objects;\n return isDifferent(currentSelectedObjects, previousHSelectedObjects);\n }\n\n var getFullListOfObjects = function(objects) {\n let fullList = [];\n for (var 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 let fullList = getFullListOfObjects(currentHighlightedObjects);\n for (var i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material) {\n if (fullList[i].material.emissive)\n fullList[i].material.emissive.setHex(_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 let fullList = getFullListOfObjects(currentSelectedObjects);\n for (var 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.setHex(_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(\"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\");","module.exports = require(\"element-ui/lib/theme-chalk/tab-pane.css\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","module.exports = require(\"@soda/get-current-script\");","exports.annotation = function() {\n this.type = \"anatomical\";\n this.data = undefined;\n this.isAnnotation = true;\n}\n","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\");","module.exports = require(\"broadcast-channel\");","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=7089433d&scoped=true&lang=scss&\"","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('SvgSpriteColor'),_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('OpacityControls',{ref:\"opacityControl\"}),(_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('SvgIcon',{staticClass:\"icon-button video-button\",attrs:{\"icon\":\"pause\"},nativeOn:{\"click\":function($event){return _vm.play(false)}}}):_c('SvgIcon',{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('SvgIcon',{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('SvgIcon',{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('SvgIcon',{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('SvgIcon',{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\"},[(!_vm.drawerOpen)?_c('div',{staticClass:\"tab-button open\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e(),_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)],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 <div\n v-if=\"!drawerOpen\"\n class=\"tab-button open\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\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</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 position: absolute;\n top: 255px;\n right: 0px;\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\n &.close {\n float: left;\n flex: 1;\n border-right: 0;\n margin-top: 26px;\n }\n\n &.open {\n position: absolute;\n top:26px;\n }\n\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transform: scaleY(2.5);\n }\n}\n\n.open-tab{\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=4fb32d85&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=4fb32d85&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 \"4fb32d85\",\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 this.module.graphicsHighlight.selectColour = 0x444444;\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) {\n let targetObject = this.getFirstZincObjectWithGroupName(name);\n if (targetObject && targetObject.getVisibility()) {\n this.activeRegion = name;\n /**\n * Triggers when an item has been selected.\n *\n * @property {object} target selected object.\n */\n this.$emit(\"object-selected\", targetObject);\n }\n this.removeHover();\n },\n /**\n * Hover a region by its name.\n */\n changeHoverByName: function(name) {\n let targetObject = this.getFirstZincObjectWithGroupName(name);\n if (targetObject) {\n this.hoverRegion = name;\n /**\n * Triggers when an item has been hovered over.\n *\n * @property {object} target hovered object.\n */\n this.$emit(\"object-hovered\", targetObject);\n }\n },\n /**\n * Unselect the current selected region.\n */\n removeActive: function() {\n this.activeRegion = \"\";\n this.$emit(\"object-selected\", undefined);\n },\n /**\n * Unselect the current hover region.\n */\n removeHover: function() {\n this.hoverRegion = \"\";\n this.$emit(\"object-hovered\", undefined);\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);\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);\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();\n }\n if (this.hoverRegion === item) {\n this.removeHover();\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=318fd7c8&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=318fd7c8&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 \"318fd7c8\",\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 <SvgSpriteColor />\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 <OpacityControls ref=\"opacityControl\" />\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 <SvgIcon\n v-if=\"isPlaying\"\n icon=\"pause\"\n class=\"icon-button video-button\"\n @click.native=\"play(false)\"\n />\n <SvgIcon\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 <SvgIcon\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 <SvgIcon\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 <SvgIcon\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 <SvgIcon\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 { SvgIcon, SvgSpriteColor } 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(\"physiomeportal/src/modules/organsRenderer\")\n .OrgansViewer;\nconst EventNotifier = require(\"physiomeportal/src/utilities/eventNotifier\")\n .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 SvgIcon,\n SvgSpriteColor,\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.$module.toolTip = undefined;\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 this.$module.scene.viewAllWithBoundingBox(box);\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 /**\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.controls) {\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.controls.changeActiveByName(id);\n } else {\n this.controls.removeActive();\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.controls) {\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.controls.changeHoverByName(id);\n } else this.controls.removeHover();\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 * Set the selected zinc object\n *\n * @param {object} object Zinc object\n */\n objectSelected: function(object) {\n if (object !== this.selectedObject) {\n this.selectedObject = object;\n this.$refs.opacityControl.setObject(this.selectedObject);\n if (object) this.$module.setSelectedByZincObject(object, true);\n else this.$module.setSelectedByObjects([], true);\n }\n },\n /**\n * Set the highlighted zinc object\n *\n * @param {object} object Zinc object\n */\n objectHovered: function(object) {\n if (object !== this.hoveredObject) {\n this.hoveredObject = object;\n if (object) this.$module.setHighlightedByZincObject(object, true);\n else this.$module.setHighlightedByObjects([], true);\n }\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 /**\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 */\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 }\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</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=7089433d&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=7089433d&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 \"7089433d\",\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/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 \"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/./src/components/ScaffoldVuer.vue?f9b4","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/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/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/./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/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/./src/components/TraditionalControls.vue?a419","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/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?c3b1","webpack://scaffoldvuer/./src/components/OpacityControls.vue?a7ca","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?dfa7","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","THREE","OrgansSceneData","currentName","currentSystem","currentPart","currentSpecies","metaURL","viewURL","geometries","lines","glyphsets","pointsets","currentTime","timeVarying","OrgansViewer","ModelsLoaderIn","RendererModule","_this","pickerScene","undefined","sceneData","timeChangedCallbacks","Array","sceneChangedCallbacks","organPartAddedCallbacks","finishDownloadCallback","modelsLoader","typeName","getSceneData","updateTime","duration","scene","getDuration","actualTime","nerveMapIsActive","setMorphsTime","preRenderTimeUpdate","zincRenderer","getCurrentTime","length","nerveMap","additionalReader","setTime","postRenderSelectedCoordinatesUpdate","selectedCenter","vector","Vector3","copy","coord","vectorToScreenXY","selectedScreenCoordinates","x","y","preRenderUpdateCallback","postRenderUpdateCallback","addTimeChangedCallback","callback","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","getZincCameraControls","enableRaycaster","setMouseButtonAction","alignCameraWithSelectedObject","transitionTime","objects","getSelected","alignObjectToCameraView","exportSettings","settings","instanceName","dialog","importSettings","setName","loadOrgans","initialise","initialiseRenderer","addPreRenderCallbackFunction","addPostRenderCallbackFunction","GraphicsHighlight","currentHighlightedObjects","currentSelectedObjects","highlightColour","selectColour","originalColour","isDifferent","array1","array2","matched","j","getUnmatchingObjects","objectsArray1","objectsArray2","unmatchingObjects","setHighlighted","previousHighlightedObjects","resetHighlighted","array","fullList","getFullListOfObjects","material","emissive","setHex","setSelected","previousHSelectedObjects","resetSelected","depthFunc","LessEqualDepth","MODULE_CHANGE","ALL","DESTROYED","NAME_CHANGED","SETTINGS_CHANGED","BaseModule","onChangedCallbacks","eventNotifiers","callbackArray","slice","publishChanges","eventType","publish","getName","destroy","addChangedCallback","removeChangedCallback","indexOf","addNotifier","eventNotifier","_typeof","iterator","constructor","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","resetView","viewAll","flag","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","_arrayLikeToArray","arr","len","arr2","_arrayWithoutHoles","isArray","arrayLikeToArray","_iterableToArray","iter","from","_unsupportedIterableToArray","minLen","toString","test","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","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","box","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"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,kBAAZC,SAA0C,kBAAXC,OACxCA,OAAOD,QAAUD,IACQ,oBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,kBAAZC,QACdA,QAAQ,gBAAkBD,IAE1BD,EAAK,gBAAkBC,KARzB,CASoB,qBAATK,KAAuBA,KAAOC,MAAO,WAChD,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUR,QAGnC,IAAIC,EAASK,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHV,QAAS,IAUV,OANAW,EAAQH,GAAUI,KAAKX,EAAOD,QAASC,EAAQA,EAAOD,QAASO,GAG/DN,EAAOS,GAAI,EAGJT,EAAOD,QA0Df,OArDAO,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASf,EAASgB,EAAMC,GAC3CV,EAAoBW,EAAElB,EAASgB,IAClCG,OAAOC,eAAepB,EAASgB,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAASvB,GACX,qBAAXwB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAepB,EAASwB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAepB,EAAS,aAAc,CAAE0B,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAASjC,GAChC,IAAIgB,EAAShB,GAAUA,EAAO4B,WAC7B,WAAwB,OAAO5B,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAM,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,Q,uBClFrDvC,EAAOD,QAAUyC,QAAQ,uC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,8CCAzBxC,EAAOD,QAAUyC,QAAQ,kD,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,oC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,6B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,iD,oCCAzB,W,qBCAAxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,mC,oCCAzB,W,qBCAAxC,EAAOD,QAAUyC,QAAQ,4B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,2C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,uC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,4B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,gD,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,6B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,gC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,gB,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,mC,yFCAnBC,EAAQD,EAAQ,QAAUC,MAI1BC,EAAkB,WACtBtC,KAAKuC,YAAc,GACnBvC,KAAKwC,cAAgB,GACrBxC,KAAKyC,YAAc,GACnBzC,KAAK0C,eAAkB,GACvB1C,KAAK2C,QAAU,GACf3C,KAAK4C,QAAU,GACf5C,KAAK6C,WAAa,GAClB7C,KAAK8C,MAAQ,GACb9C,KAAK+C,UAAY,GACjB/C,KAAKgD,UAAY,GACjBhD,KAAKiD,YAAc,EACnBjD,KAAKkD,aAAc,GAiBdC,EAAe,SAASC,GAC5BhB,EAAQ,QAAoBiB,eAAgB9C,KAAKP,MAClD,IAAMsD,EAAQtD,KACXuD,OAAcC,EAClBxD,KAAKyD,UAAY,IAAInB,EACrB,IAAMoB,EAAuB,IAAIC,MAC3BC,EAAwB,IAAID,MAC3BE,EAA0B,IAAIF,MAChCG,OAAyBN,EACxBO,EAAeX,EACrBE,EAAMU,SAAW,eAEjBhE,KAAKiE,aAAe,WAClB,OAAOX,EAAMG,WAMfzD,KAAKkE,WAAa,SAAS7C,GACxB,IAAI8C,EAAW,IACXb,EAAMc,QACRD,EAAWb,EAAMc,MAAMC,eACzB,IAAMC,EAAajD,EAAQ,IAAQ8C,EAChCb,EAAMG,UAAUc,mBAChBhB,GACHA,EAAYiB,cAAcF,GACvBhB,EAAMc,OACTd,EAAMc,MAAMI,cAAcF,IAE5BhB,EAAMG,UAAUR,YAAc5B,GAM7B,IAAMoD,EAAsB,WAC3B,IAAIN,EAAW,IACXb,EAAMc,QACRD,EAAWb,EAAMc,MAAMC,eAE3B,IADE,IAAMpB,EAAcK,EAAMoB,aAAaC,iBAChCvE,EAAI,EAAGA,EAAIsD,EAAqBkB,OAAOxE,IAC/CsD,EAAqBtD,GAAG6C,IAEpBK,EAAMG,UAAUc,kBAAoBhB,GACxCA,EAAYiB,cAAcvB,GACvBK,EAAMG,UAAUoB,UAAYvB,EAAMG,UAAUoB,SAASC,kBACrDxB,EAAMG,UAAUoB,SAASC,iBAAiBC,QAAQ9B,EAChDkB,GACNb,EAAMG,UAAUR,YAAcA,EAAckB,EAAW,KAGjDa,EAAsC,WAC1C,GAAI1B,EAAM2B,eAAgB,CACxB,IAAMC,EAAS,IAAI7C,EAAM8C,QACzBD,EAAOE,KAAK9B,EAAM2B,gBAClB,IAAMI,EAAQ/B,EAAMc,MAAMkB,iBAAiBJ,GAC3C5B,EAAMiC,0BAA0BC,EAAIH,EAAMG,EAC1ClC,EAAMiC,0BAA0BE,EAAIJ,EAAMI,IAIzCC,EAA0B,WAC/B,OAAO,WACHjB,MAIEkB,EAA2B,WACjC,OAAO,WACHX,MAOLhF,KAAK4F,uBAAyB,SAASC,GACrC,EAAwB,aAAbA,IACTnC,EAAqBoC,KAAKD,IAG9B7F,KAAK+F,cAAgB,SAAS1E,GACzBiC,EAAMG,UAAUoB,UAAYvB,EAAMG,UAAUoB,SAASC,kBACxDxB,EAAMG,UAAUoB,SAASC,iBAAiBkB,aAAa3E,IAGzDrB,KAAKiG,wBAA0B,SAASJ,GACtC,EAAwB,aAAbA,IACTjC,EAAsBkC,KAAKD,IAI/B7F,KAAKkG,0BAA4B,SAASL,GACvC,EAAwB,aAAbA,IACThC,EAAwBiC,KAAKD,IAGjC7F,KAAKmG,0BAA4B,SAASN,GACxC,EAAwB,aAAbA,KACT/B,EAAyB+B,IAG7B7F,KAAKoG,4BAA8B,WACjCtC,OAAyBN,GAG3BxD,KAAKqG,mCAAqC,SAAS1F,EAAM2F,GACvD,IAAMpB,EAAS,IAAI7C,EAAM8C,QACzBD,EAAOqB,sBAAuBC,IAAIC,aAClC,IAAMC,EAAaC,MAAM,EACnBC,EAAcC,OAAO,EAI3B,OAHA3B,EAAO4B,QAAQR,GACfpB,EAAOM,EAAMN,EAAOM,EAAIkB,EAAcA,EACtCxB,EAAOO,GAAQP,EAAOO,EAAImB,EAAeA,EAClC1B,GAGT,IAAM6B,EAA2B,SAASC,GACxC,IAAIC,OAAKzD,EACL0D,OAAoB1D,EACxB,QAAoBA,IAAhBwD,IAGAE,EAFEF,EAAYlF,OAAOqF,UACrBH,EAAYlF,OAAOqF,SAASC,SACRJ,EAAYlF,OAAOqF,SAASE,OAAOC,MAEnCN,EAAYlF,OAE9BoF,GACF,GAAIA,EAAkBvG,KACpBsG,EAAKC,EAAkBvG,SAClB,CACL,IAAM4G,EAAcjE,EAAMkE,0BACxB,CAACN,IACCK,GAAeA,EAAY,KAC7BN,EAAKM,EAAY,GAAGE,KAAKC,OAKjC,MAAO,CAAC,GAAKT,EAAI,OAASC,IAUrBS,EAAmB,WAC1B,OAAO,SAASC,EAAYC,EAAUC,GAClC,IAAMd,EAAc1D,EAAMyE,qBAAqBH,GACzCI,EAAWjB,EAAyBC,GACtCgB,EAASf,GACPe,EAASlG,OAAOqF,SAASc,QACvBD,EAASlG,OAAOnB,KAClB2C,EAAM4E,qBAAqB,CAACF,EAASlG,SAAS,GAE9CwB,EAAM6E,wBAAwBH,EAASlG,OAAOqF,SAASiB,eAAe,GAExE9E,EAAM4E,qBAAqB,CAACF,EAASlG,SAAS,GAIpDwB,EAAM4E,qBAAqB,IAAI,KAU1BG,EAAiB,WACxB,OAAO,SAAST,EAAYC,EAAUC,GAClC,IAAMd,EAAc1D,EAAMyE,qBAAqBH,GACzCI,EAAWjB,EAAyBC,GAC1C,GAAIgB,EAASf,GAGX,OAFA3D,EAAMgF,YAAYC,MAAMC,OAAS,eACjClF,EAAMmF,wBAAwB,CAACT,EAASlG,SAAS,GAIrDwB,EAAMgF,YAAYC,MAAMC,OAAS,OACjClF,EAAMmF,wBAAwB,IAAI,KAK/BC,EAAqC,SAAStE,EAAOzD,EAAMU,EAAOsH,GACvE,GAAY,OAARA,GAAyB,cAARA,EAEpB,IADA,IAAM9F,EAAauB,EAAMwE,4BAA4BjI,GAC5CP,EAAI,EAAGA,EAAIyC,EAAW+B,OAAQxE,IACtCyC,EAAWzC,GAAGyI,cAAcxH,GAG9B,GAAY,OAARsH,GAAyB,aAARA,EAEpB,IADA,IAAM5F,EAAYqB,EAAM0E,2BAA2BnI,GAC1CP,EAAI,EAAGA,EAAI2C,EAAU6B,OAAQxE,IACrC2C,EAAU3C,GAAGyI,cAAcxH,GAG7B,GAAY,OAARsH,GAAyB,aAARA,EAEpB,IADA,IAAM3F,EAAYoB,EAAM2E,2BAA2BpI,GAC1CP,EAAI,EAAGA,EAAI4C,EAAU4B,OAAQxE,IACrC4C,EAAU5C,GAAGyI,cAAcxH,GAG7B,GAAY,OAARsH,GAAyB,SAARA,EAEpB,IADA,IAAM7F,EAAQsB,EAAM4E,uBAAuBrI,GAClCP,EAAI,EAAGA,EAAI0C,EAAM8B,OAAQxE,IACjC0C,EAAM1C,GAAGyI,cAAcxH,IAQ1BrB,KAAKiJ,2BAA6B,SAAStI,EAAMU,GAChDqH,EAAmCpF,EAAMc,MAAOzD,EAAMU,EAAO,cACzDkC,GACHmF,EAAmCnF,EAAa5C,EAAMU,EAAO,eAM/DrB,KAAKkJ,0BAA4B,SAASvI,EAAMU,GAC/CqH,EAAmCpF,EAAMc,MAAOzD,EAAMU,EAAO,aACzDkC,GACHmF,EAAmCnF,EAAa5C,EAAMU,EAAO,cAM/DrB,KAAKmJ,sBAAwB,SAASxI,EAAMU,GAC3CqH,EAAmCpF,EAAMc,MAAOzD,EAAMU,EAAO,SACzDkC,GACHmF,EAAmCnF,EAAa5C,EAAMU,EAAO,UAM/DrB,KAAKoJ,0BAA4B,SAASzI,EAAMU,GAC/CqH,EAAmCpF,EAAMc,MAAOzD,EAAMU,EAAO,aACzDkC,GACHmF,EAAmCnF,EAAa5C,EAAMU,EAAO,cAM/DrB,KAAKqJ,2BAA6B,SAAS1I,EAAMU,EAAOiI,GACvD,IAAIX,EAAO,WACInF,IAAX8F,IACHX,EAAOW,GACRZ,EAAmCpF,EAAMc,MAAOzD,EAAMU,EAAOsH,GACzDpF,GACHmF,EAAmCnF,EAAa5C,EAAMU,EAAOsH,IAG/D3I,KAAKuJ,mCAAqC,SAAS5I,GAClD,OAAO,SAASU,GACfiC,EAAM+F,2BAA2B1I,EAAMU,KAIzCrB,KAAKwJ,uBAAyB,SAASC,GACtC,IAAMC,EAAS,IAAIrH,EAAMsH,MAAMF,GAC/B,GAAInG,EAAMoB,aAAc,CACvB,IAAMkF,EAAmBtG,EAAMoB,aAAamF,qBAC5CD,EAAiBE,cAAeJ,EAAQ,KAI1C,IAAMK,EAA0B,SAASC,GACpCA,EAAWC,YACVD,EAAWE,WACT5G,EAAMG,UAAUZ,WAAWsH,SAASH,EAAWC,YACnD3G,EAAMG,UAAUZ,WAAWiD,KAAKkE,EAAWC,WAElCD,EAAWI,WAChB9G,EAAMG,UAAUV,UAAUoH,SAASH,EAAWC,YAClD3G,EAAMG,UAAUV,UAAU+C,KAAKkE,EAAWC,WAEjCD,EAAWK,QAChB/G,EAAMG,UAAUX,MAAMqH,SAASH,EAAWC,YAC9C3G,EAAMG,UAAUX,MAAMgD,KAAKkE,EAAWC,WAE7BD,EAAWM,aAChBhH,EAAMG,UAAUT,UAAUmH,SAASH,EAAWC,YAClD3G,EAAMG,UAAUT,UAAU8C,KAAKkE,EAAWC,cAMxCM,EAAe,SAASC,EAAYC,EAAUC,EAAiBV,GAClE,IAAK,IAAI5J,EAAI,EAAGA,EAAIyD,EAAwBe,OAAOxE,IACjDyD,EAAwBzD,GAAG4J,EAAWC,UAAW3G,EAAMc,MAAMuG,gBAAiBX,GAE5EU,GACF3G,EAAa6G,kBAAkBZ,EAAYQ,EAAYC,GACzDV,EAAwBC,GAC1B,IAAMa,EAAa,IAAKzI,EAAQ,QAAb,YACnByI,EAAWpD,KAAO,CAACqD,QAAQxH,EAAMG,UAAUf,eAAgBqI,OAAOP,EAAYQ,KAAKP,EAAU/C,MAAMsC,EAAWC,WAC9GD,EAAW7C,SAAW,CAAC0D,IAOhBI,EAAwB,SAAST,EAAYC,EAAUC,GAC3D,OAAO,SAASV,GACfO,EAAaC,EAAYC,EAAUC,EAAiBV,KAIjDkB,EAA4B,WACjC,OAAO,WACN5H,EAAM6H,kBACN7H,EAAMG,UAAUP,YAAcI,EAAMc,MAAMuG,gBACnC7G,GACFA,MAeP9D,KAAKoL,sBAAwB,SAASC,EAAYhK,GAC/C,IAAM,IAAIjB,EAAI,EAAGA,EAAIiL,EAAWzG,OAAQxE,IACtC,GAAIiB,GAASjB,EAAG,CACd,IAAMkL,EAAeD,EAAWjL,GAAGmL,SACnCjI,EAAM+F,2BAA2BiC,GAAc,GAGnD,GAAIjK,GAAS,EAAG,CACd,IAAMoJ,EAAWY,EAAWhK,GAAOkK,SACnC,GAAKjI,EAAMc,MAAMwE,4BAA4B6B,GAAU7F,OAAS,GAC7DtB,EAAMc,MAAM0E,2BAA2B2B,GAAU7F,OAAS,EAC3DtB,EAAM+F,2BAA2BoB,GAAU,OACtC,CACL,IAAMe,EAAcC,gBAAgBJ,EAAWhK,GAAOqK,WAAYjB,QAC/CjH,GAAfgI,GACFlI,EAAMc,MAAMuH,gBAAgB5H,EAAa6H,2BAA6B,IAAMJ,EAAYK,SAYjG7L,KAAK8L,oBAAsB,SAASpJ,EAAgBF,EAAeC,GACjE,IAAMsJ,EAAmB,IAAIpI,MAC7BoI,EAAiBjG,KAAK,QACtB,IAAMkG,EAAYlL,OAAOmL,KAAKC,eAC9B,IAAKC,SAASH,EAAW,CACvB,IAAMlB,EAAUkB,EAAUG,OACtBrB,GAAWpI,GACTwJ,cAAcpB,GAAS7I,eAAeO,IACtC0J,cAAcpB,GAAStI,GAAeP,eAAeQ,IACvDsJ,EAAiBjG,KAAKgF,GAI5B,OAAOiB,GAGT,IAAMK,EAAe,SAASC,EAAa7B,EAAYC,EAAU6B,GAC9DhJ,EAAMG,UAAUc,kBAAmB,EACnCjB,EAAMG,UAAUoB,cAAWrB,EAC3BF,EAAMG,UAAUd,QAAU,GAC1BW,EAAMG,UAAUb,QAAU,GAC1BU,EAAMG,UAAUf,eAAiB2J,EACjC/I,EAAMG,UAAUjB,cAAgBgI,EACnClH,EAAMG,UAAUhB,YAAcgI,EAC9BnH,EAAMG,UAAUR,YAAc,EAC9BK,EAAMG,UAAUZ,WAAW0J,OAAO,GAClCjJ,EAAMG,UAAUX,MAAMyJ,OAAO,GAC7BjJ,EAAMG,UAAUV,UAAUwJ,OAAO,GACjCjJ,EAAMG,UAAUT,UAAUuJ,OAAO,GACjCjJ,EAAMG,UAAUP,aAAc,EAE3B,IAAIvC,EAAO,GACP0L,IACF1L,EAAO0L,EAAc,KACnB7B,IACF7J,EAAO6J,EAAa,KAClBC,IACF9J,EAAO8J,GACTnH,EAAMG,UAAUlB,YAAc5B,GAGjCX,KAAKwM,kBAAoB,SAASC,EAAKJ,EAAa7B,EAAYC,EAAU7H,GACzE,GAAIU,EAAMoB,cACL+F,GAAanH,EAAMG,UAAUd,UAAY8J,EAAM,CAC/CL,EAAaC,EAAa7B,EAAYC,OAAUjH,GAChD,IAAM7C,EAAO2C,EAAMG,UAAUlB,YACzBmK,EAAapJ,EAAMoB,aAAaiI,eAAehM,GAC/C+L,EACHA,EAAWE,WAEXF,EAAapJ,EAAMoB,aAAamI,YAAYlM,GAE7C,IAAK,IAAIP,EAAI,EAAGA,EAAIwD,EAAsBgB,OAAOxE,IAChDwD,EAAsBxD,GAAGkD,EAAMG,WAE5Bb,GAAsB,IAAXA,GACdU,EAAMG,UAAUb,QAAUA,EAC1B8J,EAAWI,YAAYxJ,EAAMG,UAAUb,UAEvCU,EAAMG,UAAUb,aAAUY,EAE3BF,EAAMG,UAAUd,QAAU8J,EAC1BC,EAAWf,gBAAgBc,EAAKxB,EAAsBT,EAAYC,GAAU,GAC3ES,KACD5H,EAAMc,MAAQsI,EACdpJ,EAAMoB,aAAaqI,gBAAgBL,GACnCpJ,EAAM0J,kBAAkBC,QACxB,IAAMC,EAAoBR,EAAWS,wBACrCD,EAAkBE,gBAAgBV,EAAY/E,IAAoBU,KAClE6E,EAAkBG,qBAAqB,YAAa,QACpDH,EAAkBG,qBAAqB,YAAa,SAK1DrN,KAAKsN,8BAAgC,SAASC,GAC5C,IAAMC,EAAUlK,EAAM0J,kBAAkBS,cACpCD,GAAWA,EAAQ,IAAMA,EAAQ,GAAGrG,UACtC7D,EAAMc,MAAMsJ,wBAAwBF,EAAQ,GAAGrG,SAAUoG,IAI7DvN,KAAK2N,eAAiB,WACrB,IAAMC,EAAW,GAYjB,OAXAA,EAASjN,KAAO2C,EAAMuK,aAClBvK,EAAMG,UAAUjB,gBACnBoL,EAAS7C,OAASzH,EAAMG,UAAUjB,eAC/Bc,EAAMG,UAAUf,iBACnBkL,EAAS9C,QAAWxH,EAAMG,UAAUf,gBACjCY,EAAMG,UAAUhB,cACnBmL,EAAS5C,KAAO1H,EAAMG,UAAUhB,aACjCmL,EAASjL,QAAUW,EAAMG,UAAUd,QAC/BW,EAAMG,UAAUb,UACnBgL,EAAShL,QAAUU,EAAMG,UAAUb,SACpCgL,EAASE,OAAS,eACXF,GAGR5N,KAAK+N,eAAiB,SAASH,GAC9B,SAAIA,GAAaA,EAASE,QAAU9N,KAAKgE,YACxCV,EAAM0K,QAAQJ,EAASjN,WACE6C,IAArBoK,EAASjL,SAA6C,IAApBiL,EAASjL,QAC9CW,EAAMkJ,kBAAkBoB,EAASjL,QAASiL,EAAS9C,QACpD8C,EAAS7C,OAAQ6C,EAAS5C,KAAM4C,EAAShL,SAExCU,EAAM2K,WAAWL,EAAS9C,QAAS8C,EAAS7C,OAAQ6C,EAAS5C,OAEvD,IAWV,IAAMkD,EAAa,WACjB5K,EAAM6K,wBAAmB3K,GACrBF,EAAMoB,eACPpB,EAAMoB,aAAa0J,6BAA6B1I,KAChDpC,EAAMoB,aAAa2J,8BAA8B1I,OAIvDuI,KAID/K,EAAanB,UAAYlB,OAAOY,OAAQU,EAAQ,QAAoBiB,eAAgBrB,WACpFrC,EAAQwD,aAAeA,G,qBCvhBvBvD,EAAOD,QAAUyC,QAAQ,4C,8CCAzB,IAAIC,EAAQD,EAAQ,QAAUC,MAQ9B1C,EAAQ2O,kBAAoB,WAC1B,IAAIC,EAA4B,GAC5BC,EAAyB,GAC7BxO,KAAKyO,gBAAkB,IACvBzO,KAAK0O,aAAe,MACpB1O,KAAK2O,eAAiB,EACtB,IAAMrL,EAAQtD,KAER4O,EAAc,SAASC,EAAQC,GACnC,GAAsB,GAAjBD,EAAOjK,QAAkC,GAAjBkK,EAAOlK,OAClC,OAAO,EACT,IAAK,IAAIxE,EAAI,EAAGA,EAAIyO,EAAOjK,OAAQxE,IAAK,CAEtC,IADA,IAAI2O,GAAU,EACLC,EAAI,EAAGA,EAAIF,EAAOlK,OAAQoK,IAC7BH,EAAOzO,KAAO0O,EAAOE,KACvBD,GAAU,GAGd,IAAKA,EACH,OAAO,EAEX,IAAK,IAAI3O,EAAI,EAAGA,EAAI0O,EAAOlK,OAAQxE,IAAK,CAEtC,IADA,IAAI2O,GAAU,EACLC,EAAI,EAAGA,EAAIH,EAAOjK,OAAQoK,IAC7BF,EAAO1O,KAAOyO,EAAOG,KACvBD,GAAU,GAGd,IAAKA,EACH,OAAO,EAEX,OAAO,GAGHE,EAAuB,SAASC,EAAeC,GACnD,IAAMC,EAAoB,GAC1B,GAA4B,GAAxBD,EAAcvK,OAChB,OAAOsK,EACT,IAAK,IAAI9O,EAAI,EAAGA,EAAI8O,EAActK,OAAQxE,IAAK,CAE7C,IADA,IAAI2O,GAAU,EACLC,EAAI,EAAGA,EAAIG,EAAcvK,OAAQoK,IACpCE,EAAc9O,KAAO+O,EAAcH,KACrCD,GAAU,GAGTA,GACHK,EAAkBtJ,KAAKoJ,EAAc9O,IAEzC,OAAOgP,GAGTpP,KAAKqP,eAAiB,SAAS7B,GAC7B,IAAM8B,EAA6Bf,EACnCjL,EAAMiM,mBAIN,IAFA,IAAMC,EAAQP,EAAqBzB,EAASgB,GACtCiB,EAAWC,EAAqBF,GAC7BpP,EAAI,EAAGA,EAAIqP,EAAS7K,OAAQxE,IAC/BqP,EAASrP,IAAMqP,EAASrP,GAAGuP,UAAYF,EAASrP,GAAGuP,SAASC,UAC9DH,EAASrP,GAAGuP,SAASC,SAASC,OAAOvM,EAAMmL,iBAG/C,OADAF,EAA4BiB,EACrBZ,EAAYL,EAA2Be,IAGhDtP,KAAK8P,YAAc,SAAStC,GAE1B,IAAMuC,EAA2BvB,EAC3BgB,EAAQP,EAAqBV,EAA2Bf,GAC9De,EAA4BiB,EAC5BlM,EAAM0M,gBAEN,IADA,IAAMP,EAAWC,EAAqBlC,GAC7BpN,EAAI,EAAGA,EAAIqP,EAAS7K,OAAQxE,IAChCqP,EAASrP,IAAMqP,EAASrP,GAAGuP,UAAYF,EAASrP,GAAGuP,SAASC,UAC7DH,EAASrP,GAAGuP,SAASC,SAASC,OAAOvM,EAAMoL,cAG/C,OADAF,EAAyBhB,EAClBoB,EAAYJ,EAAwBuB,IAG7C,IAAML,EAAuB,SAASlC,GAEpC,IADA,IAAIiC,EAAW,GACNrP,EAAI,EAAGA,EAAIoN,EAAQ5I,OAAQxE,IAC9BoN,EAAQpN,GAAGuP,UACbF,EAAS3J,KAAK0H,EAAQpN,IAE1B,OAAOqP,GAGTzP,KAAKuP,iBAAmB,WAEtB,IADA,IAAME,EAAWC,EAAqBnB,GAC7BnO,EAAI,EAAGA,EAAIqP,EAAS7K,OAAQxE,IAC/BqP,EAASrP,IAAMqP,EAASrP,GAAGuP,WACzBF,EAASrP,GAAGuP,SAASC,UACvBH,EAASrP,GAAGuP,SAASC,SAASC,OAAOvM,EAAMqL,gBACzCc,EAASrP,GAAGuP,SAASM,YACvBR,EAASrP,GAAGuP,SAASM,UAAY5N,EAAM6N,iBAG7C3B,EAA4B,IAG9BvO,KAAKgQ,cAAgB,WAEnB,IADA,IAAMP,EAAWC,EAAqBlB,GAC7BpO,EAAI,EAAGA,EAAIqP,EAAS7K,OAAQxE,IAChCqP,EAASrP,IAAMqP,EAASrP,GAAGuP,WAC1BF,EAASrP,GAAGuP,SAASC,UACrBH,EAASrP,GAAGuP,SAASC,SAASC,OAAOvM,EAAMqL,gBAC3Cc,EAASrP,GAAGuP,SAASM,YACrBR,EAASrP,GAAGuP,SAASM,UAAY5N,EAAM6N,iBAG7C1B,EAAyB,IAG3BxO,KAAKyN,YAAc,WACjB,OAAOe,GAGTxO,KAAKiN,MAAQ,WACX3J,EAAM0M,gBACN1M,EAAMiM,sB,qBCjIV3P,EAAOD,QAAUyC,QAAQ,wC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,8B,oCCAzB,W,mBCAAxC,EAAOD,QAAUyC,QAAQ,mC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,mB,mFCAzB,IAAM+N,EAAgB,CAAEC,IAAK,EAAGC,UAAW,EAAGC,aAAc,EAAGC,iBAAkB,GAE3EC,EAAa,WACjBxQ,KAAKgE,SAAW,cAChBhE,KAAK6N,aAAe,UACpB7N,KAAKyQ,mBAAqB,GAE1BzQ,KAAK0Q,eAAiB,IAGxBF,EAAWxO,UAAUgM,QAAU,SAASrN,GACtC,GAAIA,GAAQX,KAAK6N,eAAiBlN,EAAM,CACtCX,KAAK6N,aAAelN,EAEpB,IADA,IAAMgQ,EAAgB3Q,KAAKyQ,mBAAmBG,QACrCxQ,EAAI,EAAGA,EAAIuQ,EAAc/L,OAAQxE,IACxCuQ,EAAcvQ,GAAIJ,KAAMmQ,EAAcG,gBAK5CE,EAAWxO,UAAUmJ,gBAAkB,WAErC,IADD,IAAMwF,EAAgB3Q,KAAKyQ,mBAAmBG,QACpCxQ,EAAI,EAAGA,EAAIuQ,EAAc/L,OAAQxE,IACxCuQ,EAAcvQ,GAAIJ,KAAMmQ,EAAcI,mBAI1CC,EAAWxO,UAAU2L,eAAiB,WACpC,IAAMC,EAAW,GAGjB,OAFAA,EAASE,OAAS9N,KAAKgE,SACvB4J,EAASjN,KAAOX,KAAK6N,aACdD,GAGT4C,EAAWxO,UAAU+L,eAAiB,SAASH,GAC9C,OAAIA,EAASE,QAAU9N,KAAKgE,WAC3BhE,KAAKgO,QAAQJ,EAASjN,OACf,IAKT6P,EAAWxO,UAAU6O,eAAiB,SAAStJ,EAAauJ,GAC1D,IAAK,IAAI1Q,EAAI,EAAGA,EAAIJ,KAAK0Q,eAAe9L,OAAQxE,IAC9CJ,KAAK0Q,eAAetQ,GAAG2Q,QAAQ/Q,KAAM8Q,EAAWvJ,IAIpDiJ,EAAWxO,UAAUgP,QAAU,WAC7B,OAAOhR,KAAK6N,cAGd2C,EAAWxO,UAAUiP,QAAU,WAG7B,IADA,IAAMN,EAAgB3Q,KAAKyQ,mBAAmBG,QACrCxQ,EAAI,EAAGA,EAAIuQ,EAAc/L,OAAQxE,IACxCuQ,EAAcvQ,GAAIJ,KAAMmQ,EAAcE,YAM1CG,EAAWxO,UAAUkP,mBAAqB,SAASrL,GACC,GAA9C7F,KAAKyQ,mBAAmBtG,SAAStE,IACnC7F,KAAKyQ,mBAAmB3K,KAAKD,IAGjC2K,EAAWxO,UAAUmP,sBAAwB,SAAStL,GACpD,IAAMsG,EAAQnM,KAAKyQ,mBAAmBW,QAAQvL,GAC1CsG,GAAS,GACXnM,KAAKyQ,mBAAmBlE,OAAOJ,EAAO,IAI1CqE,EAAWxO,UAAUqP,YAAc,SAASC,GAC1CtR,KAAK0Q,eAAe5K,KAAKwL,IAG3B3R,EAAQ6Q,WAAaA,EACrB7Q,EAAQwQ,cAAgBA,G,qBC/ExBvQ,EAAOD,QAAUyC,QAAQ,sC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,uB,qBCAzB,SAASmP,EAAQ/K,GAaf,MAVsB,oBAAXrF,QAAoD,kBAApBA,OAAOqQ,SAChD5R,EAAOD,QAAU4R,EAAU,SAAiB/K,GAC1C,cAAcA,GAGhB5G,EAAOD,QAAU4R,EAAU,SAAiB/K,GAC1C,OAAOA,GAAyB,oBAAXrF,QAAyBqF,EAAIiL,cAAgBtQ,QAAUqF,IAAQrF,OAAOa,UAAY,gBAAkBwE,GAItH+K,EAAQ/K,G,sEAGjB5G,EAAOD,QAAU4R,G,qBChBjB3R,EAAOD,QAAUyC,QAAQ,uC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,oC,8CCAzBxC,EAAOD,QAAUyC,QAAQ,0B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,+CCAnBC,EAAQD,EAAQ,QAAUC,MAO1BqP,EAAiB,WACrB,IAAMC,EAAQvP,EAAQ,QAAWuP,MAC3BC,EAAiBC,SAASC,cAAe,OAC3CC,OAAgBvO,EAEpB,GADAoO,EAAerJ,MAAM1B,OAAS,OAC1B8K,EAAMK,mBAAoB,CAC5B,IAAMC,EAAO7P,EAAQ,QACrB2P,EAAgB,IAAIE,EAAKC,SAASN,EAAgBO,QAClDF,EAAKG,qBAAuB,SAC5BL,EAAcM,0BACdN,EAAcO,eAAgB,MACzB,CACL,IAAMC,EAAUZ,EAAMa,uBACtBZ,EAAea,YAAYF,GAE7B,MAAO,CAAC,SAAWR,EAAe,UAAYH,IAG1CvO,EAAiB,WACpBjB,EAAQ,QAAgBoO,WAAYjQ,KAAKP,MAC1CA,KAAKoE,WAAQZ,EACbxD,KAAK0S,uBAAoBlP,EACzBxD,KAAKsI,iBAAc9E,EACnBxD,KAAKgN,kBAAoB,IAAK5K,EAAQ,QAAb,mBACzBpC,KAAK0E,aAAe,KACpB1E,KAAKuF,0BAA4B,IAAIlD,EAAM8C,QAC3CnF,KAAKiF,oBAAiBzB,GAGxBH,EAAerB,UAAYlB,OAAOY,OAAQU,EAAQ,QAAgBoO,WAAYxO,WAM9EqB,EAAerB,UAAU+F,qBAAuB,SAASH,GACxD,GAAIA,EACH,IAAK,IAAIxH,EAAI,EAAGA,EAAIwH,EAAWhD,OAAQxE,IACtC,QAAsBoD,IAAlBoE,EAAWxH,IACVwH,EAAWxH,GAAG0B,QACV8F,EAAWxH,GAAG0B,OAAOqF,UACrBS,EAAWxH,GAAG0B,OAAOqF,SAASwL,eAC7B/K,EAAWxH,GAAG0B,OAAOnB,MACtBiH,EAAWxH,GAAG0B,OAAOqF,SAASC,UACrC,OAAOQ,EAAWxH,IAOvBiD,EAAerB,UAAUwF,0BAA4B,SAASgG,GAG5D,IAFA,IAAMjG,EAAc,GAChBqL,EAAQ,EACHxS,EAAI,EAAGA,EAAIoN,EAAQ5I,OAAQxE,IAAK,CACvC,IAAM4J,EAAawD,EAAQpN,GAAG+G,SAC1B0D,OAAarH,EACjB,GAAIwG,EACF,GAAIA,EAAW/B,SAAW+B,EAAWI,WAAY,CAC/C,IAAMyI,EAAW7I,EACbA,EAAW/B,UACL,cAAR4K,EAAW7I,EAAW5B,eACxByC,EAAagI,EAAS1L,SAAW0L,EAAS1L,SAAS,QAAK3D,EACpDqH,GAAcA,EAAWpD,OACvB+F,EAAQpN,GAAGO,MAA2B,IAAnB6M,EAAQpN,GAAGO,KAChCkK,EAAWpD,KAAKR,GAAKuG,EAAQpN,GAAGO,KAEhCkK,EAAWpD,KAAKR,GAAK4L,EAAS5I,gBAGlCY,EAAab,EAAW7C,SAAW6C,EAAW7C,SAAS,QAAK3D,EACxDqH,GAAcA,EAAWpD,OAC3BoD,EAAWpD,KAAKR,GAAKuG,EAAQpN,GAAGO,MAIlCkK,IACFtD,EAAYqL,KAAW/H,GAE5B,OAAOtD,GAGRlE,EAAerB,UAAUyG,wBAA0B,SAAS+E,EAASsF,GACnE,IAAMC,EAAU/S,KAAKgN,kBAAkBqC,eAAe7B,GACtD,GAAIuF,GAAWD,EAAkB,CAC/B,IAAMhC,EAAY1O,EAAQ,QAAmB4Q,WAAWC,YAClD1L,EAAcvH,KAAKwH,0BAA0BgG,GACnDxN,KAAK6Q,eAAetJ,EAAauJ,GAEnC,OAAOiC,GAIT1P,EAAerB,UAAUkR,2BAA6B,SACpDlJ,EAAY8I,GACV,OAAO9S,KAAKyI,wBAAwB,CAACuB,EAAaA,EAAW1C,WAAQ9D,GAAYsP,IAGrFzP,EAAerB,UAAUmR,qBAAuB,SAASC,GACvD,GAAIA,GAAgBA,EAAYxO,OAAS,EAAI,CAC3C,IAAMyO,EAAcrT,KAAKoE,MAAMkP,4BAA4BF,GACvDG,EAAoB,IAAIlR,EAAM8C,QAClCkO,EAAYG,UAAUD,QACK/P,GAAvBxD,KAAKiF,eACPjF,KAAKiF,eAAiBsO,GAEtBvT,KAAKiF,eAAeO,EAAI+N,EAAkB/N,EAC1CxF,KAAKiF,eAAeQ,EAAI8N,EAAkB9N,QAG5CzF,KAAKiF,oBAAiBzB,GAI1BH,EAAerB,UAAUyR,qBAAuB,SAASjG,GAEvD,IADA,IAAM4F,EAAc,GACXhT,EAAI,EAAGA,EAAIoN,EAAQ5I,OAAQxE,IAAK,CACvC,IAAI4J,EAAawD,EAAQpN,GAAG+G,SAC5B,GAAI6C,EACF,GAAIA,EAAW/B,SAAW+B,EAAWI,WAAY,CAC/C,IAAIyI,EAAW7I,EACXA,EAAW/B,UACb4K,EAAW7I,EAAW5B,eACxBgL,EAAatN,KAAK+M,QAElBO,EAAatN,KAAKkE,GAIxB,OAAOoJ,GAIT/P,EAAerB,UAAUkG,qBAAuB,SAC9CsF,EAASsF,GACT,IAAMC,EAAU/S,KAAKgN,kBAAkB8C,YAAYtC,GACnD,GAAIuF,EAAS,CACX,IAAMK,EAAcpT,KAAKyT,qBAAqBjG,GAE9C,GADAxN,KAAKmT,qBAAqBC,GACtBN,EAAkB,CACpB,IAAMhC,EAAY1O,EAAQ,QAAmB4Q,WAAWU,SAClDnM,EAAcvH,KAAKwH,0BAA0BgG,GACnDxN,KAAK6Q,eAAetJ,EAAauJ,IAGrC,OAAOiC,GAGT1P,EAAerB,UAAUmG,wBAA0B,SACjD6B,EAAY8I,GACZ,OAAO9S,KAAKkI,qBAAqB,CAAC8B,EAAaA,EAAW1C,WAAQ9D,GAAYsP,IAGhF,IAAMa,EAAkB,SAASnG,GAC/B,OAAO,SAASoG,GACdpG,EAAQ1H,KAAK8N,EAAMC,aAIvBxQ,EAAerB,UAAU8R,uBAAyB,SAAS7J,GAGzD,IAFA,IAAMpH,EAAa7C,KAAKoE,MAAMwE,4BAA4BqB,GACpDuD,EAAU,GACPpN,EAAI,EAAGA,EAAIyC,EAAW+B,OAAQxE,IACrCoN,EAAQ1H,KAAKjD,EAAWzC,GAAGkH,OAG7B,IADA,IAAMvE,EAAY/C,KAAKoE,MAAM0E,2BAA2BmB,GAC/C7J,EAAI,EAAGA,EAAI2C,EAAU6B,OAAQxE,IACpC2C,EAAU3C,GAAG2T,aAAaJ,EAAgBnG,IAG5C,OAAOA,GAGTnK,EAAerB,UAAUgS,0BAA4B,SAAS/J,EAAW6I,GACvE,IAAMtF,EAAUxN,KAAK8T,uBAAuB7J,GAC5C,OAAOjK,KAAKyI,wBAAwB+E,EAASsF,IAG/CzP,EAAerB,UAAUiS,uBAAyB,SAAShK,EAAW6I,GACpE,IAAMtF,EAAUxN,KAAK8T,uBAAuB7J,GAC5C,OAAOjK,KAAKkI,qBAAqBsF,EAASsF,IAG5CzP,EAAerB,UAAUwH,uBAAyB,SAASC,GACzD,IAAMC,EAAS,IAAIrH,EAAMsH,MAAMF,GAC/B,GAAIzJ,KAAK0E,aAAc,CACrB,IAAIkF,EAAmB5J,KAAK0E,aAAamF,qBACzCD,EAAiBE,cAAeJ,EAAQ,KAI5CrG,EAAerB,UAAUkS,UAAY,WAC/BlU,KAAK0E,cACP1E,KAAK0E,aAAawP,aAGtB7Q,EAAerB,UAAUmS,QAAU,WAC7BnU,KAAK0E,cACP1E,KAAK0E,aAAayP,WAOtB9Q,EAAerB,UAAUsQ,cAAgB,SAAS8B,GAC5CpU,KAAK0E,eACP1E,KAAK0E,aAAa4N,cAAgB8B,IAMtC/Q,EAAerB,UAAUqS,YAAc,SAAShT,GAC1CrB,KAAK0E,cACP1E,KAAK0E,aAAa2P,YAAYhT,IAMlCgC,EAAerB,UAAUsS,YAAc,SAASjT,GAC9C,OAAIrB,KAAK0E,aACA1E,KAAK0E,aAAa4P,cAElB,GAOXjR,EAAerB,UAAUmM,mBAAqB,SAASoG,GACrD,QAA0B/Q,IAAtBxD,KAAK0E,mBAAyDlB,IAA3BxD,KAAK0S,kBAAiC,CAC3E,IAAI8B,EAAgB9C,IACpB1R,KAAK0E,aAAe8P,EAAc,YAClCxU,KAAK0S,kBAAoB8B,EAAc,aAErCD,IACFvU,KAAKsI,YAAciM,EACnBvU,KAAKsI,YAAYmK,YAAazS,KAAK0S,mBAC/B1S,KAAK0E,cACP1E,KAAK0E,aAAa+P,YAIxBpR,EAAerB,UAAUiP,QAAU,WAC7BjR,KAAK0E,eACP1E,KAAK0E,aAAagQ,UAClB1U,KAAK0E,aAAamF,qBAAqB6K,UACvC1U,KAAK0E,kBAAelB,GAErBpB,EAAQ,QAAgBoO,WAAYxO,UAAUiP,QAAQ1Q,KAAMP,OAG/DL,EAAQ0D,eAAiBA,G,qBCtQzBzD,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,Q,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,qBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,uC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,W,oCCAzB,W,qBCAAxC,EAAOD,QAAUyC,QAAQ,2B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,qBCAzBzC,EAAQkL,WAAa,WACnB7K,KAAK2I,KAAO,aACZ3I,KAAKyH,UAAOjE,EACZxD,KAAK2U,cAAe,I,mBCHtB/U,EAAOD,QAAUyC,QAAQ,4C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,iCCAzB,IAAM4Q,EAAa,CAAE5C,IAAK,EAAGsD,SAAU,EAAGT,YAAa,GAEjD2B,EAAiB,SAASC,EAAaC,GAC3C9U,KAAK8Q,UAAY+D,EACjB7U,KAAK+U,YAAcD,GAOfE,EAAe,SAASC,EAAcC,EAAYpE,GACtD9Q,KAAKmV,WAAa,GAClB,IAAMC,EAAaH,EACbpP,EAAWqP,EACjBlV,KAAKqV,gBAAkBvE,EACvB,IAAMxN,EAAQtD,UAEIwD,IAAdsN,IACF9Q,KAAKqV,gBAAkBrC,EAAW5C,KAEpCpQ,KAAKsV,aAAe,WAClB,OAAOxE,GAGT9Q,KAAKuV,OAAS,SAASC,EAAQ1E,EAAW2E,GACxC,GAAID,IAAWJ,IAAe9R,EAAM+R,kBAAqBrC,EAAW5C,KAChE9M,EAAM+R,kBAAoBvE,GAAY,CAGxC,IAAM4E,EAAQ,IAAId,EAAe9D,EAAW2E,GAC5C5P,EAAS6P,MAKf/V,EAAQgW,cAAgB,WACtB,IAAMC,EAAgB,GAEtB5V,KAAK+Q,QAAU,SAASyE,EAAQ1E,EAAW7J,GACzC,IAAK,IAAI7G,EAAI,EAAGA,EAAIwV,EAAchR,OAAOxE,IACvCwV,EAAcxV,GAAGmV,OAAOC,EAAQ1E,EAAW7J,IAI/CjH,KAAK6V,UAAY,SAAST,EAAYU,EAAkBhF,GACtD,GAAgC,oBAArBgF,EAAiC,CAC1C,IAAMC,EAAe,IAAIf,EAAaI,EAAYU,EAAkBhF,GAEpE,OADA8E,EAAc9P,KAAKiQ,GACZA,IAKX/V,KAAKgW,YAAc,SAASD,GAC1B,IAAK,IAAI3V,EAAI,EAAGA,EAAIwV,EAAchR,OAAOxE,IACvC,GAAI2V,IAAiBH,EAAcxV,GAEjC,YADAwV,EAAcrJ,OAAOnM,EAAG,KAOhCT,EAAQqT,WAAaA,G,qBChErBpT,EAAOD,QAAUyC,QAAQ,6B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,uB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2B,kCCAzB,W,mBCAAxC,EAAOD,QAAUyC,QAAQ,6C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,4B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,qC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,iD,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,yCCKzBzC,EAAQgS,MAAQ,CAEfK,iBAAkB,WAEjB,IAEC,IAAIiE,EAASpE,SAASC,cAAe,UACrC,SAAYK,OAAO+D,wBAA2BD,EAAOE,WAAY,WAAaF,EAAOE,WAAY,uBAEhG,MAAQC,GAET,OAAO,IAMTC,kBAAmB,WAElB,IAEC,IAAIJ,EAASpE,SAASC,cAAe,UACrC,SAAYK,OAAOmE,yBAA0BL,EAAOE,WAAY,WAE/D,MAAQC,GAET,OAAO,IAMT5D,qBAAsB,WAErB,OAAOxS,KAAKuW,gBAAiB,IAI9BC,sBAAuB,WAEtB,OAAOxW,KAAKuW,gBAAiB,IAI9BA,gBAAiB,SAAWE,GAE3B,IAAIC,EAAQ,CACXC,EAAG,QACHC,EAAG,WAGAC,EAAW,CACdF,EAAGxE,OAAO+D,sBACVU,EAAGzE,OAAOmE,wBAGPQ,EAAU,yKAEVC,EAAUlF,SAASC,cAAe,OA0BtC,OAzBAiF,EAAQ9P,GAAK,eACb8P,EAAQxO,MAAMyO,WAAa,YAC3BD,EAAQxO,MAAM0O,SAAW,OACzBF,EAAQxO,MAAM2O,WAAa,SAC3BH,EAAQxO,MAAM4O,UAAY,SAC1BJ,EAAQxO,MAAM6O,WAAa,OAC3BL,EAAQxO,MAAM8O,MAAQ,OACtBN,EAAQxO,MAAM+O,QAAU,QACxBP,EAAQxO,MAAM5B,MAAQ,QACtBoQ,EAAQxO,MAAMgP,OAAS,aAItBT,EAFID,EAAUJ,GAEJK,EAAQU,QAAS,KAAM,iBAIvBV,EAAQU,QAAS,KAAM,WAIlCV,EAAUA,EAAQU,QAAS,KAAMd,EAAOD,IAExCM,EAAQU,UAAYX,EAEbC,K,mBCzFT,SAASW,EAAe/W,GACtB,MAAM,IAAIgX,MAAM,IAAOhX,EAAO,kBAGhCf,EAAOD,QAAU+X,G,0CCJjB9X,EAAOD,QAAUyC,QAAQ,kC,yDCEzB,G,qDAAsB,qBAAX+P,OAAwB,CACjC,IAAIyF,EAAgBzF,OAAON,SAAS+F,cAE9BC,EAAmB,EAAQ,QAC/BD,EAAgBC,IAGV,kBAAmBhG,UACvB/Q,OAAOC,eAAe8Q,SAAU,gBAAiB,CAAE5Q,IAAK4W,IAI5D,IAAIC,EAAMF,GAAiBA,EAAcE,IAAIC,MAAM,2BAC/CD,IACF,IAA0BA,EAAI,IAKnB,ICrBXE,EAAS,WAAa,IAAIC,EAAIjY,KAASkY,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,WAAW,CAAC,CAAC3X,KAAK,UAAU4X,QAAQ,YAAYlX,MAAO4W,EAAW,QAAEO,WAAW,YAAYC,IAAI,oBAAoBC,YAAY,qBAAqBC,MAAM,CAAC,uBAAuB,aAAa,0BAA0B,kBAAkB,6BAA6B,uBAAuB,CAACP,EAAG,wBAAwBA,EAAG,MAAM,CAACK,IAAI,UAAUG,YAAY,CAAC,OAAS,OAAO,MAAQ,QAAQD,MAAM,CAAC,GAAK,oBAAoB,SAAW,MAAME,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAIA,EAAOnQ,KAAKyI,QAAQ,QAAyB,KAAjB0H,EAAOC,QAAoCd,EAAIe,yBAAyBF,GAA3C,SAAuDV,EAAG,MAAM,CAACE,WAAW,CAAC,CAAC3X,KAAK,OAAO4X,QAAQ,SAASlX,MAAO4W,EAAIgB,YAAchB,EAAIiB,gBAAiBV,WAAW,mCAAmC,CAAEP,EAAkB,eAAEG,EAAG,aAAa,CAACK,IAAI,iBAAiBE,MAAM,CAAC,QAAUV,EAAIkB,eAAe,UAAY,QAAQ,kBAAiB,EAAM,QAAU,SAAS,eAAe,8CAA8CC,MAAM,CAAC/X,MAAO4W,EAAIoB,kBAAkB,GAAQ,MAAExT,SAAS,SAAUyT,GAAMrB,EAAIsB,KAAKtB,EAAIoB,kBAAkB,GAAI,QAASC,IAAMd,WAAW,gCAAgCP,EAAIuB,KAAMvB,EAAkB,eAAEG,EAAG,IAAI,CAACE,WAAW,CAAC,CAAC3X,KAAK,UAAU4X,QAAQ,2BAA2BkB,IAAI,mBAAmBf,YAAY,+BAA+BG,GAAG,CAAC,UAAY,SAASC,GAAQ,OAAOb,EAAIyB,aAAa,IAAI,SAAW,SAASZ,GAAQ,OAAOb,EAAI0B,aAAa,MAAM,CAACvB,EAAG,OAAO,CAACM,YAAY,gBAAgB,CAACT,EAAI2B,GAAG,YAAY3B,EAAIuB,KAAKpB,EAAG,aAAa,CAACK,IAAI,kBAAkBE,MAAM,CAAC,QAAU,2BAA2B,UAAY,QAAQ,kBAAiB,EAAM,QAAU,SAAS,eAAe,+CAA+CS,MAAM,CAAC/X,MAAO4W,EAAIoB,kBAAkB,GAAQ,MAAExT,SAAS,SAAUyT,GAAMrB,EAAIsB,KAAKtB,EAAIoB,kBAAkB,GAAI,QAASC,IAAMd,WAAW,gCAAgCJ,EAAG,sBAAsB,CAACE,WAAW,CAAC,CAAC3X,KAAK,UAAU4X,QAAQ,4BAA4BkB,IAAI,oBAAoBhB,IAAI,qBAAqBE,MAAM,CAAC,YAAYV,EAAI4B,SAAS,OAAS5B,EAAI6B,QAAQ,qBAAqB7B,EAAI8B,kBAAkBlB,GAAG,CAAC,kBAAkBZ,EAAI+B,eAAe,iBAAiB/B,EAAIgC,cAAc,iBAAiBhC,EAAIiC,iBAAiB9B,EAAG,MAAM,CAACM,YAAY,eAAe,CAACN,EAAG,kBAAkB,CAACK,IAAI,oBAAoB,GAAIR,EAAIxU,UAAqB,YAAE2U,EAAG,aAAa,CAACK,IAAI,gBAAgBE,MAAM,CAAC,QAAU,wCAAwC,UAAY,MAAM,kBAAiB,EAAM,QAAU,SAAS,eAAe,6CAA6CS,MAAM,CAAC/X,MAAO4W,EAAIoB,kBAAkB,GAAQ,MAAExT,SAAS,SAAUyT,GAAMrB,EAAIsB,KAAKtB,EAAIoB,kBAAkB,GAAI,QAASC,IAAMd,WAAW,gCAAgCP,EAAIuB,KAAMvB,EAAIxU,UAAqB,YAAE2U,EAAG,MAAM,CAACE,WAAW,CAAC,CAAC3X,KAAK,UAAU4X,QAAQ,0BAA0BkB,IAAI,kBAAkBf,YAAY,wBAAwByB,MAAM,CAAElC,EAAImC,gBAAkB,YAAc,GAAInC,EAAIoC,iBAAiB,CAACjC,EAAG,UAAU,CAACO,MAAM,CAAC,KAAO,SAAS,CAACP,EAAG,cAAc,CAACO,MAAM,CAAC,MAAQ,qBAAqB,CAACP,EAAG,SAAS,CAACM,YAAY,eAAe,CAAET,EAAa,UAAEG,EAAG,eAAe,CAACM,YAAY,2BAA2BC,MAAM,CAAC,KAAO,SAAS2B,SAAS,CAAC,MAAQ,SAASxB,GAAQ,OAAOb,EAAIsC,MAAK,OAAWnC,EAAG,eAAe,CAACM,YAAY,2BAA2BC,MAAM,CAAC,KAAO,QAAQ2B,SAAS,CAAC,MAAQ,SAASxB,GAAQ,OAAOb,EAAIsC,MAAK,OAAUnC,EAAG,YAAY,CAACM,YAAY,SAASC,MAAM,CAAC,IAAM,EAAE,IAAMV,EAAIuC,QAAQ,MAAQvC,EAAIxU,UAAUR,YAAc,IAAMgV,EAAIuC,QAAQ,KAAO,GAAI,gBAAgB,sBAAsB,iBAAiBvC,EAAIwC,cAAc,MAAQxC,EAAIyC,YAAY7B,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAI0C,WAAW7B,QAAa,IAAI,GAAGV,EAAG,cAAc,CAACO,MAAM,CAAC,MAAQ,mBAAmB,CAACP,EAAG,SAAS,CAACM,YAAY,eAAe,CAACN,EAAG,MAAM,CAACM,YAAY,kBAAkB,CAACT,EAAI2B,GAAG,wBAAwBxB,EAAG,MAAM,CAACM,YAAY,UAAU,CAACT,EAAI2B,GAAG,IAAI3B,EAAI2C,GAAG3C,EAAI4C,iBAAiB,SAASzC,EAAG,MAAM,CAACM,YAAY,kBAAkB,CAACT,EAAI2B,GAAG,yBAAyBxB,EAAG,MAAM,CAACM,YAAY,UAAU,CAACT,EAAI2B,GAAG,IAAI3B,EAAI2C,GAAG3C,EAAI6C,iBAAiB,SAAS1C,EAAG,MAAM,CAACM,YAAY,kBAAkB,CAACT,EAAI2B,GAAG,oBAAoBxB,EAAG,YAAY,CAACM,YAAY,aAAaC,MAAM,CAAC,yBAAwB,EAAK,MAAQV,EAAI8C,aAAa,YAAc,SAAS,eAAe,4BAA4BlC,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOb,EAAI+C,aAAalC,MAAWb,EAAIgD,GAAIhD,EAAa,WAAE,SAASiD,GAAM,OAAO9C,EAAG,YAAY,CAACzW,IAAIuZ,EAAK7Z,MAAMsX,MAAM,CAAC,MAAQuC,EAAKC,MAAM,MAAQD,EAAK7Z,YAAW,IAAI,MAAM,IAAI,IAAI,GAAG4W,EAAIuB,KAAKpB,EAAG,MAAM,CAACM,YAAY,wBAAwB,CAACN,EAAG,aAAa,CAACO,MAAM,CAAC,QAAU,UAAU,UAAY,OAAO,kBAAiB,EAAM,QAAU,SAAS,eAAe,8CAA8CS,MAAM,CAAC/X,MAAO4W,EAAIoB,kBAAkB,GAAQ,MAAExT,SAAS,SAAUyT,GAAMrB,EAAIsB,KAAKtB,EAAIoB,kBAAkB,GAAI,QAASC,IAAMd,WAAW,+BAA+B,CAACJ,EAAG,eAAe,CAACM,YAAY,qBAAqBC,MAAM,CAAC,KAAO,YAAY,KAAO,UAAU2B,SAAS,CAAC,MAAQ,SAASxB,GAAQ,OAAOb,EAAImD,UAAU,UAAY,SAAStC,GAAQ,OAAOb,EAAIyB,aAAa,IAAI,SAAW,SAASZ,GAAQ,OAAOb,EAAI0B,aAAa,KAAK0B,KAAK,eAAe,GAAGjD,EAAG,aAAa,CAACO,MAAM,CAAC,QAAU,WAAW,UAAY,UAAU,kBAAiB,EAAM,QAAU,SAAS,eAAe,iDAAiDS,MAAM,CAAC/X,MAAO4W,EAAIoB,kBAAkB,GAAQ,MAAExT,SAAS,SAAUyT,GAAMrB,EAAIsB,KAAKtB,EAAIoB,kBAAkB,GAAI,QAASC,IAAMd,WAAW,+BAA+B,CAACJ,EAAG,eAAe,CAACM,YAAY,sBAAsBC,MAAM,CAAC,KAAO,YAAY,KAAO,WAAW2B,SAAS,CAAC,MAAQ,SAASxB,GAAQ,OAAOb,EAAIqD,WAAW,UAAY,SAASxC,GAAQ,OAAOb,EAAIyB,aAAa,IAAI,SAAW,SAASZ,GAAQ,OAAOb,EAAI0B,aAAa,KAAK0B,KAAK,eAAe,GAAGjD,EAAG,aAAa,CAACO,MAAM,CAAC,UAAY,MAAM,kBAAiB,EAAM,QAAU,SAAS,eAAe,kCAAkCS,MAAM,CAAC/X,MAAO4W,EAAIoB,kBAAkB,GAAQ,MAAExT,SAAS,SAAUyT,GAAMrB,EAAIsB,KAAKtB,EAAIoB,kBAAkB,GAAI,QAASC,IAAMd,WAAW,+BAA+B,CAACJ,EAAG,MAAM,CAACH,EAAI2B,GAAG,YAAYxB,EAAG,MAAMH,EAAI2B,GAAG,cAAcxB,EAAG,eAAe,CAACM,YAAY,wBAAwBC,MAAM,CAAC,KAAO,YAAY,KAAO,aAAa2B,SAAS,CAAC,MAAQ,SAASxB,GAAQ,OAAOb,EAAIsD,aAAa,UAAY,SAASzC,GAAQ,OAAOb,EAAIyB,aAAa,IAAI,SAAW,SAASZ,GAAQ,OAAOb,EAAI0B,aAAa,KAAK0B,KAAK,eAAe,IAAI,GAAGjD,EAAG,aAAa,CAACK,IAAI,oBAAoBE,MAAM,CAAC,UAAY,YAAY,MAAQ,MAAM,kBAAiB,EAAM,QAAU,QAAQ,eAAe,qCAAqC,CAACP,EAAG,SAAS,CAACM,YAAY,kBAAkB,CAACT,EAAI2B,GAAG,yBAAyBxB,EAAG,SAAS,CAACM,YAAY,qBAAqBT,EAAIgD,GAAIhD,EAAuB,qBAAE,SAASiD,GAAM,OAAO9C,EAAG,MAAM,CAACzW,IAAIuZ,EAAKf,MAAM,CAAC,mBAAoBe,EAAMA,GAAQjD,EAAIuD,kBAAoB,SAAU,IAAI3C,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAIe,yBAAyBkC,UAAY,IAAI,GAAG9C,EAAG,aAAa,CAACO,MAAM,CAAC,QAAU,0BAA0B,UAAY,QAAQ,kBAAiB,EAAM,QAAU,SAAS,eAAe,+CAA+CS,MAAM,CAAC/X,MAAO4W,EAAIoB,kBAAkB,GAAQ,MAAExT,SAAS,SAAUyT,GAAMrB,EAAIsB,KAAKtB,EAAIoB,kBAAkB,GAAI,QAASC,IAAMd,WAAW,+BAA+B,CAACJ,EAAG,eAAe,CAACE,WAAW,CAAC,CAAC3X,KAAK,UAAU4X,QAAQ,8BAA8BkB,IAAI,sBAAsBf,YAAY,gCAAgCyB,MAAM,CAAEsB,KAAMxD,EAAIyD,WAAYC,OAAQ1D,EAAIyD,YAAa/C,MAAM,CAAC,KAAO,YAAY,KAAO,eAAe2B,SAAS,CAAC,UAAY,SAASxB,GAAQ,OAAOb,EAAIyB,aAAa,IAAI,SAAW,SAASZ,GAAQ,OAAOb,EAAI0B,aAAa,KAAK0B,KAAK,eAAe,IAAI,IAAI,IAChrPO,EAAkB,G,kaCDlB,EAAS,WAAa,IAAI3D,EAAIjY,KAASkY,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,YAAsB1U,GAAdyU,EAAItI,SAAqByI,EAAG,MAAM,CAACK,IAAI,UAAUC,YAAY,mBAAmB,CAACN,EAAG,YAAY,CAACM,YAAY,iBAAiBC,MAAM,CAAC,eAAe,YAAY,QAAUV,EAAIyD,WAAW,kBAAiB,EAAM,wBAAuB,EAAM,KAAO,MAAM,eAAc,EAAM,oBAAmB,EAAM,OAAQ,GAAO7C,GAAG,CAAC,iBAAiB,SAASC,GAAQb,EAAIyD,WAAW5C,KAAU,CAAEb,EAAc,WAAEG,EAAG,MAAM,CAACM,YAAY,mBAAmBG,GAAG,CAAC,MAAQZ,EAAI4D,eAAe,CAACzD,EAAG,IAAI,CAACM,YAAY,0BAA0BT,EAAIuB,KAAKpB,EAAG,eAAe,CAACM,YAAY,qBAAqB,CAACN,EAAG,YAAY,CAACM,YAAY,SAASC,MAAM,CAAC,OAAS,SAAS,CAACP,EAAG,MAAM,CAACH,EAAI2B,GAAG,eAAexB,EAAG,UAAU,CAACM,YAAY,QAAQ,CAACN,EAAG,MAAM,CAACM,YAAY,SAAS,CAACN,EAAG,OAAO,CAACM,YAAY,WAAW,CAACT,EAAI2B,GAAG3B,EAAI2C,GAAG3C,EAAI6D,kBAAkB1D,EAAG,YAAY,CAACM,YAAY,YAAYC,MAAM,CAAC,KAAO,IAAK,IAAM,EAAE,IAAM,EAAE,iBAAiBV,EAAIwC,cAAc,gBAAe,GAAOrB,MAAM,CAAC/X,MAAO4W,EAAItI,SAAgB,QAAE9J,SAAS,SAAUyT,GAAMrB,EAAIsB,KAAKtB,EAAItI,SAAU,UAAW2J,IAAMd,WAAW,uBAAuB,MAAM,IAAI,GAAKP,EAAIyD,WAAiIzD,EAAIuB,KAAzHpB,EAAG,MAAM,CAACM,YAAY,kBAAkBG,GAAG,CAAC,MAAQZ,EAAI4D,eAAe,CAACzD,EAAG,IAAI,CAACM,YAAY,0BAAmC,GAAGT,EAAIuB,MAClzC,EAAkB,G,+MC+DtB,aACA,aACA,aACA,aACA,aACA,aACA,aAKA,OACE7Y,KAAM,kBACN8G,KAAM,WACJ,MAAO,CACLqU,cAAe,OACfnM,cAAUnM,EACVkY,YAAY,IAGhBK,MAAO,CACL,mBAAoB,WACd/b,KAAK2P,UACP3P,KAAKgc,YAAYC,SAASjc,KAAK2P,SAASuM,WAI9CC,QAAS,WACPnc,KAAKgc,iBAAcxY,GAErB4Y,QAAS,CACP3B,cADJ,SACA,GAEM,OADAza,KAAK8b,cAAgBO,KAAKC,MAAM,IAAMC,EAAM,IAAO,IAC5Cvc,KAAK8b,eAEdD,aAAc,WACZ7b,KAAK0b,YAAc1b,KAAK0b,YAE1Bc,UARJ,SAQA,GACkBxc,KAAK2P,SAAb7N,EAAwBA,EAAOwF,MAAMqI,cAC/C,EACM3P,KAAKgc,YAAcla,KCzGgU,I,UCM1U,SAAS2a,EACtBC,EACA1E,EACA4D,EACAe,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,oBAAlBP,EACjBA,EAAcO,QACdP,EAsDJ,GAnDI1E,IACFiF,EAAQjF,OAASA,EACjBiF,EAAQrB,gBAAkBA,EAC1BqB,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,GAEfA,EACEA,GACCrd,KAAKsd,QAAUtd,KAAKsd,OAAOC,YAC3Bvd,KAAKqH,QAAUrH,KAAKqH,OAAOiW,QAAUtd,KAAKqH,OAAOiW,OAAOC,WAEtDF,GAA0C,qBAAxBG,sBACrBH,EAAUG,qBAGRZ,GACFA,EAAarc,KAAKP,KAAMqd,GAGtBA,GAAWA,EAAQI,uBACrBJ,EAAQI,sBAAsBC,IAAIZ,IAKtCG,EAAQU,aAAeX,GACdJ,IACTI,EAAOD,EACH,WACAH,EAAarc,KACXP,MACCid,EAAQE,WAAand,KAAKqH,OAASrH,MAAM4d,MAAMC,SAASC,aAG3DlB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQc,cAAgBf,EAExB,IAAIgB,EAAiBf,EAAQjF,OAC7BiF,EAAQjF,OAAS,SAAmCiG,EAAGZ,GAErD,OADAL,EAAKzc,KAAK8c,GACHW,EAAeC,EAAGZ,QAEtB,CAEL,IAAIa,EAAWjB,EAAQkB,aACvBlB,EAAQkB,aAAeD,EACnB,GAAGE,OAAOF,EAAUlB,GACpB,CAACA,GAIT,MAAO,CACLrd,QAAS+c,EACTO,QAASA,GCvFb,IAAIoB,EAAY,EACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCnBX,EAAS,WAAa,IAAIpG,EAAIjY,KAASkY,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACM,YAAY,uBAAuByB,MAAM,CAAEsB,KAAMxD,EAAIyD,WAAYC,OAAQ1D,EAAIyD,aAAc,CAACtD,EAAG,MAAM,CAACM,YAAY,yBAAyB,CAACN,EAAG,SAAS,CAACA,EAAG,SAAS,CAACO,MAAM,CAAC,KAAO,KAAK,CAACP,EAAG,MAAM,CAACM,YAAY,wBAAwB,CAACT,EAAI2B,GAAG,iBAAiBxB,EAAG,SAAS,CAACO,MAAM,CAAC,KAAO,KAAK,CAACP,EAAG,cAAc,CAACM,YAAY,eAAeC,MAAM,CAAC,cAAgBV,EAAIqG,iBAAiBzF,GAAG,CAAC,OAASZ,EAAIsG,sBAAsBnF,MAAM,CAAC/X,MAAO4W,EAAY,SAAEpS,SAAS,SAAUyT,GAAMrB,EAAIuG,SAASlF,GAAKd,WAAW,aAAa,CAACP,EAAI2B,GAAG,oBAAoB,IAAI,GAAGxB,EAAG,oBAAoB,CAACM,YAAY,iBAAiBC,MAAM,CAAC,KAAO,SAASE,GAAG,CAAC,OAASZ,EAAIwG,0BAA0BrF,MAAM,CAAC/X,MAAO4W,EAAgB,aAAEpS,SAAS,SAAUyT,GAAMrB,EAAIyG,aAAapF,GAAKd,WAAW,iBAAiB,CAACJ,EAAG,MAAM,CAACM,YAAY,wBAAwBT,EAAIgD,GAAIhD,EAAyB,uBAAE,SAASiD,GAAM,OAAO9C,EAAG,SAAS,CAACzW,IAAIuZ,EAAKvC,MAAM,CAAC,MAAQuC,IAAO,CAAC9C,EAAG,MAAM,CAACM,YAAY,sBAAsB,CAACN,EAAG,cAAc,CAACM,YAAY,cAAcyB,MAAM,CAAEwE,WAAY1G,EAAI2G,eAAiB1D,EAC/mC2D,UAAW5G,EAAI6G,cAAgB5D,GAAOvC,MAAM,CAAC,MAAQuC,EAAK,SAAU,GAAMrC,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOb,EAAI8G,iBAAiB7D,EAAMpC,KAAUwB,SAAS,CAAC,MAAQ,SAASxB,GAAQ,OAAOb,EAAI+G,YAAY9D,EAAMpC,IAAS,UAAY,SAASA,GAAQ,OAAOb,EAAIgH,cAAc/D,MAAS,CAAC9C,EAAG,kBAAkB,CAAC+B,MAAM,CAAE,cAAgBlC,EAAI8B,kBAAmBpB,MAAM,CAAC,MAAQV,EAAIiH,UAAUhE,GAAM,KAAO,QAAQ,eAAejD,EAAIkH,eAAetG,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOb,EAAImH,UAAUlE,EAAMpC,OAAYb,EAAI2B,GAAG,IAAI3B,EAAI2C,GAAGM,GAAM,MAAM,IAAI,QAAO,MAAM,GAAG9C,EAAG,MAAM,CAACM,YAAY,gBAAgByB,MAAM,CAAEsB,KAAMxD,EAAIyD,WAAYC,OAAQ1D,EAAIyD,YAAa7C,GAAG,CAAC,MAAQZ,EAAI4D,eAAe,CAACzD,EAAG,IAAI,CAACM,YAAY,4BACltB,EAAkB,G,sECFP,SAAS2G,EAAkBC,EAAKC,IAClC,MAAPA,GAAeA,EAAMD,EAAI1a,UAAQ2a,EAAMD,EAAI1a,QAE/C,IAAK,IAAIxE,EAAI,EAAGof,EAAO,IAAI7b,MAAM4b,GAAMnf,EAAImf,EAAKnf,IAC9Cof,EAAKpf,GAAKkf,EAAIlf,GAGhB,OAAOof,ECNM,SAASC,EAAmBH,GACzC,GAAI3b,MAAM+b,QAAQJ,GAAM,OAAOK,EAAiBL,G,wCCFnC,SAASM,EAAiBC,GACvC,GAAsB,qBAAX1e,QAA0BA,OAAOqQ,YAAY1Q,OAAO+e,GAAO,OAAOlc,MAAMmc,KAAKD,G,8BCA3E,SAASE,GAA4Blf,EAAGmf,GACrD,GAAKnf,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO8e,EAAiB9e,EAAGmf,GACtD,IAAIne,EAAIf,OAAOkB,UAAUie,SAAS1f,KAAKM,GAAG+P,MAAM,GAAI,GAEpD,MADU,WAAN/O,GAAkBhB,EAAE4Q,cAAa5P,EAAIhB,EAAE4Q,YAAY9Q,MAC7C,QAANkB,GAAqB,QAANA,EAAoB8B,MAAMmc,KAAKje,GACxC,cAANA,GAAqB,2CAA2Cqe,KAAKre,GAAW8d,EAAiB9e,EAAGmf,QAAxG,GCPa,SAASG,KACtB,MAAM,IAAIC,UAAU,wICGP,SAASC,GAAmBf,GACzC,OAAOgB,EAAkBhB,IAAQiB,EAAgBjB,IAAQkB,GAA2BlB,IAAQmB,K,8GCwE9F,aACA,aACA,aACA,cACA,cACA,cACA,aAKA,QACE9f,KAAM,sBACN+f,MAAO,CAIL9gB,OAAQ,CACN+I,KAAM7H,OACN6f,aAASnd,GAKXuW,iBAAkB6G,SAEpBnZ,KAAM,WACJ,MAAO,CACL+W,UAAU,EACVF,iBAAiB,EACjBI,aAAc,GACdmC,sBAAuB,GACvBjC,aAAc,GACdE,YAAa,GACbK,cAAe,6BACfzD,YAAY,IAGhBK,MAAO,CACLhC,iBAAkB,CAChB+G,WAAW,EACXC,QAAS,WACH/gB,KAAK+Z,iBAAkB/Z,KAAKmf,cAAgB,aACxD,mDAIE6B,QAAS,WACP,IAAJ,0CACA,6BAEIC,EAAWA,EAAS7C,OAAOpe,KAAKJ,OAAO6D,UAAUV,WACjDke,EAAWC,GAAKD,EAAS7C,OAAOpe,KAAKJ,OAAO6D,UAAU0d,WACtDnhB,KAAK6gB,sBAAwBO,GAAQH,GACrCjhB,KAAKJ,OAAOsG,0BAA0BlG,KAAKqhB,aAC3CrhB,KAAKJ,OAAOoN,kBAAkB0B,aAAe,SAE/C4S,UAAW,WACTthB,KAAK6gB,2BAAwBrd,GAE/B4Y,QAAS,CAIPiF,YAAa,SAAjB,GACM,GAAI1gB,GAAgB,IAARA,EAAY,CACtB,IAAR,6CACQsgB,EAAWG,GAAQH,GACnB,IAAR,oBACY9U,GAAS,GACX8U,EAAS1U,OAAOJ,EAAO,GAEzBnM,KAAK6gB,sBAAwBI,IAMjCM,mBAAoB,SAAxB,KACM,IAAN,0CACUC,GAAgBA,EAAaC,iBAC/BzhB,KAAK4e,aAAeje,EACpBX,KAAK0hB,MAAM,kBAAmBF,EAAcG,IAE5C3hB,KAAK4hB,aAAaD,GAEpB3hB,KAAK6hB,YAAYF,IAKnBG,kBAAmB,SAAvB,KACM,IAAN,0CACUN,GACFxhB,KAAK8e,YAAcne,EACnBX,KAAK0hB,MAAM,iBAAkBF,EAAcG,IAE3C3hB,KAAK6hB,YAAYF,IAMrBC,aAAc,SAAlB,GACM5hB,KAAK4e,aAAe,GACpB5e,KAAK0hB,MAAM,uBAAmBle,EAAWme,IAK3CE,YAAa,SAAjB,GACM7hB,KAAK8e,YAAc,GACnB9e,KAAK0hB,MAAM,sBAAkBle,EAAWme,IAK1CI,MAAO,WACL/hB,KAAK6gB,sBAAwB,GAC7B7gB,KAAK0e,aAAe,GACpB1e,KAAKwe,UAAW,EAChBxe,KAAKse,iBAAkB,EACvBte,KAAK4e,aAAe,GACpB5e,KAAK8e,YAAc,GACnB9e,KAAK0hB,MAAM,uBAAmBle,IAEhCwe,gCAAiC,SAArC,GACM,GAAIhiB,KAAKJ,QAAUI,KAAKJ,OAAOwE,MAAO,CACpC,IAAR,mDACQ,GAAIoL,EAAM5K,OAAS,EAAG,OAAO4K,EAAM,GAEnC,GADAA,EAAQxP,KAAKJ,OAAOwE,MAAM0E,2BAA2BnI,GACjD6O,EAAM5K,OAAS,EAAG,OAAO4K,EAAM,GAEnC,GADAA,EAAQxP,KAAKJ,OAAOwE,MAAM4E,uBAAuBrI,GAC7C6O,EAAM5K,OAAS,EAAG,OAAO4K,EAAM,GAEnC,GADAA,EAAQxP,KAAKJ,OAAOwE,MAAM2E,2BAA2BpI,GACjD6O,EAAM5K,OAAS,EAAG,OAAO4K,EAAM,KAIvC0P,UAAW,SAAf,GACM,IAAN,0CACM,GAAI+C,EAAS,CACX,IAAR,mBACQ,GAAIC,EAAK,MAAO,IAAMA,EAExB,MAAO,WAET9C,UAAW,SAAf,KACM,IAAN,0CACM,GAAI6C,EAAS,CACX,IAAR,sBACQA,EAAQE,aAAaC,KAGzBnD,cAAe,SAAnB,GACMjf,KAAK8hB,kBAAkBnhB,GAAM,IAE/Bqe,YAAa,SAAjB,KAGA,mDACA,uDAGQhf,KAAKuhB,mBAAmB5gB,GAAM,GAC9B+U,EAAM2M,mBAGV5D,yBAA0B,WACxB,IAAN,uCACA,2BACU6D,GACV,IACMtiB,KAAKwe,SAAW+D,IAAiBviB,KAAK6gB,sBAAsBjc,OAC5D5E,KAAKse,gBACX,0CAEIC,qBArHJ,SAqHA,GACMve,KAAK0e,aAAenC,EAAM,GAAhC,+BACMvc,KAAKse,iBAAkB,EACvB,IAAK,IAAX,4CACQte,KAAK+e,iBAAiB/e,KAAK6gB,sBAAsBzgB,GAAIJ,KAAKwe,WAG9DrK,QAAS,WACPnU,KAAKJ,OAAOuU,WAEd4K,iBAAkB,SAAtB,KACM/e,KAAKJ,OAAOyJ,2BAA2B6R,EAAMxF,GAChC,GAATA,IACE1V,KAAK4e,eAAiB1D,GACxBlb,KAAK4hB,cAAa,GAEhB5hB,KAAK8e,cAAgB5D,GACvBlb,KAAK6hB,aAAY,KAIvBhG,aAAc,WACZ7b,KAAK0b,YAAc1b,KAAK0b,WACxB1b,KAAK0hB,MAAM,iBAAkB1hB,KAAK0b,aAEpC8G,SAAU,WACR,GAAIxiB,KAAKwe,SACP,MAAO,CAAf,aAEM,IAAN,wBACA,oBAIM,OAHIrS,GAAS,GACXuS,EAAanS,OAAOJ,EAAO,GAEtB,CAAb,iBAEIsW,SAAU,SAAd,GACM,GAAIC,EACF,GAAIA,EAAMlE,SAAU,CAClBxe,KAAK0e,aAAe,GAA9B,4BACU,IAAK,IAAf,4CACY1e,KAAKJ,OAAOyJ,2BACxB,+BACA,QAGA,mBACUrJ,KAAK0e,aAAe,GAA9B,gBACU,IAAK,IAAf,6CAEY,IAAZ,6BACA,+BACY1e,KAAKJ,OAAOyJ,2BACxB,8BACA,IAKMrJ,KAAKye,8BCzTkV,MCSzV,I,oBAAY,EACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,qBC+Of,aACA,aACA,uBACA,aACA,aACA,aACA,aACA,aACA,aACA,aAEA,8BACA,2BAQA,IACE9d,KAAM,eACNgiB,WAAY,CACVC,gBAAJ,EACIC,WAAJ,iBACIC,kBAAJ,wBACIC,oBAAJ,IAEErC,MAAO,CAOLjU,IAAK,CACH9D,KAAMqa,OACNrC,QAAS,IAKX5G,iBAAkB,CAChBpR,KAAMiY,QACND,SAAS,GAKX1H,UAAW,CACTtQ,KAAMiY,QACND,SAAS,GAOXsC,iBAAkB,CAChBta,KAAMiY,QACND,SAAS,GAKX9G,SAAU,CACRlR,KAAMiY,QACND,SAAS,GAKXuC,eAAgB,CACdva,KAAMiY,QACND,SAAS,GAMXxH,eAAgB,CACdxQ,KAAMqa,OACNrC,QAAS,2CAKXwC,eAAgB,CACdxa,KAAMiY,QACND,SAAS,GAKXyC,eAAgB,CACdza,KAAMiY,QACND,SAAS,GAKX0C,gBAAiB,CACf1a,KAAM7H,OACN6f,QAAS,WACP,MAAO,CACL2C,SAAU,GACVC,SAAU,GACV5c,MAAO,IACPE,OAAQ,IACR2c,MAAO,eAObd,MAAO,CACL/Z,KAAM7H,OACN6f,aAASnd,GAMXigB,OAAQ,CACN9a,KAAMqa,OACNrC,QAAS,IAOX/d,QAAS,CACP+F,KAAMqa,OACNrC,QAAS,IAKX3I,OAAQ,CACNrP,KAAMiY,QACND,SAAS,IAGblZ,KAAM,WACJ,MAAO,CACLhE,UAAWzD,KAAK8Z,QAAQrW,UACxBigB,WAAW,EAIXxK,iBAAiB,EACjByK,qBAAqB,EACrBtK,kBAAmB,CACzB,CAAQ,OAAR,GACA,CAAQ,OAAR,GACA,CAAQ,OAAR,GACA,CAAQ,OAAR,GACA,CAAQ,OAAR,GACA,CAAQ,OAAR,GACA,CAAQ,OAAR,IAEMuK,QAAQ,EACRC,SAAS,EACT1f,SAAU,IACVuX,YAAY,EACZF,kBAAmB,QACnBsI,oBAAqB,CAAC,QAAS,eAAgB,SAC/C1J,iBAAiB,EACjBC,eAAgB,GAChBG,QAAS,IACTK,gBAAiB,GACjBC,gBAAiB,QACjBiJ,UAAW,CACjB,CACQ,MAAR,GACQ,MAAR,QAEA,CACQ,MAAR,GACQ,MAAR,QAEA,CACQ,MAAR,EACQ,MAAR,MAEA,CACQ,MAAR,EACQ,MAAR,MAEA,CACQ,MAAR,EACQ,MAAR,MAEA,CACQ,MAAR,GACQ,MAAR,QAGMhJ,aAAc,EACdL,WAAY,KAGhBqB,MAAO,CACLtP,IAAK,CACHsU,QAAS,SAAf,QAC2Bvd,IAAfxD,KAAK0iB,YAA0Clf,IAAnBxD,KAAK0iB,MAAMjW,KACnD,gBAEMqU,WAAW,GAEb2C,OAAQ,CACN1C,QAAS,SAAf,GACc/gB,KAAK0iB,OAAS1iB,KAAK4C,SAAU5C,KAAKgkB,iBAAiBP,IAE3D3C,WAAW,GAEb4B,MAAO,CACL3B,QAAS,SAAf,GACQ/gB,KAAKyiB,SAASC,IAEhB5B,WAAW,EACXmD,MAAM,GAERrhB,QAAS,CACPme,QAAS,SAAf,GACQ/gB,KAAKkkB,cAActhB,IAErBke,WAAW,GAEbjH,SAAU,SAAd,GACM7Z,KAAKmkB,YAAY5H,IAEnB4G,eAAgB,SAApB,GACMnjB,KAAK8Z,QAAQ1V,MAAM+e,eAAiB5G,GAEtC6G,eAAgB,SAApB,GACMpjB,KAAK8Z,QAAQ1V,MAAMgf,eAAiB7G,GAEtC,wBAAyB,WAOvBvc,KAAK0hB,MAAM,cAAe1hB,KAAKyD,UAAUR,cAE3CkB,SAAU,WACRnE,KAAK8Z,QAAQ1V,MAAMggB,YAAYpkB,KAAKmE,WAEtCkf,gBAAiB,CACfY,MAAM,EACNlD,QAAS,wBAEX/I,OAAQ,SAAZ,GACMhY,KAAKqkB,gBAAgB9H,KAGzB4B,aAAc,WACZne,KAAK8Z,QAAU,IAAI3W,GACnBnD,KAAKskB,SAAU,EACftkB,KAAKukB,oBAAiB/gB,EACtBxD,KAAKwkB,mBAAgBhhB,EACrBxD,KAAKwb,kBAAoB,QACzBxb,KAAKykB,iBAAcjhB,EACnBxD,KAAK8jB,oBAAsB,CAAC,QAAS,QAAS,iBAEhD3H,QAAS,WACP,IAAJ,SACI7K,EAAcuE,UAAU7V,KAAMA,KAAK0kB,uBACnC1kB,KAAK8Z,QAAQzI,YAAYC,GACzBtR,KAAK8Z,QAAQ5T,0BAA0BlG,KAAKqhB,aAC5CrhB,KAAK8Z,QAAQ3L,mBAAmBnO,KAAK2kB,MAAMC,SAC3C5kB,KAAKqkB,gBAAgBrkB,KAAKgY,QAC1BhY,KAAK6kB,GAAK,IAAIC,eAAe9kB,KAAK+kB,cAAcC,QACpD,8BAEIhlB,KAAKilB,YAAcjlB,KAAK8Z,QAAQxF,eAElC4Q,cAAe,WACTllB,KAAK6kB,IAAI7kB,KAAK6kB,GAAGM,aACrBnlB,KAAK8Z,QAAQ7I,UACbjR,KAAK8Z,aAAUtW,GAEjB4Y,QAAS,CAIPiF,YAAa,WACXrhB,KAAK6jB,SAAU,GAQjB7K,yBAA0B,SAA9B,GACMhZ,KAAKwb,kBAAoB9R,EACzB1J,KAAK8Z,QAAQpV,aACnB,qBACA,yCAMI0gB,0BAA2B,WAEzBplB,KAAK8Z,QAAQpV,aAAa2gB,iCAChC,gBAEM,IAAN,4BACA,qBACA,kCACA,8BACMxT,SAASyT,KAAKC,OAAOC,GAChBxlB,KAAKylB,gBAChB,gCADiCD,EAAYE,SAAW,iBAElDF,EAAYG,KAAOC,EACnBJ,EAAYK,QACZL,EAAYM,UASdC,kBAAmB,SAAvB,GACM/lB,KAAKylB,gBAAkBO,EACvBhmB,KAAKimB,UAAYjmB,KAAK8Z,QAAQpV,aAAa2J,8BACjD,iCAGIoM,cApDJ,SAoDA,GACM,GAAIza,KAAKwa,SAAW,KACd+B,EAAK,CACP,IAAV,6BACA,mCACU,OAAO2J,EAAMC,EAGjB,OAAO5J,EAAMA,EAAI6J,QAAQ,GAAK,MAAQ,QAQxC7K,UAAW,WACLvb,KAAK8Z,QAAQ1V,OACfpE,KAAK8Z,QAAQ1V,MAAM+P,WASvBiH,OAAQ,WACFpb,KAAK8Z,QAAQ1V,OACfpE,KAAK8Z,QAAQ1V,MAAMiiB,4BAA4B,IASnD/K,QAAS,WACHtb,KAAK8Z,QAAQ1V,OACfpE,KAAK8Z,QAAQ1V,MAAMiiB,2BAA2B,IAQlDrL,aAAc,SAAlB,GACMhb,KAAK+a,aAAeuL,EACpBtmB,KAAK8Z,QAAQzF,YAAYrU,KAAKilB,YAAcjlB,KAAK+a,eAOnDwL,aAAc,WACZ,IAAN,6CACMC,EAAcC,iBACdzmB,KAAKkZ,iBAAkB,GAKzBwN,WAAY,SAAhB,GACM,GAAI/lB,GAAgB,IAARA,GAAcX,KAAK8Z,QAAQ1V,MAAO,CAC5C,IAAR,iDACA,oDACYuiB,GACF3mB,KAAK8Z,QAAQ1V,MAAMwiB,uBAAuBD,KAIhD3C,iBAAkB,SAAtB,GACUrjB,IACEX,KAAKskB,QACPtkB,KAAK0mB,WAAW/lB,GAEhBX,KAAK8Z,QAAQ3T,0BACvB,2BAAY,OAAZ,OAKI+d,cAAe,SAAnB,GACM,GAAIthB,EACF,GAAI5C,KAAKskB,QAAS,CAChB,IAAV,sBACUtkB,KAAK8Z,QAAQ1V,MAAM0I,YAAYL,QAE/BzM,KAAK8Z,QAAQ3T,0BACvB,2BAAY,QAAZ,MAKI0gB,gBAAiB,WACf,GAAI7mB,KAAK8Z,QAAQpV,aACf,OAAO1E,KAAK8Z,QAAQpV,aAAamF,qBAAqBid,MAU1DC,SAAU,WACR,GAAI/mB,KAAK8Z,QAAQ1V,MAAO,CACtB,IAAR,6CACQpE,KAAKkZ,iBAAkB,EACvBsN,EAAcQ,mBACdR,EAAcS,WAAW,CAAC,EAAK,GAAM5K,KAAK6K,IAAI,GAC9CC,WAAWnnB,KAAKumB,aAAc,OAOlC7B,sBAAuB,SAA3B,GACM,GAAuB,GAAnBhP,EAAM5E,UAAgB,CACxB,GAAI9Q,KAAK2kB,MAAMyC,mBACb,GAAI1R,EAAMX,YAAY,GAAI,CACxB,IAAZ,2BACA,yBACA,4BACY/U,KAAK2kB,MAAMyC,mBAAmB7F,mBAAmBta,GAAI,QAErDjH,KAAK2kB,MAAMyC,mBAAmBxF,cAAa,GAS/C5hB,KAAK0hB,MAAM,oBAAqBhM,EAAMX,kBAC9C,mBACQ,GAAI/U,KAAK2kB,MAAMyC,mBACb,GAAI1R,EAAMX,YAAY,GAAI,CACxB,IAAZ,2BACA,yBACA,4BACY/U,KAAK2kB,MAAMyC,mBAAmBtF,kBAAkB,GAA5D,QACA,8CAQQ9hB,KAAK0hB,MAAM,uBAAwBhM,EAAMX,eAQ7CsS,yBAA0B,WACxB,GAAIrnB,KAAKukB,eACP,OAAOvkB,KAAK8Z,QAAQ1V,MAAMkjB,mBAAmB,CAACtnB,KAAKukB,kBAWvDgD,8BAA+B,WAC7B,OAAOvnB,KAAK8Z,QAAQvU,2BAKtBoV,WAAY,SAAhB,GACM,IAAN,qBACU6M,GAAkBxnB,KAAKyD,UAAUR,aAC3C,4BAOI+W,eAAgB,SAApB,KACUlY,IAAW9B,KAAKukB,iBAClBvkB,KAAKukB,eAAiBziB,EACtB9B,KAAK2kB,MAAM8C,eAAejL,UAAUxc,KAAKukB,gBACrCziB,EAAQ9B,KAAK8Z,QAAQ3R,wBAAwBrG,EAAQ6f,GACjE,0CAQI1H,cAAe,SAAnB,KACUnY,IAAW9B,KAAKwkB,gBAClBxkB,KAAKwkB,cAAgB1iB,EACjBA,EAAQ9B,KAAK8Z,QAAQ5G,2BAA2BpR,EAAQ6f,GACpE,6CAQIJ,mBAAoB,SAAxB,UACmB/d,IAAT7C,EACV,8CAEA,uDAOI+mB,wBAAyB,SAA7B,UACmBlkB,IAAT7C,EACV,6CAEA,sDAOI4Z,KAAM,SAAV,GACMva,KAAK8Z,QAAQxH,cAAc8B,GAC3BpU,KAAK0jB,UAAYtP,GAKnB+P,YAAa,SAAjB,GACUtK,GACF7Z,KAAK4jB,QAAS,EACd5jB,KAAKqZ,kBAAkBsO,SAAQ,SAAvC,GACUzM,EAAK7Z,OAAQ,OAGfrB,KAAK4jB,QAAS,EACd5jB,KAAKqZ,kBAAkBsO,SAAQ,SAAvC,GACUzM,EAAK7Z,OAAQ,OAQnBqY,aAAc,SAAlB,cACW1Z,KAAK4jB,SACR5jB,KAAK4nB,YAAcT,YAAW,WAC5B,EAAV,gCACA,OAMIxN,aAAc,SAAlB,GACW3Z,KAAK4jB,SACR5jB,KAAKqZ,kBAAkBwO,GAAexmB,OAAQ,EAC9CymB,aAAa9nB,KAAK4nB,eAOtBG,qBAAsB,WAA1B,WACMjnB,OAAOmL,KAAKjM,KAAKqjB,iBAAiBsE,SAAQ,SAAhD,GACQ,EAAR,wDAEM3nB,KAAK8Z,QAAQ1V,MAAM4jB,eAAeC,gBAAiB,GAErDC,wBAAyB,WACvBloB,KAAK+a,aAAe,EACpB/a,KAAK8Z,QAAQzF,YAAYrU,KAAKilB,aAC9BjlB,KAAK6a,gBAAkB7a,KAAK8Z,QAAQ1V,MAAM+jB,eAChD,oBAEMnoB,KAAK8a,gBAAkB9a,KAAK8Z,QAAQ1V,MAAM+jB,eAAe,YACzD,IAAN,kDAEM,IAAK,IAAX,KADMnoB,KAAK0a,WAAa,GACxB,EACQ1a,KAAK0a,WAAWA,EAAW/Y,IAAQA,EAErC3B,KAAKwa,QAAUxa,KAAK8Z,QAAQ1V,MAAMC,eAEpC+jB,qBAAsB,SAA1B,cACM,OAAO,WACL,GAAInL,EAAS,CACX,GAAIA,EAAQoL,SACV,EAAZ,cACA,wBACA,0CACA,8BACY,IAAZ,2BACY,EAAZ,kCACA,yBACY,EAAZ,qBAEcpL,EAAQqL,YAEV,EAAZ,sBACc,EAAd,mDAIQ,EAAR,0BACQ,EAAR,wBACQ,EAAR,sBACQ,EAAR,sCACQ,EAAR,aASI9F,SAAU,WACR,IAAN,GACQ/V,IAAKzM,KAAKykB,YACV4D,cAAU7kB,EACV8kB,gBAAY9kB,GAId,GAFIxD,KAAK2kB,MAAMyC,qBACrB,uDACUpnB,KAAK8Z,QAAQ1V,MAAO,CACtB,IAAR,6CACQse,EAAM2F,SAAWE,EAAmBC,qBAEtC,OAAO9F,GAQTD,SAAU,SAAd,GACUC,IACEA,EAAMjW,KAAOiW,EAAMjW,MAAQzM,KAAKykB,YAClCzkB,KAAKyoB,eAAe/F,EAAMjW,IAAK,CAC7B4b,SAAU3F,EAAM2F,SAChBC,WAAY5F,EAAM4F,cAGhB5F,EAAM2F,UAAY3F,EAAM4F,cACtBtoB,KAAKskB,SAAWtkB,KAAK8Z,QAAQ1V,OAC3Bse,EAAM2F,UACxB,mBACA,wBACA,qCACkB3F,EAAM4F,YACxB,sDAEctoB,KAAK8Z,QAAQ3T,0BAC3B,2BACgB,SAAhB,WACgB,WAAhB,mBAQIuiB,WAAY,SAAhB,GACM,OAAO1oB,KAAK8Z,QAAQ1V,MAAMskB,WAAWC,IASvCF,eAAgB,SAApB,KACM,GAAIG,GAAY5oB,KAAKykB,YAAa,CAChC,IAAR,kCACA,EACA,oCACQzkB,KAAKykB,YAAcmE,EACf5oB,KAAK2kB,MAAMyC,oBACvB,sCACQpnB,KAAK6jB,SAAU,EACf7jB,KAAKskB,SAAU,EACftkB,KAAK8Z,QAAQ3T,0BACrB,2BACU,SAAV,EACU,OAAV,YACU,QAAV,aACU,WAAV,KAGQnG,KAAK8Z,QAAQtN,kBACrB,OACA,OACA,EACA,aACA,GAEQxM,KAAK8Z,QAAQ1V,MAAM+e,eAAiBnjB,KAAKmjB,eACzCnjB,KAAK8Z,QAAQ1V,MAAMgf,eAAiBpjB,KAAKojB,eACzCpjB,KAAK+nB,yBASTc,OAAQ,SAAZ,GACM7oB,KAAKyoB,eAAeG,OAAUplB,IAMhC0W,cAAe,SAAnB,GACMla,KAAK0b,WAAatH,EAClBpU,KAAK+kB,gBAMPA,aAAc,WACZ,IAAN,2CACM/kB,KAAKoa,gBAAkBzT,EAAQ,IAC3B3G,KAAKoa,gBACPpa,KAAKqa,eAAiBra,KAAK0b,WAAa,QAAU,OAElD1b,KAAKqa,eAAiB,IAG1BgK,gBAAiB,SAArB,GACUrkB,KAAK8Z,QAAQpV,eACX0P,EACFpU,KAAK8Z,QAAQpV,aAAa+P,UAE1BzU,KAAK8Z,QAAQpV,aAAaokB,gBAIhCC,YAAa,WACP/oB,KAAK8Z,QAAQpV,cACf1E,KAAK8Z,QAAQpV,aAAaskB,oBCviCoT,MCSlV,I,oBAAY,EACd,GACAhR,EACA4D,GACA,EACA,KACA,WACA,OAIa,M,4BCpBfhc,EAAOD,QAAUyC,QAAQ,uC,mBCAzBxC,EAAOD,QAAUyC,QAAQ","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\");","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(\"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\");","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=023c058f&scoped=true&lang=scss&\"","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&\"","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\");","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\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 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\");","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 = 0x0000FF;\n this.selectColour = 0x00FF00;\n this.originalColour = 0x000000;\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.setHex(_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.setHex(_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.setHex(_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.setHex(_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\");","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\");","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=b0ace276&scoped=true&lang=scss&\"","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\");","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 this.module.graphicsHighlight.selectColour = 0x444444;\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=b0ace276&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=b0ace276&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 \"b0ace276\",\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 this.$module.scene.viewAllWithBoundingBox(box);\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 */\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 }\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=023c058f&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=023c058f&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 \"023c058f\",\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":""}
|