@abi-software/scaffoldvuer 0.1.52-beta.0 → 0.1.52-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scaffoldvuer.common.js +59 -26
- package/dist/scaffoldvuer.common.js.map +1 -1
- package/dist/scaffoldvuer.css +1 -1
- package/dist/scaffoldvuer.umd.js +59 -26
- 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 +10 -7
- package/package.json +2 -2
- package/src/App.vue +20 -0
- package/src/components/ScaffoldVuer.vue +8 -1
- package/src/scripts/organsRenderer.js +23 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://scaffoldvuer/webpack/bootstrap","webpack://scaffoldvuer/external \"core-js/modules/es.symbol.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/checkbox-group\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?d2d1","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/checkbox-group.css\"","webpack://scaffoldvuer/external \"element-ui/lib/select\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/select.css\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.for-each\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.concat\"","webpack://scaffoldvuer/external \"element-ui/lib/container\"","webpack://scaffoldvuer/external \"core-js/modules/web.dom-collections.iterator\"","webpack://scaffoldvuer/./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/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://scaffoldvuer/external \"core-js/modules/web.url\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://scaffoldvuer/external \"element-ui/lib/header\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tabs.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.number.to-fixed\"","webpack://scaffoldvuer/external \"element-ui/lib/tab-pane\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/color-picker.css\"","webpack://scaffoldvuer/external \"element-ui/lib/drawer\"","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?1453","webpack://scaffoldvuer/external \"@abi-software/svg-sprite\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?4ffd","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/components/OpacityControls.vue?e8dc","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://scaffoldvuer/./src/scripts/graphicsHighlight.js","webpack://scaffoldvuer/external \"core-js/modules/es.regexp.to-string\"","webpack://scaffoldvuer/external \"core-js/modules/es.symbol\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?7756","webpack://scaffoldvuer/external \"core-js/modules/es.array.slice\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://scaffoldvuer/external \"lodash/orderBy\"","webpack://scaffoldvuer/./src/scripts/BaseModule.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.index-of\"","webpack://scaffoldvuer/external \"element-ui/lib/locale/lang/en\"","webpack://scaffoldvuer/external \"element-ui/lib/row\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/typeof.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/col.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/main.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.splice\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?832c","webpack://scaffoldvuer/external \"element-ui/lib/locale\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/option.css\"","webpack://scaffoldvuer/./src/scripts/RendererModule.js","webpack://scaffoldvuer/external \"core-js/modules/es.object.to-string\"","webpack://scaffoldvuer/external \"vue\"","webpack://scaffoldvuer/external \"element-ui/lib/tabs\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/icon.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.string.iterator\"","webpack://scaffoldvuer/external \"zincjs\"","webpack://scaffoldvuer/external \"element-ui/lib/popover\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/slider.css\"","webpack://scaffoldvuer/./src/scripts/annotation.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tab-pane.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/base.css\"","webpack://scaffoldvuer/./src/scripts/eventNotifier.js","webpack://scaffoldvuer/external \"@soda/get-current-script\"","webpack://scaffoldvuer/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/./src/components/TraditionalControls.vue?1801","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?e06b","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/./src/components/index.js","webpack://scaffoldvuer/./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js","webpack://scaffoldvuer/external \"core-js/modules/es.string.includes\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/row.css\""],"names":["_nonIterableSpread","TypeError","module","exports","_iterableToArray","iter","Symbol","iterator","Object","Array","from","arrayLikeToArray","require","_arrayWithoutHoles","arr","isArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_toConsumableArray","THREE","OrgansSceneData","currentName","currentSystem","currentPart","currentSpecies","metaURL","viewURL","geometries","lines","glyphsets","pointsets","currentTime","timeVarying","OrgansViewer","ModelsLoaderIn","RendererModule","call","_this","pickerScene","undefined","sceneData","timeChangedCallbacks","sceneChangedCallbacks","organPartAddedCallbacks","finishDownloadCallback","modelsLoader","typeName","getSceneData","updateTime","value","duration","scene","getDuration","actualTime","nerveMapIsActive","setMorphsTime","preRenderTimeUpdate","zincRenderer","getCurrentTime","i","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","name","camera","setFromMatrixPosition","obj","matrixWorld","widthHalf","width","heightHalf","height","project","getIdObjectFromIntersect","intersected","id","intersectedObject","object","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","singleItemDownloadCompletedCallback","geometry","updateFieldvisibility","dataFields","geometryName","PartName","partDetails","getOrganDetails","SystemName","loadMetadataURL","getOrgansDirectoryPrefix","meta","getAvailableSpecies","availableSpecies","keysArray","keys","organsFileMap","index","hasOwnProperty","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","prototype","create","_arrayLikeToArray","len","arr2","GraphicsHighlight","currentHighlightedObjects","currentSelectedObjects","highlightColour","selectColour","originalColour","isDifferent","array1","array2","matched","j","getUnmatchingObjects","objectsArray1","objectsArray2","unmatchingObjects","setHighlighted","previousHighlightedObjects","resetHighlighted","array","fullList","getFullListOfObjects","material","emissive","setRGB","setSelected","previousHSelectedObjects","resetSelected","depthFunc","LessEqualDepth","_unsupportedIterableToArray","o","minLen","n","toString","slice","constructor","test","MODULE_CHANGE","ALL","DESTROYED","NAME_CHANGED","SETTINGS_CHANGED","BaseModule","onChangedCallbacks","eventNotifiers","callbackArray","publishChanges","eventType","publish","getName","destroy","addChangedCallback","removeChangedCallback","indexOf","addNotifier","eventNotifier","_typeof","createRenderer","WEBGL","localContainer","document","createElement","localRenderer","isWebGLAvailable","Zinc","Renderer","window","defaultMaterialColor","initialiseVisualisation","playAnimation","warning","getWebGLErrorMessage","appendChild","rendererContainer","isZincObject","count","glyphset","propagateChanges","changed","EVENT_TYPE","HIGHLIGHTED","setHighlightedByZincObject","setupLiveCoordinates","zincObjects","boundingBox","getBoundingBoxOfZincObjects","newSelectedCenter","getCenter","objectsToZincObjects","SELECTED","addGlyphToArray","glyph","getMesh","findObjectsByGroupName","forEachGlyph","setHighlightedByGroupName","setSelectedByGroupName","resetView","viewAll","flag","setPlayRate","getPlayRate","displayAreaIn","returnedValue","animate","dispose","isAnnotation","SelectionEvent","eventTypeIn","identifiersIn","identifiers","returnFullID","sourceId","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","contexts","message","element","fontFamily","fontSize","fontWeight","textAlign","background","color","padding","margin","replace","innerHTML","_readOnlyError","Error"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACyDnB;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AAGA;AACA,yBADA;AAEA;AACA;AACA,2BADA;AAEA,yBAFA;AAGA;AAHA;AAKA,GARA;AASA;AACA;AACA;AACA;AACA;AACA;AALA,GATA;AAgBA;AACA;AACA,GAlBA;AAmBA;AACA,iBADA,yBACA,GADA,EACA;AACA;AACA;AACA,KAJA;AAKA;AACA;AACA,KAPA;AAQA,aARA,qBAQA,MARA,EAQA;AACA,6DACA;AACA;AACA;AAZA;AAnBA,G;;AC3EyU,CAAgB,8HAAG,EAAC,C;;;;;ACA7V;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACjG0G;AACvC;AACL;AACsC;;;AAGpG;AAC0F;AAC1F,gBAAgB,kBAAU;AAC1B,EAAE,kDAAM;AACR,EAAE,+DAAM;AACR,EAAE,wEAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,qE;;ACnBf,IAAI,mEAAM,gBAAgB,aAAa,0BAA0B,wBAAwB,iBAAiB,0CAA0C,gDAAgD,YAAY,oCAAoC,4BAA4B,OAAO,WAAW,YAAY,mCAAmC,uCAAuC,OAAO,WAAW,oBAAoB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A;AAoCA;AACA,2DACA,2BADA;AAGA;AACA;AACA;AACA;AACA,GA5CA;AA6CA;AACA;AACA,GA/CA;AAgDA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA,KAdA;;AAeA;;;AAGA;AACA;;AACA;AACA;AACA;AACA,OAHA,MAGA;AACA;AACA;;AACA;AACA,KA3BA;;AA4BA;;;AAGA;AACA;;AACA;AACA;AACA;AACA,OAHA,MAGA;AACA;AACA;AACA,KAvCA;;AAwCA;;;AAGA;AACA;AACA;AACA,KA9CA;;AA+CA;;;AAGA;AACA;AACA;AACA,KArDA;;AAsDA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAjEA;AAkEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,KA9EA;AA+EA;AACA;;AACA;AACA;AACA;AACA;;AACA;AACA,KAtFA;AAuFA;AACA;;AACA;AACA;AACA;AACA;AACA,KA7FA;AA8FA;AACA;AACA,KAhGA;AAiGA;AACA,UACA,EACA,yDACA,wDAFA,CADA,EAKA;AACA;AACA;AACA;AACA,KA3GA;AA4GA;AACA;AACA;AACA,mBACA;AACA;AACA,6BACA,oEADA;AAEA,KApHA;AAqHA,wBArHA,gCAqHA,GArHA,EAqHA;AACA;AACA;;AACA;AACA;AACA;AACA,KA3HA;AA4HA;AACA;AACA,KA9HA;AA+HA;AACA;;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,KAzIA;AA0IA;AACA;AACA;AACA,KA7IA;AA8IA;AACA;AACA;AAAA;AAAA;AACA;;AACA;;AACA;;AACA;AACA;AACA;;AACA;AAAA;AAAA;AACA,KAxJA;AAyJA;AACA;AACA;AACA;;AACA;AACA,mDACA,6BADA,EAEA,IAFA;AAIA;AACA,SARA,MAQA;AACA;;AACA;AAEA,qDACA,8BADA;AAEA,mDACA,8BADA,EAEA,OAFA;AAIA;AACA;AACA;;AACA;AACA;AAjLA;AAhDA,G;;ACxF6U,CAAgB,sIA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AzQA;AA0QA;AACA;;;AAGA;AACA;AACA,KANA;;AAOA;;;;;;AAMA;AACA;AACA,gCACA,kBADA,GAEA,aAFA,CAEA,sBAFA,EAEA,CAFA;AAGA,KAlBA;;AAmBA;;;;AAIA;AACA;AACA,iEACA,cADA;AAGA,iDACA,kBADA,GAEA,UAFA,CAEA,SAFA,CAEA,WAFA;AAGA;AACA;AACA,8EACA;AACA;AACA;AACA;AACA,KAtCA;;AAuCA;;;;;;;AAOA;AACA;AACA,+EACA,8BADA;AAGA,KAnDA;AAoDA,iBApDA,yBAoDA,GApDA,EAoDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,KA7DA;;AA8DA;;;;;;AAMA;AACA;AACA;AACA;AACA,KAxEA;;AAyEA;;;;;;AAMA;AACA;AACA;AACA;AACA,KAnFA;;AAoFA;;;;;;AAMA;AACA;AACA;AACA;AACA,KA9FA;;AA+FA;;;;;AAKA;AACA;AACA;AACA,KAvGA;;AAwGA;;;;;AAKA;AACA;AACA;AACA;AACA,KAjHA;;AAkHA;;;AAGA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,KA7HA;AA8HA;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA,iDACA;AAAA;AAAA,YADA;AAGA;AACA;AACA,KAxIA;AAyIA;AACA;AACA;AACA;AACA;AACA,SAHA,MAGA;AACA,iDACA;AAAA;AAAA,YADA;AAGA;AACA;AACA,KApJA;AAqJA;AACA;AACA;AACA;;AACA;AACA,KA1JA;;AA2JA;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAzKA;;AA0KA;;;;AAIA;AACA;AACA;AACA;AACA,oDACA,4BADA,GAEA,+BAFA;AAGA;AACA,WALA,MAKA;AACA;AACA;AACA;AACA;;;;;;;;AAMA;AACA,OAlBA,MAkBA;AACA;AACA;AACA,qDACA,4BADA,GAEA,+BAFA;;AAGA;AACA,WALA,MAKA;AACA;AACA;;;;;;;;AAMA;AACA;AACA,KAlNA;;AAmNA;;;;;AAKA;AACA;AACA;AACA;;AACA;AACA,KA7NA;;AA8NA;;;;;;;AAOA;AACA;AACA,KAvOA;;AAwOA;;;AAGA;AACA;AACA,wDACA;AACA,KA/OA;;AAgPA;;;;;AAKA;AACA;AACA;AACA;AACA,iFACA;AACA;AACA,KA5PA;;AA6PA;;;;;AAKA;AACA;AACA;AACA,oFACA;AACA;AACA,KAxQA;;AAyQA;;;;;AAKA;AACA,8BACA,sDADA,KAGA;AACA,KAnRA;;AAoRA;;;;;AAKA;AACA,8BACA,qDADA,KAGA;AACA,KA9RA;;AA+RA;;;;;AAKA;AACA;AACA;AACA,KAvSA;;AAwSA;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAFA;AAGA,OALA,MAKA;AACA;AACA;AACA;AACA,SAFA;AAGA;AACA,KAvTA;;AAwTA;;;;AAIA;AAAA;;AACA;AACA;AACA;AACA,SAFA,EAEA,GAFA;AAGA;AACA,KAlUA;;AAmUA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KA3UA;;AA4UA;;;;AAIA;AAAA;;AACA;AACA;AACA,OAFA;AAGA;AACA,KArVA;AAsVA;AACA;AACA;AACA,+DACA,kBADA;AAGA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA,KAnWA;AAoWA;AAAA;;AACA;AACA;AACA;AACA,iCACA,qBADA,GAEA,wBAFA,CAEA,gBAFA;AAGA,WAJA,MAIA;AACA;;AACA;AACA,WAHA,MAGA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,aAFA;AAGA;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;AACA,OAxBA;AAyBA,KA9XA;;AA+XA;;;;;;AAMA;AACA;AACA,6BADA;AAEA,2BAFA;AAGA;AAHA;AAKA,yCACA;;AACA;AACA;AACA;AACA;;AACA;AACA,KAlZA;;AAmZA;;;;;;AAMA;AACA;AACA;AACA;AACA,oCADA;AAEA;AAFA;AAIA,SALA,MAKA;AACA;AACA;AACA,kCACA,mBACA,qBADA,GAEA,wBAFA,CAEA,cAFA;AAGA,oCACA;AACA,aAPA,MAOA;AACA,qDACA;AACA,wCADA;AAEA;AAFA,gBADA;AAMA;AACA;AACA;AACA;AACA,KApbA;AAqbA;AACA;AACA,KAvbA;;AAwbA;;;;;;;AAOA;AACA;AACA;AACA,yBACA,wDADA;AAEA;AACA,2CACA;AACA;AACA;AACA,+CACA;AACA,4BADA;AAEA,6BAFA;AAGA,+BAHA;AAIA;AAJA,UADA;AAQA,uCACA,QADA,EAEA,SAFA,EAGA,SAHA,EAIA,OAJA,EAKA,SALA;AAOA;AACA;AACA;AACA;AACA,KA5dA;;AA6dA;;;;;;AAMA;AACA;AACA,KAreA;;AAseA;;;;AAIA;AACA;AACA;AACA,KA7eA;;AA8eA;;;;AAIA;AACA;AACA;;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KA1fA;AA2fA;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;AACA,KAngBA;AAogBA;AACA;AACA;AACA;AACA;AAxgBA;AA1QA,G;;ACvRsU,CAAgB,wHAAG,EAAC,C;;;;;;;;ACAnP;AACvC;AACL;AACsC;AACxB;;;AAGzE;AAC0F;AAC1F,IAAI,sBAAS,GAAG,kBAAU;AAC1B,EAAE,+CAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,uEAAS,Q;;ACpBxB;AACA;AACA;;;ACFwB;AACF;;;;;;;;ACDtB,+D;;;;;;;ACAA,+D","file":"scaffoldvuer.common.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/checkbox-group\");","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/theme-chalk/checkbox-group.css\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","module.exports = require(\"core-js/modules/es.array.for-each\");","module.exports = require(\"core-js/modules/es.array.concat\");","module.exports = require(\"element-ui/lib/container\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","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&\"","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","module.exports = require(\"element-ui/lib/header\");","module.exports = require(\"element-ui/lib/theme-chalk/tabs.css\");","module.exports = require(\"core-js/modules/es.number.to-fixed\");","module.exports = require(\"element-ui/lib/tab-pane\");","module.exports = require(\"element-ui/lib/theme-chalk/color-picker.css\");","module.exports = require(\"element-ui/lib/drawer\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&\"","module.exports = require(\"@abi-software/svg-sprite\");","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","// extracted by mini-css-extract-plugin","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\");","// extracted by mini-css-extract-plugin","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var THREE = require('zincjs').THREE;\n\n/**\n * This module manages highlighted and selected objects in 3D modules. \n * \n * @class\n * @returns {exports.GraphicsHighlight}\n */\nexports.GraphicsHighlight = function() {\n let currentHighlightedObjects = [];\n let currentSelectedObjects = [];\n this.highlightColour = [1, 0, 0];\n this.selectColour = [0, 1, 0];\n this.originalColour = [0, 0, 0];\n const _this = this;\n\n const isDifferent = function(array1, array2) {\n if ((array1.length == 0) && (array2.length == 0))\n return false; \n for (let i = 0; i < array1.length; i++) {\n let matched = false;\n for (let j = 0; j < array2.length; j++) {\n if (array1[i] === array2[j]) {\n matched = true;\n }\n }\n if (!matched)\n return true;\n }\n for (let i = 0; i < array2.length; i++) {\n let matched = false;\n for (let j = 0; j < array1.length; j++) {\n if (array2[i] === array1[j]) {\n matched = true;\n }\n }\n if (!matched)\n return true;\n }\n return false;\n }\n \n const getUnmatchingObjects = function(objectsArray1, objectsArray2) {\n const unmatchingObjects = [];\n if (objectsArray2.length == 0)\n return objectsArray1;\n for (let i = 0; i < objectsArray1.length; i++) {\n let matched = false;\n for (let j = 0; j < objectsArray2.length; j++) {\n if (objectsArray1[i] === objectsArray2[j]) {\n matched = true;\n }\n }\n if (!matched)\n unmatchingObjects.push(objectsArray1[i]);\n }\n return unmatchingObjects;\n }\n \n this.setHighlighted = function(objects) {\n const previousHighlightedObjects = currentHighlightedObjects;\n _this.resetHighlighted();\n // Selected object cannot be highlighted\n const array = getUnmatchingObjects(objects, currentSelectedObjects);\n const fullList = getFullListOfObjects(array);\n for (let i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.highlightColour);\n }\n currentHighlightedObjects = array;\n return isDifferent(currentHighlightedObjects, previousHighlightedObjects);\n }\n\n this.setSelected = function(objects) {\n // first find highlighted object that are not selected\n const previousHSelectedObjects = currentSelectedObjects;\n const array = getUnmatchingObjects(currentHighlightedObjects, objects);\n currentHighlightedObjects = array;\n _this.resetSelected();\n const fullList = getFullListOfObjects(objects);\n for (let i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.selectColour);\n }\n currentSelectedObjects = objects;\n return isDifferent(currentSelectedObjects, previousHSelectedObjects);\n }\n\n const getFullListOfObjects = function(objects) {\n let fullList = [];\n for (let i = 0; i < objects.length; i++) {\n if (objects[i].material)\n fullList.push(objects[i]);\n }\n return fullList;\n }\n \n this.resetHighlighted = function() {\n const fullList = getFullListOfObjects(currentHighlightedObjects);\n for (let i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material) {\n if (fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.originalColour);\n if (fullList[i].material.depthFunc)\n fullList[i].material.depthFunc = THREE.LessEqualDepth;\n }\n }\n currentHighlightedObjects = [];\n }\n \n this.resetSelected = function() {\n const fullList = getFullListOfObjects(currentSelectedObjects);\n for (let i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material) {\n \t\tif (fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.originalColour);\n \t\tif (fullList[i].material.depthFunc)\n fullList[i].material.depthFunc = THREE.LessEqualDepth;\n \t}\n }\n currentSelectedObjects = [];\n }\n \n this.getSelected = function() {\n return currentSelectedObjects;\n }\n \n this.reset = function() {\n _this.resetSelected();\n _this.resetHighlighted();\n }\n}\n","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&\"","module.exports = require(\"core-js/modules/es.array.slice\");","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","module.exports = require(\"lodash/orderBy\");","const MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };\n\nconst BaseModule = function() {\n this.typeName = \"Base Module\";\n this.instanceName = \"default\";\n this.onChangedCallbacks = [];\n /** Notifier handle for informing other modules of any changes **/\n this.eventNotifiers = [];\n}\n\nBaseModule.prototype.setName = function(name) {\n if (name && this.instanceName !== name) {\n this.instanceName = name;\n const callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );\n }\n }\n}\n\nBaseModule.prototype.settingsChanged = function() {\n\tconst callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );\n }\n}\n\nBaseModule.prototype.exportSettings = function() {\n const settings = {};\n settings.dialog = this.typeName;\n settings.name = this.instanceName;\n return settings;\n}\n\nBaseModule.prototype.importSettings = function(settings) {\n\tif (settings.dialog == this.typeName) {\n\t\tthis.setName(settings.name);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nBaseModule.prototype.publishChanges = function(annotations, eventType) {\n for (let i = 0; i < this.eventNotifiers.length; i++) {\n this.eventNotifiers[i].publish(this, eventType, annotations);\n }\n}\n\nBaseModule.prototype.getName = function() {\n return this.instanceName;\n}\n\nBaseModule.prototype.destroy = function() {\n //Make a temorary copy as the array may be altered during the loop\n const callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.DESTROYED );\n }\n\n delete this;\n} \n\nBaseModule.prototype.addChangedCallback = function(callback) {\n if (this.onChangedCallbacks.includes(callback) == false)\n this.onChangedCallbacks.push(callback);\n}\n\nBaseModule.prototype.removeChangedCallback = function(callback) {\n const index = this.onChangedCallbacks.indexOf(callback);\n if (index > -1) {\n this.onChangedCallbacks.splice(index, 1);\n }\n} \n\nBaseModule.prototype.addNotifier = function(eventNotifier) {\n this.eventNotifiers.push(eventNotifier);\n}\n\nexports.BaseModule = BaseModule;\nexports.MODULE_CHANGE = MODULE_CHANGE;\n","module.exports = require(\"core-js/modules/es.array.index-of\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","module.exports = require(\"element-ui/lib/row\");","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","module.exports = require(\"element-ui/lib/theme-chalk/col.css\");","module.exports = require(\"element-ui/lib/theme-chalk/main.css\");","module.exports = require(\"core-js/modules/es.array.splice\");","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","const THREE = require('zincjs').THREE;\n\n/**\n * Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.\n * @param {String} elementID - id of the target dom element.\n * @returns {Zinc.Renderer}\n */\nconst createRenderer = function () {\n const WEBGL = require('./WebGL').WEBGL;\n const localContainer = document.createElement( 'div' );\n let localRenderer = undefined;;\n localContainer.style.height = \"100%\";\n if (WEBGL.isWebGLAvailable()) {\n const Zinc = require('zincjs');\n localRenderer = new Zinc.Renderer(localContainer, window);\n Zinc.defaultMaterialColor = 0xFFFF9C;\n localRenderer.initialiseVisualisation();\n localRenderer.playAnimation = false;\n } else {\n const warning = WEBGL.getWebGLErrorMessage();\n localContainer.appendChild(warning);\n }\n return {\"renderer\":localRenderer, \"container\":localContainer};\n}\n\nconst RendererModule = function() {\n (require('./BaseModule').BaseModule).call(this);\n this.scene = undefined;\n this.rendererContainer = undefined;\n this.displayArea = undefined;\n this.graphicsHighlight = new (require(\"./graphicsHighlight\").GraphicsHighlight)();\n this.zincRenderer = null;\n this.selectedScreenCoordinates = new THREE.Vector3();\n this.selectedCenter = undefined;\n}\n\nRendererModule.prototype = Object.create((require('./BaseModule').BaseModule).prototype);\n\n/**\n * This function will get the the first intersected object with name or\n * the first glyph object with name.\n */\nRendererModule.prototype.getIntersectedObject = function(intersects) {\n\tif (intersects) {\n\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\tif (intersects[i] !== undefined) {\n\t\t\t\tif (intersects[i].object &&\n intersects[i].object.userData && \n intersects[i].object.userData.isZincObject && \n (intersects[i].object.name || \n intersects[i].object.userData.isMarker))\n\t\t\t\t\treturn intersects[i];\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nRendererModule.prototype.getAnnotationsFromObjects = function(objects) {\n const annotations = [];\n let count = 0;\n for (var i = 0; i < objects.length; i++) {\n const zincObject = objects[i].userData;\n let annotation = undefined;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n const glyphset = zincObject;\n if (zincObject.isGlyph)\n glyphset = zincObject.getGlyphset();\n annotation = glyphset.userData ? glyphset.userData[0] : undefined;\n if (annotation && annotation.data) {\n if (objects[i].name && objects[i].name != \"\")\n annotation.data.id = objects[i].name;\n else\n annotation.data.id = glyphset.groupName;\n }\n } else {\n annotation = zincObject.userData ? zincObject.userData[0] : undefined;\n if (annotation && annotation.data){\n annotation.data.id = objects[i].name;\n }\n }\n }\n if (annotation)\n annotations[count++] = annotation;\n }\n\treturn annotations;\n}\n\nRendererModule.prototype.setHighlightedByObjects = function(objects, propagateChanges) {\n const changed = this.graphicsHighlight.setHighlighted(objects);\n if (changed && propagateChanges) {\n const eventType = require(\"./eventNotifier\").EVENT_TYPE.HIGHLIGHTED;\n const annotations = this.getAnnotationsFromObjects(objects);\n this.publishChanges(annotations, eventType);\n }\n return changed;\n}\n\n\nRendererModule.prototype.setHighlightedByZincObject = function(\n zincObject, propagateChanges) {\n return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);\n}\n\nRendererModule.prototype.setupLiveCoordinates = function(zincObjects) {\n if (zincObjects && (zincObjects.length > 0)) {\n const boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);\n let newSelectedCenter = new THREE.Vector3();\n boundingBox.getCenter(newSelectedCenter);\n if (this.selectedCenter == undefined)\n this.selectedCenter = newSelectedCenter;\n else {\n this.selectedCenter.x = newSelectedCenter.x;\n this.selectedCenter.y = newSelectedCenter.y;\n }\n } else {\n this.selectedCenter = undefined;\n }\n}\n\nRendererModule.prototype.objectsToZincObjects = function(objects) {\n const zincObjects = [];\n for (let i = 0; i < objects.length; i++) {\n let zincObject = objects[i].userData;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n let glyphset = zincObject;\n if (zincObject.isGlyph)\n glyphset = zincObject.getGlyphset();\n zincObjects. push(glyphset);\n } else {\n zincObjects. push(zincObject);\n }\n }\n }\n return zincObjects;\n}\n\n\nRendererModule.prototype.setSelectedByObjects = function(\n objects, propagateChanges) {\n const changed = this.graphicsHighlight.setSelected(objects);\n if (changed) {\n const zincObjects = this.objectsToZincObjects(objects);\n this.setupLiveCoordinates(zincObjects);\n if (propagateChanges) {\n const eventType = require(\"./eventNotifier\").EVENT_TYPE.SELECTED;\n const annotations = this.getAnnotationsFromObjects(objects);\n this.publishChanges(annotations, eventType);\n }\n }\n return changed;\n}\n\nRendererModule.prototype.setSelectedByZincObject = function(\n zincObject, propagateChanges) {\n return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);\n}\n\nconst addGlyphToArray = function(objects) {\n return function(glyph) {\n objects.push(glyph.getMesh());\n }\n}\n\nRendererModule.prototype.findObjectsByGroupName = function(groupName) {\n const geometries = this.scene.findGeometriesWithGroupName(groupName);\n const objects = [];\n for (let i = 0; i < geometries.length; i ++ ) {\n objects.push(geometries[i].morph);\n }\n const glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);\n for (let i = 0; i < glyphsets.length; i ++ ) {\n glyphsets[i].forEachGlyph(addGlyphToArray(objects));\n }\n \n return objects;\n}\n\nRendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {\n const objects = this.findObjectsByGroupName(groupName);\n return this.setHighlightedByObjects(objects, propagateChanges);\n}\n\nRendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {\n const objects = this.findObjectsByGroupName(groupName);\n return this.setSelectedByObjects(objects, propagateChanges);\n}\n\nRendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {\n const colour = new THREE.Color(backgroundColourString);\n if (this.zincRenderer) {\n let internalRenderer = this.zincRenderer.getThreeJSRenderer();\n internalRenderer.setClearColor( colour, 1 );\n }\n}\n\nRendererModule.prototype.resetView = function() {\n if (this.zincRenderer)\n this.zincRenderer.resetView();\n}\n \nRendererModule.prototype.viewAll = function() {\n if (this.zincRenderer)\n this.zincRenderer.viewAll();\n}\n\n/**\n * Start the animation and let the renderer to processs with\n * time progression\n */\nRendererModule.prototype.playAnimation = function(flag) {\n if (this.zincRenderer)\n this.zincRenderer.playAnimation = flag;\n}\n\n/**\n* Set the speed of playback\n*/\nRendererModule.prototype.setPlayRate = function(value) {\n if (this.zincRenderer)\n this.zincRenderer.setPlayRate(value);\n}\n\n/**\n* Get the speed of playback\n*/\nRendererModule.prototype.getPlayRate = function(value) {\n if (this.zincRenderer)\n return this.zincRenderer.getPlayRate();\n else\n return 0.0;\n}\n \n /** Initialise everything in the renderer, including the 3D renderer,\n * and picker for the 3D renderer.\n * \n */\nRendererModule.prototype.initialiseRenderer = function(displayAreaIn) {\n if (this.zincRenderer === undefined || this.rendererContainer === undefined) {\n let returnedValue = createRenderer();\n this.zincRenderer = returnedValue[\"renderer\"];\n this.rendererContainer = returnedValue[\"container\"];\n }\n if (displayAreaIn) {\n this.displayArea = displayAreaIn;\n this.displayArea.appendChild( this.rendererContainer );\n if (this.zincRenderer)\n this.zincRenderer.animate();\n }\n}\n\nRendererModule.prototype.destroy = function() {\n if (this.zincRenderer) {\n this.zincRenderer.dispose();\n this.zincRenderer.getThreeJSRenderer().dispose();\n this.zincRenderer = undefined;\n }\n (require('./BaseModule').BaseModule).prototype.destroy.call( this );\n}\n\nexports.RendererModule = RendererModule;","module.exports = require(\"core-js/modules/es.object.to-string\");","module.exports = require(\"vue\");","module.exports = require(\"element-ui/lib/tabs\");","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/icon.css\");","module.exports = require(\"core-js/modules/es.string.iterator\");","module.exports = require(\"zincjs\");","module.exports = require(\"element-ui/lib/popover\");","module.exports = require(\"element-ui/lib/theme-chalk/slider.css\");","exports.annotation = function() {\n this.type = \"anatomical\";\n this.data = undefined;\n this.isAnnotation = true;\n}\n","module.exports = require(\"element-ui/lib/theme-chalk/tab-pane.css\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","const EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };\n\nconst SelectionEvent = function(eventTypeIn, identifiersIn) {\n this.eventType = eventTypeIn;\n this.identifiers = identifiersIn;\n}\n\nconst returnFullID = function(sourceId) {\n //return full annotations with all different name\n}\n \nconst Subscription = function(subscriberIn, callbackIn, eventType) {\n this.targetedID = [];\n const subscriber = subscriberIn;\n const callback = callbackIn;\n this.targetEventType = eventType;\n const _this = this;\n\n if (eventType === undefined)\n this.targetEventType = EVENT_TYPE.ALL;\n \n this.getEventType = function() {\n return eventType;\n }\n \n this.notify = function(source, eventType, ids) {\n if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||\n _this.targetEventType === eventType)) {\n //should support different type of id e.g lyph, name, fmas...\n //need a function that finds all relavant ids\n const event = new SelectionEvent(eventType, ids);\n callback(event);\n }\n }\n}\n\nexports.EventNotifier = function() {\n const subscriptions = [];\n \n this.publish = function(source, eventType, id) {\n for (let i = 0; i < subscriptions.length;i++) {\n subscriptions[i].notify(source, eventType, id);\n }\n }\n \n this.subscribe = function(subscriber, callbackFunction, eventType) {\n if (typeof callbackFunction === \"function\") {\n const subscription = new Subscription(subscriber, callbackFunction, eventType);\n subscriptions.push(subscription);\n return subscription;\n }\n return undefined;\n }\n \n this.unsubscribe = function(subscription) {\n for (let i = 0; i < subscriptions.length;i++) {\n if (subscription === subscriptions[i]) {\n subscriptions.splice(i, 1);\n return;\n }\n }\n }\n} \n\nexports.EVENT_TYPE = EVENT_TYPE;\n","module.exports = require(\"@soda/get-current-script\");","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\");","// extracted by mini-css-extract-plugin","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"scaffoldContainer\",staticClass:\"scaffold-container\",attrs:{\"element-loading-text\":\"Loading...\",\"element-loading-spinner\":\"el-icon-loading\",\"element-loading-background\":\"rgba(0, 0, 0, 0.3)\"}},[_c('map-svg-sprite-color'),_c('div',{ref:\"display\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"id\":\"organsDisplayArea\",\"tabindex\":\"-1\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==66){ return null; }return _vm.backgroundChangeCallback($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.displayUI && !_vm.isTransitioning),expression:\"displayUI && !isTransitioning\"}]},[(_vm.displayWarning)?_c('el-popover',{ref:\"warningPopover\",attrs:{\"content\":_vm.warningMessage,\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"warning-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[6].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[6], \"value\", $$v)},expression:\"hoverVisabilities[6].value\"}}):_vm._e(),(_vm.displayWarning)?_c('i',{directives:[{name:\"popover\",rawName:\"v-popover:warningPopover\",arg:\"warningPopover\"}],staticClass:\"el-icon-warning warning-icon\",on:{\"mouseover\":function($event){return _vm.showToolitip(6)},\"mouseout\":function($event){return _vm.hideToolitip(6)}}},[_c('span',{staticClass:\"warning-text\"},[_vm._v(\"Beta\")])]):_vm._e(),_c('el-popover',{ref:\"checkBoxPopover\",attrs:{\"content\":\"Change region visibility\",\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[5].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[5], \"value\", $$v)},expression:\"hoverVisabilities[5].value\"}}),_c('TraditionalControls',{directives:[{name:\"popover\",rawName:\"v-popover:checkBoxPopover\",arg:\"checkBoxPopover\"}],ref:\"traditionalControl\",attrs:{\"help-mode\":_vm.helpMode,\"module\":_vm.$module,\"show-colour-picker\":_vm.showColourPicker},on:{\"object-selected\":_vm.objectSelected,\"object-hovered\":_vm.objectHovered,\"drawer-toggled\":_vm.drawerToggled}}),_c('div',{staticClass:\"opacity-box\"},[_c('OpacityControls',{ref:\"opacityControl\"})],1),(_vm.sceneData.timeVarying)?_c('el-popover',{ref:\"sliderPopover\",attrs:{\"content\":\"Move the slider to animate the region\",\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper top-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[4].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[4], \"value\", $$v)},expression:\"hoverVisabilities[4].value\"}}):_vm._e(),(_vm.sceneData.timeVarying)?_c('div',{directives:[{name:\"popover\",rawName:\"v-popover:sliderPopover\",arg:\"sliderPopover\"}],staticClass:\"time-slider-container\",class:[ _vm.minimisedSlider ? 'minimised' : '', _vm.sliderPosition]},[_c('el-tabs',{attrs:{\"type\":\"card\"}},[_c('el-tab-pane',{attrs:{\"label\":\"Animate scaffold\"}},[_c('el-row',{staticClass:\"tab-content\"},[(_vm.isPlaying)?_c('map-svg-icon',{staticClass:\"icon-button video-button\",attrs:{\"icon\":\"pause\"},nativeOn:{\"click\":function($event){return _vm.play(false)}}}):_c('map-svg-icon',{staticClass:\"video-button icon-button\",attrs:{\"icon\":\"play\"},nativeOn:{\"click\":function($event){return _vm.play(true)}}}),_c('el-slider',{staticClass:\"slider\",attrs:{\"min\":0,\"max\":_vm.timeMax,\"value\":_vm.sceneData.currentTime / 100 * _vm.timeMax,\"step\":0.1,\"tooltip-class\":\"time-slider-tooltip\",\"format-tooltip\":_vm.formatTooltip,\"marks\":_vm.timeStamps},on:{\"input\":function($event){return _vm.timeChange($event)}}})],1)],1),_c('el-tab-pane',{attrs:{\"label\":\"Animation data\"}},[_c('el-row',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Original duration: \"),_c('div',{staticClass:\"purple\"},[_vm._v(\" \"+_vm._s(_vm.orginalDuration)+\" \")])]),_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Animation duration: \"),_c('div',{staticClass:\"purple\"},[_vm._v(\" \"+_vm._s(_vm.animateDuration)+\" \")])]),_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Playback speed \"),_c('el-select',{staticClass:\"select-box\",attrs:{\"popper-append-to-body\":true,\"value\":_vm.currentSpeed,\"placeholder\":\"Select\",\"popper-class\":\"scaffold_viewer_dropdown\"},on:{\"change\":function($event){return _vm.speedChanged($event)}}},_vm._l((_vm.playSpeed),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)])],1)],1)],1):_vm._e(),_c('div',{staticClass:\"bottom-right-control\"},[_c('el-popover',{attrs:{\"content\":\"Zoom in\",\"placement\":\"left\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper left-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[0].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[0], \"value\", $$v)},expression:\"hoverVisabilities[0].value\"}},[_c('map-svg-icon',{staticClass:\"icon-button zoomIn\",attrs:{\"slot\":\"reference\",\"icon\":\"zoomIn\"},nativeOn:{\"click\":function($event){return _vm.zoomIn()},\"mouseover\":function($event){return _vm.showToolitip(0)},\"mouseout\":function($event){return _vm.hideToolitip(0)}},slot:\"reference\"})],1),_c('el-popover',{attrs:{\"content\":\"Zoom out\",\"placement\":\"top-end\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper popper-zoomout non-selectable\"},model:{value:(_vm.hoverVisabilities[1].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[1], \"value\", $$v)},expression:\"hoverVisabilities[1].value\"}},[_c('map-svg-icon',{staticClass:\"icon-button zoomOut\",attrs:{\"slot\":\"reference\",\"icon\":\"zoomOut\"},nativeOn:{\"click\":function($event){return _vm.zoomOut()},\"mouseover\":function($event){return _vm.showToolitip(1)},\"mouseout\":function($event){return _vm.hideToolitip(1)}},slot:\"reference\"})],1),_c('el-popover',{attrs:{\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[2].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[2], \"value\", $$v)},expression:\"hoverVisabilities[2].value\"}},[_c('div',[_vm._v(\" Fit to \"),_c('br'),_vm._v(\" window \")]),_c('map-svg-icon',{staticClass:\"icon-button fitWindow\",attrs:{\"slot\":\"reference\",\"icon\":\"fitWindow\"},nativeOn:{\"click\":function($event){return _vm.fitWindow()},\"mouseover\":function($event){return _vm.showToolitip(2)},\"mouseout\":function($event){return _vm.hideToolitip(2)}},slot:\"reference\"})],1)],1),_c('el-popover',{ref:\"backgroundPopover\",attrs:{\"placement\":\"top-start\",\"width\":\"128\",\"append-to-body\":false,\"trigger\":\"click\",\"popper-class\":\"background-popper non-selectable\"}},[_c('el-row',{staticClass:\"backgroundText\"},[_vm._v(\" Change background \")]),_c('el-row',{staticClass:\"backgroundChooser\"},_vm._l((_vm.availableBackground),function(item){return _c('div',{key:item,class:['backgroundChoice', item, item == _vm.currentBackground ? 'active' :''],on:{\"click\":function($event){return _vm.backgroundChangeCallback(item)}}})}),0)],1),_c('el-popover',{attrs:{\"content\":\"Change background color\",\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[3].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[3], \"value\", $$v)},expression:\"hoverVisabilities[3].value\"}},[_c('map-svg-icon',{directives:[{name:\"popover\",rawName:\"v-popover:backgroundPopover\",arg:\"backgroundPopover\"}],staticClass:\"icon-button background-colour\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{\"slot\":\"reference\",\"icon\":\"changeBckgd\"},nativeOn:{\"mouseover\":function($event){return _vm.showToolitip(3)},\"mouseout\":function($event){return _vm.hideToolitip(3)}},slot:\"reference\"})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.material!=undefined)?_c('div',{ref:\"control\",staticClass:\"opacity-control\"},[_c('el-drawer',{staticClass:\"drawer-content\",attrs:{\"custom-class\":\"my-drawer\",\"visible\":_vm.drawerOpen,\"append-to-body\":false,\"modal-append-to-body\":false,\"size\":\"300\",\"with-header\":false,\"wrapper-closable\":false,\"modal\":false},on:{\"update:visible\":function($event){_vm.drawerOpen=$event}}},[(_vm.drawerOpen)?_c('div',{staticClass:\"tab-button close\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-right\"})]):_vm._e(),_c('el-container',{staticClass:\"opacity-container\"},[_c('el-header',{staticClass:\"header\",attrs:{\"height\":\"37px\"}},[_c('div',[_vm._v(\"Opacity\")])]),_c('el-main',{staticClass:\"main\"},[_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"display\"},[_vm._v(_vm._s(_vm.displayString))]),_c('el-slider',{staticClass:\"my-slider\",attrs:{\"step\":0.01,\"min\":0,\"max\":1,\"format-tooltip\":_vm.formatTooltip,\"show-tooltip\":false},model:{value:(_vm.material.opacity),callback:function ($$v) {_vm.$set(_vm.material, \"opacity\", $$v)},expression:\"material.opacity\"}})],1)])],1)],1),(!_vm.drawerOpen)?_c('div',{staticClass:\"tab-button open\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div\n v-if=\"material!=undefined\"\n ref=\"control\"\n class=\"opacity-control\"\n >\n <el-drawer\n custom-class=\"my-drawer\"\n class=\"drawer-content\"\n :visible.sync=\"drawerOpen\"\n :append-to-body=\"false\"\n :modal-append-to-body=\"false\"\n size=\"300\"\n :with-header=\"false\"\n :wrapper-closable=\"false\"\n :modal=\"false\"\n >\n <div\n v-if=\"drawerOpen\"\n class=\"tab-button close\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-right\" />\n </div>\n <el-container class=\"opacity-container\">\n <el-header\n height=\"37px\"\n class=\"header\"\n >\n <div>Opacity</div>\n </el-header>\n <el-main class=\"main\">\n <div class=\"block\">\n <span class=\"display\">{{ displayString }}</span>\n <el-slider\n v-model=\"material.opacity\"\n class=\"my-slider\"\n :step=\"0.01\"\n :min=\"0\"\n :max=\"1\"\n :format-tooltip=\"formatTooltip\"\n :show-tooltip=\"false\"\n />\n </div>\n </el-main>\n </el-container>\n </el-drawer>\n <div\n v-if=\"!drawerOpen\"\n class=\"tab-button open\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Container, Drawer, Header, Icon, Main, Slider } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Container);\nVue.use(Drawer);\nVue.use(Header);\nVue.use(Icon);\nVue.use(Main);\nVue.use(Slider);\n\n/**\n * A component to control the opacity of the target object.\n */\nexport default {\n name: \"OpacityControls\",\n data: function() {\n return {\n displayString: \"100%\",\n material: undefined,\n drawerOpen: true\n };\n },\n watch: {\n \"material.opacity\": function() {\n if (this.material) {\n this._zincobject.setAlpha(this.material.opacity);\n }\n }\n },\n mounted: function() {\n this._zincobject = undefined;\n },\n methods: {\n formatTooltip(val) {\n this.displayString = Math.floor(100 * val + 0.5) + \"%\";\n return this.displayString;\n },\n toggleDrawer: function() {\n this.drawerOpen = !this.drawerOpen;\n },\n setObject(object) {\n if (object) this.material = object.morph.material;\n else this.material = undefined;\n this._zincobject = object;\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/container\";\n@import \"~element-ui/packages/theme-chalk/src/drawer\";\n@import \"~element-ui/packages/theme-chalk/src/slider\";\n\n.opacity-control {\n text-align: left;\n width:300px;\n}\n\n.header {\n color: #606266;\n line-height: 1;\n padding: 9px 17px 0 15px;\n border-bottom: 1px solid #ebeef5;\n font-size: 14px;\n}\n\n.display {\n width: 44px;\n}\n\n.icon {\n right: 17px;\n position: absolute;\n top: 10px;\n}\n\n.main {\n font-size: 13px;\n padding: 20px 17px 0 15px;\n}\n\n.block {\n left: 40px;\n position: absolute;\n top: 57px;\n width: 200px;\n}\n\n.my-slider {\n position: absolute;\n width: 109px;\n top: -12px;\n left: 50px;\n pointer-events: auto;\n}\n\n.opacity-container {\n width: 224px;\n height: 93px;\n border-radius: 4px;\n border: solid 1px #d8dce6;\n background-color: #fff;\n}\n\n::v-deep .el-slider__bar {\n background-color: $app-primary-color;\n}\n\n.drawer-content {\n position: relative;\n height: 93px;\n pointer-events: none;\n}\n\n::v-deep .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n\n::v-deep .my-drawer .el-drawer__body {\n height: 93px;\n}\n\n.tab-button {\n width: 20px;\n height: 40px;\n z-index: 8;\n right: 0px;\n \n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #FFFFFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n //transition: bottom 0.3s;\n\n &.close {\n float: left;\n flex: 1;\n border-right: 0;\n margin-top: 26px;\n }\n\n &.open {\n position: absolute;\n bottom:26px;\n }\n\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transform: scaleY(2.5);\n }\n}\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&\"\nimport script from \"./OpacityControls.vue?vue&type=script&lang=js&\"\nexport * from \"./OpacityControls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OpacityControls.vue?vue&type=style&index=0&id=4c00a30f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c00a30f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"traditional-location\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen }},[_c('div',{staticClass:\"traditional-container\"},[_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('div',{staticClass:\"regions-display-text\"},[_vm._v(\" Regions \")])]),_c('el-col',{attrs:{\"span\":12}},[_c('el-checkbox',{staticClass:\"all-checkbox\",attrs:{\"indeterminate\":_vm.isIndeterminate},on:{\"change\":_vm.handleCheckAllChange},model:{value:(_vm.checkAll),callback:function ($$v) {_vm.checkAll=$$v},expression:\"checkAll\"}},[_vm._v(\" Display all \")])],1)],1),_c('el-checkbox-group',{staticClass:\"checkbox-group\",attrs:{\"size\":\"small\"},on:{\"change\":_vm.handleCheckedItemsChange},model:{value:(_vm.checkedItems),callback:function ($$v) {_vm.checkedItems=$$v},expression:\"checkedItems\"}},[_c('div',{staticClass:\"checkbox-group-inner\"},_vm._l((_vm.sortedPrimitiveGroups),function(item){return _c('el-row',{key:item,attrs:{\"label\":item}},[_c('div',{staticClass:\"checkbox-container\"},[_c('el-checkbox',{staticClass:\"my-checkbox\",class:{ activeItem: _vm.activeRegion === item, \n hoverItem: _vm.hoverRegion === item },attrs:{\"label\":item,\"checked\":true},on:{\"change\":function($event){return _vm.visibilityToggle(item, $event)}},nativeOn:{\"click\":function($event){return _vm.itemClicked(item, $event)},\"mouseover\":function($event){return _vm.checkboxHover(item)}}},[_c('el-color-picker',{class:{ 'show-picker' : _vm.showColourPicker },attrs:{\"value\":_vm.getColour(item),\"size\":\"small\",\"popper-class\":_vm.myPopperClass},on:{\"change\":function($event){return _vm.setColour(item, $event)}}}),_vm._v(\" \"+_vm._s(item)+\" \")],1)],1)])}),1)])],1),_c('div',{staticClass:\"drawer-button\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","<template>\n <div\n class=\"traditional-location\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n >\n <div class=\"traditional-container\">\n <el-row>\n <el-col :span=\"12\">\n <div class=\"regions-display-text\">\n Regions\n </div>\n </el-col>\n <el-col :span=\"12\">\n <el-checkbox\n v-model=\"checkAll\"\n class=\"all-checkbox\"\n :indeterminate=\"isIndeterminate\"\n @change=\"handleCheckAllChange\"\n >\n Display all\n </el-checkbox>\n </el-col>\n </el-row>\n <el-checkbox-group\n v-model=\"checkedItems\"\n size=\"small\"\n class=\"checkbox-group\"\n @change=\"handleCheckedItemsChange\"\n >\n <div class=\"checkbox-group-inner\">\n <el-row\n v-for=\"item in sortedPrimitiveGroups\"\n :key=\"item\"\n :label=\"item\"\n >\n <div class=\"checkbox-container\">\n <el-checkbox\n class=\"my-checkbox\"\n :label=\"item\"\n :checked=\"true\"\n :class=\"{ activeItem: activeRegion === item, \n hoverItem: hoverRegion === item }\"\n @click.native=\"itemClicked(item, $event)\"\n @change=\"visibilityToggle(item, $event)\"\n @mouseover.native=\"checkboxHover(item)\"\n >\n <el-color-picker\n :class=\"{ 'show-picker' : showColourPicker }\"\n :value=\"getColour(item)\"\n size=\"small\"\n :popper-class=\"myPopperClass\"\n @change=\"setColour(item, $event)\"\n />\n {{ item }}\n </el-checkbox>\n </div>\n </el-row>\n </div>\n </el-checkbox-group>\n </div>\n <div\n class=\"drawer-button\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Checkbox, CheckboxGroup, ColorPicker, Row } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nconst orderBy = require(\"lodash/orderBy\");\nconst uniq = require(\"lodash/uniq\");\nlocale.use(lang);\nVue.use(Checkbox);\nVue.use(CheckboxGroup);\nVue.use(ColorPicker);\nVue.use(Row);\n\n/**\n * A vue component for toggling visibility of various regions.\n */\nexport default {\n name: \"TraditionalControls\",\n props: {\n /**\n * @ignore\n */\n module: {\n type: Object,\n default: undefined\n },\n /**\n * Enable/disable colour picker\n */\n showColourPicker: Boolean\n },\n data: function() {\n return {\n checkAll: true,\n isIndeterminate: false,\n checkedItems: [],\n sortedPrimitiveGroups: [],\n activeRegion: \"\",\n hoverRegion: \"\",\n myPopperClass: \"hide-scaffold-colour-popup\",\n drawerOpen: true\n };\n },\n watch: {\n showColourPicker: {\n immediate: true,\n handler: function() {\n if (this.showColourPicker) this.myPopperClass = \"showPicker\";\n else this.myPopperClass = \"hide-scaffold-colour-popup\";\n }\n }\n },\n created: function() {\n let tmpArray = this.module.sceneData.geometries.concat(\n this.module.sceneData.lines\n );\n tmpArray = tmpArray.concat(this.module.sceneData.glyphsets);\n tmpArray = uniq(tmpArray.concat(this.module.sceneData.pointset));\n this.sortedPrimitiveGroups = orderBy(tmpArray);\n this.module.addOrganPartAddedCallback(this.organsAdded);\n },\n destroyed: function() {\n this.sortedPrimitiveGroups = undefined;\n },\n methods: {\n /**\n * This is called when a new organ is read into the scene.\n */\n organsAdded: function(name) {\n if (name && name != \"\") {\n let tmpArray = uniq(this.sortedPrimitiveGroups.concat([name]));\n tmpArray = orderBy(tmpArray);\n const index = tmpArray.indexOf(undefined);\n if (index > -1) {\n tmpArray.splice(index, 1);\n }\n this.sortedPrimitiveGroups = tmpArray;\n }\n },\n /**\n * Select a region by its name.\n */\n changeActiveByName: function(name, propagate) {\n let targetObject = this.getFirstZincObjectWithGroupName(name);\n if (targetObject && targetObject.getVisibility()) {\n this.activeRegion = name;\n this.$emit(\"object-selected\", targetObject, propagate);\n } else {\n this.removeActive(propagate);\n }\n this.removeHover(propagate);\n },\n /**\n * Hover a region by its name.\n */\n changeHoverByName: function(name, propagate) {\n let targetObject = this.getFirstZincObjectWithGroupName(name);\n if (targetObject) {\n this.hoverRegion = name;\n this.$emit(\"object-hovered\", targetObject, propagate);\n } else {\n this.removeHover(propagate);\n }\n },\n /**\n * Unselect the current selected region.\n */\n removeActive: function(propagate) {\n this.activeRegion = \"\";\n this.$emit(\"object-selected\", undefined, propagate);\n },\n /**\n * Unselect the current hover region.\n */\n removeHover: function(propagate) {\n this.hoverRegion = \"\";\n this.$emit(\"object-hovered\", undefined, propagate);\n },\n /**\n * Reset the controls.\n */\n clear: function() {\n this.sortedPrimitiveGroups = [];\n this.checkedItems = [];\n this.checkAll = true;\n this.isIndeterminate = false;\n this.activeRegion = \"\";\n this.hoverRegion = \"\";\n this.$emit(\"object-selected\", undefined);\n },\n getFirstZincObjectWithGroupName: function(name) {\n if (this.module && this.module.scene) {\n let array = this.module.scene.findGeometriesWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findGlyphsetsWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findLinesWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findPointsetsWithGroupName(name);\n if (array.length > 0) return array[0];\n }\n return undefined;\n },\n getColour: function(name) {\n let graphic = this.getFirstZincObjectWithGroupName(name);\n if (graphic) {\n let hex = graphic.getColourHex();\n if (hex) return \"#\" + hex;\n }\n return \"#FFFFFF\";\n },\n setColour: function(name, value) {\n let graphic = this.getFirstZincObjectWithGroupName(name);\n if (graphic) {\n let hexString = value.replace(\"#\", \"0x\");\n graphic.setColourHex(hexString);\n }\n },\n checkboxHover: function(name) {\n this.changeHoverByName(name, true);\n },\n itemClicked: function(name, event) {\n if (\n !(\n event.target.classList.contains(\"el-checkbox__inner\") ||\n event.target.classList.contains(\"el-checkbox__original\")\n )\n ) {\n this.changeActiveByName(name, true);\n event.preventDefault();\n }\n },\n handleCheckedItemsChange: function() {\n let unnamed = this.checkedItems.includes(undefined) ? true: false;\n let checkedCount = this.checkedItems.length;\n if (unnamed)\n checkedCount--;\n this.checkAll = checkedCount === this.sortedPrimitiveGroups.length;\n this.isIndeterminate =\n checkedCount > 0 && checkedCount < this.sortedPrimitiveGroups.length;\n },\n handleCheckAllChange(val) {\n this.checkedItems = val ? [...this.sortedPrimitiveGroups] : [];\n this.isIndeterminate = false;\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n this.visibilityToggle(this.sortedPrimitiveGroups[i], this.checkAll);\n }\n },\n viewAll: function() {\n this.module.viewAll();\n },\n visibilityToggle: function(item, event) {\n this.module.changeOrganPartsVisibility(item, event);\n if (event == false) {\n if (this.activeRegion === item) {\n this.removeActive(true);\n }\n if (this.hoverRegion === item) {\n this.removeHover(true);\n }\n }\n },\n toggleDrawer: function() {\n this.drawerOpen = !this.drawerOpen;\n this.$emit(\"drawer-toggled\", this.drawerOpen);\n },\n getState: function() {\n if (this.checkAll) {\n return { checkAll: true };\n }\n let checkedItems = [...this.checkedItems];\n const index = checkedItems.indexOf(undefined);\n if (index > -1) {\n checkedItems.splice(index, 1);\n }\n return { checkedItems: checkedItems };\n },\n setState: function(state) {\n if (state) {\n if (state.checkAll) {\n this.checkedItems = [...this.sortedPrimitiveGroups];\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n this.module.changeOrganPartsVisibility(\n this.sortedPrimitiveGroups[i],\n true\n );\n }\n } else if (state.checkedItems) { \n this.checkedItems = [...state.checkedItems];\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n\n let visible = this.checkedItems.includes(\n this.sortedPrimitiveGroups[i]);\n this.module.changeOrganPartsVisibility(\n this.sortedPrimitiveGroups[i],\n visible\n );\n }\n }\n }\n this.handleCheckedItemsChange();\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/checkbox\";\n@import \"~element-ui/packages/theme-chalk/src/checkbox-group\";\n@import \"~element-ui/packages/theme-chalk/src/color-picker\";\n@import \"~element-ui/packages/theme-chalk/src/row\";\n\n.checkbox-container {\n display: flex;\n cursor: pointer;\n}\n\n.traditional-location {\n position: absolute;\n bottom: 0px;\n transition: all 1s ease;\n\n &:focus{\n outline: none;\n }\n &.open {\n left: 0px;\n .traditional-container {\n opacity: 1;\n }\n }\n &.close {\n left: -298px;\n .traditional-container {\n pointer-events:none;\n opacity: 0;\n }\n }\n}\n\n.traditional-container {\n transition: all 1s ease;\n float: left;\n padding-left: 16px;\n padding-right: 18px;\n max-height: calc(100% - 154px);\n text-align: left;\n overflow: none;\n border: 1px solid rgb(220, 223, 230);\n padding-top: 7px;\n padding-bottom: 16px;\n background: #ffffff;\n}\n\n.regions-display-text {\n width: 59px;\n height: 20px;\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n margin-left: 8px;\n}\n\n.all-checkbox {\n float: right;\n}\n\n.checkbox-group {\n width: 260px;\n border: 1px solid rgb(144, 147, 153);\n border-radius: 4px;\n background: #ffffff;\n margin-top: 6px;\n}\n\n.checkbox-group-inner {\n padding: 18px;\n max-height: 240px;\n min-height: 130px;\n overflow: auto;\n scrollbar-color: #c0c4cc rgba(1, 1, 1, 0);\n scrollbar-width: thin;\n\n &::-webkit-scrollbar {\n width: 4px;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n box-shadow: inset 0 0 6px #c0c4cc;\n }\n}\n\n::v-deep .el-checkbox__input {\n &.is-indeterminate, &.is-checked {\n .el-checkbox__inner {\n background-color: $app-primary-color;\n border-color: $app-primary-color;\n }\n }\n}\n\n::v-deep .el-color-picker__color {\n border: 1px solid $app-primary-color;\n}\n\n::v-deep .el-checkbox__label {\n padding-left: 5px;\n color: $app-primary-color !important;\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0px;\n line-height: 14px;\n}\n\n.activeItem {\n background-color: #bbb !important;\n}\n\n.my-checkbox {\n background-color: #fff;\n width: 100%;\n\n ::v-deep .el-color-picker {\n height: 16px !important;\n top: 3px;\n }\n\n ::v-deep .el-color-picker__trigger {\n margin-left: 8px;\n margin-right: 8px;\n padding: 0px;\n height: 16px;\n width: 16px;\n border: 0px;\n }\n\n}\n\n.hoverItem {\n background-color: #eee !important;\n}\n\n::v-deep .el-color-picker__icon {\n &.el-icon-arrow-down {\n display: none;\n }\n}\n\n::v-deep .show-picker {\n .el-color-picker__icon {\n &.el-icon-arrow-down {\n display: block;\n }\n }\n}\n\n::v-deep .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n\n.drawer {\n ::v-deep .el-drawer:focus {\n outline: none;\n }\n}\n\n.open-drawer {\n width: 20px;\n height: 40px;\n z-index: 8;\n position: absolute;\n left: 0px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #f7faff;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.drawer-button {\n float: left;\n width: 20px;\n height: 40px;\n z-index: 8;\n margin-top: calc(50% - 52px);\n border: solid 1px #e4e7ed;\n border-left: 0;\n background-color: #ffffff;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.drawer-button {\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transition-delay: 0.9s;\n }\n &.open {\n i {\n transform: rotate(0deg) scaleY(2.5);\n }\n }\n &.close {\n i {\n transform: rotate(180deg) scaleY(2.5); \n }\n }\n}\n\n.drawer-button.open i {\n transform: rotate(0deg) scaleY(2.5);\n}\n\n.drawer-button.close i {\n transform: rotate(180deg) scaleY(2.5);\n}\n</style>\n\n<style>\n.hide-scaffold-colour-popup {\n display: none;\n}\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraditionalControls.vue?vue&type=template&id=335c5764&scoped=true&\"\nimport script from \"./TraditionalControls.vue?vue&type=script&lang=js&\"\nexport * from \"./TraditionalControls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&\"\nimport style1 from \"./TraditionalControls.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"335c5764\",\n null\n \n)\n\nexport default component.exports","<template>\n <div\n ref=\"scaffoldContainer\"\n v-loading=\"loading\"\n class=\"scaffold-container\"\n element-loading-text=\"Loading...\"\n element-loading-spinner=\"el-icon-loading\"\n element-loading-background=\"rgba(0, 0, 0, 0.3)\"\n >\n <map-svg-sprite-color />\n <div\n id=\"organsDisplayArea\"\n ref=\"display\"\n tabindex=\"-1\"\n style=\"height:100%;width:100%;\"\n @keydown.66=\"backgroundChangeCallback\"\n />\n <div v-show=\"displayUI && !isTransitioning\">\n <el-popover\n v-if=\"displayWarning\"\n ref=\"warningPopover\"\n v-model=\"hoverVisabilities[6].value\"\n :content=\"warningMessage\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"warning-popper right-popper non-selectable\"\n />\n <i\n v-if=\"displayWarning\"\n v-popover:warningPopover\n class=\"el-icon-warning warning-icon\"\n @mouseover=\"showToolitip(6)\"\n @mouseout=\"hideToolitip(6)\"\n >\n <span class=\"warning-text\">Beta</span>\n </i>\n <el-popover\n ref=\"checkBoxPopover\"\n v-model=\"hoverVisabilities[5].value\"\n content=\"Change region visibility\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper right-popper non-selectable\"\n />\n <TraditionalControls\n ref=\"traditionalControl\"\n v-popover:checkBoxPopover\n :help-mode=\"helpMode\"\n :module=\"$module\"\n :show-colour-picker=\"showColourPicker\"\n @object-selected=\"objectSelected\"\n @object-hovered=\"objectHovered\"\n @drawer-toggled=\"drawerToggled\"\n />\n <div class=\"opacity-box\">\n <OpacityControls ref=\"opacityControl\" />\n </div>\n <el-popover\n v-if=\"sceneData.timeVarying\"\n ref=\"sliderPopover\"\n v-model=\"hoverVisabilities[4].value\"\n content=\"Move the slider to animate the region\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper top-popper non-selectable\"\n />\n <div\n v-if=\"sceneData.timeVarying\"\n v-popover:sliderPopover\n class=\"time-slider-container\"\n :class=\"[ minimisedSlider ? 'minimised' : '', sliderPosition]\"\n >\n <el-tabs type=\"card\">\n <el-tab-pane label=\"Animate scaffold\">\n <el-row class=\"tab-content\">\n <map-svg-icon\n v-if=\"isPlaying\"\n icon=\"pause\"\n class=\"icon-button video-button\"\n @click.native=\"play(false)\"\n />\n <map-svg-icon\n v-else\n icon=\"play\"\n class=\"video-button icon-button\"\n @click.native=\"play(true)\"\n />\n <el-slider\n :min=\"0\"\n :max=\"timeMax\"\n :value=\"sceneData.currentTime / 100 * timeMax\"\n :step=\"0.1\"\n tooltip-class=\"time-slider-tooltip\"\n class=\"slider\"\n :format-tooltip=\"formatTooltip\"\n :marks=\"timeStamps\"\n @input=\"timeChange($event)\"\n />\n </el-row>\n </el-tab-pane>\n <el-tab-pane label=\"Animation data\">\n <el-row class=\"tab-content\">\n <div class=\"animation-data\">\n Original duration:\n <div class=\"purple\">\n {{ orginalDuration }}\n </div>\n </div>\n <div class=\"animation-data\">\n Animation duration:\n <div class=\"purple\">\n {{ animateDuration }}\n </div>\n </div>\n <div class=\"animation-data\">\n Playback speed\n <el-select\n :popper-append-to-body=\"true\"\n :value=\"currentSpeed\"\n placeholder=\"Select\"\n class=\"select-box\"\n popper-class=\"scaffold_viewer_dropdown\"\n @change=\"speedChanged($event)\"\n >\n <el-option\n v-for=\"item in playSpeed\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </div>\n </el-row>\n </el-tab-pane>\n </el-tabs>\n </div>\n <div class=\"bottom-right-control\">\n <el-popover\n v-model=\"hoverVisabilities[0].value\"\n content=\"Zoom in\"\n placement=\"left\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper left-popper non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n icon=\"zoomIn\"\n class=\"icon-button zoomIn\"\n @click.native=\"zoomIn()\"\n @mouseover.native=\"showToolitip(0)\"\n @mouseout.native=\"hideToolitip(0)\"\n />\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[1].value\"\n content=\"Zoom out\"\n placement=\"top-end\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper popper-zoomout non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n icon=\"zoomOut\"\n class=\"icon-button zoomOut\"\n @click.native=\"zoomOut()\"\n @mouseover.native=\"showToolitip(1)\"\n @mouseout.native=\"hideToolitip(1)\"\n />\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[2].value\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper non-selectable\"\n >\n <div>\n Fit to\n <br>\n window\n </div>\n <map-svg-icon\n slot=\"reference\"\n icon=\"fitWindow\"\n class=\"icon-button fitWindow\"\n @click.native=\"fitWindow()\"\n @mouseover.native=\"showToolitip(2)\"\n @mouseout.native=\"hideToolitip(2)\"\n />\n </el-popover>\n </div>\n <el-popover\n ref=\"backgroundPopover\"\n placement=\"top-start\"\n width=\"128\"\n :append-to-body=\"false\"\n trigger=\"click\"\n popper-class=\"background-popper non-selectable\"\n >\n <el-row class=\"backgroundText\">\n Change background\n </el-row>\n <el-row class=\"backgroundChooser\">\n <div\n v-for=\"item in availableBackground\"\n :key=\"item\"\n :class=\"['backgroundChoice', item, item == currentBackground ? 'active' :'']\"\n @click=\"backgroundChangeCallback(item)\"\n />\n </el-row>\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[3].value\"\n content=\"Change background color\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper right-popper non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n v-popover:backgroundPopover\n icon=\"changeBckgd\"\n class=\"icon-button background-colour\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n @mouseover.native=\"showToolitip(3)\"\n @mouseout.native=\"hideToolitip(3)\"\n />\n </el-popover>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport OpacityControls from \"./OpacityControls\";\nimport TraditionalControls from \"./TraditionalControls\";\nimport { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\n\nimport {\n Col,\n Loading,\n Option,\n Popover,\n Row,\n Select,\n Slider,\n TabPane,\n Tabs\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Col);\nVue.use(Loading.directive);\nVue.use(Option);\nVue.use(Popover);\nVue.use(Row);\nVue.use(Select);\nVue.use(Slider);\nVue.use(TabPane);\nVue.use(Tabs);\n\nconst OrgansViewer = require(\"../scripts/organsRenderer\").OrgansViewer;\nconst EventNotifier = require(\"../scripts/eventNotifier\").EventNotifier;\n\n/**\n * A vue component of the scaffold viewer.\n *\n * @requires ./OpacityControls.vue\n * @requires ./TraditionalControls.vue\n */\nexport default {\n name: \"ScaffoldVuer\",\n components: {\n OpacityControls,\n MapSvgIcon,\n MapSvgSpriteColor,\n TraditionalControls\n },\n props: {\n /**\n * URL of the zincjs metadata. This value will be ignored if a valid\n * state prop is also provided.\n * If the url needs to be updated with state present, please use\n * the setURL method.\n */\n url: {\n type: String,\n default: \"\"\n },\n /**\n * Show the colour control of set to true.\n */\n showColourPicker: {\n type: Boolean,\n default: false\n },\n /**\n * Flag to show/hide the UI.\n */\n displayUI: {\n type: Boolean,\n default: true\n },\n /**\n * Display all graphics at start.\n *\n * This setting only works when traditional is set to false.\n */\n displayAtStartUp: {\n type: Boolean,\n default: true\n },\n /**\n * Use for toggling the help tooltips.\n */\n helpMode: {\n type: Boolean,\n default: false\n },\n /**\n * Use for show/display beta warning icon.\n */\n displayWarning: {\n type: Boolean,\n default: true\n },\n /**\n * Warning message for the hovered over text\n * on the warning icon.\n */\n warningMessage: {\n type: String,\n default: \"Beta feature - under active development\"\n },\n /**\n * Show/hide pickable markers for regions.\n */\n displayMarkers: {\n type: Boolean,\n default: true\n },\n /**\n * Show/hide minimap.\n */\n displayMinimap: {\n type: Boolean,\n default: false\n },\n /**\n * Settings for minimap position, size and alignment.\n */\n minimapSettings: {\n type: Object,\n default: function() {\n return {\n x_offset: 16,\n y_offset: 16,\n width: 128,\n height: 128,\n align: \"top-right\"\n };\n }\n },\n /**\n * State containing state of the scaffold.\n */\n state: {\n type: Object,\n default: undefined\n },\n /**\n * Optional prop for the name of the region to focus on,\n * this option is ignored if state or viewURL is also provided.\n */\n region: {\n type: String,\n default: \"\"\n },\n /**\n * Optional prop for an URL of containing information of a viewport.\n * This option is ignored if state is also provided.\n * It will use the provided URL as base if a relative parth is provided.\n */\n viewURL: {\n type: String,\n default: \"\"\n },\n /**\n * Settings for turning on/off rendering\n */\n render: {\n type: Boolean,\n default: true\n }\n },\n data: function() {\n return {\n sceneData: this.$module.sceneData,\n isPlaying: false,\n /**\n * This is set when scene is transitioning.\n */\n isTransitioning: false,\n tooltipAppendToBody: false,\n hoverVisabilities: [\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false }\n ],\n inHelp: false,\n loading: false,\n duration: 3000,\n drawerOpen: true,\n currentBackground: \"white\",\n availableBackground: [\"white\", \"lightskyblue\", \"black\"],\n minimisedSlider: false,\n sliderPosition: \"\",\n timeMax: 100,\n orginalDuration: \"\",\n animateDuration: \"6secs\",\n playSpeed: [\n {\n value: 0.1,\n label: \"0.1x\"\n },\n {\n value: 0.5,\n label: \"0.5x\"\n },\n {\n value: 1,\n label: \"1x\"\n },\n {\n value: 2,\n label: \"2x\"\n },\n {\n value: 5,\n label: \"5x\"\n },\n {\n value: 10,\n label: \"10x\"\n }\n ],\n currentSpeed: 1,\n timeStamps: {}\n };\n },\n watch: {\n url: {\n handler: function(newValue) {\n if (this.state === undefined || this.state.url === undefined)\n this.setURL(newValue);\n },\n immediate: true\n },\n region: {\n handler: function(region) {\n if (!(this.state || this.viewURL)) this.setFocusedRegion(region);\n },\n immediate: true\n },\n state: {\n handler: function(state) {\n this.setState(state);\n },\n immediate: true,\n deep: true\n },\n viewURL: {\n handler: function(viewURL) {\n this.updateViewURL(viewURL);\n },\n immediate: true\n },\n helpMode: function(val) {\n this.setHelpMode(val);\n },\n displayMarkers: function(val) {\n this.$module.scene.displayMarkers = val;\n },\n displayMinimap: function(val) {\n this.$module.scene.displayMinimap = val;\n },\n \"sceneData.currentTime\": function() {\n /**\n * Triggers when scene time changes.\n *\n * @property {number} time Current build-in time of scene.\n * of selected object.\n */\n this.$emit(\"timeChanged\", this.sceneData.currentTime);\n },\n duration: function() {\n this.$module.scene.setDuration(this.duration);\n },\n minimapSettings: {\n deep: true,\n handler: \"updateMinimapScissor\"\n },\n render: function(val) {\n this.toggleRendering(val);\n }\n },\n beforeCreate: function() {\n this.$module = new OrgansViewer();\n this.isReady = false;\n this.selectedObject = undefined;\n this.hoveredObject = undefined;\n this.currentBackground = \"white\";\n this._currentURL = undefined;\n this.availableBackground = [\"white\", \"black\", \"lightskyblue\"];\n },\n mounted: function() {\n let eventNotifier = new EventNotifier();\n eventNotifier.subscribe(this, this.eventNotifierCallback);\n this.$module.addNotifier(eventNotifier);\n this.$module.addOrganPartAddedCallback(this.organsAdded);\n this.$module.initialiseRenderer(this.$refs.display);\n this.toggleRendering(this.render);\n this.ro = new ResizeObserver(this.adjustLayout).observe(\n this.$refs.scaffoldContainer\n );\n this.defaultRate = this.$module.getPlayRate();\n },\n beforeDestroy: function() {\n if (this.ro) this.ro.disconnect();\n this.$module.destroy();\n this.$module = undefined;\n },\n methods: {\n /**\n * This is called when a new organ is read into the scene.\n */\n organsAdded: function() {\n this.loading = false;\n },\n /**\n * This is called when Change backgspeedround colour button\n * is pressed an causes the backgrouColornd colour to be changed\n * to one of the three preset colour: white, black and\n * lightskyblue.\n */\n backgroundChangeCallback: function(colour) {\n this.currentBackground = colour;\n this.$module.zincRenderer\n .getThreeJSRenderer()\n .setClearColor(this.currentBackground, 1);\n },\n /**\n * This is called by captueeScreenshot and after the last render\n * loop, it download a screenshot of the current scene with no UI.\n */\n captureScreenshotCallback: function() {\n //Remove the callback, only needs to happen once\n this.$module.zincRenderer.removePostRenderCallbackFunction(\n this.captureID\n );\n let screenshot = this.$module.zincRenderer\n .getThreeJSRenderer()\n .domElement.toDataURL(\"image/png\");\n let hrefElement = document.createElement(\"a\");\n document.body.append(hrefElement);\n if (!this.captureFilename) hrefElement.download = `screenshot.png`;\n else hrefElement.download = this.captureFilename;\n hrefElement.href = screenshot;\n hrefElement.click();\n hrefElement.remove();\n },\n /**\n * Function for capturing a screenshot of the current rendering.\n *\n * @param {String} filename filename given to the screenshot.\n *\n * @public\n */\n captureScreenshot: function(filename) {\n this.captureFilename = filename;\n this.captureID = this.$module.zincRenderer.addPostRenderCallbackFunction(\n this.captureScreenshotCallback\n );\n },\n formatTooltip(val) {\n if (this.timeMax >= 1000) {\n if (val) {\n let sec = ((val % 60000) / 1000).toFixed(2) + \"s\";\n let min = val > 60000 ? (val / 60000).toFixed(0) + \"m \" : \"\";\n return min + sec;\n }\n }\n return val ? val.toFixed(2) + \" ms\" : \"0 ms\";\n },\n /**\n * Function to reset the view to default.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n fitWindow: function() {\n if (this.$module.scene) {\n this.$module.scene.viewAll();\n }\n },\n /**\n * Function to zoom in.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n zoomIn: function() {\n if (this.$module.scene) {\n this.$module.scene.changeZoomByScrollRateUnit(-1);\n }\n },\n /**\n * Function to zoom out.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n zoomOut: function() {\n if (this.$module.scene) {\n this.$module.scene.changeZoomByScrollRateUnit(1);\n }\n },\n /**\n * Function to change the current play speed.\n *\n * @public\n */\n speedChanged: function(speed) {\n this.currentSpeed = speed;\n this.$module.setPlayRate(this.defaultRate * this.currentSpeed);\n },\n /**\n * Function used to stop the free spin\n *\n * @public\n */\n stopFreeSpin: function() {\n let cameracontrol = this.$module.scene.getZincCameraControls();\n cameracontrol.stopAutoTumble();\n this.isTransitioning = false;\n },\n /**\n * Focus on named region\n */\n viewRegion: function(name) {\n if (name && name != \"\" && this.$module.scene) {\n let objects = this.$module.scene.findObjectsWithGroupName(name);\n let box = this.$module.scene.getBoundingBoxOfZincObjects(objects);\n if (box) {\n 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","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport ScaffoldVuer from \"./ScaffoldVuer.vue\";\n\nexport {\n ScaffoldVuer\n};\n","import './setPublicPath'\nexport * from '~entry'\n","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/bootstrap","webpack://scaffoldvuer/external \"core-js/modules/es.symbol.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/checkbox-group\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/checkbox-group.css\"","webpack://scaffoldvuer/external \"element-ui/lib/select\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/select.css\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.for-each\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.concat\"","webpack://scaffoldvuer/external \"element-ui/lib/container\"","webpack://scaffoldvuer/external \"core-js/modules/web.dom-collections.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/main\"","webpack://scaffoldvuer/external \"core-js/modules/es.object.keys\"","webpack://scaffoldvuer/./src/components/OpacityControls.vue?cbe9","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://scaffoldvuer/external \"core-js/modules/web.url\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://scaffoldvuer/external \"element-ui/lib/header\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tabs.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.number.to-fixed\"","webpack://scaffoldvuer/external \"element-ui/lib/tab-pane\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/color-picker.css\"","webpack://scaffoldvuer/external \"element-ui/lib/drawer\"","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?1453","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?a886","webpack://scaffoldvuer/external \"@abi-software/svg-sprite\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?4ffd","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/components/OpacityControls.vue?e8dc","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://scaffoldvuer/./src/scripts/graphicsHighlight.js","webpack://scaffoldvuer/external \"core-js/modules/es.regexp.to-string\"","webpack://scaffoldvuer/external \"core-js/modules/es.symbol\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?7756","webpack://scaffoldvuer/external \"core-js/modules/es.array.slice\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://scaffoldvuer/external \"lodash/orderBy\"","webpack://scaffoldvuer/./src/scripts/BaseModule.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.index-of\"","webpack://scaffoldvuer/external \"element-ui/lib/locale/lang/en\"","webpack://scaffoldvuer/external \"element-ui/lib/row\"","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/typeof.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/col.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/main.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.splice\"","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?832c","webpack://scaffoldvuer/external \"element-ui/lib/locale\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/option.css\"","webpack://scaffoldvuer/./src/scripts/RendererModule.js","webpack://scaffoldvuer/external \"core-js/modules/es.object.to-string\"","webpack://scaffoldvuer/external \"vue\"","webpack://scaffoldvuer/external \"element-ui/lib/tabs\"","webpack://scaffoldvuer/external \"core-js/modules/es.array.iterator\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/icon.css\"","webpack://scaffoldvuer/external \"core-js/modules/es.string.iterator\"","webpack://scaffoldvuer/external \"zincjs\"","webpack://scaffoldvuer/external \"element-ui/lib/popover\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/slider.css\"","webpack://scaffoldvuer/./src/scripts/annotation.js","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/tab-pane.css\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/base.css\"","webpack://scaffoldvuer/./src/scripts/eventNotifier.js","webpack://scaffoldvuer/external \"@soda/get-current-script\"","webpack://scaffoldvuer/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/components/ScaffoldVuer.vue?9a30","webpack://scaffoldvuer/./src/scripts/WebGL.js","webpack://scaffoldvuer/./node_modules/@babel/runtime/helpers/readOnlyError.js","webpack://scaffoldvuer/external \"core-js/modules/es.array.from\"","webpack://scaffoldvuer/./src/components/TraditionalControls.vue?1801","webpack://scaffoldvuer/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://scaffoldvuer/./src/components/ScaffoldVuer.vue?8ce3","webpack://scaffoldvuer/./src/components/OpacityControls.vue?d00a","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?95bc","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/./src/components/index.js","webpack://scaffoldvuer/./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js","webpack://scaffoldvuer/external \"core-js/modules/es.string.includes\"","webpack://scaffoldvuer/external \"element-ui/lib/theme-chalk/row.css\""],"names":["_nonIterableSpread","TypeError","module","exports","_iterableToArray","iter","Symbol","iterator","Object","Array","from","arrayLikeToArray","require","_arrayWithoutHoles","arr","isArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_toConsumableArray","THREE","OrgansSceneData","currentName","currentSystem","currentPart","currentSpecies","metaURL","viewURL","geometries","lines","glyphsets","pointsets","currentTime","timeVarying","OrgansViewer","ModelsLoaderIn","RendererModule","call","_this","pickerScene","undefined","sceneData","timeChangedCallbacks","sceneChangedCallbacks","organPartAddedCallbacks","finishDownloadCallback","modelsLoader","NDCCameraControl","typeName","getSceneData","updateTime","value","duration","scene","getDuration","actualTime","nerveMapIsActive","setMorphsTime","preRenderTimeUpdate","zincRenderer","getCurrentTime","i","length","nerveMap","additionalReader","setTime","toggleSyncControl","flag","cameraControl","getZincCameraControls","resetView","enableSyncControl","disableSyncControl","setSyncControlCallback","callback","setEventCallback","setSyncControlCenterZoom","center","zoom","setCenterZoom","postRenderSelectedCoordinatesUpdate","selectedCenter","vector","Vector3","copy","coord","vectorToScreenXY","selectedScreenCoordinates","x","y","preRenderUpdateCallback","postRenderUpdateCallback","addTimeChangedCallback","push","setTexturePos","setSliderPos","addSceneChangedCallback","addOrganPartAddedCallback","setFinishDownloadCallback","unsetFinishDownloadCallback","getNamedObjectsToScreenCoordinates","name","camera","setFromMatrixPosition","obj","matrixWorld","widthHalf","width","heightHalf","height","project","getIdObjectFromIntersect","intersected","id","intersectedObject","object","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","singleItemDownloadCompletedCallback","geometry","updateFieldvisibility","dataFields","geometryName","PartName","partDetails","getOrganDetails","SystemName","loadMetadataURL","getOrgansDirectoryPrefix","meta","getAvailableSpecies","availableSpecies","keysArray","keys","organsFileMap","index","hasOwnProperty","setSceneData","speciesName","organsDetails","splice","loadOrgansFromURL","url","organScene","getSceneByName","clearAll","createScene","loadViewURL","setCurrentScene","graphicsHighlight","reset","zincCameraControl","enableRaycaster","setMouseButtonAction","alignCameraWithSelectedObject","transitionTime","objects","getSelected","alignObjectToCameraView","exportSettings","settings","instanceName","dialog","importSettings","setName","loadOrgans","initialise","initialiseRenderer","addPreRenderCallbackFunction","addPostRenderCallbackFunction","prototype","create","_arrayLikeToArray","len","arr2","GraphicsHighlight","currentHighlightedObjects","currentSelectedObjects","highlightColour","selectColour","originalColour","isDifferent","array1","array2","matched","j","getUnmatchingObjects","objectsArray1","objectsArray2","unmatchingObjects","setHighlighted","previousHighlightedObjects","resetHighlighted","array","fullList","getFullListOfObjects","material","emissive","setRGB","setSelected","previousHSelectedObjects","resetSelected","depthFunc","LessEqualDepth","_unsupportedIterableToArray","o","minLen","n","toString","slice","constructor","test","MODULE_CHANGE","ALL","DESTROYED","NAME_CHANGED","SETTINGS_CHANGED","BaseModule","onChangedCallbacks","eventNotifiers","callbackArray","publishChanges","eventType","publish","getName","destroy","addChangedCallback","removeChangedCallback","indexOf","addNotifier","eventNotifier","_typeof","createRenderer","WEBGL","localContainer","document","createElement","localRenderer","isWebGLAvailable","Zinc","Renderer","window","defaultMaterialColor","initialiseVisualisation","playAnimation","warning","getWebGLErrorMessage","appendChild","rendererContainer","isZincObject","count","glyphset","propagateChanges","changed","EVENT_TYPE","HIGHLIGHTED","setHighlightedByZincObject","setupLiveCoordinates","zincObjects","boundingBox","getBoundingBoxOfZincObjects","newSelectedCenter","getCenter","objectsToZincObjects","SELECTED","addGlyphToArray","glyph","getMesh","findObjectsByGroupName","forEachGlyph","setHighlightedByGroupName","setSelectedByGroupName","viewAll","setPlayRate","getPlayRate","displayAreaIn","returnedValue","animate","dispose","isAnnotation","SelectionEvent","eventTypeIn","identifiersIn","identifiers","returnFullID","sourceId","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","contexts","message","element","fontFamily","fontSize","fontWeight","textAlign","background","color","padding","margin","replace","innerHTML","_readOnlyError","Error"],"mappings":"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AEA;AAFA,OAbA,EAiBA;AACA,gBADA;AAEA;AAFA,OAjBA,EAqBA;AACA,iBADA;AAEA;AAFA,OArBA,CA5BA;AAsDA,qBAtDA;AAuDA;AAvDA;AAyDA,GAvLA;AAwLA;AACA;AACA;AACA,sEACA;AACA,OAJA;AAKA;AALA,KADA;AAQA;AACA;AACA;AACA,OAHA;AAIA;AAJA,KARA;AAcA;AACA;AACA;AACA,OAHA;AAIA,qBAJA;AAKA;AALA,KAdA;AAqBA;AACA;AACA;AACA,OAHA;AAIA;AAJA,KArBA;AA2BA;AACA;AACA,KA7BA;AA8BA;AACA;AACA,KAhCA;AAiCA;AACA;AACA,KAnCA;AAoCA;AACA;;;;;;AAMA;AACA,KA5CA;AA6CA;AACA;AACA,KA/CA;AAgDA;AACA,gBADA;AAEA;AAFA,KAhDA;AAoDA;AACA;AACA;AAtDA,GAxLA;AAgPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAxPA;AAyPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DACA,4BADA;AAGA;AACA,GApQA;AAqQA;AACA;AACA;AACA;AACA,GAzQA;AA0QA;AACA;;;AAGA;AACA;AACA,KANA;;AAOA;;;;;;AAMA;AACA;AACA,gCACA,kBADA,GAEA,aAFA,CAEA,sBAFA,EAEA,CAFA;AAGA,KAlBA;;AAmBA;;;;AAIA;AACA;AACA,iEACA,cADA;AAGA,iDACA,kBADA,GAEA,UAFA,CAEA,SAFA,CAEA,WAFA;AAGA;AACA;AACA,8EACA;AACA;AACA;AACA;AACA,KAtCA;;AAuCA;;;;;;;AAOA;AACA;AACA,+EACA,8BADA;AAGA,KAnDA;AAoDA,iBApDA,yBAoDA,GApDA,EAoDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,KA7DA;;AA8DA;;;;;;AAMA;AACA;AACA;AACA;AACA,KAxEA;;AAyEA;;;;;;AAMA;AACA;AACA;AACA;AACA,KAnFA;;AAoFA;;;;;;AAMA;AACA;AACA;AACA;AACA,KA9FA;;AA+FA;;;;;AAKA;AACA;AACA;AACA,KAvGA;;AAwGA;;;;;AAKA;AACA;AACA;AACA;AACA,KAjHA;;AAkHA;;;AAGA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,KA7HA;AA8HA;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA,iDACA;AAAA;AAAA,YADA;AAGA;AACA;AACA,KAxIA;AAyIA;AACA;AACA;AACA;AACA;AACA,SAHA,MAGA;AACA,iDACA;AAAA;AAAA,YADA;AAGA;AACA;AACA,KApJA;AAqJA;AACA;AACA;AACA;;AACA;AACA,KA1JA;;AA2JA;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAzKA;;AA0KA;;;;AAIA;AACA;AACA;AACA;AACA,oDACA,4BADA,GAEA,+BAFA;AAGA;AACA,WALA,MAKA;AACA;AACA;AACA;AACA;;;;;;;;AAMA;AACA,OAlBA,MAkBA;AACA;AACA;AACA,qDACA,4BADA,GAEA,+BAFA;;AAGA;AACA,WALA,MAKA;AACA;AACA;;;;;;;;AAMA;AACA;AACA,KAlNA;;AAmNA;;;;;AAKA;AACA;AACA;AACA;;AACA;AACA,KA7NA;;AA8NA;;;;;;;AAOA;AACA;AACA,KAvOA;;AAwOA;;;AAGA;AACA;AACA,wDACA;AACA,KA/OA;;AAgPA;;;;;AAKA;AACA;AACA;AACA;AACA,iFACA;AACA;AACA,KA5PA;;AA6PA;;;;;AAKA;AACA;AACA;AACA,oFACA;AACA;AACA,KAxQA;;AAyQA;;;;;AAKA;AACA,8BACA,sDADA,KAGA;AACA,KAnRA;;AAoRA;;;;;AAKA;AACA,8BACA,qDADA,KAGA;AACA,KA9RA;;AA+RA;;;;;AAKA;AACA;AACA;AACA,KAvSA;;AAwSA;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAFA;AAGA,OALA,MAKA;AACA;AACA;AACA;AACA,SAFA;AAGA;AACA,KAvTA;;AAwTA;;;;AAIA;AAAA;;AACA;AACA;AACA;AACA,SAFA,EAEA,GAFA;AAGA;AACA,KAlUA;;AAmUA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KA3UA;;AA4UA;;;;AAIA;AAAA;;AACA;AACA;AACA,OAFA;AAGA;AACA,KArVA;AAsVA;AACA;AACA;AACA,+DACA,kBADA;AAGA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA,KAnWA;AAoWA;AAAA;;AACA;AACA;AACA;AACA,iCACA,qBADA,GAEA,wBAFA,CAEA,gBAFA;AAGA,WAJA,MAIA;AACA;;AACA;AACA,WAHA,MAGA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,aAFA;AAGA;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;AACA,OAxBA;AAyBA,KA9XA;;AA+XA;;;;;;AAMA;AACA;AACA,6BADA;AAEA,2BAFA;AAGA;AAHA;AAKA,yCACA;;AACA;AACA;AACA;AACA;;AACA;AACA,KAlZA;;AAmZA;;;;;;AAMA;AACA;AACA;AACA;AACA,oCADA;AAEA;AAFA;AAIA,SALA,MAKA;AACA;AACA;AACA,kCACA,mBACA,qBADA,GAEA,wBAFA,CAEA,cAFA;AAGA,oCACA;AACA,aAPA,MAOA;AACA,qDACA;AACA,wCADA;AAEA;AAFA,gBADA;AAMA;AACA;AACA;AACA;AACA,KApbA;AAqbA;AACA;AACA,KAvbA;;AAwbA;;;;;;;AAOA;AACA;AACA;AACA,yBACA,wDADA;AAEA;AACA,2CACA;AACA;AACA;AACA,+CACA;AACA,4BADA;AAEA,6BAFA;AAGA,+BAHA;AAIA;AAJA,UADA;AAQA,uCACA,QADA,EAEA,SAFA,EAGA,SAHA,EAIA,OAJA,EAKA,SALA;AAOA;AACA;AACA;AACA;AACA,KA5dA;;AA6dA;;;;;;AAMA;AACA;AACA,KAreA;;AAseA;;;;AAIA;AACA;AACA;AACA,KA7eA;;AA8eA;;;AAGA;AACA;AACA;;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAzfA;AA0fA;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;AACA,KAlgBA;AAmgBA;AACA;AACA;AACA;AACA,KAvgBA;AAwgBA;AACA;AACA;AACA,KA3gBA;AA4gBA;AACA;AACA;AACA;AA/gBA;AA1QA,G;;ACvRsU,CAAgB,wHAAG,EAAC,C;;;;;;;;ACAnP;AACvC;AACL;AACsC;AACxB;;;AAGzE;AAC0F;AAC1F,IAAI,sBAAS,GAAG,kBAAU;AAC1B,EAAE,+CAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,uEAAS,Q;;ACpBxB;AACA;AACA;;;ACFwB;AACF;;;;;;;;ACDtB,+D;;;;;;;ACAA,+D","file":"scaffoldvuer.common.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/checkbox-group\");","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","module.exports = require(\"element-ui/lib/theme-chalk/checkbox-group.css\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","module.exports = require(\"core-js/modules/es.array.for-each\");","module.exports = require(\"core-js/modules/es.array.concat\");","module.exports = require(\"element-ui/lib/container\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"element-ui/lib/main\");","module.exports = require(\"core-js/modules/es.object.keys\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=style&index=0&id=4c00a30f&scoped=true&lang=scss&\"","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","module.exports = require(\"element-ui/lib/header\");","module.exports = require(\"element-ui/lib/theme-chalk/tabs.css\");","module.exports = require(\"core-js/modules/es.number.to-fixed\");","module.exports = require(\"element-ui/lib/tab-pane\");","module.exports = require(\"element-ui/lib/theme-chalk/color-picker.css\");","module.exports = require(\"element-ui/lib/drawer\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&\"","// extracted by mini-css-extract-plugin","module.exports = require(\"@abi-software/svg-sprite\");","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/color-picker\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"lodash/uniq\");","module.exports = require(\"element-ui/lib/theme-chalk/header.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","const THREE = require('zincjs').THREE;\n// Current model's associate data, data fields, external link, nerve map\n// informations,\n// these are proived in the organsFileMap array.\nconst OrgansSceneData = function() {\n this.currentName = \"\";\n this.currentSystem = \"\";\n this.currentPart = \"\";\n this.currentSpecies = \"\";\n this.metaURL = \"\";\n this.viewURL = \"\";\n this.geometries = [];\n this.lines = [];\n this.glyphsets = [];\n this.pointsets = [];\n this.currentTime = 0.0;\n this.timeVarying = false;\n}\n\n/**\n * Viewer of 3D-organs models. Users can toggle on/off different views. Data is\n * displayed instead if models are not available.\n * \n * @class\n * @param {PJP.ModelsLoader}\n * ModelsLoaderIn - defined in modelsLoade.js, providing locations of\n * files.\n * @param {String}\n * PanelName - Id of the target element to create the\n * {@link PJP.OrgansViewer} on.\n * @author Alan Wu\n * @returns {PJP.OrgansViewer}\n */\n const OrgansViewer = function(ModelsLoaderIn) {\n (require('./RendererModule').RendererModule).call(this);\n const _this = this;\n\tlet pickerScene = undefined;\n\tthis.sceneData = new OrgansSceneData();\n\tconst timeChangedCallbacks = new Array();\n\tconst sceneChangedCallbacks = new Array();\n const organPartAddedCallbacks = new Array();\n let finishDownloadCallback = undefined;\n\tconst modelsLoader = ModelsLoaderIn;\n this.NDCCameraControl = undefined;\n\t_this.typeName = \"Organ Viewer\";\n\t\n\tthis.getSceneData = function() {\n\t return _this.sceneData;\n\t}\n\n\t/**\n\t * Used to update internal timer in scene when time slider has changed.\n\t */\n\tthis.updateTime = function(value) {\n let duration = 6000;\n if (_this.scene)\n duration = _this.scene.getDuration();\n const actualTime = value / 100.0 * duration;\n\t\tif (!_this.sceneData.nerveMapIsActive) {\n\t\t\tif (pickerScene)\n\t\t\t\tpickerScene.setMorphsTime(actualTime);\n\t\t\tif (_this.scene)\n\t\t\t\t_this.scene.setMorphsTime(actualTime);\n\t\t}\n\t\t_this.sceneData.currentTime = value;\n\t}\n\t\n\t/**\n\t * Update the time slider and other renderers/scenes when time has changed.\n\t */\n const preRenderTimeUpdate = function() {\n let duration = 3000;\n if (_this.scene)\n duration = _this.scene.getDuration();\n const currentTime = _this.zincRenderer.getCurrentTime();\n\t\tfor (let i = 0; i < timeChangedCallbacks.length;i++) {\n\t\t\ttimeChangedCallbacks[i](currentTime);\n\t\t}\n\t\tif (!_this.sceneData.nerveMapIsActive && pickerScene)\n\t\t\tpickerScene.setMorphsTime(currentTime);\n\t\tif (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)\n _this.sceneData.nerveMap.additionalReader.setTime(currentTime / \n duration);\n\t\t_this.sceneData.currentTime = currentTime / duration * 100.0;\n }\n\n this.toggleSyncControl = (flag) => {\n let cameraControl = this.scene.getZincCameraControls();\n if (flag) {\n cameraControl.resetView();\n this.NDCCameraControl = cameraControl.enableSyncControl();\n } else {\n this.NDCCameraControl = cameraControl.disableSyncControl();\n }\n }\n\n this.setSyncControlCallback = (callback) => {\n if (this.NDCCameraControl) {\n this.NDCCameraControl.setEventCallback(callback);\n }\n }\n\n this.setSyncControlCenterZoom = (center, zoom) => {\n if (this.NDCCameraControl) {\n this.NDCCameraControl.setCenterZoom(center, zoom);\n }\n }\n \n const postRenderSelectedCoordinatesUpdate = function() {\n if (_this.selectedCenter) {\n const vector = new THREE.Vector3();\n vector.copy(_this.selectedCenter);\n const coord = _this.scene.vectorToScreenXY(vector);\n _this.selectedScreenCoordinates.x = coord.x;\n _this.selectedScreenCoordinates.y = coord.y;\n }\n }\n\t\n\tconst preRenderUpdateCallback = function() {\n\t\treturn function() {\n preRenderTimeUpdate();\n\t\t}\n }\n \n const postRenderUpdateCallback = function() {\n\t\treturn function() {\n postRenderSelectedCoordinatesUpdate();\n\t\t}\n\t}\n\t\n\t /**\n\t\t * Add a callback which will be called when time has changed\n\t\t */\n\tthis.addTimeChangedCallback = function(callback) {\n\t if (typeof(callback === \"function\"))\n\t timeChangedCallbacks.push(callback);\n\t}\n\t\n\tthis.setTexturePos = function(value) {\n\t\tif (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)\n\t\t\t_this.sceneData.nerveMap.additionalReader.setSliderPos(value);\n\t}\n\n\tthis.addSceneChangedCallback = function(callback) {\n\t if (typeof(callback === \"function\")) {\n\t sceneChangedCallbacks.push(callback);\n\t }\n\t}\n\t\n\tthis.addOrganPartAddedCallback = function(callback) {\n if (typeof(callback === \"function\"))\n organPartAddedCallbacks.push(callback);\n }\n\n this.setFinishDownloadCallback = function(callback) {\n if (typeof(callback === \"function\"))\n finishDownloadCallback = callback;\n }\n\n this.unsetFinishDownloadCallback = function() {\n finishDownloadCallback = undefined;\n }\n\n this.getNamedObjectsToScreenCoordinates = function(name, camera) {\n const vector = new THREE.Vector3();\n vector.setFromMatrixPosition( obj.matrixWorld );\n const widthHalf = (width/2);\n const heightHalf = (height/2);\n vector.project(camera);\n vector.x = ( vector.x * widthHalf ) + widthHalf;\n vector.y = - ( vector.y * heightHalf ) + heightHalf;\n return vector;\n }\n\n const getIdObjectFromIntersect = function(intersected) {\n let id = undefined;\n let intersectedObject = undefined;\n if (intersected !== undefined) {\n if (intersected.object.userData && \n intersected.object.userData.isMarker) {\n intersectedObject = intersected.object.userData.parent.morph;\n } else {\n intersectedObject = intersected.object;\n }\n if (intersectedObject) {\n if (intersectedObject.name) {\n id = intersectedObject.name;\n } else {\n const annotations = _this.getAnnotationsFromObjects(\n [intersectedObject]);\n if (annotations && annotations[0]) {\n id = annotations[0].data.group;\n }\n }\n }\n }\n return {\"id\":id, \"object\":intersectedObject};\n }\n\t \n\t/**\n\t * Callback function when a pickable object has been picked. It will then\n\t * call functions in tissueViewer and cellPanel to show corresponding\n\t * informations.\n\t * \n\t * @callback\n\t */\n const _pickingCallback = function() {\n\t\treturn function(intersects, window_x, window_y) {\n const intersected = _this.getIntersectedObject(intersects);\n const idObject = getIdObjectFromIntersect(intersected);\n if (idObject.id) {\n if (idObject.object.userData.isGlyph) {\n if (idObject.object.name)\n _this.setSelectedByObjects([idObject.object], true);\n else\n _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);\n } else {\n _this.setSelectedByObjects([idObject.object], true);\n }\n return;\n } else {\n\t\t\t\t_this.setSelectedByObjects([], true);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t/**\n\t * Callback function when a pickable object has been hovered over.\n\t * \n\t * @callback\n\t */\n const _hoverCallback = function() {\n\t\treturn function(intersects, window_x, window_y) {\n const intersected = _this.getIntersectedObject(intersects);\n const idObject = getIdObjectFromIntersect(intersected);\n if (idObject.id) {\n _this.displayArea.style.cursor = \"pointer\";\n _this.setHighlightedByObjects([idObject.object], true);\n return;\n }\n else {\n\t\t\t\t_this.displayArea.style.cursor = \"auto\";\n\t\t\t\t_this.setHighlightedByObjects([], true);\n }\n\t\t}\n\t};\n\n\tconst changeOrganPartsVisibilityForScene = function(scene, name, value, type) {\n\t\tif (type == \"all\" || type == \"geometries\") {\n\t\t\tconst geometries = scene.findGeometriesWithGroupName(name);\n\t\t\tfor (let i = 0; i < geometries.length; i ++ ) {\n\t\t\t\tgeometries[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"glyphsets\") {\n\t\t\tconst glyphsets = scene.findGlyphsetsWithGroupName(name);\n\t\t\tfor (let i = 0; i < glyphsets.length; i ++ ) {\n\t\t\t\tglyphsets[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"pointsets\") {\n\t\t\tconst pointsets = scene.findPointsetsWithGroupName(name);\n\t\t\tfor (let i = 0; i < pointsets.length; i ++ ) {\n\t\t\t\tpointsets[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t\tif (type == \"all\" || type == \"lines\") {\n\t\t\tconst lines = scene.findLinesWithGroupName(name);\n\t\t\tfor (let i = 0; i < lines.length; i ++ ) {\n\t\t\t\tlines[i].setVisibility(value);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeGeometriesVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeGlyphsetsVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeLinesVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');\n\t}\n\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changePointsetsVisibility = function(name, value) {\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');\n }\n \t\t\t\n\t/**\n\t * Change visibility for parts of the current scene.\n\t */\n\tthis.changeOrganPartsVisibility = function(name, value, typeIn) {\n\t\tlet type = \"all\";\n\t\tif (typeIn !== undefined)\n\t\t\ttype = typeIn;\n\t\tchangeOrganPartsVisibilityForScene(_this.scene, name, value, type);\n\t\tif (pickerScene)\n\t\t\tchangeOrganPartsVisibilityForScene(pickerScene, name, value, type);\n\t}\n\t\n\tthis.changeOrganPartsVisibilityCallback = function(name) {\n\t\treturn function(value) {\n\t\t\t_this.changeOrganPartsVisibility(name, value);\n\t\t}\n\t}\n\t\t\t\n\tthis.changeBackgroundColour = function(backgroundColourString) {\n\t\tconst colour = new THREE.Color(backgroundColourString);\n\t\tif (_this.zincRenderer) {\n\t\t\tconst internalRenderer = _this.zincRenderer.getThreeJSRenderer();\n\t\t\tinternalRenderer.setClearColor( colour, 1 );\n\t\t}\n\t}\n\n\tconst addOrganPartToSceneData = function(zincObject) {\n\t\tif (zincObject.groupName) {\n\t\t\tif (zincObject.isGeometry) {\n\t\t\t\tif (!_this.sceneData.geometries.includes(zincObject.groupName)) {\n\t\t\t\t\t_this.sceneData.geometries.push(zincObject.groupName);\n\t\t\t\t}\n\t\t\t} else if (zincObject.isGlyphset) {\n\t\t\t\tif (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {\n\t\t\t\t\t_this.sceneData.glyphsets.push(zincObject.groupName);\n\t\t\t\t}\n\t\t\t} else if (zincObject.isLines) {\n\t\t\t\tif (!_this.sceneData.lines.includes(zincObject.groupName)) {\n\t\t\t\t\t_this.sceneData.lines.push(zincObject.groupName);\n\t\t\t\t}\n\t\t\t} else if (zincObject.isPointset) {\n\t\t\t\tif (!_this.sceneData.pointsets.includes(zincObject.groupName)) {\n\t\t\t\t\t_this.sceneData.pointsets.push(zincObject.groupName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst addOrganPart = function(systemName, partName, useDefautColour, zincObject) {\n for (let i = 0; i < organPartAddedCallbacks.length;i++) {\n organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);\n }\n if (useDefautColour)\n modelsLoader.setGeometryColour(zincObject, systemName, partName);\n addOrganPartToSceneData(zincObject);\n\t\tconst annotation = new (require('./annotation').annotation)();\n\t\tannotation.data = {species:_this.sceneData.currentSpecies, system:systemName, part:partName, group:zincObject.groupName};\n\t\tzincObject.userData = [annotation];\n\t}\n\n\t /**\n\t\t * New organs geometry has been added to the scene, add UIs and make\n\t\t * sure the viewport is correct.\n\t\t */\n\t const _addOrganPartCallback = function(systemName, partName, useDefautColour) {\n\t return function(zincObject) {\n\t \taddOrganPart(systemName, partName, useDefautColour, zincObject);\n\t }\n\t }\n\t \n\t const downloadCompletedCallback = function() {\n\t\t return function() {\n\t\t\t _this.settingsChanged();\n\t\t\t _this.sceneData.timeVarying = _this.scene.isTimeVarying();\n if (finishDownloadCallback)\n finishDownloadCallback();\n\t\t }\n\t }\n\t \n\t const singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {\n return function(geometry) {\n addOrganPart(systemName, partName, useDefautColour, geometry);\n _this.settingsChanged();\n }\n\t }\n\t \n\t /**\n\t\t * Toggle data field displays. Data fields displays flow/pressure and <button @click=\"play\">Play</button>\n\t\t * other activities of the organs.\n\t\t */\n\t this.updateFieldvisibility = function(dataFields, value) {\n for ( let i = 0; i < dataFields.length; i ++ ) {\n if (value != i) {\n const geometryName = dataFields[i].PartName;\n _this.changeOrganPartsVisibility(geometryName, false);\n }\n }\n if (value > -1) {\n const partName = dataFields[value].PartName;\n if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||\n (_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {\n _this.changeOrganPartsVisibility(partName, true);\n } else {\n const partDetails = getOrganDetails(dataFields[value].SystemName, partName);\n if (partDetails != undefined) {\n _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + \"/\" + partDetails.meta);\n }\n }\n\t }\n\t }\n\t \n\t /**\n\t\t * Return an array containing name(s) of species that also contains the\n\t\t * currently displayed organs.\n\t\t * \n\t\t * @returns {Array} containing species name\n\t\t */\n\t this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {\n\t const availableSpecies = new Array();\n\t availableSpecies.push(\"none\");\n\t const keysArray = Object.keys(organsFileMap);\n\t for (index in keysArray) {\n\t const species = keysArray[index];\n\t if (species != currentSpecies) {\n\t if (organsFileMap[species].hasOwnProperty(currentSystem) &&\n\t organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {\n\t availableSpecies.push(species);\n\t }\n\t }\n\t }\n\t return availableSpecies;\n\t }\n\t \n\t const setSceneData = function(speciesName, systemName, partName, organsDetails) {\n _this.sceneData.nerveMapIsActive = false;\n _this.sceneData.nerveMap = undefined;\n _this.sceneData.metaURL = \"\";\n _this.sceneData.viewURL = \"\";\n _this.sceneData.currentSpecies = speciesName;\n _this.sceneData.currentSystem = systemName;\n\t\t\t_this.sceneData.currentPart = partName;\n\t\t\t_this.sceneData.currentTime = 0.0;\n\t\t\t_this.sceneData.geometries.splice(0);\n\t\t\t_this.sceneData.lines.splice(0);\n\t\t\t_this.sceneData.glyphsets.splice(0);\n\t\t\t_this.sceneData.pointsets.splice(0);\n\t\t\t_this.sceneData.timeVarying = false;\n // This is used as title\n let name = \"\";\n if (speciesName)\n name = speciesName + \"/\";\n if (systemName)\n name = systemName + \"/\";\n if (partName)\n name = partName;\n _this.sceneData.currentName = name;\n\t }\n\n\t this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {\n\t\t if (_this.zincRenderer) {\n\t\t\t if (partName && (_this.sceneData.metaURL !== url)) {\n\t\t\t setSceneData(speciesName, systemName, partName, undefined);\n\t\t\t const name = _this.sceneData.currentName;\n\t\t\t let organScene = _this.zincRenderer.getSceneByName(name);\n\t\t\t if (organScene) {\n\t\t\t \t organScene.clearAll();\n\t\t\t } else {\n\t\t\t \t organScene = _this.zincRenderer.createScene(name);\n\t\t\t }\n\t\t\t for (let i = 0; i < sceneChangedCallbacks.length;i++) {\n\t\t\t \t sceneChangedCallbacks[i](_this.sceneData);\n\t\t\t }\n\t\t\t if (viewURL && viewURL != \"\") {\n\t\t\t \t _this.sceneData.viewURL = viewURL;\n\t\t\t\t organScene.loadViewURL(_this.sceneData.viewURL);\n\t\t\t } else {\n\t\t\t \t _this.sceneData.viewURL = undefined;\n }\n\t\t\t _this.sceneData.metaURL = url;\n\t\t\t organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),\n\t\t\t \t downloadCompletedCallback());\t \n\t\t\t _this.scene = organScene;\n\t\t\t _this.zincRenderer.setCurrentScene(organScene);\n\t\t\t _this.graphicsHighlight.reset();\n\t\t\t const zincCameraControl = organScene.getZincCameraControls();\n\t\t\t zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());\n\t\t\t zincCameraControl.setMouseButtonAction(\"AUXILIARY\", \"ZOOM\");\n\t\t\t zincCameraControl.setMouseButtonAction(\"SECONDARY\", \"PAN\");\n\t\t\t }\n\t\t }\n\t }\n\t \t \n\t this.alignCameraWithSelectedObject = function(transitionTime) {\n\t const objects = _this.graphicsHighlight.getSelected();\n\t if (objects && objects[0] && objects[0].userData) {\n\t _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);\n\t }\n\t }\n\t \n\t this.exportSettings = function() {\n\t\t const settings = {};\n\t\t settings.name = _this.instanceName;\n\t\t if (_this.sceneData.currentSystem)\n\t\t\t settings.system = _this.sceneData.currentSystem;\n\t\t if (_this.sceneData.currentSpecies)\n\t\t\t settings.species = _this.sceneData.currentSpecies;\n\t\t if (_this.sceneData.currentPart)\n\t\t\t settings.part = _this.sceneData.currentPart;\n\t\t settings.metaURL = _this.sceneData.metaURL;\n\t\t if (_this.sceneData.viewURL)\n\t\t\t settings.viewURL = _this.sceneData.viewURL;\n\t\t settings.dialog = \"Organ Viewer\";\n\t\t return settings;\n\t }\n\t \n\t this.importSettings = function(settings) {\n\t\t if (settings && (settings.dialog == this.typeName)) {\n\t\t\t _this.setName(settings.name);\n\t\t\t if (settings.metaURL !== undefined && settings.metaURL != \"\") {\n\t\t\t\t _this.loadOrgansFromURL(settings.metaURL, settings.species,\n\t\t\t\t\tsettings.system, settings.part, settings.viewURL);\n\t\t\t } else {\n\t\t\t\t _this.loadOrgans(settings.species, settings.system, settings.part);\n\t\t\t }\n\t\t\t return true;\n\t\t }\n\t\t return false;\n\t }\n\t\t\n\t/**\n\t * initialise loading of the html layout for the organs panel, this is\n\t * called when the {@link PJP.OrgansViewer} is created.\n\t * \n\t * @async\n\t */\n\t const initialise = function() {\n\t _this.initialiseRenderer(undefined);\n\t if (_this.zincRenderer) {\n _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());\n _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());\n }\n }\n\t \n\tinitialise();\n\n}\n\nOrgansViewer.prototype = Object.create((require('./RendererModule').RendererModule).prototype);\nexports.OrgansViewer = OrgansViewer;\n","module.exports = require(\"element-ui/lib/theme-chalk/checkbox.css\");","// extracted by mini-css-extract-plugin","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var THREE = require('zincjs').THREE;\n\n/**\n * This module manages highlighted and selected objects in 3D modules. \n * \n * @class\n * @returns {exports.GraphicsHighlight}\n */\nexports.GraphicsHighlight = function() {\n let currentHighlightedObjects = [];\n let currentSelectedObjects = [];\n this.highlightColour = [1, 0, 0];\n this.selectColour = [0, 1, 0];\n this.originalColour = [0, 0, 0];\n const _this = this;\n\n const isDifferent = function(array1, array2) {\n if ((array1.length == 0) && (array2.length == 0))\n return false; \n for (let i = 0; i < array1.length; i++) {\n let matched = false;\n for (let j = 0; j < array2.length; j++) {\n if (array1[i] === array2[j]) {\n matched = true;\n }\n }\n if (!matched)\n return true;\n }\n for (let i = 0; i < array2.length; i++) {\n let matched = false;\n for (let j = 0; j < array1.length; j++) {\n if (array2[i] === array1[j]) {\n matched = true;\n }\n }\n if (!matched)\n return true;\n }\n return false;\n }\n \n const getUnmatchingObjects = function(objectsArray1, objectsArray2) {\n const unmatchingObjects = [];\n if (objectsArray2.length == 0)\n return objectsArray1;\n for (let i = 0; i < objectsArray1.length; i++) {\n let matched = false;\n for (let j = 0; j < objectsArray2.length; j++) {\n if (objectsArray1[i] === objectsArray2[j]) {\n matched = true;\n }\n }\n if (!matched)\n unmatchingObjects.push(objectsArray1[i]);\n }\n return unmatchingObjects;\n }\n \n this.setHighlighted = function(objects) {\n const previousHighlightedObjects = currentHighlightedObjects;\n _this.resetHighlighted();\n // Selected object cannot be highlighted\n const array = getUnmatchingObjects(objects, currentSelectedObjects);\n const fullList = getFullListOfObjects(array);\n for (let i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.highlightColour);\n }\n currentHighlightedObjects = array;\n return isDifferent(currentHighlightedObjects, previousHighlightedObjects);\n }\n\n this.setSelected = function(objects) {\n // first find highlighted object that are not selected\n const previousHSelectedObjects = currentSelectedObjects;\n const array = getUnmatchingObjects(currentHighlightedObjects, objects);\n currentHighlightedObjects = array;\n _this.resetSelected();\n const fullList = getFullListOfObjects(objects);\n for (let i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material && fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.selectColour);\n }\n currentSelectedObjects = objects;\n return isDifferent(currentSelectedObjects, previousHSelectedObjects);\n }\n\n const getFullListOfObjects = function(objects) {\n let fullList = [];\n for (let i = 0; i < objects.length; i++) {\n if (objects[i].material)\n fullList.push(objects[i]);\n }\n return fullList;\n }\n \n this.resetHighlighted = function() {\n const fullList = getFullListOfObjects(currentHighlightedObjects);\n for (let i = 0; i < fullList.length; i++) {\n if (fullList[i] && fullList[i].material) {\n if (fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.originalColour);\n if (fullList[i].material.depthFunc)\n fullList[i].material.depthFunc = THREE.LessEqualDepth;\n }\n }\n currentHighlightedObjects = [];\n }\n \n this.resetSelected = function() {\n const fullList = getFullListOfObjects(currentSelectedObjects);\n for (let i = 0; i < fullList.length; i++) {\n \tif (fullList[i] && fullList[i].material) {\n \t\tif (fullList[i].material.emissive)\n fullList[i].material.emissive.setRGB(..._this.originalColour);\n \t\tif (fullList[i].material.depthFunc)\n fullList[i].material.depthFunc = THREE.LessEqualDepth;\n \t}\n }\n currentSelectedObjects = [];\n }\n \n this.getSelected = function() {\n return currentSelectedObjects;\n }\n \n this.reset = function() {\n _this.resetSelected();\n _this.resetHighlighted();\n }\n}\n","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&\"","module.exports = require(\"core-js/modules/es.array.slice\");","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","module.exports = require(\"lodash/orderBy\");","const MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };\n\nconst BaseModule = function() {\n this.typeName = \"Base Module\";\n this.instanceName = \"default\";\n this.onChangedCallbacks = [];\n /** Notifier handle for informing other modules of any changes **/\n this.eventNotifiers = [];\n}\n\nBaseModule.prototype.setName = function(name) {\n if (name && this.instanceName !== name) {\n this.instanceName = name;\n const callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );\n }\n }\n}\n\nBaseModule.prototype.settingsChanged = function() {\n\tconst callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );\n }\n}\n\nBaseModule.prototype.exportSettings = function() {\n const settings = {};\n settings.dialog = this.typeName;\n settings.name = this.instanceName;\n return settings;\n}\n\nBaseModule.prototype.importSettings = function(settings) {\n\tif (settings.dialog == this.typeName) {\n\t\tthis.setName(settings.name);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nBaseModule.prototype.publishChanges = function(annotations, eventType) {\n for (let i = 0; i < this.eventNotifiers.length; i++) {\n this.eventNotifiers[i].publish(this, eventType, annotations);\n }\n}\n\nBaseModule.prototype.getName = function() {\n return this.instanceName;\n}\n\nBaseModule.prototype.destroy = function() {\n //Make a temorary copy as the array may be altered during the loop\n const callbackArray = this.onChangedCallbacks.slice();\n for (let i = 0; i < callbackArray.length; i++) {\n callbackArray[i]( this, MODULE_CHANGE.DESTROYED );\n }\n\n delete this;\n} \n\nBaseModule.prototype.addChangedCallback = function(callback) {\n if (this.onChangedCallbacks.includes(callback) == false)\n this.onChangedCallbacks.push(callback);\n}\n\nBaseModule.prototype.removeChangedCallback = function(callback) {\n const index = this.onChangedCallbacks.indexOf(callback);\n if (index > -1) {\n this.onChangedCallbacks.splice(index, 1);\n }\n} \n\nBaseModule.prototype.addNotifier = function(eventNotifier) {\n this.eventNotifiers.push(eventNotifier);\n}\n\nexports.BaseModule = BaseModule;\nexports.MODULE_CHANGE = MODULE_CHANGE;\n","module.exports = require(\"core-js/modules/es.array.index-of\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","module.exports = require(\"element-ui/lib/row\");","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","module.exports = require(\"element-ui/lib/theme-chalk/col.css\");","module.exports = require(\"element-ui/lib/theme-chalk/main.css\");","module.exports = require(\"core-js/modules/es.array.splice\");","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","const THREE = require('zincjs').THREE;\n\n/**\n * Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.\n * @param {String} elementID - id of the target dom element.\n * @returns {Zinc.Renderer}\n */\nconst createRenderer = function () {\n const WEBGL = require('./WebGL').WEBGL;\n const localContainer = document.createElement( 'div' );\n let localRenderer = undefined;;\n localContainer.style.height = \"100%\";\n if (WEBGL.isWebGLAvailable()) {\n const Zinc = require('zincjs');\n localRenderer = new Zinc.Renderer(localContainer, window);\n Zinc.defaultMaterialColor = 0xFFFF9C;\n localRenderer.initialiseVisualisation();\n localRenderer.playAnimation = false;\n } else {\n const warning = WEBGL.getWebGLErrorMessage();\n localContainer.appendChild(warning);\n }\n return {\"renderer\":localRenderer, \"container\":localContainer};\n}\n\nconst RendererModule = function() {\n (require('./BaseModule').BaseModule).call(this);\n this.scene = undefined;\n this.rendererContainer = undefined;\n this.displayArea = undefined;\n this.graphicsHighlight = new (require(\"./graphicsHighlight\").GraphicsHighlight)();\n this.zincRenderer = null;\n this.selectedScreenCoordinates = new THREE.Vector3();\n this.selectedCenter = undefined;\n}\n\nRendererModule.prototype = Object.create((require('./BaseModule').BaseModule).prototype);\n\n/**\n * This function will get the the first intersected object with name or\n * the first glyph object with name.\n */\nRendererModule.prototype.getIntersectedObject = function(intersects) {\n\tif (intersects) {\n\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\tif (intersects[i] !== undefined) {\n\t\t\t\tif (intersects[i].object &&\n intersects[i].object.userData && \n intersects[i].object.userData.isZincObject && \n (intersects[i].object.name || \n intersects[i].object.userData.isMarker))\n\t\t\t\t\treturn intersects[i];\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nRendererModule.prototype.getAnnotationsFromObjects = function(objects) {\n const annotations = [];\n let count = 0;\n for (var i = 0; i < objects.length; i++) {\n const zincObject = objects[i].userData;\n let annotation = undefined;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n const glyphset = zincObject;\n if (zincObject.isGlyph)\n glyphset = zincObject.getGlyphset();\n annotation = glyphset.userData ? glyphset.userData[0] : undefined;\n if (annotation && annotation.data) {\n if (objects[i].name && objects[i].name != \"\")\n annotation.data.id = objects[i].name;\n else\n annotation.data.id = glyphset.groupName;\n }\n } else {\n annotation = zincObject.userData ? zincObject.userData[0] : undefined;\n if (annotation && annotation.data){\n annotation.data.id = objects[i].name;\n }\n }\n }\n if (annotation)\n annotations[count++] = annotation;\n }\n\treturn annotations;\n}\n\nRendererModule.prototype.setHighlightedByObjects = function(objects, propagateChanges) {\n const changed = this.graphicsHighlight.setHighlighted(objects);\n if (changed && propagateChanges) {\n const eventType = require(\"./eventNotifier\").EVENT_TYPE.HIGHLIGHTED;\n const annotations = this.getAnnotationsFromObjects(objects);\n this.publishChanges(annotations, eventType);\n }\n return changed;\n}\n\n\nRendererModule.prototype.setHighlightedByZincObject = function(\n zincObject, propagateChanges) {\n return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);\n}\n\nRendererModule.prototype.setupLiveCoordinates = function(zincObjects) {\n if (zincObjects && (zincObjects.length > 0)) {\n const boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);\n let newSelectedCenter = new THREE.Vector3();\n boundingBox.getCenter(newSelectedCenter);\n if (this.selectedCenter == undefined)\n this.selectedCenter = newSelectedCenter;\n else {\n this.selectedCenter.x = newSelectedCenter.x;\n this.selectedCenter.y = newSelectedCenter.y;\n }\n } else {\n this.selectedCenter = undefined;\n }\n}\n\nRendererModule.prototype.objectsToZincObjects = function(objects) {\n const zincObjects = [];\n for (let i = 0; i < objects.length; i++) {\n let zincObject = objects[i].userData;\n if (zincObject) {\n if (zincObject.isGlyph || zincObject.isGlyphset) {\n let glyphset = zincObject;\n if (zincObject.isGlyph)\n glyphset = zincObject.getGlyphset();\n zincObjects. push(glyphset);\n } else {\n zincObjects. push(zincObject);\n }\n }\n }\n return zincObjects;\n}\n\n\nRendererModule.prototype.setSelectedByObjects = function(\n objects, propagateChanges) {\n const changed = this.graphicsHighlight.setSelected(objects);\n if (changed) {\n const zincObjects = this.objectsToZincObjects(objects);\n this.setupLiveCoordinates(zincObjects);\n if (propagateChanges) {\n const eventType = require(\"./eventNotifier\").EVENT_TYPE.SELECTED;\n const annotations = this.getAnnotationsFromObjects(objects);\n this.publishChanges(annotations, eventType);\n }\n }\n return changed;\n}\n\nRendererModule.prototype.setSelectedByZincObject = function(\n zincObject, propagateChanges) {\n return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);\n}\n\nconst addGlyphToArray = function(objects) {\n return function(glyph) {\n objects.push(glyph.getMesh());\n }\n}\n\nRendererModule.prototype.findObjectsByGroupName = function(groupName) {\n const geometries = this.scene.findGeometriesWithGroupName(groupName);\n const objects = [];\n for (let i = 0; i < geometries.length; i ++ ) {\n objects.push(geometries[i].morph);\n }\n const glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);\n for (let i = 0; i < glyphsets.length; i ++ ) {\n glyphsets[i].forEachGlyph(addGlyphToArray(objects));\n }\n \n return objects;\n}\n\nRendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {\n const objects = this.findObjectsByGroupName(groupName);\n return this.setHighlightedByObjects(objects, propagateChanges);\n}\n\nRendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {\n const objects = this.findObjectsByGroupName(groupName);\n return this.setSelectedByObjects(objects, propagateChanges);\n}\n\nRendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {\n const colour = new THREE.Color(backgroundColourString);\n if (this.zincRenderer) {\n let internalRenderer = this.zincRenderer.getThreeJSRenderer();\n internalRenderer.setClearColor( colour, 1 );\n }\n}\n\nRendererModule.prototype.resetView = function() {\n if (this.zincRenderer)\n this.zincRenderer.resetView();\n}\n \nRendererModule.prototype.viewAll = function() {\n if (this.zincRenderer)\n this.zincRenderer.viewAll();\n}\n\n/**\n * Start the animation and let the renderer to processs with\n * time progression\n */\nRendererModule.prototype.playAnimation = function(flag) {\n if (this.zincRenderer)\n this.zincRenderer.playAnimation = flag;\n}\n\n/**\n* Set the speed of playback\n*/\nRendererModule.prototype.setPlayRate = function(value) {\n if (this.zincRenderer)\n this.zincRenderer.setPlayRate(value);\n}\n\n/**\n* Get the speed of playback\n*/\nRendererModule.prototype.getPlayRate = function(value) {\n if (this.zincRenderer)\n return this.zincRenderer.getPlayRate();\n else\n return 0.0;\n}\n \n /** Initialise everything in the renderer, including the 3D renderer,\n * and picker for the 3D renderer.\n * \n */\nRendererModule.prototype.initialiseRenderer = function(displayAreaIn) {\n if (this.zincRenderer === undefined || this.rendererContainer === undefined) {\n let returnedValue = createRenderer();\n this.zincRenderer = returnedValue[\"renderer\"];\n this.rendererContainer = returnedValue[\"container\"];\n }\n if (displayAreaIn) {\n this.displayArea = displayAreaIn;\n this.displayArea.appendChild( this.rendererContainer );\n if (this.zincRenderer)\n this.zincRenderer.animate();\n }\n}\n\nRendererModule.prototype.destroy = function() {\n if (this.zincRenderer) {\n this.zincRenderer.dispose();\n this.zincRenderer.getThreeJSRenderer().dispose();\n this.zincRenderer = undefined;\n }\n (require('./BaseModule').BaseModule).prototype.destroy.call( this );\n}\n\nexports.RendererModule = RendererModule;","module.exports = require(\"core-js/modules/es.object.to-string\");","module.exports = require(\"vue\");","module.exports = require(\"element-ui/lib/tabs\");","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/icon.css\");","module.exports = require(\"core-js/modules/es.string.iterator\");","module.exports = require(\"zincjs\");","module.exports = require(\"element-ui/lib/popover\");","module.exports = require(\"element-ui/lib/theme-chalk/slider.css\");","exports.annotation = function() {\n this.type = \"anatomical\";\n this.data = undefined;\n this.isAnnotation = true;\n}\n","module.exports = require(\"element-ui/lib/theme-chalk/tab-pane.css\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","const EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };\n\nconst SelectionEvent = function(eventTypeIn, identifiersIn) {\n this.eventType = eventTypeIn;\n this.identifiers = identifiersIn;\n}\n\nconst returnFullID = function(sourceId) {\n //return full annotations with all different name\n}\n \nconst Subscription = function(subscriberIn, callbackIn, eventType) {\n this.targetedID = [];\n const subscriber = subscriberIn;\n const callback = callbackIn;\n this.targetEventType = eventType;\n const _this = this;\n\n if (eventType === undefined)\n this.targetEventType = EVENT_TYPE.ALL;\n \n this.getEventType = function() {\n return eventType;\n }\n \n this.notify = function(source, eventType, ids) {\n if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||\n _this.targetEventType === eventType)) {\n //should support different type of id e.g lyph, name, fmas...\n //need a function that finds all relavant ids\n const event = new SelectionEvent(eventType, ids);\n callback(event);\n }\n }\n}\n\nexports.EventNotifier = function() {\n const subscriptions = [];\n \n this.publish = function(source, eventType, id) {\n for (let i = 0; i < subscriptions.length;i++) {\n subscriptions[i].notify(source, eventType, id);\n }\n }\n \n this.subscribe = function(subscriber, callbackFunction, eventType) {\n if (typeof callbackFunction === \"function\") {\n const subscription = new Subscription(subscriber, callbackFunction, eventType);\n subscriptions.push(subscription);\n return subscription;\n }\n return undefined;\n }\n \n this.unsubscribe = function(subscription) {\n for (let i = 0; i < subscriptions.length;i++) {\n if (subscription === subscriptions[i]) {\n subscriptions.splice(i, 1);\n return;\n }\n }\n }\n} \n\nexports.EVENT_TYPE = EVENT_TYPE;\n","module.exports = require(\"@soda/get-current-script\");","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\");","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=02b8949c&scoped=true&lang=scss&\"","/**\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\");","// extracted by mini-css-extract-plugin","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"scaffoldContainer\",staticClass:\"scaffold-container\",attrs:{\"element-loading-text\":\"Loading...\",\"element-loading-spinner\":\"el-icon-loading\",\"element-loading-background\":\"rgba(0, 0, 0, 0.3)\"}},[_c('map-svg-sprite-color'),_c('div',{ref:\"display\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"id\":\"organsDisplayArea\",\"tabindex\":\"-1\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==66){ return null; }return _vm.backgroundChangeCallback($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.displayUI && !_vm.isTransitioning),expression:\"displayUI && !isTransitioning\"}]},[(_vm.displayWarning)?_c('el-popover',{ref:\"warningPopover\",attrs:{\"content\":_vm.warningMessage,\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"warning-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[6].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[6], \"value\", $$v)},expression:\"hoverVisabilities[6].value\"}}):_vm._e(),(_vm.displayWarning)?_c('i',{directives:[{name:\"popover\",rawName:\"v-popover:warningPopover\",arg:\"warningPopover\"}],staticClass:\"el-icon-warning warning-icon\",on:{\"mouseover\":function($event){return _vm.showToolitip(6)},\"mouseout\":function($event){return _vm.hideToolitip(6)}}},[_c('span',{staticClass:\"warning-text\"},[_vm._v(\"Beta\")])]):_vm._e(),_c('el-popover',{ref:\"checkBoxPopover\",attrs:{\"content\":\"Change region visibility\",\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[5].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[5], \"value\", $$v)},expression:\"hoverVisabilities[5].value\"}}),_c('TraditionalControls',{directives:[{name:\"popover\",rawName:\"v-popover:checkBoxPopover\",arg:\"checkBoxPopover\"}],ref:\"traditionalControl\",attrs:{\"help-mode\":_vm.helpMode,\"module\":_vm.$module,\"show-colour-picker\":_vm.showColourPicker},on:{\"object-selected\":_vm.objectSelected,\"object-hovered\":_vm.objectHovered,\"drawer-toggled\":_vm.drawerToggled}}),_c('div',{staticClass:\"opacity-box\"},[_c('OpacityControls',{ref:\"opacityControl\"})],1),(_vm.sceneData.timeVarying)?_c('el-popover',{ref:\"sliderPopover\",attrs:{\"content\":\"Move the slider to animate the region\",\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper top-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[4].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[4], \"value\", $$v)},expression:\"hoverVisabilities[4].value\"}}):_vm._e(),(_vm.sceneData.timeVarying)?_c('div',{directives:[{name:\"popover\",rawName:\"v-popover:sliderPopover\",arg:\"sliderPopover\"}],staticClass:\"time-slider-container\",class:[ _vm.minimisedSlider ? 'minimised' : '', _vm.sliderPosition]},[_c('el-tabs',{attrs:{\"type\":\"card\"}},[_c('el-tab-pane',{attrs:{\"label\":\"Animate scaffold\"}},[_c('el-row',{staticClass:\"tab-content\"},[(_vm.isPlaying)?_c('map-svg-icon',{staticClass:\"icon-button video-button\",attrs:{\"icon\":\"pause\"},nativeOn:{\"click\":function($event){return _vm.play(false)}}}):_c('map-svg-icon',{staticClass:\"video-button icon-button\",attrs:{\"icon\":\"play\"},nativeOn:{\"click\":function($event){return _vm.play(true)}}}),_c('el-slider',{staticClass:\"slider\",attrs:{\"min\":0,\"max\":_vm.timeMax,\"value\":_vm.sceneData.currentTime / 100 * _vm.timeMax,\"step\":0.1,\"tooltip-class\":\"time-slider-tooltip\",\"format-tooltip\":_vm.formatTooltip,\"marks\":_vm.timeStamps},on:{\"input\":function($event){return _vm.timeChange($event)}}})],1)],1),_c('el-tab-pane',{attrs:{\"label\":\"Animation data\"}},[_c('el-row',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Original duration: \"),_c('div',{staticClass:\"purple\"},[_vm._v(\" \"+_vm._s(_vm.orginalDuration)+\" \")])]),_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Animation duration: \"),_c('div',{staticClass:\"purple\"},[_vm._v(\" \"+_vm._s(_vm.animateDuration)+\" \")])]),_c('div',{staticClass:\"animation-data\"},[_vm._v(\" Playback speed \"),_c('el-select',{staticClass:\"select-box\",attrs:{\"popper-append-to-body\":true,\"value\":_vm.currentSpeed,\"placeholder\":\"Select\",\"popper-class\":\"scaffold_viewer_dropdown\"},on:{\"change\":function($event){return _vm.speedChanged($event)}}},_vm._l((_vm.playSpeed),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)])],1)],1)],1):_vm._e(),_c('div',{staticClass:\"bottom-right-control\"},[_c('el-popover',{attrs:{\"content\":\"Zoom in\",\"placement\":\"left\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper left-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[0].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[0], \"value\", $$v)},expression:\"hoverVisabilities[0].value\"}},[_c('map-svg-icon',{staticClass:\"icon-button zoomIn\",attrs:{\"slot\":\"reference\",\"icon\":\"zoomIn\"},nativeOn:{\"click\":function($event){return _vm.zoomIn()},\"mouseover\":function($event){return _vm.showToolitip(0)},\"mouseout\":function($event){return _vm.hideToolitip(0)}},slot:\"reference\"})],1),_c('el-popover',{attrs:{\"content\":\"Zoom out\",\"placement\":\"top-end\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper popper-zoomout non-selectable\"},model:{value:(_vm.hoverVisabilities[1].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[1], \"value\", $$v)},expression:\"hoverVisabilities[1].value\"}},[_c('map-svg-icon',{staticClass:\"icon-button zoomOut\",attrs:{\"slot\":\"reference\",\"icon\":\"zoomOut\"},nativeOn:{\"click\":function($event){return _vm.zoomOut()},\"mouseover\":function($event){return _vm.showToolitip(1)},\"mouseout\":function($event){return _vm.hideToolitip(1)}},slot:\"reference\"})],1),_c('el-popover',{attrs:{\"placement\":\"top\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[2].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[2], \"value\", $$v)},expression:\"hoverVisabilities[2].value\"}},[_c('div',[_vm._v(\" Fit to \"),_c('br'),_vm._v(\" window \")]),_c('map-svg-icon',{staticClass:\"icon-button fitWindow\",attrs:{\"slot\":\"reference\",\"icon\":\"fitWindow\"},nativeOn:{\"click\":function($event){return _vm.fitWindow()},\"mouseover\":function($event){return _vm.showToolitip(2)},\"mouseout\":function($event){return _vm.hideToolitip(2)}},slot:\"reference\"})],1)],1),_c('el-popover',{ref:\"backgroundPopover\",attrs:{\"placement\":\"top-start\",\"width\":\"128\",\"append-to-body\":false,\"trigger\":\"click\",\"popper-class\":\"background-popper non-selectable\"}},[_c('el-row',{staticClass:\"backgroundText\"},[_vm._v(\" Change background \")]),_c('el-row',{staticClass:\"backgroundChooser\"},_vm._l((_vm.availableBackground),function(item){return _c('div',{key:item,class:['backgroundChoice', item, item == _vm.currentBackground ? 'active' :''],on:{\"click\":function($event){return _vm.backgroundChangeCallback(item)}}})}),0)],1),_c('el-popover',{attrs:{\"content\":\"Change background color\",\"placement\":\"right\",\"append-to-body\":false,\"trigger\":\"manual\",\"popper-class\":\"scaffold-popper right-popper non-selectable\"},model:{value:(_vm.hoverVisabilities[3].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[3], \"value\", $$v)},expression:\"hoverVisabilities[3].value\"}},[_c('map-svg-icon',{directives:[{name:\"popover\",rawName:\"v-popover:backgroundPopover\",arg:\"backgroundPopover\"}],staticClass:\"icon-button background-colour\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{\"slot\":\"reference\",\"icon\":\"changeBckgd\"},nativeOn:{\"mouseover\":function($event){return _vm.showToolitip(3)},\"mouseout\":function($event){return _vm.hideToolitip(3)}},slot:\"reference\"})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.material!=undefined)?_c('div',{ref:\"control\",staticClass:\"opacity-control\"},[_c('el-drawer',{staticClass:\"drawer-content\",attrs:{\"custom-class\":\"my-drawer\",\"visible\":_vm.drawerOpen,\"append-to-body\":false,\"modal-append-to-body\":false,\"size\":\"300\",\"with-header\":false,\"wrapper-closable\":false,\"modal\":false},on:{\"update:visible\":function($event){_vm.drawerOpen=$event}}},[(_vm.drawerOpen)?_c('div',{staticClass:\"tab-button close\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-right\"})]):_vm._e(),_c('el-container',{staticClass:\"opacity-container\"},[_c('el-header',{staticClass:\"header\",attrs:{\"height\":\"37px\"}},[_c('div',[_vm._v(\"Opacity\")])]),_c('el-main',{staticClass:\"main\"},[_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"display\"},[_vm._v(_vm._s(_vm.displayString))]),_c('el-slider',{staticClass:\"my-slider\",attrs:{\"step\":0.01,\"min\":0,\"max\":1,\"format-tooltip\":_vm.formatTooltip,\"show-tooltip\":false},model:{value:(_vm.material.opacity),callback:function ($$v) {_vm.$set(_vm.material, \"opacity\", $$v)},expression:\"material.opacity\"}})],1)])],1)],1),(!_vm.drawerOpen)?_c('div',{staticClass:\"tab-button open\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div\n v-if=\"material!=undefined\"\n ref=\"control\"\n class=\"opacity-control\"\n >\n <el-drawer\n custom-class=\"my-drawer\"\n class=\"drawer-content\"\n :visible.sync=\"drawerOpen\"\n :append-to-body=\"false\"\n :modal-append-to-body=\"false\"\n size=\"300\"\n :with-header=\"false\"\n :wrapper-closable=\"false\"\n :modal=\"false\"\n >\n <div\n v-if=\"drawerOpen\"\n class=\"tab-button close\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-right\" />\n </div>\n <el-container class=\"opacity-container\">\n <el-header\n height=\"37px\"\n class=\"header\"\n >\n <div>Opacity</div>\n </el-header>\n <el-main class=\"main\">\n <div class=\"block\">\n <span class=\"display\">{{ displayString }}</span>\n <el-slider\n v-model=\"material.opacity\"\n class=\"my-slider\"\n :step=\"0.01\"\n :min=\"0\"\n :max=\"1\"\n :format-tooltip=\"formatTooltip\"\n :show-tooltip=\"false\"\n />\n </div>\n </el-main>\n </el-container>\n </el-drawer>\n <div\n v-if=\"!drawerOpen\"\n class=\"tab-button open\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Container, Drawer, Header, Icon, Main, Slider } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Container);\nVue.use(Drawer);\nVue.use(Header);\nVue.use(Icon);\nVue.use(Main);\nVue.use(Slider);\n\n/**\n * A component to control the opacity of the target object.\n */\nexport default {\n name: \"OpacityControls\",\n data: function() {\n return {\n displayString: \"100%\",\n material: undefined,\n drawerOpen: true\n };\n },\n watch: {\n \"material.opacity\": function() {\n if (this.material) {\n this._zincobject.setAlpha(this.material.opacity);\n }\n }\n },\n mounted: function() {\n this._zincobject = undefined;\n },\n methods: {\n formatTooltip(val) {\n this.displayString = Math.floor(100 * val + 0.5) + \"%\";\n return this.displayString;\n },\n toggleDrawer: function() {\n this.drawerOpen = !this.drawerOpen;\n },\n setObject(object) {\n if (object) this.material = object.morph.material;\n else this.material = undefined;\n this._zincobject = object;\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/container\";\n@import \"~element-ui/packages/theme-chalk/src/drawer\";\n@import \"~element-ui/packages/theme-chalk/src/slider\";\n\n.opacity-control {\n text-align: left;\n width:300px;\n}\n\n.header {\n color: #606266;\n line-height: 1;\n padding: 9px 17px 0 15px;\n border-bottom: 1px solid #ebeef5;\n font-size: 14px;\n}\n\n.display {\n width: 44px;\n}\n\n.icon {\n right: 17px;\n position: absolute;\n top: 10px;\n}\n\n.main {\n font-size: 13px;\n padding: 20px 17px 0 15px;\n}\n\n.block {\n left: 40px;\n position: absolute;\n top: 57px;\n width: 200px;\n}\n\n.my-slider {\n position: absolute;\n width: 109px;\n top: -12px;\n left: 50px;\n pointer-events: auto;\n}\n\n.opacity-container {\n width: 224px;\n height: 93px;\n border-radius: 4px;\n border: solid 1px #d8dce6;\n background-color: #fff;\n}\n\n::v-deep .el-slider__bar {\n background-color: $app-primary-color;\n}\n\n.drawer-content {\n position: relative;\n height: 93px;\n pointer-events: none;\n}\n\n::v-deep .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n\n::v-deep .my-drawer .el-drawer__body {\n height: 93px;\n}\n\n.tab-button {\n width: 20px;\n height: 40px;\n z-index: 8;\n right: 0px;\n \n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #FFFFFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n //transition: bottom 0.3s;\n\n &.close {\n float: left;\n flex: 1;\n border-right: 0;\n margin-top: 26px;\n }\n\n &.open {\n position: absolute;\n bottom:26px;\n }\n\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transform: scaleY(2.5);\n }\n}\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpacityControls.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&\"\nimport script from \"./OpacityControls.vue?vue&type=script&lang=js&\"\nexport * from \"./OpacityControls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OpacityControls.vue?vue&type=style&index=0&id=4c00a30f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c00a30f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"traditional-location\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen }},[_c('div',{staticClass:\"traditional-container\"},[_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('div',{staticClass:\"regions-display-text\"},[_vm._v(\" Regions \")])]),_c('el-col',{attrs:{\"span\":12}},[_c('el-checkbox',{staticClass:\"all-checkbox\",attrs:{\"indeterminate\":_vm.isIndeterminate},on:{\"change\":_vm.handleCheckAllChange},model:{value:(_vm.checkAll),callback:function ($$v) {_vm.checkAll=$$v},expression:\"checkAll\"}},[_vm._v(\" Display all \")])],1)],1),_c('el-checkbox-group',{staticClass:\"checkbox-group\",attrs:{\"size\":\"small\"},on:{\"change\":_vm.handleCheckedItemsChange},model:{value:(_vm.checkedItems),callback:function ($$v) {_vm.checkedItems=$$v},expression:\"checkedItems\"}},[_c('div',{staticClass:\"checkbox-group-inner\"},_vm._l((_vm.sortedPrimitiveGroups),function(item){return _c('el-row',{key:item,attrs:{\"label\":item}},[_c('div',{staticClass:\"checkbox-container\"},[_c('el-checkbox',{staticClass:\"my-checkbox\",class:{ activeItem: _vm.activeRegion === item, \n hoverItem: _vm.hoverRegion === item },attrs:{\"label\":item,\"checked\":true},on:{\"change\":function($event){return _vm.visibilityToggle(item, $event)}},nativeOn:{\"click\":function($event){return _vm.itemClicked(item, $event)},\"mouseover\":function($event){return _vm.checkboxHover(item)}}},[_c('el-color-picker',{class:{ 'show-picker' : _vm.showColourPicker },attrs:{\"value\":_vm.getColour(item),\"size\":\"small\",\"popper-class\":_vm.myPopperClass},on:{\"change\":function($event){return _vm.setColour(item, $event)}}}),_vm._v(\" \"+_vm._s(item)+\" \")],1)],1)])}),1)])],1),_c('div',{staticClass:\"drawer-button\",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","<template>\n <div\n class=\"traditional-location\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n >\n <div class=\"traditional-container\">\n <el-row>\n <el-col :span=\"12\">\n <div class=\"regions-display-text\">\n Regions\n </div>\n </el-col>\n <el-col :span=\"12\">\n <el-checkbox\n v-model=\"checkAll\"\n class=\"all-checkbox\"\n :indeterminate=\"isIndeterminate\"\n @change=\"handleCheckAllChange\"\n >\n Display all\n </el-checkbox>\n </el-col>\n </el-row>\n <el-checkbox-group\n v-model=\"checkedItems\"\n size=\"small\"\n class=\"checkbox-group\"\n @change=\"handleCheckedItemsChange\"\n >\n <div class=\"checkbox-group-inner\">\n <el-row\n v-for=\"item in sortedPrimitiveGroups\"\n :key=\"item\"\n :label=\"item\"\n >\n <div class=\"checkbox-container\">\n <el-checkbox\n class=\"my-checkbox\"\n :label=\"item\"\n :checked=\"true\"\n :class=\"{ activeItem: activeRegion === item, \n hoverItem: hoverRegion === item }\"\n @click.native=\"itemClicked(item, $event)\"\n @change=\"visibilityToggle(item, $event)\"\n @mouseover.native=\"checkboxHover(item)\"\n >\n <el-color-picker\n :class=\"{ 'show-picker' : showColourPicker }\"\n :value=\"getColour(item)\"\n size=\"small\"\n :popper-class=\"myPopperClass\"\n @change=\"setColour(item, $event)\"\n />\n {{ item }}\n </el-checkbox>\n </div>\n </el-row>\n </div>\n </el-checkbox-group>\n </div>\n <div\n class=\"drawer-button\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n @click=\"toggleDrawer\"\n >\n <i class=\"el-icon-arrow-left\" />\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Checkbox, CheckboxGroup, ColorPicker, Row } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nconst orderBy = require(\"lodash/orderBy\");\nconst uniq = require(\"lodash/uniq\");\nlocale.use(lang);\nVue.use(Checkbox);\nVue.use(CheckboxGroup);\nVue.use(ColorPicker);\nVue.use(Row);\n\n/**\n * A vue component for toggling visibility of various regions.\n */\nexport default {\n name: \"TraditionalControls\",\n props: {\n /**\n * @ignore\n */\n module: {\n type: Object,\n default: undefined\n },\n /**\n * Enable/disable colour picker\n */\n showColourPicker: Boolean\n },\n data: function() {\n return {\n checkAll: true,\n isIndeterminate: false,\n checkedItems: [],\n sortedPrimitiveGroups: [],\n activeRegion: \"\",\n hoverRegion: \"\",\n myPopperClass: \"hide-scaffold-colour-popup\",\n drawerOpen: true\n };\n },\n watch: {\n showColourPicker: {\n immediate: true,\n handler: function() {\n if (this.showColourPicker) this.myPopperClass = \"showPicker\";\n else this.myPopperClass = \"hide-scaffold-colour-popup\";\n }\n }\n },\n created: function() {\n let tmpArray = this.module.sceneData.geometries.concat(\n this.module.sceneData.lines\n );\n tmpArray = tmpArray.concat(this.module.sceneData.glyphsets);\n tmpArray = uniq(tmpArray.concat(this.module.sceneData.pointset));\n this.sortedPrimitiveGroups = orderBy(tmpArray);\n this.module.addOrganPartAddedCallback(this.organsAdded);\n },\n destroyed: function() {\n this.sortedPrimitiveGroups = undefined;\n },\n methods: {\n /**\n * This is called when a new organ is read into the scene.\n */\n organsAdded: function(name) {\n if (name && name != \"\") {\n let tmpArray = uniq(this.sortedPrimitiveGroups.concat([name]));\n tmpArray = orderBy(tmpArray);\n const index = tmpArray.indexOf(undefined);\n if (index > -1) {\n tmpArray.splice(index, 1);\n }\n this.sortedPrimitiveGroups = tmpArray;\n }\n },\n /**\n * Select a region by its name.\n */\n changeActiveByName: function(name, propagate) {\n let targetObject = this.getFirstZincObjectWithGroupName(name);\n if (targetObject && targetObject.getVisibility()) {\n this.activeRegion = name;\n this.$emit(\"object-selected\", targetObject, propagate);\n } else {\n this.removeActive(propagate);\n }\n this.removeHover(propagate);\n },\n /**\n * Hover a region by its name.\n */\n changeHoverByName: function(name, propagate) {\n let targetObject = this.getFirstZincObjectWithGroupName(name);\n if (targetObject) {\n this.hoverRegion = name;\n this.$emit(\"object-hovered\", targetObject, propagate);\n } else {\n this.removeHover(propagate);\n }\n },\n /**\n * Unselect the current selected region.\n */\n removeActive: function(propagate) {\n this.activeRegion = \"\";\n this.$emit(\"object-selected\", undefined, propagate);\n },\n /**\n * Unselect the current hover region.\n */\n removeHover: function(propagate) {\n this.hoverRegion = \"\";\n this.$emit(\"object-hovered\", undefined, propagate);\n },\n /**\n * Reset the controls.\n */\n clear: function() {\n this.sortedPrimitiveGroups = [];\n this.checkedItems = [];\n this.checkAll = true;\n this.isIndeterminate = false;\n this.activeRegion = \"\";\n this.hoverRegion = \"\";\n this.$emit(\"object-selected\", undefined);\n },\n getFirstZincObjectWithGroupName: function(name) {\n if (this.module && this.module.scene) {\n let array = this.module.scene.findGeometriesWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findGlyphsetsWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findLinesWithGroupName(name);\n if (array.length > 0) return array[0];\n array = this.module.scene.findPointsetsWithGroupName(name);\n if (array.length > 0) return array[0];\n }\n return undefined;\n },\n getColour: function(name) {\n let graphic = this.getFirstZincObjectWithGroupName(name);\n if (graphic) {\n let hex = graphic.getColourHex();\n if (hex) return \"#\" + hex;\n }\n return \"#FFFFFF\";\n },\n setColour: function(name, value) {\n let graphic = this.getFirstZincObjectWithGroupName(name);\n if (graphic) {\n let hexString = value.replace(\"#\", \"0x\");\n graphic.setColourHex(hexString);\n }\n },\n checkboxHover: function(name) {\n this.changeHoverByName(name, true);\n },\n itemClicked: function(name, event) {\n if (\n !(\n event.target.classList.contains(\"el-checkbox__inner\") ||\n event.target.classList.contains(\"el-checkbox__original\")\n )\n ) {\n this.changeActiveByName(name, true);\n event.preventDefault();\n }\n },\n handleCheckedItemsChange: function() {\n let unnamed = this.checkedItems.includes(undefined) ? true: false;\n let checkedCount = this.checkedItems.length;\n if (unnamed)\n checkedCount--;\n this.checkAll = checkedCount === this.sortedPrimitiveGroups.length;\n this.isIndeterminate =\n checkedCount > 0 && checkedCount < this.sortedPrimitiveGroups.length;\n },\n handleCheckAllChange(val) {\n this.checkedItems = val ? [...this.sortedPrimitiveGroups] : [];\n this.isIndeterminate = false;\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n this.visibilityToggle(this.sortedPrimitiveGroups[i], this.checkAll);\n }\n },\n viewAll: function() {\n this.module.viewAll();\n },\n visibilityToggle: function(item, event) {\n this.module.changeOrganPartsVisibility(item, event);\n if (event == false) {\n if (this.activeRegion === item) {\n this.removeActive(true);\n }\n if (this.hoverRegion === item) {\n this.removeHover(true);\n }\n }\n },\n toggleDrawer: function() {\n this.drawerOpen = !this.drawerOpen;\n this.$emit(\"drawer-toggled\", this.drawerOpen);\n },\n getState: function() {\n if (this.checkAll) {\n return { checkAll: true };\n }\n let checkedItems = [...this.checkedItems];\n const index = checkedItems.indexOf(undefined);\n if (index > -1) {\n checkedItems.splice(index, 1);\n }\n return { checkedItems: checkedItems };\n },\n setState: function(state) {\n if (state) {\n if (state.checkAll) {\n this.checkedItems = [...this.sortedPrimitiveGroups];\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n this.module.changeOrganPartsVisibility(\n this.sortedPrimitiveGroups[i],\n true\n );\n }\n } else if (state.checkedItems) { \n this.checkedItems = [...state.checkedItems];\n for (let i = 0; i < this.sortedPrimitiveGroups.length; i++) {\n\n let visible = this.checkedItems.includes(\n this.sortedPrimitiveGroups[i]);\n this.module.changeOrganPartsVisibility(\n this.sortedPrimitiveGroups[i],\n visible\n );\n }\n }\n }\n this.handleCheckedItemsChange();\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/checkbox\";\n@import \"~element-ui/packages/theme-chalk/src/checkbox-group\";\n@import \"~element-ui/packages/theme-chalk/src/color-picker\";\n@import \"~element-ui/packages/theme-chalk/src/row\";\n\n.checkbox-container {\n display: flex;\n cursor: pointer;\n}\n\n.traditional-location {\n position: absolute;\n bottom: 0px;\n transition: all 1s ease;\n\n &:focus{\n outline: none;\n }\n &.open {\n left: 0px;\n .traditional-container {\n opacity: 1;\n }\n }\n &.close {\n left: -298px;\n .traditional-container {\n pointer-events:none;\n opacity: 0;\n }\n }\n}\n\n.traditional-container {\n transition: all 1s ease;\n float: left;\n padding-left: 16px;\n padding-right: 18px;\n max-height: calc(100% - 154px);\n text-align: left;\n overflow: none;\n border: 1px solid rgb(220, 223, 230);\n padding-top: 7px;\n padding-bottom: 16px;\n background: #ffffff;\n}\n\n.regions-display-text {\n width: 59px;\n height: 20px;\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n margin-left: 8px;\n}\n\n.all-checkbox {\n float: right;\n}\n\n.checkbox-group {\n width: 260px;\n border: 1px solid rgb(144, 147, 153);\n border-radius: 4px;\n background: #ffffff;\n margin-top: 6px;\n}\n\n.checkbox-group-inner {\n padding: 18px;\n max-height: 240px;\n min-height: 130px;\n overflow: auto;\n scrollbar-color: #c0c4cc rgba(1, 1, 1, 0);\n scrollbar-width: thin;\n\n &::-webkit-scrollbar {\n width: 4px;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n box-shadow: inset 0 0 6px #c0c4cc;\n }\n}\n\n::v-deep .el-checkbox__input {\n &.is-indeterminate, &.is-checked {\n .el-checkbox__inner {\n background-color: $app-primary-color;\n border-color: $app-primary-color;\n }\n }\n}\n\n::v-deep .el-color-picker__color {\n border: 1px solid $app-primary-color;\n}\n\n::v-deep .el-checkbox__label {\n padding-left: 5px;\n color: $app-primary-color !important;\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0px;\n line-height: 14px;\n}\n\n.activeItem {\n background-color: #bbb !important;\n}\n\n.my-checkbox {\n background-color: #fff;\n width: 100%;\n\n ::v-deep .el-color-picker {\n height: 16px !important;\n top: 3px;\n }\n\n ::v-deep .el-color-picker__trigger {\n margin-left: 8px;\n margin-right: 8px;\n padding: 0px;\n height: 16px;\n width: 16px;\n border: 0px;\n }\n\n}\n\n.hoverItem {\n background-color: #eee !important;\n}\n\n::v-deep .el-color-picker__icon {\n &.el-icon-arrow-down {\n display: none;\n }\n}\n\n::v-deep .show-picker {\n .el-color-picker__icon {\n &.el-icon-arrow-down {\n display: block;\n }\n }\n}\n\n::v-deep .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n\n.drawer {\n ::v-deep .el-drawer:focus {\n outline: none;\n }\n}\n\n.open-drawer {\n width: 20px;\n height: 40px;\n z-index: 8;\n position: absolute;\n left: 0px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #f7faff;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.drawer-button {\n float: left;\n width: 20px;\n height: 40px;\n z-index: 8;\n margin-top: calc(50% - 52px);\n border: solid 1px #e4e7ed;\n border-left: 0;\n background-color: #ffffff;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.drawer-button {\n i {\n margin-top: 12px;\n color: $app-primary-color;\n transition-delay: 0.9s;\n }\n &.open {\n i {\n transform: rotate(0deg) scaleY(2.5);\n }\n }\n &.close {\n i {\n transform: rotate(180deg) scaleY(2.5); \n }\n }\n}\n\n.drawer-button.open i {\n transform: rotate(0deg) scaleY(2.5);\n}\n\n.drawer-button.close i {\n transform: rotate(180deg) scaleY(2.5);\n}\n</style>\n\n<style>\n.hide-scaffold-colour-popup {\n display: none;\n}\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TraditionalControls.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraditionalControls.vue?vue&type=template&id=335c5764&scoped=true&\"\nimport script from \"./TraditionalControls.vue?vue&type=script&lang=js&\"\nexport * from \"./TraditionalControls.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&\"\nimport style1 from \"./TraditionalControls.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"335c5764\",\n null\n \n)\n\nexport default component.exports","<template>\n <div\n ref=\"scaffoldContainer\"\n v-loading=\"loading\"\n class=\"scaffold-container\"\n element-loading-text=\"Loading...\"\n element-loading-spinner=\"el-icon-loading\"\n element-loading-background=\"rgba(0, 0, 0, 0.3)\"\n >\n <map-svg-sprite-color />\n <div\n id=\"organsDisplayArea\"\n ref=\"display\"\n tabindex=\"-1\"\n style=\"height:100%;width:100%;\"\n @keydown.66=\"backgroundChangeCallback\"\n />\n <div v-show=\"displayUI && !isTransitioning\">\n <el-popover\n v-if=\"displayWarning\"\n ref=\"warningPopover\"\n v-model=\"hoverVisabilities[6].value\"\n :content=\"warningMessage\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"warning-popper right-popper non-selectable\"\n />\n <i\n v-if=\"displayWarning\"\n v-popover:warningPopover\n class=\"el-icon-warning warning-icon\"\n @mouseover=\"showToolitip(6)\"\n @mouseout=\"hideToolitip(6)\"\n >\n <span class=\"warning-text\">Beta</span>\n </i>\n <el-popover\n ref=\"checkBoxPopover\"\n v-model=\"hoverVisabilities[5].value\"\n content=\"Change region visibility\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper right-popper non-selectable\"\n />\n <TraditionalControls\n ref=\"traditionalControl\"\n v-popover:checkBoxPopover\n :help-mode=\"helpMode\"\n :module=\"$module\"\n :show-colour-picker=\"showColourPicker\"\n @object-selected=\"objectSelected\"\n @object-hovered=\"objectHovered\"\n @drawer-toggled=\"drawerToggled\"\n />\n <div class=\"opacity-box\">\n <OpacityControls ref=\"opacityControl\" />\n </div>\n <el-popover\n v-if=\"sceneData.timeVarying\"\n ref=\"sliderPopover\"\n v-model=\"hoverVisabilities[4].value\"\n content=\"Move the slider to animate the region\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper top-popper non-selectable\"\n />\n <div\n v-if=\"sceneData.timeVarying\"\n v-popover:sliderPopover\n class=\"time-slider-container\"\n :class=\"[ minimisedSlider ? 'minimised' : '', sliderPosition]\"\n >\n <el-tabs type=\"card\">\n <el-tab-pane label=\"Animate scaffold\">\n <el-row class=\"tab-content\">\n <map-svg-icon\n v-if=\"isPlaying\"\n icon=\"pause\"\n class=\"icon-button video-button\"\n @click.native=\"play(false)\"\n />\n <map-svg-icon\n v-else\n icon=\"play\"\n class=\"video-button icon-button\"\n @click.native=\"play(true)\"\n />\n <el-slider\n :min=\"0\"\n :max=\"timeMax\"\n :value=\"sceneData.currentTime / 100 * timeMax\"\n :step=\"0.1\"\n tooltip-class=\"time-slider-tooltip\"\n class=\"slider\"\n :format-tooltip=\"formatTooltip\"\n :marks=\"timeStamps\"\n @input=\"timeChange($event)\"\n />\n </el-row>\n </el-tab-pane>\n <el-tab-pane label=\"Animation data\">\n <el-row class=\"tab-content\">\n <div class=\"animation-data\">\n Original duration:\n <div class=\"purple\">\n {{ orginalDuration }}\n </div>\n </div>\n <div class=\"animation-data\">\n Animation duration:\n <div class=\"purple\">\n {{ animateDuration }}\n </div>\n </div>\n <div class=\"animation-data\">\n Playback speed\n <el-select\n :popper-append-to-body=\"true\"\n :value=\"currentSpeed\"\n placeholder=\"Select\"\n class=\"select-box\"\n popper-class=\"scaffold_viewer_dropdown\"\n @change=\"speedChanged($event)\"\n >\n <el-option\n v-for=\"item in playSpeed\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </div>\n </el-row>\n </el-tab-pane>\n </el-tabs>\n </div>\n <div class=\"bottom-right-control\">\n <el-popover\n v-model=\"hoverVisabilities[0].value\"\n content=\"Zoom in\"\n placement=\"left\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper left-popper non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n icon=\"zoomIn\"\n class=\"icon-button zoomIn\"\n @click.native=\"zoomIn()\"\n @mouseover.native=\"showToolitip(0)\"\n @mouseout.native=\"hideToolitip(0)\"\n />\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[1].value\"\n content=\"Zoom out\"\n placement=\"top-end\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper popper-zoomout non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n icon=\"zoomOut\"\n class=\"icon-button zoomOut\"\n @click.native=\"zoomOut()\"\n @mouseover.native=\"showToolitip(1)\"\n @mouseout.native=\"hideToolitip(1)\"\n />\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[2].value\"\n placement=\"top\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper non-selectable\"\n >\n <div>\n Fit to\n <br>\n window\n </div>\n <map-svg-icon\n slot=\"reference\"\n icon=\"fitWindow\"\n class=\"icon-button fitWindow\"\n @click.native=\"fitWindow()\"\n @mouseover.native=\"showToolitip(2)\"\n @mouseout.native=\"hideToolitip(2)\"\n />\n </el-popover>\n </div>\n <el-popover\n ref=\"backgroundPopover\"\n placement=\"top-start\"\n width=\"128\"\n :append-to-body=\"false\"\n trigger=\"click\"\n popper-class=\"background-popper non-selectable\"\n >\n <el-row class=\"backgroundText\">\n Change background\n </el-row>\n <el-row class=\"backgroundChooser\">\n <div\n v-for=\"item in availableBackground\"\n :key=\"item\"\n :class=\"['backgroundChoice', item, item == currentBackground ? 'active' :'']\"\n @click=\"backgroundChangeCallback(item)\"\n />\n </el-row>\n </el-popover>\n <el-popover\n v-model=\"hoverVisabilities[3].value\"\n content=\"Change background color\"\n placement=\"right\"\n :append-to-body=\"false\"\n trigger=\"manual\"\n popper-class=\"scaffold-popper right-popper non-selectable\"\n >\n <map-svg-icon\n slot=\"reference\"\n v-popover:backgroundPopover\n icon=\"changeBckgd\"\n class=\"icon-button background-colour\"\n :class=\"{ open: drawerOpen, close: !drawerOpen }\"\n @mouseover.native=\"showToolitip(3)\"\n @mouseout.native=\"hideToolitip(3)\"\n />\n </el-popover>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport OpacityControls from \"./OpacityControls\";\nimport TraditionalControls from \"./TraditionalControls\";\nimport { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\n\nimport {\n Col,\n Loading,\n Option,\n Popover,\n Row,\n Select,\n Slider,\n TabPane,\n Tabs\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Col);\nVue.use(Loading.directive);\nVue.use(Option);\nVue.use(Popover);\nVue.use(Row);\nVue.use(Select);\nVue.use(Slider);\nVue.use(TabPane);\nVue.use(Tabs);\n\nconst OrgansViewer = require(\"../scripts/organsRenderer\").OrgansViewer;\nconst EventNotifier = require(\"../scripts/eventNotifier\").EventNotifier;\n\n/**\n * A vue component of the scaffold viewer.\n *\n * @requires ./OpacityControls.vue\n * @requires ./TraditionalControls.vue\n */\nexport default {\n name: \"ScaffoldVuer\",\n components: {\n OpacityControls,\n MapSvgIcon,\n MapSvgSpriteColor,\n TraditionalControls\n },\n props: {\n /**\n * URL of the zincjs metadata. This value will be ignored if a valid\n * state prop is also provided.\n * If the url needs to be updated with state present, please use\n * the setURL method.\n */\n url: {\n type: String,\n default: \"\"\n },\n /**\n * Show the colour control of set to true.\n */\n showColourPicker: {\n type: Boolean,\n default: false\n },\n /**\n * Flag to show/hide the UI.\n */\n displayUI: {\n type: Boolean,\n default: true\n },\n /**\n * Display all graphics at start.\n *\n * This setting only works when traditional is set to false.\n */\n displayAtStartUp: {\n type: Boolean,\n default: true\n },\n /**\n * Use for toggling the help tooltips.\n */\n helpMode: {\n type: Boolean,\n default: false\n },\n /**\n * Use for show/display beta warning icon.\n */\n displayWarning: {\n type: Boolean,\n default: true\n },\n /**\n * Warning message for the hovered over text\n * on the warning icon.\n */\n warningMessage: {\n type: String,\n default: \"Beta feature - under active development\"\n },\n /**\n * Show/hide pickable markers for regions.\n */\n displayMarkers: {\n type: Boolean,\n default: true\n },\n /**\n * Show/hide minimap.\n */\n displayMinimap: {\n type: Boolean,\n default: false\n },\n /**\n * Settings for minimap position, size and alignment.\n */\n minimapSettings: {\n type: Object,\n default: function() {\n return {\n x_offset: 16,\n y_offset: 16,\n width: 128,\n height: 128,\n align: \"top-right\"\n };\n }\n },\n /**\n * State containing state of the scaffold.\n */\n state: {\n type: Object,\n default: undefined\n },\n /**\n * Optional prop for the name of the region to focus on,\n * this option is ignored if state or viewURL is also provided.\n */\n region: {\n type: String,\n default: \"\"\n },\n /**\n * Optional prop for an URL of containing information of a viewport.\n * This option is ignored if state is also provided.\n * It will use the provided URL as base if a relative parth is provided.\n */\n viewURL: {\n type: String,\n default: \"\"\n },\n /**\n * Settings for turning on/off rendering\n */\n render: {\n type: Boolean,\n default: true\n }\n },\n data: function() {\n return {\n sceneData: this.$module.sceneData,\n isPlaying: false,\n /**\n * This is set when scene is transitioning.\n */\n isTransitioning: false,\n tooltipAppendToBody: false,\n hoverVisabilities: [\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false },\n { value: false }\n ],\n inHelp: false,\n loading: false,\n duration: 3000,\n drawerOpen: true,\n currentBackground: \"white\",\n availableBackground: [\"white\", \"lightskyblue\", \"black\"],\n minimisedSlider: false,\n sliderPosition: \"\",\n timeMax: 100,\n orginalDuration: \"\",\n animateDuration: \"6secs\",\n playSpeed: [\n {\n value: 0.1,\n label: \"0.1x\"\n },\n {\n value: 0.5,\n label: \"0.5x\"\n },\n {\n value: 1,\n label: \"1x\"\n },\n {\n value: 2,\n label: \"2x\"\n },\n {\n value: 5,\n label: \"5x\"\n },\n {\n value: 10,\n label: \"10x\"\n }\n ],\n currentSpeed: 1,\n timeStamps: {}\n };\n },\n watch: {\n url: {\n handler: function(newValue) {\n if (this.state === undefined || this.state.url === undefined)\n this.setURL(newValue);\n },\n immediate: true\n },\n region: {\n handler: function(region) {\n if (!(this.state || this.viewURL)) this.setFocusedRegion(region);\n },\n immediate: true\n },\n state: {\n handler: function(state) {\n this.setState(state);\n },\n immediate: true,\n deep: true\n },\n viewURL: {\n handler: function(viewURL) {\n this.updateViewURL(viewURL);\n },\n immediate: true\n },\n helpMode: function(val) {\n this.setHelpMode(val);\n },\n displayMarkers: function(val) {\n this.$module.scene.displayMarkers = val;\n },\n displayMinimap: function(val) {\n this.$module.scene.displayMinimap = val;\n },\n \"sceneData.currentTime\": function() {\n /**\n * Triggers when scene time changes.\n *\n * @property {number} time Current build-in time of scene.\n * of selected object.\n */\n this.$emit(\"timeChanged\", this.sceneData.currentTime);\n },\n duration: function() {\n this.$module.scene.setDuration(this.duration);\n },\n minimapSettings: {\n deep: true,\n handler: \"updateMinimapScissor\"\n },\n render: function(val) {\n this.toggleRendering(val);\n }\n },\n beforeCreate: function() {\n this.$module = new OrgansViewer();\n this.isReady = false;\n this.selectedObject = undefined;\n this.hoveredObject = undefined;\n this.currentBackground = \"white\";\n this._currentURL = undefined;\n this.availableBackground = [\"white\", \"black\", \"lightskyblue\"];\n },\n mounted: function() {\n let eventNotifier = new EventNotifier();\n eventNotifier.subscribe(this, this.eventNotifierCallback);\n this.$module.addNotifier(eventNotifier);\n this.$module.addOrganPartAddedCallback(this.organsAdded);\n this.$module.initialiseRenderer(this.$refs.display);\n this.toggleRendering(this.render);\n this.ro = new ResizeObserver(this.adjustLayout).observe(\n this.$refs.scaffoldContainer\n );\n this.defaultRate = this.$module.getPlayRate();\n },\n beforeDestroy: function() {\n if (this.ro) this.ro.disconnect();\n this.$module.destroy();\n this.$module = undefined;\n },\n methods: {\n /**\n * This is called when a new organ is read into the scene.\n */\n organsAdded: function() {\n this.loading = false;\n },\n /**\n * This is called when Change backgspeedround colour button\n * is pressed an causes the backgrouColornd colour to be changed\n * to one of the three preset colour: white, black and\n * lightskyblue.\n */\n backgroundChangeCallback: function(colour) {\n this.currentBackground = colour;\n this.$module.zincRenderer\n .getThreeJSRenderer()\n .setClearColor(this.currentBackground, 1);\n },\n /**\n * This is called by captueeScreenshot and after the last render\n * loop, it download a screenshot of the current scene with no UI.\n */\n captureScreenshotCallback: function() {\n //Remove the callback, only needs to happen once\n this.$module.zincRenderer.removePostRenderCallbackFunction(\n this.captureID\n );\n let screenshot = this.$module.zincRenderer\n .getThreeJSRenderer()\n .domElement.toDataURL(\"image/png\");\n let hrefElement = document.createElement(\"a\");\n document.body.append(hrefElement);\n if (!this.captureFilename) hrefElement.download = `screenshot.png`;\n else hrefElement.download = this.captureFilename;\n hrefElement.href = screenshot;\n hrefElement.click();\n hrefElement.remove();\n },\n /**\n * Function for capturing a screenshot of the current rendering.\n *\n * @param {String} filename filename given to the screenshot.\n *\n * @public\n */\n captureScreenshot: function(filename) {\n this.captureFilename = filename;\n this.captureID = this.$module.zincRenderer.addPostRenderCallbackFunction(\n this.captureScreenshotCallback\n );\n },\n formatTooltip(val) {\n if (this.timeMax >= 1000) {\n if (val) {\n let sec = ((val % 60000) / 1000).toFixed(2) + \"s\";\n let min = val > 60000 ? (val / 60000).toFixed(0) + \"m \" : \"\";\n return min + sec;\n }\n }\n return val ? val.toFixed(2) + \" ms\" : \"0 ms\";\n },\n /**\n * Function to reset the view to default.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n fitWindow: function() {\n if (this.$module.scene) {\n this.$module.scene.viewAll();\n }\n },\n /**\n * Function to zoom in.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n zoomIn: function() {\n if (this.$module.scene) {\n this.$module.scene.changeZoomByScrollRateUnit(-1);\n }\n },\n /**\n * Function to zoom out.\n * Also called when the associated button is pressed.\n *\n * @public\n */\n zoomOut: function() {\n if (this.$module.scene) {\n this.$module.scene.changeZoomByScrollRateUnit(1);\n }\n },\n /**\n * Function to change the current play speed.\n *\n * @public\n */\n speedChanged: function(speed) {\n this.currentSpeed = speed;\n this.$module.setPlayRate(this.defaultRate * this.currentSpeed);\n },\n /**\n * Function used to stop the free spin\n *\n * @public\n */\n stopFreeSpin: function() {\n let cameracontrol = this.$module.scene.getZincCameraControls();\n cameracontrol.stopAutoTumble();\n this.isTransitioning = false;\n },\n /**\n * Focus on named region\n */\n viewRegion: function(name) {\n if (name && name != \"\" && this.$module.scene) {\n let objects = this.$module.scene.findObjectsWithGroupName(name);\n let box = this.$module.scene.getBoundingBoxOfZincObjects(objects);\n if (box) {\n 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 adjustLayout: function() {\n let width = this.$refs.scaffoldContainer.clientWidth;\n this.minimisedSlider = width < 812;\n if (this.minimisedSlider) {\n this.sliderPosition = this.drawerOpen ? \"right\" : \"left\";\n } else {\n this.sliderPosition = \"\";\n }\n },\n toggleRendering: function(flag) {\n if (this.$module.zincRenderer) {\n if (flag) {\n this.$module.zincRenderer.animate();\n } else {\n this.$module.zincRenderer.stopAnimate();\n }\n }\n },\n forceResize: function() {\n if (this.$module.zincRenderer) {\n this.$module.zincRenderer.onWindowResize();\n }\n },\n syncControlCallback: function() {\n const payload = this.$module.NDCCameraControl.getPanZoom();\n this.$emit(\"scaffold-navigated\", payload);\n },\n toggleSyncControl: function(flag) {\n this.$module.toggleSyncControl(flag);\n this.$module.setSyncControlCallback(this.syncControlCallback);\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"scss\">\n@import \"~element-ui/packages/theme-chalk/src/col\";\n@import \"~element-ui/packages/theme-chalk/src/loading\";\n@import \"~element-ui/packages/theme-chalk/src/option\";\n@import \"~element-ui/packages/theme-chalk/src/popover\";\n@import \"~element-ui/packages/theme-chalk/src/row\";\n@import \"~element-ui/packages/theme-chalk/src/select\";\n@import \"~element-ui/packages/theme-chalk/src/slider\";\n@import \"~element-ui/packages/theme-chalk/src/tabs\";\n@import \"~element-ui/packages/theme-chalk/src/tab-pane\";\n\n.warning-icon {\n position: absolute;\n top: 15px;\n left: 37px;\n text-align: left;\n font-size: 25px;\n color: $warning;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.warning-text {\n font-size: 15px;\n vertical-align: 5px;\n}\n\n::v-deep .warning-popper {\n padding: 9px 10px;\n min-width: 150px;\n font-size: 12px;\n color: #fff;\n background-color: $warning;\n\n &.right-popper {\n .popper__arrow {\n &::after {\n border-right-color: $warning !important;\n }\n }\n }\n}\n\n#organsDisplayArea {\n &:focus {\n outline: none !important;\n border: 0px;\n }\n}\n\n.scaffold-container {\n height: 100%;\n width: 100%;\n position: relative;\n}\n\n.time-slider-container {\n text-align: left;\n position: absolute;\n right: 155px;\n width: calc(100% - 530px);\n bottom: 16px;\n transition: all 1s ease;\n outline: none;\n\n &.minimised {\n width: calc(40%);\n }\n\n &.left {\n right: 155px;\n width: calc(100% - 250px);\n }\n\n &.right {\n right: 8px;\n bottom: 54px;\n }\n}\n\n.slider-display-text {\n height: 20px;\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n padding-left: 8px;\n text-shadow: -1px -1px #fff, 1px -1px #fff, -1px 1px #fff, 1px -1px #fff;\n}\n\n.tab-content {\n display: flex;\n height: 34px;\n padding-top: 8px;\n font-size: 14px;\n}\n\n.tab-content ::v-deep .el-slider__marks-text {\n margin-top: 12px;\n margin-left: 8px;\n font-size: 10px;\n}\n\n.tab-content ::v-deep .el-slider__stop {\n width: 10px;\n height: 10px;\n top: -1px;\n border: solid 1px $app-primary-color;\n}\n\n.animation-data {\n margin-left: 8px;\n line-height: 26px;\n display: flex;\n\n :not(:first-child) {\n margin-left: 8px;\n }\n .purple {\n padding-left: 2px;\n color: $app-primary-color;\n }\n}\n.slider {\n margin-left: 30px;\n width: calc(100% - 88px);\n margin-top: -7px;\n\n ::v-deep .el-slider__runway {\n height: 10px;\n margin: 14px 0;\n }\n\n ::v-deep .el-slider__button-wrapper {\n top: -13px;\n }\n}\n\n.zoomOut {\n padding-left: 8px;\n}\n\n.fitWindow {\n padding-left: 8px;\n}\n\n::v-deep .non-selectable {\n user-select: none;\n}\n\n::v-deep .background-popper {\n padding: 5px 12px;\n background-color: #ffffff;\n border: 1px solid $app-primary-color;\n box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.06);\n height: 72px;\n width: 128px;\n min-width: 128px;\n\n &.el-popper[x-placement^=\"top\"] {\n .popper__arrow {\n border-top-color: $app-primary-color !important;\n &:after {\n border-top-color: #fff !important;\n }\n }\n }\n}\n\n.background-colour {\n bottom: 16px;\n position: absolute;\n transition: all 1s ease;\n\n &.open {\n left: 322px;\n }\n\n &.close {\n left: 24px;\n }\n}\n\n.backgroundText {\n color: rgb(48, 49, 51);\n font-size: 14px;\n font-weight: normal;\n line-height: 20px;\n}\n\n.backgroundChooser {\n display: flex;\n margin-top: 16px;\n}\n\n.backgroundChoice {\n width: 20px;\n height: 20px;\n border: 1px solid rgb(144, 147, 153);\n margin-left: 20px;\n\n &.active {\n border: 2px solid $app-primary-color;\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &.white {\n background-color: white;\n margin-left: 10px;\n }\n\n &.black {\n background-color: black;\n }\n\n &.lightskyblue {\n background-color: lightskyblue;\n }\n}\n\n.icon-button {\n height: 24px !important;\n width: 24px !important;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.bottom-right-control {\n position: absolute;\n right: 16px;\n bottom: 16px;\n}\n\n.video-button {\n margin-left: 8px;\n}\n\n.time-slider-container {\n ::v-deep .el-tabs__header {\n margin: 0px;\n border-bottom: 1px solid rgb(144, 147, 153);\n }\n\n .el-row {\n margin-bottom: 5px;\n }\n\n ::v-deep .el-tabs__content {\n border-left: 1px solid rgb(144, 147, 153);\n border-bottom: 1px solid rgb(144, 147, 153);\n border-right: 1px solid rgb(144, 147, 153);\n border-radius: 0px 0px 4px 4px;\n background-color: white;\n }\n\n ::v-deep .el-tabs--card {\n > .el-tabs__header {\n .el-tabs__nav {\n border: 1px solid rgb(144, 147, 153);\n border-bottom: none;\n border-radius: 4px 4px 0px 0px;\n background-color: white;\n }\n\n .el-tabs__item {\n height: 24px;\n line-height: 24px;\n padding: 0 8px !important;\n border-bottom: 1px solid;\n border-left: 1px solid rgb(144, 147, 153);\n &:first-child {\n border-left: none;\n }\n &.is-active {\n border-bottom: 1px solid white;\n color: rgb(48, 49, 51);\n }\n &:hover {\n color: $app-primary-color;\n }\n }\n }\n }\n}\n\n::v-deep .scaffold-popper {\n padding: 6px 4px;\n font-size: 12px;\n color: rgb(48, 49, 51);\n background-color: #f3ecf6;\n border: 1px solid $app-primary-color;\n white-space: nowrap;\n min-width: unset;\n pointer-events: none;\n\n &.left-popper {\n .popper__arrow {\n border-left-color: $app-primary-color !important;\n &:after {\n border-left-color: #f3ecf6 !important;\n }\n }\n }\n\n &.right-popper {\n .popper__arrow {\n border-right-color: $app-primary-color !important;\n &:after {\n border-right-color: #f3ecf6 !important;\n }\n }\n }\n\n &.el-popper[x-placement^=\"top\"] {\n .popper__arrow {\n border-top-color: $app-primary-color !important;\n &:after {\n border-top-color: #f3ecf6 !important;\n }\n }\n }\n}\n\n::v-deep .el-slider__button {\n border: 2px solid $app-primary-color;\n}\n\n::v-deep .el-slider__bar {\n background-color: $app-primary-color;\n height: 10px;\n}\n\n::v-deep .el-loading-spinner {\n i, .el-loading-text {\n color: $app-primary-color;\n }\n}\n\n::v-deep .popper-zoomout {\n padding-right: 11px;\n left: -21px !important;\n .popper__arrow {\n left: 53px !important;\n }\n}\n\n.select-box {\n width: 57px;\n border-radius: 4px;\n border: 1px solid rgb(144, 147, 153);\n background-color: var(--white);\n font-weight: 500;\n color: rgb(48, 49, 51);\n margin-left: 8px;\n\n ::v-deep .el-input__inner {\n color: $app-primary-color;\n height: 22px;\n padding-left: 8px;\n padding-right: 8px;\n border: none;\n font-family: \"Asap\", sans-serif;\n line-height: 22px;\n }\n\n ::v-deep .el-input,\n ::v-deep .el-input__icon {\n line-height: 22px;\n }\n}\n</style>\n\n<style lang=\"scss\">\n.time-slider-tooltip {\n padding: 6px 4px !important;\n font-family: \"Asap\", sans-serif;\n font-size: 12px !important;\n color: rgb(48, 49, 51) !important;\n background-color: #f3ecf6 !important;\n border: 1px solid $app-primary-color !important;\n white-space: nowrap !important;\n min-width: unset !important;\n}\n\n.scaffold_viewer_dropdown .el-select-dropdown__item {\n white-space: nowrap;\n text-align: left;\n font-family: \"Asap\", sans-serif;\n}\n\n.opacity-box {\n right: 0px;\n bottom:200px;\n position:absolute;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScaffoldVuer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScaffoldVuer.vue?vue&type=template&id=02b8949c&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=02b8949c&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 \"02b8949c\",\n null\n \n)\n\nexport default component.exports","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport ScaffoldVuer from \"./ScaffoldVuer.vue\";\n\nexport {\n ScaffoldVuer\n};\n","import './setPublicPath'\nexport * from '~entry'\n","module.exports = require(\"core-js/modules/es.string.includes\");","module.exports = require(\"element-ui/lib/theme-chalk/row.css\");"],"sourceRoot":""}
|