@abi-software/map-side-bar 1.2.0-beta.2 → 1.2.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/map-side-bar.common.js +27 -28
- package/dist/map-side-bar.common.js.map +1 -1
- package/dist/map-side-bar.css +1 -1
- package/dist/map-side-bar.umd.js +27 -28
- package/dist/map-side-bar.umd.js.map +1 -1
- package/dist/map-side-bar.umd.min.js +1 -1
- package/dist/map-side-bar.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ImageGallery.vue +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://map-side-bar/webpack/bootstrap","webpack://map-side-bar/external \"element-ui/lib/pagination\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/pagination.css\"","webpack://map-side-bar/external \"core-js/modules/es.parse-int\"","webpack://map-side-bar/external \"element-ui/lib/select\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/select.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.for-each\"","webpack://map-side-bar/./src/components/Tabs.vue?c191","webpack://map-side-bar/external \"core-js/modules/es.array.concat\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.iterator\"","webpack://map-side-bar/external \"core-js/modules/es.object.keys\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/link.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/button.css\"","webpack://map-side-bar/external \"core-js/modules/web.url\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://map-side-bar/./src/components/SearchFilters.vue?445d","webpack://map-side-bar/./src/components/DatasetCard.vue?14dc","webpack://map-side-bar/external \"element-ui/lib/drawer\"","webpack://map-side-bar/external \"@abi-software/gallery\"","webpack://map-side-bar/external \"@abi-software/svg-sprite\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptors\"","webpack://map-side-bar/external \"core-js/modules/es.string.split\"","webpack://map-side-bar/external \"core-js/modules/es.set\"","webpack://map-side-bar/external \"core-js/modules/es.array.filter\"","webpack://map-side-bar/./src/components/SidebarContent.vue?2bcd","webpack://map-side-bar/./src/components/SidebarContent.vue?5803","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/card.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/drawer.css\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.description\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.exec\"","webpack://map-side-bar/./src/components/DatasetCard.vue?1977","webpack://map-side-bar/./src/components/SideBar.vue?0398","webpack://map-side-bar/./src/components/ImageGallery.vue?76a4","webpack://map-side-bar/external \"element-ui/lib/button\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.to-string\"","webpack://map-side-bar/external \"core-js/modules/es.symbol\"","webpack://map-side-bar/external \"core-js/modules/es.array.slice\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptor\"","webpack://map-side-bar/external \"element-ui/lib/cascader\"","webpack://map-side-bar/external \"element-ui/lib/locale/lang/en\"","webpack://map-side-bar/./src/components/Tabs.vue?bd49","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/cascader.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.sort\"","webpack://map-side-bar/external \"core-js/modules/es.number.constructor\"","webpack://map-side-bar/external \"regenerator-runtime/runtime\"","webpack://map-side-bar/external \"core-js/modules/es.array.splice\"","webpack://map-side-bar/external \"element-ui/lib/link\"","webpack://map-side-bar/external \"element-ui/lib/locale\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/option.css\"","webpack://map-side-bar/external \"core-js/modules/es.promise\"","webpack://map-side-bar/external \"core-js/modules/es.object.to-string\"","webpack://map-side-bar/external \"algoliasearch\"","webpack://map-side-bar/external \"vue\"","webpack://map-side-bar/external \"core-js/modules/es.array.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/icon.css\"","webpack://map-side-bar/external \"core-js/modules/es.string.iterator\"","webpack://map-side-bar/external \"element-ui/lib/popover\"","webpack://map-side-bar/./src/components/ContextCard.vue?0546","webpack://map-side-bar/external \"core-js/modules/es.map\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/base.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.flat\"","webpack://map-side-bar/./assets/missing-image.svg","webpack://map-side-bar/external \"@abi-software/gallery/src/mixins/GalleryHelpers\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/popover.css\"","webpack://map-side-bar/./src/components/ContextCard.vue?2a5a","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/input.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.includes\"","webpack://map-side-bar/external \"element-ui/lib/loading\"","webpack://map-side-bar/external \"element-ui/lib/card\"","webpack://map-side-bar/external \"element-ui/lib/icon\"","webpack://map-side-bar/./src/components/SideBar.vue?a3c3","webpack://map-side-bar/external \"core-js/modules/es.function.name\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.for-each\"","webpack://map-side-bar/external \"core-js/modules/es.string.search\"","webpack://map-side-bar/external \"core-js/modules/es.string.replace\"","webpack://map-side-bar/external \"element-ui/lib/option\"","webpack://map-side-bar/./src/components/SearchFilters.vue?7bc3","webpack://map-side-bar/external \"core-js/modules/es.array.last-index-of\"","webpack://map-side-bar/external \"current-script-polyfill\"","webpack://map-side-bar/external \"core-js/modules/es.array.from\"","webpack://map-side-bar/external \"element-ui/lib/input\"","webpack://map-side-bar/./src/components/ImageGallery.vue?69ea","webpack://map-side-bar/external \"core-js/modules/es.object.entries\"","webpack://map-side-bar/external \"core-js/modules/es.array.unscopables.flat\"","webpack://map-side-bar/external \"core-js/modules/es.array.map\"","webpack://map-side-bar/external \"core-js/modules/es.promise.finally\"","webpack://map-side-bar/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://map-side-bar/./src/components/SideBar.vue?1500","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://map-side-bar/./src/components/SidebarContent.vue?e47f","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://map-side-bar/./src/components/SearchFilters.vue?e131","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://map-side-bar/src/components/Cascader.vue","webpack://map-side-bar/./src/components/Cascader.vue?9729","webpack://map-side-bar/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://map-side-bar/./src/components/Cascader.vue","webpack://map-side-bar/./src/components/species-map.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://map-side-bar/./src/algolia/algolia.js","webpack://map-side-bar/./src/algolia/utils.js","webpack://map-side-bar/src/components/SearchFilters.vue","webpack://map-side-bar/./src/components/SearchFilters.vue?8079","webpack://map-side-bar/./src/components/SearchFilters.vue","webpack://map-side-bar/./src/components/DatasetCard.vue?8bd9","webpack://map-side-bar/./src/components/EventBus.js","webpack://map-side-bar/./src/components/ImageGallery.vue?c5ad","webpack://map-side-bar/src/components/ImageGallery.vue","webpack://map-side-bar/./src/components/ImageGallery.vue?b8b4","webpack://map-side-bar/./src/components/ImageGallery.vue","webpack://map-side-bar/src/components/DatasetCard.vue","webpack://map-side-bar/./src/components/DatasetCard.vue?d021","webpack://map-side-bar/./src/components/DatasetCard.vue","webpack://map-side-bar/./src/components/ContextCard.vue?0d18","webpack://map-side-bar/src/components/ContextCard.vue","webpack://map-side-bar/./src/components/ContextCard.vue?667e","webpack://map-side-bar/./src/components/ContextCard.vue","webpack://map-side-bar/src/components/SidebarContent.vue","webpack://map-side-bar/./src/components/SidebarContent.vue?7e01","webpack://map-side-bar/./src/components/SidebarContent.vue","webpack://map-side-bar/./src/components/Tabs.vue?c0a0","webpack://map-side-bar/src/components/Tabs.vue","webpack://map-side-bar/./src/components/Tabs.vue?3d38","webpack://map-side-bar/./src/components/Tabs.vue","webpack://map-side-bar/src/components/SideBar.vue","webpack://map-side-bar/./src/components/SideBar.vue?b259","webpack://map-side-bar/./src/components/SideBar.vue","webpack://map-side-bar/./src/components/index.js","webpack://map-side-bar/./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js","webpack://map-side-bar/external \"core-js/modules/es.string.includes\""],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_arrayWithoutHoles","arr","Array","isArray","i","arr2","length","_iterableToArray","iter","Symbol","iterator","prototype","toString","call","from","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_arrayWithHoles","_nonIterableRest","_toArray","arrayWithHoles","nonIterableRest","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","AlgoliaClient","algoliaId","algoliaKey","PENNSIEVE_API_LOCATION","client","algoliasearch","ALGOLIA_INDEX","index","initIndex","propPathMapping","map","Map","entries","facetPropPaths","keys","facetData","facetId","search","sortFacetValuesBy","facets","response","facetPropPath","children","responseFacets","responseFacetChildren","facet","push","label","id","get","discoverId","fetch","r","json","dataset","version","doi","discoverIds","promiseList","_discoverAllDois","all","values","flat","filter","query","hitsperPage","page","hitsPerPage","filters","searchData","items","hits","total","nbHits","pennsieve","identifier","dois","item","curie","split","facetPropPathMapping","getFilters","selectedFacetArray","forEach","f","removeShowAllFacets","facetsToOr","substring","lastIndexOf","facetArray","EventBus","Vue"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;AClFA,sD;;;;;;;ACAA,+D;;;;;;;ACAA,sE;;;;;;;ACAA,yD;;;;;;;ACAA,kD;;;;;;;ACAA,kE;;;;;;;ACAA,8D;;;;;;;;ACAA;AAAA;AAAA;AAAif,CAAgB,8hBAAG,EAAC,C;;;;;;;ACArgB,4D;;;;;;;ACAA,yE;;;;;;;ACAA,2D;;;;;;;ACAA,gE;;;;;;;ACAA,kE;;;;;;;ACAA,oD;;;;;;;ACAA,mE;;;;;;;;ACAA;AAAA;AAAA;AAA0f,CAAgB,uiBAAG,EAAC,C;;;;;;;ACA9gB,uC;;;;;;;ACAA,kD;;;;;;;ACAA,kD;;;;;;;ACAA,qD;;;;;;;ACAA,mF;;;;;;;ACAA,4D;;;;;;;ACAA,mD;;;;;;;ACAA,4D;;;;;;;ACAA,uC;;;;;;;;ACAA;AAAA;AAAA;AAA2f,CAAgB,wiBAAG,EAAC,C;;;;;;;ACA/gB,gE;;;;;;;ACAA,kE;;;;;;;ACAA,kE;;;;;;;ACAA,2D;;;;;;;;ACAA;AAAA;AAAA;AAAwf,CAAgB,qiBAAG,EAAC,C;;;;;;;ACA5gB,uC;;;;;;;ACAA,uC;;;;;;;ACAA,kD;;;;;;;ACAA,gE;;;;;;;ACAA,sD;;;;;;;ACAA,2D;;;;;;;ACAA,kF;;;;;;;ACAA,oD;;;;;;;ACAA,0D;;;;;;;ACAA,uC;;;;;;;ACAA,oE;;;;;;;ACAA,0D;;;;;;;ACAA,kE;;;;;;;ACAA,wD;;;;;;;ACAA,4D;;;;;;;ACAA,gD;;;;;;;ACAA,kD;;;;;;;ACAA,kE;;;;;;;ACAA,uD;;;;;;;ACAA,gE;;;;;;;ACAA,0C;;;;;;;ACAA,gC;;;;;;;ACAA,8D;;;;;;;ACAA,gE;;;;;;;ACAA,+D;;;;;;;ACAA,mD;;;;;;;;ACAA;AAAA;AAAA;AAAwf,CAAgB,qiBAAG,EAAC,C;;;;;;;ACA5gB,mD;;;;;;;ACAA,gE;;;;;;;ACAA,0D;;;;;;;ACAA,iBAAiB,qBAAuB,oC;;;;;;;ACAxC,4E;;;;;;;ACAA,mE;;;;;;;ACAA,uC;;;;;;;ACAA,iE;;;;;;;ACAA,8D;;;;;;;ACAA,mD;;;;;;;ACAA,gD;;;;;;;ACAA,gD;;;;;;;;ACAA;AAAA;AAAA;AAAof,CAAgB,iiBAAG,EAAC,C;;;;;;;ACAxgB,6D;;;;;;;ACAA,yE;;;;;;;ACAA,6D;;;;;;;ACAA,8D;;;;;;;ACAA,kD;;;;;;;ACAA,uC;;;;;;;ACAA,mE;;;;;;;ACAA,oD;;;;;;;ACAA,0D;;;;;;;ACAA,iD;;;;;;;;ACAA;AAAA;AAAA;AAAyf,CAAgB,siBAAG,EAAC,C;;;;;;;ACA7gB,8D;;;;;;;ACAA,sE;;;;;;;ACAA,yD;;;;;;;ACAA,+D;;;;;;;;;;;;;;;ACAA;;AAEA;AACA,MAAM,IAAuC;AAC7C,IAAI,mBAAO,CAAC,MAAyB;AACrC;;AAEA,MAAM,eAAC;AACP,OAAO,eAAC,sCAAsC,eAAC,GAAG,eAAC;AACnD,IAAI,qBAAuB,GAAG,eAAC;AAC/B;AACA;;AAEA;AACe,sDAAI;;;ACdnB,0BAA0B,aAAa,0BAA0B,wBAAwB,iBAAiB,gBAAgB,8BAA8B,2BAA2B,0BAA0B,UAAU,iCAAiC,6BAA6B,8BAA8B,6KAA6K,KAAK,kCAAkC,wBAAwB,YAAY,uBAAuB,6BAA6B,4BAA4B,mBAAmB,UAAU,kCAAkC,uBAAuB,gCAAgC,mCAAmC,OAAO,6CAA6C,KAAK,+BAA+B,2CAA2C,8BAA8B,aAAa,0FAA0F,qFAAqF,yDAAyD,KAAK,kCAAkC,2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AAAA,UACA,QADA,GACA,IADA,CACA,QADA;AAAA,UACA,aADA,GACA,IADA,CACA,aADA;AAAA,UACA,SADA,GACA,IADA,CACA,SADA;AAAA,UACA,YADA,GACA,IADA,CACA,YADA;AAEA;AACA;;AACA;AAAA;AACA,oBADA;AAEA,uBAFA;AAGA,sDAHA;AAIA,yBAJA;AAKA;AALA;AAAA;;AAOA,4DACA;AACA;AACA,OAHA;;AAKA;AAAA,oCACA,WADA;AAAA,YACA,KADA;AAAA,YACA,IADA;;AAEA;AACA;;AACA;AACA;AACA;AACA,qBADA;AAEA,0CAFA;AAGA;AAHA;AAKA,WANA,MAMA;AACA;AAAA;AAAA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AArCA;AAHA,G;;ACJkU,CAAgB,gHAAG,EAAC,C;;ACAtV;;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,qBAAqB;AACrB;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;;;AC5FA,IAAI,eAAM,EAAE,wBAAe;AACiC;AACL;;;AAGvD;AAC0F;AAC1F,gBAAgB,kBAAU;AAC1B,EAAE,2CAAM;AACR,EAAE,eAAM;AACR,EAAE,wBAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,8D;;AClBA;AACX,kBAAgB,OADL;AAEX,uBAAqB,KAFV;AAGX,kBAAgB,OAHL;AAIX,2BAAyB,KAJd;AAKX,gBAAc,MALH;AAMX,iBAAe;AANJ,CAAf,E;;;;;;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ADA;AAEA;AAFA,eARA,CAaA;;;AACA;AACA,6GACA,eADA;AAGA,mDACA,2DADA;AAEA,aANA;AAOA,WArBA;;AAsBA;AACA,SA7BA,EA8BA,OA9BA,CA8BA;AACA;AACA,SAhCA;AAiCA,OAnCA;AAoCA,KA1CA;AA2CA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAjDA;AAkDA;AACA;AACA;AACA;AACA,iDAFA,CAIA;;AACA;AAAA;AAAA;AAAA;AACA,gCADA;AAEA,sCAFA;AAGA;AAHA;AAAA,WALA,CAWA;;AACA;AAAA;AAAA;AACA;AACA;AACA,mCADA;AAEA,sCAFA;AAGA;AAHA;AAKA,SAPA;AAUA,oCAtBA,CAsBA;;AAEA,6CAxBA,CAwBA;;AACA,qCAzBA,CAyBA;;AACA;AACA;AACA,KAhFA;AAiFA;AACA;AACA;AAAA;;AACA;AACA,6BACA,GADA,CACA;AAAA;AAAA,OADA,EAEA,QAFA,CAEA,IAFA,EAFA,CAKA;;AACA;AACA;AACA,2BAFA,CAGA;;AACA;AACA;AACA;AACA,SAPA,CAQA;;;AACA;AACA,kCADA,CAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,+CACA,8EADA,KAEA;AACA,aANA,MAMA;AACA;AACA;AACA;AACA,WAXA,MAWA;AACA;AACA;AACA,SAjCA,CAkCA;;;AACA;AACA;AACA;AACA;AACA;AACA,eAFA,MAEA;AACA;AACA;AACA,aANA,MAMA;AACA;AACA;AACA,eAFA,MAEA;AACA;AACA;AACA,aANA,MAMA;AACA;AACA;AACA,WAhBA,MAgBA;AACA,SAlBA;AAmBA;;AACA;AACA,KAjJA;AAkJA;AACA,wDADA,CACA;;;AACA,wCAFA,CAEA;AAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OARA;AASA;AACA,kCAfA,CAgBA;;AACA;AACA;AACA;AACA;AACA,KAvKA;AAwKA;AACA;AACA;AACA;AACA,KA5KA;AA6KA;AACA;AACA,KA/KA;AAgLA;AAAA;;AACA;AACA;AACA;AA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A,kCAHA;AAIA,2BAJA;AAKA,yBALA;AAMA,qBANA;AAOA;AAPA;AASA,GAxBA;AAyBA;AACA;AACA;;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;;AACA;AACA,KAbA;AAcA;AACA;;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;;AACA;AACA;;AAEA;AACA,KAvCA;AAwCA;AACA;AACA,4DACA;AACA;;AACA;AACA,KA9CA;AA+CA;AACA;AACA,KAjDA;AAkDA;AACA;AACA;AApDA,GAzBA;AA+EA;AACA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAPA;AAQA;AACA;AACA,KAVA;AAWA;AACA;AACA,wEADA;AAEA,2GAFA;AAGA,iCAHA;AAIA,wBAJA;AAKA,mCALA;AAMA,8CANA;AAOA,6BAPA;AAQA,4JARA;AASA;AATA;AAWA;AACA,KAxBA;AAyBA;AACA;AACA,wEADA;AAEA,0GAFA;AAGA,0BAHA;AAIA,oBAJA;AAKA,mCALA;AAMA,8CANA;AAOA,6BAPA;AAQA,4JARA;AASA;AATA;AAWA;AACA,KAtCA;AAuCA;AACA;AACA,KAzCA;AA0CA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA,WAXA;;AAYA;AAAA;AAAA;AACA;AACA,OAnBA;AAoBA,KAhEA;AAiEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAHA,MAGA;AACA;AACA;AACA,OAPA;AAQA;AACA,wBADA;AAEA,0BAFA;AAGA,kCAHA;AAIA,8CAJA;AAKA,6BALA;AAMA,4JANA;AAOA,8BAPA;AAQA,gCARA;AASA,6BATA;AAUA,2CAVA;AAWA;AAXA;AAaA;AACA,KA1FA;AA2FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA,0EADA;AAEA,4BAFA;AAGA,oCAHA;AAIA,oCAJA;AAKA,oCALA;AAMA,+BANA;AAOA,6CAPA;AAQA;AARA;AAUA;AACA;AACA,KAjHA;AAkHA;AACA;AACA;;AACA;AACA;AACA;AACA,wCADA;AAEA,8BAFA;AAGA;AAHA;AAKA;AACA,4EADA;AAEA,8BAFA;AAGA,sCAHA;AAIA,sCAJA;AAKA,+BALA;AAMA,iCANA;AAOA,+CAPA;AAQA;AARA;AAUA;AACA;AACA;AACA,KAzIA;AA0IA;AACA;;AACA;AACA;AACA;AACA,KA/IA;AAgJA;AACA;AACA;AACA;AACA,KApJA;AAqJA;AACA;AACA,KAvJA;AAwJA;AACA;AACA,KA1JA;AA2JA;AACA;AACA,KA7JA;AA8JA;AACA;AACA,KAhKA;AAiKA;AAAA;;AACA;AACA,0HACA,IADA,CACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA,OAPA,EAQA,IARA,CAQA;AACA;AACA;AACA;AACA;;AACA;;AACA;AACA,OAfA,EAgBA,KAhBA,CAgBA;AACA;AACA;AACA;AACA,OApBA;AAqBA,KAxLA;AAyLA;AACA;AACA,KA3LA;AA4LA;AAAA;;AACA;AACA,wDAFA,CAGA;;AACA,sBACA,IADA,CACA;AAAA;AAAA,OADA,EAEA,IAFA,CAEA;AACA,sCACA;AACA,OALA;AAMA;AAtMA,GA/EA;AAuRA;AACA;AACA,GAzRA;AA0RA;AACA;AACA;AA5RA,G;;ACtFqU,CAAgB,sHAAG,EAAC,C;;;;;ACAnP;AACvC;AACL;AACqC;;;AAG/F;AAC0F;AAC1F,IAAI,qBAAS,GAAG,kBAAU;AAC1B,EAAE,8CAAM;AACR,EAAE,2DAAM;AACR,EAAE,oEAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,qEAAS,Q;;ACnBxB,IAAI,2DAAM,gBAAgB,aAAa,0BAA0B,wBAAwB,iBAAiB,qDAAqD,YAAY,aAAa,sFAAsF,EAAE,YAAY,aAAa,8EAA8E,yBAAyB,yBAAyB,qCAAqC,qCAAqC,+BAA+B,cAAc,aAAa,gFAAgF,yBAAyB,yBAAyB,qCAAqC,qCAAqC,iCAAiC,iFAAiF,gCAAgC,YAAY,6CAA6C,wBAAwB,YAAY,yBAAyB,YAAY,oBAAoB,oJAAoJ,iBAAiB,MAAM,aAAa,2CAA2C,yBAAyB,gCAAgC,YAAY,OAAO,2CAA2C,0CAA0C;AACr6C,IAAI,oEAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACqBnB;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA,qBADA;AAEA;AACA;;;;AAIA;AALA,GAFA;AASA;AACA;AACA,qBADA;AAEA,uBAFA;AAGA;AAHA;AAKA,GAfA;AAgBA;AACA;AACA,aADA,mBACA,GADA,EACA;AACA;AACA;AACA;AACA,SAHA,MAGA;AACA;AACA;AACA,OARA;AASA;AATA;AADA,GAhBA;AA6BA;AACA;AAAA;;AACA,4BACA,IADA,CACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA,OAPA,EAQA,IARA,CAQA;AACA;AACA,OAVA,EAWA,KAXA,CAWA;AACA;AACA;AACA;AACA,OAfA;AAgBA,KAlBA;AAmBA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAzBA;AA0BA;AACA;AACA;AACA,KA7BA;AA8BA;AAEA;AACA;AACA;AACA;AACA;AApCA;AA7BA,G;;ACvCqU,CAAgB,sHAAG,EAAC,C;;;;;ACAnP;AACvC;AACL;AACqC;;;AAG/F;AAC0F;AAC1F,IAAI,qBAAS,GAAG,kBAAU;AAC1B,EAAE,8CAAM;AACR,EAAE,2DAAM;AACR,EAAE,oEAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,qEAAS,Q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC6BxB;AACA;AAUA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iD,CAEA;AACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBACA,WADA;AAAA;AAAA;AAAA;;AAAA;AAAA,mBAEA,eAFA;;AAAA;AAEA,iBAFA;;AAAA,iBAGA,KAHA;AAAA;AAAA;AAAA;;AAAA,kBAIA,wBAJA;;AAAA;AAAA,kBAMA,mBANA;;AAAA;AAAA,6CASA,QATA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAYA;AACA,iBADA;AAEA,gBAFA;AAGA,aAHA;AAIA,iBAJA;AAKA,YALA;AAMA,qBANA;AAOA,mBAPA;AAQA,SARA;AASA,cATA;AAUA,UAVA;AAWA,oBAXA;AAYA,uBAZA;AAaA,6BAbA;AAcA;AAdA;AAiBA;AACA;AAAA;AAAA;AAAA;AAAA,GADA;AAEA,wBAFA;AAGA;AACA;AACA,mBADA;AAEA;AAFA,KADA;AAKA;AACA,mBADA;AAEA;AAFA,KALA;AASA;AACA,kBADA;AAEA;AAAA;AAAA;AAFA,KATA;AAaA;AACA,kBADA;AAEA;AAFA,KAbA;AAiBA;AACA,kBADA;AAEA;AAFA;AAjBA,GAHA;AAyBA;AACA,WAAW,uDACX,UADA;AAEA;AACA,wBADA;AAEA,6BAFA;AAGA;AAHA;AAFA;AAQA,GAlCA;AAmCA;AACA;AACA;AACA;AACA,uCADA;AAEA;AAFA;AAIA;AAPA,GAnCA;AA4CA;AACA;AACA;AACA,KAHA;AAIA;AAAA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,KAZA;AAaA;AACA;;AACA;AACA;AACA;AACA;AACA,KAnBA;AAoBA;AACA;AACA;AACA;AACA,KAxBA;AAyBA;AAAA;;AACA;AACA;AACA;AACA;AACA,KA9BA;AA+BA;AACA;AACA;AACA;AACA;AACA,sBADA;AAEA;AAFA;AAIA,KAvCA;AAwCA,iBAxCA,yBAwCA,OAxCA,EAwCA;AAAA;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAAA;AAAA;AACA,OANA;AAOA,KAjDA;AAkDA;AACA;AACA,KApDA;AAqDA;AACA;AACA;AACA,KAxDA;AAyDA;AACA;AACA;AACA;AACA,KA7DA;AA8DA;AAAA;;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA,4DACA,IADA,CACA;AACA;AACA;AACA;;AACA;;AACA;AACA;AACA,OARA,EASA,KATA,CASA;AACA;AACA;AACA;AACA;AACA,OAdA;AAeA,KAlFA;AAmFA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA,KAxFA;AAyFA;AACA;AACA;AACA,KA5FA;AA6FA;AAAA;;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,4BADA;AAEA,0CAFA;AAGA,4CAHA;AAIA,8CACA,4BADA,GAEA,CANA;AAOA,gDACA,6BADA,GAEA,CATA;AAUA,6DAVA;AAWA,6BAXA;AAYA,+CAZA;AAaA,mDAbA;AAcA,iDAdA;AAeA,mFACA;AAAA;AAAA,aADA,IAEA,SAjBA;AAkBA,uCACA,kDACA;AAAA;AAAA,aADA,IAEA,SAHA,GAIA,SAtBA;AAsBA;AACA,0BAvBA;AAwBA,0CAxBA;AAyBA,0DAzBA;AA0BA,6GA1BA;AA2BA,0DA3BA;AA4BA,+BA5BA;AA6BA,6BA7BA;AA8BA,0CA9BA;AA+BA,qIA/BA;AAgCA,kDAhCA;AAiCA,mDAjCA;AAkCA,gDACA,sDADA,GAEA,KApCA;AAqCA;AArCA;;AAuCA;AACA,OA1CA;AA2CA,KA9IA;AA+IA;AACA,oCADA,CAEA;;AAFA,iCAGA,GAHA;AAIA;AACA;AACA;AACA,WAFA;AAGA,SAJA,MAIA;AACA;AACA;AAVA;;AAGA;AAAA;AAQA;;AACA;AACA,KA5JA;AA6JA;AAAA;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,+CALA,CAMA;;AACA;;AACA;AAAA;AAAA,WACA,IADA,CACA,YADA,EAEA,IAFA,CAEA;AAAA;AAAA,SAFA,EAGA,IAHA,CAGA;AAAA;AAAA,SAHA,EAIA,KAJA,CAIA;AAAA;AAAA,SAJA;AAKA,OAbA;AAcA;AA5KA,GA5CA;AA0NA;AACA;AACA;AACA;AACA,kDAJA,CAMA;;AACA;AACA;AACA,KAFA,MAEA;AACA;AACA;AACA,GAtOA;AAuOA;AACA;AACA;AACA;AA1OA,G;;AC5GwU,CAAgB,4HAAG,EAAC,C;;;;;ACAnP;AACvC;AACL;AACqC;;;AAGlG;AAC0F;AAC1F,IAAI,wBAAS,GAAG,kBAAU;AAC1B,EAAE,iDAAM;AACR,EAAE,8DAAM;AACR,EAAE,uEAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,2EAAS,Q;;ACnBxB,IAAI,oDAAM,gBAAgB,aAAa,0BAA0B,wBAAwB,iBAAiB,4BAA4B,wCAAwC,iBAAiB,iCAAiC,YAAY,sCAAsC,2CAA2C,KAAK,yBAAyB,oCAAoC,YAAY,yBAAyB,4CAA4C;AAChd,IAAI,6DAAe;;;;;;;;;;;;;;;;;;;;ACYnB;AAEA;AACA,cADA;AAEA;AACA;AACA,iBADA;AAEA;AAAA;AAAA;AAFA,KADA;AAKA;AACA,kBADA;AAEA;AAFA;AALA,GAFA;AAYA;AACA;AACA;AACA;AAHA;AAZA,G;;ACf8T,CAAgB,wGAAG,EAAC,C;;;;;ACAnP;AACvC;AACL;AACqC;;;AAGxF;AAC0F;AAC1F,IAAI,cAAS,GAAG,kBAAU;AAC1B,EAAE,uCAAM;AACR,EAAE,oDAAM;AACR,EAAE,6DAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,uDAAS,Q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACmBxB;AACA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA,iBADA;AAEA,gBAFA;AAGA,aAHA;AAIA,mBAJA;AAKA,iBALA;AAMA,YANA;AAOA,wBAPA;AAQA,qBARA;AASA,mBATA;AAUA,SAVA;AAWA,cAXA;AAYA,UAZA;AAaA,oBAbA;AAcA;AAdA;AAiBA;AACA;AAAA;AAAA;AAAA,GADA;AAEA,iBAFA;AAGA;AACA;AACA,mBADA;AAEA;AAFA,KADA;AAKA;AACA,kBADA;AAEA;AAAA;AAAA;AAFA,KALA;AASA;AACA,kBADA;AAEA;AAFA,KATA;AAaA;AACA,iBADA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAFA,KAbA;AAiBA;AACA,kBADA;AAEA;AAFA,KAjBA;AAqBA;AACA,mBADA;AAEA;AAFA;AArBA,GAHA;AA6BA;AACA,WAAW,gDACX,UADA;AAGA,GAjCA;AAkCA;AACA;AACA;AAAA;AAAA;AACA,KAHA;AAIA;AACA;AACA,KANA;AAOA;AACA;AACA,KATA;AAUA;AAAA;;AACA,6BADA,CAEA;;AACA;AAAA;AAAA;AACA,KAdA;AAeA;AAAA;;AACA,6BADA,CAEA;;AACA;AAAA;AAAA;AACA,KAnBA;AAoBA;AAAA;;AACA,6BADA,CAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,KAxBA;AAyBA;AACA;AACA;AA3BA,GAlCA;AA+DA;AACA;AACA,GAjEA;AAkEA;AAAA;;AACA;AACA;AACA,KAFA;AAGA;AAtEA,G;;ACvEiU,CAAgB,8GAAG,EAAC,C;;;;;ACAnP;AACvC;AACL;AACqC;;;AAG3F;AAC0F;AAC1F,IAAI,iBAAS,GAAG,kBAAU;AAC1B,EAAE,0CAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,6DAAS,Q;;ACnBxB;;;ACAwB;AACF;;;;;;;;ACDtB,+D","file":"map-side-bar.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(\"element-ui/lib/pagination\");","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/pagination.css\");","module.exports = require(\"core-js/modules/es.parse-int\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","module.exports = require(\"core-js/modules/es.array.for-each\");","import mod 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!./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"; export default mod; 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!./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.array.concat\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"core-js/modules/es.object.keys\");","module.exports = require(\"element-ui/lib/theme-chalk/link.css\");","module.exports = require(\"element-ui/lib/theme-chalk/button.css\");","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","import mod 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!./SearchFilters.vue?vue&type=style&index=0&id=57801ec0&scoped=true&lang=css&\"; export default mod; 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!./SearchFilters.vue?vue&type=style&index=0&id=57801ec0&scoped=true&lang=css&\"","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/drawer\");","module.exports = require(\"@abi-software/gallery\");","module.exports = require(\"@abi-software/svg-sprite\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptors\");","module.exports = require(\"core-js/modules/es.string.split\");","module.exports = require(\"core-js/modules/es.set\");","module.exports = require(\"core-js/modules/es.array.filter\");","// extracted by mini-css-extract-plugin","import mod 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!./SidebarContent.vue?vue&type=style&index=0&id=3d1731ba&scoped=true&lang=css&\"; export default mod; 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!./SidebarContent.vue?vue&type=style&index=0&id=3d1731ba&scoped=true&lang=css&\"","module.exports = require(\"element-ui/lib/theme-chalk/card.css\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","import mod 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!./DatasetCard.vue?vue&type=style&index=0&id=5144815c&scoped=true&lang=css&\"; export default mod; 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!./DatasetCard.vue?vue&type=style&index=0&id=5144815c&scoped=true&lang=css&\"","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/button\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","module.exports = require(\"core-js/modules/es.array.slice\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptor\");","module.exports = require(\"element-ui/lib/cascader\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/theme-chalk/cascader.css\");","module.exports = require(\"core-js/modules/es.array.sort\");","module.exports = require(\"core-js/modules/es.number.constructor\");","module.exports = require(\"regenerator-runtime/runtime\");","module.exports = require(\"core-js/modules/es.array.splice\");","module.exports = require(\"element-ui/lib/link\");","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","module.exports = require(\"core-js/modules/es.promise\");","module.exports = require(\"core-js/modules/es.object.to-string\");","module.exports = require(\"algoliasearch\");","module.exports = require(\"vue\");","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(\"element-ui/lib/popover\");","import mod 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!./ContextCard.vue?vue&type=style&index=0&id=5de93eb9&scoped=true&lang=css&\"; export default mod; 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!./ContextCard.vue?vue&type=style&index=0&id=5de93eb9&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.map\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","module.exports = require(\"core-js/modules/es.array.flat\");","module.exports = __webpack_public_path__ + \"img/missing-image.1878d8b8.svg\";","module.exports = require(\"@abi-software/gallery/src/mixins/GalleryHelpers\");","module.exports = require(\"element-ui/lib/theme-chalk/popover.css\");","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/theme-chalk/input.css\");","module.exports = require(\"core-js/modules/es.array.includes\");","module.exports = require(\"element-ui/lib/loading\");","module.exports = require(\"element-ui/lib/card\");","module.exports = require(\"element-ui/lib/icon\");","import mod 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!./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"; export default mod; 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!./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"","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.search\");","module.exports = require(\"core-js/modules/es.string.replace\");","module.exports = require(\"element-ui/lib/option\");","// extracted by mini-css-extract-plugin","module.exports = require(\"core-js/modules/es.array.last-index-of\");","module.exports = require(\"current-script-polyfill\");","module.exports = require(\"core-js/modules/es.array.from\");","module.exports = require(\"element-ui/lib/input\");","import mod 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!./ImageGallery.vue?vue&type=style&index=0&id=51b6af52&scoped=true&lang=css&\"; export default mod; 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!./ImageGallery.vue?vue&type=style&index=0&id=51b6af52&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.object.entries\");","module.exports = require(\"core-js/modules/es.array.unscopables.flat\");","module.exports = require(\"core-js/modules/es.array.map\");","module.exports = require(\"core-js/modules/es.promise.finally\");","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n require('current-script-polyfill')\n }\n\n var i\n if ((i = window.document.currentScript) && (i = i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_public_path__ = i[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',{ref:\"container\"},[(!_vm.drawerOpen)?_c('div',{staticClass:\"open-tab\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e(),_c('el-drawer',{staticClass:\"side-bar\",attrs:{\"custom-class\":\"my-drawer\",\"visible\":_vm.drawerOpen,\"appendToBody\":false,\"modal-append-to-body\":false,\"size\":\"550\",\"with-header\":false,\"wrapperClosable\":false,\"modal\":false},on:{\"update:visible\":function($event){_vm.drawerOpen=$event}}},[_c('div',{staticClass:\"box-card\"},[(_vm.drawerOpen)?_c('div',{staticClass:\"close-tab\",on:{\"click\":_vm.close}},[_c('i',{staticClass:\"el-icon-arrow-right\"})]):_vm._e(),_c('div',{staticClass:\"sidebar-container\"},[(_vm.tabs.length > 1)?_c('tabs',{attrs:{\"tabTitles\":_vm.tabs,\"activeId\":_vm.activeId},on:{\"titleClicked\":_vm.tabClicked}}):_vm._e(),_vm._l((_vm.tabs),function(tab){return [_c('sidebar-content',{directives:[{name:\"show\",rawName:\"v-show\",value:(tab.id===_vm.activeId),expression:\"tab.id===activeId\"}],key:tab.id,ref:tab.id,refInFor:true,staticClass:\"sidebar-content-container\",attrs:{\"contextCardEntry\":tab.contextCard,\"envVars\":_vm.envVars},on:{\"search-changed\":function($event){return _vm.searchChanged(tab.id, $event)}}})]})],2)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{staticClass:\"content-card\",attrs:{\"body-style\":_vm.bodyStyle}},[_c('div',{staticClass:\"header\",attrs:{\"slot\":\"header\"},slot:\"header\"},[(_vm.contextCardEntry && _vm.contextCardEnabled)?_c('context-card',{attrs:{\"entry\":_vm.contextCardEntry}}):_vm._e(),_c('el-input',{staticClass:\"search-input\",attrs:{\"placeholder\":\"Search\",\"clearable\":\"\"},on:{\"clear\":_vm.clearSearchClicked},nativeOn:{\"keyup\":function($event){return _vm.searchEvent($event)}},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}}),_c('el-button',{staticClass:\"button\",on:{\"click\":_vm.searchEvent}},[_vm._v(\"Search\")])],1),_c('SearchFilters',{ref:\"filtersRef\",staticClass:\"filters\",attrs:{\"entry\":_vm.filterEntry,\"envVars\":_vm.envVars},on:{\"filterResults\":_vm.filterUpdate,\"numberPerPage\":_vm.numberPerPageUpdate,\"loading\":_vm.filtersLoading}}),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loadingCards),expression:\"loadingCards\"}],ref:\"content\",staticClass:\"content scrollbar\"},[(_vm.results.length === 0 && !_vm.loadingCards && !_vm.sciCrunchError)?_c('div',{staticClass:\"error-feedback\"},[_vm._v(\"No results found - Please change your search / filter criteria.\")]):_vm._e(),(_vm.sciCrunchError)?_c('div',{staticClass:\"error-feedback\"},[_vm._v(_vm._s(_vm.sciCrunchError))]):_vm._e(),_vm._l((_vm.results),function(o){return _c('div',{key:o.id,staticClass:\"step-item\"},[_c('DatasetCard',{attrs:{\"entry\":o,\"envVars\":_vm.envVars},on:{\"contextUpdate\":_vm.contextCardUpdate}})],1)}),_c('el-pagination',{staticClass:\"pagination\",attrs:{\"current-page\":_vm.page,\"hide-on-single-page\":\"\",\"large\":\"\",\"layout\":\"prev, pager, next\",\"page-size\":_vm.numberPerPage,\"total\":_vm.numberOfHits},on:{\"update:currentPage\":function($event){_vm.page=$event},\"update:current-page\":function($event){_vm.page=$event},\"current-change\":_vm.pageChange}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"filters\"},[_c('map-svg-sprite-color'),_c('transition',{attrs:{\"name\":\"el-zoom-in-top\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showFilters),expression:\"showFilters\"}],staticClass:\"search-filters transition-box\"},[_c('custom-cascader',{ref:\"cascader\",staticClass:\"cascader\",attrs:{\"placeholder\":\"\",\"collapse-tags\":true,\"options\":_vm.options,\"props\":_vm.props,\"show-all-levels\":false,\"append-to-body\":false},on:{\"change\":function($event){return _vm.cascadeEvent($event)},\"expand-change\":_vm.cascadeExpandChange,\"tags-changed\":_vm.tagsChangedCallback},model:{value:(_vm.cascadeSelected),callback:function ($$v) {_vm.cascadeSelected=$$v},expression:\"cascadeSelected\"}}),(_vm.showFiltersText)?_c('div',{staticClass:\"filter-default-value\"},[_vm._v(\" Filters \")]):_vm._e(),_c('el-popover',{attrs:{\"title\":\"How do filters work?\",\"width\":\"250\",\"trigger\":\"hover\",\"append-to-body\":false,\"popper-class\":\"popover\"}},[_c('map-svg-icon',{staticClass:\"help\",attrs:{\"slot\":\"reference\",\"icon\":\"help\"},slot:\"reference\"}),_c('div',[_c('strong',[_vm._v(\"Within categories:\")]),_vm._v(\" OR \"),_c('br'),_vm._v(\" example: 'heart' OR 'colon' \"),_c('br'),_c('br'),_c('strong',[_vm._v(\"Between categories:\")]),_vm._v(\" AND \"),_c('br'),_vm._v(\" example: 'rat' AND 'lung' \")])],1)],1)]),_c('el-select',{staticClass:\"number-shown-select\",attrs:{\"placeholder\":\"10\"},on:{\"change\":function($event){return _vm.numberShownChanged($event)}},model:{value:(_vm.numberShown),callback:function ($$v) {_vm.numberShown=$$v},expression:\"numberShown\"}},_vm._l((_vm.numberDatasetsShown),function(item){return _c('el-option',{key:item,attrs:{\"label\":item,\"value\":item}})}),1),_c('span',{staticClass:\"dataset-results-feedback\"},[_vm._v(_vm._s(this.numberOfResultsText))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}","<script>\n/* eslint-disable no-alert, no-console */\nimport { Cascader } from \"element-ui\";\n\nexport default {\n name: 'CustomCascader',\n extends: Cascader,\n methods:{\n //Modify this internal function to disable Show all tags\n computePresentTags() {\n const { isDisabled, leafOnly, showAllLevels, separator, collapseTags } = this;\n const checkedNodes = this.getCheckedNodes(leafOnly);\n const tags = [];\n const genTag = node => ({\n node,\n key: node.uid,\n text: node.getText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled && !node.isDisabled\n });\n let customNodes = checkedNodes.filter(node =>\n {\n return !(node.getText(showAllLevels, separator).includes(\"Show all\"));\n }\n );\n if (customNodes.length) {\n const [first, ...rest] = customNodes;\n const restCount = rest.length;\n tags.push(genTag(first));\n if (restCount) {\n if (collapseTags) {\n tags.push({\n key: -1,\n text: `+ ${restCount}`,\n closable: false\n });\n } else {\n rest.forEach(node => tags.push(genTag(node)));\n }\n }\n }\n this.checkedNodes = checkedNodes;\n this.presentTags = tags;\n this.$emit(\"tags-changed\", this.presentTags);\n }\n }\n}\n\n</script>\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!./Cascader.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!./Cascader.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 () { injectStyles.call(this, this.$root.$options.shadowRoot) }\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 functioal 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","var render, staticRenderFns\nimport script from \"./Cascader.vue?vue&type=script&lang=js&\"\nexport * from \"./Cascader.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","export default {\n 'homo sapiens': 'Human',\n 'rattus norvegicus': 'Rat',\n 'mus musculus': 'Mouse',\n 'sus scrofa domesticus': 'Pig',\n 'sus scrofa': 'Boar',\n 'felis catus': 'Cat'\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* eslint-disable no-alert, no-console */\nimport algoliasearch from 'algoliasearch'\n\n// export `createAlgoliaClient` to use it in page components\nexport class AlgoliaClient {\n constructor(algoliaId, algoliaKey, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n this.client = algoliasearch(\n algoliaId,\n algoliaKey\n )\n this.PENNSIEVE_API_LOCATION = PENNSIEVE_API_LOCATION\n }\n initIndex(ALGOLIA_INDEX) {\n this.index = this.client.initIndex(ALGOLIA_INDEX);\n }\n\n getAlgoliaFacets (propPathMapping) {\n const map = new Map(Object.entries(propPathMapping));\n const facetPropPaths = Array.from(map.keys() );\n let facetData = []\n let facetId = 0\n return this.index\n .search('', {\n sortFacetValuesBy: 'alpha',\n facets: facetPropPaths\n })\n .then(response => {\n facetPropPaths.map((facetPropPath) => {\n var children = []\n const responseFacets = response.facets\n if (responseFacets === undefined) {return}\n const responseFacetChildren =\n responseFacets[facetPropPath] == undefined\n ? {}\n : responseFacets[facetPropPath]\n Object.keys(responseFacetChildren).map(facet => {\n children.push({\n label: facet,\n id: facetId++,\n facetPropPath: facetPropPath\n })\n })\n if (children.length > 0) {\n facetData.push({\n label: map.get(facetPropPath),\n id: facetId++,\n children: children,\n key: facetPropPath\n })\n }\n })\n return facetData\n })\n }\n \n // Returns all DOIs of all versions for a given discover dataset\n _discoverAllDois (discoverId, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n return new Promise(resolve => {\n fetch(`${PENNSIEVE_API_LOCATION}/discover/datasets/${discoverId}/versions`).then(r=>r.json()).then(dataset => {\n resolve(dataset.map(version => version.doi))\n })\n })\n }\n \n // Get all dois given a list of discoverIds\n _expandDois (discoverIds, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n return new Promise(resolve => {\n let promiseList = discoverIds.map(discoverId => this._discoverAllDois(discoverId, PENNSIEVE_API_LOCATION))\n Promise.all(promiseList).then((values) => {\n resolve(values.flat())\n });\n })\n }\n \n /**\n * Get Search results\n * This is using fetch from the Algolia API\n */\n search (filter, query='', hitsperPage=10, page=1) {\n return new Promise(resolve => {\n this.index\n .search(query, {\n facets:['*'],\n hitsPerPage: hitsperPage,\n page: page-1,\n filters: filter\n })\n .then(response => {\n let searchData = {\n items: response.hits,\n total: response.nbHits,\n discoverIds: response.hits.map(r=>r.pennsieve.identifier),\n dois: response.hits.map(r=>r.item.curie.split(':')[1])\n }\n resolve(searchData)\n })\n })\n }\n}\n","/* eslint-disable no-alert, no-console */\n\n// Mapping between display categories and their Algolia index property path\n// Used for populating the Dataset Search Results facet menu dynamically\nexport const facetPropPathMapping = {\n 'anatomy.organ.name' : 'Anatomical Structure',\n 'organisms.primary.species.name' : 'Species',\n 'item.modalities.keyword' : 'Experimental Approach',\n 'attributes.subject.sex.value' : 'Sex',\n 'attributes.subject.ageCategory.value' : 'Age Categories',\n}\n\n/* Returns filter for searching algolia. All facets of the same category are joined with OR,\n * and each of those results is then joined with an AND.\n * i.e. (color:blue OR color:red) AND (shape:circle OR shape:red) */\nexport function getFilters(selectedFacetArray=undefined) {\n \n // return all datasets if no filter\n if (selectedFacetArray === undefined) {\n return 'NOT item.published.status:embargo'\n }\n\n // Switch the 'term' attribute to 'label' if 'label' does not exist \n selectedFacetArray.forEach(f=>f.label=f.facet)\n \n\n let facets = removeShowAllFacets(selectedFacetArray)\n\n let filters = \"NOT item.published.status:embargo\";\n filters = `(${filters}) AND `;\n\n const facetPropPaths = Object.keys(facetPropPathMapping);\n facetPropPaths.map((facetPropPath) => {\n const facetsToOr = facets.filter(\n (facet) => facet.facetPropPath == facetPropPath\n );\n var filter = \"\";\n facetsToOr.map((facet) => {\n filter += `\"${facetPropPath}\":\"${facet.label}\" OR `;\n });\n if (filter == \"\") {\n return;\n }\n filter = `(${filter.substring(0, filter.lastIndexOf(\" OR \"))})`;\n filters += `${filter} AND `;\n });\n return filters.substring(0, filters.lastIndexOf(\" AND \"));\n}\n\nfunction removeShowAllFacets(facetArray){\n return facetArray.filter( f => f.label !== 'Show all')\n}","<template>\n <div class=\"filters\">\n <map-svg-sprite-color />\n <transition name=\"el-zoom-in-top\">\n <span v-show=\"showFilters\" class=\"search-filters transition-box\">\n <custom-cascader\n class=\"cascader\"\n ref=\"cascader\"\n v-model=\"cascadeSelected\"\n placeholder\n :collapse-tags=\"true\"\n :options=\"options\"\n :props=\"props\"\n @change=\"cascadeEvent($event)\"\n @expand-change=\"cascadeExpandChange\"\n :show-all-levels=\"false\"\n :append-to-body=\"false\"\n @tags-changed=\"tagsChangedCallback\"\n ></custom-cascader>\n <div v-if=\"showFiltersText\" class=\"filter-default-value\">\n Filters\n </div>\n <el-popover\n title=\"How do filters work?\"\n width=\"250\"\n trigger=\"hover\"\n :append-to-body=false\n popper-class=\"popover\"\n >\n <map-svg-icon slot=\"reference\" icon=\"help\" class=\"help\"/>\n <div >\n <strong>Within categories:</strong> OR \n <br/>\n example: 'heart' OR 'colon'\n <br/>\n <br/>\n <strong>Between categories:</strong> AND\n <br/>\n example: 'rat' AND 'lung'\n </div>\n </el-popover>\n \n </span>\n </transition>\n\n <el-select\n class=\"number-shown-select\"\n v-model=\"numberShown\"\n placeholder=\"10\"\n @change=\"numberShownChanged($event)\"\n >\n <el-option\n v-for=\"item in numberDatasetsShown\"\n :key=\"item\"\n :label=\"item\"\n :value=\"item\"\n ></el-option>\n </el-select>\n <span class=\"dataset-results-feedback\">{{ this.numberOfResultsText }}</span>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Option, Select, Popover } from \"element-ui\";\nimport CustomCascader from \"./Cascader\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport speciesMap from \"./species-map\";\nimport { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\n\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\nimport { facetPropPathMapping } from \"../algolia/utils.js\";\n\nlocale.use(lang);\nVue.use(Option);\nVue.use(Select);\nVue.use(Popover)\n\nconst capitalise = function (txt) {\n return txt.charAt(0).toUpperCase() + txt.slice(1);\n};\n\nconst convertReadableLabel = function (original) {\n const name = original.toLowerCase();\n if (speciesMap[name]) {\n return capitalise(speciesMap[name]);\n } else {\n return capitalise(name);\n }\n};\n\nexport default {\n name: \"SearchFilters\",\n components: {\n CustomCascader,\n MapSvgIcon,\n MapSvgSpriteColor,\n },\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n envVars: {\n type: Object,\n default: ()=>{}\n },\n },\n data: function () {\n return {\n cascaderIsReady: false,\n previousShowAllChecked: {\n species: false,\n gender: false,\n organ: false,\n datasets: false,\n },\n showFilters: true,\n showFiltersText: true,\n cascadeSelected: [],\n numberShown: 10,\n filters: [],\n facets: [\"Species\", \"Gender\", \"Organ\", \"Datasets\"],\n numberDatasetsShown: [\"10\", \"20\", \"50\"],\n props: { multiple: true },\n options: [\n {\n value: \"Species\",\n label: \"Species\",\n children: [{}],\n },\n ],\n };\n },\n computed: {\n numberOfResultsText: function () {\n return `${this.entry.numberOfHits} results | Showing`;\n },\n },\n methods: {\n createCascaderItemValue: function (term, facet) {\n if (facet) return term + \"/\" + facet;\n else return term;\n },\n populateCascader: function () {\n return new Promise((resolve) => {\n // Algolia facet serach\n this.algoliaClient.getAlgoliaFacets(facetPropPathMapping)\n .then((data) => {\n this.facets = data;\n this.options = data;\n\n // create top level of options in cascader\n this.options.forEach((facet, i) => {\n this.options[i].label = convertReadableLabel(facet.label);\n this.options[i].value = this.createCascaderItemValue(\n facet.key,\n undefined\n );\n\n // put \"Show all\" as first option\n this.options[i].children.unshift({\n value: this.createCascaderItemValue(\"Show all\"),\n label: \"Show all\",\n });\n\n // populate second level of options \n this.options[i].children.forEach((facetItem, j) => {\n this.options[i].children[j].label = convertReadableLabel(\n facetItem.label\n );\n this.options[i].children[j].value =\n this.createCascaderItemValue(facet.label, facetItem.label);\n });\n });\n this.createDataTypeFacet()\n })\n .finally(() => {\n resolve();\n });\n });\n },\n tagsChangedCallback: function (presentTags) {\n if (presentTags.length > 0) {\n this.showFiltersText = false;\n } else {\n this.showFiltersText = true;\n }\n },\n // cascadeEvent: initiate searches based off cascader changes\n cascadeEvent: function (event) {\n if (event) {\n // Check for show all in selected cascade options\n event = this.showAllEventModifier(event);\n\n // Create results for the filter update \n let filterKeys = event.filter( selection => selection !== undefined).map( fs => ({\n facetPropPath: fs[0], \n facet: fs[1].split(\"/\")[1],\n term: fs[1].split(\"/\")[0], \n }))\n\n // Move results from arrays to object for use on scicrunch (note that we remove 'duplicate' as that is only needed for filter keys)\n let filters = event.filter( selection => selection !== undefined).map( fs => {\n let propPath = fs[0].includes('duplicate') ? fs[0].split('duplicate')[0] : fs[0]\n return {\n facetPropPath: propPath, \n facet: fs[1].split(\"/\")[1],\n term: fs[1].split(\"/\")[0], \n }\n })\n\n\n this.$emit('loading', true) // let sidebarcontent wait for the requests\n\n this.$emit(\"filterResults\", filters); // emit filters for apps above sidebar\n this.setCascader(filterKeys); //update our cascader v-model if we modified the event\n this.makeCascadeLabelsClickable();\n }\n },\n // showAllEventModifier: Modifies a cascade event to unlick all selections in category if \"show all\" is clicked. Also unchecks \"Show all\" if any secection is clicked\n // *NOTE* Does NOT remove 'Show all' selections from showing in 'cascadeSelected'\n showAllEventModifier: function (event) {\n // check if show all is in the cascader checked option list\n let hasShowAll = event\n .map((ev) => (ev ? ev[1].toLowerCase().includes(\"show all\") : false))\n .includes(true);\n // remove all selected options below the show all if checked\n if (hasShowAll) {\n let modifiedEvent = [];\n let facetMaps = {};\n //catagorised different facet items\n for (const i in event) {\n if (facetMaps[event[i][0]] === undefined) facetMaps[event[i][0]] = [];\n facetMaps[event[i][0]].push(event[i]);\n }\n // go through each facets\n for (const facet in facetMaps) {\n let showAll = undefined;\n // Find the show all item if any\n for (let i = facetMaps[facet].length - 1; i >= 0; i--) {\n if (facetMaps[facet][i][1].toLowerCase().includes(\"show all\")) {\n //seperate the showAll item and the rest\n showAll = facetMaps[facet].splice(i, 1)[0];\n break;\n }\n }\n if (showAll) {\n if (this.previousShowAllChecked[facet]) {\n //Unset the show all if it was present previously\n //and there are other items\n if (facetMaps[facet].length > 0)\n modifiedEvent.push(...facetMaps[facet]);\n else modifiedEvent.push(showAll);\n } else {\n //showAll is turned on\n modifiedEvent.push(showAll);\n }\n } else {\n modifiedEvent.push(...facetMaps[facet]);\n }\n }\n //Make sure the expanded item are sorted first.\n return modifiedEvent.sort((a, b) => {\n if (this.__expandItem__) {\n if (a[0] == this.__expandItem__) {\n if (b[0] == this.__expandItem__) {\n return 0;\n } else {\n return -1;\n }\n } else if (b[0] == this.__expandItem__) {\n if (a[0] == this.__expandItem__) {\n return 0;\n } else {\n return 1;\n }\n } else {\n return 0;\n }\n } else return 0;\n });\n }\n return event;\n },\n createDataTypeFacet: function(){\n let dataFacet = {...this.facets[2]} // copy the 'Experiemental approach' facet\n let count = this.facets.at(-1).id // get the last id count\n\n // Step through the children that are valid data types, switch thier values \n let newChildren = dataFacet.children.filter( el=> {\n if (el.label === 'Scaffold' || el.label === 'Simulation' || el.label === 'Show all'){\n el.key = el.label\n el.id = count\n el.value = el.value.replace('Experimental approach', 'Data type')\n count++\n return el\n }\n })\n dataFacet.id = count\n dataFacet.key = 'Data type'\n // Add 'duplicate' so that the key is unique. This is removed in the cascade event for filtering\n dataFacet.value += 'duplicate' \n dataFacet.children = newChildren\n dataFacet.label = 'Data type'\n this.facets.push(dataFacet)\n },\n cascadeExpandChange: function (event) {\n //work around as the expand item may change on modifying the cascade props\n this.__expandItem__ = event;\n this.makeCascadeLabelsClickable();\n },\n numberShownChanged: function (event) {\n this.$emit(\"numberPerPage\", parseInt(event));\n },\n updatePreviousShowAllChecked: function (options) {\n //Reset the states\n for (const facet in this.previousShowAllChecked) {\n this.previousShowAllChecked[facet] = false;\n }\n options.forEach((element) => {\n if (element[1].toLowerCase().includes(\"show all\"))\n this.previousShowAllChecked[element[0]] = true;\n });\n },\n // setCascader: Clears previous selections and takes in an array of facets to select: filterFacets\n // facets are in the form:\n // {\n // facetPropPath: 'anatomy.organ.name',\n // term: 'Sex',\n // facet: 'Male'\n // }\n setCascader: function (filterFacets) {\n //Do not set the value unless it is ready\n if (this.cascaderIsReady && filterFacets && filterFacets.length != 0) {\n this.cascadeSelected = filterFacets.map(e => {\n return [\n e.facetPropPath,\n this.createCascaderItemValue(capitalise(e.term), e.facet),\n ]\n });\n this.updatePreviousShowAllChecked(this.cascadeSelected);\n }\n },\n addFilter: function (filter) {\n //Do not set the value unless it is ready\n if (this.cascaderIsReady && filter) {\n this.cascadeSelected.filter(f=>f.term != filter.term)\n this.cascadeSelected.push([filter.facetPropPath, this.createCascaderItemValue(filter.term, filter.facet)])\n }\n },\n initiateSearch: function() {\n this.cascadeEvent(this.cascadeSelected)\n },\n // checkShowAllBoxes: Checks each 'Show all' cascade option by using the setCascader function\n checkShowAllBoxes: function(){\n this.setCascader(\n this.options.map(option => {\n return {\n facetPropPath: option.value,\n term: option.label,\n facet: 'Show all'\n }\n })\n )\n },\n makeCascadeLabelsClickable: function () {\n // Next tick allows the cascader menu to change\n this.$nextTick(() => {\n this.$refs.cascader.$el\n .querySelectorAll(\".el-cascader-node__label\")\n .forEach((el) => {\n // step through each cascade label\n el.onclick = function () {\n const checkbox = this.previousElementSibling;\n if (checkbox) {\n if (!checkbox.parentElement.attributes[\"aria-owns\"]) {\n // check if we are at the lowest level of cascader\n this.previousElementSibling.click(); // Click the checkbox\n }\n }\n };\n });\n });\n },\n },\n mounted: function () {\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\n this.populateCascader().then(() => {\n this.cascaderIsReady = true;\n this.checkShowAllBoxes()\n this.setCascader(this.entry.filterFacets);\n this.makeCascadeLabelsClickable();\n });\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.filter-default-value {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n padding-top: 10px;\n padding-left: 16px;\n}\n\n.help {\n width: 24px !important;\n height: 24px;\n transform: scale(1.1);\n color: #8300bf;\n cursor: pointer;\n}\n\n.popover {\n color: rgb(48, 49, 51);\n font-family: Asap;\n margin: 12px;\n}\n\n.filter-icon-inside {\n width: 12px !important;\n height: 12px !important;\n color: #292b66;\n transform: scale(2) !important;\n margin-bottom: 0px !important;\n}\n\n.cascader {\n font-family: Asap;\n font-size: 14px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #292b66;\n text-align: center;\n padding-bottom: 6px;\n}\n\n.cascader >>> .el-cascder-panel {\n max-height: 500px;\n}\n\n.cascader >>> .el-scrollbar__wrap {\n overflow-x: hidden;\n margin-bottom: 2px !important;\n}\n\n.cascader >>> li[aria-owns*=\"cascader\"] > .el-checkbox {\n display: none;\n}\n\n.dataset-results-feedback {\n float: right;\n text-align: right;\n color: rgb(48, 49, 51);\n font-family: Asap;\n font-size: 18px;\n font-weight: 500;\n padding-top: 8px;\n}\n\n.search-filters {\n position: relative;\n float: left;\n padding-right: 15px;\n padding-bottom: 12px;\n}\n\n.number-shown-select {\n float: right;\n}\n\n.number-shown-select >>> .el-input__inner {\n width: 68px;\n height: 40px;\n color: rgb(48, 49, 51);\n}\n\n.search-filters >>> .el-cascader-node.is-active {\n color: #8300bf;\n}\n\n.search-filters >>> .el-cascader-node.in-active-path {\n color: #8300bf;\n}\n\n.search-filters >>> .el-checkbox__input.is-checked > .el-checkbox__inner {\n background-color: #8300bf;\n border-color: #8300bf;\n}\n\n.cascader >>> .el-cascader-menu:nth-child(2) .el-cascader-node:first-child {\n border-bottom: 1px solid #e4e7ed;\n}\n\n.cascader >>> .el-cascader-node__label {\n text-align: left;\n}\n\n.filters >>> .el-popover {\n background: #f3ecf6 !important;\n border: 1px solid #8300BF;\n border-radius: 4px;\n color: #303133 !important;\n font-size: 12px;\n line-height: 18px;\n \n \n}\n\n.filters >>> .el-popover[x-placement^=\"top\"] .popper__arrow {\n border-top-color: #8300BF;\n border-bottom-width: 0;\n}\n.filters >>> .el-popover[x-placement^=\"top\"] .popper__arrow::after {\n border-top-color: #f3ecf6;\n border-bottom-width: 0;\n}\n\n.filters >>> .el-popover[x-placement^=\"bottom\"] .popper__arrow {\n border-top-width: 0;\n border-bottom-color: #8300BF;\n}\n.filters >>> .el-popover[x-placement^=\"bottom\"] .popper__arrow::after {\n border-top-width: 0;\n border-bottom-color: #f3ecf6;\n}\n\n.filters >>> .el-popover[x-placement^=\"right\"] .popper__arrow {\n border-right-color: #8300BF;\n border-left-width: 0;\n}\n.filters >>> .el-popover[x-placement^=\"right\"] .popper__arrow::after {\n border-right-color: #f3ecf6;\n border-left-width: 0;\n}\n\n.filters >>> .el-popover[x-placement^=\"left\"] .popper__arrow {\n border-right-width: 0;\n border-left-color: #8300BF;\n}\n.filters >>> .el-popover[x-placement^=\"left\"] .popper__arrow::after {\n border-right-width: 0;\n border-left-color: #f3ecf6;\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!./SearchFilters.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!./SearchFilters.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchFilters.vue?vue&type=template&id=57801ec0&scoped=true&\"\nimport script from \"./SearchFilters.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchFilters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchFilters.vue?vue&type=style&index=0&id=57801ec0&scoped=true&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 \"57801ec0\",\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',{ref:\"container\",staticClass:\"dataset-card-container\"},[_c('div',{ref:\"card\",class:_vm.expanded ? 'dataset-card-expanded' : 'dataset-card'},[_c('div',{staticClass:\"seperator-path\"}),_c('div',{staticClass:\"card\"},[_c('span',{staticClass:\"card-left\"},[(_vm.dataIsReady)?_c('image-gallery',{attrs:{\"datasetId\":_vm.discoverId,\"datasetVersion\":_vm.version,\"envVars\":_vm.envVars,\"images\":_vm.entry.images,\"scaffolds\":_vm.entry.scaffolds,\"scaffoldViews\":_vm.entry.scaffoldViews,\"segmentations\":_vm.entry.segmentation,\"additionalLinks\":_vm.simulationLinks,\"videos\":_vm.entry.videos,\"thumbnails\":_vm.entry.thumbnails,\"label\":_vm.label,\"datasetThumbnail\":_vm.thumbnail},on:{\"card-clicked\":_vm.galleryClicked}}):_vm._e()],1),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\",on:{\"click\":_vm.cardClicked}},[_vm._v(_vm._s(_vm.entry.name))]),_c('div',{staticClass:\"details\"},[_vm._v(_vm._s(_vm.contributors)+\" \"+_vm._s(_vm.entry.publishDate ? (\"(\" + _vm.publishYear + \")\") : ''))]),_c('div',{staticClass:\"details\"},[_vm._v(_vm._s(_vm.samples))]),_c('div',{staticClass:\"details\"},[_vm._v(\"id: \"+_vm._s(_vm.discoverId))]),_c('div',[(_vm.entry.simulation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openRepository}},[_vm._v(\"View repository\")]):_vm._e()],1)])]),((_vm.cardOverflow && !_vm.expanded))?_c('p',{staticClass:\"read-more\"},[_c('el-button',{staticClass:\"read-more-button\",on:{\"click\":_vm.expand}},[_vm._v(\"Read more...\")])],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nconst EventBus = new Vue();\nexport default EventBus;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"full-size\"},[_c('gallery',{attrs:{\"bottomSpacer\":_vm.bottomSpacer,\"cardWidth\":10,\"items\":_vm.galleryItems,\"max-width\":_vm.maxWidth,\"show-indicator-bar\":true,\"show-card-details\":true,\"highlight-active\":false,\"image-style\":_vm.imageStyle,\"image-container-style\":_vm.imageContainerStyle,\"body-style\":_vm.bodyStyle,\"shadow\":_vm.shadow},on:{\"card-clicked\":_vm.cardClicked}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"full-size\">\n <gallery\n :bottomSpacer=\"bottomSpacer\"\n :cardWidth=\"10\"\n :items=\"galleryItems\"\n :max-width=\"maxWidth\"\n :show-indicator-bar=\"true\"\n :show-card-details=\"true\"\n :highlight-active=\"false\"\n :image-style=\"imageStyle\"\n :image-container-style=\"imageContainerStyle\"\n :body-style=\"bodyStyle\"\n :shadow=\"shadow\"\n @card-clicked=\"cardClicked\"\n />\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nconst baseName = (str) => {\n return str.split(\"\\\\\").pop().split(\"/\").pop();\n};\n\nconst capitalise = function (string) {\n return string.replace(/\\b\\w/g, (v) => v.toUpperCase());\n};\n\nimport GalleryHelper from \"@abi-software/gallery/src/mixins/GalleryHelpers\";\nimport Gallery from \"@abi-software/gallery\";\n\nexport default {\n name: \"ImageGallery\",\n components: { Gallery },\n mixins: [GalleryHelper],\n props: {\n datasetScicrunch: {\n type: Object,\n default: () => {\n return {};\n },\n },\n datasetBiolucida: {\n type: Object,\n default: () => {\n return {};\n },\n },\n envVars: {\n type: Object,\n default: () => {},\n },\n label: {\n type: String,\n default: \"\",\n },\n images: {\n type: Array,\n default: () => {\n return [];\n },\n },\n plots: {\n type: Array,\n default: () => {\n return [];\n },\n },\n scaffolds: {\n type: Array,\n default: () => {\n return [];\n },\n },\n scaffoldViews: {\n type: Array,\n default: () => {\n return [];\n },\n },\n segmentations: {\n type: Array,\n default: () => {\n return [];\n },\n },\n additionalLinks: {\n type: Array,\n default: () => {\n return [];\n },\n },\n thumbnails: {\n type: Array,\n default: () => {\n return [];\n },\n },\n videos: {\n type: Array,\n default: () => {\n return [];\n },\n },\n datasetId: {\n type: Number,\n default: -1,\n },\n datasetVersion: {\n type: Number,\n default: -1,\n },\n datasetThumbnail: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n currentIndex: 0,\n ro: null,\n maxWidth: 3,\n scicrunchItems: [],\n biolucidaItems: [],\n bodyStyle: { padding: '0px', background: '#ffffff' },\n imageContainerStyle: { width: '160px', height: '160px'},\n imageStyle: { maxWidth: '160px', maxHeight: '160px'},\n shadow: \"never\",\n bottomSpacer: { minHeight: '1.5rem' },\n };\n },\n methods: {\n cardClicked: function(payload) {\n this.$emit('card-clicked', payload);\n },\n createSciCurnchItems: function () {\n this.createDatasetItem();\n this.createScaffoldItems();\n this.createSimulationItems();\n this.createPlotItems();\n this.createSegmentationItems();\n this.createImageItems();\n this.createVideoItems();\n },\n createDatasetItem: function () {\n const link = `${this.envVars.ROOT_URL}/datasets/${this.datasetId}?type=dataset`\n if (this.datasetThumbnail) {\n this.scicrunchItems.push({\n id: -1,\n title: link,\n type: `Dataset ${this.datasetId}`,\n thumbnail: this.datasetThumbnail,\n link,\n });\n }\n },\n createImageItems: function () {\n if (this.images) {\n this.images.forEach((image) => {\n const filePath = image.dataset.path;\n const id = image.identifier;\n const linkUrl = `${this.envVars.ROOT_URL}/datasets/imageviewer?dataset_id=${this.datasetId}&dataset_version=${this.datasetVersion}&file_path=${filePath}&mimetype=${image.mimetype.name}`;\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Image\",\n thumbnail: this.defaultImg,\n link: linkUrl,\n });\n });\n }\n },\n createPlotItems: function () {\n if (this.plots) {\n this.plots.forEach((plot) => {\n const filePath = plot.dataset.path;\n const id = plot.identifier;\n const thumbnail = this.getThumbnailForPlot(plot, this.thumbnails);\n let thumbnailURL = undefined;\n let mimetype = '';\n if (thumbnail) {\n thumbnailURL = this.getImageURLFromS3(this.envVars.API_LOCATION, {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n file_path: thumbnail.dataset.path,\n });\n mimetype = thumbnail.mimetype.name;\n }\n let action = {\n label: capitalise(this.label),\n resource: `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${filePath}`,\n title: \"View plot\",\n type: \"Plot\",\n discoverId: this.discoverId,\n version: this.datasetVersion,\n };\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Plot\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype\n });\n });\n }\n },\n createScaffoldItems: function () {\n if (this.scaffolds) {\n let index = 0;\n this.scaffolds.forEach((scaffold) => {\n const filePath = scaffold.dataset.path;\n const id = scaffold.identifier;\n const thumbnail = this.getThumbnailForScaffold(\n scaffold,\n this.scaffoldViews,\n this.thumbnails,\n index\n );\n let mimetype = '';\n let thumbnailURL = undefined;\n if (thumbnail) {\n thumbnailURL = this.getImageURLFromS3(this.envVars.API_LOCATION, {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n file_path: thumbnail.dataset.path,\n });\n mimetype = thumbnail.mimetype.name;\n }\n let action = {\n label: capitalise(this.label),\n resource: `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${filePath}`,\n title: \"View 3D scaffold\",\n type: \"Scaffold\",\n discoverId: this.datasetId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.datasetVersion,\n };\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Scaffold\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype\n });\n });\n }\n },\n createSegmentationItems: function () {\n if (this.segmentations) {\n this.segmentations.forEach((segmentation) => {\n const id = segmentation.id;\n let filePath = segmentation.dataset.path;\n filePath = filePath.replaceAll(\" \", \"_\");\n filePath = filePath.replaceAll(\",\", \"_\");\n const prefix = this.envVars.NL_LINK_PREFIX;\n const resource = {\n share_link: `${prefix}/dataviewer?datasetId=${this.datasetId}&version=${this.datasetVersion}&path=${filePath}`,\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n datasetId: this.datasetId,\n title: \"View segmentation\",\n type: \"Segmentation\",\n };\n const thumbnailURL = this.getSegmentationThumbnailURL(\n this.envVars.API_LOCATION,\n {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n segmentationFilePath: filePath,\n }\n );\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Segmentation\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype: 'image/png',\n });\n });\n }\n },\n createSimulationItems: function () {\n let isSedmlResource = false;\n let resource = undefined;\n if (this.additionalLinks) {\n this.additionalLinks.forEach(function(el) {\n if (el.description == \"SED-ML file\") {\n isSedmlResource = true;\n resource = el.uri;\n } else if (!isSedmlResource && (el.description == \"CellML file\")) {\n resource = el.uri;\n }\n });\n if (resource) {\n let action = {\n label: undefined,\n resource: resource,\n apiLocation: this.envVars.API_LOCATION,\n version: this.datasetVersion,\n title: \"View simulation\",\n type: \"Simulation\"\n };\n this.scicrunchItems.push({\n id: \"simulation\",\n title: resource,\n type: \"Simulation\",\n userData: action,\n });\n }\n }\n },\n createVideoItems: function () {\n if (this.videos) {\n this.videos.forEach((video) => {\n const filePath = this.getS3FilePath(\n this.datasetId,\n this.datasetVersion,\n video.dataset.path\n );\n const linkUrl = `${this.envVars.ROOT_URL}/datasets/videoviewer?dataset_version=${this.datasetVersion}&dataset_id=${this.datasetId}&file_path=${filePath}&mimetype=${video.mimetype.name}`;\n this.scicrunchItems.push({\n title: video.name,\n type: \"Video\",\n thumbnail: this.defaultVideoImg,\n link: linkUrl,\n });\n });\n }\n },\n onResize: function () {\n this.maxWidth = this.$el.clientWidth;\n // this.$emit('resize', this.$el.clientWidth)\n },\n },\n computed: {\n galleryItems() {\n return this.scicrunchItems.concat(this.biolucidaItems);\n },\n },\n created: function () {\n this.createSciCurnchItems();\n },\n watch: {\n datasetBiolucida: {\n deep: true,\n immediate: true,\n handler: function (biolucidaData) {\n let items = [];\n if (\"dataset_images\" in biolucidaData) {\n items.push(\n ...Array.from(biolucidaData.dataset_images, (dataset_image) => {\n const thumbnailURL = this.getThumbnailURLFromBiolucida(\n this.envVars.API_LOCATION,\n {\n id: dataset_image.image_id,\n }\n );\n this.getImageInfoFromBiolucida(\n this.envVars.API_LOCATION,\n items,\n {\n id: dataset_image.image_id,\n fetchAttempts: 0,\n }\n );\n const resource = {\n share_link: dataset_image.share_link,\n id: dataset_image.image_id,\n itemId: dataset_image.sourcepkg_id,\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n datasetId: this.datasetId,\n title: \"View image\",\n name: capitalise(this.label),\n type: \"Biolucida\",\n };\n return {\n id: dataset_image.image_id,\n title: null,\n type: \"Image\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype: 'image/png'\n };\n })\n );\n }\n this.biolucidaItems = items;\n },\n },\n },\n mounted() {\n this.ro = new ResizeObserver(this.onResize).observe(this.$el);\n },\n destroyed() {\n delete this.ro;\n },\n};\n</script>\n\n<style scoped>\n.full-size {\n height: 100%;\n width: 244px;\n}\n\n.key-image-span.active {\n transform: scale(1.16);\n border: 4px #8300bf solid;\n}\n\n.key-image-span {\n display: flex;\n position: relative;\n}\n\n.overlay {\n position: absolute;\n right: 5px;\n top: 5px;\n width: 1.61em;\n height: 1em;\n border-radius: 3px;\n opacity: 0.8;\n}\n\nimg {\n vertical-align: bottom;\n}\n\na.prev,\na.next {\n display: flex;\n font-size: 3em;\n}\n\na.prev:not(.underline),\na.next:not(.underline) {\n text-decoration: none;\n}\n\na.prev {\n justify-content: flex-start;\n}\n\na.next {\n justify-content: flex-end;\n}\n\n.standard-gallery {\n display: flex;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n\n.image-line {\n display: flex;\n margin-top: 1%;\n margin-bottom: 1%;\n flex-grow: 1;\n justify-content: space-between;\n}\n.disabled {\n opacity: 0.2;\n cursor: default;\n}\n\n.rectangle {\n height: 1em;\n width: 2em;\n border-radius: 3px;\n background-color: #555;\n}\n\n.full-size >>> .el-card {\n border: 0px;\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!./ImageGallery.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!./ImageGallery.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageGallery.vue?vue&type=template&id=51b6af52&scoped=true&\"\nimport script from \"./ImageGallery.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageGallery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageGallery.vue?vue&type=style&index=0&id=51b6af52&scoped=true&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 \"51b6af52\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"dataset-card-container\" ref=\"container\">\n <div v-bind:class=\" expanded ? 'dataset-card-expanded' : 'dataset-card'\" ref=\"card\">\n <!-- The seperator-path css is set on SidebarContent.vue -->\n <div class=\"seperator-path\"></div>\n <div class=\"card\" >\n <span class=\"card-left\">\n <!--\n <img svg-inline class=\"banner-img\" :src=\"thumbnail\" @click=\"openDataset\"/>\n -->\n <image-gallery v-if=\"dataIsReady\" \n :datasetId=\"discoverId\"\n :datasetVersion=\"version\"\n :envVars=\"envVars\"\n :images=\"entry.images\"\n :scaffolds=\"entry.scaffolds\"\n :scaffoldViews=\"entry.scaffoldViews\"\n :segmentations=\"entry.segmentation\"\n :additionalLinks=\"simulationLinks\"\n :videos=\"entry.videos\"\n :thumbnails=\"entry.thumbnails\"\n :label=\"label\"\n :datasetThumbnail=\"thumbnail\"\n @card-clicked=\"galleryClicked\"/>\n </span>\n <div class=\"card-right\" >\n <div class=\"title\" @click=\"cardClicked\">{{entry.name}}</div>\n <div class=\"details\">{{contributors}} {{entry.publishDate ? `(${publishYear})` : ''}}</div>\n <div class=\"details\">{{samples}}</div>\n <div class=\"details\">id: {{discoverId}}</div>\n <!--\n <div>\n <el-button v-if=\"!entry.simulation\" @click=\"openDataset\" size=\"mini\" class=\"button\" icon=\"el-icon-coin\">View dataset</el-button>\n </div>\n <div>\n <el-button v-if=\"entry.scaffolds\" @click=\"openScaffold\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View scaffold</el-button>\n </div>\n -->\n <!--\n <div>\n <el-button v-if=\"hasCSVFile\" @click=\"openPlot\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View plot</el-button>\n </div>\n -->\n <div>\n <el-button v-if=\"entry.simulation\" @click=\"openRepository\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View repository</el-button>\n </div>\n <!--\n <div>\n <el-button v-if=\"entry.simulation\" @click=\"openSimulation\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View simulation</el-button>\n </div>\n -->\n <!--\n <div>\n <el-button v-if=\"entry.segmentation\" @click=\"openSegmentation\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View segmentation</el-button>\n </div>\n <div>\n <el-button v-if=\"biolucidaData\" @click=\"openImage\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View image</el-button>\n </div>\n -->\n </div>\n\n </div>\n <p v-if=\"(cardOverflow && !expanded)\" class=\"read-more\"><el-button @click=\"expand\" class=\"read-more-button\">Read more...</el-button></p>\n </div>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Button, Icon } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport EventBus from \"./EventBus\"\nimport speciesMap from \"./species-map\";\nimport ImageGallery from \"./ImageGallery.vue\";\n\nlocale.use(lang);\nVue.use(Button);\nVue.use(Icon);\n\nconst capitalise = function(string){\n return string.replace(/\\b\\w/g, v => v.toUpperCase());\n}\n\nexport default {\n name: \"DatasetCard\",\n components: { ImageGallery },\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n envVars: {\n type: Object,\n default: () => {}\n },\n },\n data: function () {\n return {\n dataIsReady: false,\n thumbnail: require('@/../assets/missing-image.svg'),\n dataLocation: this.entry.doi,\n discoverId: undefined,\n cardOverflow: false,\n expanded: false,\n biolucidaData: undefined\n };\n },\n computed: {\n contributors: function() {\n let text = \"\";\n if (this.entry.contributors) {\n if (this.entry.contributors.length === 1) {\n text = this.lastName(this.entry.contributors[0].name);\n } else if (this.entry.contributors.length === 2) {\n text = this.lastName(this.entry.contributors[0].name) + \" & \" + this.lastName(this.entry.contributors[1].name);\n } else if (this.entry.contributors.length > 2) {\n text = this.lastName(this.entry.contributors[0].name) + \" et al.\";\n }\n }\n return text;\n },\n samples: function() {\n let text = \"\";\n if (this.entry.species) {\n if (speciesMap[this.entry.species[0].toLowerCase()]){\n text = `${speciesMap[this.entry.species[0].toLowerCase()]}`;\n } else {\n text = `${this.entry.species}`;\n }\n }\n if (this.entry.numberSamples > 0) {\n text += \" (\";\n if (this.entry.numberSamples === 1) {\n text += `${this.entry.numberSamples} sample`;\n } else if (this.entry.numberSamples > 1) {\n text += `${this.entry.numberSamples} samples`;\n }\n if (this.entry.numberSubjects === 1) {\n text += ` from ${this.entry.numberSubjects} subject`;\n } else if (this.entry.numberSamples > 1) {\n text += ` from ${this.entry.numberSubjects} subjects`;\n }\n text += \")\";\n }\n\n return text;\n },\n simulationLinks: function() {\n if (this.entry.additionalLinks) {\n if (typeof this.entry.additionalLinks != \"boolean\")\n return this.entry.additionalLinks;\n }\n return [];\n },\n label: function(){\n return this.entry.organs ? this.entry.organs[0] : this.entry.name\n },\n publishYear: function() {\n return this.entry.publishDate.split('-')[0]\n }\n },\n methods: {\n cardClicked: function(){\n if(this.entry.scaffolds){\n this.openScaffold()\n }else{\n this.openDataset()\n }\n },\n galleryClicked: function(payload) {\n this.propogateCardAction(payload)\n },\n openScaffold: function(){\n let action = {\n label: capitalise(this.label),\n resource: this.getScaffoldPath(this.discoverId, this.version, this.entry.scaffolds[0].dataset.path),\n title: \"View 3D scaffold\",\n type: \"Scaffold\",\n discoverId: this.discoverId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail\n }\n this.propogateCardAction(action)\n },\n openPlot: function(){\n let action = {\n label: capitalise(this.label),\n resource: this.getFileFromPath(this.discoverId, this.version, this.entry.csvFiles[0].dataset.path),\n title: \"View plot\",\n type: \"Plot\",\n discoverId: this.discoverId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail\n }\n this.propogateCardAction(action)\n },\n openDataset: function(){\n window.open(this.dataLocation,'_blank');\n },\n openRepository: function() {\n let apiLocation = this.envVars.API_LOCATION;\n this.entry.additionalLinks.forEach(function(el) {\n if (el.description == \"Repository\") {\n let xmlhttp = new XMLHttpRequest();\n xmlhttp.open(\"POST\", apiLocation + \"/pmr_latest_exposure\", true);\n xmlhttp.setRequestHeader(\"Content-type\", \"application/json\");\n xmlhttp.onreadystatechange = () => {\n if (xmlhttp.readyState === 4) {\n let url = \"\";\n if (xmlhttp.status === 200) {\n url = JSON.parse(xmlhttp.responseText)[\"url\"];\n }\n if (url === \"\") {\n url = el.uri;\n }\n window.open(url,'_blank');\n }\n };\n xmlhttp.send(JSON.stringify({workspace_url: el.uri}));\n }\n });\n },\n openSimulation: function() {\n let isSedmlResource = false;\n let resource = undefined;\n this.entry.additionalLinks.forEach(function(el) {\n if (el.description == \"SED-ML file\") {\n isSedmlResource = true;\n resource = el.uri;\n } else if (!isSedmlResource && (el.description == \"CellML file\")) {\n resource = el.uri;\n }\n });\n let action = {\n label: undefined,\n resource: resource,\n dataset: this.dataLocation,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail,\n title: \"View simulation\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Simulation\"\n }\n EventBus.$emit(\"PopoverActionClick\", action)\n },\n openSegmentation: function() {\n if (this.entry.segmentation && this.entry.segmentation[0]) {\n const segmentation = this.entry.segmentation[0];\n const filePath = segmentation.dataset.path;\n const datasetId = this.discoverId;\n const datasetVersion = this.version;\n const prefix = this.envVars.NL_LINK_PREFIX;\n const resource = {\n share_link: `${prefix}/dataviewer?datasetId=${datasetId}&version=${datasetVersion}&path=${filePath}`\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n dataset: this.dataLocation,\n datasetId: this.discoverId,\n title: \"View segmentation\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Segmentation\"\n };\n EventBus.$emit(\"PopoverActionClick\", action);\n }\n },\n openImage: function() {\n if (this.biolucidaData) {\n const biolucidaData = this.biolucidaData;\n if ('dataset_images' in biolucidaData) {\n const image = biolucidaData['dataset_images'][0];\n const resource = {\n share_link: image.share_link,\n id: image.image_id,\n itemId: image.sourcepkg_id\n }\n let action = {\n label: capitalise(this.label),\n resource: resource,\n dataset: this.dataLocation,\n datasetId: this.discoverId,\n title: \"View image\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Biolucida\"\n };\n EventBus.$emit(\"PopoverActionClick\", action);\n }\n }\n },\n propogateCardAction: function(action){\n EventBus.$emit(\"PopoverActionClick\", action)\n if (action.contextCardUrl) {\n this.$emit('contextUpdate', action)\n }\n },\n getScaffoldPath: function(discoverId, version, scaffoldPath){\n let id = discoverId\n let path = `${this.envVars.API_LOCATION}s3-resource/${id}/${version}/files/${scaffoldPath}`\n return path\n },\n getFileFromPath: function(discoverId, version, path){\n return `${this.envVars.API_LOCATION}s3-resource/${discoverId}/${version}/files/${path}`\n },\n isOverflown: function(el){\n return el.clientHeight < el.scrollHeight\n },\n expand: function() {\n this.expanded = true\n },\n splitDOI: function(doi){\n return [doi.split('/')[doi.split('/').length-2], doi.split('/')[doi.split('/').length-1]]\n },\n getBanner: function () {\n let doi = this.splitDOI(this.entry.doi)\n fetch(`${this.envVars.PENNSIEVE_API_LOCATION}/discover/datasets/doi/${doi[0]}/${doi[1]}`)\n .then((response) =>{\n if (!response.ok){\n throw Error(response.statusText)\n } else {\n return response.json()\n }\n })\n .then((data) => {\n this.thumbnail = data.banner\n this.discoverId = data.id\n this.version = data.version\n this.dataLocation = `https://sparc.science/datasets/${data.id}?type=dataset`\n this.getBiolucidaInfo(this.discoverId)\n this.dataIsReady = true\n })\n .catch(() => {\n //set defaults if we hit an error\n this.thumbnail = require('@/../assets/missing-image.svg')\n this.discoverId = undefined\n });\n },\n lastName: function(fullName){\n return fullName.split(',')[0]\n },\n getBiolucidaInfo: function(id) {\n let apiLocation = this.envVars.API_LOCATION;\n let endpoint = apiLocation + \"image_search/\" + id;\n // Add parameters if we are sent them\n fetch(endpoint)\n .then(response => response.json())\n .then(data => {\n if (data.status == \"success\")\n this.biolucidaData = data;\n });\n }\n },\n created: function() {\n this.getBanner()\n },\n mounted: function(){\n this.cardOverflow = this.isOverflown(this.$refs.card)\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.dataset-card {\n padding-left: 16px;\n position: relative;\n}\n\n.title {\n padding-bottom: 5px;\n font-family: Asap;\n font-size: 14px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 1.05px;\n color: #484848;\n cursor: pointer;\n}\n.card {\n padding-top: 18px;\n position: relative;\n display: flex;\n}\n\n.card-left{\n flex: 1\n}\n\n.card-right {\n flex: 1.3;\n padding-left: 6px;\n}\n\n.dataset-card .read-more {\n position: absolute;\n z-index: 9;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 20px;\n margin: 0; padding: 20px 66px;\n /* \"transparent\" only works here because == rgba(0,0,0,0) */\n background-image: linear-gradient(to bottom, transparent, white);\n pointer-events: none;\n}\n\n.read-more-button{\n width: 85px;\n height: 20px;\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #8300bf;\n padding: 0px;\n pointer-events: all;\n cursor: pointer;\n}\n\n.button{\n z-index: 10;\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n background-color: #8300bf;\n border: #8300bf;\n color: white;\n cursor: pointer;\n margin-top: 8px;\n}\n\n.button:hover {\n background-color: #8300bf;\n color: white;\n}\n\n.banner-img {\n width: 128px;\n height: 128px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);\n background-color: #ffffff;\n cursor: pointer;\n}\n.details{\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 1.05px;\n color: #484848;\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!./DatasetCard.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!./DatasetCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DatasetCard.vue?vue&type=template&id=5144815c&scoped=true&\"\nimport script from \"./DatasetCard.vue?vue&type=script&lang=js&\"\nexport * from \"./DatasetCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DatasetCard.vue?vue&type=style&index=0&id=5144815c&scoped=true&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 \"5144815c\",\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',{ref:\"container\",staticClass:\"context-card-container\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showContextCard),expression:\"showContextCard\"}]},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDetails),expression:\"showDetails\"}],staticClass:\"hide\",on:{\"click\":function($event){_vm.showDetails = !_vm.showDetails}}},[_vm._v(\"Hide information\"),_c('i',{staticClass:\"el-icon-arrow-up\"})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showDetails),expression:\"!showDetails\"}],staticClass:\"hide\",on:{\"click\":function($event){_vm.showDetails = !_vm.showDetails}}},[_vm._v(\"Show information\"),_c('i',{staticClass:\"el-icon-arrow-down\"})]),(_vm.showDetails && Object.keys(_vm.contextData).length !== 0)?_c('el-card',{staticClass:\"context-card card\"},[_c('img',{staticClass:\"context-image card-left\",attrs:{\"src\":_vm.entry.banner}}),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.contextData.heading))]),_c('div',[_vm._v(_vm._s(_vm.contextData.description))]),_vm._l((_vm.contextData.views),function(view,i){return [_c('br',{key:i}),_c('span',{key:i+'_1',staticClass:\"scaffold-view\",on:{\"click\":function($event){return _vm.openViewFile(view)}}},[_c('img',{attrs:{\"src\":_vm.getFileFromPath(view.thumbnail)}}),_vm._v(\" \"+_vm._s(view.description))])]})],2)]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"context-card-container\" ref=\"container\">\n <div v-show=\"showContextCard\">\n <div v-show=\"showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Hide information<i class=\"el-icon-arrow-up\"></i></div>\n <div v-show=\"!showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Show information<i class=\"el-icon-arrow-down\"></i></div>\n <el-card v-if=\"showDetails && Object.keys(contextData).length !== 0\" class=\"context-card card\" >\n <img :src=\"entry.banner\" class=\"context-image card-left\">\n <div class=\"card-right\">\n <div class=\"title\">{{contextData.heading}}</div>\n <div>{{contextData.description}}</div>\n <template v-for=\"(view, i) in contextData.views\">\n <br v-bind:key=\"i\"/>\n <span v-bind:key=\"i+'_1'\" @click=\"openViewFile(view)\" class=\"scaffold-view\"><img :src=\"getFileFromPath(view.thumbnail)\"> {{view.description}}</span>\n </template>\n </div>\n </el-card>\n </div>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Link, Icon, Card, Button, Select, Input } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport EventBus from \"./EventBus\"\n\nlocale.use(lang);\nVue.use(Link);\nVue.use(Icon);\nVue.use(Card);\nVue.use(Button);\nVue.use(Select);\nVue.use(Input);\n\n\n\nexport default {\n name: \"contextCard\",\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n },\n data: function () {\n return {\n contextData: {},\n showDetails: true,\n showContextCard: true\n };\n },\n watch: {\n 'entry.contextCardUrl': {\n handler(val){\n if (val) {\n this.getContextFile(val)\n this.showContextCard = true\n } else {\n this.showContextCard = false\n }\n },\n immediate: true\n }\n },\n methods: {\n getContextFile: function (contextFileUrl) {\n fetch(contextFileUrl)\n .then((response) =>{\n if (!response.ok){\n throw Error(response.statusText)\n } else {\n return response.json()\n }\n })\n .then((data) => {\n this.contextData = data\n })\n .catch(() => {\n //set defaults if we hit an error\n this.thumbnail = require('@/../assets/missing-image.svg')\n this.discoverId = undefined\n });\n },\n removeDoubleFilesPath: function(path){\n if (path.includes('files/files/')){\n return path.replace('files/files/', 'files/')\n } else {\n return path\n }\n },\n getFileFromPath: function(path){\n path = this.removeDoubleFilesPath(path)\n return `${this.entry.apiLocation}s3-resource/${this.entry.discoverId}/${this.entry.version}/files/${path}`\n },\n openViewFile: function(view){\n\n // note that we assume that the view file is in the same directory as the scaffold (viewUrls take relative paths)\n this.entry.viewUrl = view.path.split('/')[view.path.split('/').length-1]\n this.entry.type = 'Scaffold View'\n EventBus.$emit(\"PopoverActionClick\", this.entry)\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.hide{\n color: #e4e7ed;\n cursor: pointer;\n}\n\n.context-card{\n background-color: white;\n}\n\n.context-card >>> .el-card__body {\n padding: 0px;\n display: flex;\n width: 516px; \n}\n\n.context-image{\n width: 250px\n}\n\n.card {\n padding-top: 18px;\n margin-bottom: 18px;\n position: relative;\n border: solid 1px #e4e7ed;\n display: flex;\n}\n\n.card-left{\n flex: 1\n}\n\n.card-right {\n flex: 1.3;\n padding-left: 6px;\n}\n\n.cursor-pointer {\n cursor: pointer;\n height: 25px;\n}\n\n.title{\n font-weight: bold;\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!./ContextCard.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!./ContextCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContextCard.vue?vue&type=template&id=5de93eb9&scoped=true&\"\nimport script from \"./ContextCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ContextCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContextCard.vue?vue&type=style&index=0&id=5de93eb9&scoped=true&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 \"5de93eb9\",\n null\n \n)\n\nexport default component.exports","<template>\n <el-card :body-style=\"bodyStyle\" class=\"content-card\">\n <div slot=\"header\" class=\"header\">\n <context-card v-if=\"contextCardEntry && contextCardEnabled\" :entry=\"contextCardEntry\" />\n <el-input\n class=\"search-input\"\n placeholder=\"Search\"\n v-model=\"searchInput\"\n @keyup.native=\"searchEvent\"\n clearable\n @clear=\"clearSearchClicked\"\n ></el-input>\n <el-button class=\"button\" @click=\"searchEvent\">Search</el-button>\n </div>\n <SearchFilters\n class=\"filters\"\n ref=\"filtersRef\"\n :entry=\"filterEntry\"\n :envVars=\"envVars\"\n @filterResults=\"filterUpdate\"\n @numberPerPage=\"numberPerPageUpdate\"\n @loading=\"filtersLoading\"\n ></SearchFilters>\n <div class=\"content scrollbar\" v-loading=\"loadingCards\" ref=\"content\">\n <div\n class=\"error-feedback\"\n v-if=\"results.length === 0 && !loadingCards && !sciCrunchError\"\n >No results found - Please change your search / filter criteria.</div>\n <div class=\"error-feedback\" v-if=\"sciCrunchError\">{{sciCrunchError}}</div>\n <div v-for=\"o in results\" :key=\"o.id\" class=\"step-item\">\n <DatasetCard :entry=\"o\" :envVars=\"envVars\" @contextUpdate=\"contextCardUpdate\"></DatasetCard>\n </div>\n <el-pagination\n class=\"pagination\"\n :current-page.sync=\"page\"\n hide-on-single-page\n large\n layout=\"prev, pager, next\"\n :page-size=\"numberPerPage\"\n :total=\"numberOfHits\"\n @current-change=\"pageChange\"\n ></el-pagination>\n </div>\n </el-card>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport {\n Button,\n Card,\n Drawer,\n Icon,\n Input,\n Loading,\n Pagination\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport SearchFilters from \"./SearchFilters\";\nimport DatasetCard from \"./DatasetCard\";\nimport ContextCard from \"./ContextCard.vue\";\n\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\nimport {getFilters} from \"../algolia/utils.js\"\n\nlocale.use(lang);\nVue.use(Button);\nVue.use(Card);\nVue.use(Drawer);\nVue.use(Icon);\nVue.use(Input);\nVue.use(Loading);\nVue.use(Pagination);\n\n// handleErrors: A custom fetch error handler to recieve messages from the server\n// even when an error is found\nvar handleErrors = async function(response) {\n if (!response.ok) {\n let parse = await response.json();\n if (parse) {\n throw new Error(parse.message);\n } else {\n throw new Error(response);\n }\n }\n return response;\n};\n\nvar initial_state = {\n searchInput: \"\",\n lastSearch: \"\",\n results: [],\n numberOfHits: 0,\n filter: [],\n loadingCards: false,\n numberPerPage: 10,\n page: 1,\n pageModel: 1,\n start: 0,\n hasSearched: false,\n sciCrunchError: false,\n contextCardEntry: undefined,\n contextCardEnabled: false\n};\n\nexport default {\n components: { SearchFilters, DatasetCard, ContextCard },\n name: \"SideBarContent\",\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n isDrawer: {\n type: Boolean,\n default: true\n },\n entry: {\n type: Object,\n default: () => initial_state\n },\n envVars: {\n type: Object,\n default: () => {}\n },\n firstSearch: {\n type: String,\n default: \"\"\n }\n },\n data: function() {\n return {\n ...this.entry,\n bodyStyle: {\n flex: \"1 1 auto\",\n \"flex-flow\": \"column\",\n display: \"flex\"\n }\n };\n },\n computed: {\n // This computed property populates filter data's entry object with $data from this sidebar\n filterEntry: function() {\n return {\n numberOfHits: this.numberOfHits,\n filterFacets: this.filter\n };\n }\n },\n methods: {\n contextCardUpdate: function(val){\n this.contextCardEntry = val\n },\n openSearch: function(filter, search='') {\n this.searchInput = search;\n this.resetPageNavigation();\n this.searchAlgolia(filter, search);\n if (filter) {\n this.filter = [...filter];\n this.$refs.filtersRef.setCascader(this.filter);\n }\n },\n addFilter: function(filter) {\n this.resetPageNavigation();\n if (filter) {\n this.$refs.filtersRef.addFilter(filter);\n this.$refs.filtersRef.initiateSearch()\n }\n },\n clearSearchClicked: function() {\n this.searchInput = \"\";\n this.resetPageNavigation();\n this.searchAlgolia(this.filters, this.searchInput);\n },\n searchEvent: function(event = false) {\n if (event.keyCode === 13 || event instanceof MouseEvent) {\n this.resetPageNavigation();\n this.searchAlgolia(this.filters, this.searchInput);\n }\n },\n filterUpdate: function(filters) {\n this.filters = [...filters]\n this.resetPageNavigation()\n this.searchAlgolia(filters, this.searchInput)\n this.$emit(\"search-changed\", {\n value: filters,\n type: \"filter-update\"\n });\n },\n searchAlgolia(filters, query=''){\n // Algolia search\n this.algoliaClient.search(getFilters(filters), query, this.numberPerPage, this.page).then(searchData => {\n this.numberOfHits = searchData.total\n this.discoverIds = searchData.discoverIds\n this.dois = searchData.dois\n this.results = searchData.items\n this.searchSciCrunch({'dois': this.dois})\n })\n },\n filtersLoading: function (val) {\n this.loadingCards = val;\n },\n numberPerPageUpdate: function(val) {\n this.numberPerPage = val;\n this.pageChange(1);\n },\n pageChange: function(page) {\n this.start = (page - 1) * this.numberPerPage;\n this.page = page\n this.searchAlgolia(this.filters, this.searchInput, this.numberPerPage, this.page)\n },\n searchSciCrunch: function(params) {\n this.loadingCards = true;\n this.results = [];\n this.disableCards();\n this.$emit(\"search-changed\", { value: this.searchInput, type: \"query-update\" });\n this.callSciCrunch(this.envVars.API_LOCATION, params)\n .then(result => {\n //Only process if the search term is the same as the last search term.\n //This avoid old search being displayed.\n this.sciCrunchError = false;\n this.resultsProcessing(result);\n this.$refs.content.style[\"overflow-y\"] = \"scroll\";\n this.loadingCards = false;\n })\n .catch(result => {\n if (result.name !== 'AbortError') {\n this.loadingCards = false;\n this.sciCrunchError = result.message;\n }\n })\n },\n disableCards: function() {\n if (this.$refs.content) {\n this.$refs.content.scroll({ top: 0, behavior: \"smooth\" });\n this.$refs.content.style[\"overflow-y\"] = \"hidden\";\n }\n },\n resetPageNavigation: function() {\n this.start = 0;\n this.page = 1;\n },\n resultsProcessing: function(data) {\n this.lastSearch = this.searchInput;\n this.results = [];\n if (data.results.length === 0) {\n return;\n }\n data.results.forEach(element => {\n // this.results.push(element) below should be once backend is ready\n let datasetInfo = {\n name: element.name,\n description: element.description,\n contributors: element.contributors,\n numberSamples: element.sampleSize\n ? parseInt(element.sampleSize)\n : 0,\n numberSubjects: element.subjectSize\n ? parseInt(element.subjectSize)\n : 0,\n updated: element.updated[0].timestamp.split(\"T\")[0],\n url: element.uri[0],\n datasetId: element.dataset_identifier,\n datasetRevision: element.dataset_revision,\n datasetVersion: element.dataset_version,\n organs: (element.organs && element.organs.length > 0)\n ? [...new Set(element.organs.map(v => v.name))]\n : undefined,\n species: element.organisms \n ? element.organisms[0].species\n ? [...new Set(element.organisms.map((v) =>v.species ? v.species.name : null))]\n : undefined\n : undefined, // This processing only includes each gender once into 'sexes'\n doi: element.doi,\n publishDate: element.publishDate,\n scaffolds: element['abi-scaffold-metadata-file'],\n thumbnails: element['abi-thumbnail'] ? element['abi-thumbnail']: element['abi-scaffold-thumbnail'],\n scaffoldViews: element['abi-scaffold-view-file'],\n videos: element.video,\n plots: element.plot,\n images: element['common-images'],\n contextualInformation: element['abi-contextual-information'].length > 0 ? element['abi-contextual-information'] : undefined,\n additionalLinks: element.additionalLinks,\n segmentation: element['mbf-segmentation'],\n simulation: element.additionalLinks\n ? element.additionalLinks[0].description == 'Repository'\n : false,\n s3uri: element.s3uri\n };\n this.results.push(datasetInfo);\n });\n },\n createfilterParams: function(params) {\n let p = new URLSearchParams();\n //Check if field is array or value\n for (const key in params) {\n if (Array.isArray(params[key])) {\n params[key].forEach(e => {\n p.append(key, e);\n });\n } else {\n p.append(key, params[key]);\n }\n }\n return p.toString();\n },\n callSciCrunch: function(apiLocation, params = {}) {\n return new Promise((resolve, reject) => {\n // the following controller will abort current search\n // if a new one has been started\n if (this._controller) this._controller.abort();\n this._controller = new AbortController();\n let signal = this._controller.signal;\n // Add parameters if we are sent them\n let fullEndpoint = this.envVars.API_LOCATION + this.searchEndpoint + \"?\" + this.createfilterParams(params);\n fetch(fullEndpoint, { signal })\n .then(handleErrors)\n .then(response => response.json())\n .then(data => resolve(data))\n .catch(data => reject(data));\n });\n },\n },\n mounted: function() {\n // initialise algolia\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\n console.log('Algolia initialised in sidebar')\n\n // temporarily disable flatmap search since there are no datasets\n if (this.firstSearch === \"Flatmap\" || this.firstSearch === \"flatmap\") {\n this.openSearch(undefined, '')\n } else {\n this.openSearch(undefined, '');\n }\n },\n created: function() {\n //Create non-reactive local variables\n this.searchEndpoint = \"dataset_info/using_multiple_dois/\";\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.content-card {\n height: 100%;\n flex-flow: column;\n display: flex;\n}\n\n.button {\n background-color: #8300bf;\n border: #8300bf;\n color: white;\n}\n\n.step-item {\n font-size: 14px;\n margin-bottom: 18px;\n text-align: left;\n}\n\n.search-input {\n width: 298px !important;\n height: 40px;\n padding-right: 14px;\n align-items: left;\n}\n\n.header {\n border: solid 1px #292b66;\n background-color: #292b66;\n text-align: left;\n}\n\n.pagination {\n padding-bottom: 16px;\n background-color: white;\n text-align: center;\n}\n\n.pagination >>> button {\n background-color: white !important;\n}\n.pagination >>> li {\n background-color: white !important;\n}\n.pagination >>> li.active {\n color: #8300bf;\n}\n\n.error-feedback {\n font-family: Asap;\n font-size: 14px;\n font-style: italic;\n padding-top: 15px;\n}\n\n.content-card >>> .el-card__header {\n background-color: #292b66;\n border: solid 1px #292b66;\n}\n\n.content-card >>> .el-card__body {\n background-color: #f7faff;\n overflow-y: hidden;\n}\n\n.content {\n width: 518px;\n flex: 1 1 auto;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #ffffff;\n overflow-y: scroll;\n scrollbar-width: thin;\n}\n\n.content >>> .step-item:first-child .seperator-path{\n display: none;\n}\n\n.content >>> .step-item:not(:first-child) .seperator-path{\n width: 486px;\n height: 0px;\n border: solid 1px #e4e7ed;\n background-color: #e4e7ed;\n}\n\n.scrollbar::-webkit-scrollbar-track {\n border-radius: 10px;\n background-color: #f5f5f5;\n}\n\n.scrollbar::-webkit-scrollbar {\n width: 12px;\n right: -12px;\n background-color: #f5f5f5;\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n border-radius: 4px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.06);\n background-color: #979797;\n}\n\n>>> .el-input__suffix {\n padding-right: 10px;\n}\n\n>>> .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.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!./SidebarContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarContent.vue?vue&type=template&id=3d1731ba&scoped=true&\"\nimport script from \"./SidebarContent.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SidebarContent.vue?vue&type=style&index=0&id=3d1731ba&scoped=true&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 \"3d1731ba\",\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:\"tab-container\"},_vm._l((_vm.tabTitles),function(title){return _c('div',{key:title.id,staticClass:\"title\"},[_c('div',{staticClass:\"title-text-table\",class:{ highlightText : (title.id==_vm.activeId) },on:{\"click\":function($event){return _vm.titleClicked(title.id)}}},[_c('div',{staticClass:\"title-text\"},[_vm._v(\" \"+_vm._s(title.title)+\" \")])])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"tab-container\">\n <div class=\"title\" v-for=\"title in tabTitles\" :key=\"title.id\">\n <div class=\"title-text-table\" v-bind:class=\"{ highlightText : (title.id==activeId) }\" v-on:click=\"titleClicked(title.id)\">\n <div class=\"title-text\">\n {{title.title}}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\n\nexport default {\n name: \"Tabs\",\n props: {\n tabTitles: {\n type: Array,\n default: () => []\n },\n activeId: {\n type: Number,\n default: 1\n }\n },\n methods: {\n titleClicked: function(id) {\n this.$emit(\"titleClicked\", id);\n },\n }\n\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.tab-container{\n height: 28px;\n}\n\n.title {\n width: 101px;\n height: 28px;\n border: solid 1px #dcdfe6;\n border-bottom: none;\n background-color: white;\n display:inline-block;\n}\n\n.title:hover {\n cursor: pointer;\n}\n\n.title-text {\n text-align:center;\n display: table-cell;\n vertical-align: middle;\n font-size: 14px;\n}\n\n.title-text-table {\n display:table;\n height: 100%;\n width: 100%;\n}\n\n.parent-dialog:hover .title-text {\n color:#8300bf;\n}\n\n.highlightText {\n color:#8300bf;\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!./Tabs.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!./Tabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=5d1b9484&scoped=true&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=js&\"\nexport * from \"./Tabs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&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 \"5d1b9484\",\n null\n \n)\n\nexport default component.exports","<template>\n <div ref=\"container\">\n <div v-if=\"!drawerOpen\" @click=\"toggleDrawer\" class=\"open-tab\">\n <i class=\"el-icon-arrow-left\"></i>\n </div>\n <el-drawer\n custom-class=\"my-drawer\"\n class=\"side-bar\"\n :visible.sync=\"drawerOpen\"\n :appendToBody=\"false\"\n :modal-append-to-body=\"false\"\n size=550\n :with-header=\"false\"\n :wrapperClosable=\"false\"\n :modal=\"false\"\n >\n <div class=\"box-card\">\n <div v-if=\"drawerOpen\" @click=\"close\" class=\"close-tab\">\n <i class=\"el-icon-arrow-right\"></i>\n </div>\n <div class=\"sidebar-container\">\n <tabs v-if=\"tabs.length > 1\" :tabTitles=\"tabs\" :activeId=\"activeId\"\n @titleClicked=\"tabClicked\"/>\n <template v-for=\"tab in tabs\">\n <sidebar-content class=\"sidebar-content-container\"\n v-show=\"tab.id===activeId\" :contextCardEntry=\"tab.contextCard\"\n :envVars=\"envVars\"\n v-bind:key=\"tab.id\" :ref=\"tab.id\"\n @search-changed=\"searchChanged(tab.id, $event)\"/>\n </template>\n </div>\n </div>\n </el-drawer>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport {\n Drawer,\n Icon,\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport SidebarContent from './SidebarContent.vue';\nimport EventBus from './EventBus';\nimport Tabs from './Tabs'\n\nlocale.use(lang);\nVue.use(Drawer);\nVue.use(Icon);\n\nvar initial_state = {\n searchInput: \"\",\n lastSearch: \"\",\n results: [],\n drawerOpen: false,\n numberOfHits: 0,\n filter:{},\n filterFacet: undefined,\n loadingCards: false,\n numberPerPage: 10,\n page: 1,\n pageModel: 1,\n start: 0,\n hasSearched: false,\n sciCrunchError: false\n}\n\nexport default {\n components: {SidebarContent, Tabs },\n name: \"SideBar\",\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n entry: {\n type: Object,\n default: () => (initial_state)\n },\n envVars: {\n type: Object,\n default: () => {}\n },\n tabs: {\n type: Array,\n default: () => [{title:'flatmap', id:1}]\n },\n activeId: {\n type: Number,\n default: 1\n },\n openAtStart: {\n type: Boolean,\n default: false\n }\n },\n data: function () {\n return {\n ...this.entry,\n }\n },\n methods: {\n searchChanged: function (id, data) {\n this.$emit(\"search-changed\", {...data, id: id});\n },\n close: function () {\n this.drawerOpen = false;\n },\n toggleDrawer: function () {\n this.drawerOpen = !this.drawerOpen;\n },\n openSearch: function(facets, query){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch(facets, query)})\n },\n addFilter: function(filter){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].addFilter(filter)})\n },\n openNeuronSearch: function(neuron){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch('', undefined, 'scicrunch-query-string/', {'field': '*organ.curie', 'curie':neuron})})\n },\n tabClicked: function(id) {\n this.$emit(\"tabClicked\", id);\n },\n },\n created:function() {\n this.drawerOpen = this.openAtStart;\n },\n mounted: function(){\n EventBus.$on(\"PopoverActionClick\", (payLoad) => {\n this.$emit(\"actionClick\", payLoad);\n })\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.box-card {\n flex: 3;\n height: 100%;\n overflow: hidden;\n pointer-events: auto;\n}\n\n.side-bar{\n position: relative;\n height: 100%;\n pointer-events: none;\n}\n\n.side-bar >>> .el-drawer:focus{\n outline:none;\n}\n\n.sidebar-container {\n height: 100%;\n flex-flow: column;\n display: flex;\n}\n\n.open-tab{\n width: 20px;\n height: 40px;\n z-index: 8;\n position: absolute;\n top: calc(50vh - 80px);\n right: 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.el-icon-arrow-left{\n font-size: 20px;\n padding-top: 8px;\n color: #292b66;\n}\n\n.el-icon-arrow-right{\n font-size: 20px;\n padding-top: 8px;\n color: #292b66;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.close-tab{\n float: left;\n flex: 1;\n width: 20px;\n height: 40px;\n z-index: 8;\n margin-top: calc(50vh - 80px);\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n border-right: 0;\n background-color: #F7FAFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.box-card {\n flex: 3;\n height: 100%;\n overflow: hidden;\n pointer-events: auto;\n}\n\n>>> .my-drawer {\n background: rgba(0,0,0,0);\n box-shadow: none;\n}\n\n>>> .my-drawer .el-drawer__body {\n height: 100%;\n}\n\n.sidebar-content-container {\n flex: 1 1 auto;\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!./SideBar.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!./SideBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SideBar.vue?vue&type=template&id=3d831a8e&scoped=true&\"\nimport script from \"./SideBar.vue?vue&type=script&lang=js&\"\nexport * from \"./SideBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&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 \"3d831a8e\",\n null\n \n)\n\nexport default component.exports","import SideBar from \"./SideBar.vue\"\n\nexport {\n SideBar\n};\n\n\n\n","import './setPublicPath'\nexport * from '~entry'\n","module.exports = require(\"core-js/modules/es.string.includes\");"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://map-side-bar/webpack/bootstrap","webpack://map-side-bar/external \"element-ui/lib/pagination\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/pagination.css\"","webpack://map-side-bar/external \"core-js/modules/es.parse-int\"","webpack://map-side-bar/external \"element-ui/lib/select\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/select.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.for-each\"","webpack://map-side-bar/./src/components/ImageGallery.vue?9e8f","webpack://map-side-bar/./src/components/Tabs.vue?c191","webpack://map-side-bar/external \"core-js/modules/es.array.concat\"","webpack://map-side-bar/./src/components/ImageGallery.vue?6f36","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.iterator\"","webpack://map-side-bar/external \"core-js/modules/es.object.keys\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/link.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/button.css\"","webpack://map-side-bar/external \"core-js/modules/web.url\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://map-side-bar/./src/components/SearchFilters.vue?445d","webpack://map-side-bar/./src/components/DatasetCard.vue?14dc","webpack://map-side-bar/external \"element-ui/lib/drawer\"","webpack://map-side-bar/external \"@abi-software/gallery\"","webpack://map-side-bar/external \"@abi-software/svg-sprite\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptors\"","webpack://map-side-bar/external \"core-js/modules/es.string.split\"","webpack://map-side-bar/external \"core-js/modules/es.set\"","webpack://map-side-bar/external \"core-js/modules/es.array.filter\"","webpack://map-side-bar/./src/components/SidebarContent.vue?2bcd","webpack://map-side-bar/./src/components/SidebarContent.vue?5803","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/card.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/drawer.css\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.description\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.exec\"","webpack://map-side-bar/./src/components/DatasetCard.vue?1977","webpack://map-side-bar/./src/components/SideBar.vue?0398","webpack://map-side-bar/external \"element-ui/lib/button\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.to-string\"","webpack://map-side-bar/external \"core-js/modules/es.symbol\"","webpack://map-side-bar/external \"core-js/modules/es.array.slice\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptor\"","webpack://map-side-bar/external \"element-ui/lib/cascader\"","webpack://map-side-bar/external \"element-ui/lib/locale/lang/en\"","webpack://map-side-bar/./src/components/Tabs.vue?bd49","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/cascader.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.sort\"","webpack://map-side-bar/external \"core-js/modules/es.number.constructor\"","webpack://map-side-bar/external \"regenerator-runtime/runtime\"","webpack://map-side-bar/external \"core-js/modules/es.array.splice\"","webpack://map-side-bar/external \"element-ui/lib/link\"","webpack://map-side-bar/external \"element-ui/lib/locale\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/option.css\"","webpack://map-side-bar/external \"core-js/modules/es.promise\"","webpack://map-side-bar/external \"core-js/modules/es.object.to-string\"","webpack://map-side-bar/external \"algoliasearch\"","webpack://map-side-bar/external \"vue\"","webpack://map-side-bar/external \"core-js/modules/es.array.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/icon.css\"","webpack://map-side-bar/external \"core-js/modules/es.string.iterator\"","webpack://map-side-bar/external \"element-ui/lib/popover\"","webpack://map-side-bar/./src/components/ContextCard.vue?0546","webpack://map-side-bar/external \"core-js/modules/es.map\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/base.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.flat\"","webpack://map-side-bar/./assets/missing-image.svg","webpack://map-side-bar/external \"@abi-software/gallery/src/mixins/GalleryHelpers\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/popover.css\"","webpack://map-side-bar/./src/components/ContextCard.vue?2a5a","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/input.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.includes\"","webpack://map-side-bar/external \"element-ui/lib/loading\"","webpack://map-side-bar/external \"element-ui/lib/card\"","webpack://map-side-bar/external \"element-ui/lib/icon\"","webpack://map-side-bar/./src/components/SideBar.vue?a3c3","webpack://map-side-bar/external \"core-js/modules/es.function.name\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.for-each\"","webpack://map-side-bar/external \"core-js/modules/es.string.search\"","webpack://map-side-bar/external \"core-js/modules/es.string.replace\"","webpack://map-side-bar/external \"element-ui/lib/option\"","webpack://map-side-bar/./src/components/SearchFilters.vue?7bc3","webpack://map-side-bar/external \"core-js/modules/es.array.last-index-of\"","webpack://map-side-bar/external \"current-script-polyfill\"","webpack://map-side-bar/external \"core-js/modules/es.array.from\"","webpack://map-side-bar/external \"element-ui/lib/input\"","webpack://map-side-bar/external \"core-js/modules/es.object.entries\"","webpack://map-side-bar/external \"core-js/modules/es.array.unscopables.flat\"","webpack://map-side-bar/external \"core-js/modules/es.array.map\"","webpack://map-side-bar/external \"core-js/modules/es.promise.finally\"","webpack://map-side-bar/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://map-side-bar/./src/components/SideBar.vue?1500","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://map-side-bar/./src/components/SidebarContent.vue?e47f","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://map-side-bar/./src/components/SearchFilters.vue?e131","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://map-side-bar/src/components/Cascader.vue","webpack://map-side-bar/./src/components/Cascader.vue?9729","webpack://map-side-bar/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://map-side-bar/./src/components/Cascader.vue","webpack://map-side-bar/./src/components/species-map.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://map-side-bar/./src/algolia/algolia.js","webpack://map-side-bar/./src/algolia/utils.js","webpack://map-side-bar/src/components/SearchFilters.vue","webpack://map-side-bar/./src/components/SearchFilters.vue?8079","webpack://map-side-bar/./src/components/SearchFilters.vue","webpack://map-side-bar/./src/components/DatasetCard.vue?8bd9","webpack://map-side-bar/./src/components/EventBus.js","webpack://map-side-bar/./src/components/ImageGallery.vue?4470","webpack://map-side-bar/src/components/ImageGallery.vue","webpack://map-side-bar/./src/components/ImageGallery.vue?b8b4","webpack://map-side-bar/./src/components/ImageGallery.vue","webpack://map-side-bar/src/components/DatasetCard.vue","webpack://map-side-bar/./src/components/DatasetCard.vue?d021","webpack://map-side-bar/./src/components/DatasetCard.vue","webpack://map-side-bar/./src/components/ContextCard.vue?0d18","webpack://map-side-bar/src/components/ContextCard.vue","webpack://map-side-bar/./src/components/ContextCard.vue?667e","webpack://map-side-bar/./src/components/ContextCard.vue","webpack://map-side-bar/src/components/SidebarContent.vue","webpack://map-side-bar/./src/components/SidebarContent.vue?7e01","webpack://map-side-bar/./src/components/SidebarContent.vue","webpack://map-side-bar/./src/components/Tabs.vue?c0a0","webpack://map-side-bar/src/components/Tabs.vue","webpack://map-side-bar/./src/components/Tabs.vue?3d38","webpack://map-side-bar/./src/components/Tabs.vue","webpack://map-side-bar/src/components/SideBar.vue","webpack://map-side-bar/./src/components/SideBar.vue?b259","webpack://map-side-bar/./src/components/SideBar.vue","webpack://map-side-bar/./src/components/index.js","webpack://map-side-bar/./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js","webpack://map-side-bar/external \"core-js/modules/es.string.includes\""],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_arrayWithoutHoles","arr","Array","isArray","i","arr2","length","_iterableToArray","iter","Symbol","iterator","prototype","toString","call","from","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_arrayWithHoles","_nonIterableRest","_toArray","arrayWithHoles","nonIterableRest","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","AlgoliaClient","algoliaId","algoliaKey","PENNSIEVE_API_LOCATION","client","algoliasearch","ALGOLIA_INDEX","index","initIndex","propPathMapping","map","Map","entries","facetPropPaths","keys","facetData","facetId","search","sortFacetValuesBy","facets","response","facetPropPath","children","responseFacets","responseFacetChildren","facet","push","label","id","get","discoverId","fetch","r","json","dataset","version","doi","discoverIds","promiseList","_discoverAllDois","all","values","flat","filter","query","hitsperPage","page","hitsPerPage","filters","searchData","items","hits","total","nbHits","pennsieve","identifier","dois","item","curie","split","facetPropPathMapping","getFilters","selectedFacetArray","forEach","f","removeShowAllFacets","facetsToOr","substring","lastIndexOf","facetArray","EventBus","Vue"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;AClFA,sD;;;;;;;ACAA,+D;;;;;;;ACAA,sE;;;;;;;ACAA,yD;;;;;;;ACAA,kD;;;;;;;ACAA,kE;;;;;;;ACAA,8D;;;;;;;ACAA,uC;;;;;;;;ACAA;AAAA;AAAA;AAAif,CAAgB,8hBAAG,EAAC,C;;;;;;;ACArgB,4D;;;;;;;;ACAA;AAAA;AAAA;AAAyf,CAAgB,siBAAG,EAAC,C;;;;;;;ACA7gB,yE;;;;;;;ACAA,2D;;;;;;;ACAA,gE;;;;;;;ACAA,kE;;;;;;;ACAA,oD;;;;;;;ACAA,mE;;;;;;;;ACAA;AAAA;AAAA;AAA0f,CAAgB,uiBAAG,EAAC,C;;;;;;;ACA9gB,uC;;;;;;;ACAA,kD;;;;;;;ACAA,kD;;;;;;;ACAA,qD;;;;;;;ACAA,mF;;;;;;;ACAA,4D;;;;;;;ACAA,mD;;;;;;;ACAA,4D;;;;;;;ACAA,uC;;;;;;;;ACAA;AAAA;AAAA;AAA2f,CAAgB,wiBAAG,EAAC,C;;;;;;;ACA/gB,gE;;;;;;;ACAA,kE;;;;;;;ACAA,kE;;;;;;;ACAA,2D;;;;;;;;ACAA;AAAA;AAAA;AAAwf,CAAgB,qiBAAG,EAAC,C;;;;;;;ACA5gB,uC;;;;;;;ACAA,kD;;;;;;;ACAA,gE;;;;;;;ACAA,sD;;;;;;;ACAA,2D;;;;;;;ACAA,kF;;;;;;;ACAA,oD;;;;;;;ACAA,0D;;;;;;;ACAA,uC;;;;;;;ACAA,oE;;;;;;;ACAA,0D;;;;;;;ACAA,kE;;;;;;;ACAA,wD;;;;;;;ACAA,4D;;;;;;;ACAA,gD;;;;;;;ACAA,kD;;;;;;;ACAA,kE;;;;;;;ACAA,uD;;;;;;;ACAA,gE;;;;;;;ACAA,0C;;;;;;;ACAA,gC;;;;;;;ACAA,8D;;;;;;;ACAA,gE;;;;;;;ACAA,+D;;;;;;;ACAA,mD;;;;;;;;ACAA;AAAA;AAAA;AAAwf,CAAgB,qiBAAG,EAAC,C;;;;;;;ACA5gB,mD;;;;;;;ACAA,gE;;;;;;;ACAA,0D;;;;;;;ACAA,iBAAiB,qBAAuB,oC;;;;;;;ACAxC,4E;;;;;;;ACAA,mE;;;;;;;ACAA,uC;;;;;;;ACAA,iE;;;;;;;ACAA,8D;;;;;;;ACAA,mD;;;;;;;ACAA,gD;;;;;;;ACAA,gD;;;;;;;;ACAA;AAAA;AAAA;AAAof,CAAgB,iiBAAG,EAAC,C;;;;;;;ACAxgB,6D;;;;;;;ACAA,yE;;;;;;;ACAA,6D;;;;;;;ACAA,8D;;;;;;;ACAA,kD;;;;;;;ACAA,uC;;;;;;;ACAA,mE;;;;;;;ACAA,oD;;;;;;;ACAA,0D;;;;;;;ACAA,iD;;;;;;;ACAA,8D;;;;;;;ACAA,sE;;;;;;;ACAA,yD;;;;;;;ACAA,+D;;;;;;;;;;;;;;;ACAA;;AAEA;AACA,MAAM,IAAuC;AAC7C,IAAI,mBAAO,CAAC,MAAyB;AACrC;;AAEA,MAAM,eAAC;AACP,OAAO,eAAC,sCAAsC,eAAC,GAAG,eAAC;AACnD,IAAI,qBAAuB,GAAG,eAAC;AAC/B;AACA;;AAEA;AACe,sDAAI;;;ACdnB,0BAA0B,aAAa,0BAA0B,wBAAwB,iBAAiB,gBAAgB,8BAA8B,2BAA2B,0BAA0B,UAAU,iCAAiC,6BAA6B,8BAA8B,6KAA6K,KAAK,kCAAkC,wBAAwB,YAAY,uBAAuB,6BAA6B,4BAA4B,mBAAmB,UAAU,kCAAkC,uBAAuB,gCAAgC,mCAAmC,OAAO,6CAA6C,KAAK,+BAA+B,2CAA2C,8BAA8B,aAAa,0FAA0F,qFAAqF,yDAAyD,KAAK,kCAAkC,2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AAAA,UACA,QADA,GACA,IADA,CACA,QADA;AAAA,UACA,aADA,GACA,IADA,CACA,aADA;AAAA,UACA,SADA,GACA,IADA,CACA,SADA;AAAA,UACA,YADA,GACA,IADA,CACA,YADA;AAEA;AACA;;AACA;AAAA;AACA,oBADA;AAEA,uBAFA;AAGA,sDAHA;AAIA,yBAJA;AAKA;AALA;AAAA;;AAOA,4DACA;AACA;AACA,OAHA;;AAKA;AAAA,oCACA,WADA;AAAA,YACA,KADA;AAAA,YACA,IADA;;AAEA;AACA;;AACA;AACA;AACA;AACA,qBADA;AAEA,0CAFA;AAGA;AAHA;AAKA,WANA,MAMA;AACA;AAAA;AAAA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AArCA;AAHA,G;;ACJkU,CAAgB,gHAAG,EAAC,C;;ACAtV;;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,qBAAqB;AACrB;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;;;AC5FA,IAAI,eAAM,EAAE,wBAAe;AACiC;AACL;;;AAGvD;AAC0F;AAC1F,gBAAgB,kBAAU;AAC1B,EAAE,2CAAM;AACR,EAAE,eAAM;AACR,EAAE,wBAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEe,8D;;AClBA;AACX,kBAAgB,OADL;AAEX,uBAAqB,KAFV;AAGX,kBAAgB,OAHL;AAIX,2BAAyB,KAJd;AAKX,gBAAc,MALH;AAMX,iBAAe;AANJ,CAAf,E;;;;;;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ADA;AAEA;AAFA,eARA,CAaA;;;AACA;AACA,6GACA,eADA;AAGA,mDACA,2DADA;AAEA,aANA;AAOA,WArBA;;AAsBA;AACA,SA7BA,EA8BA,OA9BA,CA8BA;AACA;AACA,SAhCA;AAiCA,OAnCA;AAoCA,KA1CA;AA2CA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAjDA;AAkDA;AACA;AACA;AACA;AACA,iDAFA,CAIA;;AACA;AAAA;AAAA;AAAA;AACA,gCADA;AAEA,sCAFA;AAGA;AAHA;AAAA,WALA,CAWA;;AACA;AAAA;AAAA;AACA;AACA;AACA,mCADA;AAEA,sCAFA;AAGA;AAHA;AAKA,SAPA;AAUA,oCAtBA,CAsBA;;AAEA,6CAxBA,CAwBA;;AACA,qCAzBA,CAyBA;;AACA;AACA;AACA,KAhFA;AAiFA;AACA;AACA;AAAA;;AACA;AACA,6BACA,GADA,CACA;AAAA;AAAA,OADA,EAEA,QAFA,CAEA,IAFA,EAFA,CAKA;;AACA;AACA;AACA,2BAFA,CAGA;;AACA;AACA;AACA;AACA,SAPA,CAQA;;;AACA;AACA,kCADA,CAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA,+CACA,8EADA,KAEA;AACA,aANA,MAMA;AACA;AACA;AACA;AACA,WAXA,MAWA;AACA;AACA;AACA,SAjCA,CAkCA;;;AACA;AACA;AACA;AACA;AACA;AACA,eAFA,MAEA;AACA;AACA;AACA,aANA,MAMA;AACA;AACA;AACA,eAFA,MAEA;AACA;AACA;AACA,aANA,MAMA;AACA;AACA;AACA,WAhBA,MAgBA;AACA,SAlBA;AAmBA;;AACA;AACA,KAjJA;AAkJA;AACA,wDADA,CACA;;;AACA,wCAFA,CAEA;AAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OARA;AASA;AACA,kCAfA,CAgBA;;AACA;AACA;AACA;AACA;AACA,KAvKA;AAwKA;AACA;AACA;AACA;AACA,KA5KA;AA6KA;AACA;AACA,KA/KA;AAgLA;AAAA;;AACA;AACA;AACA;AA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A,2BAJA;AAKA,yBALA;AAMA,qBANA;AAOA;AAPA;AASA,GAxBA;AAyBA;AACA;AACA;;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;;AACA;AACA,KAbA;AAcA;AACA;;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;;AACA;AACA;;AAEA;AACA,KAvCA;AAwCA;AACA;AACA,4DACA;AACA;;AACA;AACA,KA9CA;AA+CA;AACA;AACA,KAjDA;AAkDA;AACA;AACA;AApDA,GAzBA;AA+EA;AACA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAPA;AAQA;AACA;AACA,KAVA;AAWA;AACA;AACA,wEADA;AAEA,2GAFA;AAGA,iCAHA;AAIA,wBAJA;AAKA,mCALA;AAMA,8CANA;AAOA,6BAPA;AAQA,4JARA;AASA;AATA;AAWA;AACA,KAxBA;AAyBA;AACA;AACA,wEADA;AAEA,0GAFA;AAGA,0BAHA;AAIA,oBAJA;AAKA,mCALA;AAMA,8CANA;AAOA,6BAPA;AAQA,4JARA;AASA;AATA;AAWA;AACA,KAtCA;AAuCA;AACA;AACA,KAzCA;AA0CA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA,WAXA;;AAYA;AAAA;AAAA;AACA;AACA,OAnBA;AAoBA,KAhEA;AAiEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAHA,MAGA;AACA;AACA;AACA,OAPA;AAQA;AACA,wBADA;AAEA,0BAFA;AAGA,kCAHA;AAIA,8CAJA;AAKA,6BALA;AAMA,4JANA;AAOA,8BAPA;AAQA,gCARA;AASA,6BATA;AAUA,2CAVA;AAWA;AAXA;AAaA;AACA,KA1FA;AA2FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA,0EADA;AAEA,4BAFA;AAGA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","file":"map-side-bar.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(\"element-ui/lib/pagination\");","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/pagination.css\");","module.exports = require(\"core-js/modules/es.parse-int\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","module.exports = require(\"core-js/modules/es.array.for-each\");","// extracted by mini-css-extract-plugin","import mod 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!./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"; export default mod; 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!./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.array.concat\");","import mod 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!./ImageGallery.vue?vue&type=style&index=0&id=7952968e&scoped=true&lang=css&\"; export default mod; 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!./ImageGallery.vue?vue&type=style&index=0&id=7952968e&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"core-js/modules/es.object.keys\");","module.exports = require(\"element-ui/lib/theme-chalk/link.css\");","module.exports = require(\"element-ui/lib/theme-chalk/button.css\");","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","import mod 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!./SearchFilters.vue?vue&type=style&index=0&id=57801ec0&scoped=true&lang=css&\"; export default mod; 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!./SearchFilters.vue?vue&type=style&index=0&id=57801ec0&scoped=true&lang=css&\"","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/drawer\");","module.exports = require(\"@abi-software/gallery\");","module.exports = require(\"@abi-software/svg-sprite\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptors\");","module.exports = require(\"core-js/modules/es.string.split\");","module.exports = require(\"core-js/modules/es.set\");","module.exports = require(\"core-js/modules/es.array.filter\");","// extracted by mini-css-extract-plugin","import mod 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!./SidebarContent.vue?vue&type=style&index=0&id=3d1731ba&scoped=true&lang=css&\"; export default mod; 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!./SidebarContent.vue?vue&type=style&index=0&id=3d1731ba&scoped=true&lang=css&\"","module.exports = require(\"element-ui/lib/theme-chalk/card.css\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","import mod 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!./DatasetCard.vue?vue&type=style&index=0&id=5144815c&scoped=true&lang=css&\"; export default mod; 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!./DatasetCard.vue?vue&type=style&index=0&id=5144815c&scoped=true&lang=css&\"","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/button\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","module.exports = require(\"core-js/modules/es.array.slice\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptor\");","module.exports = require(\"element-ui/lib/cascader\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/theme-chalk/cascader.css\");","module.exports = require(\"core-js/modules/es.array.sort\");","module.exports = require(\"core-js/modules/es.number.constructor\");","module.exports = require(\"regenerator-runtime/runtime\");","module.exports = require(\"core-js/modules/es.array.splice\");","module.exports = require(\"element-ui/lib/link\");","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","module.exports = require(\"core-js/modules/es.promise\");","module.exports = require(\"core-js/modules/es.object.to-string\");","module.exports = require(\"algoliasearch\");","module.exports = require(\"vue\");","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(\"element-ui/lib/popover\");","import mod 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!./ContextCard.vue?vue&type=style&index=0&id=5de93eb9&scoped=true&lang=css&\"; export default mod; 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!./ContextCard.vue?vue&type=style&index=0&id=5de93eb9&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.map\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","module.exports = require(\"core-js/modules/es.array.flat\");","module.exports = __webpack_public_path__ + \"img/missing-image.1878d8b8.svg\";","module.exports = require(\"@abi-software/gallery/src/mixins/GalleryHelpers\");","module.exports = require(\"element-ui/lib/theme-chalk/popover.css\");","// extracted by mini-css-extract-plugin","module.exports = require(\"element-ui/lib/theme-chalk/input.css\");","module.exports = require(\"core-js/modules/es.array.includes\");","module.exports = require(\"element-ui/lib/loading\");","module.exports = require(\"element-ui/lib/card\");","module.exports = require(\"element-ui/lib/icon\");","import mod 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!./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"; export default mod; 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!./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"","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.search\");","module.exports = require(\"core-js/modules/es.string.replace\");","module.exports = require(\"element-ui/lib/option\");","// extracted by mini-css-extract-plugin","module.exports = require(\"core-js/modules/es.array.last-index-of\");","module.exports = require(\"current-script-polyfill\");","module.exports = require(\"core-js/modules/es.array.from\");","module.exports = require(\"element-ui/lib/input\");","module.exports = require(\"core-js/modules/es.object.entries\");","module.exports = require(\"core-js/modules/es.array.unscopables.flat\");","module.exports = require(\"core-js/modules/es.array.map\");","module.exports = require(\"core-js/modules/es.promise.finally\");","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n require('current-script-polyfill')\n }\n\n var i\n if ((i = window.document.currentScript) && (i = i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_public_path__ = i[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',{ref:\"container\"},[(!_vm.drawerOpen)?_c('div',{staticClass:\"open-tab\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e(),_c('el-drawer',{staticClass:\"side-bar\",attrs:{\"custom-class\":\"my-drawer\",\"visible\":_vm.drawerOpen,\"appendToBody\":false,\"modal-append-to-body\":false,\"size\":\"550\",\"with-header\":false,\"wrapperClosable\":false,\"modal\":false},on:{\"update:visible\":function($event){_vm.drawerOpen=$event}}},[_c('div',{staticClass:\"box-card\"},[(_vm.drawerOpen)?_c('div',{staticClass:\"close-tab\",on:{\"click\":_vm.close}},[_c('i',{staticClass:\"el-icon-arrow-right\"})]):_vm._e(),_c('div',{staticClass:\"sidebar-container\"},[(_vm.tabs.length > 1)?_c('tabs',{attrs:{\"tabTitles\":_vm.tabs,\"activeId\":_vm.activeId},on:{\"titleClicked\":_vm.tabClicked}}):_vm._e(),_vm._l((_vm.tabs),function(tab){return [_c('sidebar-content',{directives:[{name:\"show\",rawName:\"v-show\",value:(tab.id===_vm.activeId),expression:\"tab.id===activeId\"}],key:tab.id,ref:tab.id,refInFor:true,staticClass:\"sidebar-content-container\",attrs:{\"contextCardEntry\":tab.contextCard,\"envVars\":_vm.envVars},on:{\"search-changed\":function($event){return _vm.searchChanged(tab.id, $event)}}})]})],2)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{staticClass:\"content-card\",attrs:{\"body-style\":_vm.bodyStyle}},[_c('div',{staticClass:\"header\",attrs:{\"slot\":\"header\"},slot:\"header\"},[(_vm.contextCardEntry && _vm.contextCardEnabled)?_c('context-card',{attrs:{\"entry\":_vm.contextCardEntry}}):_vm._e(),_c('el-input',{staticClass:\"search-input\",attrs:{\"placeholder\":\"Search\",\"clearable\":\"\"},on:{\"clear\":_vm.clearSearchClicked},nativeOn:{\"keyup\":function($event){return _vm.searchEvent($event)}},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}}),_c('el-button',{staticClass:\"button\",on:{\"click\":_vm.searchEvent}},[_vm._v(\"Search\")])],1),_c('SearchFilters',{ref:\"filtersRef\",staticClass:\"filters\",attrs:{\"entry\":_vm.filterEntry,\"envVars\":_vm.envVars},on:{\"filterResults\":_vm.filterUpdate,\"numberPerPage\":_vm.numberPerPageUpdate,\"loading\":_vm.filtersLoading}}),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loadingCards),expression:\"loadingCards\"}],ref:\"content\",staticClass:\"content scrollbar\"},[(_vm.results.length === 0 && !_vm.loadingCards && !_vm.sciCrunchError)?_c('div',{staticClass:\"error-feedback\"},[_vm._v(\"No results found - Please change your search / filter criteria.\")]):_vm._e(),(_vm.sciCrunchError)?_c('div',{staticClass:\"error-feedback\"},[_vm._v(_vm._s(_vm.sciCrunchError))]):_vm._e(),_vm._l((_vm.results),function(o){return _c('div',{key:o.id,staticClass:\"step-item\"},[_c('DatasetCard',{attrs:{\"entry\":o,\"envVars\":_vm.envVars},on:{\"contextUpdate\":_vm.contextCardUpdate}})],1)}),_c('el-pagination',{staticClass:\"pagination\",attrs:{\"current-page\":_vm.page,\"hide-on-single-page\":\"\",\"large\":\"\",\"layout\":\"prev, pager, next\",\"page-size\":_vm.numberPerPage,\"total\":_vm.numberOfHits},on:{\"update:currentPage\":function($event){_vm.page=$event},\"update:current-page\":function($event){_vm.page=$event},\"current-change\":_vm.pageChange}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"filters\"},[_c('map-svg-sprite-color'),_c('transition',{attrs:{\"name\":\"el-zoom-in-top\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showFilters),expression:\"showFilters\"}],staticClass:\"search-filters transition-box\"},[_c('custom-cascader',{ref:\"cascader\",staticClass:\"cascader\",attrs:{\"placeholder\":\"\",\"collapse-tags\":true,\"options\":_vm.options,\"props\":_vm.props,\"show-all-levels\":false,\"append-to-body\":false},on:{\"change\":function($event){return _vm.cascadeEvent($event)},\"expand-change\":_vm.cascadeExpandChange,\"tags-changed\":_vm.tagsChangedCallback},model:{value:(_vm.cascadeSelected),callback:function ($$v) {_vm.cascadeSelected=$$v},expression:\"cascadeSelected\"}}),(_vm.showFiltersText)?_c('div',{staticClass:\"filter-default-value\"},[_vm._v(\" Filters \")]):_vm._e(),_c('el-popover',{attrs:{\"title\":\"How do filters work?\",\"width\":\"250\",\"trigger\":\"hover\",\"append-to-body\":false,\"popper-class\":\"popover\"}},[_c('map-svg-icon',{staticClass:\"help\",attrs:{\"slot\":\"reference\",\"icon\":\"help\"},slot:\"reference\"}),_c('div',[_c('strong',[_vm._v(\"Within categories:\")]),_vm._v(\" OR \"),_c('br'),_vm._v(\" example: 'heart' OR 'colon' \"),_c('br'),_c('br'),_c('strong',[_vm._v(\"Between categories:\")]),_vm._v(\" AND \"),_c('br'),_vm._v(\" example: 'rat' AND 'lung' \")])],1)],1)]),_c('el-select',{staticClass:\"number-shown-select\",attrs:{\"placeholder\":\"10\"},on:{\"change\":function($event){return _vm.numberShownChanged($event)}},model:{value:(_vm.numberShown),callback:function ($$v) {_vm.numberShown=$$v},expression:\"numberShown\"}},_vm._l((_vm.numberDatasetsShown),function(item){return _c('el-option',{key:item,attrs:{\"label\":item,\"value\":item}})}),1),_c('span',{staticClass:\"dataset-results-feedback\"},[_vm._v(_vm._s(this.numberOfResultsText))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}","<script>\n/* eslint-disable no-alert, no-console */\nimport { Cascader } from \"element-ui\";\n\nexport default {\n name: 'CustomCascader',\n extends: Cascader,\n methods:{\n //Modify this internal function to disable Show all tags\n computePresentTags() {\n const { isDisabled, leafOnly, showAllLevels, separator, collapseTags } = this;\n const checkedNodes = this.getCheckedNodes(leafOnly);\n const tags = [];\n const genTag = node => ({\n node,\n key: node.uid,\n text: node.getText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled && !node.isDisabled\n });\n let customNodes = checkedNodes.filter(node =>\n {\n return !(node.getText(showAllLevels, separator).includes(\"Show all\"));\n }\n );\n if (customNodes.length) {\n const [first, ...rest] = customNodes;\n const restCount = rest.length;\n tags.push(genTag(first));\n if (restCount) {\n if (collapseTags) {\n tags.push({\n key: -1,\n text: `+ ${restCount}`,\n closable: false\n });\n } else {\n rest.forEach(node => tags.push(genTag(node)));\n }\n }\n }\n this.checkedNodes = checkedNodes;\n this.presentTags = tags;\n this.$emit(\"tags-changed\", this.presentTags);\n }\n }\n}\n\n</script>\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!./Cascader.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!./Cascader.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 () { injectStyles.call(this, this.$root.$options.shadowRoot) }\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 functioal 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","var render, staticRenderFns\nimport script from \"./Cascader.vue?vue&type=script&lang=js&\"\nexport * from \"./Cascader.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","export default {\n 'homo sapiens': 'Human',\n 'rattus norvegicus': 'Rat',\n 'mus musculus': 'Mouse',\n 'sus scrofa domesticus': 'Pig',\n 'sus scrofa': 'Boar',\n 'felis catus': 'Cat'\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* eslint-disable no-alert, no-console */\nimport algoliasearch from 'algoliasearch'\n\n// export `createAlgoliaClient` to use it in page components\nexport class AlgoliaClient {\n constructor(algoliaId, algoliaKey, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n this.client = algoliasearch(\n algoliaId,\n algoliaKey\n )\n this.PENNSIEVE_API_LOCATION = PENNSIEVE_API_LOCATION\n }\n initIndex(ALGOLIA_INDEX) {\n this.index = this.client.initIndex(ALGOLIA_INDEX);\n }\n\n getAlgoliaFacets (propPathMapping) {\n const map = new Map(Object.entries(propPathMapping));\n const facetPropPaths = Array.from(map.keys() );\n let facetData = []\n let facetId = 0\n return this.index\n .search('', {\n sortFacetValuesBy: 'alpha',\n facets: facetPropPaths\n })\n .then(response => {\n facetPropPaths.map((facetPropPath) => {\n var children = []\n const responseFacets = response.facets\n if (responseFacets === undefined) {return}\n const responseFacetChildren =\n responseFacets[facetPropPath] == undefined\n ? {}\n : responseFacets[facetPropPath]\n Object.keys(responseFacetChildren).map(facet => {\n children.push({\n label: facet,\n id: facetId++,\n facetPropPath: facetPropPath\n })\n })\n if (children.length > 0) {\n facetData.push({\n label: map.get(facetPropPath),\n id: facetId++,\n children: children,\n key: facetPropPath\n })\n }\n })\n return facetData\n })\n }\n \n // Returns all DOIs of all versions for a given discover dataset\n _discoverAllDois (discoverId, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n return new Promise(resolve => {\n fetch(`${PENNSIEVE_API_LOCATION}/discover/datasets/${discoverId}/versions`).then(r=>r.json()).then(dataset => {\n resolve(dataset.map(version => version.doi))\n })\n })\n }\n \n // Get all dois given a list of discoverIds\n _expandDois (discoverIds, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n return new Promise(resolve => {\n let promiseList = discoverIds.map(discoverId => this._discoverAllDois(discoverId, PENNSIEVE_API_LOCATION))\n Promise.all(promiseList).then((values) => {\n resolve(values.flat())\n });\n })\n }\n \n /**\n * Get Search results\n * This is using fetch from the Algolia API\n */\n search (filter, query='', hitsperPage=10, page=1) {\n return new Promise(resolve => {\n this.index\n .search(query, {\n facets:['*'],\n hitsPerPage: hitsperPage,\n page: page-1,\n filters: filter\n })\n .then(response => {\n let searchData = {\n items: response.hits,\n total: response.nbHits,\n discoverIds: response.hits.map(r=>r.pennsieve.identifier),\n dois: response.hits.map(r=>r.item.curie.split(':')[1])\n }\n resolve(searchData)\n })\n })\n }\n}\n","/* eslint-disable no-alert, no-console */\n\n// Mapping between display categories and their Algolia index property path\n// Used for populating the Dataset Search Results facet menu dynamically\nexport const facetPropPathMapping = {\n 'anatomy.organ.name' : 'Anatomical Structure',\n 'organisms.primary.species.name' : 'Species',\n 'item.modalities.keyword' : 'Experimental Approach',\n 'attributes.subject.sex.value' : 'Sex',\n 'attributes.subject.ageCategory.value' : 'Age Categories',\n}\n\n/* Returns filter for searching algolia. All facets of the same category are joined with OR,\n * and each of those results is then joined with an AND.\n * i.e. (color:blue OR color:red) AND (shape:circle OR shape:red) */\nexport function getFilters(selectedFacetArray=undefined) {\n \n // return all datasets if no filter\n if (selectedFacetArray === undefined) {\n return 'NOT item.published.status:embargo'\n }\n\n // Switch the 'term' attribute to 'label' if 'label' does not exist \n selectedFacetArray.forEach(f=>f.label=f.facet)\n \n\n let facets = removeShowAllFacets(selectedFacetArray)\n\n let filters = \"NOT item.published.status:embargo\";\n filters = `(${filters}) AND `;\n\n const facetPropPaths = Object.keys(facetPropPathMapping);\n facetPropPaths.map((facetPropPath) => {\n const facetsToOr = facets.filter(\n (facet) => facet.facetPropPath == facetPropPath\n );\n var filter = \"\";\n facetsToOr.map((facet) => {\n filter += `\"${facetPropPath}\":\"${facet.label}\" OR `;\n });\n if (filter == \"\") {\n return;\n }\n filter = `(${filter.substring(0, filter.lastIndexOf(\" OR \"))})`;\n filters += `${filter} AND `;\n });\n return filters.substring(0, filters.lastIndexOf(\" AND \"));\n}\n\nfunction removeShowAllFacets(facetArray){\n return facetArray.filter( f => f.label !== 'Show all')\n}","<template>\n <div class=\"filters\">\n <map-svg-sprite-color />\n <transition name=\"el-zoom-in-top\">\n <span v-show=\"showFilters\" class=\"search-filters transition-box\">\n <custom-cascader\n class=\"cascader\"\n ref=\"cascader\"\n v-model=\"cascadeSelected\"\n placeholder\n :collapse-tags=\"true\"\n :options=\"options\"\n :props=\"props\"\n @change=\"cascadeEvent($event)\"\n @expand-change=\"cascadeExpandChange\"\n :show-all-levels=\"false\"\n :append-to-body=\"false\"\n @tags-changed=\"tagsChangedCallback\"\n ></custom-cascader>\n <div v-if=\"showFiltersText\" class=\"filter-default-value\">\n Filters\n </div>\n <el-popover\n title=\"How do filters work?\"\n width=\"250\"\n trigger=\"hover\"\n :append-to-body=false\n popper-class=\"popover\"\n >\n <map-svg-icon slot=\"reference\" icon=\"help\" class=\"help\"/>\n <div >\n <strong>Within categories:</strong> OR \n <br/>\n example: 'heart' OR 'colon'\n <br/>\n <br/>\n <strong>Between categories:</strong> AND\n <br/>\n example: 'rat' AND 'lung'\n </div>\n </el-popover>\n \n </span>\n </transition>\n\n <el-select\n class=\"number-shown-select\"\n v-model=\"numberShown\"\n placeholder=\"10\"\n @change=\"numberShownChanged($event)\"\n >\n <el-option\n v-for=\"item in numberDatasetsShown\"\n :key=\"item\"\n :label=\"item\"\n :value=\"item\"\n ></el-option>\n </el-select>\n <span class=\"dataset-results-feedback\">{{ this.numberOfResultsText }}</span>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Option, Select, Popover } from \"element-ui\";\nimport CustomCascader from \"./Cascader\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport speciesMap from \"./species-map\";\nimport { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\n\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\nimport { facetPropPathMapping } from \"../algolia/utils.js\";\n\nlocale.use(lang);\nVue.use(Option);\nVue.use(Select);\nVue.use(Popover)\n\nconst capitalise = function (txt) {\n return txt.charAt(0).toUpperCase() + txt.slice(1);\n};\n\nconst convertReadableLabel = function (original) {\n const name = original.toLowerCase();\n if (speciesMap[name]) {\n return capitalise(speciesMap[name]);\n } else {\n return capitalise(name);\n }\n};\n\nexport default {\n name: \"SearchFilters\",\n components: {\n CustomCascader,\n MapSvgIcon,\n MapSvgSpriteColor,\n },\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n envVars: {\n type: Object,\n default: ()=>{}\n },\n },\n data: function () {\n return {\n cascaderIsReady: false,\n previousShowAllChecked: {\n species: false,\n gender: false,\n organ: false,\n datasets: false,\n },\n showFilters: true,\n showFiltersText: true,\n cascadeSelected: [],\n numberShown: 10,\n filters: [],\n facets: [\"Species\", \"Gender\", \"Organ\", \"Datasets\"],\n numberDatasetsShown: [\"10\", \"20\", \"50\"],\n props: { multiple: true },\n options: [\n {\n value: \"Species\",\n label: \"Species\",\n children: [{}],\n },\n ],\n };\n },\n computed: {\n numberOfResultsText: function () {\n return `${this.entry.numberOfHits} results | Showing`;\n },\n },\n methods: {\n createCascaderItemValue: function (term, facet) {\n if (facet) return term + \"/\" + facet;\n else return term;\n },\n populateCascader: function () {\n return new Promise((resolve) => {\n // Algolia facet serach\n this.algoliaClient.getAlgoliaFacets(facetPropPathMapping)\n .then((data) => {\n this.facets = data;\n this.options = data;\n\n // create top level of options in cascader\n this.options.forEach((facet, i) => {\n this.options[i].label = convertReadableLabel(facet.label);\n this.options[i].value = this.createCascaderItemValue(\n facet.key,\n undefined\n );\n\n // put \"Show all\" as first option\n this.options[i].children.unshift({\n value: this.createCascaderItemValue(\"Show all\"),\n label: \"Show all\",\n });\n\n // populate second level of options \n this.options[i].children.forEach((facetItem, j) => {\n this.options[i].children[j].label = convertReadableLabel(\n facetItem.label\n );\n this.options[i].children[j].value =\n this.createCascaderItemValue(facet.label, facetItem.label);\n });\n });\n this.createDataTypeFacet()\n })\n .finally(() => {\n resolve();\n });\n });\n },\n tagsChangedCallback: function (presentTags) {\n if (presentTags.length > 0) {\n this.showFiltersText = false;\n } else {\n this.showFiltersText = true;\n }\n },\n // cascadeEvent: initiate searches based off cascader changes\n cascadeEvent: function (event) {\n if (event) {\n // Check for show all in selected cascade options\n event = this.showAllEventModifier(event);\n\n // Create results for the filter update \n let filterKeys = event.filter( selection => selection !== undefined).map( fs => ({\n facetPropPath: fs[0], \n facet: fs[1].split(\"/\")[1],\n term: fs[1].split(\"/\")[0], \n }))\n\n // Move results from arrays to object for use on scicrunch (note that we remove 'duplicate' as that is only needed for filter keys)\n let filters = event.filter( selection => selection !== undefined).map( fs => {\n let propPath = fs[0].includes('duplicate') ? fs[0].split('duplicate')[0] : fs[0]\n return {\n facetPropPath: propPath, \n facet: fs[1].split(\"/\")[1],\n term: fs[1].split(\"/\")[0], \n }\n })\n\n\n this.$emit('loading', true) // let sidebarcontent wait for the requests\n\n this.$emit(\"filterResults\", filters); // emit filters for apps above sidebar\n this.setCascader(filterKeys); //update our cascader v-model if we modified the event\n this.makeCascadeLabelsClickable();\n }\n },\n // showAllEventModifier: Modifies a cascade event to unlick all selections in category if \"show all\" is clicked. Also unchecks \"Show all\" if any secection is clicked\n // *NOTE* Does NOT remove 'Show all' selections from showing in 'cascadeSelected'\n showAllEventModifier: function (event) {\n // check if show all is in the cascader checked option list\n let hasShowAll = event\n .map((ev) => (ev ? ev[1].toLowerCase().includes(\"show all\") : false))\n .includes(true);\n // remove all selected options below the show all if checked\n if (hasShowAll) {\n let modifiedEvent = [];\n let facetMaps = {};\n //catagorised different facet items\n for (const i in event) {\n if (facetMaps[event[i][0]] === undefined) facetMaps[event[i][0]] = [];\n facetMaps[event[i][0]].push(event[i]);\n }\n // go through each facets\n for (const facet in facetMaps) {\n let showAll = undefined;\n // Find the show all item if any\n for (let i = facetMaps[facet].length - 1; i >= 0; i--) {\n if (facetMaps[facet][i][1].toLowerCase().includes(\"show all\")) {\n //seperate the showAll item and the rest\n showAll = facetMaps[facet].splice(i, 1)[0];\n break;\n }\n }\n if (showAll) {\n if (this.previousShowAllChecked[facet]) {\n //Unset the show all if it was present previously\n //and there are other items\n if (facetMaps[facet].length > 0)\n modifiedEvent.push(...facetMaps[facet]);\n else modifiedEvent.push(showAll);\n } else {\n //showAll is turned on\n modifiedEvent.push(showAll);\n }\n } else {\n modifiedEvent.push(...facetMaps[facet]);\n }\n }\n //Make sure the expanded item are sorted first.\n return modifiedEvent.sort((a, b) => {\n if (this.__expandItem__) {\n if (a[0] == this.__expandItem__) {\n if (b[0] == this.__expandItem__) {\n return 0;\n } else {\n return -1;\n }\n } else if (b[0] == this.__expandItem__) {\n if (a[0] == this.__expandItem__) {\n return 0;\n } else {\n return 1;\n }\n } else {\n return 0;\n }\n } else return 0;\n });\n }\n return event;\n },\n createDataTypeFacet: function(){\n let dataFacet = {...this.facets[2]} // copy the 'Experiemental approach' facet\n let count = this.facets.at(-1).id // get the last id count\n\n // Step through the children that are valid data types, switch thier values \n let newChildren = dataFacet.children.filter( el=> {\n if (el.label === 'Scaffold' || el.label === 'Simulation' || el.label === 'Show all'){\n el.key = el.label\n el.id = count\n el.value = el.value.replace('Experimental approach', 'Data type')\n count++\n return el\n }\n })\n dataFacet.id = count\n dataFacet.key = 'Data type'\n // Add 'duplicate' so that the key is unique. This is removed in the cascade event for filtering\n dataFacet.value += 'duplicate' \n dataFacet.children = newChildren\n dataFacet.label = 'Data type'\n this.facets.push(dataFacet)\n },\n cascadeExpandChange: function (event) {\n //work around as the expand item may change on modifying the cascade props\n this.__expandItem__ = event;\n this.makeCascadeLabelsClickable();\n },\n numberShownChanged: function (event) {\n this.$emit(\"numberPerPage\", parseInt(event));\n },\n updatePreviousShowAllChecked: function (options) {\n //Reset the states\n for (const facet in this.previousShowAllChecked) {\n this.previousShowAllChecked[facet] = false;\n }\n options.forEach((element) => {\n if (element[1].toLowerCase().includes(\"show all\"))\n this.previousShowAllChecked[element[0]] = true;\n });\n },\n // setCascader: Clears previous selections and takes in an array of facets to select: filterFacets\n // facets are in the form:\n // {\n // facetPropPath: 'anatomy.organ.name',\n // term: 'Sex',\n // facet: 'Male'\n // }\n setCascader: function (filterFacets) {\n //Do not set the value unless it is ready\n if (this.cascaderIsReady && filterFacets && filterFacets.length != 0) {\n this.cascadeSelected = filterFacets.map(e => {\n return [\n e.facetPropPath,\n this.createCascaderItemValue(capitalise(e.term), e.facet),\n ]\n });\n this.updatePreviousShowAllChecked(this.cascadeSelected);\n }\n },\n addFilter: function (filter) {\n //Do not set the value unless it is ready\n if (this.cascaderIsReady && filter) {\n this.cascadeSelected.filter(f=>f.term != filter.term)\n this.cascadeSelected.push([filter.facetPropPath, this.createCascaderItemValue(filter.term, filter.facet)])\n }\n },\n initiateSearch: function() {\n this.cascadeEvent(this.cascadeSelected)\n },\n // checkShowAllBoxes: Checks each 'Show all' cascade option by using the setCascader function\n checkShowAllBoxes: function(){\n this.setCascader(\n this.options.map(option => {\n return {\n facetPropPath: option.value,\n term: option.label,\n facet: 'Show all'\n }\n })\n )\n },\n makeCascadeLabelsClickable: function () {\n // Next tick allows the cascader menu to change\n this.$nextTick(() => {\n this.$refs.cascader.$el\n .querySelectorAll(\".el-cascader-node__label\")\n .forEach((el) => {\n // step through each cascade label\n el.onclick = function () {\n const checkbox = this.previousElementSibling;\n if (checkbox) {\n if (!checkbox.parentElement.attributes[\"aria-owns\"]) {\n // check if we are at the lowest level of cascader\n this.previousElementSibling.click(); // Click the checkbox\n }\n }\n };\n });\n });\n },\n },\n mounted: function () {\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\n this.populateCascader().then(() => {\n this.cascaderIsReady = true;\n this.checkShowAllBoxes()\n this.setCascader(this.entry.filterFacets);\n this.makeCascadeLabelsClickable();\n });\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.filter-default-value {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n padding-top: 10px;\n padding-left: 16px;\n}\n\n.help {\n width: 24px !important;\n height: 24px;\n transform: scale(1.1);\n color: #8300bf;\n cursor: pointer;\n}\n\n.popover {\n color: rgb(48, 49, 51);\n font-family: Asap;\n margin: 12px;\n}\n\n.filter-icon-inside {\n width: 12px !important;\n height: 12px !important;\n color: #292b66;\n transform: scale(2) !important;\n margin-bottom: 0px !important;\n}\n\n.cascader {\n font-family: Asap;\n font-size: 14px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #292b66;\n text-align: center;\n padding-bottom: 6px;\n}\n\n.cascader >>> .el-cascder-panel {\n max-height: 500px;\n}\n\n.cascader >>> .el-scrollbar__wrap {\n overflow-x: hidden;\n margin-bottom: 2px !important;\n}\n\n.cascader >>> li[aria-owns*=\"cascader\"] > .el-checkbox {\n display: none;\n}\n\n.dataset-results-feedback {\n float: right;\n text-align: right;\n color: rgb(48, 49, 51);\n font-family: Asap;\n font-size: 18px;\n font-weight: 500;\n padding-top: 8px;\n}\n\n.search-filters {\n position: relative;\n float: left;\n padding-right: 15px;\n padding-bottom: 12px;\n}\n\n.number-shown-select {\n float: right;\n}\n\n.number-shown-select >>> .el-input__inner {\n width: 68px;\n height: 40px;\n color: rgb(48, 49, 51);\n}\n\n.search-filters >>> .el-cascader-node.is-active {\n color: #8300bf;\n}\n\n.search-filters >>> .el-cascader-node.in-active-path {\n color: #8300bf;\n}\n\n.search-filters >>> .el-checkbox__input.is-checked > .el-checkbox__inner {\n background-color: #8300bf;\n border-color: #8300bf;\n}\n\n.cascader >>> .el-cascader-menu:nth-child(2) .el-cascader-node:first-child {\n border-bottom: 1px solid #e4e7ed;\n}\n\n.cascader >>> .el-cascader-node__label {\n text-align: left;\n}\n\n.filters >>> .el-popover {\n background: #f3ecf6 !important;\n border: 1px solid #8300BF;\n border-radius: 4px;\n color: #303133 !important;\n font-size: 12px;\n line-height: 18px;\n \n \n}\n\n.filters >>> .el-popover[x-placement^=\"top\"] .popper__arrow {\n border-top-color: #8300BF;\n border-bottom-width: 0;\n}\n.filters >>> .el-popover[x-placement^=\"top\"] .popper__arrow::after {\n border-top-color: #f3ecf6;\n border-bottom-width: 0;\n}\n\n.filters >>> .el-popover[x-placement^=\"bottom\"] .popper__arrow {\n border-top-width: 0;\n border-bottom-color: #8300BF;\n}\n.filters >>> .el-popover[x-placement^=\"bottom\"] .popper__arrow::after {\n border-top-width: 0;\n border-bottom-color: #f3ecf6;\n}\n\n.filters >>> .el-popover[x-placement^=\"right\"] .popper__arrow {\n border-right-color: #8300BF;\n border-left-width: 0;\n}\n.filters >>> .el-popover[x-placement^=\"right\"] .popper__arrow::after {\n border-right-color: #f3ecf6;\n border-left-width: 0;\n}\n\n.filters >>> .el-popover[x-placement^=\"left\"] .popper__arrow {\n border-right-width: 0;\n border-left-color: #8300BF;\n}\n.filters >>> .el-popover[x-placement^=\"left\"] .popper__arrow::after {\n border-right-width: 0;\n border-left-color: #f3ecf6;\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!./SearchFilters.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!./SearchFilters.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchFilters.vue?vue&type=template&id=57801ec0&scoped=true&\"\nimport script from \"./SearchFilters.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchFilters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchFilters.vue?vue&type=style&index=0&id=57801ec0&scoped=true&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 \"57801ec0\",\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',{ref:\"container\",staticClass:\"dataset-card-container\"},[_c('div',{ref:\"card\",class:_vm.expanded ? 'dataset-card-expanded' : 'dataset-card'},[_c('div',{staticClass:\"seperator-path\"}),_c('div',{staticClass:\"card\"},[_c('span',{staticClass:\"card-left\"},[(_vm.dataIsReady)?_c('image-gallery',{attrs:{\"datasetId\":_vm.discoverId,\"datasetVersion\":_vm.version,\"envVars\":_vm.envVars,\"images\":_vm.entry.images,\"scaffolds\":_vm.entry.scaffolds,\"scaffoldViews\":_vm.entry.scaffoldViews,\"segmentations\":_vm.entry.segmentation,\"additionalLinks\":_vm.simulationLinks,\"videos\":_vm.entry.videos,\"thumbnails\":_vm.entry.thumbnails,\"label\":_vm.label,\"datasetThumbnail\":_vm.thumbnail},on:{\"card-clicked\":_vm.galleryClicked}}):_vm._e()],1),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\",on:{\"click\":_vm.cardClicked}},[_vm._v(_vm._s(_vm.entry.name))]),_c('div',{staticClass:\"details\"},[_vm._v(_vm._s(_vm.contributors)+\" \"+_vm._s(_vm.entry.publishDate ? (\"(\" + _vm.publishYear + \")\") : ''))]),_c('div',{staticClass:\"details\"},[_vm._v(_vm._s(_vm.samples))]),_c('div',{staticClass:\"details\"},[_vm._v(\"id: \"+_vm._s(_vm.discoverId))]),_c('div',[(_vm.entry.simulation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openRepository}},[_vm._v(\"View repository\")]):_vm._e()],1)])]),((_vm.cardOverflow && !_vm.expanded))?_c('p',{staticClass:\"read-more\"},[_c('el-button',{staticClass:\"read-more-button\",on:{\"click\":_vm.expand}},[_vm._v(\"Read more...\")])],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nconst EventBus = new Vue();\nexport default EventBus;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"full-size\"},[_c('gallery',{attrs:{\"bottomSpacer\":_vm.bottomSpacer,\"cardWidth\":10,\"items\":_vm.galleryItems,\"max-width\":_vm.maxWidth,\"show-indicator-bar\":true,\"show-card-details\":true,\"highlight-active\":false,\"image-style\":_vm.imageStyle,\"image-container-style\":_vm.imageContainerStyle,\"body-style\":_vm.bodyStyle,\"shadow\":_vm.shadow},on:{\"card-clicked\":_vm.cardClicked}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"full-size\">\n <gallery\n :bottomSpacer=\"bottomSpacer\"\n :cardWidth=\"10\"\n :items=\"galleryItems\"\n :max-width=\"maxWidth\"\n :show-indicator-bar=\"true\"\n :show-card-details=\"true\"\n :highlight-active=\"false\"\n :image-style=\"imageStyle\"\n :image-container-style=\"imageContainerStyle\"\n :body-style=\"bodyStyle\"\n :shadow=\"shadow\"\n @card-clicked=\"cardClicked\"\n />\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nconst baseName = (str) => {\n return str.split(\"\\\\\").pop().split(\"/\").pop();\n};\n\nconst capitalise = function (string) {\n return string.replace(/\\b\\w/g, (v) => v.toUpperCase());\n};\n\nimport GalleryHelper from \"@abi-software/gallery/src/mixins/GalleryHelpers\";\nimport Gallery from \"@abi-software/gallery\";\n\nexport default {\n name: \"ImageGallery\",\n components: { Gallery },\n mixins: [GalleryHelper],\n props: {\n datasetScicrunch: {\n type: Object,\n default: () => {\n return {};\n },\n },\n datasetBiolucida: {\n type: Object,\n default: () => {\n return {};\n },\n },\n envVars: {\n type: Object,\n default: () => {},\n },\n label: {\n type: String,\n default: \"\",\n },\n images: {\n type: Array,\n default: () => {\n return [];\n },\n },\n plots: {\n type: Array,\n default: () => {\n return [];\n },\n },\n scaffolds: {\n type: Array,\n default: () => {\n return [];\n },\n },\n scaffoldViews: {\n type: Array,\n default: () => {\n return [];\n },\n },\n segmentations: {\n type: Array,\n default: () => {\n return [];\n },\n },\n additionalLinks: {\n type: Array,\n default: () => {\n return [];\n },\n },\n thumbnails: {\n type: Array,\n default: () => {\n return [];\n },\n },\n videos: {\n type: Array,\n default: () => {\n return [];\n },\n },\n datasetId: {\n type: Number,\n default: -1,\n },\n datasetVersion: {\n type: Number,\n default: -1,\n },\n datasetThumbnail: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n currentIndex: 0,\n ro: null,\n maxWidth: 3,\n scicrunchItems: [],\n biolucidaItems: [],\n bodyStyle: { padding: '0px', background: '#ffffff' },\n imageContainerStyle: { width: '160px', height: '160px'},\n imageStyle: { maxWidth: '160px', maxHeight: '160px'},\n shadow: \"never\",\n bottomSpacer: { minHeight: '1.5rem' },\n };\n },\n methods: {\n cardClicked: function(payload) {\n this.$emit('card-clicked', payload);\n },\n createSciCurnchItems: function () {\n this.createDatasetItem();\n this.createScaffoldItems();\n this.createSimulationItems();\n this.createPlotItems();\n this.createSegmentationItems();\n this.createImageItems();\n this.createVideoItems();\n },\n createDatasetItem: function () {\n const link = `${this.envVars.ROOT_URL}/datasets/${this.datasetId}?type=dataset`\n if (this.datasetThumbnail) {\n this.scicrunchItems.push({\n id: -1,\n title: link,\n type: `Dataset ${this.datasetId}`,\n thumbnail: this.datasetThumbnail,\n link,\n });\n }\n },\n createImageItems: function () {\n if (this.images) {\n this.images.forEach((image) => {\n const filePath = image.dataset.path;\n const id = image.identifier;\n const linkUrl = `${this.envVars.ROOT_URL}/datasets/imageviewer?dataset_id=${this.datasetId}&dataset_version=${this.datasetVersion}&file_path=${filePath}&mimetype=${image.mimetype.name}`;\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Image\",\n link: linkUrl,\n });\n });\n }\n },\n createPlotItems: function () {\n if (this.plots) {\n this.plots.forEach((plot) => {\n const filePath = plot.dataset.path;\n const id = plot.identifier;\n const thumbnail = this.getThumbnailForPlot(plot, this.thumbnails);\n let thumbnailURL = undefined;\n let mimetype = '';\n if (thumbnail) {\n thumbnailURL = this.getImageURLFromS3(this.envVars.API_LOCATION, {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n file_path: thumbnail.dataset.path,\n });\n mimetype = thumbnail.mimetype.name;\n }\n let action = {\n label: capitalise(this.label),\n resource: `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${filePath}`,\n title: \"View plot\",\n type: \"Plot\",\n discoverId: this.discoverId,\n version: this.datasetVersion,\n };\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Plot\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype\n });\n });\n }\n },\n createScaffoldItems: function () {\n if (this.scaffolds) {\n let index = 0;\n this.scaffolds.forEach((scaffold) => {\n const filePath = scaffold.dataset.path;\n const id = scaffold.identifier;\n const thumbnail = this.getThumbnailForScaffold(\n scaffold,\n this.scaffoldViews,\n this.thumbnails,\n index\n );\n let mimetype = '';\n let thumbnailURL = undefined;\n if (thumbnail) {\n thumbnailURL = this.getImageURLFromS3(this.envVars.API_LOCATION, {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n file_path: thumbnail.dataset.path,\n });\n mimetype = thumbnail.mimetype.name;\n }\n let action = {\n label: capitalise(this.label),\n resource: `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${filePath}`,\n title: \"View 3D scaffold\",\n type: \"Scaffold\",\n discoverId: this.datasetId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.datasetVersion,\n };\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Scaffold\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype\n });\n });\n }\n },\n createSegmentationItems: function () {\n if (this.segmentations) {\n this.segmentations.forEach((segmentation) => {\n const id = segmentation.id;\n let filePath = segmentation.dataset.path;\n filePath = filePath.replaceAll(\" \", \"_\");\n filePath = filePath.replaceAll(\",\", \"_\");\n const prefix = this.envVars.NL_LINK_PREFIX;\n const resource = {\n share_link: `${prefix}/dataviewer?datasetId=${this.datasetId}&version=${this.datasetVersion}&path=${filePath}`,\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n datasetId: this.datasetId,\n title: \"View segmentation\",\n type: \"Segmentation\",\n };\n const thumbnailURL = this.getSegmentationThumbnailURL(\n this.envVars.API_LOCATION,\n {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n segmentationFilePath: filePath,\n }\n );\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Segmentation\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype: 'image/png',\n });\n });\n }\n },\n createSimulationItems: function () {\n let isSedmlResource = false;\n let resource = undefined;\n if (this.additionalLinks) {\n this.additionalLinks.forEach(function(el) {\n if (el.description == \"SED-ML file\") {\n isSedmlResource = true;\n resource = el.uri;\n } else if (!isSedmlResource && (el.description == \"CellML file\")) {\n resource = el.uri;\n }\n });\n if (resource) {\n let action = {\n label: undefined,\n resource: resource,\n apiLocation: this.envVars.API_LOCATION,\n version: this.datasetVersion,\n title: \"View simulation\",\n type: \"Simulation\"\n };\n this.scicrunchItems.push({\n id: \"simulation\",\n title: resource,\n type: \"Simulation\",\n userData: action,\n });\n }\n }\n },\n createVideoItems: function () {\n if (this.videos) {\n this.videos.forEach((video) => {\n const filePath = this.getS3FilePath(\n this.datasetId,\n this.datasetVersion,\n video.dataset.path\n );\n const linkUrl = `${this.envVars.ROOT_URL}/datasets/videoviewer?dataset_version=${this.datasetVersion}&dataset_id=${this.datasetId}&file_path=${filePath}&mimetype=${video.mimetype.name}`;\n this.scicrunchItems.push({\n title: video.name,\n type: \"Video\",\n thumbnail: this.defaultVideoImg,\n link: linkUrl,\n });\n });\n }\n },\n onResize: function () {\n this.maxWidth = this.$el.clientWidth;\n // this.$emit('resize', this.$el.clientWidth)\n },\n },\n computed: {\n galleryItems() {\n return this.scicrunchItems.concat(this.biolucidaItems);\n },\n },\n created: function () {\n this.createSciCurnchItems();\n },\n watch: {\n datasetBiolucida: {\n deep: true,\n immediate: true,\n handler: function (biolucidaData) {\n let items = [];\n if (\"dataset_images\" in biolucidaData) {\n items.push(\n ...Array.from(biolucidaData.dataset_images, (dataset_image) => {\n const thumbnailURL = this.getThumbnailURLFromBiolucida(\n this.envVars.API_LOCATION,\n {\n id: dataset_image.image_id,\n }\n );\n this.getImageInfoFromBiolucida(\n this.envVars.API_LOCATION,\n items,\n {\n id: dataset_image.image_id,\n fetchAttempts: 0,\n }\n );\n const resource = {\n share_link: dataset_image.share_link,\n id: dataset_image.image_id,\n itemId: dataset_image.sourcepkg_id,\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n datasetId: this.datasetId,\n title: \"View image\",\n name: capitalise(this.label),\n type: \"Biolucida\",\n };\n return {\n id: dataset_image.image_id,\n title: null,\n type: \"Image\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype: 'image/png'\n };\n })\n );\n }\n this.biolucidaItems = items;\n },\n },\n },\n mounted() {\n this.ro = new ResizeObserver(this.onResize).observe(this.$el);\n },\n destroyed() {\n delete this.ro;\n },\n};\n</script>\n\n<style scoped>\n.full-size {\n height: 100%;\n width: 244px;\n}\n\n.key-image-span.active {\n transform: scale(1.16);\n border: 4px #8300bf solid;\n}\n\n.key-image-span {\n display: flex;\n position: relative;\n}\n\n.overlay {\n position: absolute;\n right: 5px;\n top: 5px;\n width: 1.61em;\n height: 1em;\n border-radius: 3px;\n opacity: 0.8;\n}\n\nimg {\n vertical-align: bottom;\n}\n\na.prev,\na.next {\n display: flex;\n font-size: 3em;\n}\n\na.prev:not(.underline),\na.next:not(.underline) {\n text-decoration: none;\n}\n\na.prev {\n justify-content: flex-start;\n}\n\na.next {\n justify-content: flex-end;\n}\n\n.standard-gallery {\n display: flex;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n\n.image-line {\n display: flex;\n margin-top: 1%;\n margin-bottom: 1%;\n flex-grow: 1;\n justify-content: space-between;\n}\n.disabled {\n opacity: 0.2;\n cursor: default;\n}\n\n.rectangle {\n height: 1em;\n width: 2em;\n border-radius: 3px;\n background-color: #555;\n}\n\n.full-size >>> .el-card {\n border: 0px;\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!./ImageGallery.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!./ImageGallery.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageGallery.vue?vue&type=template&id=7952968e&scoped=true&\"\nimport script from \"./ImageGallery.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageGallery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageGallery.vue?vue&type=style&index=0&id=7952968e&scoped=true&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 \"7952968e\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"dataset-card-container\" ref=\"container\">\n <div v-bind:class=\" expanded ? 'dataset-card-expanded' : 'dataset-card'\" ref=\"card\">\n <!-- The seperator-path css is set on SidebarContent.vue -->\n <div class=\"seperator-path\"></div>\n <div class=\"card\" >\n <span class=\"card-left\">\n <!--\n <img svg-inline class=\"banner-img\" :src=\"thumbnail\" @click=\"openDataset\"/>\n -->\n <image-gallery v-if=\"dataIsReady\" \n :datasetId=\"discoverId\"\n :datasetVersion=\"version\"\n :envVars=\"envVars\"\n :images=\"entry.images\"\n :scaffolds=\"entry.scaffolds\"\n :scaffoldViews=\"entry.scaffoldViews\"\n :segmentations=\"entry.segmentation\"\n :additionalLinks=\"simulationLinks\"\n :videos=\"entry.videos\"\n :thumbnails=\"entry.thumbnails\"\n :label=\"label\"\n :datasetThumbnail=\"thumbnail\"\n @card-clicked=\"galleryClicked\"/>\n </span>\n <div class=\"card-right\" >\n <div class=\"title\" @click=\"cardClicked\">{{entry.name}}</div>\n <div class=\"details\">{{contributors}} {{entry.publishDate ? `(${publishYear})` : ''}}</div>\n <div class=\"details\">{{samples}}</div>\n <div class=\"details\">id: {{discoverId}}</div>\n <!--\n <div>\n <el-button v-if=\"!entry.simulation\" @click=\"openDataset\" size=\"mini\" class=\"button\" icon=\"el-icon-coin\">View dataset</el-button>\n </div>\n <div>\n <el-button v-if=\"entry.scaffolds\" @click=\"openScaffold\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View scaffold</el-button>\n </div>\n -->\n <!--\n <div>\n <el-button v-if=\"hasCSVFile\" @click=\"openPlot\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View plot</el-button>\n </div>\n -->\n <div>\n <el-button v-if=\"entry.simulation\" @click=\"openRepository\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View repository</el-button>\n </div>\n <!--\n <div>\n <el-button v-if=\"entry.simulation\" @click=\"openSimulation\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View simulation</el-button>\n </div>\n -->\n <!--\n <div>\n <el-button v-if=\"entry.segmentation\" @click=\"openSegmentation\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View segmentation</el-button>\n </div>\n <div>\n <el-button v-if=\"biolucidaData\" @click=\"openImage\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View image</el-button>\n </div>\n -->\n </div>\n\n </div>\n <p v-if=\"(cardOverflow && !expanded)\" class=\"read-more\"><el-button @click=\"expand\" class=\"read-more-button\">Read more...</el-button></p>\n </div>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Button, Icon } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport EventBus from \"./EventBus\"\nimport speciesMap from \"./species-map\";\nimport ImageGallery from \"./ImageGallery.vue\";\n\nlocale.use(lang);\nVue.use(Button);\nVue.use(Icon);\n\nconst capitalise = function(string){\n return string.replace(/\\b\\w/g, v => v.toUpperCase());\n}\n\nexport default {\n name: \"DatasetCard\",\n components: { ImageGallery },\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n envVars: {\n type: Object,\n default: () => {}\n },\n },\n data: function () {\n return {\n dataIsReady: false,\n thumbnail: require('@/../assets/missing-image.svg'),\n dataLocation: this.entry.doi,\n discoverId: undefined,\n cardOverflow: false,\n expanded: false,\n biolucidaData: undefined\n };\n },\n computed: {\n contributors: function() {\n let text = \"\";\n if (this.entry.contributors) {\n if (this.entry.contributors.length === 1) {\n text = this.lastName(this.entry.contributors[0].name);\n } else if (this.entry.contributors.length === 2) {\n text = this.lastName(this.entry.contributors[0].name) + \" & \" + this.lastName(this.entry.contributors[1].name);\n } else if (this.entry.contributors.length > 2) {\n text = this.lastName(this.entry.contributors[0].name) + \" et al.\";\n }\n }\n return text;\n },\n samples: function() {\n let text = \"\";\n if (this.entry.species) {\n if (speciesMap[this.entry.species[0].toLowerCase()]){\n text = `${speciesMap[this.entry.species[0].toLowerCase()]}`;\n } else {\n text = `${this.entry.species}`;\n }\n }\n if (this.entry.numberSamples > 0) {\n text += \" (\";\n if (this.entry.numberSamples === 1) {\n text += `${this.entry.numberSamples} sample`;\n } else if (this.entry.numberSamples > 1) {\n text += `${this.entry.numberSamples} samples`;\n }\n if (this.entry.numberSubjects === 1) {\n text += ` from ${this.entry.numberSubjects} subject`;\n } else if (this.entry.numberSamples > 1) {\n text += ` from ${this.entry.numberSubjects} subjects`;\n }\n text += \")\";\n }\n\n return text;\n },\n simulationLinks: function() {\n if (this.entry.additionalLinks) {\n if (typeof this.entry.additionalLinks != \"boolean\")\n return this.entry.additionalLinks;\n }\n return [];\n },\n label: function(){\n return this.entry.organs ? this.entry.organs[0] : this.entry.name\n },\n publishYear: function() {\n return this.entry.publishDate.split('-')[0]\n }\n },\n methods: {\n cardClicked: function(){\n if(this.entry.scaffolds){\n this.openScaffold()\n }else{\n this.openDataset()\n }\n },\n galleryClicked: function(payload) {\n this.propogateCardAction(payload)\n },\n openScaffold: function(){\n let action = {\n label: capitalise(this.label),\n resource: this.getScaffoldPath(this.discoverId, this.version, this.entry.scaffolds[0].dataset.path),\n title: \"View 3D scaffold\",\n type: \"Scaffold\",\n discoverId: this.discoverId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail\n }\n this.propogateCardAction(action)\n },\n openPlot: function(){\n let action = {\n label: capitalise(this.label),\n resource: this.getFileFromPath(this.discoverId, this.version, this.entry.csvFiles[0].dataset.path),\n title: \"View plot\",\n type: \"Plot\",\n discoverId: this.discoverId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail\n }\n this.propogateCardAction(action)\n },\n openDataset: function(){\n window.open(this.dataLocation,'_blank');\n },\n openRepository: function() {\n let apiLocation = this.envVars.API_LOCATION;\n this.entry.additionalLinks.forEach(function(el) {\n if (el.description == \"Repository\") {\n let xmlhttp = new XMLHttpRequest();\n xmlhttp.open(\"POST\", apiLocation + \"/pmr_latest_exposure\", true);\n xmlhttp.setRequestHeader(\"Content-type\", \"application/json\");\n xmlhttp.onreadystatechange = () => {\n if (xmlhttp.readyState === 4) {\n let url = \"\";\n if (xmlhttp.status === 200) {\n url = JSON.parse(xmlhttp.responseText)[\"url\"];\n }\n if (url === \"\") {\n url = el.uri;\n }\n window.open(url,'_blank');\n }\n };\n xmlhttp.send(JSON.stringify({workspace_url: el.uri}));\n }\n });\n },\n openSimulation: function() {\n let isSedmlResource = false;\n let resource = undefined;\n this.entry.additionalLinks.forEach(function(el) {\n if (el.description == \"SED-ML file\") {\n isSedmlResource = true;\n resource = el.uri;\n } else if (!isSedmlResource && (el.description == \"CellML file\")) {\n resource = el.uri;\n }\n });\n let action = {\n label: undefined,\n resource: resource,\n dataset: this.dataLocation,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail,\n title: \"View simulation\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Simulation\"\n }\n EventBus.$emit(\"PopoverActionClick\", action)\n },\n openSegmentation: function() {\n if (this.entry.segmentation && this.entry.segmentation[0]) {\n const segmentation = this.entry.segmentation[0];\n const filePath = segmentation.dataset.path;\n const datasetId = this.discoverId;\n const datasetVersion = this.version;\n const prefix = this.envVars.NL_LINK_PREFIX;\n const resource = {\n share_link: `${prefix}/dataviewer?datasetId=${datasetId}&version=${datasetVersion}&path=${filePath}`\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n dataset: this.dataLocation,\n datasetId: this.discoverId,\n title: \"View segmentation\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Segmentation\"\n };\n EventBus.$emit(\"PopoverActionClick\", action);\n }\n },\n openImage: function() {\n if (this.biolucidaData) {\n const biolucidaData = this.biolucidaData;\n if ('dataset_images' in biolucidaData) {\n const image = biolucidaData['dataset_images'][0];\n const resource = {\n share_link: image.share_link,\n id: image.image_id,\n itemId: image.sourcepkg_id\n }\n let action = {\n label: capitalise(this.label),\n resource: resource,\n dataset: this.dataLocation,\n datasetId: this.discoverId,\n title: \"View image\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Biolucida\"\n };\n EventBus.$emit(\"PopoverActionClick\", action);\n }\n }\n },\n propogateCardAction: function(action){\n EventBus.$emit(\"PopoverActionClick\", action)\n if (action.contextCardUrl) {\n this.$emit('contextUpdate', action)\n }\n },\n getScaffoldPath: function(discoverId, version, scaffoldPath){\n let id = discoverId\n let path = `${this.envVars.API_LOCATION}s3-resource/${id}/${version}/files/${scaffoldPath}`\n return path\n },\n getFileFromPath: function(discoverId, version, path){\n return `${this.envVars.API_LOCATION}s3-resource/${discoverId}/${version}/files/${path}`\n },\n isOverflown: function(el){\n return el.clientHeight < el.scrollHeight\n },\n expand: function() {\n this.expanded = true\n },\n splitDOI: function(doi){\n return [doi.split('/')[doi.split('/').length-2], doi.split('/')[doi.split('/').length-1]]\n },\n getBanner: function () {\n let doi = this.splitDOI(this.entry.doi)\n fetch(`${this.envVars.PENNSIEVE_API_LOCATION}/discover/datasets/doi/${doi[0]}/${doi[1]}`)\n .then((response) =>{\n if (!response.ok){\n throw Error(response.statusText)\n } else {\n return response.json()\n }\n })\n .then((data) => {\n this.thumbnail = data.banner\n this.discoverId = data.id\n this.version = data.version\n this.dataLocation = `https://sparc.science/datasets/${data.id}?type=dataset`\n this.getBiolucidaInfo(this.discoverId)\n this.dataIsReady = true\n })\n .catch(() => {\n //set defaults if we hit an error\n this.thumbnail = require('@/../assets/missing-image.svg')\n this.discoverId = undefined\n });\n },\n lastName: function(fullName){\n return fullName.split(',')[0]\n },\n getBiolucidaInfo: function(id) {\n let apiLocation = this.envVars.API_LOCATION;\n let endpoint = apiLocation + \"image_search/\" + id;\n // Add parameters if we are sent them\n fetch(endpoint)\n .then(response => response.json())\n .then(data => {\n if (data.status == \"success\")\n this.biolucidaData = data;\n });\n }\n },\n created: function() {\n this.getBanner()\n },\n mounted: function(){\n this.cardOverflow = this.isOverflown(this.$refs.card)\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.dataset-card {\n padding-left: 16px;\n position: relative;\n}\n\n.title {\n padding-bottom: 5px;\n font-family: Asap;\n font-size: 14px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 1.05px;\n color: #484848;\n cursor: pointer;\n}\n.card {\n padding-top: 18px;\n position: relative;\n display: flex;\n}\n\n.card-left{\n flex: 1\n}\n\n.card-right {\n flex: 1.3;\n padding-left: 6px;\n}\n\n.dataset-card .read-more {\n position: absolute;\n z-index: 9;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 20px;\n margin: 0; padding: 20px 66px;\n /* \"transparent\" only works here because == rgba(0,0,0,0) */\n background-image: linear-gradient(to bottom, transparent, white);\n pointer-events: none;\n}\n\n.read-more-button{\n width: 85px;\n height: 20px;\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #8300bf;\n padding: 0px;\n pointer-events: all;\n cursor: pointer;\n}\n\n.button{\n z-index: 10;\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n background-color: #8300bf;\n border: #8300bf;\n color: white;\n cursor: pointer;\n margin-top: 8px;\n}\n\n.button:hover {\n background-color: #8300bf;\n color: white;\n}\n\n.banner-img {\n width: 128px;\n height: 128px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);\n background-color: #ffffff;\n cursor: pointer;\n}\n.details{\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 1.05px;\n color: #484848;\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!./DatasetCard.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!./DatasetCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DatasetCard.vue?vue&type=template&id=5144815c&scoped=true&\"\nimport script from \"./DatasetCard.vue?vue&type=script&lang=js&\"\nexport * from \"./DatasetCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DatasetCard.vue?vue&type=style&index=0&id=5144815c&scoped=true&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 \"5144815c\",\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',{ref:\"container\",staticClass:\"context-card-container\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showContextCard),expression:\"showContextCard\"}]},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDetails),expression:\"showDetails\"}],staticClass:\"hide\",on:{\"click\":function($event){_vm.showDetails = !_vm.showDetails}}},[_vm._v(\"Hide information\"),_c('i',{staticClass:\"el-icon-arrow-up\"})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showDetails),expression:\"!showDetails\"}],staticClass:\"hide\",on:{\"click\":function($event){_vm.showDetails = !_vm.showDetails}}},[_vm._v(\"Show information\"),_c('i',{staticClass:\"el-icon-arrow-down\"})]),(_vm.showDetails && Object.keys(_vm.contextData).length !== 0)?_c('el-card',{staticClass:\"context-card card\"},[_c('img',{staticClass:\"context-image card-left\",attrs:{\"src\":_vm.entry.banner}}),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.contextData.heading))]),_c('div',[_vm._v(_vm._s(_vm.contextData.description))]),_vm._l((_vm.contextData.views),function(view,i){return [_c('br',{key:i}),_c('span',{key:i+'_1',staticClass:\"scaffold-view\",on:{\"click\":function($event){return _vm.openViewFile(view)}}},[_c('img',{attrs:{\"src\":_vm.getFileFromPath(view.thumbnail)}}),_vm._v(\" \"+_vm._s(view.description))])]})],2)]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"context-card-container\" ref=\"container\">\n <div v-show=\"showContextCard\">\n <div v-show=\"showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Hide information<i class=\"el-icon-arrow-up\"></i></div>\n <div v-show=\"!showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Show information<i class=\"el-icon-arrow-down\"></i></div>\n <el-card v-if=\"showDetails && Object.keys(contextData).length !== 0\" class=\"context-card card\" >\n <img :src=\"entry.banner\" class=\"context-image card-left\">\n <div class=\"card-right\">\n <div class=\"title\">{{contextData.heading}}</div>\n <div>{{contextData.description}}</div>\n <template v-for=\"(view, i) in contextData.views\">\n <br v-bind:key=\"i\"/>\n <span v-bind:key=\"i+'_1'\" @click=\"openViewFile(view)\" class=\"scaffold-view\"><img :src=\"getFileFromPath(view.thumbnail)\"> {{view.description}}</span>\n </template>\n </div>\n </el-card>\n </div>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Link, Icon, Card, Button, Select, Input } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport EventBus from \"./EventBus\"\n\nlocale.use(lang);\nVue.use(Link);\nVue.use(Icon);\nVue.use(Card);\nVue.use(Button);\nVue.use(Select);\nVue.use(Input);\n\n\n\nexport default {\n name: \"contextCard\",\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n },\n data: function () {\n return {\n contextData: {},\n showDetails: true,\n showContextCard: true\n };\n },\n watch: {\n 'entry.contextCardUrl': {\n handler(val){\n if (val) {\n this.getContextFile(val)\n this.showContextCard = true\n } else {\n this.showContextCard = false\n }\n },\n immediate: true\n }\n },\n methods: {\n getContextFile: function (contextFileUrl) {\n fetch(contextFileUrl)\n .then((response) =>{\n if (!response.ok){\n throw Error(response.statusText)\n } else {\n return response.json()\n }\n })\n .then((data) => {\n this.contextData = data\n })\n .catch(() => {\n //set defaults if we hit an error\n this.thumbnail = require('@/../assets/missing-image.svg')\n this.discoverId = undefined\n });\n },\n removeDoubleFilesPath: function(path){\n if (path.includes('files/files/')){\n return path.replace('files/files/', 'files/')\n } else {\n return path\n }\n },\n getFileFromPath: function(path){\n path = this.removeDoubleFilesPath(path)\n return `${this.entry.apiLocation}s3-resource/${this.entry.discoverId}/${this.entry.version}/files/${path}`\n },\n openViewFile: function(view){\n\n // note that we assume that the view file is in the same directory as the scaffold (viewUrls take relative paths)\n this.entry.viewUrl = view.path.split('/')[view.path.split('/').length-1]\n this.entry.type = 'Scaffold View'\n EventBus.$emit(\"PopoverActionClick\", this.entry)\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.hide{\n color: #e4e7ed;\n cursor: pointer;\n}\n\n.context-card{\n background-color: white;\n}\n\n.context-card >>> .el-card__body {\n padding: 0px;\n display: flex;\n width: 516px; \n}\n\n.context-image{\n width: 250px\n}\n\n.card {\n padding-top: 18px;\n margin-bottom: 18px;\n position: relative;\n border: solid 1px #e4e7ed;\n display: flex;\n}\n\n.card-left{\n flex: 1\n}\n\n.card-right {\n flex: 1.3;\n padding-left: 6px;\n}\n\n.cursor-pointer {\n cursor: pointer;\n height: 25px;\n}\n\n.title{\n font-weight: bold;\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!./ContextCard.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!./ContextCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContextCard.vue?vue&type=template&id=5de93eb9&scoped=true&\"\nimport script from \"./ContextCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ContextCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContextCard.vue?vue&type=style&index=0&id=5de93eb9&scoped=true&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 \"5de93eb9\",\n null\n \n)\n\nexport default component.exports","<template>\n <el-card :body-style=\"bodyStyle\" class=\"content-card\">\n <div slot=\"header\" class=\"header\">\n <context-card v-if=\"contextCardEntry && contextCardEnabled\" :entry=\"contextCardEntry\" />\n <el-input\n class=\"search-input\"\n placeholder=\"Search\"\n v-model=\"searchInput\"\n @keyup.native=\"searchEvent\"\n clearable\n @clear=\"clearSearchClicked\"\n ></el-input>\n <el-button class=\"button\" @click=\"searchEvent\">Search</el-button>\n </div>\n <SearchFilters\n class=\"filters\"\n ref=\"filtersRef\"\n :entry=\"filterEntry\"\n :envVars=\"envVars\"\n @filterResults=\"filterUpdate\"\n @numberPerPage=\"numberPerPageUpdate\"\n @loading=\"filtersLoading\"\n ></SearchFilters>\n <div class=\"content scrollbar\" v-loading=\"loadingCards\" ref=\"content\">\n <div\n class=\"error-feedback\"\n v-if=\"results.length === 0 && !loadingCards && !sciCrunchError\"\n >No results found - Please change your search / filter criteria.</div>\n <div class=\"error-feedback\" v-if=\"sciCrunchError\">{{sciCrunchError}}</div>\n <div v-for=\"o in results\" :key=\"o.id\" class=\"step-item\">\n <DatasetCard :entry=\"o\" :envVars=\"envVars\" @contextUpdate=\"contextCardUpdate\"></DatasetCard>\n </div>\n <el-pagination\n class=\"pagination\"\n :current-page.sync=\"page\"\n hide-on-single-page\n large\n layout=\"prev, pager, next\"\n :page-size=\"numberPerPage\"\n :total=\"numberOfHits\"\n @current-change=\"pageChange\"\n ></el-pagination>\n </div>\n </el-card>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport {\n Button,\n Card,\n Drawer,\n Icon,\n Input,\n Loading,\n Pagination\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport SearchFilters from \"./SearchFilters\";\nimport DatasetCard from \"./DatasetCard\";\nimport ContextCard from \"./ContextCard.vue\";\n\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\nimport {getFilters} from \"../algolia/utils.js\"\n\nlocale.use(lang);\nVue.use(Button);\nVue.use(Card);\nVue.use(Drawer);\nVue.use(Icon);\nVue.use(Input);\nVue.use(Loading);\nVue.use(Pagination);\n\n// handleErrors: A custom fetch error handler to recieve messages from the server\n// even when an error is found\nvar handleErrors = async function(response) {\n if (!response.ok) {\n let parse = await response.json();\n if (parse) {\n throw new Error(parse.message);\n } else {\n throw new Error(response);\n }\n }\n return response;\n};\n\nvar initial_state = {\n searchInput: \"\",\n lastSearch: \"\",\n results: [],\n numberOfHits: 0,\n filter: [],\n loadingCards: false,\n numberPerPage: 10,\n page: 1,\n pageModel: 1,\n start: 0,\n hasSearched: false,\n sciCrunchError: false,\n contextCardEntry: undefined,\n contextCardEnabled: false\n};\n\nexport default {\n components: { SearchFilters, DatasetCard, ContextCard },\n name: \"SideBarContent\",\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n isDrawer: {\n type: Boolean,\n default: true\n },\n entry: {\n type: Object,\n default: () => initial_state\n },\n envVars: {\n type: Object,\n default: () => {}\n },\n firstSearch: {\n type: String,\n default: \"\"\n }\n },\n data: function() {\n return {\n ...this.entry,\n bodyStyle: {\n flex: \"1 1 auto\",\n \"flex-flow\": \"column\",\n display: \"flex\"\n }\n };\n },\n computed: {\n // This computed property populates filter data's entry object with $data from this sidebar\n filterEntry: function() {\n return {\n numberOfHits: this.numberOfHits,\n filterFacets: this.filter\n };\n }\n },\n methods: {\n contextCardUpdate: function(val){\n this.contextCardEntry = val\n },\n openSearch: function(filter, search='') {\n this.searchInput = search;\n this.resetPageNavigation();\n this.searchAlgolia(filter, search);\n if (filter) {\n this.filter = [...filter];\n this.$refs.filtersRef.setCascader(this.filter);\n }\n },\n addFilter: function(filter) {\n this.resetPageNavigation();\n if (filter) {\n this.$refs.filtersRef.addFilter(filter);\n this.$refs.filtersRef.initiateSearch()\n }\n },\n clearSearchClicked: function() {\n this.searchInput = \"\";\n this.resetPageNavigation();\n this.searchAlgolia(this.filters, this.searchInput);\n },\n searchEvent: function(event = false) {\n if (event.keyCode === 13 || event instanceof MouseEvent) {\n this.resetPageNavigation();\n this.searchAlgolia(this.filters, this.searchInput);\n }\n },\n filterUpdate: function(filters) {\n this.filters = [...filters]\n this.resetPageNavigation()\n this.searchAlgolia(filters, this.searchInput)\n this.$emit(\"search-changed\", {\n value: filters,\n type: \"filter-update\"\n });\n },\n searchAlgolia(filters, query=''){\n // Algolia search\n this.algoliaClient.search(getFilters(filters), query, this.numberPerPage, this.page).then(searchData => {\n this.numberOfHits = searchData.total\n this.discoverIds = searchData.discoverIds\n this.dois = searchData.dois\n this.results = searchData.items\n this.searchSciCrunch({'dois': this.dois})\n })\n },\n filtersLoading: function (val) {\n this.loadingCards = val;\n },\n numberPerPageUpdate: function(val) {\n this.numberPerPage = val;\n this.pageChange(1);\n },\n pageChange: function(page) {\n this.start = (page - 1) * this.numberPerPage;\n this.page = page\n this.searchAlgolia(this.filters, this.searchInput, this.numberPerPage, this.page)\n },\n searchSciCrunch: function(params) {\n this.loadingCards = true;\n this.results = [];\n this.disableCards();\n this.$emit(\"search-changed\", { value: this.searchInput, type: \"query-update\" });\n this.callSciCrunch(this.envVars.API_LOCATION, params)\n .then(result => {\n //Only process if the search term is the same as the last search term.\n //This avoid old search being displayed.\n this.sciCrunchError = false;\n this.resultsProcessing(result);\n this.$refs.content.style[\"overflow-y\"] = \"scroll\";\n this.loadingCards = false;\n })\n .catch(result => {\n if (result.name !== 'AbortError') {\n this.loadingCards = false;\n this.sciCrunchError = result.message;\n }\n })\n },\n disableCards: function() {\n if (this.$refs.content) {\n this.$refs.content.scroll({ top: 0, behavior: \"smooth\" });\n this.$refs.content.style[\"overflow-y\"] = \"hidden\";\n }\n },\n resetPageNavigation: function() {\n this.start = 0;\n this.page = 1;\n },\n resultsProcessing: function(data) {\n this.lastSearch = this.searchInput;\n this.results = [];\n if (data.results.length === 0) {\n return;\n }\n data.results.forEach(element => {\n // this.results.push(element) below should be once backend is ready\n let datasetInfo = {\n name: element.name,\n description: element.description,\n contributors: element.contributors,\n numberSamples: element.sampleSize\n ? parseInt(element.sampleSize)\n : 0,\n numberSubjects: element.subjectSize\n ? parseInt(element.subjectSize)\n : 0,\n updated: element.updated[0].timestamp.split(\"T\")[0],\n url: element.uri[0],\n datasetId: element.dataset_identifier,\n datasetRevision: element.dataset_revision,\n datasetVersion: element.dataset_version,\n organs: (element.organs && element.organs.length > 0)\n ? [...new Set(element.organs.map(v => v.name))]\n : undefined,\n species: element.organisms \n ? element.organisms[0].species\n ? [...new Set(element.organisms.map((v) =>v.species ? v.species.name : null))]\n : undefined\n : undefined, // This processing only includes each gender once into 'sexes'\n doi: element.doi,\n publishDate: element.publishDate,\n scaffolds: element['abi-scaffold-metadata-file'],\n thumbnails: element['abi-thumbnail'] ? element['abi-thumbnail']: element['abi-scaffold-thumbnail'],\n scaffoldViews: element['abi-scaffold-view-file'],\n videos: element.video,\n plots: element.plot,\n images: element['common-images'],\n contextualInformation: element['abi-contextual-information'].length > 0 ? element['abi-contextual-information'] : undefined,\n additionalLinks: element.additionalLinks,\n segmentation: element['mbf-segmentation'],\n simulation: element.additionalLinks\n ? element.additionalLinks[0].description == 'Repository'\n : false,\n s3uri: element.s3uri\n };\n this.results.push(datasetInfo);\n });\n },\n createfilterParams: function(params) {\n let p = new URLSearchParams();\n //Check if field is array or value\n for (const key in params) {\n if (Array.isArray(params[key])) {\n params[key].forEach(e => {\n p.append(key, e);\n });\n } else {\n p.append(key, params[key]);\n }\n }\n return p.toString();\n },\n callSciCrunch: function(apiLocation, params = {}) {\n return new Promise((resolve, reject) => {\n // the following controller will abort current search\n // if a new one has been started\n if (this._controller) this._controller.abort();\n this._controller = new AbortController();\n let signal = this._controller.signal;\n // Add parameters if we are sent them\n let fullEndpoint = this.envVars.API_LOCATION + this.searchEndpoint + \"?\" + this.createfilterParams(params);\n fetch(fullEndpoint, { signal })\n .then(handleErrors)\n .then(response => response.json())\n .then(data => resolve(data))\n .catch(data => reject(data));\n });\n },\n },\n mounted: function() {\n // initialise algolia\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\n console.log('Algolia initialised in sidebar')\n\n // temporarily disable flatmap search since there are no datasets\n if (this.firstSearch === \"Flatmap\" || this.firstSearch === \"flatmap\") {\n this.openSearch(undefined, '')\n } else {\n this.openSearch(undefined, '');\n }\n },\n created: function() {\n //Create non-reactive local variables\n this.searchEndpoint = \"dataset_info/using_multiple_dois/\";\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.content-card {\n height: 100%;\n flex-flow: column;\n display: flex;\n}\n\n.button {\n background-color: #8300bf;\n border: #8300bf;\n color: white;\n}\n\n.step-item {\n font-size: 14px;\n margin-bottom: 18px;\n text-align: left;\n}\n\n.search-input {\n width: 298px !important;\n height: 40px;\n padding-right: 14px;\n align-items: left;\n}\n\n.header {\n border: solid 1px #292b66;\n background-color: #292b66;\n text-align: left;\n}\n\n.pagination {\n padding-bottom: 16px;\n background-color: white;\n text-align: center;\n}\n\n.pagination >>> button {\n background-color: white !important;\n}\n.pagination >>> li {\n background-color: white !important;\n}\n.pagination >>> li.active {\n color: #8300bf;\n}\n\n.error-feedback {\n font-family: Asap;\n font-size: 14px;\n font-style: italic;\n padding-top: 15px;\n}\n\n.content-card >>> .el-card__header {\n background-color: #292b66;\n border: solid 1px #292b66;\n}\n\n.content-card >>> .el-card__body {\n background-color: #f7faff;\n overflow-y: hidden;\n}\n\n.content {\n width: 518px;\n flex: 1 1 auto;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #ffffff;\n overflow-y: scroll;\n scrollbar-width: thin;\n}\n\n.content >>> .step-item:first-child .seperator-path{\n display: none;\n}\n\n.content >>> .step-item:not(:first-child) .seperator-path{\n width: 486px;\n height: 0px;\n border: solid 1px #e4e7ed;\n background-color: #e4e7ed;\n}\n\n.scrollbar::-webkit-scrollbar-track {\n border-radius: 10px;\n background-color: #f5f5f5;\n}\n\n.scrollbar::-webkit-scrollbar {\n width: 12px;\n right: -12px;\n background-color: #f5f5f5;\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n border-radius: 4px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.06);\n background-color: #979797;\n}\n\n>>> .el-input__suffix {\n padding-right: 10px;\n}\n\n>>> .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.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!./SidebarContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarContent.vue?vue&type=template&id=3d1731ba&scoped=true&\"\nimport script from \"./SidebarContent.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SidebarContent.vue?vue&type=style&index=0&id=3d1731ba&scoped=true&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 \"3d1731ba\",\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:\"tab-container\"},_vm._l((_vm.tabTitles),function(title){return _c('div',{key:title.id,staticClass:\"title\"},[_c('div',{staticClass:\"title-text-table\",class:{ highlightText : (title.id==_vm.activeId) },on:{\"click\":function($event){return _vm.titleClicked(title.id)}}},[_c('div',{staticClass:\"title-text\"},[_vm._v(\" \"+_vm._s(title.title)+\" \")])])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"tab-container\">\n <div class=\"title\" v-for=\"title in tabTitles\" :key=\"title.id\">\n <div class=\"title-text-table\" v-bind:class=\"{ highlightText : (title.id==activeId) }\" v-on:click=\"titleClicked(title.id)\">\n <div class=\"title-text\">\n {{title.title}}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\n\nexport default {\n name: \"Tabs\",\n props: {\n tabTitles: {\n type: Array,\n default: () => []\n },\n activeId: {\n type: Number,\n default: 1\n }\n },\n methods: {\n titleClicked: function(id) {\n this.$emit(\"titleClicked\", id);\n },\n }\n\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.tab-container{\n height: 28px;\n}\n\n.title {\n width: 101px;\n height: 28px;\n border: solid 1px #dcdfe6;\n border-bottom: none;\n background-color: white;\n display:inline-block;\n}\n\n.title:hover {\n cursor: pointer;\n}\n\n.title-text {\n text-align:center;\n display: table-cell;\n vertical-align: middle;\n font-size: 14px;\n}\n\n.title-text-table {\n display:table;\n height: 100%;\n width: 100%;\n}\n\n.parent-dialog:hover .title-text {\n color:#8300bf;\n}\n\n.highlightText {\n color:#8300bf;\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!./Tabs.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!./Tabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=5d1b9484&scoped=true&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=js&\"\nexport * from \"./Tabs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&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 \"5d1b9484\",\n null\n \n)\n\nexport default component.exports","<template>\n <div ref=\"container\">\n <div v-if=\"!drawerOpen\" @click=\"toggleDrawer\" class=\"open-tab\">\n <i class=\"el-icon-arrow-left\"></i>\n </div>\n <el-drawer\n custom-class=\"my-drawer\"\n class=\"side-bar\"\n :visible.sync=\"drawerOpen\"\n :appendToBody=\"false\"\n :modal-append-to-body=\"false\"\n size=550\n :with-header=\"false\"\n :wrapperClosable=\"false\"\n :modal=\"false\"\n >\n <div class=\"box-card\">\n <div v-if=\"drawerOpen\" @click=\"close\" class=\"close-tab\">\n <i class=\"el-icon-arrow-right\"></i>\n </div>\n <div class=\"sidebar-container\">\n <tabs v-if=\"tabs.length > 1\" :tabTitles=\"tabs\" :activeId=\"activeId\"\n @titleClicked=\"tabClicked\"/>\n <template v-for=\"tab in tabs\">\n <sidebar-content class=\"sidebar-content-container\"\n v-show=\"tab.id===activeId\" :contextCardEntry=\"tab.contextCard\"\n :envVars=\"envVars\"\n v-bind:key=\"tab.id\" :ref=\"tab.id\"\n @search-changed=\"searchChanged(tab.id, $event)\"/>\n </template>\n </div>\n </div>\n </el-drawer>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport {\n Drawer,\n Icon,\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport SidebarContent from './SidebarContent.vue';\nimport EventBus from './EventBus';\nimport Tabs from './Tabs'\n\nlocale.use(lang);\nVue.use(Drawer);\nVue.use(Icon);\n\nvar initial_state = {\n searchInput: \"\",\n lastSearch: \"\",\n results: [],\n drawerOpen: false,\n numberOfHits: 0,\n filter:{},\n filterFacet: undefined,\n loadingCards: false,\n numberPerPage: 10,\n page: 1,\n pageModel: 1,\n start: 0,\n hasSearched: false,\n sciCrunchError: false\n}\n\nexport default {\n components: {SidebarContent, Tabs },\n name: \"SideBar\",\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n entry: {\n type: Object,\n default: () => (initial_state)\n },\n envVars: {\n type: Object,\n default: () => {}\n },\n tabs: {\n type: Array,\n default: () => [{title:'flatmap', id:1}]\n },\n activeId: {\n type: Number,\n default: 1\n },\n openAtStart: {\n type: Boolean,\n default: false\n }\n },\n data: function () {\n return {\n ...this.entry,\n }\n },\n methods: {\n searchChanged: function (id, data) {\n this.$emit(\"search-changed\", {...data, id: id});\n },\n close: function () {\n this.drawerOpen = false;\n },\n toggleDrawer: function () {\n this.drawerOpen = !this.drawerOpen;\n },\n openSearch: function(facets, query){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch(facets, query)})\n },\n addFilter: function(filter){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].addFilter(filter)})\n },\n openNeuronSearch: function(neuron){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch('', undefined, 'scicrunch-query-string/', {'field': '*organ.curie', 'curie':neuron})})\n },\n tabClicked: function(id) {\n this.$emit(\"tabClicked\", id);\n },\n },\n created:function() {\n this.drawerOpen = this.openAtStart;\n },\n mounted: function(){\n EventBus.$on(\"PopoverActionClick\", (payLoad) => {\n this.$emit(\"actionClick\", payLoad);\n })\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.box-card {\n flex: 3;\n height: 100%;\n overflow: hidden;\n pointer-events: auto;\n}\n\n.side-bar{\n position: relative;\n height: 100%;\n pointer-events: none;\n}\n\n.side-bar >>> .el-drawer:focus{\n outline:none;\n}\n\n.sidebar-container {\n height: 100%;\n flex-flow: column;\n display: flex;\n}\n\n.open-tab{\n width: 20px;\n height: 40px;\n z-index: 8;\n position: absolute;\n top: calc(50vh - 80px);\n right: 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.el-icon-arrow-left{\n font-size: 20px;\n padding-top: 8px;\n color: #292b66;\n}\n\n.el-icon-arrow-right{\n font-size: 20px;\n padding-top: 8px;\n color: #292b66;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.close-tab{\n float: left;\n flex: 1;\n width: 20px;\n height: 40px;\n z-index: 8;\n margin-top: calc(50vh - 80px);\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n border-right: 0;\n background-color: #F7FAFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.box-card {\n flex: 3;\n height: 100%;\n overflow: hidden;\n pointer-events: auto;\n}\n\n>>> .my-drawer {\n background: rgba(0,0,0,0);\n box-shadow: none;\n}\n\n>>> .my-drawer .el-drawer__body {\n height: 100%;\n}\n\n.sidebar-content-container {\n flex: 1 1 auto;\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!./SideBar.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!./SideBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SideBar.vue?vue&type=template&id=3d831a8e&scoped=true&\"\nimport script from \"./SideBar.vue?vue&type=script&lang=js&\"\nexport * from \"./SideBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&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 \"3d831a8e\",\n null\n \n)\n\nexport default component.exports","import SideBar from \"./SideBar.vue\"\n\nexport {\n SideBar\n};\n\n\n\n","import './setPublicPath'\nexport * from '~entry'\n","module.exports = require(\"core-js/modules/es.string.includes\");"],"sourceRoot":""}
|